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