Thing type flags

From Eternity Wiki
Revision as of 02:16, 3 March 2010 by Quasar (talk | contribs) (Table test for flags.)
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'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

  • 1 LOGRAV

1/3 gravity. Doesn't work if BOUNCES is also set.

  • 2 NOSPLASH

Doesn't produce terrain effects

  • 4 NOSTRAFE

Never uses advanced strafe logic

  • 8 NORESPAWN

Never respawns

  • 16 ALWAYSRESPAWN

Always respawns, regardless of difficulty level

  • 32 REMOVEDEAD

Forces disappearance after its death, and not to be used for player avatars.

  • 64 NOTHRUST

Unaffected by Boom environmental pushers (wind, force points, conveyors, water currents).

  • 128 NOCROSS

Cannot trigger walkover linedefs.

  • 256 JUMPDOWN

As a FRIEND, may jump down ledges to follow players

  • 512 PUSHABLE

Can be pushed, like the Heretic pods.

  • 0x400 MAP07BOSS1

Used for Mancubi, and checked by the BossDeath codepointer, active in MAP07 for tag 666.

  • 0x800 MAP07BOSS2

Used for Arachnotrons, active in MAP07 for tag 667

  • 0x1000 E1M8BOSS

Used for Barons of Hell and Iron Liches, active in E1M8 for tag 666

  • 0x2000 E2M8BOSS

Used for Cyberdemons and Maulotaurs, active in E2M8 for level exit or tag 666 depending on game

  • 0x4000 E3M8BOSS

Used for Spiderdemons and D'sparil, active in E3M8 for level exit or tag 666, depending on game

  • 0x8000 BOSS

Roars loudly and is immune to radius and certain other attacks.

  • 0x10000 E4M6BOSS

Used for Cyberdemons, active in E4M6 and tag 666

  • 0x20000 E4M8BOSS

Used for Spiderdemons and Iron Liches, active in E4M8 and tag 666

  • 0x40000 FOOTCLIP

Allows Heretic-style water feet sinking into water, and view going down if under camera.

  • 0x80000 FLOATBOB

Allows Heretic-style object bobbing.

  • 0x100000 DONTDRAW

Invisible, but unlike NOSECTOR, may appear on automap.

  • 0x200000 SHORTMRANGE

Has a limited missile range, like the Archvile.

  • 0x400000 LONGMELEE

Has a restricted non-missile proximity area, like the Revenant.

  • 0x800000 RANGEHALF

Treats itself as half as far from the target as it is, resulting in slightly higher attack chance.

  • 0x1000000 HIGHERMPROB

Higher attack chance.

  • 0x2000000 CANTLEAVEFLOORPIC

Cannot leave the floor texture from where it's placed. Useful for water monsters.

  • 0x4000000 SPAWNFLOAT

Spawns at random z coordinates within the sector.

  • 0x8000000 INVULNERABLE

Can't be damaged but can be targeted (unlike SHOOTABLE)

  • 0x10000000 DORMANT

Eligible for the mapthing Dormant flag, and script-wise awakening.

  • 0x20000000 SEEKERMISSILE

Eligible for the Tracer, GenTracer, HticTracer and WhirlwindSeek codepointers, and the homing setting for MissileAttack etc.

  • 0x40000000 DEFLECTIVE

Needs to be paired with REFLECTIVE, and sets the object invulnerable and deflecting the projectiles at a wide angle

  • 0x80000000 REFLECTIVE

Reflects projectiles back, but still takes damage

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).