Thing type flags

From Eternity Wiki
Jump to navigationJump to search

Thing type flags are properties that can be set on or off, to control special behavior. They belong to thing classes, such as Zombieman or BaronOfHell, and shouldn't be confused with the mapthing flags, which affect individual objects in a level, regardless of species (see ExtraData mapthing options for that type of flags).

Thingtype flags are used by the thingtype block in EDF, with the fields: flags, flags2, flags3, flags4, cflags, addflags and remflags. They are also used by the SetFlags and UnSetFlags codepointers.

The flags are grouped (currently) into four categories, because only 32 bits can enter a long integer block. This was once important for Eternity editing, such as via DeHackEd, but since the extension of EDF arguments to a runtime evaluation system, there is no longer any need to use the original restricted flags fields.

flags up to flags4 can only use bits from their own namespaces, while cflags, addflags and remflags combine all flags into a single namespace, excepting the flags bit SLIDE.

See also thinggroup for flags given to multiple classes of monsters with reciprocal relations (such as infighting).

Back to EDF thing reference

flags[edit]

Flag name Bit number Description
SPECIAL 0 Collectable item (can be picked up). Only used by items.

NOTE: items use a different height value for getting picked up, not their thingtype height. The actual gettable item height is defined globally in the EDF game properties.

SOLID 1 Blocks other objects.
SHOOTABLE 2 Can take damage and be targeted. All shootable monsters and objects (e.g. barrels) have this.
NOSECTOR 3 Not linked into sectors. This makes the thing fully invisible (even in the automap), but also subjects it to less obvious side effects. For sprite invisibility without these side effects, use DONTDRAW instead.

WARNING: do NOT change this at game time.

NOBLOCKMAP 4 Not linked into the blockmap. This makes the thing ignored by most of the physics, including collision with other things, hitscans and even moving surfaces. All basic projectiles and momentary visual effects have this flag. Non-solid decoration may also have this flag.

WARNING: do NOT change this at game time.

AMBUSH 5 For monsters: always in ambush mode (even if the editor flag is not set). Generally only useful if you want a certain species to always ignore remote player gunshots.
JUSTHIT 6 Internal monster combat flag. Monsters with this flag tend to attack immediately when first seeing player.
JUSTATTACKED 7 Internal monster combat flag, delays a bit before attacking. Generally unnoticeable.
SPAWNCEILING 8 Spawns on the ceiling instead of the floor. Used by all ceiling decorations (e.g. hanging bodies or chandeliers).
NOGRAVITY 9 Is not subject to gravity. Used by all flying monsters, ceiling decorations and flying projectiles.
DROPOFF 10 This flag allows the thing to step off ledges taller than 24 units. If you give it to walking monsters, they will fall off ledges. Necessary for the player and the projectiles. Not necessary, however, for floating monsters or bouncing objects.
PICKUP 11 Can pick up items. Currently only works on player class objects.
NOCLIP 12 Is not clipped against other objects or lines. This makes the object ghostly, like the player using the "noclip" cheat.
SLIDE 13 This flag has no effect. Use the flags3 bit SLIDE instead.
FLOAT 14 Has a floating monster behavior, like the Cacodemon. Combined with NOGRAVITY, it makes the monster fly freely (for flying players, use FLY instead).
TELEPORT 15 Semi-no-clipping behaviour. Can go over steps of any height, has other odd behaviors.
MISSILE 16 Is a projectile. Used by all such things.
DROPPED 17 Internal flag for dropped items (trooper clips, etc). Such an item can be crushed and will never respawn if dmflag implies that.
SHADOW 18 Renders as spectre fuzz. Monsters aiming at this thing will suffer inaccuracy.
NOBLOOD 19 Doesn't bleed when hit by hitscan attacks; spawns bullet puffs instead.
CORPSE 20 Internally set on corpses and may slide over ledges, stairs etc. Most importantly, VileChase can revive inert things with this flag set.
INFLOAT 21 Internal flag, used for floating monster AI.
COUNTKILL 22 Counts toward kill score when defeated, and is in other cases treated as a monster. Beware that removing this flag from a monster has side effects. To have a monster who doesn't count for kills, you need to use the KILLABLE flag instead.
COUNTITEM 23 Counts toward item score when collected. NOTE: it will NOT count if the item is specified to stay when picked up (e.g. keys and weapons in multiplayer).
SKULLFLY 24 Internal flag, used for charging monster (e.g. lost soul) maintenance.
NOTDMATCH 25 Is not spawned at level start in Deathmatch game modes. Used by all access keys because they're assumed to be already in players' possessions in Deathmatch.
TRANSLATION1 26 Remaps green to gray in sprites.
TRANSLATION2 27 Remaps green to brown, or gray to red if combined with TRANSLATION1.
TOUCHY 28 Dies on contact with solid things of other species, excepting Lost Souls and Pain Elementals.
BOUNCES 29 Bounces. Can be combined with other flags for various effects. See below.
FRIEND 30 Friendly monster, MBF/Eternity variety.
TRANSLUCENT 31 Renders with BOOM-style translucency, controlled by user translucency level setting.
Flag name Bit number Description
  • BOUNCES

