diff --git a/src/engine/gameManager/ConfigManager.java b/src/engine/gameManager/ConfigManager.java index d69d1526..7d4c5652 100644 --- a/src/engine/gameManager/ConfigManager.java +++ b/src/engine/gameManager/ConfigManager.java @@ -75,6 +75,7 @@ public enum ConfigManager { // Mobile AI modifiers MB_AI_CAST_FREQUENCY, MB_AI_AGGRO_RANGE, + MB_MINION_SPAWN_TIME, //drop rates MB_NORMAL_EXP_RATE, diff --git a/src/engine/objects/Mob.java b/src/engine/objects/Mob.java index 6b2e6f96..1eccf487 100644 --- a/src/engine/objects/Mob.java +++ b/src/engine/objects/Mob.java @@ -41,9 +41,6 @@ import static java.lang.Math.toIntExact; public class Mob extends AbstractIntelligenceAgent implements Delayed { private static int staticID = 0; - - // Optional env var (seconds) to shorten guard/siege minion spawns for testing; not in the ConfigManager enum, which requires every entry. - private static final String MINION_SPAWN_TIME_FLAG = "MB_MINION_SPAWN_TIME"; //mob specific public final ConcurrentHashMap playerAgroMap = new ConcurrentHashMap<>(); //key = Player value = hate value @@ -439,21 +436,28 @@ public class Mob extends AbstractIntelligenceAgent implements Delayed { return mobile; } + // MB_MINION_SPAWN_TIME (seconds) shortens guard/siege minion spawns for testing; 0 or blank keeps the normal timers. private static int minionSpawnDelay(int defaultDelay) { String overrideValue; + int overrideDelay; - overrideValue = ConfigManager.configMap.get(MINION_SPAWN_TIME_FLAG); + overrideValue = ConfigManager.MB_MINION_SPAWN_TIME.getValue(); - if (overrideValue == null || overrideValue.isEmpty()) + if (overrideValue == null || overrideValue.trim().isEmpty()) return defaultDelay; try { - return Integer.parseInt(overrideValue.trim()); + overrideDelay = Integer.parseInt(overrideValue.trim()); } catch (NumberFormatException e) { - Logger.warn(MINION_SPAWN_TIME_FLAG + " is not a number: " + overrideValue); + Logger.warn("MB_MINION_SPAWN_TIME is not a number: " + overrideValue); return defaultDelay; } + + if (overrideDelay <= 0) + return defaultDelay; + + return overrideDelay; } public static synchronized Mob createGuardMinion(Mob guardCaptain, short level, String minionName) {