From ZDoom Wiki
Jump to navigation Jump to search

virtual int DamageMobj (Actor inflictor, Actor source, int damage, Name mod [, int flags = 0 [, double angle = 0]])


Called by the actor whenever it takes damage. Returns the amount of damage the caller actually took from the attack.

Can be both overridden on a specific actor in order to add something to the moment they take damage, and also called on an actor directly to deal damage to them.


  • inflictor - The actor dealing the damage. This is the missile for projectiles and the puff for hitscan attacks. For monster melee attacks this is the same as the source.
  • source - The actor responsible for the inflictor.
  • damage - The amount of damage to deal.
  • mod - The damage type applied to the attack.
  • flags - The damage flags to use in the attack:
  • DMG_NO_ARMOR - Don't call AbsorbDamage on any of the victim's inventory items.
  • DMG_NO_PAIN - Tell the victim not to enter their Pain state.
  • DMG_INFLICTOR_IS_PUFF - Used by ApplyKickback to determine whether the origin should be the source (if the flag is set) or the inflictor. Automatically set by hitscan attacks.
  • DMG_THRUSTLESS - Don't call ApplyKickback on the victim.
  • DMG_FORCED - Ignores all damage negation flags/properties the victim has such as NODAMAGE and doesn't call special damage functions e.g. TakeSpecialDamage. Players with the NODAMAGE flag, god2, or buddha2 cheats are immune due to potential abuse.
  • DMG_NO_FACTOR - Don't apply the victim's damage factors.
  • DMG_PLAYERATTACK - The attack came from a hitscan weapon fired by a player.
  • DMG_FOILINVUL - Ignore the INVULNERABLE flag if the victim has it set.
  • DMG_FOILBUDDHA - Ignore the BUDDHA flag if the victim has it set.
  • DMG_NO_PROTECT - Don't call ModifyDamage on any of the victim's inventory items.
  • DMG_NO_ENHANCE - Don't call ModifyDamage on any of the source's inventory items.
  • DMG_USEANGLE - Use the angle parameter when applying kickback instead of having ApplyKickback calculate the angle from the origin of the attack.
  • DMG_EXPLOSION - Marks the attack as splash damage from an explosion. Does not do anything by default.
  • angle - The absolute angle for thrusting enemies from the damage if DMG_USEANGLE is set.


This version of the Zombieman will take no damage from projectiles:

class ProjectilesCantHurtMe : Zombieman
	override int DamageMobj (Actor inflictor, Actor source, int damage, Name mod, int flags, double angle)
		if (inflictor && inflictor.bMISSILE)
			return 0;
		return super.DamageMobj(inflictor, source, damage, mod, flags, angle);

See also