Bounces. Different behaviors may be achieved by combining with other flags:

BOUNCES+MISSILE: as a missile, bounces off floors and ceilings but explodes everywhere else. Useful for not allowing the BFG to conveniently explode.
BOUNCES+NOGRAVITY: bounces off all surfaces. Can be used for projectiles despite lack of MISSILE flag.
BOUNCES+FLOAT: usable for monsters, letting them pogo-jump to most heights.
BOUNCES+FLOAT+DROPOFF: even higher jumping.
BOUNCES: can be used for projectiles, allowing grenades to be implemented.

flags2[edit]

Flag name Bit number Description
LOGRAV 0 Is subject to 1/3rd normal gravity. Does not combine with BOUNCES.
NOSPLASH 1 Cannot trigger terrain effects.
NOSTRAFE 2 Never backs out from melee attackers, even if enabled in the monster settings in the menu.
NORESPAWN 3 Never respawns, even in Nightmare skill or with -respawn active.
ALWAYSRESPAWN 4 Always respawns regardless of skill or settings.
REMOVEDEAD 5 Is randomly removed from the level after death, instead of respawning. Not for player class objects.
NOTHRUST 6 Is not affected by BOOM environmental pushers (wind, force points, conveyors, water currents).
NOCROSS 7 Cannot trigger DOOM-style walk-over linedef specials.
JUMPDOWN 8 When friendly, may jump down off ledges to follow player, subject to dog jumping setting.
PUSHABLE 9 Can be pushed, like the Heretic pods.
MAP07BOSS1 10 Is a boss for the MAP07_1 boss special (tag 666), like the Mancubi in original DOOM 2.
MAP07BOSS2 11 Is a boss for the MAP07_2 boss special (tag 667), like the Arachnotrons in original DOOM 2.
E1M8BOSS 12 Is a boss for the E1M8 boss special (tag 666), like the Barons in original DOOM 1.
E2M8BOSS 13 Is a boss for the E2M8 boss special (exits level, or tag 666 in Heretic).
E3M8BOSS 14 Is a boss for the E3M8 boss special (exits level, or tag 666 in Heretic).
BOSS 15 Roars loudly, and is immune to blast radii and certain other attacks.
E4M6BOSS 16 Is a boss for the E4M6 boss special (tag 666).
E4M8BOSS 17 Is a boss for the E4M8 boss special (tag 666).
FOOTCLIP 18 Is subject to liquid terrain effects (lowered view point, missiles, feet are clipped).
FLOATBOB 19 Bobs perpetually on the z axis, like the Heretic and Hexen powerups.
DONTDRAW 20 Completely invisible, but without the side effects of NOSECTOR.
SHORTMRANGE 21 Has a limited missile range, like the Arch-vile.
LONGMELEE 22 Has a restricted non-missile proximity area, like the Revenant.
RANGEHALF 23 Considers only half the distance to its target, giving a higher missile attack probability.
HIGHERMPROB 24 Additional boost to missile attack probability at a distance, as with the Cyberdemon.
CANTLEAVEFLOORPIC 25 Cannot cross into sectors with a different floor flat. Useful for water monsters.
SPAWNFLOAT 26 Spawns at a randomized height within the range of its sector, like the Heretic Gargoyle.
INVULNERABLE 27 Takes no damage if damage is less than 10000. Does not react to damage.
DORMANT 28 Spawns as dormant and invulnerable regardless of mapthing flags. Must be awakened by a script or line special.
SEEKERMISSILE 29 Is considered a homing projectile, for reflection purposes.
DEFLECTIVE 30 If paired with REFLECTIVE, causes reflection at a wide angle.
REFLECTIVE 31 Reflects projectiles. Still takes damage unless also INVULNERABLE.
Flag name Bit number Description

flags3[edit]

Flag name Bit number Description
GHOST 0 Is a Heretic ghost. Translucent, monsters will aim inaccurately, and THRUGHOST missiles will pass through.
THRUGHOST 1 Missiles with this flag will pass through objects with the GHOST flag.
NODMGTHRUST 2 Will not inflict thrust on objects that this object inflicts damage upon directly.
ACTSEESOUND 3 Has a 50% chance of making its seesound instead of its activesound at each opportunity.
LOUDACTIVE 4 Makes activesound at full volume.
E5M8BOSS 5 Is a boss for the E5M8 boss special (tag 666). Used by Maulotaurs.
DMGIGNORED 6 Monsters will never retaliate against this object when it damages them, as with Arch-viles.
BOSSIGNORE 7 (deprecated)Will not attack other species with this flag. This flag is deprecated and should not be used in EDF.
SLIDE 8 Slides against walls when moving into them; used by players and Heretic pods.
TELESTOMP 9 Can telefrag shootable objects, including monsters and players.
WINDTHRUST 10 Is affected by Heretic wind sector effects.
FIREDAMAGE 11 Damage inflicted directly by this object will be changed to use the Fire damagetype.
KILLABLE 12 Is a living monster, but does not count for kill percentage. Used instead of COUNTKILL for Lost Souls.
DEADFLOAT 13 NOGRAVITY flag is not removed when this object dies, as with Lost Souls.
NOTHRESHOLD 14 Turns against most recent attacker instantly, as with Arch-viles and in Quake AI.
FLOORMISSILE 15 Missiles with this flag can hug the floor and move up steps.
SUPERITEM 16 An item with this flag will only respawn if the super items respawn dmflag is asserted.
NOITEMRESP 17 Items with this flag never respawn, but cannot be crushed as with DROPPED.
SUPERFRIEND 18 Adds absolute loyalty to FRIEND monsters; will never retaliate if attacked by a friend.
INVULNCHARGE 19 Is invulnerable when SKULLFLY-charging, as with Maulotaurs.
EXPLOCOUNT 20 Missile will not explode if counter 1 < counter 2, but increments counter 1. Used by Iron Lich tornadoes.
CANNOTPUSH 21 Is unable to push objects with the PUSHABLE flag.
TLSTYLEADD 22 Uses additive translucency as determined by the thingtype's alpha property.
SPACMONSTER 23 Can activate parameterized linedefs which are marked with the MONSTER special activation flag.
SPACMISSILE 24 Can activate parameterized linedefs which are marked with the MISSILE special activation flag.
NOFRIENDDMG 25 Does not take damage from FRIEND objects, excepting possibly itself.
3DDECORATION 26 Object clips missiles at its normal height even when comp_theights is off. Used by DOOM decor objects.
ALWAYSFAST 27 Always exhibits -fast/Nightmare increased reaction time and attack rate in all skill levels.
PASSMOBJ 28 Is considered fully three dimensional when comp_overunder is off (3D object clipping enabled).
DONTOVERLAP 29 Tries to avoid overlapping with other objects even when 3D object clipping is enabled.
CYCLEALPHA 30 alpha will cycle continuously if alphavelocity is greater than zero.
RIP 31 Missile will pass through SHOOTABLE objects, dealing damage repeatedly as long as contact is sustained.
Flag name Bit number Description

flags4[edit]

Flag name Bit number Description
AUTOTRANSLATE 0 Adapts a built-in palette translation if spawned in games other than Doom; used by EE objects such as MBFHelperDog.
NORADIUSDMG 1 Object will not take radius damage from most sources.
FORCERADIUSDMG 2 As an inflictor, forces all objects (including BOSS and NORADIUSDMG) to take radius damage.
LOOKALLAROUND 3 Has a 360-degree field of vision, same as monsters given the AMBUSH flag after hearing a shot.
NODAMAGE 4 Is invulnerable to damage < 10000, but still reacts as if damage has been taken (thrust, blood, and pain).
SYNCHRONIZED 5 Will not have its spawnstate tics randomized when spawned on the map at level start. SVN r1096+
NORANDOMIZE 6 As a missile or bouncing explosive, will not have its spawnstate and first deathstate tics randomized. Note that the semantics of this flag are opposite of ZDoom, due to compatibility requirements. SVN r1096+
BRIGHT 7 Will always be full-bright regardless of current frame setting.
FLY 8 Object is flying. Used by the player when under the effect of a flight artifact.
NORADIUSHACK 9 Don't emulate MBF behaviour where bouncing explosives can hurt any actor, including bosses. Setting this causes the explosive to only affect bosses if FORCERADIUSDMG is also set.

Note that MBF emulation protects Cyberdemons from other Cyberdemons' bouncing explosive attacks. It doesn't do the same for members of any other species.

