Actor properties
The following properties can be set in an actor's DECORATE or ZScript's Default {}
block definition. They control various characteristics of your actor, from appearance to behavior or the actor's physical properties. To use, simply specify the property and any associated values on its own line within the actor's definition and outside the state block.
Actor properties
Warning: ZScript requires more strict definition of values depending on their type than DECORATE due to stricted type checking. With Name-type properties, values MUST be provided in quotation marks (either double or single quotation marks will work): for example, BounceType 'Doom' or RenderStyle 'Fuzzy' require this, while BounceType Doom will not be recognized. String values must be provided in double quotation marks: for example, Powerup.Color "GoldMap" . Skipping quotation marks for such properties will cause compile error at startup.However, numeric properties (which constitute the majority) are defined the same way both in ZScript and DECORATE. |
Map editing control
- Game gamename
- (Not inheritable; superseded by lump filtering; DECORATE only)
- Defines the game in which the editor number and spawn ID should take effect. For normal custom WADs this is not necessary but it may have some use in resource WADs targeted at multiple games. Valid game names are:
- Chex
- Doom
- Heretic
- Hexen
- Strife
- Raven (Heretic + Hexen)
- Multiple game statements are additive.
- SpawnID value
- (Not inheritable; superseded by MAPINFO; DECORATE only)
- Defines the spawn number to be used with Thing_Spawn and its derivatives.
- ConversationID value
- (Not inheritable; superseded by MAPINFO; DECORATE only)
- Defines the ID used by the Strife's dialogue system. This property allows to use dialogues in all games, not just Strife. If you use ZSDF instead of the binary format or USDF, then this is unnecessary and instead is set on a per-actor basis on the map.
- Note: some standard Strife actors define three numbers here, but for a mod only the first is needed. The latter two are used by the two "teaser" demo versions of Strife, and since ZDoom does not allow to use mods with a demo version, adding support for the Strife teasers in a mod is pointless.
- Tag name
- Gives the actor a name. The names are used in the key display on Strife's status bar and the default actor name in Strife's dialogs, as well as the name of the currently selected inventory item when the invquery console command is called.
Behavior
- Health value
- Defines the health a monster or any other shootable item starts with.
- Default is 1000.
- GibHealth value
- Defines the (negative) health below which this actor enters the extreme death sequence. If this is not set the value depends on the game, as defined in the GameInfo definition with the gibfactor property. In Doom it is the negative of the spawn health, in the other games the half of the negative of the spawn health.
- If there's a need to check an actor's GibHealth, use the GetGibHealth function rather than reading the
gibhealth
variable directly.
- WoundHealth value
- Defines the health below which the actor enters the Wound state. The default is 6.
- ReactionTime value
- Time in tics (1/35 seconds) a monster takes to attack after being alerted. Attacking a monster will cause it to return attack immediately, regardless of reaction time. A negative value will cause a monster to never attack unless attacked first. There is normally no need to change this value but it can be used as a counter for A_Countdown.
- Default is 8.
- PainChance value
- PainChance damagetype, value
- Probability of entering the pain state (256 = always, 0 = never). You can also specify PainChance per damage type. Sources of damage that have the FORCEPAIN flag ignore this property.
- Default is 0.
- PainThreshold value
- Minimum amount of damage required by the actor to potentially enter its Pain state. Sources of damage that have the FORCEPAIN flag ignore this property.
- Default is 0.
- DamageFactor type, value
- DamageFactor value
- If the actor takes damage of the specified type, that damage is multiplied by the specified value.
- A comma is required between type and value. value can be a decimal value; zero means the actor is completely immune to this kind of damage.
- Default is 1.0.
- The maximum this value can go is 32767. DamageFactor is ignored if the damage is 1,000,000 or more.
- See also Custom damage types
- If no type is provided, the factor applies to all damage types, not specified for the actor.
- SelfDamageFactor value
- A multiplier for self-inflicted damage. This is ignored if the damage is 1,000,000 or more.
- Default is 1.0.
- DamageMultiply value
- Generic damage multiplier. This is typically used on actors (e.g monsters) to strengthen or weaken the damage they deal from their attacks.
- Default is 1.0.
- Damage value
- Damage (expression) (DECORATE only)
- For a projectile defines the damage it inflicts upon impact. The formula is random(1,8) * damage, or random(1,4) * damage if the STRIFEDAMAGE flag is set.
- This also defines the damage for actors which attack like the Lost Soul. The formula for this is random(1,8) * damage.
- damage is also used to define how many bullets are fired by the generic hitscan attack function A_BulletAttack.
- In DECORATE custom damage formulas can be specified by enclosing the value completely within parenthesis. For example: damage (random(4,8) * 5 + 6). Also, ACS_ExecuteWithResult and user variables can be used as part of the damage expression; this allows for more sophisticated damage calculations to be performed. The damage formula is evaluated at the moment the actor causes damage (e.g. projectile/hitscan impact). Using an expression for damage bypasses the normal calculation and does the exact damage resulting from the custom formula. To achieve the same in ZScript, use DamageFunction instead. Warning: Custom damage expressions can be defined but will NOT actually work in ZScript (even though console log will not display any errors). Use DamageFunction (described below) to use a custom expression in ZScript.
- To modify the damage of an existing actor instance in ZScript, use SetDamage (since the
damage
field is not modifiable directly). - Default is 0.
- DamageFunction (expression)
- DamageFunction FormulaName()
- (ZScript only)
- Similar to Damage, it defines the damage of the actor. What is passed is always treated as an expression, be it a single value or a formula, and is not subject to randomization like with Damage. This property and Damage are considered to be the same property, i.e. an actor can only have one or the other, but not both. If both are specified, only Damage is used, while DamageFunction is ignored. Note that the function must be defined as a normal function, outside of the Default block. The function can use any name.
- Usage with examples is described in detail on the dedicated DamageFunction page.
- PoisonDamage value [, duration [, period]]
- Gives a projectile poison damage. Poison damage is not inflicted all at once, but affects the victim for a certain amount of time. The value specified here defines the time the poisoning effect lasts. Remember, poison damage only affects players if only value is specified (Hexen-style poison). Otherwise, it also affects other actors (ZDoom-style poison).
- Poison damage is inflicted every period tics (the default value of 0 means once per second). If a non-zero duration is given, it is used for the total length of the poisoning, otherwise the length depends on the value. See also ADDITIVEPOISONDAMAGE and ADDITIVEPOISONDURATION.
- PoisonDamageType type
- Changes the damage type of poison, overriding its default type.
- RadiusDamageFactor value
- Defines the factor radius damage on this actor is multiplied by.
- MissileChanceMult value (New from 4.13.0)
- A multiplier for how likely the actor is to perform a ranged attack. The closer to 0.0 it is, the more likely they are to attack, the higher, the less likely. 0.125 equals MISSILEEVENMORE, 0.5 equals MISSILEMORE, and 0.0625 equals both flags being turned on.
- Default is 1.0.
- RipperLevel value
- Used by projectiles or anything capable of performing with the RIPPER flag. Specifies the 'level' or how high up a projectile can rip through in terms of monsters with different minimum and maximum values.
- A projectile that is below a monster's minimum or above maximum means that projectile will not rip through them. All ripper properties are ignored if the DONTRIP flag is present on the monster, though, and will not rip regardless of level through that particular monster.
- When used on a monster, however, and no min or max is defined, only that specific level can rip through it.
- The value can be negative for this, RipLevelMin and RipLevelMax.
- RipLevelMin value
- Used by monsters. Only projectiles that meet this level or higher can rip through this monster. Default is 0.
- RipLevelMax value
- Used by monsters. Only projectiles that meet this level or lower can rip through this monster. Default is 0, which means anything above the minimum can rip through it.
- DesignatedTeam number
- Assigns the actor to the specified team by its number from TEAMINFO. In team play, the actor will not take friendly fire from teammates unless the teamdamage console variable is set. If the monster is friendly, it will not target teammates.
- Default is no team.
- Speed value
- Defines how fast an actor moves. For projectiles this is the distance it moves per tic (1/35 seconds). For monsters it defines the size of one step done in A_Chase. Player's movement speed also depends on the Player.ForwardMove property.
- Default is 0.
- VSpeed value
- Gives an actor an initial vertical momentum. The higher the value, the more momentum. This is mainly used for special effect actors (e.g. weapon puffs) with the NOGRAVITY flag to make them float upwards.
- FastSpeed value
- Defines the speed for 'fast monsters' and nightmare mode. Please note that if you use this with a monster that monster will have the different speed for the rest of its life. Fast Monster's mode will make monsters and projectiles use their FastSpeed property instead of their defined speed when +fastmonsters or +alwaysfast flag is used. Fast monsters halves the duration of actor states with the Fast keyword. Fast monsters can be set in many ways like using the +ALWAYSFAST flag or +fastmonsters.
- FloatSpeed value
- Defines the speed the object floats up/down when FLOAT flag is set.
- Default is 4.
- Species string
- Defines the species the monster belongs to. This determines infighting behavior, since a monster's missile do not inflict harm (except through splash damage) to other monsters belonging to the same species by default.
- When used with keys, this property allows for new keys to open the same locks as the keys they are referencing with the property, without the need to redefine the locks to add the new keys. For example, setting the key's species to RedCard will allow it to open locks as if it were a red keycard.
- Default is None that makes the game to look up the actor this actor inherits from and has this property set to something else.
- Accuracy value
- Defines the object's accuracy. The higher the value, the more accurate the object is said to be.
- For players, this value is factored into the accuracy calculation for Strife's native weapon-firing functions.
- For monsters and other actors, this value has no predetermined effect, but it can be referenced in other places via the accuracy DECORATE variable and the APROP_Accuracy actor property.
- Stamina value
- Defines the object's stamina.
- For players, each point of stamina will add one point to the player's maximum health pool. The value is also used in the damage calculation for Strife's punch dagger.
- For monsters and other actors, this value has no predetermined effect, but it can be referenced in other places via the stamina DECORATE variable and the APROP_Stamina actor property.
- Activation flags
- Defines how the actor will execute its special. In addition to that, some of these flags allow the actor to call its Activate and Deactivate virtual functions. The details are covered on the Activation page.
- The following flags are available (multiple flags can be combined with
|
between them):
- THINGSPEC_Default — default behavior. This allows the actor to execute its special by being killed, used (with the USESPECIAL flag) or bumped (with the BUMPSPECIAL flag). The trigger (bumper/user/killer) is considered the activator, and only players can trigger this actor.
- THINGSPEC_ThingActs — the actor itself is considered the activator.
- THINGSPEC_TriggerActs — the trigger is considered the activator. This is the default behavior except for specials activated upon the thing's death in maps with the ActivateOwnDeathSpecials level flag. This flag overrides the MAPINFO flag.
- THINGSPEC_ThingTargets — the actor changes its target field to the activator when triggered.
- THINGSPEC_TriggerTargets — the activator changes its target field to this actor when it triggers it.
- THINGSPEC_MonsterTrigger — monsters are allowed to trigger this actor.
- THINGSPEC_MissileTrigger — missiles are allowed to trigger this actor.
- THINGSPEC_ClearSpecial — the actor's special is cleared after execution.
- THINGSPEC_NoDeathSpecial — the actor's special will not execute on death. (This means that it can only be executed by the player provided the actor has USESPECIAL or BUMPSPECIAL.)
- THINGSPEC_Activate — same as THINGSPEC_Default but in addition to that, if the actor is triggered by the player via USESPECIAL or BUMPSPECIAL, the actor will call its Activate ZScript virtual (only once).
- THINGSPEC_Deactivate — same as THINGSPEC_Default but in addition to that, if the actor is triggered by the player via USESPECIAL or BUMPSPECIAL, the actor will call its Deactivate ZScript virtual (only once).
- THINGSPEC_Switch — same as THINGSPEC_Default but in addition to that, if the actor is triggered by the player via USESPECIAL or BUMPSPECIAL, the actor will alternate between calling its Activate and Deactivate virtuals when triggered. By default, it will call Activate the first time it's triggered, but if this is used in conjunction with THINGSPEC_Deactivate, it will call Deactivate first instead.
- Note, for the USESPECIAL/BUMPSPECIAL flags to be effective, the actor also needs the SOLID flag.
- TeleFogSourceType classname
- Defines the fog to leave behind when an actor teleports away. Can be changed with A_SetTeleFog.
- Default is TeleportFog.
- TeleFogDestType classname
- Defines the fog the actor will spawn once it arrives. Can be changed with A_SetTeleFog.
- Default is TeleportFog.
- Threshold value
- Defines how long an actor will stick to one target after switching targets caused by infighting. e.g. if an imp changes targets because it was shot by a zombieman, it must call A_Chase this many times before it's ready to switch again. Note that further attacks which cause pain from the same target reset this value, making them stick with that target longer. QUICKTORETALIATE overwrites this property, and the property is adjustable with A_SetChaseThreshold. Note that this property is reset to DefThreshold, allowing monsters to have flexible infighting timers.
- DefThreshold value
- Sets the default threshold reset value when the actor switches monster infighting. Adjustable with A_SetChaseThreshold.
- FriendlySeeBlocks value
- (Warning: setting this property to high values is not recommended, as it could have a negative impact on performance.)
- Defines the maximum radius that a friendly monster or unfriendly monster with SEEFRIENDLYMONSTERS on can see enemies within. This is measured in blocks of 128x128 map units.
- Default is 10 (1280 map units).
- ShadowAimFactor value
- Defines how much the actors' aim is degraded when shooting at actors with SHADOW and/or SHADOWBLOCK. Allowing the shooter to be better or worse at shooting shadow actors than normal. Default is 1.0.
- ShadowPenaltyFactor value
- Used by actors with SHADOW and/or SHADOWBLOCK to increase or decrease the amount by which they worsen the aim of actors shooting at or through them by. Default is 1.0.
Collisions and physics
- Radius value
- Defines the radius of this actor.
- Default is 20.
- Notes:
- Using very small values can provoke glitches in collision detection.
- The total diameter is double this value, so an actor with a radius of 64 is actually 128 units in length and width, making it impossible for them to navigate through a corridor that's 128 units wide, for example.
- Height value
- Defines the height of this actor.
- Default is 16.
- Note: using very small values can provoke glitches in collision detection.
- DeathHeight value
- Defines the height this actor has after dying.
- Default is 1/4 of the original height.
- BurnHeight value
- Defines the height this actor has after dying by fire.
- Default is 1/4 of the original height.
- ProjectilePassHeight value
- Defines the height of the actor for the purposes of allowing projectiles to pass through. If this is 0, the actor's height is used. If the value is positive, it overrides the actor's height in the context of projectile collision: setting it to a value lower than the actor's Height will reduce its hitbox for projectiles vertically, while setting it to a higher values will increase it. For example, if Height is 60 but ProjectilePassHeight is 70, projectiles will be able to hit the monster if they fly within 10 units above its "head", while if Height is 60 but ProjectilePassHeight is 30, projectiles will pass through the actor if they hit it above 30 units from its bottom.
- If the value is negative, the absolute value will be used if the associated compatibility option is turned on.
- Gravity value
- The amount of gravity that affects this actor. Values less than 1 reduce gravity, while values greater than 1 increase it.
- Default is 1.0.
- Friction value
- Mass value
- Defines the mass of this actor. The larger the mass the less an actor moves when being thrust by damage. If less than 10, the actor will also make small terrain splashes rather than normal ones.
- Default is 100.
- Note: giving an actor extremely high mass in an effort to make it unthrustable should be avoided in favor of using the DONTTHRUST flag. High mass does not exclude the actor from thrust calculations, which may affect performance. In addition, if an actor is stuck in another one or in a wall, and then gets thrust by damage or A_RadiusThrust, it could be killed almost instantly if RTF_NOIMPACTDAMAGE is not used.
- MaxStepHeight value
- Defines the maximum height of a step this actor can climb up when moving. Default is 24.
- MaxDropOffHeight value
- Defines the maximum height of a step this actor can climb down when moving. Normally this only applies to monsters but when you set the NODROPOFF flag it applies to all forms of movement.
- Default is 24.
- MaxSlopeSteepness value
- Defines the maximum incline of a slope that can be walked on when moving, based on the Z component of its normal. Thus, a value of 1 would make only perfectly flat floors walkable, while any slope would push down the actor and a value of 0 would make practically any kind of slope walkable, no matter how steep.
- Default is STEEPSLOPE (46342 / 65536 = 0.707122...), which limits movement to slopes of 45 degrees and below.
- BounceType name
- Defines the way the actor bounces. See also bounce flags. Valid names include:
- None: actor does not bounce at all. This is the default value.
- Doom: actor bounces off planes and walls until it loses enough momentum to stop.
- Heretic: actor bounces off planes only — and is put in its Death state when bouncing!
- Hexen: actor bounces off planes and walls.
- Classic: actor bounces off planes only, and is considered an MBF bouncer.
- Grenade: actor bounces off planes and walls, and is considered an MBF bouncer.
- DoomCompat, HereticCompat, HexenCompat: same as Doom, Heretic or Hexen respectively, but the actor uses its SeeSound instead of its BounceSound and WallBounceSound.
- Defines the way the actor bounces. See also bounce flags. Valid names include:
- BounceFactor value
- Defines the factor to which this actor's momentum will be reduced when bouncing off of ceilings and floors. This only has an effect if BounceType is not None. Default is 0.7. The WallBounceFactor property can be used to decrease the actor's momentum when it bounces off of walls.
- WallBounceFactor value
- Defines the factor this actor's momentum will be reduced for when bouncing off walls. This only has an effect if BounceType is not None. Default is 0.75.
- BounceCount value
- Defines the amount of bounces this actor can do before it explodes. This only has an effect if BounceType is not "None". The default is infinite but for example Strife's incendiary and explosive grenades only bounce twice before exploding.
- ProjectileKickBack value
- Similarly to Weapon.KickBack, this affects how far the projectile will push its target upon impact. This property overrides a weapon's kickback for projectiles thrown by weapons.
- PushFactor value
- Defines how much an actor with the PUSHABLE flag set can be pushed around. The pusher's momentum is multiplied by this amount and applied to the pushed actor. The default value is 0.25. A value of 0.0 is equivalent to not having the flag set, while a value greater than 1.0 makes it move faster than the pusher.
- WeaveIndexXY value
- Defines the initial weave index for projectiles using the A_Weave, A_BishopMissileWeave and A_CStaffMissileSlither functions. The value must be in the 0—63 range.
- WeaveIndexZ value
- Defines the initial weave index for projectiles using the A_Weave, A_BishopMissileWeave and A_CStaffMissileSlither functions. The value must be in the [0,63] range.
- ThruBits value
- Allows defining collision disabling 'groups' with bit shifted numbers. This only takes effect if ALLOWTHRUBITS is on the actor.
- Default is 0, which collides with everything no matter what group is defined for others.
enum EGroups { ThruGroup1 = 1 << 0, ThruGroup2 = 1 << 1, //... ThruGroup31 = 1 << 30, ThruGroup32 = 1 << 31 // This is the highest it can go, totaling in 32 groups. }; Default { +ALLOWTHRUBITS // The flag is needed to activate it. // Anyone who is in 'ThruGroup3' or 'ThruGroup4' will pass through as well. Groups can be combined with the '|' symbol without the . ThruBits (ThruGroup3|ThruGroup4); }
Sound
- ActiveSound soundname
- Defines the sound the actor makes when active.
- Melee attack puffs will play this sound (if defined) when the attack misses (hits nothing or a sky plane).
- AttackSound soundname
- Defines the sound the actor makes when attacking.
- Puffs will play this sound when the attack hit a wall/plane. Bullet puffs can also play this when the attack hits nothing (i.e. hits a sky plane, or ends in the air due to limited range), provided the puff has ALWAYSPUFF.
- BounceSound soundname
- Defines the sound the actor makes when bouncing. If WallBounceSound is defined, applies only when bouncing off a floor.
- CrushPainSound soundname
- Defines the sound the actor makes when being crushed.
- DeathSound soundname
- Defines the sound the actor makes when dying or when a projectile explodes. For non-projectiles the death sound must be explicitly played with A_Scream.
- HowlSound soundname
- Defines the sound the actor makes when being electrocuted or poisoned.
- PainSound soundname
- Defines the sound the actor makes when in pain. To hear this sound A_Pain has to be called.
- RipSound soundname
- Defines the sound the projectile makes when it rips through damage-able actors.
- Default is "misc/ripslop".
- SeeSound soundname
- Defines the sound the actor makes when it sees the player (for monsters) or when a projectile is spawned.
- Puffs will also play this sound when the attack hit a shootable non-bleeding actor. Puffs can also play this when hitting a shootable bleeding actor, provided they have the right flags (PUFFONACTORS for bullet and melee puffs, and ALWAYSPUFF for railgun puffs).
- WallBounceSound soundname
- Defines the sound the actor makes when bouncing off a wall. If this property is not defined, the BounceSound is played instead.
- PushSound soundname
- Defines the sound the actor makes when pushed by another actor. This only works on actors with PUSHABLE.
Rendering
- RenderStyle type
- Defines how this actor is rendered. Possible values include:
- 'None' - actor is invisible.
- 'Normal' - actor is visible and not translucent.
- 'Fuzzy' - like the Spectre in Doom.
- 'SoulTrans' - actor is translucent, to an amount determined by the transsouls CVAR.
- 'OptFuzzy' - actor is fuzzy or translucent, based on user preference.
- 'Stencil' - actor is drawn as a single color. Use StencilColor property to set the color to use. Note that internally this sets the actor's
renderstyle
field to STYLE_Stencil, but if the Alpha value is set to something below 1.0,renderstyle
will be set to STYLE_TranslucentStencil instead, and translucency will be enabled on the actor. - 'AddStencil' - the same as 'Stencil', only additive.
- 'Translucent' - actor is translucent.
- 'Add' - actor uses additive translucency.
- 'Subtract' - actor uses reverse-subtractive translucency.
- 'Shaded' - treats 8-bit indexed images as an alpha map. Index 0 = fully transparent, index 255 = fully opaque. This is how decals are drawn. Use StencilColor property to colorize the resulting sprite.
- 'AddShaded' - the same as 'Shaded', only additive.
- 'Shadow' - equivalent to black translucent stencil with an alpha of 0.3.
- Default is 'Normal'.
- The internal renderstyle constants can be found here.
- Defines how this actor is rendered. Possible values include:
- Alpha value
- Defines the opacity/intensity for render styles Translucent, Add, Subtract and Stencil. The range is [0.0, 1.0].
- Default is 1.0.
- DefaultAlpha
- Sets the alpha value of the actor to 0.4 when playing Heretic, and to 0.6 when playing the other games.
- StealthAlpha value
- Defines the minimum visibility value of a stealth monster.
- Default is 0.
- XScale value
- Defines the X-scaling for this actor. Negative values are valid, and will result in mirroring the sprite on the axis. The range is [-4.0, 4.0].
- Default is 1.0.
- YScale value
- Defines the Y-scaling for this actor. The range is [0.0, 4.0].
- Default is 1.0.
- Scale value
- Combines XScale and YScale. The range is [0.0, 4.0].
- Default is 1.0.
- LightLevel value
- Specifies the absolute light level of the actor, independent of the sectors' light level. This value can range from 0 to 255. The ADDLIGHTLEVEL flag makes this property add or subtract from the actors' current sector light level.
- Default is -1, which means that the actor only uses the sectors' light level.
- Translation value
- Sets one of Doom's standard translations (which translate the color green range) as default. The range is 0-2 and corresponds to the standard Doom translations of gray (0), brown (1), and red (2). Strife defines more, but they can be used only while playing it.
- Default is no translation.
- Translation translationstring [, translationstring [,....]]
- Translation "translationname"
- Defines a custom translation for this actor. There can be 65536 custom translations at the same time. All specified translation strings are added to create one final translation table (see Translation for the syntax of translation strings).
- The translation can either be set directly, or defined in TRNSLATE and then referenced by its name.
- Translation Ice
- This special usage of the Translation property will instruct ZDoom to use the built-in ice translation when rendering this actor. The main advantage of this is for GZDoom, where the ice range uses colors outside the normal Doom palette and is thus difficult to recreate with a normal translation.
- BloodColor color
- Sets the actor's blood color. There can be up to 256 different custom blood colors at the same time. color is either specified as 3 integers, a string "rr gg bb" or a string containing one of the special color names.
- BloodType replaceblood [, replacebloodsplatter [, replacebloodaxe]]
- Tells ZDoom what class to spawn when the actor is hit with a weapon, replacing the standard blood. If only one type is specified it will be used for all 3 blood actors.
- Decal decalname
- Allows specifying the decal this actor creates here instead of having to edit the DECALDEF lump as well.
- Decals can be inherited this way instead of being specified for each actor. Note that the standard Doom projectiles' decals are defined through DECALDEF and custom actors based on them will not inherit their decals.
- Decals can be specified within weapon definitions or bullet puff definitions. If both exist, the weapon definition takes precedence unless the FORCEDECAL flag is set on the puff.
- Railgun puff decals require the FORCEDECAL flag to be set on the puff.
- If a projectile is to leave a decal, it must exist for at least a tic in its Death state — otherwise no decal will be sprayed.
- StencilColor color
- Sets the color to use when using the Stencil or Shaded RenderStyle.
- FloatBobPhase value
- Sets the initial bob phase for the actor. Actors with the same phase value bob in-sync with each other. The range of phases is from -1 to 63, with -1 randomly choosing phase from the [0,63] range.
- Default is -1.
- FloatBobStrength value
- Sets the magnitude of the bobbing behavior created by the FLOATBOB flag, effectively determining the distance the actor will cover when bobbing. A value of 1.0 produces the behavior seen in Heretic and Hexen, while higher and lower numbers produce a more and less extreme bobbing, respectively. Note, this only changes the distance covered when bobbing, but not the time it takes to cover that distance.
- Default is 1.0.
- FloatBobFactor value (New from 4.13.0)
- Sets the speed of the bobbing behavior created by the FLOATBOB flag. The lower it is, the faster the actor will visually bob up and down (so, 0.5 means twice as fast, 2.0 means half as fast). This value must always be higher than 0.
- Default is 1.0.
- DistanceCheck cvarname
- An actor with this property is not rendered if the player's view is at a distance away from the actor which is equal or greater than the value of the specified console variable. Only integral console variables are acceptable.
- SpriteAngle angle
- Sets the absolute angle for the sprite to draw at that given angle. This requires +SPRITEANGLE to have any effect, and once enabled, overrides all other sprite angle properties. This does not affect an actor's actual angle, rather the sprite a player would see if viewing them from that angle instead. Useful for things like decals, FLATSPRITE, and more. See GetSpriteAngle and A_SetSpriteAngle for manipulation at runtime.
- 0 is the actor's backside.
- 90 is the actor facing to the right.
- 180 is the actor's front. Etc.
- SpriteRotation angle
- Offsets the actor's sprite angle in degrees. This allows for actors to visibly face one direction while truly looking another way. Use GetSpriteRotation and A_SetSpriteRotation for manipulation at runtime.
- VisibleAngles start, end
- VisiblePitch start, end
- Defines the range to draw the sprite if the player camera is looking at it from that particular angle/pitch range. Viewing it from outside this range will not render it. Can be modified with A_SetVisibleRotation.
- Note: these properties require setting the MASKROTATION flag to work. Also, they must be used together to work correctly (bug?).
- RenderRadius radius
- Defines visual collision box in a similar manner to Radius. The actor is guaranteed to be drawn if any sector within this range is drawn, even if actor's main sector is not visible. This also affects dynamic lights around the actor, which is useful for ensuring distant lights illuminating an actor with a large model properly.
- If this value is smaller than Radius, Radius is used instead. A value of 0 restricts the actor to its source sector, matching vanilla Doom engine behavior; while a value of -1 causes the actor to be removed even from the source sector's render list, which can be useful to optimize performances of actors supposed to be invisible.
- Default is 0.0.
- CameraHeight value
- Defines the height to render the view at when the actor is used as a camera.
- CameraFOV value
- Defines the field of view when the actor is used as a camera.
- Default is 90.0.
- AutomapOffsets (value, value) (ZScript only)
- Visually offsets the position that the actor is rendered at on the automap, when displaying sprites is enabled. Can be used for effects like having an actor made of multiple parts (Like a vehicle with a turret) render properly, instead of appearing sunken in due to both actors occupying the same XY position. This is a vector2 property, so it's set like this
AutomapOffsets (20,40);
- Default is (0,0).
- Visually offsets the position that the actor is rendered at on the automap, when displaying sprites is enabled. Can be used for effects like having an actor made of multiple parts (Like a vehicle with a turret) render properly, instead of appearing sunken in due to both actors occupying the same XY position. This is a vector2 property, so it's set like this
Obituaries
Obituaries are messages displayed in the log when a player is killed by a monster, projectile or weapon. The string can be either used directly in the DECORATE code, or put in a LANGUAGE lump and referred to by its identifier. Starting a string with the $ character marks it as an identifier. The following placeholders can be used within the string itself:
- %o: victim's name
- %k: killer's name
- %g: he/she/they/it, depending on the gender of the victim
- %h: him/her/them/it
- %p: his/her/their/its
- %s: his/hers/theirs/its
- %r: he's/she's/they're/it's
The actors defined in gzdoom.pk3 always use a reference to an identifier in the LANGUAGE lump; however for reference purposes the corresponding English string is provided as a comment. You can override a standard obituary by redefining it in a custom LANGUAGE lump, avoiding the need to replace the entire actor.
Note that in deathmatch, if the cl_bbannounce console variable is true, the Bloodbath announcer replaces weapon obituaries by its own random strings.
- HitObituary string
- Defines the obituary string for a melee attack by this actor, which is identified as such by its damage type being Melee. If not present Obituary is used instead.
- Obituary string
- Defines the obituary string for this actor. For weapons, this property can be used either directly on the weapon or on the puff for hitscan or rail attacks, but it should be on the projectile instead for missile attacks.
Attacks
- MinMissileChance value
- This is one part of the missile attack probability calculation. The lower this value is the more aggressive the monster is. This can be combined with the MISSILEMORE and MISSILEEVENMORE flags.
- Default value is 200.
- DamageType type
- The attack uses a specific damage type. A number of predefined damage types are available, but it is possible to define your own custom damage types. Damage types are identified only by their name and do not need to be declared anywhere else. An attack can only use the last defined DamageType assigned to it, so more than one DamageType on an attack is pointless.
- DeathType type
- The attack uses a specific death type, which overrides its damage type. Death types are identified only by their name and do not need to be declared anywhere else. This can be useful to combine special Death animations with a variety of different DamageFactors.
- MeleeThreshold value
- The actor with this property set will not attack its target with a missile attack if it is within the specified range, but rather (if chasing) attempt to close in to engage in melee. To be used in place of the old LONGMELEERANGE flag.
- MeleeRange value
- Specifies the maximum distance to a target where a melee attack inflicts damage. Distance is calculated from the attacker's center to the target's bounding box.
- All monster melee attacks use this value for melee range. This include A_BasicAttack, A_ComboAttack, A_CustomComboAttack, A_CustomMeleeAttack, A_MeleeAttack, and so on.
- Default is 44.
- MaxTargetRange value
- A monster with this property set will not attack its target unless it is within the specified range. To be used in place of the deprecated SHORTMISSILERANGE flag. This is used by A_Chase and similar functions.
- Seeker missiles have a special use for this property. See A_SeekerMissile for more information.
- MeleeDamage value (deprecated)
- MeleeSound soundname (deprecated)
- MissileHeight value (deprecated) (Except with FastProjectile)
- MissileType classname (deprecated) (Except with FastProjectile and a few others)
- These properties served as parameters for A_MeleeAttack, A_MissileAttack and A_ComboAttack. However, these three functions have been superseded by parameterized versions called A_CustomMeleeAttack, A_CustomMissile and A_CustomComboAttack, respectively.
- Note that FastProjectile, ArtiPoisonBagShooter, ArtiPoisonBagGiver, and classes using A_LightningZap or A_LastZap make special use of the missile properties.
- ExplosionRadius value
- A_Explode will use this value as the explosion's radius, unless a different value is provided in the function call itself. This property can be useful for inheritance purposes, to override explosion radius in a child actor without the need to change the state where it calls A_Explode.
- ExplosionDamage value
- A_Explode will use this value as the explosion's damage, unless a different value is provided in the function call itself. This property can be useful for inheritance purposes, to override explosion damage in a child actor without the need to change the state where it calls A_Explode.
- DontHurtShooter (deprecated)
- These properties were used to pass the parameters to A_Explode. Now that A_Explode allows passing the parameters directly there is no need to use these except for compatibility with older definitions.
- PainType type
- The attack uses a specific pain type, which overrides its damage type. Pain types are identified only by their name and do not need to be declared anywhere else. This can be useful to combine special scripted effect based on custom Pain states with a variety of different DamageFactors.
Flag combos
- Monster
- Sets all appropriate flags to make this actor act like a regular monster. The following flags are set:
- Projectile
- Sets all appropriate flags to make this actor act like a regular projectile. The following flags are set:
- When playing Heretic or Hexen BLOODSPLATTER is also set.
Special
- Args arg0[, arg1[, arg2[, arg3[, arg4]]]]
- Hardcodes arguments of the actor, they can be any integer value. They will override any argument set in the map editor; using this property is therefore generally not recommended unless if making actors for the Doom map format or actors for the Hexen map format that needs argument values outside the [0,255] range.
- ClearFlags
- Clears all flags previously set.
- DropItem classname [, probability [, amount]]
- The item the actor is set to drop, which can be any actor class and not just inventory. The action of dropping the item is performed by A_NoBlocking, which is typically called during the death sequences of the actor. Optionally the probability can be specified. A probability of 255 or greater means the item is always dropped, while a probability of -1 or less means it is never dropped. When classname is None the drop list will be completely removed.
- amount is only applicable to the Inventory class and derivatives. It specifies how many samples the dropped item contains.
- RandomSpawner, BossEye, SpawnShot, Weapon and Skulltag's CustomMonsterInvasionSpot and CustomPickupInvasionSpot use this property differently.
- There can be more than one dropitem definitions for an actor. The amount of definitions per actor is unlimited.
- dropitem works differently with inherited actors. An actor can inherit a list of dropitem definitions from its parent but if it defines one of its own the entire parent's list is discarded. This parameter does not work for players.
- Spawn (deprecated)
- See (deprecated)
- Melee (deprecated)
- Missile (deprecated)
- Pain (deprecated)
- Death (deprecated)
- XDeath (deprecated)
- Burn (deprecated)
- Ice (deprecated)
- Disintegrate (deprecated)
- Raise (deprecated)
- Crash (deprecated)
- Wound (deprecated)
- Crush (deprecated)
- Heal (deprecated)
- These keywords were originally used to remap states. However, as of 2.1.0 they have been deprecated because now it is possible to place goto statements right behind state labels which gives the same effect in a way that is much cleaner and more flexible.
- States
- Defines an actor's states.
- Skip_Super
- Reinitializes the actor as if it has no parent. This can be used to have access to the parent's states without inheriting its attributes.
- VisibleToTeam team_number
- VisibleToPlayerClass classname[, classname2[, classname3[, ...]]]
- Same as VisibleToTeam, but for player classes.
- Can be combined with VisibleToTeam. Originally a Skulltag feature.
- Instead of just one class, a comma-separated list of classes can be given. Note that this property uses inheritance, so if an actor is visible to class DoomPlayer, it will be visible by all classes derived from DoomPlayer as well.
Additional properties
Subclasses of Actor may have additional properties. Most notably, Inventory and its own subclasses (such as Weapon) do; they are listed with their respective classes. PlayerPawn also defines its own properties.
Inventory
Note that all of Inventory's subclasses (Ammo, Weapons, etc.) can be used with the following inventory properties. The Inventory base class defines the following properties which are available to all inventory subclasses:
- Inventory.Amount value
- Sets the amount of inventory items given by this item. Mostly used for item types that give larger quantities.
- If the item in question is ammo and was dropped by another actor via A_DropItem or A_NoBlocking, its amount will be reduced by half by default. This can be changed by modifying the ammo's DropAmount property, or the DropAmmoFactor value in your custom skill definition.
- Inventory.DefMaxAmount
- Sets the maximum amount the player can carry of this item to the game's default. That is normally 16 for Heretic and 25 for the other games, but can be changed in MAPINFO through the GameInfo section.
- Inventory.MaxAmount value
- Sets the maximum amount the player can carry of this item.
- Inventory.InterHubAmount value
- Sets the maximum amount the player can keep of this item when traveling between hubs or non-hub levels. The default value of one replicates the original behavior of Heretic. This property replaces the deprecated INVENTORY.INTERHUBSTRIP.
- Inventory.Icon sprite
- Defines the icon this item uses when displayed in the HUD or status bar.
- Inventory.AltHUDIcon sprite
- Defines the icon this item uses when displayed in the alternate HUD. This is of use with keys, weapons, ammunition and artifacts.
- Inventory.PickupMessage message
- Defines the message that is printed when the player picks up this item. Strings from the LANGUAGE lump can be used by passing the string's identifier prefixed with '$'. For Health items, this can be overriden by the Health.LowMessage property.
- Inventory.PickupSound sound
- Defines the sound that is played when a player picks up this item.
- Inventory.PickupFlash actor
- Defines what actor should appear when the item is picked up; normally this would be used with the PickupFlash actor to make a flash appear as the player picks up the item. If this is not specified there will be no flash when the item is picked up.
- Inventory.UseSound sound
- Defines the sound that is played when a player uses this item. The sound is played on the item channel (CHAN_ITEM) with normal attenuation.
- Inventory.RespawnTics value
- Defines the time it takes until this item respawns (if respawn is enabled) in 1/35 of a second.
- Inventory.GiveQuest value
- Also give a quest item for controlling Strife's dialogs when picking up this one. value can be in the range of [1..31]
- Inventory.ForbiddenTo classname[, classname2[, classname3[, ...]]]
- Prevents players using one of the listed classes (use actor names, not Player.DisplayName) from picking up this type of inventory item. Note that unless playing in cooperative mode, a forbidden player will still try to pickup a Weapon or WeaponPiece for ammunition, as in Hexen. Use an empty string (e.g., Inventory.ForbiddenTo "") to clear an inventory item of inherited interdictions.
- Inventory.RestrictedTo classname[, classname2[, classname3[, ...]]]
- Prevents players not using one of the listed classes (use actor names, not Player.DisplayName) from picking up this type of inventory item. Note that unless playing in cooperative mode, a forbidden player will still try to pickup a Weapon or WeaponPiece for ammunition, as in Hexen. Use an empty string (e.g., Inventory.ForbiddenTo "") to clear an inventory item of inherited restrictions.
FakeInventory
- FakeInventory.Respawns
- Preserves the item's Thing special and arguments when respawning. This property is specific to FakeInventory, and not shared by other Inventory subclasses, because of differences in the ways FakeInventory handles its special and arguments.
BasicArmorPickup
- Armor.SaveAmount amount
- The amount of armor that this item gives.
- Armor.SavePercent percentage
- The percentage of damage that the armor absorbs.
- Percentage is specified as a floating point value between 0.0 and 100.0 which is converted internally to a floating point value between 0.0 and 1.0
- Armor.MaxFullAbsorb amount
- The amount of damage that this armor will fully absorb per tic.
- Armor.MaxAbsorb amount
- The maximum amount of damage (after adjustment) that this armor will absorb per tic.
BasicArmorBonus
- Armor.SavePercent percentage
- The percentage of dealt damage that the armor absorbs.
- Percentage is specified as a floating point value between 0.0 and 100.0 which is converted internally to a floating point value between 0.0 and 1.0
- Armor.MaxSaveAmount amount
- Sets the maximum amount of armor you can reach by picking up this item.
- Armor.SaveAmount amount
- The amount of armor that this item gives.
- Armor.MaxBonus amount
- The amount of armor you obtain additionally to your save amount value.
- Armor.MaxBonusMax amount
- The maximum additional save amount you can obtain with the armor.
Weapon
- Weapon.AmmoGive amount
- Weapon.AmmoGive1 amount
- The amount of primary ammo you receive from this weapon.
- Weapon.AmmoGive2 amount
- The amount of secondary ammo you get from picking up the weapon.
- Weapon.AmmoType type
- Weapon.AmmoType1 type
- The type of primary ammo the weapon uses. This must be a valid ammo type.
- Weapon.AmmoType2 type
- The type of secondary ammo the weapon uses.
- Weapon.AmmoUse amount
- Weapon.AmmoUse1 amount
- The amount of primary ammo the weapon uses per shot.
- Weapon.AmmoUse2 amount
- The amount of the secondary ammo that the weapon uses per shot. Normally secondary ammo is used by the secondary attack but if the WEAPON.PRIMARY_USES_BOTH flag is set the primary attack will use both types of ammo for each attack.
- Weapon.MinSelectionAmmo1 amount
- A weapon with this property will not be auto-switched to if the available amount of ammo for the primary attack is less than the value specified. The weapon can still be switched to manually, however.
- Weapon.MinSelectionAmmo2 amount
- A weapon with this property will not be auto-switched to if the available amount of ammo for the secondary attack is less than the value specified. The weapon can still be switched to manually, however.
- Weapon.BobPivot3D (x, y, z) (ZScript only)
- (Need more info)
- Default is (0.0, 0.0, 0.0).
- Weapon.BobRangeX amount
- Range multiplier for horizontal bobbing.
- Default is 1.0.
- Weapon.BobRangeY amount
- Range multiplier for vertical bobbing.
- Default is 1.0.
- Weapon.BobSpeed amount
- Bobbing speed multiplier. Affects how quickly the bobbing motion occurs.
- Default is 1.0.
- Weapon.BobStyle type
- The type of bobbing to use. Possible values include Normal, Inverse, Alpha, InverseAlpha, Smooth, and InverseSmooth.
- Normal is the default value and corresponds to the bobbing motion used in all old Doom-engine games.
- Alpha is the bobbing motion used in the alpha versions of Doom.
- Smooth is a smoother version of the normal style.
- Inverse* types mirror the motion vertically compared to the non-inverse version. InverseAlpha lowers the weapon sprite while bobbing; the others raise it.
- Weapon.KickBack amount
- How far attacks by this weapon push the enemy back. Damage is also a factor in kickback.
- Weapon.DefaultKickBack
- Weapons with this property have a kickback value which is specified by the defkickback MAPINFO property.
- Weapon.ReadySound sound
- The sound the weapon plays in its ready state.
- Weapon.SelectionOrder value
- Defines the place in the weapons list when ammo runs out. Lower numbers have higher priority. The standard Doom II weapons range from 100 for the Plasma Rifle to 3700 for the Fist.
- Weapon.SisterWeapon weapontype
- Defined weapon is also given when flagged weapon is picked up. Used primarily for Tome Of Power attacks but it can also be used to create weapons with 2 distinct attack modes. Several Strife weapons use this.
- Weapon.SlotNumber value
- Default slot for this weapon. For mods that want to add new weapons without completely redoing the player's arsenal. For other ways to assign weapons to slots, see weapon slots.
- Weapon.SlotPriority value
- Selection order within slot for this weapon. This is a floating-point value. Higher numbers mean higher priority.
- Weapon.UpSound sound
- The sound played when the select state is called.
- Weapon.WeaponScaleX value
- The horizontal scale multiplier of the weapon's HUD sprite.
- Default is 1.0.
- Weapon.WeaponScaleY value
- The vertical scale multiplier of the weapon's HUD sprite.
- Default is 1.2.
- Weapon.YAdjust amount
- Shifts the HUD sprites vertically when the status bar is off. Note: positive y values shift the weapon down.
- Weapon.LookScale amount
- Multiplier for the player's look sensitivity. Operates identically to the look sensitivity for FOV scaling, but without changing the FOV.
Ammo
- Ammo.BackpackAmount amount
- The amount of this ammo type received from a backpack.
- Ammo.BackpackMaxAmount amount
- The maximum amount of this ammo type that can be carried with a backpack.
- Ammo.DropAmount amount
- Specifies the amount of ammo a dropped item without any explicit amount given contains. By default ammo amount is reduced by half when it's dropped by enemies, but this property can override that. Note that dropped amount can also be explicitly set in the DropItem property.
WeaponPiece
- WeaponPiece.Number number
- The piece number. This can be a value between 1 and 32. To complete a weapon all available pieces as specified in the weapon must be picked up.
- WeaponPiece.Weapon weapontype
- The weapon this item helps to assemble.
Health
- Health.LowMessage value, message
- When pickupper's health is lower than value, the pickup message is set to message.
PuzzleItem
- PuzzleItem.Number value
- Defines the number that has to be used with UsePuzzleItem to identify the item.
- PuzzleItem.FailMessage string
- Message to be displayed when this item is used and not the one requested by UsePuzzleItem.
- PuzzleItem.FailSound sound
- Sound to be played when the item is used, but is not the one requested by UsePuzzleItem. Default is the player class specific *puzzfail sound.
PlayerPawn
- Player.AirCapacity value
- Sets the air supply for the player class. This acts as a multiplier for the level's air supply value. A value of 2 will double the air supply, for instance. A value of 0 or less means the air supply is infinite, and thus the player class cannot drown.
- Default is 1.0.
- Player.AttackZOffset value
- The height offset (in Doom map pixels) from the center of the player at which his attacks are fired. Scales according to crouched height.
- Default is 8.
- Player.ClearColorSet number
- Removes a color set from the player class. This allows to remove color sets inherited from a parent class.
- Player.ColorRange start, end
- Defines the color range in which to translate the player's sprite.
- Default is no translation (0, 0).
- Player.ColorSet number, name, start, end, color [...]
- Defines a preset color set for the player class. The number must be unique. The name is used to identify the preset in the player setup menu. The start and end parameters determine the translation for the ColorRange, and the color parameter is used as the visual identifier for the set in the scoreboard.
- Up to six additional color ranges can be defined, each with four parameter for range_start, range_end, first_color and last_color, in this order. See StrifePlayer for an example.
- Player.ColorSetFile number, name, table, color
- Defines a preset color set for the player class. The number must be unique. The name is used to identify the preset in the player setup menu. The translation is indicated by a translation table lump using the format defined by Hexen (TRANTBL0 to TRANTBLD). The color parameter is used as the visual identifier for the set in the scoreboard.
- Player.CrouchSprite sprite
- Defines the sprites for when your skin is crouching. If you don't define them your sprite will shrink half its vertical size to show it is crouching. For the crouch sprites you have to define all frames apart from the dying and gib frames. Please note that there is no "Crouch" state that is definable for players, as the engine would not support such a feature. Players need to be able to move seamlessly between crouching and standing during any given state (See, Missile, Melee, etc.) without losing their place in that state, hence there can be no generic "Crouch" state to jump to.
- Player.DamageScreenColor color[, intensity[, damagetype]]
- The color the player's display turns when the player is in pain. This can be specified as three hex values for R, G, B respectively, or as a literal color name (e.g. "blue"). If this isn't defined, it defaults to red. The intensity of the flash can be scaled from 0.0 to 1.0. If a damagetype is specified, the color only applies when the last damage type received is that type. If there is no color specified for a given damage type, it defaults to what is set without one.
- Player.DisplayName string
- This is the identification string of the player class. It is used in addplayerclass KEYCONF command, in playerclass console variable, in skin definitions, and in menus. Each player class used in game must have an unique display name!
- Player.Face string
- This is the three-character prefix that will be used by the status bar face display built into DOOM and by custom status bars that define faces; note that with custom status bars in SBARINFO, faces can be used in all games (not just DOOM), provided the necessary graphics are supplied. This is like the face property of S_SKIN but for player classes. To include a status bar face you must put the 3 first letters of the sprite for the face here. For example, if one of the animations was BUGST00 you would put Face "BUG".
- When deciding which face to use, the engine checks for STF**** (DOOM games only), the SBARINFO face, the current player class face, the face of the currently loaded skin and finally the morphed animal player class face; whichever it finds last "wins".
- The engine also maintains faces across morphing; for example, if you were playing deathmatch in HeXen and have loaded an SBARINFO which defines faces for the fighter and also a DECORATE script containing a custom morph attack weapon that changes your enemy into a dog and includes dog face graphics; if you are turned into a dog, the status bar would change to show your face as a dog and turn back to a human again when you unmorph.
- Player.FallingScreamSpeed value_min, value_max
- When a player is falling within this range of speeds, they will play *falling sound.
- Default is (35.0, 40.0).
- Player.FlechetteType string
- Type of fléchette used by this player class.
- Player.FlyBob value
- A multiplier for how much the players' view and height bobs up and down when they are flying and the fviewbob console variable is on.
- Default is 1.0.
- Player.ForwardMove value[, value-run]
- Speed modifier for forward/backward movement. The value is for walking and value-run is for running.
- Default is 1 for both values. The default run speed is double the walking speed, so Player.ForwardMove 1, 0.5 would disable running.
- Player.GruntSpeed value
- The minimum speed a player must be falling at the time of landing to play *grunt sound.
- Default is 12.0.
- Player.HealRadiusType string
- The nature of the healing effect the player offers to his allies in cooperative multiplayer when using a Mystic Ambit Incant.
- Value can be Health, Armor or Mana. Default is Health.
- The player's armor class values in Hexen. All values must be a multiple of five (they are divided by five when displayed on the HUD). Base value is the player class's minimum, all other values are the increases gained by picking up the corresponding Hexen armor item.
- Player.InvulnerabilityMode string
- The secondary effect an invulnerability powerup will have on the player, in addition to the invulnerability and display gimmick.
- Ghost will make the player phase in an out of ghost mode rapidly; Reflective will make the player reflect projectile attacks.
- Default is unnamed. To obtain the default effect, just make sure the line is not present.
- Player.JumpZ value (fixed point)
- The player's jump speed. The player's jump height in normal gravity is (value × (value + 1)) / 2). A player can still climb their MaxStepHeight while jumping, allowing to reach heights higher than indicated purely by the jump height. For example with the default values, a player can climb a height of up to 60 map units: 36 from jump, 24 from step.
- Default is 8.0.
- Player.MaxHealth value
- Default is 100.
- The maximum health reachable by using normal health items.
- Player.MorphWeapon weapon
- Sets the weapon the player will use when morphed to this class.
- Player.MugShotMaxHealth value
- Defines the value that is considered to be max health for the status bar mugshot. Negative values use the player's max health as the mug shot max health, zero (default value) uses 100 as the mug shot max health, and positive values are used directly as the mug shot max health.
- Player.Portrait string
- Replaces the player portrait in the class selection menu to show a customized image, much like Hexen's player classes.
- Player.RunHealth value
- The minimum health the player can have and still be able to run. (This is normally 16% for Strife)
- Default is 0.
- Player.ScoreIcon sprite
- The icon visible next to the player's name on multiplayer scoreboard.
- Player.SideMove value [value-run]
- Speed modifier for left/right movement. The value is for walking and value-run is for running.
- Default is 1 for both values. The default run speed is double the walking speed, so Player.SideMove 1, 0.5
- would disable side-running.
- NOTE: Side movement running speed is actually 4/5ths forward running speed, and the side walk speed is 24/25ths forward walk.
- Player.SoundClass string
- The sound class used by SNDINFO's $playersound command.
- Default is "player".
- Player.SpawnClass spawnclass
- This is the filter for spawning things in a map. The spawnclass can be one of Any, Fighter, Cleric, Mage or a number between 1 and 16. 1 is synonymous with Fighter, 2 with Cleric and 3 with Mage.
- Player.StartItem classname [amount]
- Adds an item to player's start inventory. First weapon added is the weapon selected at start.
- Note: The initial startitem list is never inherited and must be specified in full for each player class.
- Player.TeleportFreezeTime value
- The time in tics the player remains immobile after teleportation. If this is 0 or less, or the player has at least one active powerup which has the INVENTORY.NOTELEPORTFREEZE flag set, this behavior is overridden, and as a result, the player does not become immobile after teleportation.
- Default is 18.
- Player.UseRange range
- Determines how far away a player class can activate lines or objects with the +use command.
- Default is 64.0.
- Player.ViewBob value
- A multiplier for move and still bob. Determines how far the player's camera bobs up and down. Higher values increase the bob range.
- Default is 1.0.
- Player.ViewBobSpeed value
- A multiplier for camera bobbing speed while moving. Determines how quickly the camera moves while bobbing (and thus the frequency of bobbing). Higher values make the camera move through the bob range more slowly.
- Default is 20.0.
- Player.ViewHeight value
- Specifies how high above the floor the player's eyes are.
- Default is 41.0.
- Player.WaterClimbSpeed value
- The speed at which the player can climb walls when swimming.
- Default is 3.5.
- Player.WeaponSlot slot, weapon1[, weapon2, weapon3, ...]
- Assigns the specified weapons to the given slot number for this player class. slot can be any single digit from 0 - 9. This is followed by a comma-separated list of each weapon's class name that should be assigned to that slot. If there is more than one weapon assigned to a given slot, the player can cycle between them by repeatedly pressing the slot button. For other ways to assign weapons to slots, see weapon slots.
Powerup
- Powerup.Color color [, alpha]
- Powerup.Color "BlueMap"
- Powerup.Color "GoldMap"
- Powerup.Color "GreenMap"
- Powerup.Color "InverseMap"
- Powerup.Color "RedMap"
- Powerup.Color "None"
- Specifies the color and the opacity of the screen blend that is used when the powerup is active. Color is specified either as three integers (DECORATE only), an "RR GG BB" string or a color name from the X11R6RGB lump. Alpha is optional, and is a value between 0.0 and 1.0, defaulting to 0.33333 if not specified. Instead of specifying a color you can also use the predefined values BlueMap, GoldMap, GreenMap, InverseMap and RedMap. These do not set a blending value but instead use a predefined blend.
- Using a color value of None for a PowerupGiver, results in having no screen blend. Setting an arbitrary color with zero alpha, instead, to override the powerup's own does not achieve the same task.
- Powerup.Colormap [sourcecolor, ]destcolor
- A generalization of the colormaps (which, counter-intuitively, are used with Powerup.Color), this creates a color ramp from the source color to the destination color. This uses decimal numbers for the red, green, blue components, ranging from 0.0 to 1.0, inclusive. If only one color is provided, then black (0.0, 0.0, 0.0) is used as the source color. For example, Powerup.Colormap 0.0, 0.0, 0.0, 1.0, 1.0, 1.0 and Powerup.Colormap 1.0, 1.0, 1.0 both create a grayscale, Powerup.Colormap 1.0, 1.0, 1.0, 0.0, 0.0, 0.0 creates the well known inverse map and Powerup.Colormap 1.0, 0.0, 0.0, 0.0, 1.0, 0.0 creates a red to green effect.
- Powerup.Duration time
- The length of time the power up will last in tics (1/35 of a second). If a negative duration is given, it will be taken as the duration in seconds (e.g., -30 is half a minute, while 30 is less than a second). The maximum duration is 0x7FFFFFFF, which corresponds to about two years of real time and can therefore safely be used for permanent powerups. Note, however, that due to the design of the TimeFreezer powerup, using such a duration value for this powerup is not recommended, as the engine will add two tics to the powerup's duration if the duration's value was even and the powerup was activated on an odd game tic, resulting in a signed overflow error. A value of 0x7FFFFFFD is safe to use in such a case.
- Powerup.Mode mode
- For some powerups which may behave in different ways, specify the mode. Currently affects Invulnerability, Invisibility and Environment protection.
- Invulnerability modes: 'None' and 'Reflective'. 'None' is invulnerability without any added effect. 'Reflective' also makes all projectiles bounce off of the player while the powerup is in effect.
- Invisibility modes: 'Cumulative', 'Fuzzy', 'Opaque', 'Stencil' and 'Translucent'. 'Cumulative' allow multiple invisibility powerups of the same type to stack when active at the same time, adding their strength value together. 'Fuzzy' uses the fuzz effect renderstyle, like that of the spectre. 'Opaque' results in an opaque renderstyle, making the actor not invisible graphically speaking. 'Stencil' uses the stencil renderstyle, showing just the shape. 'Translucent' is merely a way of explicitly specifying the default invisibility mode.
- Environment protection modes: 'Normal' and 'Full'. 'Normal' is environment protection's default mode. 'Full' is total-protection mode. It is similar to 'Normal', but it also protects against the types of damaging floors that the 'Normal' mode does not protect against, whether it is partial protection or not.
- Powerup.Strength strength
- The magnitude of a powerup's effect. Currently applies to Invisibility and Regeneration, as other powerups have unquantifiable effects or use predetermined fields such as DamageFactor.
- Invisibility strength: determines how translucent the affected actor becomes. 0 is for opaque, and 100 is for fully invisible. Does not apply to 'Fuzzy' mode.
- Regeneration strength: determines the amount of health regenerated.
PowerSpeed
The PowerSpeed base class defines the following properties which are available to all subclasses:
- PowerSpeed.NoTrail value
- If set to 1, it disables the speed trail effect that is created while the player is moving.
- Default is 0.
PowerupGiver
All the Powerup properties, which they override, and in addition the following ones:
- Powerup.Type power_name
- The type of powerup given when item is used. This must be the name of an existing powerup. In DECORATE only, when passing the powerup's name, the "Power" prefix is optional and may be left out.
HealthPickup
- HealthPickup.AutoUse value
- Determines whether (and how) the item is set to be automatically used when the player's health drops below a certain point.
- The following values are accepted:
- 0 - Item will never be auto-used.
- 1 - Item will be automatically used when the player would die from damage taken, but only if the currently-selected skill level has the "autousehealth" flag set. (Like the Quartz Flask from Heretic/Hexen)
- 2 - Item will be automatically used when the player would die from damage taken, but only if the currently-selected skill level has the "autousehealth" flag set or during a deathmatch game. (Like the Mystic Urn from Heretic/Hexen)
- 3 - Item is auto-used when the player drops below 50% health; if the player has more than 1 such item, they will continue to be consumed until the player is over 50% health. However, if damage takes the player below 0% health, this will not save them from death. (Like Strife's small health items).
MorphProjectile
- MorphProjectile.PlayerClass classname
- Defines what class to morph players into.
- MorphProjectile.MonsterClass classname
- Defines what class to morph monsters into.
- MorphProjectile.Duration tics
- Defines the time that the victim stays morphed.
- MorphProjectile.MorphStyle flags
- Defines the behaviour of the morphing effects. Use | to use multiple flags at once. Omitting this property or specifying it as zero causes the default Heretic/Hexen behaviour to be applied; see the notes below for more information. These flags only affect morphed players (not morphed monsters) except where explicitly stated in a flag's description.
- MRF_ADDSTAMINA — The current stamina is added to the maximum health that is effect (see MRF_FULLHEALTH) whenever the player receives health via normal means. This is normal under-the-hood behaviour that is by default suppressed when morphed. You would normally leave it off for a morph curse and turn it on for a morph powerup. Note that by default, only Strife games define a stamina mechanism.
- MRF_FULLHEALTH — The morphed player's maximum health is the MaxHealth of the morphed player class (instead of hardcoded to 30).
- MRF_UNDOBYTOMEOFPOWER — A morphed player unmorphs when they activate a Tome of Power.
- MRF_UNDOBYCHAOSDEVICE — A morphed player unmorphs when they activate a Chaos Device.
- MRF_FAILNOTELEFRAG — A morphed player stays morphed if unmorph by Tome of Power fails, instead of being telefragged.
- MRF_FAILNOLAUGH — A morphed player doesn't laugh if unmorph by Chaos Device fails.
- MRF_WHENINVULNERABLE — A player can morph when invulnerable but ONLY if morphing themselves via a morph powerup.
- MRF_LOSEACTUALWEAPON — When the player unmorphs, the actual weapon given by the Player.MorphWeapon property is taken away.
- MRF_NEWTIDBEHAVIOUR — A morphed actor's TID is by default transferred from the old actor to the new actor. (Applies to players and monsters)
- MRF_UNDOBYDEATH — A morphed actor unmorphs when killed and (unless MORPH_UNDOBYDEATHSAVES is also used) stays dead. (Applies to players and monsters)
- MRF_UNDOBYDEATHFORCED — A morphed actor having the MRF_UNDOBYDEATH style flag, is guaranteed to unmorph when killed. (Applies to players and monsters)
- MRF_UNDOBYDEATHSAVES — A morphed actor having the MRF_UNDOBYDEATH style flag unmorphs normally when killed, instead of dying. (Applies to players and monsters)
- MRF_UNDOALWAYS — Certain conditions would prevent an unmorph from occurring when the morph powerup expires, such as not having enough room, so it would continue to attempt unmorphing every second. This disables these conditions entirely and forces them to unmorph no matter what.
- MRF_TRANSFERTRANSLATION — Transfers the actor's translation to the morphed actor. (Applies to players and monsters)
- MorphProjectile.MorphFlash classname
- Defines the effect flash actor to spawn when the victim morphs. If omitted, the game's default teleport fog is used.
- MorphProjectile.UnMorphFlash classname
- Defines the effect flash actor to spawn when the victim unmorphs. If omitted, the game's default teleport fog is used.