/* remove curse */ #define SPELLNAME (string)caster->query_spell_name() status remove(string spell_type, mixed alt_type) { int i; string file; string targ; string spell_name; int spell_level; if(!spell_type) { notify_fail("remove curse?\n"); return 0; } if(!alt_type) alt_type = "abjuration"; file = file_name(this_object()); sscanf(file, "%s#%d", file, i); sscanf(spell_type,"%s %s", spell_type, targ); spell_type = lower_case(spell_type); switch(spell_type) { case "curse": spell_name = "Remove Curse"; spell_level = 6; break; default: notify_fail("remove curse?\n"); return 0; break; } this_player()->load_spell(({ "target", targ, "name", spell_name, "sphere", alt_type, "cost", spell_level, "level", spell_level, "cast time", 1, "spell object", file, "passive", })); return 1; } /*******************************************************************/ /* called when this is cloned to target */ status cast_spell(object caster,object target,object prev,int dmg) { object ob; status flag; if(SPELLNAME == "Remove Curse") { while((ob = present("Curse", target))) { flag = 1; destruct(ob); } if(target->id("Curse")) { flag = 1; destruct(target); } if(!flag) { write("There is no curse.\n"); } else { write("You remove the curse.\n"); if(caster != target) { tell_object(target,caster->query_name()+" removes your curse.\n"); } say(caster->query_name() +" removes a curse on "+ target->query_name() +".\n", target); } } destruct(this_object()); return 1; } status id(string str) { return str == "spell"; } /* Native Mode Move */ #include <move.h>