Aschbourne_PRC8/_module/nss/nw_s3_balordeth.nss
Jaysyn904 5d27edafba Major update
Fixed CCOH, Fixed starting GP, Fixed DMFI languages, Fix cep weapon appearances, Fixed new player start up system.  Added PC deleter.  Added ACP 4.1.  Full compile.  Updated release archive.
2024-09-16 23:40:48 -04:00

63 lines
2.7 KiB
Plaintext

// HCR v3.2.0 - Execute default death script after fireball effects is complete.
//::////////////////////////////////////////////////////////////////////////////
//:: FileName: NW_S3_BALORDETH
//::////////////////////////////////////////////////////////////////////////////
/*
Fireball explosion does 50 damage to all within 20ft.
*/
//::////////////////////////////////////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: Jan 9, 2002
//::////////////////////////////////////////////////////////////////////////////
#include "NW_I0_SPELLS"
#include "prc_inc_spells"
//::////////////////////////////////////////////////////////////////////////////
void main()
{
// Declare major variables.
int nMetaMagic = PRCGetMetaMagicFeat();
int nDamage;
float fDelay;
effect eVis = EffectVisualEffect(VFX_IMP_FLAME_M);
effect eDam;
// Apply the fireball explosion.
effect eExplode = EffectVisualEffect(VFX_FNF_FIREBALL);
location lTarget = GetLocation(OBJECT_SELF);
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eExplode, lTarget);
// Cycle through the targets until an invalid object is captured.
object oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_HUGE, lTarget, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR);
while (GetIsObjectValid(oTarget))
{
// Fire cast spell at event for the specified target.
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_FIREBALL));
// Calculate delay based on distance between explosion and the target.
fDelay = (GetDistanceBetweenLocations(lTarget, GetLocation(oTarget))/20);
if (!PRCDoResistSpell(OBJECT_SELF, oTarget, FloatToInt(fDelay)))
{
// Adjust damage based on Reflex Save, Evasion and Improved Evasion.
nDamage = PRCGetReflexAdjustedDamage(50, oTarget, GetSpellSaveDC(), SAVING_THROW_TYPE_FIRE);
if (nDamage > 0)
{
// Apply effects to the currently selected target.
eDam = EffectDamage(nDamage, DAMAGE_TYPE_FIRE);
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget));
// This visual effect is applied to the target object not the
// location as above. This visual effect represents the flame that
// erupts on the target not on the ground.
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget));
}
}
// Select the next target.
oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_HUGE, lTarget, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR);
}
// HCR 3.0 - Call default death script.
ExecuteScript("nw_c2_default7", OBJECT_SELF);
}
//::////////////////////////////////////////////////////////////////////////////