Army Unfallen should affect the caster.

Army Unfallen should affect the caster.
Removed old backup files.
This commit is contained in:
Jaysyn904
2025-05-07 22:39:56 -04:00
parent c3fde2ebba
commit dd56af35e2
54 changed files with 101 additions and 1 deletions

View File

@@ -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");
}
} */