Classes:CustomInventory
From ZDoom Wiki
Note: Wait! Stop! Before you copy this actor's definition into your mod, remember the following things:
|
| Custom inventory | |||
|---|---|---|---|
| Actor type | Internal | Game | |
| DoomEd Number | None | Class Name | CustomInventory |
Classes: Inventory→CustomInventory
→ArtiBoostMana
→ArtiEgg
→ArtiPork
→Berserk
→Mana3
→Megasphere
CustomInventory items are special items that allow some very primitive scripted functionality using its states. The base class CustomInventory is never used directly. It is always the base class for items defined in DECORATE.
DECORATE definition
ACTOR CustomInventory : Inventory native {}
Using in DECORATE
CustomInventory defines no new properties and only uses the basic Inventory properties.
CustomInventory defines 3 new states:
- Pickup
- Use
- Drop
| Tip: Players, Monsters and pretty much everything else can obtain a CustomInventory and be affected by its Pickup state. |
The behavior is as follows:
- All code pointers in the Pickup state sequence are called when the item is being picked up. The sequence is successful when either a function is called which doesn't return success or a function which is capable returns successful execution is called (you can also use ACS_ExecuteWithResult to set the result from ACS). Success can be overridden by terminating the state sequence with fail instead of stop.
- If the Pickup sequence returns successfully the behavior depends on the presence of the Use state:
- If there is no Use state the item will be removed from the map and not be placed in the player's inventory.
- If there is a Use state the item will be placed in the player's inventory.
- This means that a A_JumpIfInventory check can only work for a CustomInventory item if the item being checked has a Use state; otherwise it will always return zero.
- If the item has a Use state and is being used by the player the Use state sequece is called. Failure or success are determined the same way as for the Pickup state. If the sequence returns successfully the item is removed from the inventory. Note that due to this special behavior, the Use state will ignore all frame durations and cannot be looped; every frame will execute within the same tic.
- If the item is being dropped by a monster the Drop state sequence will be executed and the item will never be spawned. This is mostly there for special actions that can be taken by Strife conversation scripts. For regular monster death actions there are better and more flexible way to achieve the same.
Examples:
actor BigBoost : CustomInventory 10492
{
inventory.pickupmessage "Energy Boost!!!"
inventory.pickupsound "misc/p_pkup"
+COUNTITEM
states
{
Spawn:
AWI3 A -1
stop
Pickup:
TNT1 A 0 A_GiveInventory ("Soulsphere", 2)
TNT1 A 0 A_GiveInventory ("BFG9000")
stop
}
}
Categories:
- Chex Quest actors
- Chex Quest internal actors
- Chex Quest 3 actors
- Chex Quest 3 internal actors
- Doom actors
- Doom internal actors
- Doom II actors
- Doom II internal actors
- Heretic actors
- Heretic internal actors
- Hexen actors
- Hexen internal actors
- Strife actors
- Strife internal actors
- ZDoom actors
- ZDoom internal actors
- Internal