EDF weapon reference: Difference between revisions
From Eternity Wiki
Jump to navigationJump to search
Altazimuth (talk | contribs) m (Fix lazy copy-paste from EDF thing reference.) |
Altazimuth (talk | contribs) m (Update EDF weapon reference to reflect current properties.) |
||
Line 41: | Line 41: | ||
selectionorder <number> | selectionorder <number> | ||
slotnumber <number> | |||
slotselectionorder <floating-point number> | |||
sisterweapon <weapon info mnemonic> | |||
flags <flag list> | flags <flag list> | ||
Line 123: | Line 125: | ||
: The equivalent of '''attackstate''', '''flashstate''', and '''holdstate''', but for alternate fire. | : The equivalent of '''attackstate''', '''flashstate''', and '''holdstate''', but for alternate fire. | ||
====Selection Order and | ====Selection Order and Weapon Slots==== | ||
*'''selectionorder''' | *'''selectionorder''' | ||
:Default = -1 | :Default = -1 | ||
:Sets the priority for selection of the weapon. The lower the number, the higher its priority. | :Sets the priority for selection of the weapon. The lower the number, the higher its priority. | ||
*''' | *'''slotnumber''' | ||
:Default = | :Default = -1 | ||
:Sets the weapon | :Sets the weapon slot that the weapon occupies in the global weapon slots structure. For assigning to player class weapon slots, read [[weapon slots]]. | ||
*''' | *'''slotselectionorder''' | ||
:Default = -1.0 | |||
:Sets the in-slot priority for the weapon in the global weapon slots structure. The lower the number, the higher its priority. Read [[weapon slots]] if you wish to understand the specifics of how in-slot priority works interacts with player class weapon slots. | |||
====Sister Weapon==== | |||
*'''sisterweapon''' | |||
:Default = "" | :Default = "" | ||
: | :Defines a weapon that is also provided when this weapon is picked up. This is can be used either for [[doom_wiki:Tome of Power|Tome of Power]] variants, or for weapons with two different firing modes (used by Strife weapons). | ||
====Flags==== | ====Flags==== |
Revision as of 09:49, 10 April 2018
TODO: Initial spiel.
- See User:Altazimuth/Weapon info flags
- Back to EDF
Eternity Alfheim syntax
EDF weaponinfo supports pre-Alfheim and Alfehim syntax. Make sure to add:
setdialect("ALFHEIM")
before using this syntax:
weaponinfo <unique name> : <inherited weaponinfo>, <dehackednum> { <other attributes> }
Header properties
- <inherited weaponinfo> must be a value, even if the weaponinfo doesn't inherit from anything else. In that case, it must be Weapon, which is a placeholder value belonging to no real weaponinfo.
- <dehackednum> -1 if not used. If -1, it can be omitted, leaving just this:
weaponinfo <unique name> : <inherited weaponinfo> {<attributes>}
- If header properties are used, the pre-Alfheim syntax inherits and dehackednum attributes are not used.
Syntax
weaponinfo <unique name> [: <parent type> [, <dehackednum>]] { dehackednum <unique number> inherits <weaponinfo> ammotype <artifact mnemonic> ammotype2 <artifact mnemonic> upstate <frame> downstate <frame> readystate <frame> attackstate <frame> flashstate <frame> holdstate <frame> attackstate2 <frame> flashstate2 <frame> holdstate2 <frame> ammouse <number> ammouse2 <number> selectionorder <number> slotnumber <number> slotselectionorder <floating-point number> sisterweapon <weapon info mnemonic> flags <flag list> addflags <flag list> remflags <flag list> mod <MOD name OR number> recoil <number> hapticrecoil <number> haptictime <number> upsound <sound> readysound <sound> firstdecoratestate <frame> states <DECORATE state syntax heredoc> }
Explanation of fields
ID / Type Info
- dehackednum
- 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.
- inherits
- Default = (nothing)
- Sets the weapon info from which this will copy properties. All of the properties except dehackednum will be copied from the base actor type.
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 framedelta compatibility. It's not required unless the intention is to make the Decorate states of this weapon accessible from other weapon info. Default games' (Doom, Heretic) weapon info use externalized frames for all weapon info, for compatibility.
- states
- See DECORATE state syntax
- Default = nothing
- Defines frames using 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 weaponinfo, Dehacked patches or delta structures), unless you use the firstdecoratestate field as well. Like normally, 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 shotgun-like weapon (the '=' sign is optional):
states = @" Ready: SHTG A 1 A_WeaponReady loop Deselect: SHTG A 1 A_Lower loop Select: SHTG A 1 A_Raise loop Fire: SHTG A 3 SHTG A 7 A_FireShotgun SHTG BC 5 SHTG D 4 SHTG CB 5 SHTG A 3 SHTG A 7 A_ReFire goto Ready Flash: SHTF A 4 Bright A_Light1 SHTF B 3 Bright A_Light2 goto LightDone "@
- upstate
- Default = S_NULL
- Sets the frame which a weapon starts in when it is raised.If the object is supposed to have any dynamic purpose or be visible, do not leave the upstate at S_NULL.
- downstate
- Default = S_NULL
- Sets the frame which a weapon starts in when it is being lowered. If the object is supposed to have any dynamic purpose or be visible, do not leave the downstate at S_NULL.
- readystate
- Default = S_NULL
- Sets the frame which a weapon starts in when it is ready to be fired. If the object is supposed to have any dynamic purpose or be visible, do not leave the readystate at S_NULL.
- attackstate
- Default = S_NULL
- Sets the frame which a weapon goes to if the user tries to perform a primary attack. Though not necessary, it is suggested for weapons to have an attackstate for primary firing purposes.
- flashstate
- Default = S_NULL
- Sets the frame which a weapon jumps to if a codepointer causes a weapon to flash.
- holdstate
- Default = S_NULL
- Sets the frame jumped to by A_ReFire if the player is still holding the primary attack button.
- attackstate2, flashstate2, holdstate2
- Default = S_NULL
- The equivalent of attackstate, flashstate, and holdstate, but for alternate fire.
Selection Order and Weapon Slots
- selectionorder
- Default = -1
- Sets the priority for selection of the weapon. The lower the number, the higher its priority.
- slotnumber
- Default = -1
- Sets the weapon slot that the weapon occupies in the global weapon slots structure. For assigning to player class weapon slots, read weapon slots.
- slotselectionorder
- Default = -1.0
- Sets the in-slot priority for the weapon in the global weapon slots structure. The lower the number, the higher its priority. Read weapon slots if you wish to understand the specifics of how in-slot priority works interacts with player class weapon slots.
Sister Weapon
- sisterweapon
- Default = ""
- Defines a weapon that is also provided when this weapon is picked up. This is can be used either for Tome of Power variants, or for weapons with two different firing modes (used by Strife weapons).
Flags
- flags
- Default = ""
- This field controls a number of weapon info properties using bit flags, where each bit in the field stands for some effect, and has the value of being either on or off. See the Weapon info 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.
- addflags
- Default = ""
- This field specifies a combined list of flags to be added to the weapon's existing flags values (this works the same as the flags field above). Flags in this list are "turned on" in the weapon. If flags are listed here which are already "on," there is no effect on those flags. This field is most useful within weapondelta sections and in concert with weapon info inheritance.
- remflags
- Default = ""
- This field specifies a combined list of flags to be subtracted from the weapon's existing flags values (this works the same as the flags field above). Flags in this list are "turned off" in the weapon, as if they had never been listed. If flags are listed here which are not already "on," there is no effect on those flags. This field is most useful within weapondelta sections and in concert with weapon info inheritance. This field will be applied AFTER the addflags field is applied, so it could potentially turn off flags turned on by that field.