#include "prc_inc_spells"

void main()
{

        int nIncrement = GetLocalInt(OBJECT_SELF, "ExplosionTime");

        int nTimeSet = nIncrement + 1;
        SetLocalInt(OBJECT_SELF, "ExplosionTime", nTimeSet);

        if (GetLocalInt(OBJECT_SELF, "ExplosionTime") >= 3)
{
    object oCaster = OBJECT_SELF;
    int nCasterLvl = PRCGetCasterLevel(oCaster);
    int nMetaMagic = PRCGetMetaMagicFeat();
    int nDamage;
    float fDelay;
    effect eExplode = EffectVisualEffect(VFX_FNF_FIREBALL);
    effect eVis = EffectVisualEffect(VFX_IMP_FLAME_M);
    effect eDam;
    location lTarget = GetLocation(OBJECT_SELF);
    int bdam = d20(10) + 100;

    ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eExplode, lTarget);
    object oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_HUGE, lTarget, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_PLACEABLE);

    while (GetIsObjectValid(oTarget))
       {
        ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectDamage(bdam, DAMAGE_TYPE_PIERCING), oTarget, 0.0f);
        ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectDamage(bdam, DAMAGE_TYPE_FIRE), oTarget, 0.0f);
    DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget));
    oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_HUGE, lTarget, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_PLACEABLE);
}
ActionDoCommand(PlaySound("zep_explosion"));
}
}