From 1dd53549f95101b8916d1a348f48ca7489fe91ad Mon Sep 17 00:00:00 2001 From: Marisa Kirisame Date: Wed, 9 Dec 2020 10:55:42 +0100 Subject: [PATCH] Remove calls to ApplyDamageFactors in SWWMArmor, they are unnecessary. --- language.version | 2 +- zscript/swwm_inventory.zsc | 95 ++++++++++++++++++-------------------- 2 files changed, 47 insertions(+), 50 deletions(-) diff --git a/language.version b/language.version index 579780754..6a88deedb 100644 --- a/language.version +++ b/language.version @@ -1,2 +1,2 @@ [default] -SWWM_MODVER="\chSWWM \czGZ\c- \cw0.9.11b-pre r666 \cu(Wed 9 Dec 01:05:29 CET 2020)"; +SWWM_MODVER="\chSWWM \czGZ\c- \cw0.9.11b-pre r667 \cu(Wed 9 Dec 10:55:42 CET 2020)"; diff --git a/zscript/swwm_inventory.zsc b/zscript/swwm_inventory.zsc index d91344c09..5e1dd0e99 100644 --- a/zscript/swwm_inventory.zsc +++ b/zscript/swwm_inventory.zsc @@ -160,59 +160,56 @@ Class SWWMArmor : Armor abstract override void AbsorbDamage( int damage, Name damageType, out int newdamage, Actor inflictor, Actor source, int flags ) { int saved; - if ( (amount > 0) && !DamageTypeDefinition.IgnoreArmor(damageType) && (damage > 0) ) + if ( (amount <= 0) || DamageTypeDefinition.IgnoreArmor(damageType) || (damage <= 0) ) + return; + SWWMHandler.DoFlash(Owner,Color(int(clamp(damage*.15,1,16)),255,224,192),3); + Owner.A_StartSound("armor/hit",CHAN_BODY,CHANF_DEFAULT,clamp(damage*.03,0.,1.),2.5); + saved = HandleDamage(damage,damageType,flags); + int healed = max(0,saved-damage); + saved = min(saved,damage); + if ( amount <= saved ) saved = amount; + newdamage -= saved; + if ( healed > 0 ) Owner.GiveBody(healed); + if ( (swwm_strictuntouchable == 1) && (saved > 0) && Owner.player ) { - SWWMHandler.DoFlash(Owner,Color(int(clamp(damage*.15,1,16)),255,224,192),3); - Owner.A_StartSound("armor/hit",CHAN_BODY,CHANF_DEFAULT,clamp(damage*.03,0.,1.),2.5); - saved = HandleDamage(damage,damageType,flags); - int healed = max(0,saved-damage); - saved = min(saved,damage); - if ( amount <= saved ) saved = amount; - newdamage -= saved; - if ( healed > 0 ) Owner.GiveBody(healed); - if ( (swwm_strictuntouchable == 1) && (saved > 0) && Owner.player ) + let hnd = SWWMHandler(EventHandler.Find("SWWMHandler")); + if ( hnd ) hnd.tookdamage[Owner.PlayerNumber()] = true; + } + amount -= saved; + damage = newdamage; + bool shouldautouse = false; + if ( swwm_enforceautousearmor == 1 ) shouldautouse = true; + else if ( swwm_enforceautousearmor == -1 ) shouldautouse = false; + else shouldautouse = CVar.GetCVar('swwm_autousearmor',Owner.player).GetBool(); + if ( (amount <= (MaxAmount-default.Amount)) && (Owner.CountInv(parent) > 0) && shouldautouse ) + { + if ( GetDefaultByType(parent).UseSound ) Owner.A_StartSound(GetDefaultByType(parent).UseSound,CHAN_ITEMEXTRA,CHANF_DEFAULT,.6); + int tgive = 0; + bool acc = CVar.GetCVar('swwm_accdamage',players[consoleplayer]).GetBool(); + while ( (amount <= (MaxAmount-default.Amount)) && (Owner.CountInv(parent) > 0) ) { - let hnd = SWWMHandler(EventHandler.Find("SWWMHandler")); - if ( hnd ) hnd.tookdamage[Owner.PlayerNumber()] = true; + if ( acc ) tgive += default.Amount; + else SWWMScoreObj.Spawn(default.Amount,Owner.Vec3Offset(FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8)+Owner.Height/2),Font.CR_GREEN); + 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; } - amount -= saved; - damage = newdamage; - bool shouldautouse = false; - if ( swwm_enforceautousearmor == 1 ) shouldautouse = true; - else if ( swwm_enforceautousearmor == -1 ) shouldautouse = false; - else shouldautouse = CVar.GetCVar('swwm_autousearmor',Owner.player).GetBool(); - if ( (amount <= (MaxAmount-default.Amount)) && (Owner.CountInv(parent) > 0) && shouldautouse ) - { - if ( GetDefaultByType(parent).UseSound ) Owner.A_StartSound(GetDefaultByType(parent).UseSound,CHAN_ITEMEXTRA,CHANF_DEFAULT,.6); - int tgive = 0; - bool acc = CVar.GetCVar('swwm_accdamage',players[consoleplayer]).GetBool(); - while ( (amount <= (MaxAmount-default.Amount)) && (Owner.CountInv(parent) > 0) ) - { - if ( acc ) tgive += default.Amount; - else SWWMScoreObj.Spawn(default.Amount,Owner.Vec3Offset(FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8)+Owner.Height/2),Font.CR_GREEN); - 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; - } - if ( acc ) SWWMScoreObj.Spawn(tgive,Owner.Vec3Offset(FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8)+Owner.Height/2),Font.CR_GREEN); - } - else if ( amount <= 0 ) - { - if ( damage > 0 ) newdamage = ApplyDamageFactors(GetClass(),damageType,damage,damage); - if ( Owner.CheckLocalView() && (drainmsg != "") ) Console.Printf(StringTable.Localize(drainmsg)); - DepleteOrDestroy(); - return; - } + if ( acc ) SWWMScoreObj.Spawn(tgive,Owner.Vec3Offset(FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8)+Owner.Height/2),Font.CR_GREEN); + } + else if ( amount <= 0 ) + { + if ( Owner.CheckLocalView() && (drainmsg != "") ) Console.Printf(StringTable.Localize(drainmsg)); + DepleteOrDestroy(); + return; } - if ( damage > 0 ) newdamage = ApplyDamageFactors(GetClass(),damageType,damage,damage); } }