/* remove curse */ #define SPELLNAME (string)caster->query_spell_name() status locate(string str, mixed alt_type) { int i; string file; if(!str) { notify_fail("locate who?\n"); return 0; } if(!alt_type) alt_type = "divination"; file = file_name(this_object()); sscanf(file, "%s#%d", file, i); this_player()->load_spell(({ "target", this_player(), "name", "Locate", "sphere", alt_type, "cost", 6, "level", 6, "cast time", 1, "spell object", file, "argument", str, "passive", })); return 1; } /*******************************************************************/ /* called when this is cloned to target */ status cast_spell(object caster,object target,object prev,int dmg) { object ob; string rname; rname = (string)caster->query_spell_argument(); if(!(ob = find_living(rname))) { write("You cannot locate "+ capitalize(rname) +".\n"); } else if(ob->query_invis()) { if(ob->query_security_level()) write("You cannot locate "+ capitalize(rname) +".\n"); else write(capitalize(rname) +" is somewhere about, but their invisibility\n"+ "disrupts the locating ability of the spell.\n"); } else if(environment(ob)) { if(environment(ob)->query_no_track()) { write("Your mind cannot seem to get a firm grim upon " + capitalize(rname) + ".\n"); destruct(this_object()); return 1; } write("Your mind peers across the domains, you get a picture of\n"+ "the area where "+ capitalize(rname) +" is located:\n\n"); environment(ob)->long(); } else { if(!target->query_npc()) write(capitalize(rname) +" is logging in!\n"); else write(capitalize(rname) +" is in a semi-existant state.\n"); } destruct(this_object()); return 1; } status id(string str) { return str == "spell"; } /* Native Mode Move */ #include <move.h>