Fix up how inventory use sounds are played, so they don't get loudened anymore.

Fix up how auto-healing works, so now if you have 5 refreshers you actually can survive 2500 damage, as one would expect.
This commit is contained in:
Mari the Deer 2020-03-08 12:07:58 +01:00
commit e5883dac2f
4 changed files with 28 additions and 20 deletions

View file

@ -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;

View file

@ -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();

View file

@ -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 )
{

View file

@ -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;