From e24977e4d7dab5f91f4d647bc0ccc5038c3ecf19 Mon Sep 17 00:00:00 2001 From: Marisa Kirisame Date: Sun, 19 Apr 2020 18:07:23 +0200 Subject: [PATCH] Fixup: Autoused armor will absorb additional damage immediately. --- zscript/swwm_inventory.zsc | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/zscript/swwm_inventory.zsc b/zscript/swwm_inventory.zsc index c8771c3e8..4be91f8ea 100644 --- a/zscript/swwm_inventory.zsc +++ b/zscript/swwm_inventory.zsc @@ -52,6 +52,8 @@ Class SWWMArmor : Armor abstract { return damage; } + // sadly we can'y use the extra AbsorbDamage arguments until GZDoom gets updated + //override void AbsorbDamage( int damage, Name damageType, out int newdamage, Actor inflictor, Actor source, int flags ) override void ModifyDamage( int damage, Name damageType, out int newdamage, bool passive, Actor inflictor, Actor source, int flags ) { if ( !passive ) return; @@ -81,6 +83,15 @@ Class SWWMArmor : Armor abstract { Amount += default.Amount; Owner.TakeInventory(parent,1); + // absorb the extra damage too + saved = HandleDamage(damage,damageType,flags); + healed = max(0,saved-damage); + saved = min(saved,damage); + if ( amount <= saved ) saved = amount; + newdamage -= saved; + if ( healed > 0 ) Owner.GiveBody(healed); + amount -= saved; + damage = newdamage; } } else if ( amount <= 0 )