/* Remove Curse. Serepion Nov 1993 */
#define NAME (string)caster->query_name()
status remove(string targ, mixed alt_type) {
int dam, i;
string file;
if(!targ || !(targ == "curse" || sscanf(targ,"curse %s",targ))) {
notify_fail("remove curse?\n");
return 0;
}
if(targ == "curse") targ = 0;
if(!alt_type) alt_type = "combat_sphere";
dam = (objectp(alt_type))
? (int)alt_type->query_cast_level() /* wands */
: (int)call_other(this_player(),"query_"+alt_type);
file = file_name(this_object());
sscanf(file,"%s#%d", file, i);
this_player()->load_spell(({
"target", targ,
"name", "Remove Curse",
"sphere", alt_type,
"cost", 2,
"level", 2,
"spell object", file,
"cast time", 1,
"passive",
}));
return 1;
}
/***********************************************************************/
/* when cloned */
status cast_spell(object caster,object target,object prev,int dmg) {
object curse;
curse = present("Curse", target);
if(curse) {
if(target == caster) {
write("You remove the curse on you.\n");
say(NAME +" removes the curse on "+caster->query_objective()+
"self.\n");
}
else {
write("You remove the curse in "+target->query_name()+".\n");
say(NAME +" removes the curses on "+ target->query_name()+".\n");
}
curse->dispel_magic();
}
else {
if(target != caster)
write((string)target->query_name() +" is not cursed.\n");
else
write("You are not cursed.\n");
}
destruct(this_object());
return 1;
}
/* Native Mode Move */
#include <move.h>