From 175d6b1fc5dfbabdc612d4bf1dc4ff43dce3fdc5 Mon Sep 17 00:00:00 2001 From: Anuken Date: Sat, 13 Oct 2018 12:39:07 -0400 Subject: [PATCH] Improved difficulty balance --- core/src/io/anuke/mindustry/maps/Sectors.java | 2 +- .../maps/generation/FortressGenerator.java | 18 +++++++----------- .../world/blocks/units/UnitFactory.java | 2 +- 3 files changed, 9 insertions(+), 13 deletions(-) diff --git a/core/src/io/anuke/mindustry/maps/Sectors.java b/core/src/io/anuke/mindustry/maps/Sectors.java index ed55cf86df..ce978092d7 100644 --- a/core/src/io/anuke/mindustry/maps/Sectors.java +++ b/core/src/io/anuke/mindustry/maps/Sectors.java @@ -377,7 +377,7 @@ public class Sectors{ //50% chance to get a wave mission if(Mathf.randomSeed(sector.getSeed() + 6) < 0.5 || (sector.width + sector.height) <= 3){ - sector.missions.add(new WaveMission(sector.difficulty*5 + Mathf.randomSeed(sector.getSeed(), 0, 3)*5)); + sector.missions.add(new WaveMission(sector.difficulty*5 + Mathf.randomSeed(sector.getSeed(), 1, 4)*5)); }else{ sector.missions.add(new BattleMission()); } diff --git a/core/src/io/anuke/mindustry/maps/generation/FortressGenerator.java b/core/src/io/anuke/mindustry/maps/generation/FortressGenerator.java index b050285e0d..7451978534 100644 --- a/core/src/io/anuke/mindustry/maps/generation/FortressGenerator.java +++ b/core/src/io/anuke/mindustry/maps/generation/FortressGenerator.java @@ -26,11 +26,9 @@ import io.anuke.mindustry.world.blocks.defense.turrets.Turret; import io.anuke.mindustry.world.blocks.power.NuclearReactor; import io.anuke.mindustry.world.blocks.power.PowerGenerator; import io.anuke.mindustry.world.blocks.power.SolarGenerator; -import io.anuke.mindustry.world.blocks.production.Drill; import io.anuke.mindustry.world.blocks.storage.CoreBlock; import io.anuke.mindustry.world.blocks.storage.StorageBlock; import io.anuke.mindustry.world.blocks.units.UnitFactory; -import io.anuke.mindustry.world.consumers.ConsumePower; import io.anuke.ucore.function.BiFunction; import io.anuke.ucore.function.IntPositionConsumer; import io.anuke.ucore.function.TriFunction; @@ -60,15 +58,13 @@ public class FortressGenerator{ void gen(){ gen.setBlock(enemyX, enemyY, StorageBlocks.core, team); - float difficultyScl = Mathf.clamp(gen.sector.difficulty / 20f + gen.random.range(1f/2f), 0f, 0.9999f); + float difficultyScl = Mathf.clamp(gen.sector.difficulty / 20f + gen.random.range(0.25f), 0f, 0.9999f); + float dscl2 = Mathf.clamp(0.5f + gen.sector.difficulty / 20f + gen.random.range(0.1f), 0f, 1.5f); int coreDst = FortressGenerator.coreDst*Math.min(gen.sector.width, gen.sector.height); Array turrets = find(b -> b instanceof ItemTurret); Array powerTurrets = find(b -> b instanceof PowerTurret); - Array drills = find(b -> b instanceof Drill && !b.consumes.has(ConsumePower.class)); - Array powerDrills = find(b -> b instanceof Drill && b.consumes.has(ConsumePower.class)); Array walls = find(b -> b instanceof Wall && !(b instanceof Door) && b.size == 1); - Array wallsLarge = find(b -> b instanceof Wall && !(b instanceof Door) && b.size == 2); Block wall = walls.get((int)(difficultyScl * walls.size)); @@ -140,19 +136,19 @@ public class FortressGenerator{ seeder.get(turret2, tile -> tile.block() instanceof PowerBlock && gen.random.chance(0.12 - turret2.size*0.02)), //shields - seeder.get(DefenseBlocks.forceProjector, tile -> tile.block() instanceof CoreBlock || tile.block() instanceof UnitFactory && gen.random.chance(0.08)), + seeder.get(DefenseBlocks.forceProjector, tile -> (tile.block() instanceof CoreBlock || tile.block() instanceof UnitFactory) && gen.random.chance(0.2 * dscl2)), //unit pads (assorted) - seeder.get(UnitBlocks.daggerFactory, tile -> tile.block() instanceof MendProjector || tile.block() instanceof ForceProjector && gen.random.chance(0.3)), + seeder.get(UnitBlocks.daggerFactory, tile -> (tile.block() instanceof MendProjector || tile.block() instanceof ForceProjector) && gen.random.chance(0.3 * dscl2)), //unit pads (assorted) - seeder.get(UnitBlocks.wraithFactory, tile -> tile.block() instanceof MendProjector || tile.block() instanceof ForceProjector && gen.random.chance(0.3)), + seeder.get(UnitBlocks.wraithFactory, tile -> (tile.block() instanceof MendProjector || tile.block() instanceof ForceProjector) && gen.random.chance(0.3 * dscl2)), //unit pads (assorted) - seeder.get(UnitBlocks.titanFactory, tile -> tile.block() instanceof MendProjector || tile.block() instanceof ForceProjector && gen.random.chance(0.23)), + seeder.get(UnitBlocks.titanFactory, tile -> (tile.block() instanceof MendProjector || tile.block() instanceof ForceProjector) && gen.random.chance(0.23 * dscl2)), //unit pads (assorted) - seeder.get(UnitBlocks.ghoulFactory, tile -> tile.block() instanceof MendProjector || tile.block() instanceof ForceProjector && gen.random.chance(0.23)), + seeder.get(UnitBlocks.ghoulFactory, tile -> (tile.block() instanceof MendProjector || tile.block() instanceof ForceProjector) && gen.random.chance(0.23 * dscl2)), //vaults seeder.get(StorageBlocks.vault, tile -> (tile.block() instanceof CoreBlock || tile.block() instanceof ForceProjector) && gen.random.chance(0.4)), diff --git a/core/src/io/anuke/mindustry/world/blocks/units/UnitFactory.java b/core/src/io/anuke/mindustry/world/blocks/units/UnitFactory.java index 0a49db2229..fb7fed9e4e 100644 --- a/core/src/io/anuke/mindustry/world/blocks/units/UnitFactory.java +++ b/core/src/io/anuke/mindustry/world/blocks/units/UnitFactory.java @@ -35,7 +35,7 @@ import java.io.DataOutputStream; import java.io.IOException; public class UnitFactory extends Block{ - protected float gracePeriodMultiplier = 2f; + protected float gracePeriodMultiplier = 15f; protected float speedupTime = 60f * 60f * 20; protected float maxSpeedup = 2f;