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}}
{{See|thinggroup}}. Some of the customization should be set in '''thinggroup''' blocks, which group multiple things. Most notably, infighting control. There are also flags and '''damagefactor''' "immune" (see this page) settings.
{{Backto|EDF}}
{{Backto|EDF}}
==Eternity Alfheim syntax==
For versions of Eternity from Alfheim up, EDF thingtypes support the following syntax. Make sure to add:
setdialect("ALFHEIM")
before using this syntax:
thingtype <unique name> : <inherited thingtype>, <doomednum>, <dehackednum>
{
  <other attributes>
}
===Header properties===
* ''<inherited thingtype>'' must be a value, even if the thingtype doesn't inherit from anything else. In that case, it must be '''Mobj''', which is a placeholder value belonging to no real thingtype.
* ''<doomednum>'' and ''<dehackednum>'' can be -1 if not used. If both are -1, they can be omitted, leaving just this:
thingtype <unique name> : <inherited thingtype> {<attributes>}
* If header properties are used, the pre-Alfheim '''inherits''', '''doomednum''' and '''dehackednum''' attributes are not used.


==Syntax==
==Syntax==
  thingtype <unique name> [: <parent type> [, <doomednum> [, <dehackednum>]]]
  thingtype <unique name>
  {
  {
   doomednum              <number>
   doomednum              <number>
   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 51: Line 32:
   xdeathstate            <frame>
   xdeathstate            <frame>
   raisestate            <frame>
   raisestate            <frame>
  healstate              <frame>  // since Feb 21 2016
   crashstate            <frame>
   crashstate            <frame>
   activestate            <frame>
   activestate            <frame>
Line 65: Line 45:
   
   
   spawnhealth            <number>
   spawnhealth            <number>
  gibhealth              <number>
   reactiontime          <number>
   reactiontime          <number>
   painchance            <number>
   painchance            <number>
Line 79: Line 58:
   damage                <number>
   damage                <number>
   dmgspecial            <dmgspecial name>
   dmgspecial            <dmgspecial name>
  aimshift              <number>
   
   
   damagefactor          <damage type>, <floating point number>|immune
   damagefactor          <damage type>, <floating point number>
   damagefactor          <damage type>, <floating point number>|immune
   damagefactor          <damage type>, <floating point number>
   ...
   ...
   
   
Line 94: Line 72:
   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
  dropitem              <type>, [, <chance> [, <amount> [, <toss>]]]
  dropitem.remove        <type>
  collectionspawn        <thingtype> [, <spchance> [, <coopchance> [, <dmchance>]]]
  itemrespawnat          <thingtype>
   
   
   cflags                <flag list>
   cflags                <flag list>
Line 115: Line 80:
   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>
   
   
   translucency          <number OR percentage>
   translucency          <number OR percentage>
   translation            <number OR translation table lump name>
   translation            <number OR translation table lump name>
  tranmap                <lump name>
   skinsprite            <sprite>
   skinsprite            <sprite>
   defaultsprite          <sprite>
   defaultsprite          <sprite>
Line 129: Line 92:
   acs_spawndata          {num <number> modes <mnemonic>}
   acs_spawndata          {num <number> modes <mnemonic>}
   
   
   pickupeffect
   '''states'''                 <[http://zdoom.org/wiki/DECORATE DECORATE]-like heredoc>
  {
    effects              <effect1>, ...
    changeweapon        <weapon>
    message              <text>
    sound                <sound>
    flags                <flags>
  }
  clearpickupeffect
  firstdecoratestate    <frame>
  states                <[[DECORATE state syntax]] heredoc>
  }
  }
===Explanation of fields===
===Explanation of fields===
Line 147: Line 99:
: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>.
*'''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>.
*'''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>.
*'''compatname'''
:Default = (nothing)
:Sets a "compatible name" useful for [[ACS]] scripts copied from GZDoom mods or for cross-port usage. Typically the need for this is because of ACS scripts assuming thingtype names from GZDoom, and in the base Eternity definitions, '''compatname''' is set to names which GZDoom uses for its thingtypes.
:Setting this flag is not needed and shouldn't be done in mods.
*'''basictype'''
*'''basictype'''
:Default = (nothing)
:Default = (nothing)
Line 234: Line 179:


====States====
====States====
*'''firstdecoratestate'''
:Sets the first frame in a sequential list of dummy frames that use the internal Decorate-style defined '''states''' of this actor for [[EDF delta structures|framedelta]] compatibility. It's not required unless the intention is to make the Decorate states of this thing accessible from other thing types. Default games' (Doom, Heretic) thing types use externalized frames for all thing types, for compatibility.
*'''states'''
*'''states'''
{{see|DECORATE state syntax}}
{{see|DECORATE state syntax}}
:Default = nothing
:Default = nothing
:Defines frames using [http://zdoom.org/wiki/DECORATE DECORATE]-style state definitions. This means it won't be necessary to define separate [[frame]] blocks for each individual frame. See the DECORATE reference at the ZDoom wiki for documentation on its syntax. Using the '''states''' field instead of any of the ones below results in more concise text, but also the newly created frames won't be accessible from outside (other thingtypes, Dehacked patches or delta structures), unless you use the '''firstdecoratestate''' field as well. Like normally, [[List of codepointers|codepointers]] may or may not be preceded by '''A_'''. The DECORATE code has to be implemented via a heredoc: a text string that spans on multiple lines. Unlike a regular string which uses quotation marks, the heredoc is marked by @" and "@ respectively. Example on an imp-like monster (the '=' sign is optional):
:Defines frames using [http://zdoom.org/wiki/DECORATE DECORATE]-style state definitions. This means it won't be necessary to define separate [[frame]] blocks for each individual frame. See the DECORATE reference at the ZDoom wiki for documentation on its syntax. Using the '''states''' field instead of any of the ones below results in more concise text, but also the newly created frames won't be accessible from outside (other thingtypes, Dehacked patches or delta structures). Also, note that [[List of codepointers|codepointers]] have to be preceded by '''A_'''. The '''misc1''' and '''misc2''' parameters must be represented by the syntax '''offset'''(''misc1'',''misc2''). The DECORATE code has to be implemented via a heredoc: a text string that spans on multiple lines. Unlike a regular string which uses quotation marks, the heredoc is marked by @" and "@ respectively. Example on an imp-like monster (the '=' sign is optional):
  states =
  states =
   @"
   @"
Line 277: Line 220:
       goto See
       goto See
   "@
   "@
:A "fast" flag is now allowed between the tics and action function of DECORATE states (along with the pre-existing "bright" flag) which determines if that state halves its "tics" value when the game is in -fast or Nightmare skill. Example (from demon's states):
  states
  @"
  See:
    SARG AABBCCDD 2 fast A_Chase
    loop
  Melee:
    SARG EF 8 fast A_FaceTarget
    SARG G  8 fast A_SargAttack
    goto See
  Pain:
    SARG H 2 fast
    SARG H 2 fast A_Pain
    goto See
  "@ 
*'''spawnstate'''
*'''spawnstate'''
:Default = S_NULL
:Default = S_NULL
Line 297: Line 225:
*'''seestate'''
*'''seestate'''
:Default = S_NULL
:Default = S_NULL
:Sets the frame which a monster will jump to when it sees or hears a target during a [[Look]] (monster standing unawakened) check. If an object is alive and has a seestate, it is considered ''sentient'' by certain game mechanics.
:Sets the frame which a monster will jump to when it sees or hears a target during a [[Look]] (monster standing unawakened) check.
*'''painstate'''
*'''painstate'''
:Default = S_NULL
:Default = S_NULL
Line 338: Line 266:
: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 along with being restored.
: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 along with being restored.
*'''healstate''' (since Feb 21 2016)
:Default = S_NULL
:Sets the frame to jump to if, during a [[VileChase]] frame, the thing encounters a corpse and raises it. If not set (or set to S_NULL), it will actually default to S_VILE_HEAL1, same as in Doom.
*'''crashstate'''
*'''crashstate'''
:Default = S_NULL
:Default = S_NULL
Line 377: Line 302:
:Default = 1000
:Default = 1000
:Sets a thing's maximum amount of life.
:Sets a thing's maximum amount of life.
*'''gibhealth''' ''number''
:gibhealth overrides the gamemode default behavior for determining the negative amount of health at which a thing uses its "extreme" death state rather than its normal one. This is ordinarily defined in terms of the spawnhealth (Doom and Strife thingtypes gib at -spawnhealth; Heretic and Hexen thingtypes gib at -(spawnhealth/2).
:If an inheriting thingtype changes its spawnhealth, it will "lose" the inherited definition of gibhealth from its parent. If changing spawnhealth when inheriting from a thingtype that customizes gibhealth, be sure to re-customize the gibhealth in the inheriting thingtype.
*'''reactiontime'''
*'''reactiontime'''
:Default = 8
:Default = 8
Line 414: Line 336:
*'''damage'''
*'''damage'''
:Default = 0
:Default = 0
:This number is used as a damage multiplier when a [[Thing type flags|MISSILE]] or SKULLFLY actor hits a SHOOTABLE. The damage formula used for impact damage is:  
:This number is used as a damage multiplier when a missile hits a thing. The damage formula used for impact damage is:  
       ((rnd % 8) + 1) * damage   
       ((rnd % 8) + 1) * damage   
:This field is also used as a parameter by some parameterized codepointers, including [[Scratch]], [[BetaSkullAttack]] and [[Detonate]].  
:This field is also used as a parameter by some new, parameterized codepointers, including [[Scratch]], [[BetaSkullAttack]] and [[Detonate]].  
*'''dmgspecial'''
*'''dmgspecial'''
:Default = "none"
:Default = "none"
Line 428: Line 350:
:*''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.  
*'''aimshift''' ''number''
:If in the range of 0 to 24, this value overrides the "shift" amount that enemies of this object experience while trying to aim at it due to effects like SHADOW, GHOST, and TOTALINVISIBLE. A larger number in this field makes enemies more inaccurate when aiming at this creature. The default value of -1 means that no aiming inaccuracy is experienced *except* what may be incurred from what flags this monster has. A value larger than 24 will, on the other hand, override the creature's flags and cause enemies to experience no inaccuracy due to to those flags (so for example a creature inheriting from Spectre and setting its aimshift to 25 will behave as though it does not have the SHADOW flag other than for rendering purposes). Values of 20 and 21 are used by the various built-in flag effects.
*'''damagefactor'''
*'''damagefactor'''
:This sets up the monster's resistance to various [[EDF damagetype reference|damage types]] ("means of death"). 0 means invincible (''but still suffering pain''), 1 full damage. This property has a distinct syntax: there may be as many ''DamageFactor'' lines as damage resistances. Note that setting the factor to 0 won't prevent monster retaliation. Example of usage:
:This sets up the monster's resistance to various damage types ("means of death"). 0 means invincible, 1 full damage. This property has a distinct syntax: there may be as many ''DamageFactor'' lines as damage resistances. Note that setting the factor to 0 won't prevent monster retaliation. Example of usage:
  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.
:As seen above, no braces are used, and the arguments are separated by commas.
:You can also use the '''immune''' keyword to make a thingtype truly immune to certain damage types, preventing any reaction or infighting. Example:
damagefactor fire, immune


*'''topdamage'''
*'''topdamage'''
Line 458: Line 374:


====Pain/Death Properties====
====Pain/Death Properties====
*'''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.
*'''cleardropitems'''
:The '''cleardropitems''' flag, if present, removes ALL dropitems from a thingtype. This is applied *before* any dropitem or droptype fields defined within this thingtype itself. This allows removing all inherited dropitems at once. This field is a flag and does not accept any value. Its presence in a thingtype is not inheritable (things which inherit from this type must again specify cleardropitems if they want to in turn remove any items this type added).
*'''dropitem ''type'', [, ''chance'' [, ''amount'' [, ''toss'']]]'''
:dropitem defines a Doom- or Heretic-style drop item; any number of dropitems can be defined. All are dropped when an enemy dies, subject to possible randomization.
:*''type'': name of EDF thing type to spawn
:*''chance'': If specified, chance between 0 and 255 to spawn this drop, 0 being no chance and 255 being 100%.
:*''amount'': If specified, overrides the '''dropamount''' field of an '''ammoeffect''' definition. Does not affect any other item effect type. If zero, this field is ignored.
:*''toss'': Flag value. If specified as +toss, the item is a Heretic-style item drop which will be thrown out during the A_Fall action function with randomized velocity. If this flag is not specified, or is specified as -toss, the item is a Doom-style drop item which will be spawned on the floor as soon as the dying thing has reached 0 health.
:Note: The older '''droptype''' field is still supported, and defines a Doom-style dropitem (100% chance, no dropamount override, and never tossed).
*'''dropitem.remove'''
:removes from this thingtype's dropitem list the named EDF thingtype. Useful when inheriting.
*'''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.
: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.
:*''spchance'': if specified, chance this item will spawn at all in single player, from 0 to 255. Default is 255.
:*''coopchance'': if specified, chance this item will spawn at all in coop mode, from 0 to 255. Default is 255.
:*''dmchance'': if specified, chance this item will spawn at all in deathmatch mode, from 0 to 255. Default is 255.
*'''itemrespawnat''' ''thingtype''
:itemrespawnat defines an EDF thingtype at which this thingtype will respawn if it becomes subject to Heretic-style item respawning.
=====Blood properties=====
*'''bloodcolor'''
*'''bloodcolor'''
:Default = 0
:Default = 0
Line 501: Line 389:
     Orange              8
     Orange              8
     --------------------------
     --------------------------
 
*'''bloodbehavior'''
*'''nukespecial'''
:Syntax: '''bloodbehavior''' ''action'', ''behavior''
:Default = NULL
: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:
: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.  
:*'''shot''': from bullet (hitscan) attacks.
*'''droptype'''
:*'''impact''': from projectiles with the '''DRAWSBLOOD''' flag (Heretic projectiles commonly have this).
:Default = NONE
:*'''rip''': from projectiles with the '''RIP''' flag (Heretic's powered dragonclaw attack has this).
: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.  
:*'''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 418:
: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 465:
*'''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
*'''tranmap'''
    14       Yellow
: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.
   
 
*'''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 499:
: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]]
==References==
This document has content from:
*New Bifrost features, on Eternity website: http://eternity.mancubus.net/text/bifrost_docs.txt
*Old documentation
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: