forked from Jaysyn/PRC8
82 lines
3.1 KiB
Plaintext
82 lines
3.1 KiB
Plaintext
|
//::///////////////////////////////////////////////
|
||
|
//:: Acid Fog: On Enter
|
||
|
//:: NW_S0_AcidFogA.nss
|
||
|
//:: Copyright (c) 2001 Bioware Corp.
|
||
|
//:://////////////////////////////////////////////
|
||
|
/*
|
||
|
All creatures within the AoE take 2d6 acid damage
|
||
|
per round and upon entering if they fail a Fort Save
|
||
|
their movement is halved.
|
||
|
|
||
|
**EDITED Nov 18/02 - Keith Warner**
|
||
|
Only enemies should take the dirge damage
|
||
|
*/
|
||
|
//:://////////////////////////////////////////////
|
||
|
//:: Created By: Preston Watamaniuk
|
||
|
//:: Created On: May 17, 2001
|
||
|
//:://////////////////////////////////////////////
|
||
|
|
||
|
//:: altered by mr_bumpkin Dec 4, 2003 for prc stuff
|
||
|
|
||
|
#include "prc_inc_spells"
|
||
|
#include "prc_add_spell_dc"
|
||
|
|
||
|
//::///////////////////////////////////////////////
|
||
|
//::
|
||
|
//:: Copyright (c) 2001 Bioware Corp.
|
||
|
//:://////////////////////////////////////////////
|
||
|
/*
|
||
|
Applies the ability score damage of the dirge effect.
|
||
|
|
||
|
March 2003
|
||
|
Because ability score penalties do not stack, I need
|
||
|
to store the ability score damage done
|
||
|
and increment each round.
|
||
|
To that effect I am going to update the description and
|
||
|
remove the dirge effects if the player leaves the area of effect.
|
||
|
|
||
|
*/
|
||
|
//:://////////////////////////////////////////////
|
||
|
//:: Created By:
|
||
|
//:: Created On:
|
||
|
//:://////////////////////////////////////////////
|
||
|
|
||
|
void main()
|
||
|
{
|
||
|
PRCSetSchool(SPELL_SCHOOL_EVOCATION);
|
||
|
|
||
|
object oCaster = GetAreaOfEffectCreator();
|
||
|
object oTarget = GetEnteringObject();
|
||
|
int nPenetr = SPGetPenetrAOE(oCaster);
|
||
|
|
||
|
if(spellsIsTarget(oTarget, SPELL_TARGET_SELECTIVEHOSTILE, oCaster))
|
||
|
{
|
||
|
//Fire cast spell at event for the target
|
||
|
SignalEvent(oTarget, EventSpellCastAt(oCaster, SPELL_DIRGE));
|
||
|
//Spell resistance check
|
||
|
if(!PRCDoResistSpell(oCaster, oTarget, nPenetr))
|
||
|
{
|
||
|
//Make a Fortitude Save to avoid the effects of the movement hit.
|
||
|
if(!PRCMySavingThrow(SAVING_THROW_FORT, oTarget, PRCGetSaveDC(oTarget, oCaster), SAVING_THROW_ALL, oCaster))
|
||
|
{
|
||
|
int nGetLastPenalty = GetLocalInt(oTarget, "X0_L_LASTPENALTY");
|
||
|
// * increase penalty by 2
|
||
|
nGetLastPenalty = nGetLastPenalty + 2;
|
||
|
|
||
|
//effect eStr = EffectAbilityDecrease(ABILITY_STRENGTH, nGetLastPenalty);
|
||
|
//effect eDex = EffectAbilityDecrease(ABILITY_DEXTERITY, nGetLastPenalty);
|
||
|
//change from sonic effect to bard song...
|
||
|
effect eVis = EffectVisualEffect(VFX_FNF_SOUND_BURST);
|
||
|
//effect eLink = EffectLinkEffects(eDex, eStr);
|
||
|
|
||
|
//Apply damage and visuals
|
||
|
ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget);
|
||
|
//ApplyEffectToObject(DURATION_TYPE_PERMANENT, eLink, oTarget);
|
||
|
ApplyAbilityDamage(oTarget, ABILITY_STRENGTH, nGetLastPenalty, DURATION_TYPE_PERMANENT, TRUE);
|
||
|
ApplyAbilityDamage(oTarget, ABILITY_DEXTERITY, nGetLastPenalty, DURATION_TYPE_PERMANENT, TRUE);
|
||
|
SetLocalInt(oTarget, "X0_L_LASTPENALTY", nGetLastPenalty);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
PRCSetSchool();
|
||
|
}
|