/* cure */
status cure(string spell_type, mixed alt_type) {
string file, spell_name;
string targ;
int i, spell_level, heal;
if(!spell_type) {
notify_fail("cure wounds, cure light wounds, cure minor wounds,\n"+
"cure medium wounds, cure serious wounds, cure critical wounds,\n"+
"cure major wounds, cure heavy wounds, cure blindness,\n"+
"cure deafness, cure disease.\n");
return 0;
}
sscanf(spell_type,"%s wounds %s", spell_type, targ);
sscanf(spell_type,"%s wounds", spell_type);
sscanf(spell_type,"%s %s", spell_type, targ);
switch(spell_type) {
case "wounds":
spell_name = "Cure Wounds";
heal = 1 * (random(4)+1);
spell_level = 1;
break;
case "light":
spell_name = "Cure Light Wounds";
heal = 5 * (random(4)+1);
spell_level = 4;
break;
case "minor":
spell_name = "Cure Minor Wounds";
heal = 10 * (random(4)+1);
spell_level = 7;
break;
case "medium":
spell_name = "Cure Medium Wounds";
heal = 15 * (random(4)+1);
spell_level = 10;
break;
case "serious":
spell_name = "Cure Serious Wounds";
heal = 20 * (random(4)+1);
spell_level = 13;
break;
case "critical":
spell_name = "Cure Critical Wounds";
heal = 25 * (random(4)+1);
spell_level = 16;
break;
case "major":
spell_name = "Cure Major Wounds";
heal = 30 * (random(4)+1);
spell_level = 19;
break;
case "heavy":
spell_name = "Cure Heavy Wounds";
heal = 35 * (random(4)+1);
spell_level = 23;
break;
case "deafness":
spell_name = "Cure Deafness";
spell_level = 3;
break;
case "blindness":
spell_name = "Cure Blindness";
spell_level = 5;
break;
case "disease":
spell_name = "Cure Disease";
spell_level = 7;
break;
default:
notify_fail("cure wounds, cure light wounds, cure minor wounds,\n"+
"cure medium wounds, cure serious wounds, cure critical wounds,\n"+
"cure major wounds, cure heavy wounds, cure blindness,\n"+
"cure deafness, cure disease.\n");
return 0;
break;
}
if(!alt_type) alt_type = "healing_sphere";
file = file_name(this_object());
sscanf(file,"%s#%d",file,i);
this_player()->load_spell(({
"target", targ,
"name", spell_name,
"sphere", alt_type,
"cost", spell_level,
"level", spell_level,
"cast time", 2,
"spell object", file,
"casting msg", "You feel powerful healing energies swirling "+
"around you.\n",
"damage", heal,
"passive",
}));
return 1;
}
/*********************************************************************/
/* when cloned to player */
status cast_spell(object caster,object target,object prev,int heal) {
object ob;
switch((string)caster->query_spell_name()) {
case "Cure Deafness":
if(ob = present("Deafness", target)) {
tell_object(target,"You can hear!\n");
if(target != caster) {
write("You cure "+ target->query_name() +" of Deafness.\n");
}
say(target->query_name() +" starts rejoicing.\n", target);
destruct(ob);
}
else {
if(target == caster) {
write("You are not deaf.\n");
}
else {
write(target->query_name() +" is not deaf.\n");
}
}
break;
case "Cure Blindness":
if(ob = present("Blindness", target)) {
tell_object(target,"You can see!\n");
if(target != caster) {
write("You cure "+ target->query_name() +" of Blindness.\n");
}
say(target->query_name() +" starts rejoicing.\n", target);
destruct(ob);
}
else {
if(target == caster) {
write("You are not Blind.\n");
}
else {
write(target->query_name() +" is not Blind.\n");
}
}
break;
case "Cure Disease":
if(ob = present("Disease", target)) {
tell_object(target,"You feel better!\n");
if(target != caster) {
write("You cure the diseases of "+ target->query_name() +".\n");
}
say(target->query_name() +" starts rejoicing.\n", target);
destruct(ob);
}
else {
if(target == caster) {
write("You are not sick.\n");
}
else {
write(target->query_name() +" is not sick.\n");
}
}
break;
default:
target->adj_hp(heal);
if(target != caster) {
write("You lay your hands upon "+ target->query_name() +".\n");
say(caster->query_name() +" lays "+ caster->query_possessive()
+" hands upon "+ target->query_name() +".\n"+
target->query_name() +" is healed.\n");
tell_object(target, caster->query_name() +" lays "+
caster->query_possessive() +" hands upon you.\n"+
"You are healed!\n");
}
else {
write("You heal your wounds.\n");
say(caster->query_name() +"'s wounds are healed.\n");
}
break;
}
destruct(this_object());
return 1;
}
/* native mode */
#include <move.h>