PRC8/nwn/trunk/epicspellscripts/ss_ep_armyunfall.nss
Jaysyn904 5914ed2ab5 Updated Release Archive
Updated Release Archive.  Fixed Mage-killer prereqs.  Removed old LETO & ConvoCC related files.  Added organized spell scroll store.  Fixed Gloura spellbook. Various TLK fixes.  Reorganized Repo.  Removed invalid user folders. Added DocGen back in.
2023-08-22 10:00:21 -04:00

68 lines
2.6 KiB
Plaintext

//:://////////////////////////////////////////////
//:: FileName: "ss_ep_armyunfall"
/* Purpose: Army Unfallen epic spell - heals/resurrects all allies.
*/
//:://////////////////////////////////////////////
//:: Created By: Boneshank
//:: Last Updated On:
//:://////////////////////////////////////////////
#include "prc_alterations"
#include "inc_epicspells"
#include "nw_i0_generic"
void main()
{
DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR");
SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_CONJURATION);
if (!X2PreSpellCastCode())
{
DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR");
return;
}
if (GetCanCastSpell(OBJECT_SELF, SPELL_EPIC_ARMY_UN))
{
effect eRez, eHeal, eBLD, eLink;
effect eVis = EffectVisualEffect(VFX_FNF_LOS_HOLY_10);
effect eVis2 = EffectVisualEffect(VFX_FNF_PWSTUN);
effect eVis3 = EffectVisualEffect(VFX_IMP_HEALING_G);
int nX, nAlly, nBLD;
object oTarget = GetFirstFactionMember(OBJECT_SELF, FALSE);
while (GetIsObjectValid(oTarget))
{
nX = GetMaxHitPoints(oTarget) - GetCurrentHitPoints(oTarget);
if(nX < 0) //account for temporary HP
nX = 0;
eRez = EffectResurrection();
eHeal = EffectHeal(nX);
eLink = EffectLinkEffects(eHeal, eVis);
eLink = EffectLinkEffects(eLink, eVis2);
eLink = EffectLinkEffects(eLink, eVis3);
if (nX && //make sure they can be healed
!MatchNonliving(MyPRCGetRacialType(oTarget)))
{
if (nX > 0)
{
if (GetIsDead(oTarget))
{
SPApplyEffectToObject(DURATION_TYPE_INSTANT, eRez, oTarget);
ExecuteScript("prc_pw_armyunfall", oTarget);
if(GetPRCSwitch(PRC_PW_DEATH_TRACKING) && GetIsPC(oTarget))
SetPersistantLocalInt(oTarget, "persist_dead", FALSE);
}
SPApplyEffectToObject(DURATION_TYPE_INSTANT, eLink, oTarget);
nAlly++;
}
}
oTarget = GetNextFactionMember(OBJECT_SELF, FALSE);
}
if (GetPRCSwitch(PRC_EPIC_BACKLASH_DAMAGE) == TRUE)
{
nBLD = d6(nAlly);
eBLD = EffectDamage(nBLD);
SPApplyEffectToObject(DURATION_TYPE_INSTANT, eBLD, oTarget);
}
}
DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR");
}