Further file organization
Further file organization
This commit is contained in:
63
nwn/nwnprc/trunk/newspellbook/inv_swarmdmgc.nss
Normal file
63
nwn/nwnprc/trunk/newspellbook/inv_swarmdmgc.nss
Normal file
@@ -0,0 +1,63 @@
|
||||
|
||||
#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();
|
||||
}
|
||||
|
||||
|
||||
}
|
Reference in New Issue
Block a user