From ZDoom Wiki
Jump to: navigation, search

int A_Explode [(int damage [, int radius [, int flags [, bool alert [, int fulldamageradius [, int nails [, int naildamage [, str pufftype [, str damagetype]]]]]]]])]


Performs an explosive (radius) attack.


  • damage: How much damage is inflicted at the center of the explosion. Default is 128.
  • radius: The area covered by the damage (damage inflicted drop linearly with distance). Note that a radius larger than 32767 extends beyond ZDoom's map space limitations, and will overflow with undesired results (such as becoming too small and damaging nothing). Defaults to the damage value.
  • flags: The following flags can be combined by using the | character between the constant names:
    • XF_HURTSOURCE — Hurts the source: if set, the source can be damaged by the explosion. Note that the source is not necessarily the calling actor. This flag is set by default.
    • XF_NOTMISSILE — Not a missile: if set, the calling actor is considered to be the source. By default, the calling actor is assumed to be a projectile, and the source is therefore considered to be the calling actor's target.
    • XF_EXPLICITDAMAGETYPE — The damagetype parameter will never change to the actor's damagetype.
    • XF_NOSPLASH — No splash: if set, the explosion does not create any terrain splashes.
  • alert: Whether the explosion rings the alarm? Default is false.
  • fulldamageradius: The area within which full damage is inflicted. Default is 0.
  • nails: The number of horizontal hitscan attacks performed in a ring. Default is 0. A value of 30 emulates the A_NailBomb codepointer from SMMU, while still allowing to modify all other parameters from A_Explode.
  • naildamage: The amount of damage inflicted by nails, if any. Default is 10.
  • pufftype: The name of the puff to use upon calling the explosion, originating from the actor's center. If nothing is supplied, BulletPuff is used.
  • damagetype: The damagetype to use for the damage of this function rather than the actor's damagetype. Defaults to none. If left as is without XF_EXPLICITDAMAGETYPE, will use the actor's damagetype instead.

Do not use the old actor property method of passing the parameters. Only use the parameters of A_Explode directly.

Return value

Returns the number of actors damaged. Actors that absorb the damage completely are not counted.


Actor MyGrenade : Grenade
	Speed 17
	BounceFactor 0.4
	BounceCount 6
		QEX1 A 0 A_PlaySound("Weapon/GenericExplode", CHAN_WEAPON)
		QEX1 A 5 A_Explode(100, 128)

Whenever this rocket explodes, it logs the number of actors which got damaged by its splash effect.

ACTOR SmartRocket : Rocket
        MISL B 8 Bright A_LogInt(A_Explode)
        Goto Super::Death+1