Army Unfallen should affect the caster.
Army Unfallen should affect the caster. Removed old backup files.
This commit is contained in:
@@ -11,6 +11,105 @@
|
||||
#include "nw_i0_generic"
|
||||
|
||||
void main()
|
||||
{
|
||||
// Set up the spell school context
|
||||
DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR");
|
||||
SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_CONJURATION);
|
||||
|
||||
// Standard pre-cast check
|
||||
if (!X2PreSpellCastCode())
|
||||
{
|
||||
DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR");
|
||||
return;
|
||||
}
|
||||
|
||||
// Check if caster can cast the spell
|
||||
if (GetCanCastSpell(OBJECT_SELF, SPELL_EPIC_ARMY_UN))
|
||||
{
|
||||
int nAlly = 0;
|
||||
int nBLD;
|
||||
int nX;
|
||||
|
||||
// Prepare visual effects
|
||||
effect eVis = EffectVisualEffect(VFX_FNF_LOS_HOLY_10);
|
||||
effect eVis2 = EffectVisualEffect(VFX_FNF_PWSTUN);
|
||||
effect eVis3 = EffectVisualEffect(VFX_IMP_HEALING_G);
|
||||
effect eRez, eHeal, eLink, eBLD;
|
||||
|
||||
// === Handle caster (OBJECT_SELF) first ===
|
||||
nX = GetMaxHitPoints(OBJECT_SELF) - GetCurrentHitPoints(OBJECT_SELF);
|
||||
if (nX < 0) nX = 0;
|
||||
|
||||
if (nX && !MatchNonliving(MyPRCGetRacialType(OBJECT_SELF)))
|
||||
{
|
||||
eRez = EffectResurrection();
|
||||
eHeal = EffectHeal(nX);
|
||||
eLink = EffectLinkEffects(eHeal, eVis);
|
||||
eLink = EffectLinkEffects(eLink, eVis2);
|
||||
eLink = EffectLinkEffects(eLink, eVis3);
|
||||
|
||||
if (GetIsDead(OBJECT_SELF))
|
||||
{
|
||||
SPApplyEffectToObject(DURATION_TYPE_INSTANT, eRez, OBJECT_SELF);
|
||||
ExecuteScript("prc_pw_armyunfall", OBJECT_SELF);
|
||||
|
||||
if (GetPRCSwitch(PRC_PW_DEATH_TRACKING) && GetIsPC(OBJECT_SELF))
|
||||
SetPersistantLocalInt(OBJECT_SELF, "persist_dead", FALSE);
|
||||
}
|
||||
|
||||
SPApplyEffectToObject(DURATION_TYPE_INSTANT, eLink, OBJECT_SELF);
|
||||
nAlly++;
|
||||
}
|
||||
|
||||
// === Handle other allies in faction ===
|
||||
object oTarget = GetFirstFactionMember(OBJECT_SELF, FALSE);
|
||||
while (GetIsObjectValid(oTarget))
|
||||
{
|
||||
if (oTarget != OBJECT_SELF)
|
||||
{
|
||||
nX = GetMaxHitPoints(oTarget) - GetCurrentHitPoints(oTarget);
|
||||
if (nX < 0) nX = 0;
|
||||
|
||||
if (nX && !MatchNonliving(MyPRCGetRacialType(oTarget)))
|
||||
{
|
||||
eRez = EffectResurrection();
|
||||
eHeal = EffectHeal(nX);
|
||||
eLink = EffectLinkEffects(eHeal, eVis);
|
||||
eLink = EffectLinkEffects(eLink, eVis2);
|
||||
eLink = EffectLinkEffects(eLink, eVis3);
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
// === Apply backlash damage if enabled ===
|
||||
if (GetPRCSwitch(PRC_EPIC_BACKLASH_DAMAGE) == TRUE)
|
||||
{
|
||||
nBLD = d6(nAlly);
|
||||
eBLD = EffectDamage(nBLD);
|
||||
SPApplyEffectToObject(DURATION_TYPE_INSTANT, eBLD, OBJECT_SELF);
|
||||
}
|
||||
}
|
||||
|
||||
// Clean up spell school variable
|
||||
DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR");
|
||||
}
|
||||
|
||||
|
||||
/* void main()
|
||||
{
|
||||
DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR");
|
||||
SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_CONJURATION);
|
||||
@@ -64,4 +163,4 @@ void main()
|
||||
}
|
||||
}
|
||||
DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR");
|
||||
}
|
||||
} */
|
Reference in New Issue
Block a user