NOSOUNDCUTOFF 10 Actor can play any number of sounds.
RAVENRESPAWN 11 Specifies that a thingtype will undergo Raven-style (Heretic/Hexen) item respawning when picked up with item respawning enabled. Items which use this flag can define two special DECORATE-style states, one for the state sequence to use when waiting to respawn after being picked up, and another to be used when the object is going to be removed permanently. These states are specified as in the following two definitions from heretic/things.edf:
thingtype HereticPickup
{
  cflags   SPECIAL|RAVENRESPAWN
  seesound ht_respawn
  states
  @"
  Pickup.Respawn:
    ACLO E        1400 A_HideThing
    ACLO A        4    A_RestoreSpecialThing1
    ACLO BABCBCDC 4
    ACLO D        4    A_RestoreSpecialThing2
    stop
  "@
}
thingtype HereticArtifact
{
  cflags   SPECIAL|RAVENRESPAWN
  seesound ht_respawn
  states
  @"
  Pickup.Respawn:
    ACLO DCDCBCBABA 3
    ACLO A          1400 A_HideThing
    ACLO A          3    A_UnHideThing
    ACLO BABCBCDC   3
    ACLO D          3    A_RestoreArtifact
    stop
  Pickup.Remove:
    ACLO DCDCBCBABA 3
    stop
  "@
}

When Pickup.Remove is not defined by such a thingtype, it will simply be removed from the level immediately, like a Doom-style item would.

Five new action functions are provided that support this feature: HideThing, UnHideThing, RestoreArtifact, RestoreSpecialThing1, RestoreSpecialThing2

NOTSHAREWARE 12 Things with this flag will not spawn on a map if the current gamemode is a shareware gamemode.
NOTORQUE 13 Things with this flag are never subject to MBF torque simulation, even if it is enabled via the compatibility vector.
ALWAYSTORQUE 14 Things with this flag are always subject to MBF torque simulation, even if it is disabled via the compatibility vector.
NOZERODAMAGE 15 Projectiles given this flag don't inflict damage on objects if the damage they would inflict is 0. This prevents pain animation, anger, and spawning of any blood (in Heretic eventually, unfinished as of yet).
TLSTYLESUB 16 Thingtype uses subtractive blending.
TOTALINVISIBLE 17 Thing is "totally" invisible to monsters. For players, this means that monsters will not wake up unless a noise is made. Once enemies are alerted via noise being made, they will aim inaccurately with the same effect as the SHADOW flag. This flag does not imply that the thing displays no sprite, however. Combine with DONTDRAW to accomplish that effect. Note that "AMBUSH" things do not wake up unless they take direct damage, since they also do not hear the player.
DRAWSBLOOD 18 Missile draws blood.
SPACPUSHWALL 19 Objects of this type can trigger push walls.
NOSPECIESINFIGHT 20 Monster won't infight with others of the same species, even if suffering damage. See thinggroup for related infighting settings.
HARMSPECIESMISSILE 21 Monster will be harmed by projectile attacks coming from the same species. Again, see thinggroup.
FRIENDFOEMISSILE 22 Friends of this thingtype may harm (by projectiles) enemies of the same species. By default they are immune.
BLOODLESSIMPACT 23 Prevents Heretic-style projectiles from producing blood when hitting this thing (assuming it sheds blood).
HERETICBOUNCES 24 Thing bounces like the Heretic mace spheres: if it's also a MISSILE without NOCLIP and touches the floor, its vertical velocity is reversed, and it's sent to its deathstate. Actual bouncing behavior will then need to be managed in the DeathBallImpact, MaceBallImpact and MaceBallImpact2 codepointers (or other user behavior) called during the death state, which may even remove this flag among other things.
MONSTERPASS 25 Thing passes through monster-blocking lines, without being a friend, projectile or a player.
LOWAIMPRIO 26 Low autoaim priority, like friends or Heretic pods.
STICKYCARRY 27 Can carry other things on top of it. In addition, their movement acceleration is impeded while standing on it. You can use this to ride cacodemons.
SETTARGETONDEATH 28 Guarantees that their blame target is set properly upon death. This helps with chain reactions such as Heretic pods, where you can really get a frag for killing a player from a chain reaction.
SLIDEOVERTHINGS 29 If on top of other things, keep sliding without stopping.
UNSTEPPABLE 30 Thing cannot be stepped on like a stair. This is typical with all Heretic solid things.
RANGEEIGHTH 31 Consider range to target as 1/8 of its actual range when determining whether to attack during a Chase state. Typical due to Strife-specific behaviour.
Flag name Bit number Description

flags5[edit]

Flag name Bit number Description
NOTAUTOAIMED 0 Not subject to autoaiming. Useful for optional destructibles which you don't want to capture player's autoaim instead of other monsters, while also avoiding the side effects of using FRIEND for this
Flag name Bit number Description