diff --git a/core/src/main/assets/boss_hp.png b/core/src/main/assets/boss_hp.png index 40734a580..fcec8e0d1 100644 Binary files a/core/src/main/assets/boss_hp.png and b/core/src/main/assets/boss_hp.png differ diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/BossHealthBar.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/BossHealthBar.java index 9878b59fd..37c744b03 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/BossHealthBar.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/BossHealthBar.java @@ -32,6 +32,9 @@ import com.watabou.noosa.ui.Component; public class BossHealthBar extends Component { private Image bar; + + private Image rawShielding; + private Image shieldedHP; private Image hp; private static Mob boss; @@ -58,6 +61,13 @@ public class BossHealthBar extends Component { width = bar.width; height = bar.height; + rawShielding = new Image(asset, 15, 25, 47, 4); + rawShielding.alpha(0.5f); + add(rawShielding); + + shieldedHP = new Image(asset, 15, 25, 47, 4); + add(shieldedHP); + hp = new Image(asset, 15, 19, 47, 4); add(hp); @@ -77,8 +87,8 @@ public class BossHealthBar extends Component { bar.x = x; bar.y = y; - hp.x = bar.x+15; - hp.y = bar.y+6; + hp.x = shieldedHP.x = rawShielding.x = bar.x+15; + hp.y = shieldedHP.y = rawShielding.y = bar.y+6; skull.x = bar.x+5; skull.y = bar.y+5; @@ -92,7 +102,15 @@ public class BossHealthBar extends Component { boss = null; visible = active = false; } else { - hp.scale.x = (float)boss.HP/boss.HT; + + float health = boss.HP; + float shield = boss.shielding(); + float max = boss.HT; + + hp.scale.x = Math.max( 0, (health-shield)/max); + shieldedHP.scale.x = health/max; + rawShielding.scale.x = shield/max; + if (hp.scale.x < 0.25f) bleed( true ); if (bleeding != blood.on){