void main() { object dam = GetLastDamager(); if (!GetIsPC(dam)){ return;} string dam2 = GetTag(dam); if (dam == OBJECT_SELF){dam2 = "self";} if (dam2 == "boom001"){ return; } float fDamageRange = 11.0; // Range of FireDamage int iMinDamage = 20; // Minimal Firedamage int iAddDamage = d6(8); // Additional (random) Damage // TotalDamage to an object is // iMinDamage + iAddDamage // Do the nice Fire Explosion effect eExpl = EffectVisualEffect(VFX_FNF_FIREBALL); ApplyEffectToObject(DURATION_TYPE_INSTANT,eExpl,OBJECT_SELF); // Do Damage to all Objects in a range defined by fDamageRange object o; effect eFireDamage; o = GetFirstObjectInShape(SHAPE_SPHERE,fDamageRange,GetLocation(OBJECT_SELF),TRUE,OBJECT_TYPE_ALL); while(GetIsObjectValid(o)) { eFireDamage = EffectDamage(iMinDamage + iAddDamage,DAMAGE_TYPE_FIRE, DAMAGE_POWER_PLUS_TWO); if (GetIsPC(o)){ ApplyEffectToObject(DURATION_TYPE_INSTANT,eFireDamage,o); } o = GetNextObjectInShape(SHAPE_SPHERE,fDamageRange,GetLocation(OBJECT_SELF),TRUE,OBJECT_TYPE_ALL); } ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectDamage(150, DAMAGE_TYPE_FIRE, DAMAGE_POWER_PLUS_FIVE), OBJECT_SELF ); }