From 20666ac1bdb3625cefad4076e2dd4eb344213d69 Mon Sep 17 00:00:00 2001 From: Marisa Kirisame Date: Thu, 10 Oct 2019 09:26:45 +0200 Subject: [PATCH] Fix crash when Shield Belt is depleted. --- zscript/armoritems.zsc | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/zscript/armoritems.zsc b/zscript/armoritems.zsc index d26b1a8..1dcfa5c 100644 --- a/zscript/armoritems.zsc +++ b/zscript/armoritems.zsc @@ -21,7 +21,12 @@ Class UTArmor : Armor newdamage -= saved; amount -= saved; damage = newdamage; - if ( (amount <= 0) ) DepleteOrDestroy(); + if ( amount <= 0 ) + { + if ( damage > 0 ) newdamage = ApplyDamageFactors(GetClass(),damageType,damage,damage); + DepleteOrDestroy(); + return; + } } if ( damage > 0 ) newdamage = ApplyDamageFactors(GetClass(),damageType,damage,damage); } @@ -141,9 +146,13 @@ Class UTShieldBelt : UTArmor Owner.A_PlaySound("belt/absorb",CHAN_7); UTMainHandler.DoFlash(Owner,Color(80,255,224,0),5); } - int oldamt = amount; Super.AbsorbDamage(damage,damageType,newdamage); - if ( (oldamt > 0) && (amount <= 0) && Owner.CheckLocalView() ) Console.Printf(StringTable.Localize("$D_SHIELDBELT")); + } + override void DepleteOrDestroy() + { + if ( (amount <= 0) && Owner.CheckLocalView() ) + Console.Printf(StringTable.Localize("$D_SHIELDBELT")); + Super.DepleteOrDestroy(); } override bool HandlePickup( Inventory item ) {