/** Raise Dead **/ #define NAME "@@query_name:$this_player()$@@" /* gives greater flexibilty */ status resurrect(string targ, mixed alt_type) { object dead; int i; string file; if(!targ) { notify_fail("resurrect who?\n"); return 0; } if(!alt_type) alt_type = "necromancy_sphere"; file = file_name(this_object()); sscanf(file,"%s#%d",file,i); if((dead = find_player(targ))) { if(!dead->query_dead()) { write(capitalize(targ) +" is not dead!\n"); return 1; } } else { write("The essence of "+ capitalize(targ) +" does not exist.\n"); return 1; } this_player()->load_spell(({ "target", this_player(), "name", "Resurrect", "sphere", alt_type, "cost", 35, "level", 35, "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", "argument", targ, })); return 1; } status cast_spell(object caster,object target,object prev,int dmg) { string *stats; int i; if((target = find_player((string)caster->query_spell_argument()))) { if(!target->query_dead()) { write(target->query_name() +" is not dead!\n"); } else { write("You resurrect "+ target->query_name() +" from the dead.\n"); target->toggle_ghost(); move_object(target, environment(caster)); caster->add_exp((int)target->query_level() * 150); stats = ({ "constitution", "intelligence", "wisdom", "charisma", "strength", "dexterity", "combat", }); for(i = 0; i < 4; i++) { call_other(target,"adj_"+ stats[random(sizeof(stats))],1); } target->heal_self(1000); } } 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>