/* /spells/restoration.c * From Dead Souls LPMud * Created by BillGates of Money 961204 * Version: @(#) restoration.c 1.2@(#) * Last modified: 96/12/04 */ #include <lib.h> #include <magic.h> #include <damage_types.h> inherit LIB_SPELL; static void create() { spell::create(); SetSpell("restoration"); SetRules("", "LIV"); SetSpellType(SPELL_OTHER); SetRequiredMagic(75); SetRequiredStamina(50); SetReligions("Lintokh", "Talima", "Monodeism"); SetSkills(([ "faith" : 15 ])); SetMagicCost(10); SetDifficulty(40); SetMorality(5); SetHelp("Syntax: <cast refresh>\n" " <cast refresh on LIVING>\n\n" "This spell allows the caster to \"refresh\" his " "or her target's stamina. The amount of stamina " "refreshed depends solely on the magical powers of " "the caster.\n\n"); } varargs int CanCast(object who, int level, string limb, object array targs) { object target = targs[0]; string targ_rel, my_rel; targ_rel = target->GetReligion(1); my_rel = who->GetReligion(1); if( !(int)target->GetUndead() ) { who->eventPrint((string)target->GetName() + " is not undead!"); return 0; } if( (int)who->ClassMember("cleric") ) return 1; if( targ_rel != my_rel ) { send_messages("are", "$target_name $target_verb not of ", "$agent_possessive faith.", who, target); return 0; } return spell::CanCast(who, level, limb, targs); } varargs int eventCast(object who, int level, string limb, object array targs) { object target = targs[0]; //int chance = level + random((int)who->GetSkillLevel("healing")); if( level < (30 + random(30)) ) { target->AddStaminaPoints(-(int)target->GetStaminaPoints()); who->AddStaminaPoints(-(int)who->GetStaminaPoints()); who->eventPrint("You feel utterly drained as your " "spell of restoration goes awry.", target); target->eventPrint("You feel a draining effect as " + possessive_noun(who) + " attempt to resurrect you " "goes awry.", who); environment(who)->eventPrint( (string)who->GetCapName()+" and "+ (string)target->GetCapName()+" both double over in pain " "as "+possessive_noun(who)+" spell fails.", ({ who, target }) ); who->AddMagicPoints(-(int)who->GetMagicPoints()); return 0; } send_messages(({ "bring" }), "$agent_name $agent_verb " "$target_name back from the dead.", who, target, environment(who)); target->eventRevive(); who->AddMagicPoints(-(int)who->GetMagicPoints()); return 1; } int GetMagicCost() { return (int)this_player()->GetMagicPoints(); }