From 17177f87aa3a1d5b72e550f2fff738307c630430 Mon Sep 17 00:00:00 2001 From: Anuken Date: Tue, 22 Dec 2020 11:20:35 -0500 Subject: [PATCH] Fixed #4071 --- core/src/mindustry/entities/comp/HealthComp.java | 6 +----- core/src/mindustry/entities/comp/ShieldComp.java | 16 +++++++++++++++- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/core/src/mindustry/entities/comp/HealthComp.java b/core/src/mindustry/entities/comp/HealthComp.java index 2b4aef0b51..85d0a37105 100644 --- a/core/src/mindustry/entities/comp/HealthComp.java +++ b/core/src/mindustry/entities/comp/HealthComp.java @@ -51,11 +51,7 @@ abstract class HealthComp implements Entityc, Posc{ /** Damage and pierce armor. */ void damagePierce(float amount, boolean withEffect){ - if(this instanceof Shieldc c){ - damage(amount + c.armor(), withEffect); - }else{ - damage(amount, withEffect); - } + damage(amount, withEffect); } /** Damage and pierce armor. */ diff --git a/core/src/mindustry/entities/comp/ShieldComp.java b/core/src/mindustry/entities/comp/ShieldComp.java index a1aa1b6aae..3ca002b288 100644 --- a/core/src/mindustry/entities/comp/ShieldComp.java +++ b/core/src/mindustry/entities/comp/ShieldComp.java @@ -26,8 +26,22 @@ abstract class ShieldComp implements Healthc, Posc{ amount = Math.max(amount - armor, minArmorDamage * amount); amount /= healthMultiplier; - hitTime = 1f; + rawDamage(amount); + } + @Replace + @Override + public void damagePierce(float amount, boolean withEffect){ + float pre = hitTime; + + rawDamage(amount); + + if(!withEffect){ + hitTime = pre; + } + } + + private void rawDamage(float amount){ boolean hadShields = shield > 0.0001f; if(hadShields){