44 lines
1.1 KiB
Plaintext
44 lines
1.1 KiB
Plaintext
|
|
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 );
|
|
}
|
|
|
|
|