Updated AMS marker feats. Removed arcane & divine marker feats. Updated Dread Necromancer for epic progression. Updated weapon baseitem models. Updated new weapons for crafting & npc equip. Updated prefix. Updated release archive.
64 lines
3.0 KiB
Plaintext
64 lines
3.0 KiB
Plaintext
|
|
#include "inv_inc_invfunc"
|
|
|
|
void main()
|
|
{
|
|
SetAllAoEInts(GetLocalInt(GetAreaOfEffectCreator(), "SwarmDmgType"),OBJECT_SELF, GetSpellSaveDC());
|
|
|
|
int nCasterLevel = GetInvokerLevel(GetAreaOfEffectCreator(), CLASS_TYPE_WARLOCK);
|
|
|
|
object oTarget = GetFirstInPersistentObject();
|
|
while(GetIsObjectValid(oTarget))
|
|
{
|
|
if(spellsIsTarget(oTarget, SPELL_TARGET_SELECTIVEHOSTILE , GetAreaOfEffectCreator())
|
|
&& !GetLocalInt(oTarget, "IgnoreSwarmDmg")
|
|
&& oTarget != GetAreaOfEffectCreator()
|
|
&& GetCreatureFlag(oTarget, CREATURE_VAR_IS_INCORPOREAL) != TRUE)
|
|
{
|
|
//Fire cast spell at event for the target
|
|
SignalEvent(oTarget, EventSpellCastAt(GetAreaOfEffectCreator(),
|
|
GetLocalInt(GetAreaOfEffectCreator(), "SwarmDmgType")));
|
|
|
|
effect eDamage = EffectDamage(d6(), DAMAGE_TYPE_PIERCING);
|
|
if(GetLocalInt(GetAreaOfEffectCreator(), "SwarmDmgType") == INVOKE_TENACIOUS_PLAGUE)
|
|
eDamage = EffectDamage(d6(2), DAMAGE_TYPE_PIERCING, DAMAGE_POWER_PLUS_ONE);
|
|
if(GetLocalInt(GetAreaOfEffectCreator(), "SwarmDmgType") == INVOKE_DARK_DISCORPORATION)
|
|
eDamage = EffectDamage(d6(4), DAMAGE_TYPE_PIERCING, DAMAGE_POWER_PLUS_FOUR);
|
|
eDamage = EffectLinkEffects(eDamage, EffectVisualEffect(VFX_IMP_MAGBLUE));
|
|
SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oTarget);
|
|
effect eAddlEffect;
|
|
effect eVis;
|
|
|
|
if(GetLocalInt(GetAreaOfEffectCreator(), "SwarmDmgType") == INVOKE_SUMMON_SWARM_BAT
|
|
&& !GetLocalInt(oTarget, "SwarmBleeding"))
|
|
{
|
|
ApplyOnHitAbilities(oTarget, GetAreaOfEffectCreator(), GetLocalObject(GetAreaOfEffectCreator(), "SwarmWeapon"));
|
|
eVis = EffectVisualEffect(VFX_IMP_HEAD_EVIL);
|
|
SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget);
|
|
SetLocalInt(oTarget, "SwarmBleeding", TRUE);
|
|
}
|
|
|
|
if(GetLocalInt(GetAreaOfEffectCreator(), "SwarmDmgType") == INVOKE_SUMMON_SWARM_RAT
|
|
&& !GetHasSpellEffect(INVOKE_SUMMON_SWARM_RAT, oTarget))
|
|
{
|
|
eAddlEffect = EffectDisease(DISEASE_FILTH_FEVER);
|
|
eVis = EffectVisualEffect(VFX_IMP_DISEASE_S);
|
|
SPApplyEffectToObject(DURATION_TYPE_PERMANENT, eAddlEffect, oTarget);
|
|
SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget);
|
|
}
|
|
|
|
int nNauseaDC = 12;
|
|
if(GetLocalInt(GetAreaOfEffectCreator(), "SwarmDmgType") == INVOKE_TENACIOUS_PLAGUE)
|
|
nNauseaDC += GetAbilityModifier(ABILITY_CHARISMA, GetAreaOfEffectCreator());
|
|
//save or be nauseated
|
|
if(!PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nNauseaDC, SAVING_THROW_TYPE_NONE))
|
|
{
|
|
SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectNausea(oTarget, 6.0), oTarget, RoundsToSeconds(1));
|
|
}
|
|
}
|
|
oTarget = GetNextInPersistentObject();
|
|
}
|
|
|
|
|
|
}
|