Thing type flags: Difference between revisions
m (→flags4: added specif) |
(→flags4: Added Bifrost and before-it flags) |
||
Line 707: | Line 707: | ||
Note that MBF emulation protects Cyberdemons from other Cyberdemons' bouncing explosive attacks. It doesn't do the same for members of any other species. | Note that MBF emulation protects Cyberdemons from other Cyberdemons' bouncing explosive attacks. It doesn't do the same for members of any other species. | ||
|-style="background-color: #F5F5F5" | |||
|'''NOSOUNDCUTOFF''' | |||
|10 | |||
|1024 | |||
|0x400 | |||
|Actor can play any number of sounds. | |||
|-style="background-color: #D9D9D9" | |||
|'''RAVENRESPAWN''' | |||
|11 | |||
|2048 | |||
|0x800 | |||
|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]] | |||
|-style="background-color: #F5F5F5" | |||
|'''NOTSHAREWARE''' | |||
|12 | |||
|4096 | |||
|0x1000 | |||
|Things with this flag will not spawn on a map if the current gamemode is a shareware gamemode. | |||
|-style="background-color: #D9D9D9" | |||
|'''NOTORQUE''' | |||
|13 | |||
|8192 | |||
|0x2000 | |||
|Things with this flag are never subject to MBF torque simulation, even if it is enabled via the compatibility vector. | |||
|-style="background-color: #F5F5F5" | |||
|'''ALWAYSTORQUE''' | |||
|14 | |||
|16384 | |||
|0x4000 | |||
|Things with this flag are always subject to MBF torque simulation, even if it is disabled via the compatibility vector. | |||
|-style="background-color: #D9D9D9" | |||
|'''NOZERODAMAGE''' | |||
|15 | |||
|32768 | |||
|0x8000 | |||
|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). | |||
|-style="background-color: #F5F5F5" | |||
|'''TLSTYLESUB''' | |||
|16 | |||
|65536 | |||
|0x10000 | |||
|Thingtype uses subtractive blending. | |||
|-style="background-color: #D9D9D9" | |||
|'''TOTALINVISIBLE''' | |||
|17 | |||
|131072 | |||
|0x20000 | |||
|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. | |||
|- | |- | ||
!style="background-color: #C5D0E1"| Flag name | !style="background-color: #C5D0E1"| Flag name |
Revision as of 19:11, 23 December 2015
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.
- Back to EDF thing reference
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. Won't be damaged by crushing floors and ceilings. Never appears in automap, even with cheats. For sprite invisibility without these side effects, use DONTDRAW from flags2 instead. |
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
Flag name | Bit number | Decimal | Hexadecimal | Description |
---|---|---|---|---|
GHOST | 0 | 1 | 0x01 | Is a Heretic ghost. Translucent, monsters will aim inaccurately, and THRUGHOST missiles will pass through. |
THRUGHOST | 1 | 2 | 0x02 | Missiles with this flag will pass through objects with the GHOST flag. |
NODMGTHRUST | 2 | 4 | 0x04 | Will not inflict thrust on objects that this object inflicts damage upon directly. |
ACTSEESOUND | 3 | 8 | 0x08 | Has a 50% chance of making its seesound instead of its activesound at each opportunity. |
LOUDACTIVE | 4 | 16 | 0x10 | Makes activesound at full volume. |
E5M8BOSS | 5 | 32 | 0x20 | Is a boss for the E5M8 boss special (tag 666). Used by Maulotaurs. |
DMGIGNORED | 6 | 64 | 0x40 | Monsters will never retaliate against this object when it damages them, as with Arch-viles. |
BOSSIGNORE | 7 | 128 | 0x80 | (deprecated)Will not attack other species with this flag. This flag is deprecated and should not be used in EDF. |
SLIDE | 8 | 256 | 0x100 | Slides against walls when moving into them; used by players and Heretic pods. |
TELESTOMP | 9 | 512 | 0x200 | Can telefrag shootable objects, including monsters and players. |
WINDTHRUST | 10 | 1024 | 0x400 | Is affected by Heretic wind sector effects. |
FIREDAMAGE | 11 | 2048 | 0x800 | Damage inflicted directly by this object will be changed to use the Fire damagetype. |
KILLABLE | 12 | 4096 | 0x1000 | Is a living monster, but does not count for kill percentage. Used instead of COUNTKILL for Lost Souls. |
DEADFLOAT | 13 | 8192 | 0x2000 | NOGRAVITY flag is not removed when this object dies, as with Lost Souls. |
NOTHRESHOLD | 14 | 16384 | 0x4000 | Turns against most recent attacker instantly, as with Arch-viles and in Quake AI. |
FLOORMISSILE | 15 | 32768 | 0x8000 | Missiles with this flag can hug the floor and move up steps. |
SUPERITEM | 16 | 65536 | 0x10000 | An item with this flag will only respawn if the super items respawn dmflag is asserted. |
NOITEMRESP | 17 | 131072 | 0x20000 | Items with this flag never respawn, but cannot be crushed as with DROPPED. |
SUPERFRIEND | 18 | 262144 | 0x40000 | Adds absolute loyalty to FRIEND monsters; will never retaliate if attacked by a friend. |
INVULNCHARGE | 19 | 524288 | 0x80000 | Is invulnerable when SKULLFLY-charging, as with Maulotaurs. |
EXPLOCOUNT | 20 | 1048576 | 0x100000 | Missile will not explode if counter 1 < counter 2, but increments counter 1. Used by Iron Lich tornadoes. |
CANNOTPUSH | 21 | 2097152 | 0x200000 | Is unable to push objects with the PUSHABLE flag. |
TLSTYLEADD | 22 | 4194304 | 0x400000 | Uses additive translucency as determined by the thingtype's alpha property. |
SPACMONSTER | 23 | 8388608 | 0x800000 | Can activate parameterized linedefs which are marked with the MONSTER special activation flag. |
SPACMISSILE | 24 | 16777216 | 0x1000000 | Can activate parameterized linedefs which are marked with the MISSILE special activation flag. |
NOFRIENDDMG | 25 | 33554432 | 0x2000000 | Does not take damage from FRIEND objects, excepting possibly itself. |
3DDECORATION | 26 | 67108864 | 0x4000000 | Object clips missiles at its normal height even when comp_theights is off. Used by DOOM decor objects. |
ALWAYSFAST | 27 | 134217728 | 0x8000000 | Always exhibits -fast/Nightmare increased reaction time and attack rate in all skill levels. |
PASSMOBJ | 28 | 268435456 | 0x10000000 | Is considered fully three dimensional when comp_overunder is off (3D object clipping enabled). |
DONTOVERLAP | 29 | 536870912 | 0x20000000 | Tries to avoid overlapping with other objects even when 3D object clipping is enabled. |
CYCLEALPHA | 30 | 1073741824 | 0x40000000 | alpha will cycle continuously if alphavelocity is greater than zero. |
RIP | 31 | 2147483648 | 0x80000000 | Missile will pass through SHOOTABLE objects, dealing damage repeatedly as long as contact is sustained. |
Flag name | Bit number | Decimal | Hexadecimal | Description |
flags4
Flag name | Bit number | Decimal | Hexadecimal | Description |
---|---|---|---|---|
AUTOTRANSLATE | 0 | 1 | 0x01 | Adapts a built-in palette translation if spawned in games other than Doom; used by EE objects such as MBFHelperDog. |
NORADIUSDMG | 1 | 2 | 0x02 | Object will not take radius damage from most sources. |
FORCERADIUSDMG | 2 | 4 | 0x04 | As an inflictor, forces all objects (including BOSS and NORADIUSDMG) to take radius damage. |
LOOKALLAROUND | 3 | 8 | 0x08 | Has a 360-degree field of vision, same as monsters given the AMBUSH flag after hearing a shot. |
NODAMAGE | 4 | 16 | 0x10 | Is invulnerable to damage < 10000, but still reacts as if damage has been taken (thrust, blood, and pain). |
SYNCHRONIZED | 5 | 32 | 0x20 | Will not have its spawnstate tics randomized when spawned on the map at level start. SVN r1096+ |
NORANDOMIZE | 6 | 64 | 0x40 | 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 | 128 | 0x80 | Will always be full-bright regardless of current frame setting. |
FLY | 8 | 256 | 0x100 | Object is flying. Used by the player when under the effect of a flight artifact. |
NORADIUSHACK | 9 | 512 | 0x200 | 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 | 1024 | 0x400 | Actor can play any number of sounds. |
RAVENRESPAWN | 11 | 2048 | 0x800 | 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 | 4096 | 0x1000 | Things with this flag will not spawn on a map if the current gamemode is a shareware gamemode. |
NOTORQUE | 13 | 8192 | 0x2000 | Things with this flag are never subject to MBF torque simulation, even if it is enabled via the compatibility vector. |
ALWAYSTORQUE | 14 | 16384 | 0x4000 | Things with this flag are always subject to MBF torque simulation, even if it is disabled via the compatibility vector. |
NOZERODAMAGE | 15 | 32768 | 0x8000 | 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 | 65536 | 0x10000 | Thingtype uses subtractive blending. |
TOTALINVISIBLE | 17 | 131072 | 0x20000 | 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. |
Flag name | Bit number | Decimal | Hexadecimal | Description |