66 lines
2.0 KiB
Plaintext
66 lines
2.0 KiB
Plaintext
|
//::///////////////////////////////////////////////
|
||
|
//:: Name Revivify
|
||
|
//:: FileName sp_revivify.nss
|
||
|
//:://////////////////////////////////////////////
|
||
|
/** @file Revivify
|
||
|
Conjuration (Healing)
|
||
|
Level: Clr 5, Hlr 5
|
||
|
Components: V,S,M
|
||
|
Casting Time: 1 standard action
|
||
|
Range: Touch
|
||
|
Target: Dead creature touched
|
||
|
Duration: Instantaneous
|
||
|
Saving Throw: None
|
||
|
Spell Resistance: Yes (harmless)
|
||
|
|
||
|
Revivify miraculously restores life to a recently
|
||
|
deceased creature. However, the spell must be cast
|
||
|
within 1 round of the victim's dead. Before the
|
||
|
soul of the deceased has completely left the body,
|
||
|
this spell halts its journey while repairing
|
||
|
somewhat the damage to the body. This spell
|
||
|
functions like raise dead, except that the raised
|
||
|
creature receives no level loss, no Constitution
|
||
|
loss, and no loss of spells. The creature is only
|
||
|
restored to -1 hit points (but is stable).
|
||
|
|
||
|
Material Component: Diamonds worth at least 1000 gp.
|
||
|
**/
|
||
|
///////////////////////////////////////////////////
|
||
|
// Author: Tenjac
|
||
|
// Date: 6.10.06
|
||
|
///////////////////////////////////////////////////
|
||
|
|
||
|
#include "prc_alterations"
|
||
|
#include "prc_inc_spells"
|
||
|
|
||
|
void main()
|
||
|
{
|
||
|
if(!X2PreSpellCastCode()) return;
|
||
|
|
||
|
PRCSetSchool(SPELL_SCHOOL_CONJURATION);
|
||
|
|
||
|
object oPC = OBJECT_SELF;
|
||
|
object oTarget = PRCGetSpellTargetObject();
|
||
|
effect eResurrect = EffectResurrection();
|
||
|
effect eVis = EffectVisualEffect(VFX_IMP_RAISE_DEAD);
|
||
|
|
||
|
// Make sure the target is in fact dead
|
||
|
if(GetIsDead(oTarget))
|
||
|
{
|
||
|
// Let the AI know - Special handling
|
||
|
PRCSignalSpellEvent(oTarget, FALSE, SPELL_RAISE_DEAD, oPC);
|
||
|
|
||
|
// Apply effects
|
||
|
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eVis, GetLocation(oTarget));
|
||
|
SPApplyEffectToObject(DURATION_TYPE_INSTANT, eResurrect, oTarget);
|
||
|
|
||
|
// Do special stuff
|
||
|
ExecuteScript("prc_pw_raisedead", oPC);
|
||
|
if(GetPRCSwitch(PRC_PW_DEATH_TRACKING) && GetIsPC(oTarget))
|
||
|
SetPersistantLocalInt(oTarget, "persist_dead", FALSE);
|
||
|
}
|
||
|
// end if - Deadness check
|
||
|
|
||
|
PRCSetSchool();
|
||
|
}
|