From 2282cb89b11f7280e2e4da307dcfc7915faf9ee4 Mon Sep 17 00:00:00 2001 From: Anuken Date: Mon, 23 Nov 2020 18:09:20 -0500 Subject: [PATCH] Fixed sector damage calculations / Campaign balance --- core/assets/maps/windsweptIslands.msav | Bin 13400 -> 13484 bytes core/src/mindustry/Vars.java | 2 +- core/src/mindustry/content/TechTree.java | 1 + core/src/mindustry/content/UnitTypes.java | 2 +- core/src/mindustry/game/Waves.java | 2 +- core/src/mindustry/maps/SectorDamage.java | 30 ++++++++++++---------- 6 files changed, 21 insertions(+), 16 deletions(-) diff --git a/core/assets/maps/windsweptIslands.msav b/core/assets/maps/windsweptIslands.msav index d5e838b60dd4f312d7d8bce89580163b850e9216..2c8547f6f9676540b7aef2129f4291928ccdfd01 100644 GIT binary patch literal 13484 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�{#E^ZQUC5z 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 literal 13400 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 diff --git a/core/src/mindustry/Vars.java b/core/src/mindustry/Vars.java index ec720f1570..0e321e1ed6 100644 --- a/core/src/mindustry/Vars.java +++ b/core/src/mindustry/Vars.java @@ -88,7 +88,7 @@ public class Vars implements Loadable{ /** duration of time between turns in ticks */ public static final float turnDuration = 2 * Time.toMinutes; /** chance of an invasion per turn, 1 = 100% */ - public static final float baseInvasionChance = 1f / 55f; + public static final float baseInvasionChance = 1f / 60f; /** how many turns have to pass before invasions start */ public static final int invasionGracePeriod = 20; /** min armor fraction damage; e.g. 0.05 = at least 5% damage */ diff --git a/core/src/mindustry/content/TechTree.java b/core/src/mindustry/content/TechTree.java index 41dd134682..bf0f73c730 100644 --- a/core/src/mindustry/content/TechTree.java +++ b/core/src/mindustry/content/TechTree.java @@ -484,6 +484,7 @@ public class TechTree implements ContentList{ new Research(bryde), new Research(spectre), new Research(launchPad), + new Research(massDriver), new Research(impactReactor), new Research(additiveReconstructor), new Research(exponentialReconstructor) diff --git a/core/src/mindustry/content/UnitTypes.java b/core/src/mindustry/content/UnitTypes.java index 3a3d3041f4..023eeb5631 100644 --- a/core/src/mindustry/content/UnitTypes.java +++ b/core/src/mindustry/content/UnitTypes.java @@ -1413,12 +1413,12 @@ public class UnitTypes implements ContentList{ ejectEffect = Fx.casing1; shootSound = Sounds.missile; bullet = new MissileBulletType(2.7f, 12, "missile"){{ + keepVelocity = true; width = 8f; height = 8f; shrinkY = 0f; drag = -0.003f; homingRange = 60f; - keepVelocity = false; splashDamageRadius = 25f; splashDamage = 10f; lifetime = 80f; diff --git a/core/src/mindustry/game/Waves.java b/core/src/mindustry/game/Waves.java index 21adaac37c..28f742a3cd 100644 --- a/core/src/mindustry/game/Waves.java +++ b/core/src/mindustry/game/Waves.java @@ -277,7 +277,7 @@ public class Waves{ int cap = 150; float shieldStart = 30, shieldsPerWave = 20 + difficulty*30f; - float[] scaling = {1, 1.2f, 1.5f, 3f, 4f}; + float[] scaling = {1, 1.2f, 2f, 3f, 4f}; Intc createProgression = start -> { //main sequence diff --git a/core/src/mindustry/maps/SectorDamage.java b/core/src/mindustry/maps/SectorDamage.java index 993d49d72f..045a0bd75b 100644 --- a/core/src/mindustry/maps/SectorDamage.java +++ b/core/src/mindustry/maps/SectorDamage.java @@ -111,23 +111,26 @@ public class SectorDamage{ float damage = getDamage(state.rules.sector.info); //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.6f); + float scaled = Mathf.pow(damage, 1.2f); - //apply damage to units - float unitDamage = damage * state.rules.sector.info.sumHealth; Tile spawn = spawner.getFirstSpawn(); //damage only units near the spawn point if(spawn != null){ Seq allies = new Seq<>(); + float sumUnitHealth = 0f; for(Unit ally : Groups.unit){ if(ally.team == state.rules.defaultTeam && ally.within(spawn, state.rules.dropZoneRadius * 2.5f)){ allies.add(ally); + sumUnitHealth += ally.health; } } allies.sort(u -> u.dst2(spawn)); + //apply damage to units + float unitDamage = damage * sumUnitHealth; + //damage units one by one, not uniformly for(var u : allies){ if(u.health < unitDamage){ @@ -335,9 +338,9 @@ public class SectorDamage{ info.waveDpsSlope = reg.slope; //enemy units like to aim for a lot of non-essential things, so increase resulting health slightly - info.sumHealth = sumHealth * 1.18f; + info.sumHealth = sumHealth * 1.2f; //players tend to have longer range units/turrets, so assume DPS is higher - info.sumDps = sumDps * 1.18f; + info.sumDps = sumDps * 1.2f; info.sumRps = sumRps; info.wavesSurvived = getWavesSurvived(info); @@ -348,13 +351,12 @@ public class SectorDamage{ Queue frontier = new Queue<>(); float[][] values = new float[tiles.width][tiles.height]; - float damage = fraction*80; //arbitrary damage value //phase one: find all spawnpoints for(Tile tile : tiles){ if((tile.block() instanceof CoreBlock && tile.team() == state.rules.waveTeam) || tile.overlay() == Blocks.spawn){ frontier.add(tile); - values[tile.x][tile.y] = damage; + values[tile.x][tile.y] = fraction * 80; } } @@ -368,14 +370,16 @@ public class SectorDamage{ int radius = 3; //only penetrate a certain % by health, not by distance - float totalHealth = damage >= 1f ? 1f : path.sumf(t -> { + float totalHealth = fraction >= 1f ? 1f : path.sumf(t -> { float s = 0; for(int dx = -radius; dx <= radius; dx++){ for(int dy = -radius; dy <= radius; dy++){ int wx = dx + t.x, wy = dy + t.y; if(wx >= 0 && wy >= 0 && wx < world.width() && wy < world.height() && Mathf.within(dx, dy, radius)){ Tile other = world.rawTile(wx, wy); - s += other.team() == state.rules.defaultTeam ? other.build.health / other.block().size : 0f; + if(!(other.block() instanceof CoreBlock)){ + s += other.team() == state.rules.defaultTeam ? other.build.health / other.block().size : 0f; + } } } } @@ -385,7 +389,7 @@ public class SectorDamage{ float healthCount = 0; out: - for(int i = 0; i < path.size && (healthCount < targetHealth || damage >= 1f); i++){ + for(int i = 0; i < path.size && (healthCount < targetHealth || fraction >= 1f); i++){ Tile t = path.get(i); for(int dx = -radius; dx <= radius; dx++){ @@ -405,7 +409,7 @@ public class SectorDamage{ removal.add(other.build); - if(healthCount >= targetHealth && damage < 0.999f){ + if(healthCount >= targetHealth && fraction < 0.999f){ break out; } } @@ -430,10 +434,10 @@ public class SectorDamage{ } } - float falloff = (damage) / (Math.max(tiles.width, tiles.height) * Mathf.sqrt2); + float falloff = (fraction) / (Math.max(tiles.width, tiles.height) * Mathf.sqrt2); int peak = 0; - if(damage > 0.1f){ + if(fraction > 0.1f){ //phase two: propagate the damage while(!frontier.isEmpty()){ peak = Math.max(peak, frontier.size);