diff --git a/core/src/mindustry/game/MapObjectives.java b/core/src/mindustry/game/MapObjectives.java index 7e7d5af4af..36773e7c51 100644 --- a/core/src/mindustry/game/MapObjectives.java +++ b/core/src/mindustry/game/MapObjectives.java @@ -1242,6 +1242,7 @@ public class MapObjectives implements Iterable, Eachable timeDestroyBase){ health = 0f; //return current wave if simulating - if(retWave) return i - waveBegin; + if(retWave) return Math.max(i - waveBegin - 1, waveBegin); break; } @@ -132,7 +135,7 @@ public class SectorDamage{ /** Applies wave damage based on sector parameters. */ public static void applyCalculatedDamage(){ //calculate base damage fraction - float damage = getDamage(state.rules.sector.info); + float damage = getDamage(state.rules.sector); //scaled damage has a power component to make it seem a little more realistic (as systems fail, enemy capturing gets easier and easier) float scaled = Mathf.pow(damage, 1.2f); @@ -187,7 +190,8 @@ public class SectorDamage{ } /** Calculates damage simulation parameters before a game is saved. */ - public static void writeParameters(SectorInfo info){ + public static void writeParameters(Sector sector){ + var info = sector.info; Building core = state.rules.defaultTeam.core(); Seq spawns = new Seq<>(); spawner.eachGroundSpawn((x, y) -> spawns.add(world.tile(x, y))); @@ -370,7 +374,7 @@ public class SectorDamage{ info.curEnemyDps = curEnemyDps*cmult; info.curEnemyHealth = curEnemyHealth*cmult; - info.wavesSurvived = getWavesSurvived(info); + info.wavesSurvived = getWavesSurvived(sector); } public static void apply(float fraction){