/** animate skeleton, animate zombie **/ #define NAME "@@query_name:$this_player()$@@" /* gives greater flexibilty */ #define TARG "@@query_name:$this_object()$@@" status animate(string targ, mixed alt_type) { int type, level, spell_level; string spell_name, component; string file; switch(targ) { case "skeleton": spell_name = "Animate Skeleton"; component = "skeleton"; spell_level = 11; file = "skills/obj/skeleton"; break; case "zombie": spell_name = "Animate Zombie"; component = "corpse"; spell_level = 14; file = "skills/obj/zombie"; break; default: notify_fail("animate skeleton, animate zombie?\n"); return 0; break; } if(!alt_type) alt_type = "necromancy"; level = (objectp(alt_type)) ? (int)alt_type->query_cast_level() /* wands */ : (int)call_other(this_player(),"query_"+alt_type); this_player()->load_spell(({ "target", environment(this_player()), "name", spell_name, "sphere", alt_type, "cost", spell_level, "damage", level, "level", spell_level, "cast time", 2, "casting msg", "You pour unlife into the "+ component +".\n", "casting msg room", "You feel a chill as "+ NAME +" pours unlife into "+ "the "+ component +".\n", "spell object", file, "component", component, "passive", })); return 1; } /* Native Mode Move */ #include <move.h>