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.
95 lines
3.1 KiB
Plaintext
95 lines
3.1 KiB
Plaintext
//::///////////////////////////////////////////////
|
|
//:: Exhaled Barrier: On Enter
|
|
//:: prc_wallbreatha.nss
|
|
//:://////////////////////////////////////////////
|
|
/*
|
|
Person within the AoE take breath damage
|
|
per round.
|
|
*/
|
|
//:://////////////////////////////////////////////
|
|
//:: Created By: Preston Watamaniuk
|
|
//:: Created On: May 17, 2001
|
|
//:://////////////////////////////////////////////
|
|
|
|
//:: modified by mr_bumpkin Dec 4, 2003
|
|
//:: Modified for Exhaled Barrier by Fox on Jan 23, 2008
|
|
#include "prc_inc_spells"
|
|
|
|
void main()
|
|
{
|
|
|
|
//Declare major variables
|
|
int nDamage = 0;
|
|
effect eDam;
|
|
object oTarget;
|
|
int nSaveDamageType;
|
|
int nVisualType;
|
|
object oDragon = GetAreaOfEffectCreator();
|
|
int nDamageType = GetLocalInt(oDragon, "BarrierDamageType");
|
|
int nDiceType = GetLocalInt(oDragon, "BarrierDiceType");
|
|
int nDiceNumber = GetLocalInt(oDragon, "BarrierDiceNumber");
|
|
int nSaveDC = 10 + GetHitDice(oDragon) / 2 + max(GetAbilityModifier(ABILITY_CONSTITUTION, oDragon), 0);
|
|
//Declare and assign personal impact visual effect.
|
|
switch(nDamageType)
|
|
{
|
|
case DAMAGE_TYPE_ACID:
|
|
nSaveDamageType = SAVING_THROW_TYPE_ACID;
|
|
nVisualType = VFX_IMP_ACID_S; break;
|
|
|
|
case DAMAGE_TYPE_COLD:
|
|
nSaveDamageType = SAVING_THROW_TYPE_COLD;
|
|
nVisualType = VFX_IMP_FROST_S; break;
|
|
|
|
case DAMAGE_TYPE_ELECTRICAL:
|
|
nSaveDamageType = SAVING_THROW_TYPE_ELECTRICITY;
|
|
nVisualType = VFX_IMP_LIGHTNING_S; break;
|
|
|
|
case DAMAGE_TYPE_FIRE:
|
|
nSaveDamageType = SAVING_THROW_TYPE_FIRE;
|
|
nVisualType = VFX_IMP_FLAME_M; break;
|
|
|
|
case DAMAGE_TYPE_NEGATIVE:
|
|
nSaveDamageType = SAVING_THROW_TYPE_NEGATIVE;
|
|
nVisualType = VFX_IMP_NEGATIVE_ENERGY; break;
|
|
|
|
case DAMAGE_TYPE_POSITIVE:
|
|
nSaveDamageType = SAVING_THROW_TYPE_POSITIVE;
|
|
nVisualType = VFX_IMP_HOLY_AID; break;
|
|
|
|
case DAMAGE_TYPE_SONIC:
|
|
nSaveDamageType = SAVING_THROW_TYPE_SONIC;
|
|
nVisualType = VFX_IMP_SILENCE; break;
|
|
}
|
|
effect eVis = EffectVisualEffect(nVisualType);
|
|
|
|
//Capture the first target object in the shape.
|
|
oTarget = GetEnteringObject();
|
|
if (spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, oDragon))
|
|
{
|
|
//Fire cast spell at event for the specified target
|
|
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, GetSpellId()));
|
|
|
|
//Roll damage.
|
|
switch(nDiceType)
|
|
{
|
|
case 4:
|
|
nDamage = d4(nDiceNumber); break;
|
|
case 6:
|
|
nDamage = d6(nDiceNumber); break;
|
|
case 8:
|
|
nDamage = d8(nDiceNumber); break;
|
|
case 10:
|
|
nDamage = d10(nDiceNumber); break;
|
|
}
|
|
nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, nSaveDC, nSaveDamageType);
|
|
if(nDamage > 0)
|
|
{
|
|
// Apply effects to the currently selected target.
|
|
eDam = EffectDamage(nDamage, nDamageType);
|
|
ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget);
|
|
ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget);
|
|
}
|
|
}
|
|
|
|
}
|