/** Raise Dead **/ #define NAME "@@query_name:$this_player()$@@" /* gives greater flexibilty */ status raise(string targ, mixed alt_type) { object dead; int i; string file; if(!targ || sscanf(targ,"dead %s",targ) != 1) { notify_fail("raise dead?\n"); return 0; } if(!alt_type) alt_type = "necromancy_sphere"; file = file_name(this_object()); sscanf(file,"%s#%d",file,i); if((dead = present(targ, environment(this_player())))) { if(living(dead) || (dead = find_player(targ))) { if(!dead->query_dead()) { write(capitalize(targ) +" is not dead!\n"); return 1; } } else { write("The essence of "+ capitalize(targ) +" is not here.\n"); return 1; } } else { write("The essence of "+ capitalize(targ) +" is not here.\n"); return 1; } this_player()->load_spell(({ "target", targ, "name", "Raise Dead", "sphere", alt_type, "cost", 18, "level", 18, "cast time", 3, "casting msg", ({ "You call upon the gods to give life to "+ capitalize(targ) +".\n", "You feel the essence of "+ capitalize(targ) +" coalescing.\n", }), "casting room", ({ NAME +" calls upon the gods to give life to "+ capitalize(targ) +".\n", "You feel the essence of "+ capitalize(targ) +" coalescing.\n", }), "spell object", file, "passive", })); return 1; } status cast_spell(object caster,object target,object prev,int dmg) { string *stats; int i; if(living(target) || (target = find_player((string)target->query_name()))) { if(!target->query_dead()) { write(target->query_name() +" is not dead!\n"); } else { write("You raise "+ target->query_name() +" from the dead.\n"); target->toggle_ghost(); move_object(target, environment(caster)); caster->add_exp((int)target->query_level() * 100); stats = ({ "constitution", "intelligence", "wisdom", "charisma", "strength", "dexterity", "combat", }); for(i = 0; i < 3; i++) { call_other(target,"adj_"+ stats[random(sizeof(stats))],1); } } } else { write("The essence of "+ target->query_name() +" has left the world.\n"); } destruct(this_object()); return 1; } status id(string str) { return str == "spell" || str == "raise"; } /* Native Mode Move */ #include <move.h>