void main() { float fRadius = RADIUS_SIZE_MEDIUM; int nDC = 22; int nDice = 4; int nTargetVisualFail = VFX_IMP_FLAME_M; int nTargetVisualSuccess = VFX_IMP_FLAME_S; int nImpactVisual = VFX_FNF_LOS_NORMAL_20; location lTargetLocation = GetItemActivatedTargetLocation(); object oTarget = GetFirstObjectInShape(SHAPE_SPHERE, fRadius, lTargetLocation, TRUE); while(oTarget != OBJECT_INVALID) { int nSave = ReflexSave(oTarget, nDC, SAVING_THROW_TYPE_FIRE); int nDamage = d8(nDice); effect eDamage; if(nSave == 0) { if(GetHasFeat(FEAT_IMPROVED_EVASION, oTarget)) { nDamage /= 2; } eDamage = EffectDamage(nDamage, DAMAGE_TYPE_FIRE); effect eVisual = EffectVisualEffect(nTargetVisualFail); eDamage = EffectLinkEffects(eVisual, eDamage); } else if(nSave == 1 && !GetHasFeat(FEAT_EVASION, oTarget) && !GetHasFeat(FEAT_IMPROVED_EVASION, oTarget)) { eDamage = EffectDamage(nDamage / 2, DAMAGE_TYPE_FIRE); effect eVisual = EffectVisualEffect(nTargetVisualSuccess); eDamage = EffectLinkEffects(eVisual, eDamage); } ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oTarget); oTarget = GetNextObjectInShape(SHAPE_SPHERE, fRadius, lTargetLocation, TRUE); } effect eVisual = EffectVisualEffect(nImpactVisual); ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eVisual, lTargetLocation); }