|
|
Note: Wait! Stop! You do not need to copy this actor's code into your project! Here's why:
- This actor is already defined in GZDoom, there's no reason to define it again.
- In fact, trying to define an actor with the same name will cause an error (because it already exists).
- If you want to make your own version of this actor, use inheritance.
- Definitions for existing actors are put on the wiki for reference purpose only.
|
| Tyketto's Tome of Power
|
| Actor type
|
Artifact
|
Game
|
(Heretic)
|
| DoomEd Number
|
86
|
Class Name
|
ArtiTomeOfPower
|
| Spawn ID
|
134
|
Identifier
|
T_ITEMTOME
|
Classes: Inventory→PowerupGiver→ArtiTomeOfPower
The tome of power is a magic artifact that enters the player's inventory when picked up and, when activated, gives the player's weapons much enhanced effectiveness for a period of time and also unmorphs the player if they are currently morphed. For the predefined Heretic weapons, this usually means that a full/semi-auto firing mode becomes available and/or more powerful single shots are fired; for example, the phoenix rod becomes a flamethrower-like weapon if the player has an active tome of power when firing it. When this (or an inherited) actor is used, it gives the player the WeaponLevel2 power. Additionally, it cancels any player morph and, if an unmorph took place, plays the sound “*evillaugh” if defined.
|
|
Note: The ZScript definition below is for reference and may be different in the current version of UZDoom. The most up-to-date version of this code can be found on UZDoom GitHub.
|
Class ArtiTomeOfPower : PowerupGiver
{
Default
{
+COUNTITEM
+FLOATBOB
+WEAPONSPAWN
Inventory.PickupFlash "PickupFlash";
Inventory.Icon "ARTIPWBK";
Powerup.Type "PowerWeaponlevel2";
Inventory.PickupMessage "$TXT_ARTITOMEOFPOWER";
Tag "$TAG_ARTITOMEOFPOWER";
}
States
{
Spawn:
PWBK A 350;
Loop;
}
override bool Use(bool pickup)
{
EMorphFlags mStyle = Owner.GetMorphStyle();
if (Owner.Alternative && (mStyle & MRF_UNDOBYTOMEOFPOWER))
{
// Attempt to undo chicken.
if (!Owner.Unmorph(Owner, MRF_UNDOBYTOMEOFPOWER))
{
if (!(mStyle & MRF_FAILNOTELEFRAG))
Owner.DamageMobj(null, null, TELEFRAG_DAMAGE, 'Telefrag');
}
else if (Owner.player)
{
Owner.A_StartSound("*evillaugh", CHAN_VOICE);
}
return true;
}
return Super.Use(pickup);
}
}
ACTOR ArtiTomeOfPower : PowerupGiver native
{
+COUNTITEM
+FLOATBOB
+INVENTORY.PICKUPFLASH
Inventory.Icon "ARTIPWBK"
Powerup.Type Weaponlevel2
Inventory.PickupMessage "$TXT_ARTITOMEOFPOWER"
Tag "$TAG_ARTITOMEOFPOWER"
States
{
Spawn:
PWBK A 350
Loop
}
}