Thing type flags: Difference between revisions

From Eternity Wiki
Jump to navigationJump to search
(→‎Flags3: BOSSIGNORE is deprecated.)
(Cleanup work on flags - part 1.)
Line 5: Line 5:
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.
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 namespaces, while '''cflags''', '''addflags''' and '''remflags''' cover any of them.
'''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=
 
*1''' SPECIAL'''
=flags=
*''' SPECIAL''' (1; 0x01)
Collectable item (can be picked up).
Collectable item (can be picked up).
*2 '''SOLID'''
*'''SOLID''' (2; 0x02)
Blocks other objects.
Blocks other objects.
*4 '''SHOOTABLE'''
*'''SHOOTABLE''' (4; 0x04)
Can take damage and be targeted.
Can take damage and be targeted.
*8 '''NOSECTOR'''
*'''NOSECTOR''' (8; 0x08)
Not linked within a sector. Invisible but can be hit. Never appears in the automap, even with the cheat.
Not linked into sectors. Invisible, but can be hit. Never appears in the automap, even with cheats.
*16''' NOBLOCKMAP'''
*''' NOBLOCKMAP''' (16; 0x10)
Not linked within a blockmap. Cannot be hit but can hit.
Not linked into the blockmap. Cannot be hit, but can hit other objects.
*32 '''AMBUSH'''
*'''AMBUSH''' (32; 0x20)
Always with the "ambush" flag, regardless of map thing setting. Will only wake up when encountered.
Always has "AMBUSH" mapthing flag behavior, regardless of mapthing setting. Will only wake up when an enemy is seen.
*64 '''JUSTHIT'''
*'''JUSTHIT''' (64; 0x40)
Attacks as soon as activated and seeing the target.
Internal flag, monster will attack as soon as it is activated.
*128 '''JUSTATTACKED'''
*'''JUSTATTACKED''' (128; 0x80)
Delays a bit before attacking.
Internal flag, delays a bit before attacking.
*256 '''SPAWNCEILING'''
*'''SPAWNCEILING''' (256; 0x100)
Spawns to ceiling instead of floor. Spawn height calculation is done from ceiling.
Spawns on the ceiling instead of the floor.
*512 '''NOGRAVITY'''
*'''NOGRAVITY''' (512; 0x200)
Doesn't fall.
Is not subject to gravity.
*0x400 '''DROPOFF'''
*'''DROPOFF''' (1024; 0x400)
Can pass ledges or gaps deeper than 24.
Can pass over ledges higher than 24 units.
*0x800 '''PICKUP'''
*'''PICKUP''' (2048; 0x800)
Picks up items.
Can pick up items. Currently only works on player class objects.
*0x1000 '''NOCLIP'''
*'''NOCLIP''' (4096; 0x1000)
Walks through all solids and can't activate walk line specials
Object is not clipped against other objects or lines.
*0x2000 '''SLIDE'''
*'''SLIDE''' (8192; 0x2000)
No effect. Use the SLIDE flag from the third list.
Provided for compatibility only, has no effect. Use '''flags3''' bit '''SLIDE''' instead.
*0x4000 '''FLOAT'''
*'''FLOAT''' (16384; 0x4000)
Floating monster behavior.
Object has floating monster behavior.
*0x8000 '''TELEPORT'''
*'''TELEPORT''' (32768; 0x8000)
Can go past steps of any height. May need DROPOFF in order for monsters to actually do it.
Unused vanilla flag. Can go over steps of any height and has other odd behaviors. Use is not recommended.
*0x10000 '''MISSILE'''
*'''MISSILE''' (65536; 0x10000)
Is a projectile and acts as such (not required for those with BOUNCES). If a shootable object placed on the map, it will be propelled by first shot without stopping, until it hits a wall and dies on contact.
Object is a projectile.
*0x20000 '''DROPPED'''
*'''DROPPED''' (131072; 0x20000)
Set internally for items dropped on death (such as trooper ammo clips).
Internal flag for items dropped on death (such as trooper ammo clips). Items with this flag are removed when crushed, and never respawn.
*0x40000 '''SHADOW'''
*'''SHADOW''' (262144; 0x40000)
Set for spectres and such. Fuzz effect and monster accuracy confusion.
Object renders with Spectre fuzz effect. Monsters aiming at this thing will suffer inaccuracy.
*0x80000 '''NOBLOOD'''
*'''NOBLOOD''' (524288; 0x80000)
Does not bleed when gun-shot. Spawns normal dust and puff.
Does not bleed when hit with tracer attacks. Spawns bullet puffs instead.
*0x100000 '''CORPSE'''
*'''CORPSE''' (1048576; 0x100000)
Slides helplessly over ledges just like the Doom corpses (effect unnoticeable if the "torque" gameplay setting is enabled).
Object is a corpse and may slide over ledges. Also checked during Arch-vile resurrections.
*0x200000 '''INFLOAT'''
*'''INFLOAT''' (2097152; 0x200000)
Internal, used for floating monsters' maintenance.
Internal, used for floating monster AI maintenance.
*0x400000 '''COUNTKILL'''
*'''COUNTKILL''' (4194304; 0x400000)
Count towards kill score (if defeated). Warning: if COUNTKILL is to be disabled, use KILLABLE instead.
Monster counts towards kill score when defeated, and is considered a valid target for enemies. To obtain normal monster behavior without incrementing the kill count, use the '''KILLABLE''' flag instead.
*0x800000 '''COUNTITEM'''
*'''COUNTITEM''' (8388608; 0x800000)
Count towards item score (if picked up).
Item counts towards item score.
*0x1000000 '''SKULLFLY'''
*'''SKULLFLY''' (16777216; 0x1000000)
Internal, used for charging monsters' maintenance.
Internal, used for charging monster maintenance.
*0x2000000 '''NOTDMATCH'''
*'''NOTDMATCH''' (33554432; 0x2000000)
Never placed in deathmatch from a mapthing.
Object is not spawned in Deathmatch game modes.
*0x4000000 '''TRANSLATION1'''
*'''TRANSLATION1''' (67108864; 0x4000000)
Turn green into grey.
Remaps green to gray.
*0x8000000 '''TRANSLATION2'''
*'''TRANSLATION2''' (134217728; 0x8000000)
Turn green into brown, or grey into red.
Remaps green to brown, or gray to red (combine with '''TRANSLATION1''').
*0x10000000 '''TOUCHY'''
*'''TOUCHY''' (268435456; 0x10000000)
Dies on touch from different species, unless the participants are a pain elemental and a lost soul.
Dies on contact with a solid living object of any differing species. Lost Souls and Pain Elementals are considered mutually exempt.
*0x20000000 '''BOUNCES'''
*'''BOUNCES''' (536870912; 0x20000000)
Bounces. Subtle different behaviors may be achieved
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+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+NOGRAVITY: bounces off all surfaces. Can be used for projectiles despite lack of MISSILE flag.
Line 72: Line 73:
:BOUNCES+FLOAT+DROPOFF: even higher jumping.
:BOUNCES+FLOAT+DROPOFF: even higher jumping.
:BOUNCES: can be used for projectiles, allowing grenades to be implemented.
:BOUNCES: can be used for projectiles, allowing grenades to be implemented.
*0x40000000 '''FRIEND'''
*'''FRIEND''' (1073741824; 0x40000000)
Friendly monster, of MBF-Eternity variety.
Friendly monster, of MBF/Eternity variety.
*0x80000000 '''TRANSLUCENT'''
*'''TRANSLUCENT''' (2147483648; 0x80000000)
Boom style translucency.
Object renders with Boom-style translucency, controlled by the user translucency level setting.
=Flags2=
 
=flags2=
*1''' LOGRAV'''
*1''' LOGRAV'''
1/3 gravity. Doesn't work if BOUNCES is also set.
1/3 gravity. Doesn't work if BOUNCES is also set.

Revision as of 00:41, 3 March 2010

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

  • SPECIAL (1; 0x01)

Collectable item (can be picked up).

  • SOLID (2; 0x02)

Blocks other objects.

  • SHOOTABLE (4; 0x04)

Can take damage and be targeted.

  • NOSECTOR (8; 0x08)

Not linked into sectors. Invisible, but can be hit. Never appears in the automap, even with cheats.

  • NOBLOCKMAP (16; 0x10)

Not linked into the blockmap. Cannot be hit, but can hit other objects.

  • AMBUSH (32; 0x20)

Always has "AMBUSH" mapthing flag behavior, regardless of mapthing setting. Will only wake up when an enemy is seen.

  • JUSTHIT (64; 0x40)

Internal flag, monster will attack as soon as it is activated.

  • JUSTATTACKED (128; 0x80)

Internal flag, delays a bit before attacking.

  • SPAWNCEILING (256; 0x100)

Spawns on the ceiling instead of the floor.

  • NOGRAVITY (512; 0x200)

Is not subject to gravity.

  • DROPOFF (1024; 0x400)

Can pass over ledges higher than 24 units.

  • PICKUP (2048; 0x800)

Can pick up items. Currently only works on player class objects.

  • NOCLIP (4096; 0x1000)

Object is not clipped against other objects or lines.

  • SLIDE (8192; 0x2000)

Provided for compatibility only, has no effect. Use flags3 bit SLIDE instead.

  • FLOAT (16384; 0x4000)

Object has floating monster behavior.

  • TELEPORT (32768; 0x8000)

Unused vanilla flag. Can go over steps of any height and has other odd behaviors. Use is not recommended.

  • MISSILE (65536; 0x10000)

Object is a projectile.

  • DROPPED (131072; 0x20000)

Internal flag for items dropped on death (such as trooper ammo clips). Items with this flag are removed when crushed, and never respawn.

  • SHADOW (262144; 0x40000)

Object renders with Spectre fuzz effect. Monsters aiming at this thing will suffer inaccuracy.

  • NOBLOOD (524288; 0x80000)

Does not bleed when hit with tracer attacks. Spawns bullet puffs instead.

  • CORPSE (1048576; 0x100000)

Object is a corpse and may slide over ledges. Also checked during Arch-vile resurrections.

  • INFLOAT (2097152; 0x200000)

Internal, used for floating monster AI maintenance.

  • COUNTKILL (4194304; 0x400000)

Monster counts towards kill score when defeated, and is considered a valid target for enemies. To obtain normal monster behavior without incrementing the kill count, use the KILLABLE flag instead.

  • COUNTITEM (8388608; 0x800000)

Item counts towards item score.

  • SKULLFLY (16777216; 0x1000000)

Internal, used for charging monster maintenance.

  • NOTDMATCH (33554432; 0x2000000)

Object is not spawned in Deathmatch game modes.

  • TRANSLATION1 (67108864; 0x4000000)

Remaps green to gray.

  • TRANSLATION2 (134217728; 0x8000000)

Remaps green to brown, or gray to red (combine with TRANSLATION1).

  • TOUCHY (268435456; 0x10000000)

Dies on contact with a solid living object of any differing species. Lost Souls and Pain Elementals are considered mutually exempt.

  • BOUNCES (536870912; 0x20000000)

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.
  • FRIEND (1073741824; 0x40000000)

Friendly monster, of MBF/Eternity variety.

  • TRANSLUCENT (2147483648; 0x80000000)

Object renders with Boom-style translucency, controlled by the user translucency level setting.

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