Thing type flags
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're also used by the SetFlags and UnSetFlags codepointers.
The flags (or bits) are grouped (currently) into four categories, because only 32 bits can enter a long integer block. There are for now 101 defined thingtype bits in Eternity.
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.
flags
Flag name | Bit number | Decimal | Hexadecimal | Description |
---|---|---|---|---|
SPECIAL | 0 | 1 | 0x01 | Collectable item (can be picked up). |
SOLID | 1 | 2 | 0x02 | Blocks other objects. |
SHOOTABLE | 2 | 4 | 0x04 | Can take damage and be targeted. |
NOSECTOR | 3 | 8 | 0x08 | Not linked into sectors. Invisible, but can be hit. Never appears in automap, even with cheats. |
NOBLOCKMAP | 4 | 16 | 0x10 | Not linked into the blockmap. Cannot be hit, but can hit other objects. |
AMBUSH | 5 | 32 | 0x20 | Always has "AMBUSH" mapthing flag behavior. Will only wake up when an enemy is seen. |
JUSTHIT | 6 | 64 | 0x40 | Internal flag, monster will attack as soon as it is activated. |
JUSTATTACKED | 7 | 128 | 0x80 | Internal flag, delays a bit before attacking. |
SPAWNCEILING | 8 | 256 | 0x100 | Spawns on the ceiling instead of the floor. |
NOGRAVITY | 9 | 512 | 0x200 | Is not subject to gravity. |
DROPOFF | 10 | 1024 | 0x400 | Can pass over ledges higher than 24 units. |
PICKUP | 11 | 2048 | 0x800 | Can pick up items. Currently only works on player class objects. |
NOCLIP | 12 | 4096 | 0x1000 | Is not clipped against other objects or lines. |
SLIDE | 13 | 8192 | 0x2000 | For compatibility only, has no effect. Use flags3 bit SLIDE instead. |
FLOAT | 14 | 16384 | 0x4000 | Has floating monster behavior. |
TELEPORT | 15 | 32768 | 0x8000 | Unused vanilla flag. Can go over steps of any height, has other odd behaviors. Use not recommended. |
MISSILE | 16 | 65536 | 0x10000 | Is a projectile. |
DROPPED | 17 | 131072 | 0x20000 | Internal flag for dropped items (trooper clips, etc). Can be crushed, never respawns. |
SHADOW | 18 | 262144 | 0x40000 | Renders as spectre fuzz. Monsters aiming at this thing will suffer inaccuracy. |
NOBLOOD | 19 | 524288 | 0x80000 | Doesn't bleed when hit by tracer attacks; spawns bullet puffs instead. |
CORPSE | 20 | 1048576 | 0x100000 | Is a corpse and may slide over ledges. Also checked by Arch-viles. |
INFLOAT | 21 | 2097152 | 0x200000 | Internal flag, used for floating monster AI. |
COUNTKILL | 22 | 4194304 | 0x400000 | Counts toward kill score when defeated, and is considered a valid target. See also KILLABLE. |
COUNTITEM | 23 | 8388608 | 0x800000 | Counts toward item score when collected. May respawn if item respawning is enabled. |
SKULLFLY | 24 | 16777216 | 0x1000000 | Internal flag, used for charging monster maintenance. |
NOTDMATCH | 25 | 33554432 | 0x2000000 | Is not spawned at level start in Deathmatch game modes. |
TRANSLATION1 | 26 | 67108864 | 0x4000000 | Remaps green to gray in sprites. |
TRANSLATION2 | 27 | 134217728 | 0x8000000 | Remaps green to brown, or gray to red if combined with TRANSLATION1. |
TOUCHY | 28 | 268435456 | 0x10000000 | Dies on contact with solid things of other species, excepting Lost Souls and Pain Elementals. |
BOUNCES | 29 | 536870912 | 0x20000000 | Bounces. Can be combined with other flags for various effects. See below. |
FRIEND | 30 | 1073741824 | 0x40000000 | Friendly monster, MBF/Eternity variety. |
TRANSLUCENT | 31 | 2147483648 | 0x80000000 | Renders with BOOM-style translucency, controlled by user translucency level setting. |
Flag name | Bit number | Decimal | Hexadecimal | 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
Flag name | Bit number | Decimal | Hexadecimal | Description |
---|---|---|---|---|
LOGRAV | 0 | 1 | 0x01 | Is subject to 1/3rd normal gravity. Does not combine with BOUNCES. |
NOSPLASH | 1 | 2 | 0x02 | Cannot trigger terrain effects. |
NOSTRAFE | 2 | 4 | 0x04 | Never uses MBF strafing logic even if enabled. |
NORESPAWN | 3 | 8 | 0x08 | Never respawns, even in Nightmare skill or with -respawn active. |
ALWAYSRESPAWN | 4 | 16 | 0x10 | Always respawns regardless of skill or settings. |
REMOVEDEAD | 5 | 32 | 0x20 | Is randomly removed from the level after death, instead of respawning. Not for player class objects. |
NOTHRUST | 6 | 64 | 0x40 | Is not affected by BOOM environmental pushers (wind, force points, conveyors, water currents). |
NOCROSS | 7 | 128 | 0x80 | Cannot trigger DOOM-style walk-over linedef specials. |
JUMPDOWN | 8 | 256 | 0x100 | When friendly, may jump down off ledges to follow player, subject to dog jumping setting. |
PUSHABLE | 9 | 512 | 0x200 | Can be pushed, like Heretic pods. |
MAP07BOSS1 | 10 | 1024 | 0x400 | Is a boss for the MAP07_1 boss special (tag 666). |
MAP07BOSS2 | 11 | 2048 | 0x800 | Is a boss for the MAP07_2 boss special (tag 667). |
E1M8BOSS | 12 | 4096 | 0x1000 | Is a boss for the E1M8 boss special (tag 666). |
E2M8BOSS | 13 | 8192 | 0x2000 | Is a boss for the E2M8 boss special (exits level, or tag 666 in Heretic). |
E3M8BOSS | 14 | 16384 | 0x4000 | Is a boss for the E3M8 boss special (exits level, or tag 666 in Heretic). |
BOSS | 15 | 32768 | 0x8000 | Roars loudly, and is immune to blast radii and certain other attacks. |
E4M6BOSS | 16 | 65536 | 0x10000 | Is a boss for the E4M6 boss special (tag 666). |
E4M8BOSS | 17 | 131072 | 0x20000 | Is a boss for the E4M8 boss special (tag 666). |
FOOTCLIP | 18 | 262144 | 0x40000 | Is subject to liquid terrain effects (lowered view point, missiles, feet are clipped). |
FLOATBOB | 19 | 524288 | 0x80000 | Bobs perpetually on the z axis, like Heretic and Hexen powerups. |
DONTDRAW | 20 | 1048576 | 0x100000 | Doesn't generate a sprite (invisible, but appears on automap). |
SHORTMRANGE | 21 | 2097152 | 0x200000 | Has a limited missile range, like the Arch-vile. |
LONGMELEE | 22 | 4194304 | 0x400000 | Has a restricted non-missile proximity area, like the Revenant. |
RANGEHALF | 23 | 8388608 | 0x800000 | Considers only half the distance to its target, giving a higher missile attack probability. |
HIGHERMPROB | 24 | 16777216 | 0x1000000 | Additional boost to missile attack probability at a distance, as with the Cyberdemon. |
CANTLEAVEFLOORPIC | 25 | 33554432 | 0x2000000 | Cannot cross into sectors with a different floor flat. Useful for water monsters. |
SPAWNFLOAT | 26 | 67108864 | 0x4000000 | Spawns at a randomized height within the range of its sector, like Heretic Gargoyle. |
INVULNERABLE | 27 | 134217728 | 0x8000000 | Takes no damage if damage is less than 10000. Does not react to damage. |
DORMANT | 28 | 268435456 | 0x10000000 | Spawns as dormant and invulnerable regardless of mapthing flags. Must be awakened by script or line special. |
SEEKERMISSILE | 29 | 536870912 | 0x20000000 | Is considered a homing projectile, for reflection purposes. |
DEFLECTIVE | 30 | 1073741824 | 0x40000000 | If paired with REFLECTIVE, causes reflection at a wide angle. |
REFLECTIVE | 31 | 2147483648 | 0x80000000 | Reflects projectiles. Still takes damage unless also INVULNERABLE. |
Flag name | Bit number | Decimal | Hexadecimal | Description |
Flags3
- 1 GHOST
Heretic-style ghost: stealth for the monsters, and passable by THRUGHOST objects
- 2 THRUGHOST
Passes through GHOST objects ("man-made" projectile in Heretic)
- 4 NODMGTHRUST
Cannot thrust objects against which this one causes damage.
- 8 ACTSEESOUND
50% chance to use the sight sound instead of the active sound when mumbling around.
- 16 LOUDACTIVE
Makes the active sound at full volume.
- 32 E5M8BOSS
Used for Maulotaurs, active in E5M8 and tag 666.
- 64 DMGIGNORED
"Feared" by other monsters: they won't fight this one if provoked.
- 128 BOSSIGNORE
Won't attack other monsters with BOSSIGNORE. This flag is deprecated and should not be used by EDF modifications. It will be replaced with generalized control of infighting behavior.
- 256 SLIDE
Can slide along walls, when pushing on them, like the player and Heretic pods
- 512 TELESTOMP
Can telefrag.
- 0x400 WINDTHRUST
Can be pushed by Heretic winds
- 0x800 FIREDAMAGE
Does fire type damage
- 0x1000 KILLABLE
Safety flag required to be used when COUNTKILL is not used. Allows the monster to behave normally without counting it towards the kill ratio.
- 0x2000 DEADFLOAT
Doesn't lose gravity when killed.
- 0x4000 NOTHRESHOLD
Thing always turns on the latest attacked, like in Quake.
- 0x8000 FLOORMISSILE
The missile hugs the floor.
- 0x10000 SUPERITEM
Super powerup: only respawns if a special dmflag is enabled.
- 0x20000 NOITEMRESP
Never respawns, and unlike DROPPED, won't be crushed by sectors.
- 0x40000 SUPERFRIEND
Loyal friend, never retaliates on being hit.
- 0x80000 INVULNCHARGE
Invulnerable when SKULLFLY is set (when charging)
- 0x100000 EXPLOCOUNT
Missile won't blow up if Counter 1 < Counter 2, instead it will increment Counter 1
- 0x200000 CANNOTPUSH
Cannot push PUSHABLE objects
- 0x400000 TLSTYLEADD
Uses additive translucency, can be combined with the alpha property
- 0x800000 SPACMONSTER
Can activate parameterized line specials with the MONSTER flag
- 0x1000000 SPACMISSILE
Can activate parameterized line specials with the MISSILE flag
- 0x2000000 NOFRIENDDMG
Won't take damage from FRIEND objects
- 0x4000000 3DDECORATION
Used for Doom decoration, which acts dually as a sentient actor blocker and free for projectiles
- 0x8000000 ALWAYSFAST
Always accelerated in speed and reaction despite the skill level
- 0x10000000 PASSMOBJ
Fully 3d, if z-clipping is enabled
- 0x20000000 DONTOVERLAP
Tries to avoid overlapping even if z-clipping is enabled
- 0x40000000 CYCLEALPHA
Cycles the alpha, depending on the alphavelocity property
- 0x80000000 RIP
As a missile, goes through damageable objects, dealing them pain repeatably while in them
Flags4
- 1 AUTOTRANSLATE
Automatically translates the colors of the sprite to current game's closest colors, if they belonged to Doom and are spawned in another game. Needed for a few objects, such as the MBFHelperDog, whose sprites are designed to use the Doom's palette, but are allowed to be spawned in Heretic.
- 2 NORADIUSDMG
Doesn't take radius damage.
- 4 FORCERADIUSDMG
Always takes radius damage.
- 8 LOOKALLAROUND
Sees targets in any direction during Look frames, similar to how they behave when under AMBUSH setting after hearing a shot.
- 16 NODAMAGE
Takes no damage but may still enter pain frames (unlike the invulnerability behavior).