/* Spiritual Hammer */ inherit "inherit/weapon"; inherit "inherit/timer"; #define NAME "@@query_name:$this_player()$@@" status spiritual(string targ, mixed alt_type) { int time, i; string file; if(targ != "hammer") { notify_fail("spiritual hammer?\n"); return 0; } if(!alt_type) alt_type = "combat_sphere"; time = (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", this_player(), "name", "Spiritual Hammer", "sphere", alt_type, "cost", 4, "damage", time, /* a time component */ "level", 4, "spell object", file, "cast time", 2, "casting msg", "Before your eyes a war hammer appears.\n", "casting msg room", "A war hammer appears before "+NAME+".\n", "passive", })); return 1; } /***********************************************************************/ /* when cloned */ void time_out() { tell_object(environment(),"Your Spiritual Hammer fades into nothingness.\n"); ::time_out(); } void dispel_magic() { time_out(); } status cast_spell(object caster,object target,object prev,int dmg) { object hammer; hammer = present("spiritual hammer", target); if(hammer) { write("You extend the time of the Spiritual Hammer spell.\n"); hammer->adj_time(dmg * 60); destruct(this_object()); return 1; } tell_object(target, "The hammer floats into your hands.\n"); set_name("war hammer"); set_alias("hammer"); set_alt_name("spiritual hammer"); set_type("crush"); set_wc(12); set_length(24); set_weight(5); set_value(0); set_short("A spiritual hammer"); set_long("It is a force of magical energy vaguely shaped like a "+ "war hammer.\n"); set_info("The Spiritual Hammer has "+ "@@query_approx_time:"+file_name(this_object())+":@@ left before "+ "it vanishes.\n"); adj_time(dmg * 60); return 1; } status id(string str) { return str == "spell" || ::id(str); } status drop(status quit) { if(quit) time_out(); return 1; } /* Native Mode Move */ #include <move.h>