From f9eef83dffd14b7866c2eba506d5c8db16429de8 Mon Sep 17 00:00:00 2001 From: Marisa the Magician Date: Tue, 15 Nov 2022 11:47:07 +0100 Subject: [PATCH] (Try to) fix auto-heal sounds stacking when hit multiple times in one tic. --- language.version | 4 ++-- zscript/items/swwm_basearmor.zsc | 8 +++++++- zscript/items/swwm_basehealth.zsc | 8 +++++++- 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/language.version b/language.version index d5b8825ad..35415e677 100644 --- a/language.version +++ b/language.version @@ -1,3 +1,3 @@ [default] -SWWM_MODVER="\cyDEMOLITIONIST \cw1.3pre r612 \cu(Mon 14 Nov 00:41:37 CET 2022)\c-"; -SWWM_SHORTVER="\cw1.3pre r612 \cu(2022-11-14 00:41:37)\c-"; +SWWM_MODVER="\cyDEMOLITIONIST \cw1.3pre r613 \cu(Tue 15 Nov 11:47:07 CET 2022)\c-"; +SWWM_SHORTVER="\cw1.3pre r613 \cu(2022-11-15 11:47:07)\c-"; diff --git a/zscript/items/swwm_basearmor.zsc b/zscript/items/swwm_basearmor.zsc index b00bc5292..e4f33dce0 100644 --- a/zscript/items/swwm_basearmor.zsc +++ b/zscript/items/swwm_basearmor.zsc @@ -15,6 +15,8 @@ Class SWWMArmor : Armor abstract FlagDef NoDrain : SArmorFlags, 2; // amount is not drained, will always reduce as long as amount is non-zero // useful for powerup-given armors + transient int lastautousetic; // accumulated damage can make the use sounds stack + Default { +INVENTORY.AUTOACTIVATE; @@ -94,7 +96,11 @@ Class SWWMArmor : Armor abstract damage = newdamage; if ( (amount <= (MaxAmount-default.Amount)) && (Owner.CountInv(parent) > 0) ) { - if ( GetDefaultByType(parent).UseSound ) Owner.A_StartSound(GetDefaultByType(parent).UseSound,CHAN_ITEMEXTRA,CHANF_OVERLAP,.6); + if ( GetDefaultByType(parent).UseSound && (lastautousetic < gametic) ) + { + Owner.A_StartSound(GetDefaultByType(parent).UseSound,CHAN_ITEMEXTRA,CHANF_OVERLAP,.6); + lastautousetic = gametic; + } int tgive = 0; while ( (amount <= (MaxAmount-default.Amount)) && (Owner.CountInv(parent) > 0) ) { diff --git a/zscript/items/swwm_basehealth.zsc b/zscript/items/swwm_basehealth.zsc index 686d9524d..4e20acd8a 100644 --- a/zscript/items/swwm_basehealth.zsc +++ b/zscript/items/swwm_basehealth.zsc @@ -13,6 +13,8 @@ Class SWWMHealth : Inventory abstract Property GiveHealth : giveme; + transient int lastautousetic; // accumulated damage can make the use sounds stack + override void AttachToOwner( Actor other ) { Super.AttachToOwner(other); @@ -127,7 +129,11 @@ Class SWWMHealth : Inventory abstract let hnd = SWWMHandler(EventHandler.Find("SWWMHandler")); if ( hnd ) hnd.tookdamage[Owner.PlayerNumber()] = true; } - if ( ((Owner.player == players[consoleplayer]) || bBigPowerup) ) Owner.A_StartSound(UseSound,CHAN_ITEMEXTRA,CHANF_OVERLAP); + if ( ((Owner.player == players[consoleplayer]) || bBigPowerup) && (lastautousetic < gametic) ) + { + Owner.A_StartSound(UseSound,CHAN_ITEMEXTRA,CHANF_OVERLAP); + lastautousetic = gametic; + } int tgive = 0; bool morethanonce = false; while ( (Amount > 0) && (newdamage > 0) )