Editing EDF thing reference
From Eternity Wiki
Jump to navigationJump to search
The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.
Latest revision | Your text | ||
Line 6: | Line 6: | ||
For placing the thing on the map, an integer field called '''doomednum''' must be specified. For forward compatibility it has to be greater than or equal to 20000 or in the 3000-3999 range. Due to how binary WAD files format their THINGS lumps, '''doomednum''' values have to be less than 32767, though textmode representations such as [[ExtraData]] or UDMF solve this limit. | For placing the thing on the map, an integer field called '''doomednum''' must be specified. For forward compatibility it has to be greater than or equal to 20000 or in the 3000-3999 range. Due to how binary WAD files format their THINGS lumps, '''doomednum''' values have to be less than 32767, though textmode representations such as [[ExtraData]] or UDMF solve this limit. | ||
==Syntax== | ==Syntax== | ||
thingtype <unique name> | thingtype <unique name> | ||
{ | { | ||
doomednum <number> | doomednum <number> | ||
dehackednum <unique number> | dehackednum <unique number> | ||
inherits <thingtype> | inherits <thingtype> | ||
basictype <basic type qualifier> | basictype <basic type qualifier> | ||
spawnstate <frame> | spawnstate <frame> | ||
seestate <frame> | seestate <frame> | ||
Line 51: | Line 29: | ||
xdeathstate <frame> | xdeathstate <frame> | ||
raisestate <frame> | raisestate <frame> | ||
crashstate <frame> | crashstate <frame> | ||
seesound <sound> | seesound <sound> | ||
Line 61: | Line 36: | ||
deathsound <sound> | deathsound <sound> | ||
activesound <sound> | activesound <sound> | ||
spawnhealth <number> | spawnhealth <number> | ||
reactiontime <number> | reactiontime <number> | ||
painchance <number> | painchance <number> | ||
Line 79: | Line 51: | ||
damage <number> | damage <number> | ||
dmgspecial <dmgspecial name> | dmgspecial <dmgspecial name> | ||
damagefactor <damage type>, <floating point number> | damagefactor <damage type>, <floating point number> | ||
damagefactor <damage type>, <floating point number> | damagefactor <damage type>, <floating point number> | ||
... | ... | ||
Line 94: | Line 65: | ||
nukespecial <BEX codepointer mnemonic> | nukespecial <BEX codepointer mnemonic> | ||
droptype <thing type mnemonic> | droptype <thing type mnemonic> | ||
cflags <flag list> | cflags <flag list> | ||
Line 115: | Line 73: | ||
flags3 <flag list> | flags3 <flag list> | ||
flags4 <flag list> | flags4 <flag list> | ||
particlefx <particle effect flag list> | particlefx <particle effect flag list> | ||
translucency <number OR percentage> | translucency <number OR percentage> | ||
translation <number OR translation table lump name> | translation <number OR translation table lump name> | ||
skinsprite <sprite> | skinsprite <sprite> | ||
defaultsprite <sprite> | defaultsprite <sprite> | ||
Line 128: | Line 84: | ||
acs_spawndata {num <number> modes <mnemonic>} | acs_spawndata {num <number> modes <mnemonic>} | ||
} | } | ||
===Explanation of fields=== | ===Explanation of fields=== | ||
Line 146: | Line 89: | ||
*'''doomednum''' | *'''doomednum''' | ||
:Default = -1 | :Default = -1 | ||
:The identification number, which makes this actor type placeable in maps. Zombieman monsters for example have | :The identification number, which makes this actor type placeable in maps. [[Zombieman]] monsters for example have the doomednum 3004. Objects which don't need to be placed on the map can have the doomednum -1. For EDF, recommended numbers are in the ranges 3000-3999 and 20000 up. Other numbers may be used by future versions of Eternity, so they're not safe to use. | ||
*'''dehackednum''' | *'''dehackednum''' | ||
:Default = -1 | :Default = -1 | ||
:Fake array index number, for Dehacked patch (BEX or DEH file) compatibility. It has to be an unique number if not -1. Safe numbers are from 10000 up. | :Fake array index number, for Dehacked patch (BEX or DEH file) compatibility. It has to be an unique number if not -1. Safe numbers are from 10000 up. | ||
*'''inherits''' | *'''inherits''' | ||
:Default = (nothing) | :Default = (nothing) | ||
:Sets the thing type from which this will copy | :Sets the thing type from which this will copy the properties. | ||
*'''basictype''' | *'''basictype''' | ||
:Default = (nothing) | :Default = (nothing) | ||
: | :Basictype is a list of common flags used in Doom and derived games. Using basictype instead of setting individual flags is encouraged, in order to keep up with Eternity engine updates. Other flags may be added or removed with addflags or remflags. The basictype mnemonics follow: | ||
:*''Monster'' | :*''Monster'' | ||
::An ordinary walking monster with no fancy features. | ::An ordinary walking monster with no fancy features. | ||
:: | ::cflags = SOLID+SHOOTABLE+COUNTKILL+FOOTCLIP+SPACMONSTER+PASSMOBJ | ||
:*''FlyingMonster'' | :*''FlyingMonster'' | ||
::An ordinary flying monster. | ::An ordinary flying monster. | ||
:: | ::cflags = SOLID+SHOOTABLE+COUNTKILL+NOGRAVITY+FLOAT+SPACMONSTER+PASSMOBJ | ||
:*''FriendlyHelper'' | :*''FriendlyHelper'' | ||
::A player helper with maximum friendliness options. | ::A player helper with maximum friendliness options. | ||
:: | ::cflags = SOLID+SHOOTABLE+COUNTKILL+FRIEND+JUMPDOWN+FOOTCLIP+WINDTHRUST+SUPERFRIEND+SPACMONSTER+PASSMOBJ | ||
:*''Projectile'' | :*''Projectile'' | ||
::A standard projectile. | ::A standard projectile. | ||
:: | ::cflags = NOBLOCKMAP+NOGRAVITY+DROPOFF+MISSILE+NOCROSS | ||
:*''PlayerProjectile'' | :*''PlayerProjectile'' | ||
::A projectile for use by players. | ::A projectile for use by players. | ||
:: | ::cflags = NOBLOCKMAP+NOGRAVITY+DROPOFF+MISSILE+NOCROSS+SPACMISSILE | ||
:*''Seeker'' | :*''Seeker'' | ||
::A missile prepared to be fired by homing missile codepointers. | ::A missile prepared to be fired by homing missile codepointers. | ||
:: | ::cflags = NOBLOCKMAP+NOGRAVITY+DROPOFF+MISSILE+NOCROSS+SEEKERMISSILE | ||
:*''SolidDecor'' | :*''SolidDecor'' | ||
::A solid decorative item. | ::A solid decorative item. | ||
:: | ::cflags = SOLID | ||
:*''HangingDecor'' | :*''HangingDecor'' | ||
::A hanging decorative item that is passable even without 3D object clipping. | ::A hanging decorative item that is passable even without 3D object clipping. | ||
:: | ::cflags = SPAWNCEILING+NOGRAVITY | ||
:*''SolidHangingDecor'' | :*''SolidHangingDecor'' | ||
::A solid hanging decorative item. | ::A solid hanging decorative item. | ||
:: | ::cflags = SOLID+SPAWNCEILING+NOGRAVITY | ||
:*''ShootableDecor'' | :*''ShootableDecor'' | ||
::A shootable decorative item. | ::A shootable decorative item. | ||
:: | ::cflags = SOLID+SHOOTABLE+NOBLOOD | ||
:*''Fog'' | :*''Fog'' | ||
::A fog item such as telefog or item fog. | ::A fog item such as telefog or item fog. | ||
:: | ::cflags = NOBLOCKMAP+NOGRAVITY+TRANSLUCENT+NOSPLASH | ||
:*''Item'' | :*''Item'' | ||
::A collectable item. Doesn't count | ::A collectable item. Doesn't count. | ||
:: | ::cflags = SPECIAL | ||
:*''ItemCount'' | :*''ItemCount'' | ||
::A collectable item. Counts for item | ::A collectable item. Counts for item %. | ||
:: | ::cflags = SPECIAL+COUNTITEM | ||
:*''TerrainBase'' | :*''TerrainBase'' | ||
::A TerrainTypes base item. | ::A TerrainTypes base item. | ||
:: | ::cflags = NOBLOCKMAP+NOGRAVITY+NOSPLASH | ||
:*''TerrainChunk'' | :*''TerrainChunk'' | ||
::A TerrainTypes chunk item. | ::A TerrainTypes chunk item. | ||
:: | ::cflags = NOBLOCKMAP+DROPOFF+MISSILE+LOGRAV+NOSPLASH+NOCROSS+CANNOTPUSH | ||
:*''ControlPoint'' | :*''ControlPoint'' | ||
::An inert control point. | ::An inert control point. | ||
:: | ::cflags = NOBLOCKMAP+NOSECTOR+NOGRAVITY | ||
:: | ::spawnstate = S_TNT1 | ||
:*''ControlPointGrav'' | :*''ControlPointGrav'' | ||
::An control point that is subject to gravity. Because of this, it's not considered inert. | ::An control point that is subject to gravity. Because of this, it's not considered inert. | ||
:: | ::cflags = DONTDRAW+NOSPLASH | ||
:: | ::spawnstate = S_TNT1 | ||
====States==== | ====States==== | ||
*'''spawnstate''' | *'''spawnstate''' | ||
:Default = S_NULL | :Default = S_NULL | ||
:Sets the frame which a thing starts in when it is spawned. Monsters generally use this frame to stand still and look for targets | :Sets the frame which a thing starts in when it is spawned. Monsters generally use this frame to stand still and look for targets. | ||
*'''seestate''' | *'''seestate''' | ||
:Default = S_NULL | :Default = S_NULL | ||
:Sets the frame which a monster will jump to when it sees or hears a target | :Sets the frame which a monster will jump to when it sees or hears a target. Also called walking frames, or first moving frame. | ||
*'''painstate''' | *'''painstate''' | ||
:Default = S_NULL | :Default = S_NULL | ||
:Sets the frame a thing may randomly enter when it has been injured | :Sets the frame a thing may randomly enter when it has been injured. | ||
*'''dmg_painstates''' | *'''dmg_painstates''' | ||
:Default = (nothing) | :Default = (nothing) | ||
Line 309: | Line 186: | ||
Lava, S_HPLAY_LPAIN1 | Lava, S_HPLAY_LPAIN1 | ||
} | } | ||
makes the actor go to frame S_HPLAY_FPAIN1 when damaged by fire, or to S_HPLAY_LPAIN1 when harmed by lava. It defaults to its | makes the actor go to frame S_HPLAY_FPAIN1 when damaged by fire, or to S_HPLAY_LPAIN1 when harmed by lava. It defaults to its painstate if the damage is of another nature. | ||
*'''dmg_painstates.add''' | *'''dmg_painstates.add''' | ||
*'''dmg_painstates.remove''' | *'''dmg_painstates.remove''' | ||
Line 317: | Line 194: | ||
Fire, lava | Fire, lava | ||
} | } | ||
makes them | makes them die normally from fire or lava, without going to special pain states. | ||
*'''meleestate''' | *'''meleestate''' | ||
:Default = S_NULL | :Default = S_NULL | ||
:If this frame is not S_NULL, monsters will | :If this frame is not S_NULL, monsters chasing a target will attempt to close to melee range quickly. When they determine they are within 64 units of their target, they may randomly enter this frame to perform a melee attack. | ||
*'''missilestate''' | *'''missilestate''' | ||
:Default = S_NULL | :Default = S_NULL | ||
Line 331: | Line 208: | ||
*'''dmg_deathstates.remove''' | *'''dmg_deathstates.remove''' | ||
:Defaults = (nothing) | :Defaults = (nothing) | ||
:These three properties work similar to ''dmg_painstates*'', in that they allow the object to enter special frames depending on the damage type suffered | :These three properties work similar to ''dmg_painstates*'', in that they allow the object to enter special frames depending on the damage type suffered. | ||
*'''xdeathstate''' | *'''xdeathstate''' | ||
:Default = S_NULL | :Default = S_NULL | ||
Line 337: | Line 214: | ||
*'''raisestate''' | *'''raisestate''' | ||
:Default = S_NULL | :Default = S_NULL | ||
:If this frame is not S_NULL, a creature running [[VileChase]] codepointers can perform a resurrection on this actor. When this occurs, the actor will enter this frame | :If this frame is not S_NULL, a creature running [[VileChase]] codepointers can perform a resurrection on this actor. When this occurs, the actor will enter this frame. | ||
*'''crashstate''' | *'''crashstate''' | ||
:Default = S_NULL | :Default = S_NULL | ||
:When a thing with this state dies and then subsequently hits the ground, it will enter this state. If this state S_NULL, it is not used. | :When a thing with this state dies and then subsequently hits the ground, it will enter this state. If this state S_NULL, it is not used. | ||
====Sounds==== | ====Sounds==== | ||
*'''seesound''' | *'''seesound''' | ||
Line 367: | Line 234: | ||
:Default = none | :Default = none | ||
:Sets the sound used by a thing when it is wandering around. A thing is given a 3 out of 256 chance (1.17%) of making this sound every time it calls the Chase codepointer. There are some new flags3 flags which can alter the behavior of this sound. | :Sets the sound used by a thing when it is wandering around. A thing is given a 3 out of 256 chance (1.17%) of making this sound every time it calls the Chase codepointer. There are some new flags3 flags which can alter the behavior of this sound. | ||
====Basic Stats==== | ====Basic Stats==== | ||
*'''spawnhealth''' | *'''spawnhealth''' | ||
:Default = 1000 | :Default = 1000 | ||
:Sets a thing's maximum amount of life. | :Sets a thing's maximum amount of life. | ||
*'''reactiontime''' | *'''reactiontime''' | ||
:Default = 8 | :Default = 8 | ||
Line 414: | Line 272: | ||
*'''damage''' | *'''damage''' | ||
:Default = 0 | :Default = 0 | ||
:This number is used as a damage multiplier when a | :This number is used as a damage multiplier when a missile hits a thing. The damage formula used is: | ||
((rnd % 8) + 1) * | damage = ((rnd % 8) + 1) * missiledamage | ||
:This field is also used as a parameter by some parameterized codepointers, including | :This field is also used as a parameter by some new, parameterized codepointers, including [[BetaSkullAttack]] and [[Detonate]]. | ||
*'''dmgspecial''' | *'''dmgspecial''' | ||
:Default = "none" | :Default = "none" | ||
Line 428: | Line 286: | ||
:*''Whirlwind'' | :*''Whirlwind'' | ||
::The target will have its angle and x/y momenta modified by random amounts. If the current level time has the 5th bit (value 16) set and the target is not a boss (possesses the BOSS flag), the target will be given randomized z momentum up to but no greater than 12 units per tic. When the level time is divisible by 8, the target will be hit directly for 3 damage. | ::The target will have its angle and x/y momenta modified by random amounts. If the current level time has the 5th bit (value 16) set and the target is not a boss (possesses the BOSS flag), the target will be given randomized z momentum up to but no greater than 12 units per tic. When the level time is divisible by 8, the target will be hit directly for 3 damage. | ||
:*'''DamageFactor''' | |||
:This sets up the monster's resistance to various damage types. 0 means invincible, 1 full damage. This property has a distinct syntax: there may be as many ''DamageFactor'' lines as damage resistances. Example: | |||
: | |||
*''' | |||
:This sets up the monster's resistance to various | |||
damagefactor fire, 0.3 | damagefactor fire, 0.3 | ||
damagefactor lava, 0.2 | damagefactor lava, 0.2 | ||
As seen above, no braces are used, and the arguments are separated by commas. | |||
*'''topdamage''' | *'''topdamage''' | ||
Line 448: | Line 300: | ||
*'''mod''' | *'''mod''' | ||
:Default = UNKNOWN (0) | :Default = UNKNOWN (0) | ||
: | :Special Means of Death flag for this thing type. Currently supported values follow below. The use of numbers in this field is now considered deprecated. Please use the descriptive textual MOD names in all new EDF projects. | ||
Mod Name Number | |||
------------------ | |||
UNKNOWN 0 | |||
FIST 1 | |||
PISTOL 2 | |||
SHOTGUN 3 | |||
CHAINGUN 4 | |||
ROCKET 5 | |||
R_SPLASH 6 | |||
PLASMA 7 | |||
BFG 8 | |||
BFG_SPLASH 9 | |||
CHAINSAW 10 | |||
SSHOTGUN 11 | |||
SLIME 12 | |||
LAVA 13 | |||
CRUSH 14 | |||
TELEFRAG 15 | |||
FALLING 16 | |||
SUICIDE 17 | |||
BARREL 18 | |||
SPLASH 19 | |||
HIT 20 | |||
BFG11K_SPLASH 21 | |||
BETABFG 22 | |||
BFGBURST 23 | |||
PLAYERMISC 24 | |||
GRENADE 25 | |||
*'''obituary_normal''' | *'''obituary_normal''' | ||
:Default = empty | :Default = empty | ||
Line 455: | Line 334: | ||
*'''obituary_melee''' | *'''obituary_melee''' | ||
:Default = empty | :Default = empty | ||
:Defines the obituary seen by players when killed by a monster's melee attack. If the obituary is not defined for this type, it will simply read that the player died. Note that you are only allowed to specify an obituary starting immediately after the player's name. If you want an obituary to say "Player was stabbed mercilessly", then simply make the obituary read "was stabbed mercilessly". | :Defines the obituary seen by players when killed by a monster's melee attack. If the obituary is not defined for this type, it will simply read that the player died. Note that you are only allowed to specify an obituary starting immediately after the player's name. If you want an obituary to say "Player was stabbed mercilessly", then simply make the obituary read "was stabbed mercilessly". | ||
:Specifying this field is not necessary for most thing types. It IS highly useful for controlling the obituaries triggered by player projectiles, however. Some of the values above are not fully supported yet. Eventually the LAVA type will cause fire death animations for things which define them. | |||
====Pain/Death Properties==== | ====Pain/Death Properties==== | ||
*'''bloodcolor''' | *'''bloodcolor''' | ||
:Default = 0 | :Default = 0 | ||
Line 501: | Line 352: | ||
Orange 8 | Orange 8 | ||
-------------------------- | -------------------------- | ||
*''' | *'''nukespecial''' | ||
: | :Default = NULL | ||
: | :This field is the name of a special codepointer to call when the player uses the KILLEM cheat to kill all monsters. Currently only two special pointers are provided for this purpose, PainNukeSpec and SorcNukeSpec. These enable monsters with spawn-on-death actions to either spawn enemies early, or not at all. See the Eternity Engine Definitive Codepointer Reference for detailed information. | ||
*'''droptype''' | |||
:Default = NONE | |||
:This field allows the type of thing that is dropped by this thing when it dies to be edited. This field should either be a valid thing type mnemonic, or the special value NONE. | |||
: | |||
: | |||
====Flags==== | ====Flags==== | ||
*'''cflags''' | *'''cflags''' | ||
Line 540: | Line 381: | ||
:Similar to flags, but takes a different set of values with different meanings. See the [[Thing type flags]] List, for the values which can be used in this field. Remember that if whitespace or disallowed characters are used, this field's value must be enclosed in quotation marks. | :Similar to flags, but takes a different set of values with different meanings. See the [[Thing type flags]] List, for the values which can be used in this field. Remember that if whitespace or disallowed characters are used, this field's value must be enclosed in quotation marks. | ||
*'''flags4''' | *'''flags4''' | ||
:Default = "" | :Default = "" | ||
:Similar to flags, but takes a different set of values with different meanings. See the [[Thing type flags]] List, for the values which can be used in this field. Remember that if whitespace or disallowed characters are used, this field's value must be enclosed in quotation marks. | :Similar to flags, but takes a different set of values with different meanings. See the [[Thing type flags]] List, for the values which can be used in this field. Remember that if whitespace or disallowed characters are used, this field's value must be enclosed in quotation marks. | ||
Line 581: | Line 419: | ||
particlefx = "BFG + GREENFOUNTAIN" | particlefx = "BFG + GREENFOUNTAIN" | ||
====Graphic | ====Graphic Properites==== | ||
*'''translucency''' | *'''translucency''' | ||
:Default = 65536 (100%) | :Default = 65536 (100%) | ||
Line 590: | Line 428: | ||
*'''translation''' | *'''translation''' | ||
:Default = 0 | :Default = 0 | ||
:Sets a translation for the thing's sprite. Translation tables are 256-byte lumps which can be used to remap any range of colors in a sprite. When this field defaults, no translation will be used. Otherwise, you may either provide a number to access one of the internal player translation tables, or you may provide the name of a translation lump, which must be found | :Sets a translation for the thing's sprite. Translation tables are 256-byte lumps which can be used to remap any range of colors in a sprite. When this field defaults, no translation will be used. Otherwise, you may either provide a number to access one of the internal player translation tables, or you may provide the name of a translation lump, which must be found between T_START and T_END markers amongst one of the currently loaded wad files. Numeric values for player translations are as follows. All of the player translations remap the pure green range. | ||
Number Color | |||
------------------ | |||
1 Indigo | |||
2 Brown | |||
3 Red | |||
4 Tomato | |||
5 Dirt | |||
6 Blue | |||
7 Gold | |||
8 Felt | |||
9 Black | |||
10 Purple | |||
11 "Vomit" | |||
12 Pink | |||
13 Cream | |||
14 Yellow | |||
------------------ | |||
*'''skinsprite''' | *'''skinsprite''' | ||
:Default = "noskin" | :Default = "noskin" | ||
:The skinsprite field defines a sprite that will be used to override the sprite value in any frame a thing of this type enters. This allows the creation of thingtypes which behave identically but look different without the creation of any new frames. Note that when things are crushed into gibs, the skinsprite is cleared at that time. If an Archvile resurrects such a thing, the proper skinsprite is then restored. | :The skinsprite field defines a sprite that will be used to override the sprite value in any frame a thing of this type enters. This allows the creation of thingtypes which behave identically but look different without the creation of any new frames. Note that when things are crushed into gibs, the skinsprite is cleared at that time. If an Archvile resurrects such a thing, the proper skinsprite is then restored. | ||
*'''defaultsprite''' | *'''defaultsprite''' | ||
:Default = | :Default = NULL | ||
*'''alphavelocity''' | *'''alphavelocity''' | ||
:Default = 0.0 | :Default = 0.0 | ||
:If nonzero, the thing's | :If nonzero, the thing's translucency (alpha value) will cycle on and off by this velocity. | ||
*'''xscale''' | *'''xscale''' | ||
:Default = 1.0 | :Default = 1.0 | ||
Line 626: | Line 461: | ||
:Default = 1.0 | :Default = 1.0 | ||
:Sets how much the vertical component of the sprite is to be scaled. | :Sets how much the vertical component of the sprite is to be scaled. | ||
====ACS Spawn Data Sub-Block==== | ====ACS Spawn Data Sub-Block==== | ||
*'''acs_spawndata''' | *'''acs_spawndata''' | ||
:Default = (nothing) | :Default = (nothing) | ||
:This specifies the identification number for various parameterized specials, | :This specifies the identification number for various parameterized specials that, if ran from the Hexen format, wouldn't support numbers higher than 255. It also limits the number to a game namespace. For example, by default the Zombieman has | ||
acs_spawndata { num 4; modes doom } | acs_spawndata { num 4; modes doom } | ||
:Heretic objects will use | :Heretic objects will use "modes heretic" instead of "modes doom". | ||