From Eternity Wiki
Jump to navigationJump to search

thinggroup is an EDF block which groups separate thingtypes into categories and gives them special flags, without also subjecting them to inheritance. The original motivation for this flag was extending the hell knight and baron of hell 'alliance' behaviour, where they can't harm each other by projectiles, but others monsters of separate species are always affected.

Back to EDF


The syntax is as follows:

thinggroup <name>
  flags <flags>
  types { <thingtype1>, <thingtype2>, ... }

Name is the name of this category. Currently it's merely descriptive, but must be unique per thinggroup.

Each thingtypeX is the mnemonic of a thingtype already defined in EDF. In order for this definition to have any effect on gameplay, you must set flags to any of the following values, joined by | (vertical bar, as in EDF flag settings):

  • PROJECTILEALLIANCE: this prevents monsters from types from harming each other with projectiles. Hell knights and barons of hell have this flag set in the base things.edf.
  • DAMAGEIGNORE: monsters in the types list may be damaged by each other, but will not infight as a result. This generalizes the deprecated BOSSIGNORE thingtype flag. It will not prevent monsters from infighting others of the same species; for that, use a new thingtype flag (see below).
  • NOSPLASHDAMAGE: applied to direct explosion damage inflictors and potential damage takers, makes these damage takers unaffected by inflictor's explosions. NOTE: this flag also applies between actors of the same type which explode each other (e.g. barrels). It's based on the MBF21 specifications for the equivalent Dehacked feature.
  • INHERITED: only has meaning if any of the other flags above is set. It makes it so any thingtypes inheriting the ones from the list are also included in this group. By default they don't inherit.

Types don't have to be monsters specifically; any thingtype will do.


The following EDF makes imps and cacodemons immune to each other's attacks:

thinggroup ClassicDevils  // name can be anything but must be unique
  flags ProjectileAlliance
  types { DoomImp, Cacodemon }

Other infighting-related properties[edit]

As infighting is a rather complex rule in Doom and related games, there are also other means to customize it:

  • thingtype damagefactor attribute "immune". Unlike "damagefactor Xyz, 0", this also prevents pain, thrusting and retaliation. Useful to prevent friendly fire and infighting for arbitrary damage types (means of death) between monsters. Example:
  name Zombieman
  mod ZombiemanMOD  // their default MOD is "unknown"; it needs to be set to a custom one.
  damagefactor ZombiemanMOD, immune
damagetype ZombiemanMOD { num 100 }  // MOD definition: use a number that doesn't conflict with the stock ones.
  • new thingtype flags:
  • NOSPECIESINFIGHT, which, in addition to DAMAGEIGNORE from thinggroup, also prevents monsters from the same species from infighting due to damage.
  • HARMSPECIESMISSILE, which allows monsters of the same species to be affected by each other's projectiles, overriding the default immunity from classic Doom.
  • FRIENDFOEMISSILE, which makes projectiles shot by friends harm enemies of the same species, and viceversa. Default MBF behaviour makes them immune due to being the same species.