/* Death Spell. Drakken, January 1994 */ #define NAME "@@query_name:$this_player()$@@" /* gives greater flexibilty */ #define TARG "@@query_name:$this_object()$@@" status death(string targ, mixed alt_type) { int dam, i; string file; file = file_name(this_object()); sscanf(file,"%s#%d",file,i); if(!targ || !(targ == "spell" || sscanf(targ,"spell %s", targ))) { notify_fail("death spell?\n"); return 0; } if(targ == "spell") targ = (string)this_player()->query_attacker(); if(!targ) { notify_fail("death spell <who>?\n"); return 0; } if(!alt_type) alt_type = "necromancy"; dam = (objectp(alt_type)) ? (int)alt_type->query_cast_level() : (int)call_other(this_player(),"query_"+alt_type); dam *= (random(6) + 1); file = file_name(this_object()); sscanf(file,"%s#%d",file,i); this_player()->load_spell(({ "target", targ, "name", "Death Spell", "sphere", alt_type, "cost", 35, "damage", dam, "immune", "death", "level", 30, "cast time", 3, "casting msg", ({ "Your body starts to glow with a red aura of power.\n", "The evil acrane powers of necromancy flow through your body.\n", "You stare deeply into the eyes of "+ targ +".\n", }), "casting msg room", ({ NAME+" starts to glow with a dark red aura of power.\n", "You sense strong magic within the room.\n", NAME+" stares deeply into the eyes of "+capitalize(targ)+".\n", }), "spell object", file, "component", "eye#head#arm#leg#corpse#skeleton", })); return 1; } /****************************************************************/ /* when cloned to target */ status cast_spell(object caster,object target,object prev,int dmg) { #ifndef PLAYERKILL if(!(caster->query_npc() || target->query_npc())) { tell_room(environment(target),"Nothing happens...\n"); destruct(this_object()); return 1; } #endif if(target == caster) { destruct(this_object()); return 1; } if(target->query_level() <= 18){ if(target != caster) { tell_object(caster,(string)target->query_name()+ " falls to the ground, dead...\n"); } tell_object(target, "You fall to the ground, dead...!\n"); say((string)target->query_name()+ " falls to the ground, dead!\n", target); target->death(); destruct(this_object()); return 1; /* do not do damage */ } destruct(this_object()); return 0; /* do damage */ } /* Native Mode Move */ #include <move.h>