First off, there are three wiki pages to look at:
- PowerupGiver with the Powerup.Type WeaponLevel2: This is the powerup that activates it. For creating a new weapon, it's not necessary to deal with, but it helps to explain how the system works. For testing, you can use the Powerup console cheat to activate.
- Weapon.SisterWeapon: This goes on both the unpowered and powered weapons, it's what tells the WeaponLevel2 powerup what weapons go together.
- +Weapon.Powered_Up: This tells it what weapon to use when under the effects of a WeaponLevel2 powerup. Without this or Weapon.SisterWeapon, it can't work.
I'll use Doom's Pistol to illustrate. This is it before we add support for WeaponLevel2.
Actor Pistol2 : DoomWeapon 5010 //This is named differently so it won't conflict with Doom's
{
Game Doom
Weapon.SelectionOrder 1900
Weapon.AmmoUse 1
Weapon.AmmoGive 20
Weapon.AmmoType "Clip"
AttackSound "weapons/pistol"
Obituary "$OB_MPPISTOL"
+WEAPON.WIMPY_WEAPON
Inventory.Pickupmessage "$PICKUP_PISTOL_DROPPED"
States
{
Ready:
PISG A 1 A_WeaponReady
Loop
Deselect:
PISG A 1 A_Lower
Loop
Select:
PISG A 1 A_Raise
Loop
Fire:
PISG A 4
PISG B 6 A_FirePistol
PISG C 4
PISG B 5 A_ReFire
Goto Ready
Flash:
PISF A 7 Bright A_Light1
Goto LightDone
PISF A 7 Bright A_Light0
Goto LightDone
Spawn:
PIST A -1
Stop
}
}
To get started, we create a second weapon inheriting from the pistol:
Actor PoweredPistol : Pistol
{
States
{
Fire:
PISG A 4
PISG BB 0 A_FirePistol //Added this just to make it different
PISG B 6 A_FirePistol
PISG C 4
PISG B 5 A_ReFire
Goto Ready
}
}
You'll notice there is a LOT less code here, in the powered version. That's because with inheritence, it's getting information like states and properties from the original. If you want to change anything, replace it in the new version, like with this Fire state.
Something to remember, if the powered version has its own Ready state, it will play the Lower and Raise animations when the WeaponLevel2 powerup starts and ends. You can see this with the Staff in Heretic.
Next, we add Weapon.SisterWeapon and the +Weapon.Powered_Up flag.Actor Pistol2 : DoomWeapon 5010
{
Game Doom
Weapon.SelectionOrder 1900
Weapon.AmmoUse 1
Weapon.AmmoGive 20
Weapon.AmmoType "Clip"
AttackSound "weapons/pistol"
Weapon.SisterWeapon "PoweredPistol2"
Obituary "$OB_MPPISTOL"
+WEAPON.WIMPY_WEAPON
Inventory.Pickupmessage "$PICKUP_PISTOL_DROPPED"
States
{
Ready:
PISG A 1 A_WeaponReady
Loop
Deselect:
PISG A 1 A_Lower
Loop
Select:
PISG A 1 A_Raise
Loop
Fire:
PISG A 4
PISG B 6 A_FirePistol
PISG C 4
PISG B 5 A_ReFire
Goto Ready
Flash:
PISF A 7 Bright A_Light1
Goto LightDone
PISF A 7 Bright A_Light0
Goto LightDone
Spawn:
PIST A -1
Stop
}
}
Actor PoweredPistol2 : Pistol
{
Weapon.SisterWeapon "Pistol2"
+Weapon.Powered_Up
States
{
Fire:
PISG A 4
PISG BB 0 A_FirePistol //Added this just to make it different
PISG B 6 A_FirePistol
PISG C 4
PISG B 5 A_ReFire
Goto Ready
}
}
That links them together. It should be just that easy; when a WeaponLevel2 powerup is activated the Pistol2 weapon will automatically become the PoweredPistol2 weapon. You now have a version of Doom's pistol that can be affected by a Tome of Power.