I found a spell called Eruption
The spell casting works the VFX works, but no damage is done. Well tested it on 4 different creatures with no effect.
I looked at the script and the funny thing is…I don’t see initial eruption dealing 12d6 damage as it says in the description below in the spell. Why?
Sorry…cleaning up my spells that don’t work or not working properly. Sorry to bug you guys out there so much with these requests. See spell below…anyone?
//:://////////////////////////////////////////////
/*
// Up to three fiery eruptions occur at the target location
// over the course of one round after casting the spell, each
// spaced 2 seconds apart. The initial eruption deals 12d6 damage
// to creatures within its area of effect, with a Reflex save
// allowed for half damage; if the target fails this save they
// are additionally stunned for one round.
//
// Each subsequent eruption deals half as much damage as the
// previous one and has its DC reduced by 2.
*/
//:://////////////////////////////////////////////
#include "X0_I0_SPELLS"
#include "x2_inc_spellhook"
int nDamage, nDC;
effect eDam, eStun, eVis;
void EruptionGroundVFX(location lLoc)
{
effect eEruptG = EffectVisualEffect(679); // Ground duration effect
ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, eEruptG, lLoc, 12.0);
}
void EruptionVFX(location lLoc)
{
effect eEruptF = EffectVisualEffect(680); // Eruption FnF effect
effect eEruptS = EffectVisualEffect(287); // Screen bump effect
effect eEruptR = EffectVisualEffect(354); // Rock chunk effect
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eEruptR, lLoc);
DelayCommand(0.1, ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eEruptR, lLoc));
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eEruptS, lLoc);
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eEruptF, lLoc);
DelayCommand(0.15, ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eEruptF, lLoc));
DelayCommand(0.35, ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eEruptF, lLoc));
}
void Eruption(location lLoc, int nDamage, int nDC)
{
EruptionVFX(lLoc);
object oTarget = GetFirstObjectInShape(SHAPE_SPELLCONE, RADIUS_SIZE_LARGE, lLoc, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE);
while(GetIsObjectValid(oTarget))
{
float fDelay = GetDistanceBetweenLocations(lLoc, GetLocation(oTarget))/20;
if(!GetIsReactionTypeFriendly(oTarget))
{
if (MyResistSpell(OBJECT_SELF, oTarget, fDelay) <= 0)
{
int nReflexCheckHack = GetReflexAdjustedDamage(2, oTarget, nDC, SAVING_THROW_TYPE_FIRE, OBJECT_SELF);
switch (nReflexCheckHack)
{
case 0: // Evasion/Improved Evasion, or equivalent modifier
// Nothing here, resisted all effects
break;
case 1: // Reflex save: Success
nDamage = nDamage /2;
eDam = EffectDamage(nDamage, DAMAGE_TYPE_FIRE);
eVis = EffectVisualEffect(VFX_IMP_FLAME_S);
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget));
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget));
break;
case 2: // Reflex save: Failure
eDam = EffectDamage(nDamage, DAMAGE_TYPE_FIRE);
eStun = EffectStunned();
eVis = EffectVisualEffect(VFX_IMP_FLAME_M);
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget));
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eStun, oTarget, 1.0));
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget));
break;
}
}
}
oTarget = GetNextObjectInShape(SHAPE_SPELLCONE, RADIUS_SIZE_LARGE, lLoc, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE);
}
}
void main()
{
location lLoc = GetSpellTargetLocation();
EruptionGroundVFX(lLoc);
DelayCommand(2.0, Eruption(lLoc, d6(12), GetSpellSaveDC()));
DelayCommand(4.0, Eruption(lLoc, d6(6), GetSpellSaveDC()-2));
DelayCommand(6.0, Eruption(lLoc, d6(3), GetSpellSaveDC()-4));
}