From 9d7fbf724791d8428bfd7a41f0cef535217c3a0d Mon Sep 17 00:00:00 2001 From: Andreas Troelsen Date: Mon, 21 Jan 2013 03:56:47 +0100 Subject: [PATCH] Allow flat health values for bosses. --- .../MobArena/waves/WaveParser.java | 18 ++++++++++++++- .../MobArena/waves/enums/BossHealth.java | 6 ++++- .../MobArena/waves/types/BossWave.java | 22 ++++++++++++++++--- 3 files changed, 41 insertions(+), 5 deletions(-) diff --git a/src/com/garbagemule/MobArena/waves/WaveParser.java b/src/com/garbagemule/MobArena/waves/WaveParser.java index 0bc9bf4..e178448 100644 --- a/src/com/garbagemule/MobArena/waves/WaveParser.java +++ b/src/com/garbagemule/MobArena/waves/WaveParser.java @@ -233,7 +233,23 @@ public class WaveParser // Grab the boss health String hlth = config.getString("health"); BossHealth health = BossHealth.fromString(hlth); - result.setHealth(health); + if (health != null) { + result.setHealth(health); + } else { + try { + int flatHealth; + if (hlth != null) { + flatHealth = Integer.parseInt(hlth); + } else { + flatHealth = config.getInt("health"); + } + result.setFlatHealth(flatHealth); + } catch (Exception e) { + String warning = "Unable to parse health of boss '%s' in arena '%s'. Defaulting to medium. Value was '%s'"; + Messenger.warning(String.format(warning, name, arena.configName(), hlth)); + result.setHealth(BossHealth.MEDIUM); + } + } // And the abilities. String ablts = config.getString("abilities"); diff --git a/src/com/garbagemule/MobArena/waves/enums/BossHealth.java b/src/com/garbagemule/MobArena/waves/enums/BossHealth.java index fcb3911..2fbb5be 100644 --- a/src/com/garbagemule/MobArena/waves/enums/BossHealth.java +++ b/src/com/garbagemule/MobArena/waves/enums/BossHealth.java @@ -15,7 +15,11 @@ public enum BossHealth return (playerCount + 1) * 20 * multiplier; } + public int getMultiplier() { + return multiplier; + } + public static BossHealth fromString(String string) { - return WaveUtils.getEnumFromString(BossHealth.class, string, MEDIUM); + return WaveUtils.getEnumFromString(BossHealth.class, string, null); } } \ No newline at end of file diff --git a/src/com/garbagemule/MobArena/waves/types/BossWave.java b/src/com/garbagemule/MobArena/waves/types/BossWave.java index e5d6045..4f41742 100644 --- a/src/com/garbagemule/MobArena/waves/types/BossWave.java +++ b/src/com/garbagemule/MobArena/waves/types/BossWave.java @@ -22,7 +22,10 @@ public class BossWave extends AbstractWave { private MACreature monster; private Set bosses; - private BossHealth health; + + private boolean useHealthMultiplier; + private int healthMultiplier; + private int flatHealth; private List abilities; private boolean activated, abilityAnnounce; @@ -36,6 +39,10 @@ public class BossWave extends AbstractWave this.activated = false; this.abilityAnnounce = false; this.setType(WaveType.BOSS); + + this.useHealthMultiplier = true; + this.healthMultiplier = 0; + this.flatHealth = 0; } @Override @@ -46,11 +53,20 @@ public class BossWave extends AbstractWave } public int getMaxHealth(int playerCount) { - return health.getMax(playerCount); + if (useHealthMultiplier) { + return (playerCount + 1) * 20 * healthMultiplier; + } + return flatHealth; } public void setHealth(BossHealth health) { - this.health = health; + this.healthMultiplier = health.getMultiplier(); + this.useHealthMultiplier = true; + } + + public void setFlatHealth(int flatHealth) { + this.flatHealth = flatHealth; + this.useHealthMultiplier = false; } public void addMABoss(MABoss boss) {