diff --git a/zscript/swwm_ammo.zsc b/zscript/swwm_ammo.zsc index 59446e2d4..5502cab9c 100644 --- a/zscript/swwm_ammo.zsc +++ b/zscript/swwm_ammo.zsc @@ -842,7 +842,7 @@ Class AmmoFabricator : Inventory abstract if ( pickup && !shouldautouse ) return false; if ( FabricateAmmo() ) { - Owner.A_StartSound(UseSound,CHAN_ITEMEXTRA); + if ( pickup && ((Owner.player == players[consoleplayer]) || bBigPowerup) ) Owner.A_StartSound(UseSound,CHAN_ITEMEXTRA); return true; } return false; diff --git a/zscript/swwm_inventory.zsc b/zscript/swwm_inventory.zsc index 061bde6fb..08df25841 100644 --- a/zscript/swwm_inventory.zsc +++ b/zscript/swwm_inventory.zsc @@ -110,8 +110,8 @@ Class SWWMSpareArmor : Inventory abstract let cur = Owner.FindInventory(giveme); if ( !cur || (!pickup && (cur.Amount < cur.MaxAmount)) || (GetDefaultByType(giveme).Amount+cur.Amount <= cur.MaxAmount) ) { + if ( pickup && ((Owner.player == players[consoleplayer]) || bBigPowerup) ) Owner.A_StartSound(UseSound,CHAN_ITEMEXTRA); Owner.GiveInventory(giveme,GetDefaultByType(giveme).Amount); - if ( UseSound ) Owner.A_StartSound(UseSound,CHAN_ITEMEXTRA,CHANF_DEFAULT,.6); SWWMHandler.DoFlash(Owner,Color(48,96,255,64),5); return true; } @@ -148,7 +148,7 @@ Class SWWMHealth : Inventory abstract else shouldautouse = CVar.GetCVar('swwm_autousehealth',Owner.player).GetBool(); if ( pickup && !shouldautouse ) return false; if ( Owner.Health >= GetDefaultByType(giveme).MaxAmount ) return false; - if ( UseSound ) Owner.A_StartSound(UseSound,CHAN_ITEMEXTRA,CHANF_DEFAULT,.6); + if ( pickup && ((Owner.player == players[consoleplayer]) || bBigPowerup) ) Owner.A_StartSound(UseSound,CHAN_ITEMEXTRA); SWWMHandler.DoFlash(Owner,Color(48,64,128,255),5); Owner.GiveInventory(giveme,GetDefaultByType(giveme).Amount); SWWMScoreObj.Spawn(GetDefaultByType(giveme).Amount,Owner.Vec3Offset(FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8)+Owner.Height/2),Font.CR_GREEN); @@ -169,10 +169,11 @@ Class SWWMHealth : Inventory abstract { if ( passive && (Owner.Health-damage <= 0) ) { - if ( UseSound ) Owner.A_StartSound(UseSound,CHAN_ITEMEXTRA,CHANF_DEFAULT,.6); + newdamage = damage; + if ( ((Owner.player == players[consoleplayer]) || bBigPowerup) ) Owner.A_StartSound(UseSound,CHAN_ITEMEXTRA); while ( (Amount > 0) && (newdamage > 0) ) { - newdamage = damage-GetDefaultByType(giveme).Amount; + newdamage = newdamage-GetDefaultByType(giveme).Amount; if ( newdamage < 0 ) Owner.GiveBody(-newdamage,GetDefaultByType(giveme).MaxAmount); newdamage = max(0,newdamage); AutoUseExtra(); diff --git a/zscript/swwm_player.zsc b/zscript/swwm_player.zsc index 0331cd1fc..b4fc8e587 100644 --- a/zscript/swwm_player.zsc +++ b/zscript/swwm_player.zsc @@ -1120,18 +1120,25 @@ Class Demolitionist : PlayerPawn } override bool UseInventory( Inventory item ) { - if ( !player ) return Super.UseInventory(item); - bool res = Super.UseInventory(item); - if ( CheckLocalView() ) + let itemtype = item.GetClass(); + if ( (player.cheats&CF_TOTALLYFROZEN) || isFrozen() ) return false; + if ( !Actor.UseInventory(item) ) { - if ( !res && !(item is 'Weapon') ) A_StartSound("menu/noinvuse",CHAN_ITEM); - if ( item is 'PuzzleItem' ) + if ( player == players[consoleplayer] ) { - if ( res ) SWWMHandler.AddOneliner("puzzsucc",2,10); - else SWWMHandler.AddOneliner("puzzfail",2,20); + if ( !(item is 'Weapon') ) + A_StartSound("menu/noinvuse",CHAN_ITEMEXTRA); + if ( item is 'PuzzleItem' ) + SWWMHandler.AddOneliner("puzzfail",2,20); } + return false; } - return res; + // use sounds of big powerups are heard by other players + if ( (player == players[consoleplayer]) || item.bBIGPOWERUP ) + A_StartSound(item.UseSound,CHAN_ITEMEXTRA); + if ( (player == players[consoleplayer]) && (item is 'PuzzleItem') ) + SWWMHandler.AddOneliner("puzzsucc",2,10); + return true; } void A_Footstep( double yofs, bool run = false, double vol = .3 ) { diff --git a/zscript/swwm_powerup.zsc b/zscript/swwm_powerup.zsc index 34e8bede3..f73aafcb6 100644 --- a/zscript/swwm_powerup.zsc +++ b/zscript/swwm_powerup.zsc @@ -13,7 +13,6 @@ Class GrilledCheeseSandwich : Inventory { SWWMHandler.DoFlash(Owner,Color(64,255,255,64),10); Owner.A_QuakeEx(9,9,9,3,0,1,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:1.); - Owner.A_StartSound(UseSound,CHAN_ITEMEXTRA); Owner.GiveBody(1000,1000); SWWMScoreObj.Spawn(1000,Owner.Vec3Offset(FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8)+Owner.Height/2),Font.CR_GREEN); let n = Owner.FindInventory("ArmorNugget"); @@ -33,6 +32,7 @@ Class GrilledCheeseSandwich : Inventory { if ( pickup && !deathmatch ) return false; if ( Owner.Health >= 1000 ) return false; + if ( pickup && ((Owner.player == players[consoleplayer]) || bBigPowerup) ) Owner.A_StartSound(UseSound,CHAN_ITEMEXTRA); DoTheThing(); return true; } @@ -41,6 +41,7 @@ Class GrilledCheeseSandwich : Inventory if ( passive && (Owner.Health-damage <= 0) && (Amount > 0) ) { newdamage = 0; + if ( (Owner.player == players[consoleplayer]) || bBigPowerup ) Owner.A_StartSound(UseSound,CHAN_ITEMEXTRA); DoTheThing(); Amount--; } @@ -226,7 +227,7 @@ Class GhostArtifact : Inventory override bool Use( bool pickup ) { if ( pickup && !deathmatch ) return false; - Owner.A_StartSound(UseSound,CHAN_ITEMEXTRA); + if ( pickup && ((Owner.player == players[consoleplayer]) || bBigPowerup) ) Owner.A_StartSound(UseSound,CHAN_ITEMEXTRA); let g = GhostPower(Owner.FindInventory("GhostPower")); if ( g ) g.EffectTics = g.default.EffectTics; else Owner.GiveInventory("GhostPower",1); @@ -351,7 +352,7 @@ Class GravitySuppressor : Inventory override bool Use( bool pickup ) { if ( pickup && !deathmatch ) return false; - Owner.A_StartSound(UseSound,CHAN_ITEMEXTRA); + if ( pickup && ((Owner.player == players[consoleplayer]) || bBigPowerup) ) Owner.A_StartSound(UseSound,CHAN_ITEMEXTRA); let g = GravityPower(Owner.FindInventory("GravityPower")); if ( g ) g.EffectTics = g.default.EffectTics; else Owner.GiveInventory("GravityPower",1); @@ -539,7 +540,7 @@ Class FuckingInvinciball : Inventory override bool Use( bool pickup ) { if ( pickup && !deathmatch ) return false; - Owner.A_StartSound(UseSound,CHAN_ITEMEXTRA); + if ( pickup && ((Owner.player == players[consoleplayer]) || bBigPowerup) ) Owner.A_StartSound(UseSound,CHAN_ITEMEXTRA); Owner.A_StartSound("misc/sundowner",CHAN_POWERUPEXTRA); let i = InvinciballPower(Owner.FindInventory("InvinciballPower")); if ( i ) @@ -745,7 +746,7 @@ Class Ragekit : Inventory override bool Use( bool pickup ) { if ( pickup && !deathmatch ) return false; - Owner.A_StartSound(UseSound,CHAN_ITEMEXTRA); + if ( pickup && ((Owner.player == players[consoleplayer]) || bBigPowerup) ) Owner.A_StartSound(UseSound,CHAN_ITEMEXTRA); let r = RagekitPower(Owner.FindInventory("RagekitPower")); if ( r ) { @@ -798,7 +799,7 @@ Class Omnisight : Inventory { if ( !level.allmap ) { - Owner.A_StartSound(UseSound,CHAN_ITEMEXTRA); + Owner.A_StartSound("powerup/omnisight",CHAN_ITEMEXTRA); level.allmap = true; } // not used up, must be kept for the targetting features to work @@ -807,7 +808,6 @@ Class Omnisight : Inventory Default { Tag "$T_OMNISIGHT"; - Inventory.UseSound "powerup/omnisight"; Inventory.PickupSound "misc/p_pkup"; Inventory.PickupMessage "$I_OMNISIGHT"; Inventory.MaxAmount 1;