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.
74 lines
2.8 KiB
Plaintext
74 lines
2.8 KiB
Plaintext
|
|
#include "prc_alterations"
|
|
#include "inc_utility"
|
|
#include "inv_inc_invfunc"
|
|
#include "inv_invokehook"
|
|
|
|
void BuffSummon(int nAOE, location lTarget, object oCaster)
|
|
{
|
|
|
|
int i = 1;
|
|
object oSummon = GetAssociate(ASSOCIATE_TYPE_SUMMONED, OBJECT_SELF, i);
|
|
if(DEBUG) DoDebug("inv_tenacplague: First Summon is " + DebugObject2Str(oSummon));
|
|
while(GetIsObjectValid(oSummon))
|
|
{
|
|
i++;
|
|
oSummon = GetAssociate(ASSOCIATE_TYPE_SUMMONED, OBJECT_SELF, i);
|
|
if(DEBUG) DoDebug("inv_tenacplague: Next Summon is " + DebugObject2Str(oSummon));
|
|
}
|
|
oSummon = GetAssociate(ASSOCIATE_TYPE_SUMMONED, OBJECT_SELF, i - 1);
|
|
if(DEBUG) DoDebug("inv_tenacplague: Final Summon is " + DebugObject2Str(oSummon));
|
|
|
|
effect eAOE = EffectAreaOfEffect(nAOE);
|
|
effect eCritImmune = EffectImmunity(IMMUNITY_TYPE_CRITICAL_HIT);
|
|
effect eWeaponImm1 = EffectDamageImmunityIncrease(DAMAGE_TYPE_BLUDGEONING, 100);
|
|
effect eWeaponImm2 = EffectDamageImmunityIncrease(DAMAGE_TYPE_PIERCING, 100);
|
|
effect eWeaponImm3 = EffectDamageImmunityIncrease(DAMAGE_TYPE_SLASHING, 100);
|
|
effect eLink = EffectLinkEffects(eCritImmune, eWeaponImm1);
|
|
eLink = EffectLinkEffects(eLink, eWeaponImm2);
|
|
eLink = EffectLinkEffects(eLink, eWeaponImm3);
|
|
eLink = EffectLinkEffects(eLink, eAOE);
|
|
eLink = EffectLinkEffects(eLink, EffectCutsceneParalyze());
|
|
eLink = EffectLinkEffects(eLink, EffectVisualEffect(VFX_DUR_FLIES));
|
|
SetLocalInt(oSummon, "IgnoreSwarmDmg", TRUE);
|
|
SetLocalInt(oCaster, "SwarmDmgType", INVOKE_TENACIOUS_PLAGUE);
|
|
ApplyEffectToObject(DURATION_TYPE_PERMANENT, ExtraordinaryEffect(eLink), oSummon);
|
|
}
|
|
|
|
void main()
|
|
{
|
|
if (!PreInvocationCastCode())
|
|
{
|
|
// If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell
|
|
return;
|
|
}
|
|
|
|
//Declare major variables
|
|
int nCasterLvl = GetInvokerLevel(OBJECT_SELF, GetInvokingClass());
|
|
effect eSummon = EffectSummonCreature("prc_tplagueswarm");
|
|
int nAOE;
|
|
if(nCasterLvl > 17)
|
|
nAOE = INVOKE_AOE_SWARMDMG_6;
|
|
else if(nCasterLvl > 14)
|
|
nAOE = INVOKE_AOE_SWARMDMG_5;
|
|
else if(nCasterLvl > 11)
|
|
nAOE = INVOKE_AOE_SWARMDMG_4;
|
|
else if(nCasterLvl > 8)
|
|
nAOE = INVOKE_AOE_SWARMDMG_3;
|
|
else if(nCasterLvl > 5)
|
|
nAOE = INVOKE_AOE_SWARMDMG_2;
|
|
else
|
|
nAOE = INVOKE_AOE_SWARMDMG;
|
|
effect eVis = EffectVisualEffect(VFX_FNF_SUMMON_MONSTER_1);
|
|
float fDuration = TurnsToSeconds(nCasterLvl);
|
|
|
|
//Apply the VFX impact and summon effect
|
|
MultisummonPreSummon();
|
|
ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, eVis, PRCGetSpellTargetLocation());
|
|
ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, eSummon, PRCGetSpellTargetLocation(), fDuration);
|
|
|
|
DelayCommand(0.1, BuffSummon(nAOE, PRCGetSpellTargetLocation(), OBJECT_SELF));
|
|
|
|
}
|
|
|