From e1e5bd5b3f7868320195210e55da36ab8edf1ae0 Mon Sep 17 00:00:00 2001 From: Anuken Date: Wed, 14 May 2025 12:06:35 -0400 Subject: [PATCH] Fixed #10806 / Fixed crash --- core/src/mindustry/game/MapObjectives.java | 1 + core/src/mindustry/game/SectorInfo.java | 10 ++--- core/src/mindustry/game/Universe.java | 2 +- core/src/mindustry/io/SaveVersion.java | 2 +- core/src/mindustry/maps/SectorDamage.java | 48 ++++++++++++---------- 5 files changed, 33 insertions(+), 30 deletions(-) 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){