From ZDoom Wiki
Jump to navigation Jump to search
Note: Wait! Stop! Before you copy this actor's definition into your mod, remember the following things:
  1. You do not need to copy that actor, since it is already defined.
  2. In fact, it's not just useless, it's actually harmful as it can cause problems.
  3. If you want to modify it, or use a modified version, using inheritance is the way to go.
  4. The actor definitions here are put on the wiki for reference purpose only. Learn from them, don't copy them.
  5. There is only one exception: if what you want is changing Ammo capacity, you need to create a new type from Ammo.
Actor type Internal Game MiniZDoomLogoIcon.png
DoomEd Number None Class Name Powerup

Classes: InventoryPowerup

Powerups are internal classes that are placed in the player's inventory to tell the game that the player possesses a power.

In this context, the word "powerup" refers to the power itself, not to the PowerupGiver item that you pick up in order to get the power. For example in Doom, the radiation suit is a powerup giver and is not itself a powerup; instead it gives a power, in this case, protection from radiation, whimsically named the "iron feet" powerup by the programmers who made the game.

In the same way, the word "powerup" has traditionally been used for all kinds of artifacts in the game, but some of them are not actually true powerups nor powerup givers; for example in Doom, the soulsphere is actually a very powerful form of the health bonus item and the gained health is just normal health; however, the iron feet power that the radiation suit gives is a true powerup, because the effect lasts over a period of time and stays with the player until it is exhausted.

If a negative duration is given to a powerup subclass, it will be the amount of seconds the power stays active. If a powerup has the INVENTORY.HUBPOWER flag, it stays active when moving between levels within a hub. If a powerup has an Inventory.Icon property, this icon is displayed on the HUD while the power is active. (All standard HUDs will place it in the upper-right corner.)

Note that powerup is an MiniWikipediaLogoIcon.pngabstract class - you do not give the player a generic powerup item, rather the associated powerup giver must give one of the predefined subclasses of powerup, such as IronFeet or WeaponLevel2. Currently, there is no way in DECORATE to create completely new powerups, but some powerups, such as Protection and Morph are explicitly designed so that you can subclass them to a limited extent.

Powerups support these special properties in addition to the basic inventory properties:

  • 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.

DECORATE definition

ACTOR Powerup : Inventory native {}