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.
56 lines
2.0 KiB
Plaintext
56 lines
2.0 KiB
Plaintext
//::///////////////////////////////////////////////
|
|
//:: Name Chilling Fog - OnHeartbeat
|
|
//:: FileName inv_dra_chilfogc.nss
|
|
//::///////////////////////////////////////////////
|
|
|
|
#include "inv_inc_invfunc"
|
|
|
|
void main()
|
|
{
|
|
object oCaster = GetAreaOfEffectCreator();
|
|
object oAoE = OBJECT_SELF;
|
|
|
|
//Declare major variables
|
|
int nDamage = d6(2);
|
|
effect eDam;
|
|
effect eVis = EffectVisualEffect(VFX_IMP_FROST_S);
|
|
object oTarget;
|
|
float fDelay;
|
|
|
|
//--------------------------------------------------------------------------
|
|
// GZ 2003-Oct-15
|
|
// When the caster is no longer there, all functions calling
|
|
// GetAreaOfEffectCreator will fail. Its better to remove the barrier then
|
|
//--------------------------------------------------------------------------
|
|
if(!GetIsObjectValid(oCaster))
|
|
{
|
|
DestroyObject(oAoE);
|
|
return;
|
|
}
|
|
|
|
int nPenetr = SPGetPenetrAOE(oCaster);
|
|
|
|
//Start cycling through the AOE Object for viable targets including doors and placable objects.
|
|
oTarget = GetFirstInPersistentObject(oAoE);
|
|
while(GetIsObjectValid(oTarget))
|
|
{
|
|
if(spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, oCaster))
|
|
{
|
|
|
|
fDelay = PRCGetRandomDelay(0.4, 1.2);
|
|
//Fire cast spell at event for the affected target
|
|
SignalEvent(oTarget, EventSpellCastAt(oCaster, INVOKE_CHILLING_FOG));
|
|
//Spell resistance check
|
|
if(!PRCDoResistSpell(oCaster, oTarget, nPenetr, fDelay))
|
|
{
|
|
//Apply damage and visuals
|
|
//Set the damage effect
|
|
eDam = PRCEffectDamage(oTarget, nDamage, DAMAGE_TYPE_COLD);
|
|
DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget));
|
|
DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget));
|
|
}
|
|
}
|
|
//Get next target.
|
|
oTarget = GetNextInPersistentObject(oAoE);
|
|
}
|
|
} |