diff --git a/wadsrc/static/zscript/actors/inventory/weapons.zs b/wadsrc/static/zscript/actors/inventory/weapons.zs index 26c61269a..ba9fda8e7 100644 --- a/wadsrc/static/zscript/actors/inventory/weapons.zs +++ b/wadsrc/static/zscript/actors/inventory/weapons.zs @@ -143,6 +143,10 @@ class Weapon : StateProvider } return -1, 0; } + + virtual void OnSelect() {} + + virtual void OnDeselect() {} virtual State GetReadyState () { diff --git a/wadsrc/static/zscript/actors/player/player.zs b/wadsrc/static/zscript/actors/player/player.zs index a16183204..6bc64929b 100644 --- a/wadsrc/static/zscript/actors/player/player.zs +++ b/wadsrc/static/zscript/actors/player/player.zs @@ -1884,6 +1884,7 @@ class PlayerPawn : Actor if (weapon != null) { + weapon.OnSelect(); weapon.PlayUpSound(self); player.refire = 0; @@ -1976,6 +1977,7 @@ class PlayerPawn : Actor Weapon weap = player.ReadyWeapon; if ((weap != null) && (player.health > 0 || !weap.bNoDeathDeselect)) { + weap.OnDeselect(); player.SetPsprite(PSP_WEAPON, weap.GetDownState()); } }