Fix the "weapon sounds stuck playing after death/drop" problem at the core UTWeapon class.

This commit is contained in:
Marisa the Magician 2019-09-28 21:24:37 +02:00
commit 4bbc308eaf
4 changed files with 10 additions and 9 deletions

View file

@ -219,7 +219,8 @@ Class UTChainsaw : UTWeapon
override void DetachFromOwner() override void DetachFromOwner()
{ {
if ( Owner ) Owner.A_StopSound(CHAN_6); if ( Owner ) Owner.A_StopSound(CHAN_6);
A_PlaySound("chainsaw/lower",CHAN_6); if ( !Ammo1 || (Ammo1.Amount > 0) )
A_PlaySound("chainsaw/lower",CHAN_6);
Super.DetachFromOwner(); Super.DetachFromOwner();
} }
action void A_Vibrate( bool bAlt = false ) action void A_Vibrate( bool bAlt = false )

View file

@ -199,11 +199,6 @@ Class ImpactHammer : UTWeapon
s.scale *= 0.4; s.scale *= 0.4;
} }
} }
override void DetachFromOwner()
{
if ( Owner ) Owner.A_StopSound(CHAN_WEAPON);
Super.DetachFromOwner();
}
Default Default
{ {

View file

@ -673,12 +673,10 @@ Class PulseGun : UTWeapon
{ {
Super.OwnerDied(); Super.OwnerDied();
if ( beam ) beam.Destroy(); if ( beam ) beam.Destroy();
Owner.A_StopSound(CHAN_WEAPON);
} }
override void DetachFromOwner() override void DetachFromOwner()
{ {
if ( beam ) beam.Destroy(); if ( beam ) beam.Destroy();
Owner.A_StopSound(CHAN_WEAPON);
Super.DetachFromOwner(); Super.DetachFromOwner();
} }
override void OnDestroy() override void OnDestroy()

View file

@ -1336,10 +1336,17 @@ Class UTWeapon : Weapon
if ( amp ) amp.FireEffect(); if ( amp ) amp.FireEffect();
} }
override void DetachFromOwner()
{
Owner.A_StopSound(CHAN_WEAPON);
Super.DetachFromOwner();
}
override void OwnerDied() override void OwnerDied()
{ {
Super.OwnerDied(); if ( Owner.player && (Owner.player.ReadyWeapon == self) )
Owner.A_StopSound(CHAN_WEAPON);
A_ClearRefire(); A_ClearRefire();
Super.OwnerDied();
} }
override bool HandlePickup( Inventory item ) override bool HandlePickup( Inventory item )