Editing EDF thing reference

From Eternity Wiki
Jump to navigationJump to search
Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

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.
If you want to know the base game thing types from Doom, you can look on the [https://github.com/team-eternity/eternity/blob/master/base/doom/things.edf list of Doom thing types].


{{See|Thing type flags}}
{{See|Thing type flags}}
Line 33: Line 31:
   dehackednum            <unique number>
   dehackednum            <unique number>
   inherits              <thingtype>
   inherits              <thingtype>
  compatname            <name>
   basictype              <basic type qualifier>
   basictype              <basic type qualifier>
    
    
  // NOTE: for this section, see the "states" field below and use it instead of these.
   spawnstate            <frame>
   spawnstate            <frame>
   seestate              <frame>
   seestate              <frame>
Line 94: Line 90:
   nukespecial            <BEX codepointer mnemonic>
   nukespecial            <BEX codepointer mnemonic>
   droptype              <thing type mnemonic>
   droptype              <thing type mnemonic>
  bloodbehavior          <action>, <behavior>
  clearbloodbehaviors
  bloodtype.normal      <name>
  bloodtype.impact      <name>
  bloodtype.rip          <name>
  bloodtype.crush        <name>
   
   
   cleardropitems
   cleardropitems
Line 115: Line 104:
   flags3                <flag list>
   flags3                <flag list>
   flags4                <flag list>
   flags4                <flag list>
  flags5                <flag list>
   particlefx            <particle effect flag list>
   particlefx            <particle effect flag list>
   
   
Line 128: Line 116:
   
   
   acs_spawndata          {num <number> modes <mnemonic>}
   acs_spawndata          {num <number> modes <mnemonic>}
  pickupeffect
  {
    effects              <effect1>, ...
    changeweapon        <weapon>
    message              <text>
    sound                <sound>
    flags                <flags>
  }
  clearpickupeffect
   
   
   firstdecoratestate    <frame>
   firstdecoratestate    <frame>
Line 147: Line 125:
:Default = -1
:Default = -1
:The identification number, which makes this actor type placeable in maps. Zombieman monsters for example have '''doomednum''' 3004. Objects which don't need to be placed on the map can have '''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.
:The identification number, which makes this actor type placeable in maps. Zombieman monsters for example have '''doomednum''' 3004. Objects which don't need to be placed on the map can have '''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.
:NOTE: you can just use the first number following the inherited class, in the title. Just remember to start the script with <code>setdialect("alfheim")</code>.
:NOTE: you can just use the first number following the inherited class, in the title.
*'''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.
:NOTE: you can use the second number following the inherited class in the title. For this, you also need <code>setdialect("alfheim")</code>.
:NOTE: you can use the second number following the inherited class in the title.
*'''inherits'''
*'''inherits'''
:Default = (nothing)
:Default = (nothing)
:Sets the thing type from which this will copy properties. All of the properties except '''dehackednum''' will be copied from the base actor type.
:Sets the thing type from which this will copy properties. All of the properties except '''dehackednum''' will be copied from the base actor type.
:NOTE: you can use the class in the title properties after the colon, instead of '''inherits''' in the '''thingtype''' body. You also need <code>setdialect("alfheim")</code>.
:NOTE: you can use the class in the title properties after the colon, instead of '''inherits''' in the '''thingtype''' body.
*'''compatname'''
*'''compatname'''
:Default = (nothing)
:Default = (nothing)
Line 458: Line 436:


====Pain/Death Properties====
====Pain/Death Properties====
*'''bloodcolor'''
:Default = 0
:Allows this thing type to have differently colored blood when particle blood effects are enabled (this does not currently have any effect on blood sprites). Currently available blood color values are as follows:
    Blood color      Number
    --------------------------
    Red (normal)        0
    Grey                1
    Green              2
    Blue                3
    Yellow              4
    Black              5
    Purple              6
    White              7
    Orange              8
    --------------------------
*'''nukespecial'''
*'''nukespecial'''
:Default = NULL
:Default = NULL
Line 476: Line 470:
:removes from this thingtype's dropitem list the named EDF thingtype. Useful when inheriting.
:removes from this thingtype's dropitem list the named EDF thingtype. Useful when inheriting.
*'''collectionspawn''' ''thingtype'' [, ''spchance'' [, ''coopchance'' [, ''dmchance'']]]
*'''collectionspawn''' ''thingtype'' [, ''spchance'' [, ''coopchance'' [, ''dmchance'']]]
:collectionspawn defines a thingtype at which THIS thingtype will select one instance out of all instances on the map at which to spawn itself at level start. This attribute is used by the Heretic Fire Mace. See the example in [https://github.com/team-eternity/eternity/blob/master/base/heretic/things.edf#L3213 Heretic's things.edf] on how it's used.
:collectionspawn defines a thingtype at which THIS thingtype will select one instance out of all instances on the map at which to spawn itself at level start.
:Explanation of collectionspawn multivalue properties:
:Explanation of collectionspawn multivalue properties:
:*''thingtype'': Name of the EDF thingtype at which to spawn at random. If this is invalid, this collectionspawn definition will be disregarded.
:*''thingtype'': Name of the EDF thingtype at which to spawn at random. If this is invalid, this collectionspawn definition will be disregarded.
Line 484: Line 478:
*'''itemrespawnat''' ''thingtype''
*'''itemrespawnat''' ''thingtype''
:itemrespawnat defines an EDF thingtype at which this thingtype will respawn if it becomes subject to Heretic-style item respawning.
:itemrespawnat defines an EDF thingtype at which this thingtype will respawn if it becomes subject to Heretic-style item respawning.
=====Blood properties=====
*'''bloodcolor'''
:Default = 0
:Allows this thing type to have differently colored blood when particle blood effects are enabled (this does not currently have any effect on blood sprites). Currently available blood color values are as follows:
    Blood color      Number
    --------------------------
    Red (normal)        0
    Grey                1
    Green              2
    Blue                3
    Yellow              4
    Black              5
    Purple              6
    White              7
    Orange              8
    --------------------------
*'''bloodbehavior'''
:Syntax: '''bloodbehavior''' ''action'', ''behavior''
:A '''thingtype''' can have one or more of these entries. ''Action'' can be one of: '''shot''', '''impact''', '''rip''' or '''crush'''. ''Behavior'' can be one of: '''Doom''', '''Heretic''', '''HereticRip''', '''Hexen''', '''HexenRip''', '''Strife''' or '''crush'''. Setting this will override game's default settings, which for Doom are respectively ('''Doom''', '''Heretic''', '''HereticRip''', '''crush''') and for Heretic are ('''Heretic''', '''Heretic''', '''HereticRip''', '''crush'''). Due to Doom having no innate impact or rip attacks, it borrows the behaviors from Heretic. The meanings of the actions are as such:
:*'''shot''': from bullet (hitscan) attacks.
:*'''impact''': from projectiles with the '''DRAWSBLOOD''' flag (Heretic projectiles commonly have this).
:*'''rip''': from projectiles with the '''RIP''' flag (Heretic's powered dragonclaw attack has this).
:*'''crush''': from crushing surfaces (except for polyobjects).
:The behaviors assigned to each action can be:
:*'''Doom''': spawns the given blood objects with a small vertical speed of 2 and lowers the tic count of the first frame. If damage is less than 9, it will jump to Decorate state '''Blood3''' (or if missing, '''dehackednum''' 92). If damage is between 9 and 12, it will jump to Decorate state '''Blood2''' (or if missing, '''dehackednum''' 91).
:*'''Heretic''': similar to the '''Doom''' behavior, but without the state transition or randomization, and with a random horizontal spread.
:*'''HereticRip''': spawns the blood object at a slight distance away from inflictor or (if missing) target, clears it of gravity and propels it in a direction of inflictor/target's speed. It will also randomly increase the duration of the first state by 0-3.
:*'''Hexen''': like '''Heretic''' but with even more spread.
:*'''HexenRip''': like '''HereticRip''' but with gravity (won't add '''NOGRAVITY''').
:*'''Strife''': similar to Doom but with no duration randomization and with transitions to '''Blood2''', '''Blood1''', '''Blood0''' for damages 0-6, 7-9 or 10-13 respectively.
:*'''crush''': blood splat will be spread horizontally.
====Flags====
====Flags====
*'''cflags'''
*'''cflags'''
Line 540: Line 500:
: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 = ""
: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.
*'''flags5'''
: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 590: Line 547:
*'''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 either inside the '''translations''' folder inside a [[PKE]], or between T_START and T_END markers inside a [[Doom Wiki:WAD|wad]]. Numeric values for player translations are as follows. All of the player translations remap the pure green range:
: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.
:*1: indigo
    Number    Color
:*2: brown
    ------------------
:*3: red
    1       Indigo
:*4: tomato
    2       Brown
:*5: dirt
    3       Red
:*6: blue
    4       Tomato
:*7: gold
    5       Dirt
:*8: sea
    6       Blue
:*9: black
    7       Gold
:*10: purple
    8       Felt
:*11: orange
    9       Black
:*12: pink
    10       Purple
:*13: cream
    11       "Vomit"
:*14: white
    12       Pink
    13       Cream
    14       Yellow
    ------------------


*'''tranmap'''
*'''tranmap'''
:Default: not used
:Default: not used
:This is a [[translucency map]] lump name to use to render the thing. NOTE: it should NOT be between T_START and T_END. Useful if you want custom translucency effects, not easily available with simple parameterized means.
:This is a [[translucency map]] lump name to use to render the thing. As usual, such a lump needs to be between ''T_START'' and ''T_END'' in the wad. Useful if you want custom translucency effects, not easily available with simple parameterized means.


*'''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.
:NOTE: for any use of '''skinsprite''', you need to add the sprite to the '''spritenames''' list, e.g. <code>spritenames += { SPRT }</code> (for a sprite named <code>SPRT</code>)
*'''defaultsprite'''
*'''defaultsprite'''
:Default = the object's first spawn state's sprite
:Default = the object's first spawn state's sprite
Line 626: Line 585:
: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.
====Pick-up effect====
*'''pickupeffect'''
:You can define the details of an item with the '''SPECIAL''' [[Thing type flags|flag]] in this block. See the [[pickupeffect|standalone block definition]] for explanation of the available fields.
*'''clearpickupeffect'''
:If added, it will clear the previous '''pickupeffect''' definition from an inherited '''thingtype''' or when using a '''thingdelta'''. By default it will be copied.


====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, such as [[Thing_Spawn]] or [[Thing_SpawnNoFog]]. It also limits the number to a game namespace. For example, by default the Zombieman has
:This specifies the identification number for various parameterized specials, such as Thing_Spawn or Thing_SpawnNoFog. 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 '''modes heretic''' instead of '''modes doom'''. To make it work for any game mode, use '''modes all''' or simply omit it. You shouldn't need to use '''modes''' in any custom mod unless it's available for more than one game.
:Heretic objects will use "modes heretic" instead of "modes doom".
:'''num''' must be between 0 and 255 inclusive.
[[category:EDF]]
[[category:EDF]]


Please note that all contributions to Eternity Wiki are considered to be released under the GNU Free Documentation License 1.2 (see Eternity Wiki:Copyrights for details). If you do not want your writing to be edited mercilessly and redistributed at will, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource. Do not submit copyrighted work without permission!
Cancel Editing help (opens in new window)

Templates used on this page: