From dcbe06229c3ab91f4f91b5292a27853b26bd9b60 Mon Sep 17 00:00:00 2001 From: Anuken Date: Mon, 23 Nov 2020 10:36:41 -0500 Subject: [PATCH 01/28] Campaign fixes & balance --- core/assets/bundles/bundle.properties | 1 + core/src/mindustry/content/SectorPresets.java | 2 +- core/src/mindustry/content/UnitTypes.java | 4 ++-- core/src/mindustry/core/Control.java | 15 +++++++++++++-- .../src/mindustry/entities/bullet/BulletType.java | 4 ++-- core/src/mindustry/game/Objectives.java | 12 ++---------- core/src/mindustry/game/Waves.java | 6 +++--- core/src/mindustry/maps/SectorDamage.java | 2 +- core/src/mindustry/type/UnitType.java | 2 +- 9 files changed, 26 insertions(+), 22 deletions(-) diff --git a/core/assets/bundles/bundle.properties b/core/assets/bundles/bundle.properties index 82654724eb..72f241b9b4 100644 --- a/core/assets/bundles/bundle.properties +++ b/core/assets/bundles/bundle.properties @@ -147,6 +147,7 @@ planetmap = Planet Map launchcore = Launch Core filename = File Name: unlocked = New content unlocked! +available = New research available! completed = [accent]Completed techtree = Tech Tree research.list = [lightgray]Research: diff --git a/core/src/mindustry/content/SectorPresets.java b/core/src/mindustry/content/SectorPresets.java index 75583b19bf..7e2586eb9d 100644 --- a/core/src/mindustry/content/SectorPresets.java +++ b/core/src/mindustry/content/SectorPresets.java @@ -27,7 +27,7 @@ public class SectorPresets implements ContentList{ }}; frozenForest = new SectorPreset("frozenForest", serpulo, 86){{ - captureWave = 20; + captureWave = 15; difficulty = 2; }}; diff --git a/core/src/mindustry/content/UnitTypes.java b/core/src/mindustry/content/UnitTypes.java index ed54cf324f..3a3d3041f4 100644 --- a/core/src/mindustry/content/UnitTypes.java +++ b/core/src/mindustry/content/UnitTypes.java @@ -556,7 +556,7 @@ public class UnitTypes implements ContentList{ range = 40f; weapons.add(new Weapon(){{ - reload = 12f; + reload = 24f; shootCone = 180f; ejectEffect = Fx.none; shootSound = Sounds.explosion; @@ -1321,7 +1321,7 @@ public class UnitTypes implements ContentList{ sprite = "large-bomb"; width = height = 120/4f; - range = 30f; + maxRange = 30f; ignoreRotation = true; backColor = Pal.heal; diff --git a/core/src/mindustry/core/Control.java b/core/src/mindustry/core/Control.java index cd1768b25c..a810c61946 100644 --- a/core/src/mindustry/core/Control.java +++ b/core/src/mindustry/core/Control.java @@ -6,6 +6,7 @@ import arc.audio.*; import arc.graphics.g2d.*; import arc.input.*; import arc.math.*; +import arc.scene.style.*; import arc.scene.ui.*; import arc.struct.*; import arc.util.*; @@ -16,6 +17,7 @@ import mindustry.core.GameState.*; import mindustry.entities.*; import mindustry.game.EventType.*; import mindustry.game.*; +import mindustry.game.Objectives.*; import mindustry.game.Saves.*; import mindustry.gen.*; import mindustry.input.*; @@ -24,6 +26,7 @@ import mindustry.io.SaveIO.*; import mindustry.maps.Map; import mindustry.net.*; import mindustry.type.*; +import mindustry.ui.*; import mindustry.ui.dialogs.*; import mindustry.world.*; @@ -124,10 +127,18 @@ public class Control implements ApplicationListener, Loadable{ } })); - Events.on(UnlockEvent.class, e -> ui.hudfrag.showUnlock(e.content)); - Events.on(UnlockEvent.class, e -> { + ui.hudfrag.showUnlock(e.content); + checkAutoUnlocks(); + + if(e.content instanceof SectorPreset){ + for(TechNode node : TechTree.all){ + if(!node.content.unlocked() && node.objectives.contains(o -> o instanceof SectorComplete sec && sec.preset == e.content) && !node.objectives.contains(o -> !o.complete())){ + ui.hudfrag.showToast(new TextureRegionDrawable(node.content.icon(Cicon.large)), bundle.get("available")); + } + } + } }); Events.on(SectorCaptureEvent.class, e -> { diff --git a/core/src/mindustry/entities/bullet/BulletType.java b/core/src/mindustry/entities/bullet/BulletType.java index f3d09de8ed..a384dd18b2 100644 --- a/core/src/mindustry/entities/bullet/BulletType.java +++ b/core/src/mindustry/entities/bullet/BulletType.java @@ -78,7 +78,7 @@ public abstract class BulletType extends Content{ * Do not change unless you know what you're doing. */ public boolean backMove = true; /** Bullet range override. */ - public float range = -1f; + public float maxRange = -1f; /** % of block health healed **/ public float healPercent = 0f; /** whether to make fire on impact */ @@ -154,7 +154,7 @@ public abstract class BulletType extends Content{ /** Returns maximum distance the bullet this bullet type has can travel. */ public float range(){ - return Math.max(speed * lifetime * (1f - drag), range); + return Math.max(speed * lifetime * (1f - drag), maxRange); } public boolean collides(Bullet bullet, Building tile){ diff --git a/core/src/mindustry/game/Objectives.java b/core/src/mindustry/game/Objectives.java index acf7fad876..bf306cb957 100644 --- a/core/src/mindustry/game/Objectives.java +++ b/core/src/mindustry/game/Objectives.java @@ -48,7 +48,8 @@ public class Objectives{ } } - public static class SectorComplete extends SectorObjective{ + public static class SectorComplete implements Objective{ + public SectorPreset preset; public SectorComplete(SectorPreset zone){ this.preset = zone; @@ -67,11 +68,6 @@ public class Objectives{ } } - //TODO merge - public abstract static class SectorObjective implements Objective{ - public SectorPreset preset; - } - /** Defines a specific objective for a game. */ public interface Objective{ @@ -86,9 +82,5 @@ public class Objectives{ default void build(Table table){ } - - default SectorPreset zone(){ - return this instanceof SectorObjective ? ((SectorObjective)this).preset : null; - } } } diff --git a/core/src/mindustry/game/Waves.java b/core/src/mindustry/game/Waves.java index 586fb285c1..8e65a0b1b9 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, 1.5f, 3f, 4f}; + float[] scaling = {1, 1.2f, 1.5f, 3f, 4f}; Intc createProgression = start -> { //main sequence @@ -298,7 +298,7 @@ public class Waves{ begin = f; end = f + next >= cap ? never : f + next; max = 13; - unitScaling = (difficulty < 0.4f ? rand.random(2.5f, 4f) : rand.random(1f, 4f)) * scaling[ctier]; + unitScaling = (difficulty < 0.4f ? rand.random(2.5f, 5f) : rand.random(1f, 4f)) * scaling[ctier]; shields = shieldAmount; shieldScaling = shieldsPerWave; spacing = space; @@ -310,7 +310,7 @@ public class Waves{ begin = f + next - 1; end = f + next + rand.random(6, 10); max = 6; - unitScaling = rand.random(1f, 2f); + unitScaling = rand.random(2f, 4f); spacing = rand.random(2, 4); shields = shieldAmount/2f; shieldScaling = shieldsPerWave; diff --git a/core/src/mindustry/maps/SectorDamage.java b/core/src/mindustry/maps/SectorDamage.java index 1fce5590e9..156c49515f 100644 --- a/core/src/mindustry/maps/SectorDamage.java +++ b/core/src/mindustry/maps/SectorDamage.java @@ -233,7 +233,7 @@ public class SectorDamage{ //first, calculate the total health of blocks in the path //radius around the path that gets counted - int radius = 8; + int radius = 9; IntSet counted = new IntSet(); for(Tile t : sparse2){ diff --git a/core/src/mindustry/type/UnitType.java b/core/src/mindustry/type/UnitType.java index a83f6532ae..f5a40de645 100644 --- a/core/src/mindustry/type/UnitType.java +++ b/core/src/mindustry/type/UnitType.java @@ -328,7 +328,7 @@ public class UnitType extends UnlockableContent{ //suicide enemy if(weapons.contains(w -> w.bullet.killShooter)){ //scale down DPS to be insignificant - dpsEstimate /= 20f; + dpsEstimate /= 25f; } } } From 4a52392ce9eeb9575a4739afe2f86082da5acec4 Mon Sep 17 00:00:00 2001 From: Anuken Date: Mon, 23 Nov 2020 13:09:42 -0500 Subject: [PATCH 02/28] Added hint about guards & armor --- core/assets/bundles/bundle.properties | 2 +- core/assets/maps/ruinousShores.msav | Bin 18170 -> 18259 bytes core/src/mindustry/Vars.java | 2 +- core/src/mindustry/content/TechTree.java | 6 +++--- core/src/mindustry/core/GameState.java | 3 +-- core/src/mindustry/game/Teams.java | 6 ++++++ core/src/mindustry/game/Universe.java | 2 +- core/src/mindustry/game/Waves.java | 2 +- .../mindustry/ui/fragments/HintsFragment.java | 3 ++- 9 files changed, 16 insertions(+), 10 deletions(-) diff --git a/core/assets/bundles/bundle.properties b/core/assets/bundles/bundle.properties index 72f241b9b4..33ab9b2778 100644 --- a/core/assets/bundles/bundle.properties +++ b/core/assets/bundles/bundle.properties @@ -22,7 +22,6 @@ gameover.pvp = The[accent] {0}[] team is victorious! gameover.waiting = [accent]Waiting for next map... highscore = [accent]New highscore! copied = Copied. -indev.popup = [accent]v6[] is currently in [accent]beta[].\n[lightgray]This means:[]\n[scarlet]- The campaign is unfinished[]\n- Everything you see is subject to change or removal.\n\nReport bugs or crashes on [accent]Github[]. indev.notready = This part of the game isn't ready yet indev.campaign = [accent]You've reached the end of the campaign![]\n\nThis is as far as the content goes. Interplanetary travel will be added in future updates. @@ -1270,6 +1269,7 @@ hint.payloadDrop = Press [accent]][] to drop a payload. hint.payloadDrop.mobile = [accent]Tap and hold[] an empty location to drop a payload there. hint.waveFire = [accent]Wave[] turrets with water as ammunition will automatically put out nearby fires. hint.generator = \uf879 [accent]Combustion Generators[] burn coal and transmit power to adjacent blocks.\n\nPower transmission range can be extended with \uf87f [accent]Power Nodes[]. +hint.guardian = [accent]Guardian[] units are armored. Weak ammo such as [accent]Copper[] and [accent]Lead[] is [scarlet]not effective[].\n\nUse higher tier turrets or \uf835 [accent]Graphite[] \uf861Duo/\uf859Salvo ammunition to take Guardians down. item.copper.description = Used in all types of construction and ammunition. item.copper.details = Copper. Abnormally abundant metal on Serpulo. Structurally weak unless reinforced. diff --git a/core/assets/maps/ruinousShores.msav b/core/assets/maps/ruinousShores.msav index 41e957c0ff971cf11abb1aa10a4daa920edde6cf..48727feae4abb2077b544c010429afe70082b79a 100644 GIT binary patch delta 18187 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 delta 18053 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 { - + node(illuminator, () -> { + + }); }); }); diff --git a/core/src/mindustry/core/GameState.java b/core/src/mindustry/core/GameState.java index 3eed5e0164..de7cf6f60c 100644 --- a/core/src/mindustry/core/GameState.java +++ b/core/src/mindustry/core/GameState.java @@ -33,9 +33,8 @@ public class GameState{ /** Current game state. */ private State state = State.menu; - //TODO optimize public Unit boss(){ - return Groups.unit.find(u -> u.isBoss() && u.team == rules.waveTeam); + return teams.boss; } public void set(State astate){ diff --git a/core/src/mindustry/game/Teams.java b/core/src/mindustry/game/Teams.java index da5edfd0db..1c06372731 100644 --- a/core/src/mindustry/game/Teams.java +++ b/core/src/mindustry/game/Teams.java @@ -26,6 +26,8 @@ public class Teams{ public Seq active = new Seq<>(); /** Teams with block or unit presence. */ public Seq present = new Seq<>(TeamData.class); + /** Current boss unit. */ + public @Nullable Unit boss; public Teams(){ active.add(get(Team.crux)); @@ -178,6 +180,10 @@ public class Teams{ data.units.add(unit); data.presentFlag = true; + if(unit.team == state.rules.waveTeam && unit.isBoss()){ + boss = unit; + } + if(data.unitsByType == null || data.unitsByType.length <= unit.type.id){ data.unitsByType = new Seq[content.units().size]; } diff --git a/core/src/mindustry/game/Universe.java b/core/src/mindustry/game/Universe.java index 1b0b1fc10b..b8f27b5f73 100644 --- a/core/src/mindustry/game/Universe.java +++ b/core/src/mindustry/game/Universe.java @@ -216,7 +216,7 @@ public class Universe{ if(!sector.isAttacked() && turn > invasionGracePeriod && sector.info.hasSpawns){ //invasion chance depends on # of nearby bases if(Mathf.chance(baseInvasionChance * Math.min(sector.near().count(Sector::hasEnemyBase), 1))){ - int waveMax = Math.max(sector.info.winWave, sector.isBeingPlayed() ? state.wave : sector.info.wave + sector.info.wavesPassed) + Mathf.random(2, 5) * 5; + int waveMax = Math.max(sector.info.winWave, sector.isBeingPlayed() ? state.wave : sector.info.wave + sector.info.wavesPassed) + Mathf.random(2, 4) * 5; //assign invasion-related things if(sector.isBeingPlayed()){ diff --git a/core/src/mindustry/game/Waves.java b/core/src/mindustry/game/Waves.java index 8e65a0b1b9..21adaac37c 100644 --- a/core/src/mindustry/game/Waves.java +++ b/core/src/mindustry/game/Waves.java @@ -298,7 +298,7 @@ public class Waves{ begin = f; end = f + next >= cap ? never : f + next; max = 13; - unitScaling = (difficulty < 0.4f ? rand.random(2.5f, 5f) : rand.random(1f, 4f)) * scaling[ctier]; + unitScaling = (difficulty < 0.4f ? rand.random(2.5f, 4f) : rand.random(1f, 4f)) * scaling[ctier]; shields = shieldAmount; shieldScaling = shieldsPerWave; spacing = space; diff --git a/core/src/mindustry/ui/fragments/HintsFragment.java b/core/src/mindustry/ui/fragments/HintsFragment.java index eb029789fe..f967518cb4 100644 --- a/core/src/mindustry/ui/fragments/HintsFragment.java +++ b/core/src/mindustry/ui/fragments/HintsFragment.java @@ -150,7 +150,7 @@ public class HintsFragment extends Fragment{ depositItems(() -> player.unit().hasItem(), () -> !player.unit().hasItem()), desktopPause(visibleDesktop, () -> isTutorial.get() && !Vars.net.active(), () -> Core.input.keyTap(Binding.pause)), research(isTutorial, () -> ui.research.isShown()), - unitControl(() -> state.rules.defaultTeam.data().units.size > 1 && !net.active(), () -> !player.dead() && !player.unit().spawnedByCore), + unitControl(() -> state.rules.defaultTeam.data().units.size > 2 && !net.active() && !player.dead(), () -> !player.dead() && !player.unit().spawnedByCore), respawn(visibleMobile, () -> !player.dead() && !player.unit().spawnedByCore, () -> !player.dead() && player.unit().spawnedByCore), launch(() -> isTutorial.get() && state.rules.sector.isCaptured(), () -> ui.planet.isShown()), schematicSelect(visibleDesktop, () -> ui.hints.placedBlocks.contains(Blocks.router), () -> Core.input.keyRelease(Binding.schematic_select) || Core.input.keyTap(Binding.pick)), @@ -161,6 +161,7 @@ public class HintsFragment extends Fragment{ payloadDrop(() -> !player.unit().dead && player.unit() instanceof Payloadc p && p.payloads().any(), () -> player.unit() instanceof Payloadc p && p.payloads().isEmpty()), waveFire(() -> Groups.fire.size() > 0 && Blocks.wave.unlockedNow(), () -> indexer.getAllied(state.rules.defaultTeam, BlockFlag.extinguisher).size() > 0), generator(() -> control.input.block == Blocks.combustionGenerator, () -> ui.hints.placedBlocks.contains(Blocks.combustionGenerator)), + guardian(() -> state.boss() != null && state.boss().armor >= 4, () -> state.boss() == null), ; @Nullable From ec19381c4e9afc92c4d5c1ef5ed3d9769cf3d231 Mon Sep 17 00:00:00 2001 From: Anuken Date: Mon, 23 Nov 2020 15:41:10 -0500 Subject: [PATCH 03/28] Fixed campaign bases having ridiculous wall tiers --- core/assets/bundles/bundle.properties | 2 +- core/src/mindustry/content/Items.java | 1 + core/src/mindustry/maps/SectorDamage.java | 6 +++--- core/src/mindustry/maps/generators/BaseGenerator.java | 2 +- core/src/mindustry/type/Planet.java | 4 ++-- core/src/mindustry/world/blocks/campaign/LaunchPad.java | 8 ++++++++ core/src/mindustry/world/blocks/units/UnitFactory.java | 5 +---- 7 files changed, 17 insertions(+), 11 deletions(-) diff --git a/core/assets/bundles/bundle.properties b/core/assets/bundles/bundle.properties index 33ab9b2778..0ba749cc57 100644 --- a/core/assets/bundles/bundle.properties +++ b/core/assets/bundles/bundle.properties @@ -1261,7 +1261,7 @@ hint.schematicSelect = Hold [accent][[F][] and drag to select blocks to copy and hint.conveyorPathfind = Hold [accent][[L-Ctrl][] while dragging conveyors to automatically generate a path. hint.conveyorPathfind.mobile = Enable \ue844 [accent]diagonal mode[] and drag conveyors to automatically generate a path. hint.boost = Hold [accent][[L-Shift][] to fly over obstacles with your current unit.\n\nOnly a few ground units have boosters. -hint.command = Press [accent][[G][] to command nearby units into formation. +hint.command = Press [accent][[G][] to command nearby units of [accent]similar type[] into formation.\n\nTo command ground units, you must first control another ground unit. hint.command.mobile = [accent][[Double-tap][] your unit to command nearby units into formation. hint.payloadPickup = Press [accent][[[] to pick up small blocks or units. hint.payloadPickup.mobile = [accent]Tap and hold[] a small block or unit to pick it up. diff --git a/core/src/mindustry/content/Items.java b/core/src/mindustry/content/Items.java index 6d3964fd2c..2c2e5eb60b 100644 --- a/core/src/mindustry/content/Items.java +++ b/core/src/mindustry/content/Items.java @@ -72,6 +72,7 @@ public class Items implements ContentList{ }}; surgeAlloy = new Item("surge-alloy", Color.valueOf("f3e979")){{ + cost = 1.2f; }}; sporePod = new Item("spore-pod", Color.valueOf("7457ce")){{ diff --git a/core/src/mindustry/maps/SectorDamage.java b/core/src/mindustry/maps/SectorDamage.java index 156c49515f..993d49d72f 100644 --- a/core/src/mindustry/maps/SectorDamage.java +++ b/core/src/mindustry/maps/SectorDamage.java @@ -233,7 +233,7 @@ public class SectorDamage{ //first, calculate the total health of blocks in the path //radius around the path that gets counted - int radius = 9; + int radius = 8; IntSet counted = new IntSet(); for(Tile t : sparse2){ @@ -335,9 +335,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.3f; + info.sumHealth = sumHealth * 1.18f; //players tend to have longer range units/turrets, so assume DPS is higher - info.sumDps = sumDps * 1.3f; + info.sumDps = sumDps * 1.18f; info.sumRps = sumRps; info.wavesSurvived = getWavesSurvived(info); diff --git a/core/src/mindustry/maps/generators/BaseGenerator.java b/core/src/mindustry/maps/generators/BaseGenerator.java index 8a5bf215ab..2677f95c22 100644 --- a/core/src/mindustry/maps/generators/BaseGenerator.java +++ b/core/src/mindustry/maps/generators/BaseGenerator.java @@ -55,7 +55,7 @@ public class BaseGenerator{ BasePart coreschem = bases.cores.getFrac(difficulty); int passes = difficulty < 0.4 ? 1 : difficulty < 0.8 ? 2 : 3; - Block wall = wallsSmall.getFrac(difficulty), wallLarge = wallsLarge.getFrac(difficulty); + Block wall = wallsSmall.getFrac(difficulty * 0.91f), wallLarge = wallsLarge.getFrac(difficulty * 0.91f); for(Tile tile : cores){ tile.clearOverlay(); diff --git a/core/src/mindustry/type/Planet.java b/core/src/mindustry/type/Planet.java index 0f872b393d..b4917e519e 100644 --- a/core/src/mindustry/type/Planet.java +++ b/core/src/mindustry/type/Planet.java @@ -182,12 +182,12 @@ public class Planet extends UnlockableContent{ float sum = 1f; for(Sector other : sector.near()){ if(other.generateEnemyBase){ - sum += 1f; + sum += 0.9f; } } if(sector.hasEnemyBase()){ - sum += 1.9f; + sum += 1f; } sector.threat = sector.preset == null ? Math.min(sum / 5f, 1.2f) : Mathf.clamp(sector.preset.difficulty / 10f); diff --git a/core/src/mindustry/world/blocks/campaign/LaunchPad.java b/core/src/mindustry/world/blocks/campaign/LaunchPad.java index aa259efea6..d72c1f133a 100644 --- a/core/src/mindustry/world/blocks/campaign/LaunchPad.java +++ b/core/src/mindustry/world/blocks/campaign/LaunchPad.java @@ -19,6 +19,7 @@ import mindustry.graphics.*; import mindustry.type.*; import mindustry.ui.*; import mindustry.world.*; +import mindustry.world.consumers.*; import mindustry.world.meta.*; import static mindustry.Vars.*; @@ -38,6 +39,7 @@ public class LaunchPad extends Block{ solid = true; update = true; configurable = true; + drawDisabled = false; } @Override @@ -61,6 +63,12 @@ public class LaunchPad extends Block{ return !state.isCampaign() || net.client() ? SystemCursor.arrow : super.getCursor(); } + //cannot be disabled + @Override + public float efficiency(){ + return power != null && (block.consumes.has(ConsumeType.power) && !block.consumes.getPower().buffered) ? power.status : 1f; + } + @Override public void draw(){ super.draw(); diff --git a/core/src/mindustry/world/blocks/units/UnitFactory.java b/core/src/mindustry/world/blocks/units/UnitFactory.java index 6b2156e566..1a257d9565 100644 --- a/core/src/mindustry/world/blocks/units/UnitFactory.java +++ b/core/src/mindustry/world/blocks/units/UnitFactory.java @@ -53,15 +53,12 @@ public class UnitFactory extends UnitBlock{ @Override public void init(){ capacities = new int[Vars.content.items().size]; - itemCapacity = 0; for(UnitPlan plan : plans){ for(ItemStack stack : plan.requirements){ capacities[stack.item.id] = Math.max(capacities[stack.item.id], stack.amount * 2); + itemCapacity = Math.max(itemCapacity, stack.amount * 2); } } - for(int i : capacities){ - itemCapacity += i; - } super.init(); } From 06929ee8f39abf2cddada0fbc1a6146e513483ce Mon Sep 17 00:00:00 2001 From: Anuken Date: Mon, 23 Nov 2020 15:47:15 -0500 Subject: [PATCH 04/28] Fixed boss hint not disappearing --- core/src/mindustry/content/Blocks.java | 2 +- core/src/mindustry/game/Teams.java | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/core/src/mindustry/content/Blocks.java b/core/src/mindustry/content/Blocks.java index b6f8e76b14..02d3820bc4 100644 --- a/core/src/mindustry/content/Blocks.java +++ b/core/src/mindustry/content/Blocks.java @@ -363,7 +363,7 @@ public class Blocks implements ContentList{ sandWall = new StaticWall("sand-wall"){{ variants = 2; - sandWater.asFloor().wall = this; + sandWater.asFloor().wall = water.asFloor().wall = deepwater.asFloor().wall = this; }}; saltWall = new StaticWall("salt-wall"); diff --git a/core/src/mindustry/game/Teams.java b/core/src/mindustry/game/Teams.java index 1c06372731..d5afac1217 100644 --- a/core/src/mindustry/game/Teams.java +++ b/core/src/mindustry/game/Teams.java @@ -146,6 +146,7 @@ public class Teams{ public void updateTeamStats(){ present.clear(); + boss = null; for(Team team : Team.all){ TeamData data = team.data(); From 2282cb89b11f7280e2e4da307dcfc7915faf9ee4 Mon Sep 17 00:00:00 2001 From: Anuken Date: Mon, 23 Nov 2020 18:09:20 -0500 Subject: [PATCH 05/28] 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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 literal 13400 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 { //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); From 97254a66720a227906b3c6ab7ecbad386634a8ca Mon Sep 17 00:00:00 2001 From: Volas171 <60143910+Volas171@users.noreply.github.com> Date: Mon, 23 Nov 2020 22:27:08 -0500 Subject: [PATCH 06/28] Update contributors --- core/assets/contributors | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/core/assets/contributors b/core/assets/contributors index 39c29ff93a..d38692de8c 100644 --- a/core/assets/contributors +++ b/core/assets/contributors @@ -1,3 +1,4 @@ +VolasYouKnow Prosta4okua Felix Corvus Vanguard @@ -100,4 +101,4 @@ MEEP of Faith jalastram (freesound.org) newlocknew (freesound.org) dsmolenaers (freesound.org) -Headphaze (freesound.org) \ No newline at end of file +Headphaze (freesound.org) From 1637360952b6995e27508bc6ad33eae2f0ba7e7f Mon Sep 17 00:00:00 2001 From: Skat <55407440+skykatik@users.noreply.github.com> Date: Tue, 24 Nov 2020 13:00:08 +0300 Subject: [PATCH 07/28] Deleted unnecessary DateTimeFormatter declaration --- server/src/mindustry/server/ServerControl.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/server/src/mindustry/server/ServerControl.java b/server/src/mindustry/server/ServerControl.java index 2eaa0a59e1..553fd6af74 100644 --- a/server/src/mindustry/server/ServerControl.java +++ b/server/src/mindustry/server/ServerControl.java @@ -1003,8 +1003,7 @@ public class ServerControl implements ApplicationListener{ private void logToFile(String text){ if(currentLogFile != null && currentLogFile.length() > maxLogLength){ - String date = DateTimeFormatter.ofPattern("MM-dd-yyyy | HH:mm:ss").format(LocalDateTime.now()); - currentLogFile.writeString("[End of log file. Date: " + date + "]\n", true); + currentLogFile.writeString("[End of log file. Date: " + dateTime.format(LocalDateTime.now()) + "]\n", true); currentLogFile = null; } From 058b2ddfce45f7f0e40ed14049e5d7a2b05a5319 Mon Sep 17 00:00:00 2001 From: Anuken Date: Tue, 24 Nov 2020 09:00:34 -0500 Subject: [PATCH 08/28] Fixed #3565 --- core/src/mindustry/Vars.java | 2 +- core/src/mindustry/content/Blocks.java | 2 +- core/src/mindustry/entities/bullet/SapBulletType.java | 2 +- core/src/mindustry/game/Schematics.java | 5 +++++ core/src/mindustry/game/Waves.java | 8 ++++---- core/src/mindustry/maps/SectorDamage.java | 2 +- core/src/mindustry/ui/dialogs/PlanetDialog.java | 1 + 7 files changed, 14 insertions(+), 8 deletions(-) diff --git a/core/src/mindustry/Vars.java b/core/src/mindustry/Vars.java index 0e321e1ed6..21a8b3fb45 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 / 60f; + public static final float baseInvasionChance = 1f / 75f; /** 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/Blocks.java b/core/src/mindustry/content/Blocks.java index 02d3820bc4..98c835f026 100644 --- a/core/src/mindustry/content/Blocks.java +++ b/core/src/mindustry/content/Blocks.java @@ -1195,7 +1195,7 @@ public class Blocks implements ContentList{ size = 2; ambientSound = Sounds.smelter; - ambientSoundVolume = 0.05f; + ambientSoundVolume = 0.06f; }}; differentialGenerator = new SingleTypeGenerator("differential-generator"){{ diff --git a/core/src/mindustry/entities/bullet/SapBulletType.java b/core/src/mindustry/entities/bullet/SapBulletType.java index 9d05a37e9a..dbd30b77a8 100644 --- a/core/src/mindustry/entities/bullet/SapBulletType.java +++ b/core/src/mindustry/entities/bullet/SapBulletType.java @@ -61,7 +61,7 @@ public class SapBulletType extends BulletType{ b.data = target; if(target != null){ - float result = Math.min(target.health(), damage); + float result = Math.max(Math.min(target.health(), damage), 0); if(b.owner instanceof Healthc h){ h.heal(result * sapStrength); diff --git a/core/src/mindustry/game/Schematics.java b/core/src/mindustry/game/Schematics.java index 7cd51ecec4..2d526606c7 100644 --- a/core/src/mindustry/game/Schematics.java +++ b/core/src/mindustry/game/Schematics.java @@ -127,6 +127,9 @@ public class Schematics implements Loadable{ newSchematic.tags.putAll(target.tags); newSchematic.file = target.file; + loadouts.each((block, list) -> list.remove(target)); + checkLoadout(target, true); + try{ write(newSchematic, target.file); }catch(Exception e){ @@ -134,6 +137,8 @@ public class Schematics implements Loadable{ Log.err(e); ui.showException(e); } + + } private @Nullable Schematic loadFile(Fi file){ diff --git a/core/src/mindustry/game/Waves.java b/core/src/mindustry/game/Waves.java index 28f742a3cd..5958d5f22f 100644 --- a/core/src/mindustry/game/Waves.java +++ b/core/src/mindustry/game/Waves.java @@ -10,7 +10,7 @@ import mindustry.type.*; import static mindustry.content.UnitTypes.*; public class Waves{ - public static final int waveVersion = 3; + public static final int waveVersion = 4; private Seq spawns; @@ -277,7 +277,7 @@ public class Waves{ int cap = 150; float shieldStart = 30, shieldsPerWave = 20 + difficulty*30f; - float[] scaling = {1, 1.2f, 2f, 3f, 4f}; + float[] scaling = {1, 1.5f, 3f, 4f, 5f}; Intc createProgression = start -> { //main sequence @@ -286,7 +286,7 @@ public class Waves{ for(int i = start; i < cap;){ int f = i; - int next = rand.random(8, 16) + (int)Mathf.lerp(4f, 0f, difficulty) + curTier * 4; + int next = rand.random(8, 16) + (int)Mathf.lerp(5f, 0f, difficulty) + curTier * 4; float shieldAmount = Math.max((i - shieldStart) * shieldsPerWave, 0); int space = start == 0 ? 1 : rand.random(1, 2); @@ -298,7 +298,7 @@ public class Waves{ begin = f; end = f + next >= cap ? never : f + next; max = 13; - unitScaling = (difficulty < 0.4f ? rand.random(2.5f, 4f) : rand.random(1f, 4f)) * scaling[ctier]; + unitScaling = (difficulty < 0.4f ? rand.random(2.5f, 5f) : rand.random(1f, 4f)) * scaling[ctier]; shields = shieldAmount; shieldScaling = shieldsPerWave; spacing = space; diff --git a/core/src/mindustry/maps/SectorDamage.java b/core/src/mindustry/maps/SectorDamage.java index 045a0bd75b..a86bc47356 100644 --- a/core/src/mindustry/maps/SectorDamage.java +++ b/core/src/mindustry/maps/SectorDamage.java @@ -437,7 +437,7 @@ public class SectorDamage{ float falloff = (fraction) / (Math.max(tiles.width, tiles.height) * Mathf.sqrt2); int peak = 0; - if(fraction > 0.1f){ + if(fraction > 0.15f){ //phase two: propagate the damage while(!frontier.isEmpty()){ peak = Math.max(peak, frontier.size); diff --git a/core/src/mindustry/ui/dialogs/PlanetDialog.java b/core/src/mindustry/ui/dialogs/PlanetDialog.java index a7d0c837de..4700bc0906 100644 --- a/core/src/mindustry/ui/dialogs/PlanetDialog.java +++ b/core/src/mindustry/ui/dialogs/PlanetDialog.java @@ -167,6 +167,7 @@ public class PlanetDialog extends BaseDialog implements PlanetInterfaceRenderer{ } newPresets.reverse(); + updateSelected(); if(planets.planet.getLastSector() != null){ lookAt(planets.planet.getLastSector()); From 7d43856735c853f4f5a8c4e42addf3bcb929e431 Mon Sep 17 00:00:00 2001 From: Anuken Date: Tue, 24 Nov 2020 10:23:28 -0500 Subject: [PATCH 09/28] Bugfixes --- core/src/mindustry/core/Control.java | 10 +++++++++- core/src/mindustry/entities/GroupDefs.java | 1 + core/src/mindustry/entities/bullet/BulletType.java | 4 ++-- core/src/mindustry/game/Universe.java | 2 ++ core/src/mindustry/io/SaveVersion.java | 2 +- core/src/mindustry/maps/SectorDamage.java | 2 +- .../world/blocks/power/ItemLiquidGenerator.java | 5 +++++ gradle.properties | 2 +- 8 files changed, 22 insertions(+), 6 deletions(-) diff --git a/core/src/mindustry/core/Control.java b/core/src/mindustry/core/Control.java index a810c61946..952ab5d82e 100644 --- a/core/src/mindustry/core/Control.java +++ b/core/src/mindustry/core/Control.java @@ -23,6 +23,7 @@ import mindustry.gen.*; import mindustry.input.*; import mindustry.io.*; import mindustry.io.SaveIO.*; +import mindustry.maps.*; import mindustry.maps.Map; import mindustry.net.*; import mindustry.type.*; @@ -322,6 +323,13 @@ public class Control implements ApplicationListener, Loadable{ return; } + //set spawn for sector damage to use + Tile spawn = world.tile(sector.info.spawnPosition); + spawn.setBlock(Blocks.coreShard, state.rules.defaultTeam); + + //add extra damage. + SectorDamage.apply(1f); + //reset wave so things are more fair state.wave = 1; @@ -331,8 +339,8 @@ public class Control implements ApplicationListener, Loadable{ //kill all units, since they should be dead anyway Groups.unit.clear(); Groups.fire.clear(); + Groups.puddle.clear(); - Tile spawn = world.tile(sector.info.spawnPosition); Schematics.placeLaunchLoadout(spawn.x, spawn.y); //set up camera/player locations diff --git a/core/src/mindustry/entities/GroupDefs.java b/core/src/mindustry/entities/GroupDefs.java index 3ddef67d65..8f98a69442 100644 --- a/core/src/mindustry/entities/GroupDefs.java +++ b/core/src/mindustry/entities/GroupDefs.java @@ -12,5 +12,6 @@ class GroupDefs{ @GroupDef(value = Syncc.class, mapping = true) G sync; @GroupDef(value = Drawc.class) G draw; @GroupDef(value = Firec.class) G fire; + @GroupDef(value = Puddlec.class) G puddle; @GroupDef(value = WeatherStatec.class) G weather; } diff --git a/core/src/mindustry/entities/bullet/BulletType.java b/core/src/mindustry/entities/bullet/BulletType.java index a384dd18b2..7d94602844 100644 --- a/core/src/mindustry/entities/bullet/BulletType.java +++ b/core/src/mindustry/entities/bullet/BulletType.java @@ -317,11 +317,11 @@ public abstract class BulletType extends Content{ } public Bullet create(Bullet parent, float x, float y, float angle){ - return create(parent.owner(), parent.team, x, y, angle); + return create(parent.owner, parent.team, x, y, angle); } public Bullet create(Bullet parent, float x, float y, float angle, float velocityScl, float lifeScale){ - return create(parent.owner(), parent.team, x, y, angle, velocityScl, lifeScale); + return create(parent.owner, parent.team, x, y, angle, velocityScl, lifeScale); } public Bullet create(Bullet parent, float x, float y, float angle, float velocityScl){ diff --git a/core/src/mindustry/game/Universe.java b/core/src/mindustry/game/Universe.java index b8f27b5f73..b19fcee6da 100644 --- a/core/src/mindustry/game/Universe.java +++ b/core/src/mindustry/game/Universe.java @@ -208,6 +208,8 @@ public class Universe{ //add production, making sure that it's capped sector.info.production.each((item, stat) -> sector.info.items.add(item, Math.min((int)(stat.mean * newSecondsPassed * scl), sector.info.storageCapacity - sector.info.items.get(item)))); + //prevent negative values with unloaders + sector.info.items.checkNegative(); sector.saveInfo(); } diff --git a/core/src/mindustry/io/SaveVersion.java b/core/src/mindustry/io/SaveVersion.java index 76e3b1cc5c..85fe4a3e31 100644 --- a/core/src/mindustry/io/SaveVersion.java +++ b/core/src/mindustry/io/SaveVersion.java @@ -286,7 +286,7 @@ public abstract class SaveVersion extends SaveFileReader{ public void writeEntities(DataOutput stream) throws IOException{ //write team data with entities. - Seq data = state.teams.getActive(); + Seq data = state.teams.getActive().and(Team.sharded.data()); stream.writeInt(data.size); for(TeamData team : data){ stream.writeInt(team.team.id); diff --git a/core/src/mindustry/maps/SectorDamage.java b/core/src/mindustry/maps/SectorDamage.java index a86bc47356..22f19c3e4d 100644 --- a/core/src/mindustry/maps/SectorDamage.java +++ b/core/src/mindustry/maps/SectorDamage.java @@ -356,7 +356,7 @@ public class SectorDamage{ 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] = fraction * 80; + values[tile.x][tile.y] = fraction * 23; } } diff --git a/core/src/mindustry/world/blocks/power/ItemLiquidGenerator.java b/core/src/mindustry/world/blocks/power/ItemLiquidGenerator.java index 12b3f6d691..2a0982a069 100644 --- a/core/src/mindustry/world/blocks/power/ItemLiquidGenerator.java +++ b/core/src/mindustry/world/blocks/power/ItemLiquidGenerator.java @@ -92,6 +92,11 @@ public class ItemLiquidGenerator extends PowerGenerator{ return generateTime > 0; } + @Override + public float ambientVolume(){ + return Mathf.clamp(productionEfficiency); + } + @Override public void updateTile(){ //Note: Do not use this delta when calculating the amount of power or the power efficiency, but use it for resource consumption if necessary. diff --git a/gradle.properties b/gradle.properties index ba9e4fa2a9..75d6273d77 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,3 +1,3 @@ org.gradle.daemon=true org.gradle.jvmargs=-Xms256m -Xmx1024m -archash=9446f0f01b2a1b25abf870a32bf839bc486b12e3 +archash=a30c7164ce621554b73610ac84ada418e4500a5c From 61bec243dcade2162badbeb6f34ef2beda32f488 Mon Sep 17 00:00:00 2001 From: Anuken Date: Tue, 24 Nov 2020 12:35:04 -0500 Subject: [PATCH 10/28] Campaign balance --- core/assets/maps/saltFlats.msav | Bin 18919 -> 19192 bytes core/assets/maps/stainedMountains.msav | Bin 16695 -> 16724 bytes core/src/mindustry/content/SectorPresets.java | 1 + core/src/mindustry/content/TechTree.java | 5 +++-- core/src/mindustry/maps/SectorDamage.java | 2 +- .../world/blocks/defense/MendProjector.java | 4 +++- .../blocks/defense/OverdriveProjector.java | 4 +++- 7 files changed, 11 insertions(+), 5 deletions(-) diff --git a/core/assets/maps/saltFlats.msav b/core/assets/maps/saltFlats.msav index 556b33700f444bc7061ef573bdd63510f7a6303b..d0f1a672c4c8729d1ab7c99f9e6ece6def99ad93 100644 GIT binary patch literal 19192 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 diff --git a/core/assets/maps/stainedMountains.msav b/core/assets/maps/stainedMountains.msav index af3abb26c204361563fdc2e0cff94bae71661512..082f96ad7b2a4c0ca211a491a2f79bed41fb0ada 100644 GIT binary patch literal 16724 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 literal 16695 zcmb=Jv$ghS(VUYT+q$#;J^{$VJ)A=p>&ddKAtA2ewtuAlN+Mwf5Bzr5s;zjvAnXlh=O^9kg^!i+XZ2jcO{k!;fI+yR}zS=w6 ze0$!S`#Wosvp-*xJ@KwQrt#Rrz~$TT-~IdaL52K!KEnDQDo!ZwJbY#U?|0|j^Z9m__gA^k{d@J@ zzjt?gzg|7ue9kZb|I@p#SGQZw-M9Z&=G0Sf%i{LE;R~N%9{=sz`@9~_ore3K>{xU? z+`9S(lXLygtb#kwwYG0L=DT)d-PdIzwYG1*^u=-h`8DIvW6PcY^yVpFcs={Q)-K~W zd)`T}GHlo*vHQ}I-qN){RvBBwyyj`2YaUbixi4&A;#Bjn-THAQ<$dq&{d-yNC*5b| z-ag^qXa5OrO8NGPsT}`Ze?xxHz4lw@68>jcy!gI*_wBx>;7O0`wWBK&| zNipBccKx?c;J5z0yXm#w|FA%t0(yniFtAFg;Uj2p3X!h&Z6Y8(N-CI-YV!rcX;r{9w`~E*)oR|Lo!@K$G@Bb}6 zzw%by`xU=0-n;kU-Ng?(eqZ)qeed88>5%u=f47(4y#A(i&JVvb(?#EZ``!Ilw*B+x zt@qwG9lKgSZ`1eX2meL$Wg2h#U?>{@#rp6&>)OlbH(6iv|0}b0qh9vkSGxbVo38uT znWs~->pHXfx6M8GE4G_g+gaHBd0B4nD0Y=ONIKx&Te){U)$Hzj5AKtm?q#7?*1jU@ zhneLYs}t`XE&OA@4`igwe5HO z_J4oG`ebis?uYlK|L#7yFa4)_a(({C_hSF=J-cr`LEzl3n4A+wOLyLw(k)$77_67) zSh)SRZN=Tfw0=Q`e<6lV7O&o|yZH7>UiuIA_qC6ntN!m1)_p?_h404mTc{Jj~U^bMx-K3qNP? zeH?q@y;W&Z?X2RxudOU!8*X}0srcB&P~?t%_CK@d?E=TOgUZi5H1LRhw!XW=b9(Bb zCDQy3sse6Y^6y^|RlByX$t(yF8b2!&AB%Kdt@Q zCpEwO{5)?(q1ccDo8@%fI32FR$uTJn?Vg_51DHEP3CvZ`d|j`*;8K*yj&o z`YX>bjQBeD;p~Im{|fWVbJu@&e`E4dx+Y$2zms|8x=@=pawRc_F8ANcT4}#{XK5Fc zdCmNM#mfgf-g|ue_vEF8;F`B3u?aV-3;%55etK_T@se03&B-jD>9Y@>oh9uP^Key1 zuh*7E(R#uBQSZICy2};p&o<=avov*-xZ;qSb=r)_`I@N#YJ=i6`eRuysnzxrtf zdr;i^*4GbCYESXjuK2L&`=-tHPv+D;JTY_IcIWHNzwd4PaQ$TEhw?lD=f{#3p4Lv}rn=}$wW zsH4*?jO+J)yJT6gLUyshn|*tphZLOMer03nh04qFC1uXH{At|1SA48`bPs*pzO?yZb~?lF=2-LX+p@zX`xyE@SUxGMj?k)nclf7yz*BBL>z98H z6fd{zdogQv{l=Z9OIyFKsOu2)`;d@z-Ieq1LgO28Asei0swD4B<7e*^s`SoaGhcK+ zDgJO?d&#El&)uFV@6BhaZPeTPo~Lqu^`7T77x?TotnU^pJ&^w79&@Gtd-h#>IbP1S zTblbmyFV(q@Y;R-p5U^_|MaSq%l|SlFYS9jp{ssF{hrJ3<>Z~-9q(&yR63VzxbdOL z?+STQj^ysUj~lx$XZ(7yn4_=p&{z6CmZ_57rKNqk5eCsB6 z*-Yt8^)5Z{ywi{9{j#vKDHDDnml7|N>~-YmJoeh2(0gyb7-nehJ2KEY4NO`+`4rIZ=SVlb-Xm>ziyB*Px^b43eVEIsH&%=GvSIT2sUNE!hymvNk`%f&f0xS>@dFeu5o?>&+fg`f8UrOZ#}`iysx-nzx}%h`QMJ`?Qb^T`LO>S zvx*IWYs~SN#!~Mc&wo87_$1ck$FY|YMJ7KUKR6KkIf|8JfhWh1|@ zFweI5##_g{4drhVistTQ_AF3)dhew8eK=zFz$e$J~9S-J1u z*pIjS$NhB4dt7>6u==gapP83s$}QETW2y@G{NHr>KUcc9>YMoE2eZ`|FM9p&_>H6Q z40*X>v8jFvGl*G-ERLA@4gl9Ih!%D$*6L^Lu;PY`dO#$$A7$8 z{p-yByNA*joab`1ET4V+Hd9>c%8Q3COh5H*nbc?yMYiT=ht`FN1<+$ERE0*KQn{{%E4$S%XhgJ)T z3U*cptQVU;wb>>vb?fPxyHatcUnMit;}5T1c1U{pyx-opLIOBbL)uqWmhig+ZF`mmOx^J`m}BY$fxA=LcL+3BvFaTU_&#O2@Y!6E++$_V_F&4ZgIm7!ymT`boALhEQHfW=Q-7>6Te$YurUkv3n)=H>z7mQ{ z{rHM|X}890->v5NbwaMCXEGJ!U)DM|g(+pq>eHuQ>Q7m{>y_rVH+z2gh24f3&Xy;RG#NZz<2^B5 z^HO^G)Ih0DF0;kqZg1x~<*qcX%F=whxF+GU)7oAWhn0;%r&qeBeqFVotI~hrnU=hj zJFkRrs*9X@QPsP5Ra3(bS5_kq`??ditqqN=9VbRDa%=Cge;7BlXypyVXK1 z*7q=d>fJq`%9Zw*UN}6zYv=u*+4iEsvo4Bz`keTFZKuRN?K?Jce{D-o-LAOYmHwFL z+ZW;Z?>&zyj|smGXsLgd$>R|7uH?@2V6BfyJuyKk!E6e}oihCwBg+5hJU{U%?S!_l zqMUEKQ={su6KY#z=kKhaH|uh|vyFh%ZP&L~X9g}7K2~{PZlc=X&7Ljam3A)bQ9cm- zd69)#UUh$o@asj!-`n<{{k!eVy)!X+(Z7oVYnO+AnRUuiRm1I@vUE>WH#w^R>CuHJ?-V3GnR|#&st^|mFk_T zwOezQpk%da-qXxa`hr`%1Mj9U;4ux&{am6tYjW_*Wg$~HX9fO@2n{;5`T5a!+X{94 zWs`qAn#ntr_fu)nRPG}pv9-OfVxhZM&Tw-}-6hiRY|_3PXG-$*KRRu($Gca?G|EjzVRO_|$%EH#J-_xxFzW`lh+d2g^ZWQUY}YnR zRb88N>BFiV*PvT}R1JggOLPV3O>pd3W3-BC^^pk|OnX0s@4s~H%GRgpqIS#Y7WIkv znHWkRo_=L@1WUfL*#9@v9YemFEetV`>UibH_;)txS-t}2#GAO6lL<0*;@wOe~aO?-l5=InNdmlgMCyp*_?{o7@M z$7(4#&QH&UYA$tHEKR;Q=~3n4Wb3GBJI?X%=*(K=YE$>9kJ*@)<@?8*JX3{L=kWbm zw;(3WKR0k{{qLDooBKa(Texb{@?#t;=69Uc%r=YtzqRZX^Q*kVOis&q#t#dRX-=KG zbKiQ8ZOmm4D9BlG=8??!ur2U-o^PBliCD5jC|;SG{BF*00o^FXhbJ`!aG`)X81Hk9_{) z_-1{;&-p1+rH+)GK4n~X{&I;=u9IbKP?qtNGs;=6OAQ5;(@%c2e3FwBxJBcpC ze7cQnPHOZ{x-{d;wuhV3E3+mR%nw_6^=fAC7Ujijbu@dwx27+8_tCyP&EA+cearH~6H3=@{`#e4N5@UH)!)9g z-{!ph5#9ajVP;~gYfIiwl6BQMcKYuO@yTwB{u(aUP}_gJi|Llq9FAHT` ztu=j>*Z1VN{Wo{SOk0yPHTX~1JMO7%&mV|ySaa~45$|6Ah9%mj^IqK+c{#PkN%yU} z{?_iUn9F507cU;Yesm>Ms%qfH`GrAdul{~EtdE;?yX%qef%F*DrEi@5oGjPdMuh3! zRGY6W({tr(#b%KEqHlTGC)EoVH!wFo30-nWbEER4y-Ocd$SGXm$&U;)V}2KY_=&&w z(IO`8lDUae}f{r{*=@54v0W zHdDuC@w-Xa_O2-{F1*WQxNnW{^m#6|DC&bU*sJR4H3)>ozM^eN&!A^CSPg z7kV^v;vc_{Hs>#QmHUYvaZ2y~Ie%)%E^z^U_hV1y)%u$*vf297jMrrC8r3Y(=Yp$N zSbbrh+I{PG*vi-|VZY`boDl4^Vde!7n+(tD`^zfW^8G$EOI%sAX4RZD(`^s#9On96 z$iJU?war;wtpmTkuCMl3NtI|l z^atO@-Dhm1|KvWMXX^f`z>L)+$(tDPK>B7a2&K#@Vxima9_YeoK_X^2{yR_yA ze#++CU6HDLK07%tD>fiLM#kCbjAq26ORuh2{zy*C&vV;ZCx$ytIcdFX zyM9QqPU6&S&!%_Iy3iVN+G`Gk)nlB zD}S!cx^+=u(n*O)u~N(}DSo$S_j-m+QT%Lo)9~)uPL1~u!wM2Qmt>cee?7HKch2_M ziyI0peXM7w9KU#Ch0@H%(5Y^2cfa!A+P|R0_FmVbIbFXuiT!va89J-OLO--a%>0Yw zipO>ndj-$#Tf#K^x?!ua;iNbj_nImm#q}QdCmk1YdKRFU)mvGc7H6_p>08qLi-Bji zv8Zy{3%j$5U+sIA9O|dN>1k%#6*0A~8^VvjU!lEd#ilH}_s$)yGiEJ4^z5pXex~&$$MXH$_r#X$ z^|L#?`m*7|o^Q9C_%gI_F(xkaw9|X zmdCv+{!U8!(^@t$PGRw{TOJ#HbY{>bv*Z8XN;I6`BCYF~bnkaxoT=!8kT;F?ow_%z zXa44j?@Uc)NRywh5faAu?&a+uh2ZR_j71A=_}n(6ep~Z6z-ID(&NYTkl}n!Pxh0l7 zWs{fk+C4fwj+JYk=6GHb)A%#*sAcZN`~I6P(lS0rmOVc8Eq-C?wiYEqv`Z zn?LH<>FysnHd~fXS)%?g;Qp)b<S)5~ZN~!cI zHmzru=L8wIxg}XhcbbRn;w_!+)~lX$sLgZ5N~L2m_kz!vyQ;XSWF;Q0l6iPHq}Mme zX{KTBW1l9EOSjTm(x(1ieu)+V-dMSxpT(ABcw)>!$)+teqW z(emU@>s|6zdY(d~>yiDvreYn6ffm}^rPQmgg--OD!z;R+S7(24dGf#YV%t}&3ZGW$ zcbxIF>C!ai&XsR1q^3&T2rH22j@iJO=Ih95LgJW&^up&i~foxO0qSVMYJ zmii;#-hr;*SJI~hZ z2FwbSm7mF4=O=tq^h~pa{vk$hj~$yn&N(i}e?Mr_p;`MsS^K_QCATGWO~;KBbC0-r zxi)P-pCimuKIOvM7bj9w-mgybTit9l$?RI4-)3w5^q2gXc^5xpohYEM%M$T$-Q4i3 znG1e8ZC_V%`_zQo3BQ!it(qxR)mG%P_-N&hDM8i!bB^=8|NM2{>Sb4iQV-w0t-s-2 z&!eRx=XdO9zql;5&p-Xf$%@NggSR)uRUUgTB66%@*8W>98Tq-31gFSHNJZ^f*=B3m z)|PG~+Y#YXWF^OI$C;*-)SKDrzjCKU{WDH`hYL4nsJ!So;PGgcSWUBjPMaa$JwJ_t zxH^_NlaG5IO%-|HwJFUyHTcSJrRi@Zrlfa0%3hZ;G561jO4TSANev8Kb?em1 z8|OA|SaVUo_?Fu0v;IdlSaa+AcFvl5Xp_-@Gq0%VEo+>7RzJIQv8?CH-AlVvb&VEk zM3yRxdn7O3)jvgXb>r&mA8KRrf}&q;moeg<81EYxl~p+-q{d3g{+|5CH3vHvY^a}> z8S1?9r?LaE($PC`8eqZ2mcZdhPeExZ4()iPv+>Opx91;^h(%f++<9o@ zi(}`RW5OD&dhec=@bumqnR;hc>eO{>+kaIYe!uJ2+A!m+-_jE% z-gs8>(vU&>)H=o+ipKG8S30S#V)wmjKlz7f>#3uQeoH%Wull~{f#ApEp4&3sW(Iw< z3)#b&)xM(jp{PjyT(`oNueZ;yWfo!#3H5(%s2`UlU3j;Dir)M;Q+6qr?2U|7&Hq*w zYj@zM+1=ZP9M;Qgegd{a*S$JJ$YH-Gb7+D)wRTUK@Vj_s(|h?9g3X4NIk0 zg`0+USBtFXI4^&^BzO9rxy2tg{@LU8f^oz41z~-wKhEqE;7|U+KXvQGLw4f(mR`Cr z*WjSrvt^%hG85miW-i^iz+bS$(NQ;tr#Sx6rF+*4FYt9m9%7hsa*tnvn&{1EH-ru6 z^~-s2O}P54&TDh>%-)|d7jlgvG;WOy+D<9Yr^rOv+py7723WFW%V_#U!^r&pGwaGmG`lW+vtBWKZ^@5(C?0K;2 zl1FDtP>${DnpfKwZ1UnrxN2$4G<9{?rL!wTTjp<@Fj>p)(tpQ^!X4YH(~c|r)}B@| zW%~a0Rq>%xHGDOq>S{{b=WU;7P7}Oxr`h>huE6~l=eqMP_Sy>H3Ji7Kv+Qr6aKNJ7 za^ASo?eZ$sInsN7%M4L|0XYOZ~s`G@NOXpnsE;Hq;ZkE#9*Ty?TLcVQ#xPFDo&z`vg zyO#MK<5)U%!cI%&kW0r*wtVN#>ix5DMTb<_;#!6s%wgZQdrv#bT*GMO^(gm2qiw8p z*8GcpW}V{6rki80eDCCa84zPypVTNMckG6r=E9c|-M*VQ|5~%8rDpx7lQNd?A60(* zd|~E%_l;*Y>aJg4p77a8?rF4Bf7HJ@4cT>61-ZpDeLsB^+&XFEGP5NSoi7PJZZ!5 z_idY=-ClFpze#@O%Bfp9w>>2BY|Z`)lxt`%V)aP~;)*$u{Be>}FH{1Eo_=82d~YP|d2sb_K9O*h*#{oLxMN-3()lGITaeu8d!p^ZA5UY5$XAJFyGt)4rKc;S3dcFZ}+p@yB}e zDW=hLH>d9I7qMK;u#JD|iu3OR{JAH;u-1I{B$cIevtjhZ^NbgnH1fX*Xsllo{c62~ zW3=HES*h;kpe&aA$U zU%oPO?^!3bXUUgkA(MWbFRSBup?>Oqi`S+#0h+B**WN`c6$>`J4{^M-Y9s3=H_zC= zO6xwZ{k4CKR?s4|jO~G`jG3RD|~%xR(w|dkF5QHlVwLzg@aD*D~nLM8A2Q(UtMmmg~3W-+gSmYyOwt z{TpfpXH1xLQ@dy7N8dL;^Rw=z@bIpG;eS)rM(&yx_3%5W+PoT@GATzOIS z>bJj9PitkxZ5rOc^fo-eoICM4hrZ(b_CKp$**;B}_{Xv3Q$*^kYQ>AY=Kc5{bz}DD zO_O3SWPKBKwO7WIqfK7YLR?>7tYt3P*M zU7vF0#KTh1J}W3m)J{#RQ?Jmko>%#dcztlJioIwx&0o?;hQy<*-oo)ahc zU-nwO?4PRkKYb6ONTVeVT3VaGhdM61D*d}EkuT>(huy{*EDTB=qNO5jmo9AIwPMd) zJI?pB9_=mt7XRmd`7MdN2lvhG4a~Xxc1>SN+-toI?fw0(kJjr{hjaukD?OmQ%Fvdl zLU8`$+hIMGJ6Cj@h^?M7b$b8Q=~JrY`zI~;>s#a6V^TUII?pXE#y4=E8dmFAuQ`G?}N#O2?-wT{fX#Bn~4>%8vK-O`duh5TJPY}Q3v zs#891n7jP*uOffPy*o>;$VWKc$$l=m)#zWw<{MfQrtanaTD|q%Wi8K+pN}~bPFp_k zRo|g|{Q9!P_nYcV_M6{%pZ;$9o4VV7{>a~XpZooH>u=qnpG@}q-`Cj}?$`W2yJ)}V zck6>s|84zUd;f3UyE@}Pdk&P`OWw2PcdpUg{hvOo+21ePf8aZ7-Tw=J#qQ)!`{`m8 zZ}ivq`+oO#=FjUszxy6sxBu|_;y>0;>*gEW|M4%}XZg{R%V+er)!+VWmr_}=ap!&Q zm~{vCOXiugysdv#XJ52mwXUxuo$*gT(}UM*4d&WxXMcLVV87}2+fRP8_XI!tWx9@? zQSZ|H;{BoDtq-0L^n1_xbi+N91uOG*uIQZSZ591Oh|9GzNmbqg6xbAe! zKe@-rJHQaxq0&2lDj^(+D|$D$m6HwwCi(ryZ>6gW8R0_TYuw<_D6pI zZ9DyZ;r^>OwOcH+;@dvz8}F6Blh1s>{`h{S*RB(PwlA+(qwFvo@WmiVVDc`rv1q$9I$WXfw>4E}*~k3-5NB z5AzbGXMHI#`y1PPJ19MRhxiM&M{6p078@_GnIvP>SQE7G|H}ReWm7jUm6zVv^YY*- zedn^~8|k(20ke(oeOf68h zk>SDZ)@S#tKlCZuZQlG#@`wMrU4Pi)>l``BcU2GG#ieh$wAWynq{nIo3ofBvw&d$K zTRFCMthEiQ?>f8a;n~(B3}+TUF#TzFIBEZ}^BespUk!{AF4%i=zW8O6>K#_m{2Oj` z>C{RjE<82uX38buJ3cA9O)ssHTyQabk3qp-o^I}lJFIo{lkZrSpB7c%zxpArdtN8I z9+Th66q9A;lHW8qAFG}z*F7*h#e05;Veob(`_&4I?WXD*%;&6*d^xM@y5E;)ZRV^` zVx9i^vCFZ3T-6i(ZC+2oXGZ?WY35fIz2|-sODlQSU=!Vysk5O~IjuFb;}+v(fi+yG zCH5X{6+9zzTIYz5;eXEROIFFZPWbLwa`Upvowm^L)piH$MIVT}eK77(T+D7TU$QQY z@71!%xJMg5=AXT;e0c@yFC+d(2YZ$!EEJz}Wm`Z>%ll0}!aH;im=*Mv+Mj>Mu5;e% z^PU6mTl`qhR4=QUe`Cd*q*({vo@d=M@fh1~^#t3=`&JvCU(RTe#L}0QF=fpUJ0)?Y zcgpfNj+9R8-?3k9Kl8NfnR@+yi>BQT;M53Op`mxtYjaJ?lY1$%b&bpBrmCj~I|#m0 z`rKy}lU8>+C*60!#RaEIHsA5jTxNK1m-TV0xYVf7XN&nnrp`&*E4X+0%ehcUn`9%1O-E51#vtRXo{}TDowfkA+i>0~G99Ozv zVR|rEtMP~AM^}@7b`rt*iE>6c*B6Bg=ls6$J(uC@Lv3XX(QB)DrhBp)ttyIt7Sh+! zT@l`p)~vL?>;iw}jiCG6kCZe#_5G%`uc?F~mn}E@>i7LW7nVIZ-*spI^O@IqlFx2h z&t>>7+uCFQ5xBJd)xyAE-2OM*{cvJ1P*6|${hvV3#UO#8LKOw1F`(I5(*Sk+5 zGj@9z&b+Ooq`3LuyK+4VvxcJq5}8hXIURF3H=IlrC_9uiKhShhr$_7ExbEFc4nFd} z;giSyuAr@c9!HQ!R!SQPUeIaceG9-sF4ZDYt#+ zD&CK(n?UXPIR(2_eP%OrnRYSOM>{y*%zSs5ZNEN)?_RZtYr;D7wH}MiTzBHV z*khj!f4t7bx8AMkaCe@(^SsVyb8EKmY_qGIp9ViEddjf<*kKPNx4y*{5<=J9K0KQd zFL`X0!{PdQAA{C3uXV6jVG)htNq+5c_zX{kM|k4j>}J)gF3Z&;=DA*5ZSuL@`L*P= z=|-<>=6-c4ST;ldNcOyj%PDoscE}&m3wAhM&Y7{R^T%a{%ZaZJb585!IjgAl$?Rki z|HqVwV`b+zt=)RSDRSnsHO11?m1HL6c3gd6cAm{j^VztVDQ%{qI(_m-5PY=t zK#=bgkF7^pX0AG6apzIl+6_6E-ek9|SG%qF=t)F;@SApVhh>E+)zi-1`t)$xgR=&4 z!WnY}{?AOCD;hm9;*nO)#<`D~xL=x2J1X&1$KzGole7P;+ zkvJ>zndKUFL$}7?FGaSSt_gpV9@H-uv7+YCm$bz;phqYjtj zU!l(-Pk&9?Fnwk4+*Iq+wfChC&g3r0%K6aBPa@w$O{^ zAH$7Amra?InxlGF(Qc{SgL50toL-aP6rFlU%j4UOWtWAnrAuxXd9ZNZ{3JVV#`!^R zw|xJdeYD%=@iOL^Oz9+FCe`23$~9hlG(N8O;r@K5uJfd7tn{|stY*F3h3PZDsl490 zWU+V8cQd`M&J}YL-pq7hEAFYBxREQN+hLNDR^J28^}IJOt(^AY>}LOcM{<{in6Kbx z-Ef8d=+(5v4AZoHnsvLjFiCyRSw2Z@0&CEcLP;G{#o+s#8+Pn?=_a3WSJ2YCM{T8d z=Uc8EamjCznt79#yy9%XWyn~_rSLda__EVa-6H8*ca|H4wU~tM@cYa1$0Wc<@5iF_ zjQi;gNj)uZS02b+{c-P-cVRp7S2fO=rGCNV;IvmVmn=@_dd&E4V5^*|Fy-sZiIy3i znb&SiKQX8Ii{~X_HExN_WbFm|hGsXHT@;U8#`Np`jI8Mqz1ae3&vmmEbCx<7eTBus@=kgenI3cNyu+dy?9slfD)_clSZvBW zz3Ejf^QmQepR3>e%Urhoz}GP4a?h{p4vD3&*;bMf_xPcE+cUQ5u@Bzm7_VFNa{2KG zb3UCnGj-9~^hRTi+4l*FnCa#d6u4smh`kyb9(0n|&_#_N`er46~sO_LZL9{Y;wl(zi1AwE5VeUpN-{X^yR(-VR(Cr-MhwV^KkV374Sb}>8e z`fCRdUGv;f5W8&OChLT0x0O~O*fd>$!QtCCk)7+-^aRgxE(?)(`?8^|J9F!SWeO`B z)Q`;O&T$A^CA`64!+|ZuJ(kQ5$IsaCca5!UKaS^yX3KHvZg2WmxW%qKj%@I$^An;m7;emrTbrOl@NYf&#a>w!5q19 zvF6$(kqp~P)SKQUWH2s0s?ytUwEtuTtKR&ySdleH8@|s@n0;!(|L8w4L2rMw7hV#& zp3C+{ea5-!nDWU_r)bPi*?wB*`h@Rd+oK@h8{)?e3?xGuPDox6FC@@6?5J!Hxf} zN8|-7M;M<8o_6~a=M6XO$Zr`94@w!{1K7J8s$WTzMx$aM@wgi1JxA_J&QpH4Els zx}Rjbz4zvaFA`F@Tg#;uuUb>@o7?|o{ZU4vI{kwGkE)|K-Mo_&*Vv|Z#^*3; zYvJd^1>4s=$xT_ABT_7v^KJ^$%qgJfco2ii#7(7 zP4V0h@ilc;~_L#caHz z+b8+1u=3$!og=rs&u#dVx2fh`?}N$xou5@pH@sExUZWoL-|qEf9mjJGZ%cAnN~Yhq zzK;3n<9Doot&N?+KZ!eu*S^htH(%s;htiFOQ=|g);-*zDW424#GcD#wSi@x2sDEc0 z-umr5`qzkWIiH!`$(1eKcHeG2S(`87op0zSogp)qHFDRMrHM0_FW@mW^S|L&>{zW5 zuPiZ>VKJA;ckvznr`J~Ja4vh7npQd8%tP-+k&BT3)y8c*IId0FUVrGs#`k+!pPgsb zX1qN&hW%Ea((NhdSR^X@?jOocoK!8@9?4)GYH+q@>fW{a89Bkv?Xnwk+eLn#YCc=7 z$?vP~p0Yc%W9|kUag$}+a(PV5Cv25v_*iPBFZM<)=jFNTkN;O}&fM^a?b}Nw{ilql zmE|u8>^qj|t*3JSm%-6JOZ*PxZOl=r*NZk*14S7qMb2gsl-0*d) z)$0if-FwuTb27t?Cp;`U@SW-N+{8!`_YL04H*_a77Z>inrLep&r86?=v_!byf}T%0 zJ9-!R=5BcFu%)=7`Llt^xl^38I~n3%b?2{U|1ssh(Z1UW$r+Xlf*<^xbELy{!`qg~ z4Y`WyiKi{J+PPLURCz5lX^Q38km@s~xzp%>F58Wt4A#OQVv~Lfd~17^xI)`Vd`?2m z%-3d)ey>h;3PpQwtx=sTFiCfVlDcK0vE+rUhPC}mo6Js@nOt=4;Y{Vz&UU?YY;(f$ zWm=57mVXtNpL1j&Q}kWF5HRs^WJjc*f*&YF-gvUOlMrIJ^pJe$Hz?Xnf6N}<&5ezT`M;ACGBaQ;k~B) zz@{msc{kPOeET%Lls`&e`sju|EoW;}`mQ|t$Fni0r&U5*=lJ)7*A5(B+np4=#ZT#% z^ke1-Ki$J`rx}0LI34BioO#0!horSOH+C)C68tPub;9PSQCV`s>r>>viB0GA!-u=}u4(kji_J-x_A(;J zr7nGn-wswS8&_RB#u&DZU z@3e3F8h`ELli!k|6DCJ&tBt#M|I{D7hZW0M%7T3Q-p@(9V{~1+c`bK}#D9~^T1~l* z!uM5gxE_mTv$pj8Txwl3iMJq7Ed6S|V4UrQi84nclm46WC%!v;t)6B5iHgc^@|$vl zx5=B&*uUAQdhY#`CnHWC_dd7jK*htrCavp&m6vCUe7zs}EqrxyL3fVvCf_)}f7{$Y zXeYd$n|e&-f4O1C_Bj()H{_h&^7hqD;eynC^OI+C={;+Xa@ZKn>hRr`BaZLhk|4gf z2N@5CbhnGU6?7-uHj&OZ*K3&)QqIwybIRzU z&SA!OY4roDIjx%{r5~9@$uY>xtqE@&L!_-HVbizED?Tq`s1Y!HnZo$Fyq}Q1+RtvvlqV6k@PKFx>v-7TXyCNy@uLZDPlPjUD!TVUC=w|+x+(bG-I2k zf_Ex6EKoIOix>Ozar@Gms0J~=PpO-^8+1Q-7|lGVdr|J&hsBwj0!_Y%Zff-THqV^- zk6S~m#KC_v<{p^3ppNrR&b%C#NxxDz_-Zm3O$2hVYZD%{aJD$;) zr@P>`nxLg{vXy7*efHZNYMqyBE=(^<^JscjSkmy@$xQmhvQinAcg?xK^ggejGhLwO z<`K=t*)>wmYE?yjdqf`GYt)U)QJp8HF#C4yCc7?c(H9*oS43~H{N$OKFpar-;(1-q z2iytLlTs(IOz8eUxwCl3Lc!Fksg=je&Ni{em${ub3p~vv^X;$6_otd0JnvcfcuII5 zxWnf4{%Bj*$~LwPW#aIH?|S?SR-PZ^xge8(a~K5dfFe;R(!?tA0Y^qqIp51g|)Z7!fv*j}{n@Yjj=-S3pI_+IqDg)gl` zKmOsTVjq6>ivELQz0Y@^-}o+aU3KLWzHNVlCmdE^Fgx?2Udl!TpAQ$(t$3Iv9v2^5 z(U;J1KAOclr*(F5s!u^F7r(n-y)9JVU3egKWVB+-WOgV;l=mFBlgPA z^$vE`Y4crXJ>4~PL7w7*=rr5kqBmy#G&`}=_;x@v*DIgq+W(6VnC(9FC3W$CkrRqq zhi7o6sNLr{`04rHxp^7!rxRIzI;{9HOLN;s%?;;upEf+=ydzLJUwlQ%AaA2vbaS)g&CCt?9Vo;TXL z)bM4@nR>QyQp^P7ze3`oiQZoyNJX64AaUU*(~HfGiA7V+#k9}=vpL=}K68G@ru+*h z%GItl*sZCNOG!L;!9Biw_Q<$8s~@W2Pd7;KJ%P)+TxtBj1SeF+#BX5 z1z&f2(y@O=MfDMj$Y=J)|7v_qDc=3#B1=ZG^rza+m+fDlOr8~V{*S;*;cL6k{Ho+V z#H#lx_><-K?nb!)rREoPJX;)vBI?9~Z!g;?b;3=`l0~rYeq)LJ@vHoI-j^q^A9$jZ z+j=^*xoT5`=1pSL>s^I7a;dcb10p}*3K z@n!#i^}9>$e{jFJ&n)BoZ~brY { - node(multiplicativeReconstructor, Seq.with(new SectorComplete(overgrowth)), () -> { + node(multiplicativeReconstructor, () -> { node(exponentialReconstructor, () -> { node(tetrativeReconstructor, () -> { @@ -508,6 +508,7 @@ public class TechTree implements ContentList{ node(saltFlats, Seq.with( new SectorComplete(windsweptIslands), + new Research(commandCenter), new Research(groundFactory), new Research(airFactory), new Research(door), @@ -646,7 +647,7 @@ public class TechTree implements ContentList{ static TechNode node(UnlockableContent content, ItemStack[] requirements, Seq objectives, Runnable children){ TechNode node = new TechNode(context, content, requirements); if(objectives != null){ - node.objectives = objectives; + node.objectives.addAll(objectives); } TechNode prev = context; diff --git a/core/src/mindustry/maps/SectorDamage.java b/core/src/mindustry/maps/SectorDamage.java index 22f19c3e4d..78802f46bb 100644 --- a/core/src/mindustry/maps/SectorDamage.java +++ b/core/src/mindustry/maps/SectorDamage.java @@ -21,7 +21,7 @@ import mindustry.world.blocks.storage.*; import static mindustry.Vars.*; public class SectorDamage{ - public static final int maxRetWave = 30, maxWavesSimulated = 50; + public static final int maxRetWave = 40, maxWavesSimulated = 50; //direct damage is for testing only private static final boolean direct = false, rubble = true; diff --git a/core/src/mindustry/world/blocks/defense/MendProjector.java b/core/src/mindustry/world/blocks/defense/MendProjector.java index cf71928f26..1c171edfdc 100644 --- a/core/src/mindustry/world/blocks/defense/MendProjector.java +++ b/core/src/mindustry/world/blocks/defense/MendProjector.java @@ -60,6 +60,7 @@ public class MendProjector extends Block{ float heat; float charge = Mathf.random(reload); float phaseHeat; + float smoothEfficiency; @Override public float range(){ @@ -68,6 +69,7 @@ public class MendProjector extends Block{ @Override public void updateTile(){ + smoothEfficiency = Mathf.lerpDelta(smoothEfficiency, efficiency(), 0.08f); heat = Mathf.lerpDelta(heat, consValid() || cheating() ? 1f : 0f, 0.08f); charge += heat * delta(); @@ -115,7 +117,7 @@ public class MendProjector extends Block{ @Override public void drawLight(){ - Drawf.light(team, x, y, 50f * efficiency(), baseColor, 0.7f * efficiency()); + Drawf.light(team, x, y, 50f * smoothEfficiency, baseColor, 0.7f * smoothEfficiency); } @Override diff --git a/core/src/mindustry/world/blocks/defense/OverdriveProjector.java b/core/src/mindustry/world/blocks/defense/OverdriveProjector.java index 7cadaede81..7e645e5a2e 100644 --- a/core/src/mindustry/world/blocks/defense/OverdriveProjector.java +++ b/core/src/mindustry/world/blocks/defense/OverdriveProjector.java @@ -65,6 +65,7 @@ public class OverdriveProjector extends Block{ float heat; float charge = Mathf.random(reload); float phaseHeat; + float smoothEfficiency; @Override public float range(){ @@ -73,11 +74,12 @@ public class OverdriveProjector extends Block{ @Override public void drawLight(){ - Drawf.light(team, x, y, 50f * efficiency(), baseColor, 0.7f * efficiency()); + Drawf.light(team, x, y, 50f * smoothEfficiency, baseColor, 0.7f * smoothEfficiency); } @Override public void updateTile(){ + smoothEfficiency = Mathf.lerpDelta(smoothEfficiency, efficiency(), 0.08f); heat = Mathf.lerpDelta(heat, consValid() ? 1f : 0f, 0.08f); charge += heat * Time.delta; From 6fd36d97f09de6f22950e930e5000513f6f7af62 Mon Sep 17 00:00:00 2001 From: Anuken Date: Tue, 24 Nov 2020 12:53:55 -0500 Subject: [PATCH 11/28] Balancing --- core/src/mindustry/ai/types/BuilderAI.java | 5 ++++- core/src/mindustry/content/Blocks.java | 13 +++++++------ core/src/mindustry/core/Logic.java | 2 +- 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/core/src/mindustry/ai/types/BuilderAI.java b/core/src/mindustry/ai/types/BuilderAI.java index a82a220070..f900a60955 100644 --- a/core/src/mindustry/ai/types/BuilderAI.java +++ b/core/src/mindustry/ai/types/BuilderAI.java @@ -1,5 +1,6 @@ package mindustry.ai.types; +import arc.math.*; import arc.struct.*; import arc.util.*; import mindustry.entities.*; @@ -83,8 +84,10 @@ public class BuilderAI extends AIController{ }); } + float rebuildTime = (unit.team.rules().ai ? Mathf.lerp(15f, 2f, unit.team.rules().aiTier) : 2f) * 60f; + //find new request - if(!unit.team.data().blocks.isEmpty() && following == null && timer.get(timerTarget3, 60 * 2f)){ + if(!unit.team.data().blocks.isEmpty() && following == null && timer.get(timerTarget3, rebuildTime)){ Queue blocks = unit.team.data().blocks; BlockPlan block = blocks.first(); diff --git a/core/src/mindustry/content/Blocks.java b/core/src/mindustry/content/Blocks.java index 98c835f026..eabaae3104 100644 --- a/core/src/mindustry/content/Blocks.java +++ b/core/src/mindustry/content/Blocks.java @@ -1377,7 +1377,7 @@ public class Blocks implements ContentList{ itemCapacity = 9000; size = 4; - unitCapModifier = 14; + unitCapModifier = 16; researchCostMultiplier = 0.04f; }}; @@ -1389,7 +1389,7 @@ public class Blocks implements ContentList{ itemCapacity = 13000; size = 5; - unitCapModifier = 20; + unitCapModifier = 24; researchCostMultiplier = 0.05f; }}; @@ -1517,12 +1517,12 @@ public class Blocks implements ContentList{ lancer = new ChargeTurret("lancer"){{ requirements(Category.turret, with(Items.copper, 25, Items.lead, 50, Items.silicon, 45)); - range = 155f; - chargeTime = 50f; + range = 165f; + chargeTime = 40f; chargeMaxDelay = 30f; chargeEffects = 7; recoilAmount = 2f; - reloadTime = 90f; + reloadTime = 80f; cooldown = 0.03f; powerUse = 6f; shootShake = 2f; @@ -1544,6 +1544,7 @@ public class Blocks implements ContentList{ lifetime = 16f; drawSize = 400f; collidesAir = false; + length = 173f; }}; }}; @@ -1557,7 +1558,7 @@ public class Blocks implements ContentList{ reloadTime = 35f; shootCone = 40f; rotateSpeed = 8f; - powerUse = 3f; + powerUse = 3.3f; targetAir = false; range = 90f; shootEffect = Fx.lightningShoot; diff --git a/core/src/mindustry/core/Logic.java b/core/src/mindustry/core/Logic.java index 5f6bd2c1a9..02222bd327 100644 --- a/core/src/mindustry/core/Logic.java +++ b/core/src/mindustry/core/Logic.java @@ -107,7 +107,7 @@ public class Logic implements ApplicationListener{ if(!(state.getSector().preset != null && !state.getSector().preset.useAI)){ state.rules.waveTeam.rules().ai = true; } - state.rules.waveTeam.rules().aiTier = state.getSector().threat; + state.rules.waveTeam.rules().aiTier = state.getSector().threat * 0.8f; state.rules.waveTeam.rules().infiniteResources = true; } From bcaf5e4c3d2f3599b4f499788f44edd46cddb702 Mon Sep 17 00:00:00 2001 From: Anuken Date: Tue, 24 Nov 2020 16:33:36 -0500 Subject: [PATCH 12/28] Campaign balance / Smarter power node placement --- core/assets/bundles/bundle.properties | 5 +++ core/assets/maps/saltFlats.msav | Bin 19192 -> 19191 bytes core/src/mindustry/ai/BaseAI.java | 5 +++ core/src/mindustry/content/TechTree.java | 2 +- core/src/mindustry/game/Waves.java | 6 +-- core/src/mindustry/input/InputHandler.java | 43 ++++++++++++++------- core/src/mindustry/input/Placement.java | 27 +------------ core/src/mindustry/type/Planet.java | 2 +- 8 files changed, 44 insertions(+), 46 deletions(-) diff --git a/core/assets/bundles/bundle.properties b/core/assets/bundles/bundle.properties index 0ba749cc57..8149f4ff3c 100644 --- a/core/assets/bundles/bundle.properties +++ b/core/assets/bundles/bundle.properties @@ -593,6 +593,11 @@ sector.tarFields.description = The outskirts of an oil production zone, between sector.desolateRift.description = An extremely dangerous zone. Plentiful resources, but little space. High risk of destruction. Leave as soon as possible. Do not be fooled by the long spacing between enemy attacks. sector.nuclearComplex.description = A former facility for the production and processing of thorium, reduced to ruins.\n[lightgray]Research the thorium and its many uses.\n\nThe enemy is present here in great numbers, constantly scouting for attackers. sector.fungalPass.description = A transition area between high mountains and lower, spore-ridden lands. A small enemy reconnaissance base is located here.\nDestroy it.\nUse Dagger and Crawler units. Take out the two cores. +sector.biomassFacility.description = The origin of spores. This is the facility in which they were researched and initially produced.\nResearch the technology contained within. Cultivate spores for the production of fuel and plastics.\n\n[lightgray]Upon this facility's demise, the spores were released. Nothing in the local ecosystem could compete with such an invasive organism. +sector.windsweptIslands.description = Further past the shoreline is this remote chain of islands. Records show they once had [accent]Plastanium[]-producing structures.\n\nFend off the enemy's naval units. Establish a base on the islands. Research these factories. +sector.extractionOutpost.description = A remote outpost, constructed by the enemy for the purpose of launching resources to other sectors.\n\nCross-sector transport technology is essential for further conquest. Destroy the base. Research their Launch Pads. +sector.impact0078.description = Here lie remnants of the interstellar transport vessel that first entered this system.\n\nSalvage as much as possible from the wreckage. Research any intact technology. +sector.planetaryTerminal.description = The final target.\n\nThis coastal base contains a structure capable of launching Cores to local planets. It is extremely well guarded.\n\nProduce naval units. Eliminate the enemy as quickly as possible. Research the launch structure. settings.language = Language settings.data = Game Data diff --git a/core/assets/maps/saltFlats.msav b/core/assets/maps/saltFlats.msav index d0f1a672c4c8729d1ab7c99f9e6ece6def99ad93..f01aa3a0f3c991f45644042effb3d67c40ede6f6 100644 GIT binary patch literal 19191 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 literal 19192 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 { + node(waterExtractor, Seq.with(new SectorComplete(saltFlats)), () -> { node(oilExtractor, () -> { }); diff --git a/core/src/mindustry/game/Waves.java b/core/src/mindustry/game/Waves.java index 5958d5f22f..c8667e7e76 100644 --- a/core/src/mindustry/game/Waves.java +++ b/core/src/mindustry/game/Waves.java @@ -340,10 +340,10 @@ public class Waves{ step += (int)(rand.random(15, 30) * Mathf.lerp(1f, 0.5f, difficulty)); } - int bossWave = (int)(rand.random(50, 70) * Mathf.lerp(1f, 0.5f, difficulty)); + int bossWave = (int)(rand.random(50, 70) * Mathf.lerp(1f, 0.75f, difficulty)); int bossSpacing = (int)(rand.random(25, 40) * Mathf.lerp(1f, 0.6f, difficulty)); - int bossTier = difficulty < 0.5 ? 3 : 4; + int bossTier = difficulty < 0.6 ? 3 : 4; //main boss progression out.add(new SpawnGroup(Structs.random(species)[bossTier]){{ @@ -411,7 +411,7 @@ public class Waves{ } //shift back waves on higher difficulty for a harder start - int shift = Math.max((int)(difficulty * 15 - 5), 0); + int shift = Math.max((int)(difficulty * 14 - 5), 0); for(SpawnGroup group : out){ group.begin -= shift; diff --git a/core/src/mindustry/input/InputHandler.java b/core/src/mindustry/input/InputHandler.java index c2ab8423c9..2df91588b6 100644 --- a/core/src/mindustry/input/InputHandler.java +++ b/core/src/mindustry/input/InputHandler.java @@ -47,6 +47,7 @@ public abstract class InputHandler implements InputProcessor, GestureListener{ /** Maximum line length. */ final static int maxLength = 100; final static Rect r1 = new Rect(), r2 = new Rect(); + final static Seq tmpPoints = new Seq<>(), tmpPoints2 = new Seq<>(); public final OverlayFragment frag = new OverlayFragment(); @@ -1164,27 +1165,39 @@ public abstract class InputHandler implements InputProcessor, GestureListener{ points = Placement.normalizeLine(startX, startY, endX, endY); } - if(block instanceof PowerNode){ - Seq skip = new Seq<>(); + if(block instanceof PowerNode node){ + var base = tmpPoints2; + var result = tmpPoints.clear(); - for(int i = 1; i < points.size; i++){ - int overlaps = 0; - Point2 point = points.get(i); + base.selectFrom(points, p -> p == points.first() || p == points.peek() || Build.validPlace(block, player.team(), p.x, p.y, rotation, false)); + boolean addedLast = false; - //check with how many powernodes the *next* tile will overlap - for(int j = 0; j < i; j++){ - if(!skip.contains(points.get(j)) && ((PowerNode)block).overlaps(world.tile(point.x, point.y), world.tile(points.get(j).x, points.get(j).y))){ - overlaps++; + outer: + for(int i = 0; i < base.size;){ + var point = base.get(i); + result.add(point); + if(i == base.size - 1) addedLast = true; + + //find the furthest node that overlaps this one + for(int j = base.size - 1; j > i; j--){ + var other = base.get(j); + boolean over = node.overlaps(world.tile(point.x, point.y), world.tile(other.x, other.y)); + + if(over){ + //add node to list and start searching for node that overlaps the next one + i = j; + continue outer; } } - //if it's more than one, it can bridge the gap - if(overlaps > 1){ - skip.add(points.get(i-1)); - } + //if it got here, that means nothing was found. try to proceed to the next node anyway + i ++; } - //remove skipped points - points.removeAll(skip); + + if(!addedLast) result.add(base.peek()); + + points.clear(); + points.addAll(result); } float angle = Angles.angle(startX, startY, endX, endY); diff --git a/core/src/mindustry/input/Placement.java b/core/src/mindustry/input/Placement.java index 1d713f7f75..59af8ac517 100644 --- a/core/src/mindustry/input/Placement.java +++ b/core/src/mindustry/input/Placement.java @@ -241,35 +241,10 @@ public class Placement{ } public static class NormalizeDrawResult{ - float x, y, x2, y2; + public float x, y, x2, y2; } public static class NormalizeResult{ public int x, y, x2, y2, rotation; - - boolean isX(){ - return Math.abs(x2 - x) > Math.abs(y2 - y); - } - - /** - * Returns length of greater edge of the selection. - */ - int getLength(){ - return Math.max(x2 - x, y2 - y); - } - - /** - * Returns the X position of a specific index along this area as a line. - */ - int getScaledX(int i){ - return x + (x2 - x > y2 - y ? i : 0); - } - - /** - * Returns the Y position of a specific index along this area as a line. - */ - int getScaledY(int i){ - return y + (x2 - x > y2 - y ? 0 : i); - } } } diff --git a/core/src/mindustry/type/Planet.java b/core/src/mindustry/type/Planet.java index b4917e519e..f12cdb5c53 100644 --- a/core/src/mindustry/type/Planet.java +++ b/core/src/mindustry/type/Planet.java @@ -187,7 +187,7 @@ public class Planet extends UnlockableContent{ } if(sector.hasEnemyBase()){ - sum += 1f; + sum += 0.88f; } sector.threat = sector.preset == null ? Math.min(sum / 5f, 1.2f) : Mathf.clamp(sector.preset.difficulty / 10f); From 17e66f10088ed58bb992834c8a4529e1c1ecf189 Mon Sep 17 00:00:00 2001 From: Anuken Date: Tue, 24 Nov 2020 17:17:55 -0500 Subject: [PATCH 13/28] Final campaign tweaks --- core/assets/maps/saltFlats.msav | Bin 19191 -> 19304 bytes core/src/mindustry/core/Control.java | 2 ++ .../src/mindustry/entities/comp/UnitComp.java | 4 ++-- core/src/mindustry/game/Waves.java | 2 +- core/src/mindustry/maps/SectorDamage.java | 2 +- gradle.properties | 2 +- 6 files changed, 7 insertions(+), 5 deletions(-) diff --git a/core/assets/maps/saltFlats.msav b/core/assets/maps/saltFlats.msav index f01aa3a0f3c991f45644042effb3d67c40ede6f6..f4979da57b10f56d2957b952d6065690bb48cede 100644 GIT binary patch literal 19304 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 literal 19191 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 diff --git a/core/src/mindustry/core/Control.java b/core/src/mindustry/core/Control.java index 952ab5d82e..bc5acc066f 100644 --- a/core/src/mindustry/core/Control.java +++ b/core/src/mindustry/core/Control.java @@ -332,6 +332,8 @@ public class Control implements ApplicationListener, Loadable{ //reset wave so things are more fair state.wave = 1; + //set up default wave time + state.wavetime = state.rules.waveSpacing * 2f; //reset win wave?? state.rules.winWave = state.rules.attackMode ? -1 : sector.preset != null ? sector.preset.captureWave : 40; diff --git a/core/src/mindustry/entities/comp/UnitComp.java b/core/src/mindustry/entities/comp/UnitComp.java index aa02f25022..b90afcae56 100644 --- a/core/src/mindustry/entities/comp/UnitComp.java +++ b/core/src/mindustry/entities/comp/UnitComp.java @@ -397,8 +397,8 @@ abstract class UnitComp implements Healthc, Physicsc, Hitboxc, Statusc, Teamc, I /** Actually destroys the unit, removing it and creating explosions. **/ public void destroy(){ - float explosiveness = 2f + item().explosiveness * stack().amount / 2f; - float flammability = item().flammability * stack().amount / 2f; + float explosiveness = 2f + item().explosiveness * stack().amount / 2.4f; + float flammability = item().flammability * stack().amount / 2.4f; Damage.dynamicExplosion(x, y, flammability, explosiveness, 0f, bounds() / 2f, Pal.darkFlame, state.rules.damageExplosions); float shake = hitSize / 3f; diff --git a/core/src/mindustry/game/Waves.java b/core/src/mindustry/game/Waves.java index c8667e7e76..ddcff2cbbf 100644 --- a/core/src/mindustry/game/Waves.java +++ b/core/src/mindustry/game/Waves.java @@ -340,7 +340,7 @@ public class Waves{ step += (int)(rand.random(15, 30) * Mathf.lerp(1f, 0.5f, difficulty)); } - int bossWave = (int)(rand.random(50, 70) * Mathf.lerp(1f, 0.75f, difficulty)); + int bossWave = (int)(rand.random(50, 70) * Mathf.lerp(1f, 0.7f, difficulty)); int bossSpacing = (int)(rand.random(25, 40) * Mathf.lerp(1f, 0.6f, difficulty)); int bossTier = difficulty < 0.6 ? 3 : 4; diff --git a/core/src/mindustry/maps/SectorDamage.java b/core/src/mindustry/maps/SectorDamage.java index 78802f46bb..187778e470 100644 --- a/core/src/mindustry/maps/SectorDamage.java +++ b/core/src/mindustry/maps/SectorDamage.java @@ -356,7 +356,7 @@ public class SectorDamage{ 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] = fraction * 23; + values[tile.x][tile.y] = fraction * 26; } } diff --git a/gradle.properties b/gradle.properties index 75d6273d77..33d59bb632 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,3 +1,3 @@ org.gradle.daemon=true org.gradle.jvmargs=-Xms256m -Xmx1024m -archash=a30c7164ce621554b73610ac84ada418e4500a5c +archash=a61861127c9fea900f10b84a35be2369437be8f1 From 15f33b45c7640ed2338d1e425e783b3361433aa1 Mon Sep 17 00:00:00 2001 From: Anuken Date: Tue, 24 Nov 2020 18:12:45 -0500 Subject: [PATCH 14/28] Salt Flats should probably require additive reconstructors --- core/src/mindustry/content/TechTree.java | 1 + 1 file changed, 1 insertion(+) diff --git a/core/src/mindustry/content/TechTree.java b/core/src/mindustry/content/TechTree.java index 30d6c60207..cf77c5819b 100644 --- a/core/src/mindustry/content/TechTree.java +++ b/core/src/mindustry/content/TechTree.java @@ -510,6 +510,7 @@ public class TechTree implements ContentList{ new SectorComplete(windsweptIslands), new Research(commandCenter), new Research(groundFactory), + new Research(additiveReconstructor), new Research(airFactory), new Research(door), new Research(waterExtractor) From 5fd66d38bb72a95b3a01e71d18ec3a7c902ace72 Mon Sep 17 00:00:00 2001 From: Anuken Date: Tue, 24 Nov 2020 18:15:40 -0500 Subject: [PATCH 15/28] Fixed #3573 --- .../world/blocks/storage/CoreBlock.java | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/core/src/mindustry/world/blocks/storage/CoreBlock.java b/core/src/mindustry/world/blocks/storage/CoreBlock.java index bc706ff73d..995834c977 100644 --- a/core/src/mindustry/world/blocks/storage/CoreBlock.java +++ b/core/src/mindustry/world/blocks/storage/CoreBlock.java @@ -268,6 +268,26 @@ public class CoreBlock extends StorageBlock{ } } + @Override + public void handleStack(Item item, int amount, Teamc source){ + super.handleStack(item, amount, source); + + if(team == state.rules.defaultTeam && state.isCampaign()){ + state.rules.sector.info.handleCoreItem(item, amount); + } + } + + @Override + public int removeStack(Item item, int amount){ + int result = super.removeStack(item, amount); + + if(team == state.rules.defaultTeam && state.isCampaign()){ + state.rules.sector.info.handleCoreItem(item, -result); + } + + return result; + } + @Override public void drawSelect(){ Lines.stroke(1f, Pal.accent); From e65971db47a32243f9a941d685e98fefb9fe74b0 Mon Sep 17 00:00:00 2001 From: Volas171 <60143910+Volas171@users.noreply.github.com> Date: Tue, 24 Nov 2020 18:30:59 -0500 Subject: [PATCH 16/28] h --- core/assets/contributors | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/assets/contributors b/core/assets/contributors index d38692de8c..cb64660dae 100644 --- a/core/assets/contributors +++ b/core/assets/contributors @@ -1,4 +1,3 @@ -VolasYouKnow Prosta4okua Felix Corvus Vanguard @@ -102,3 +101,4 @@ jalastram (freesound.org) newlocknew (freesound.org) dsmolenaers (freesound.org) Headphaze (freesound.org) +VolasYouKnow From 40bf0741f0cc7f4d5b6df4b92599948400918e84 Mon Sep 17 00:00:00 2001 From: Patrick 'Quezler' Mounier Date: Wed, 25 Nov 2020 09:36:12 +0100 Subject: [PATCH 17/28] Remove unused import --- core/src/mindustry/world/blocks/distribution/Conveyor.java | 1 - 1 file changed, 1 deletion(-) diff --git a/core/src/mindustry/world/blocks/distribution/Conveyor.java b/core/src/mindustry/world/blocks/distribution/Conveyor.java index a76542f92b..b3218ea7be 100644 --- a/core/src/mindustry/world/blocks/distribution/Conveyor.java +++ b/core/src/mindustry/world/blocks/distribution/Conveyor.java @@ -10,7 +10,6 @@ import arc.util.io.*; import mindustry.annotations.Annotations.*; import mindustry.content.*; import mindustry.entities.units.*; -import mindustry.game.*; import mindustry.gen.*; import mindustry.graphics.*; import mindustry.type.*; From 642b877ab0fd38150a5b053fd9c3b0c39b4ad9e3 Mon Sep 17 00:00:00 2001 From: Patrick 'Quezler' Mounier Date: Wed, 25 Nov 2020 10:40:42 +0100 Subject: [PATCH 18/28] Update JoinDialog.java --- core/src/mindustry/ui/dialogs/JoinDialog.java | 23 ++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/core/src/mindustry/ui/dialogs/JoinDialog.java b/core/src/mindustry/ui/dialogs/JoinDialog.java index f3d200f08a..db62efef65 100644 --- a/core/src/mindustry/ui/dialogs/JoinDialog.java +++ b/core/src/mindustry/ui/dialogs/JoinDialog.java @@ -8,6 +8,7 @@ import arc.scene.ui.*; import arc.scene.ui.layout.*; import arc.struct.*; import arc.util.*; +import arc.util.Timer.*; import arc.util.serialization.*; import mindustry.*; import mindustry.core.*; @@ -33,6 +34,10 @@ public class JoinDialog extends BaseDialog{ int refreshes; boolean showHidden; + String lastIp; + int lastPort; + Task ping; + public JoinDialog(){ super("@joingame"); @@ -445,13 +450,29 @@ public class JoinDialog extends BaseDialog{ logic.reset(); net.reset(); Vars.netClient.beginConnecting(); - net.connect(ip, port, () -> { + net.connect(lastIp = ip, lastPort = port, () -> { hide(); add.hide(); }); }); } + public void reconnect(){ + ui.loadfrag.show("@reconnecting"); + + this.ping = Timer.schedule(() -> { + net.pingHost(lastIp, lastPort, host -> { + ping.cancel(); + connect(lastIp, lastPort); + }, exception -> {}); + }, 1, 1); + + ui.loadfrag.setButton(() -> { + ui.loadfrag.hide(); + ping.cancel(); + }); + } + void safeConnect(String ip, int port, int version){ if(version != Version.build && Version.build != -1 && version != -1){ ui.showInfo("[scarlet]" + (version > Version.build ? KickReason.clientOutdated : KickReason.serverOutdated).toString() + "\n[]" + From f5e06cca54d0a253f2fc5175e56359bf8e30df14 Mon Sep 17 00:00:00 2001 From: Patrick 'Quezler' Mounier Date: Wed, 25 Nov 2020 10:41:41 +0100 Subject: [PATCH 19/28] Update NetClient.java --- core/src/mindustry/core/NetClient.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/core/src/mindustry/core/NetClient.java b/core/src/mindustry/core/NetClient.java index 841e7e42a7..85bbfd6f95 100644 --- a/core/src/mindustry/core/NetClient.java +++ b/core/src/mindustry/core/NetClient.java @@ -257,6 +257,11 @@ public class NetClient implements ApplicationListener{ public static void kick(KickReason reason){ netClient.disconnectQuietly(); logic.reset(); + + if(reason == KickReason.serverRestarting){ + ui.join.reconnect(); + return; + } if(!reason.quiet){ if(reason.extraText() != null){ From b002d8b4469f01fceaf55f8ccd7e32cc935f4404 Mon Sep 17 00:00:00 2001 From: Patrick 'Quezler' Mounier Date: Wed, 25 Nov 2020 10:42:13 +0100 Subject: [PATCH 20/28] Update bundle.properties --- core/assets/bundles/bundle.properties | 1 + 1 file changed, 1 insertion(+) diff --git a/core/assets/bundles/bundle.properties b/core/assets/bundles/bundle.properties index 8149f4ff3c..068068ff94 100644 --- a/core/assets/bundles/bundle.properties +++ b/core/assets/bundles/bundle.properties @@ -230,6 +230,7 @@ disconnect.timeout = Timed out. disconnect.data = Failed to load world data! cantconnect = Unable to join game ([accent]{0}[]). connecting = [accent]Connecting... +reconnecting = [accent]Reconnecting... connecting.data = [accent]Loading world data... server.port = Port: server.addressinuse = Address already in use! From eaa7b04c3dc3d4b5ce6f9b21c6a11cdbd84ecda5 Mon Sep 17 00:00:00 2001 From: Anuken Date: Wed, 25 Nov 2020 10:15:14 -0500 Subject: [PATCH 21/28] Fixed CI / Fixed exponentially increasing broken blocks --- .github/workflows/deployment.yml | 2 ++ .github/workflows/push.yml | 1 + core/src/mindustry/content/Blocks.java | 2 +- core/src/mindustry/io/SaveVersion.java | 16 ++++++++++++++-- core/src/mindustry/ui/dialogs/PlanetDialog.java | 1 + .../metadata/android/en-US/changelogs/29723.txt | 10 ++++++++++ 6 files changed, 29 insertions(+), 3 deletions(-) create mode 100644 fastlane/metadata/android/en-US/changelogs/29723.txt diff --git a/.github/workflows/deployment.yml b/.github/workflows/deployment.yml index 1532c48561..e9de8ca029 100644 --- a/.github/workflows/deployment.yml +++ b/.github/workflows/deployment.yml @@ -21,6 +21,8 @@ jobs: - name: Update docs run: | cd ../ + git config --global user.email "cli@github.com" + git config --global user.name "Github Actions" git clone --depth=1 https://github.com/MindustryGame/docs.git cp -a Mindustry/core/build/docs/javadoc/. docs/ cd docs diff --git a/.github/workflows/push.yml b/.github/workflows/push.yml index 9436adb06c..7ee54919ac 100644 --- a/.github/workflows/push.yml +++ b/.github/workflows/push.yml @@ -15,6 +15,7 @@ jobs: - name: Run unit tests run: ./gradlew test - name: Trigger BE build + if: ${{ github.repository == ‘Anuken/Mindustry’ }} run: | git clone --depth=1 --branch=master https://github.com/Anuken/MindustryBuilds ../MindustryBuilds cd ../MindustryBuilds diff --git a/core/src/mindustry/content/Blocks.java b/core/src/mindustry/content/Blocks.java index eabaae3104..8fa2510a57 100644 --- a/core/src/mindustry/content/Blocks.java +++ b/core/src/mindustry/content/Blocks.java @@ -1216,7 +1216,7 @@ public class Blocks implements ContentList{ requirements(Category.power, with(Items.lead, 100, Items.silicon, 75, Items.phaseFabric, 25, Items.plastanium, 75, Items.thorium, 50)); size = 2; powerProduction = 4.5f; - itemDuration = 60 * 15f; + itemDuration = 60 * 14f; }}; solarPanel = new SolarGenerator("solar-panel"){{ diff --git a/core/src/mindustry/io/SaveVersion.java b/core/src/mindustry/io/SaveVersion.java index 85fe4a3e31..58d9d77d53 100644 --- a/core/src/mindustry/io/SaveVersion.java +++ b/core/src/mindustry/io/SaveVersion.java @@ -286,7 +286,8 @@ public abstract class SaveVersion extends SaveFileReader{ public void writeEntities(DataOutput stream) throws IOException{ //write team data with entities. - Seq data = state.teams.getActive().and(Team.sharded.data()); + Seq data = state.teams.getActive().copy(); + if(!data.contains(Team.sharded.data())) data.add(Team.sharded.data()); stream.writeInt(data.size); for(TeamData team : data){ stream.writeInt(team.team.id); @@ -313,12 +314,23 @@ public abstract class SaveVersion extends SaveFileReader{ public void readEntities(DataInput stream) throws IOException{ int teamc = stream.readInt(); + for(int i = 0; i < teamc; i++){ Team team = Team.get(stream.readInt()); TeamData data = team.data(); int blocks = stream.readInt(); + data.blocks.clear(); + data.blocks.ensureCapacity(Math.min(blocks, 1000)); + var reads = Reads.get(stream); + var set = new IntSet(); + for(int j = 0; j < blocks; j++){ - data.blocks.addLast(new BlockPlan(stream.readShort(), stream.readShort(), stream.readShort(), content.block(stream.readShort()).id, TypeIO.readObject(Reads.get(stream)))); + short x = stream.readShort(), y = stream.readShort(), rot = stream.readShort(), bid = stream.readShort(); + var obj = TypeIO.readObject(reads); + //cannot have two in the same position + if(set.add(Point2.pack(x, y))){ + data.blocks.addLast(new BlockPlan(x, y, rot, content.block(bid).id, obj)); + } } } diff --git a/core/src/mindustry/ui/dialogs/PlanetDialog.java b/core/src/mindustry/ui/dialogs/PlanetDialog.java index 4700bc0906..b3dc7aa135 100644 --- a/core/src/mindustry/ui/dialogs/PlanetDialog.java +++ b/core/src/mindustry/ui/dialogs/PlanetDialog.java @@ -140,6 +140,7 @@ public class PlanetDialog extends BaseDialog implements PlanetInterfaceRenderer{ return this; } + rebuildButtons(); mode = look; selected = hovered = launchSector = null; launching = false; diff --git a/fastlane/metadata/android/en-US/changelogs/29723.txt b/fastlane/metadata/android/en-US/changelogs/29723.txt new file mode 100644 index 0000000000..c07b6541ec --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/29723.txt @@ -0,0 +1,10 @@ +Only a few days left until stable 6.0 release now. The campaign should now be playable; I've done a playthrough and fixed all the bugs and irregularities I encountered. + +Aside from internal modding API changes and potential bugfixes, 6.0 should not have any more additions. + +- Added basalt boulder decoration block +- Added hint about generator use & power transfer +- Made power node placement smarter +- Buffed Lancer turret + +Campaign: From fb200c6d11db72244119e1ab015f97cd756abe60 Mon Sep 17 00:00:00 2001 From: Anuken Date: Wed, 25 Nov 2020 10:16:40 -0500 Subject: [PATCH 22/28] arc --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 33d59bb632..151ff7ea34 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,3 +1,3 @@ org.gradle.daemon=true org.gradle.jvmargs=-Xms256m -Xmx1024m -archash=a61861127c9fea900f10b84a35be2369437be8f1 +archash=6742c2b110eeecd1934c42b5b1c87b00c911ecc4 From ff20928becee5d2c76954a4527659f023b2e4bed Mon Sep 17 00:00:00 2001 From: Patrick 'Quezler' Mounier Date: Wed, 25 Nov 2020 16:49:36 +0100 Subject: [PATCH 23/28] Anukify reconnect logic --- core/src/mindustry/ui/dialogs/JoinDialog.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/core/src/mindustry/ui/dialogs/JoinDialog.java b/core/src/mindustry/ui/dialogs/JoinDialog.java index db62efef65..62cc2e9391 100644 --- a/core/src/mindustry/ui/dialogs/JoinDialog.java +++ b/core/src/mindustry/ui/dialogs/JoinDialog.java @@ -458,18 +458,21 @@ public class JoinDialog extends BaseDialog{ } public void reconnect(){ + if(lastIp.isEmpty()) return; ui.loadfrag.show("@reconnecting"); - this.ping = Timer.schedule(() -> { + ping = Timer.schedule(() -> { net.pingHost(lastIp, lastPort, host -> { + if(ping == null) return; ping.cancel(); + ping = null; connect(lastIp, lastPort); }, exception -> {}); }, 1, 1); ui.loadfrag.setButton(() -> { ui.loadfrag.hide(); - ping.cancel(); + if(ping != null) ping.cancel(); }); } From 3d6390a76a975eae281876045d616ce32c4b3af9 Mon Sep 17 00:00:00 2001 From: Patrick 'Quezler' Mounier Date: Wed, 25 Nov 2020 16:51:57 +0100 Subject: [PATCH 24/28] Set the ping to null when canceling manually as well --- core/src/mindustry/ui/dialogs/JoinDialog.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/core/src/mindustry/ui/dialogs/JoinDialog.java b/core/src/mindustry/ui/dialogs/JoinDialog.java index 62cc2e9391..155945fc0f 100644 --- a/core/src/mindustry/ui/dialogs/JoinDialog.java +++ b/core/src/mindustry/ui/dialogs/JoinDialog.java @@ -469,10 +469,12 @@ public class JoinDialog extends BaseDialog{ connect(lastIp, lastPort); }, exception -> {}); }, 1, 1); - + ui.loadfrag.setButton(() -> { ui.loadfrag.hide(); - if(ping != null) ping.cancel(); + if(ping == null) return; + ping.cancel(); + ping = null; }); } From f26b3358ef95731b4d89bcbbcbb0590365b2b7fe Mon Sep 17 00:00:00 2001 From: Patrick 'Quezler' Mounier Date: Wed, 25 Nov 2020 17:08:03 +0100 Subject: [PATCH 25/28] Update core/src/mindustry/ui/dialogs/JoinDialog.java Co-authored-by: Anuken --- core/src/mindustry/ui/dialogs/JoinDialog.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/mindustry/ui/dialogs/JoinDialog.java b/core/src/mindustry/ui/dialogs/JoinDialog.java index 155945fc0f..fe5ea1bdaf 100644 --- a/core/src/mindustry/ui/dialogs/JoinDialog.java +++ b/core/src/mindustry/ui/dialogs/JoinDialog.java @@ -458,7 +458,7 @@ public class JoinDialog extends BaseDialog{ } public void reconnect(){ - if(lastIp.isEmpty()) return; + if(lastIp == null || lastIp.isEmpty()) return; ui.loadfrag.show("@reconnecting"); ping = Timer.schedule(() -> { From b271c4be3208fa3c5d99d8935c2cb06efa89f95e Mon Sep 17 00:00:00 2001 From: Anuken Date: Wed, 25 Nov 2020 11:09:29 -0500 Subject: [PATCH 26/28] Fixed deploy CI, again --- .github/workflows/deployment.yml | 4 ++-- fastlane/metadata/android/en-US/changelogs/29726.txt | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) create mode 100644 fastlane/metadata/android/en-US/changelogs/29726.txt diff --git a/.github/workflows/deployment.yml b/.github/workflows/deployment.yml index e9de8ca029..bc993bae07 100644 --- a/.github/workflows/deployment.yml +++ b/.github/workflows/deployment.yml @@ -50,12 +50,12 @@ jobs: uses: svenstaro/upload-release-action@v2 with: repo_token: ${{ secrets.GITHUB_TOKEN }} - file: desktop/libs/Mindustry.jar + file: desktop/build/libs/Mindustry.jar tag: ${{ github.ref }} - name: Upload server artifacts uses: svenstaro/upload-release-action@v2 with: repo_token: ${{ secrets.GITHUB_TOKEN }} - file: server/libs/server-release.jar + file: server/build/libs/server-release.jar tag: ${{ github.ref }} diff --git a/fastlane/metadata/android/en-US/changelogs/29726.txt b/fastlane/metadata/android/en-US/changelogs/29726.txt new file mode 100644 index 0000000000..52dda104eb --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/29726.txt @@ -0,0 +1,2 @@ +- Fixed broken blocks increasing exponentially, leading to runaway memory usage/lag +- Fixed incorrect planet dialog layout on certain devices From bc55e43defa795a44ebc822c54882ab253e8a5f5 Mon Sep 17 00:00:00 2001 From: Anuken Date: Wed, 25 Nov 2020 11:15:46 -0500 Subject: [PATCH 27/28] Fixed #3591 --- core/src/mindustry/entities/comp/WeaponsComp.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/core/src/mindustry/entities/comp/WeaponsComp.java b/core/src/mindustry/entities/comp/WeaponsComp.java index b919f6fee1..21265731fc 100644 --- a/core/src/mindustry/entities/comp/WeaponsComp.java +++ b/core/src/mindustry/entities/comp/WeaponsComp.java @@ -91,6 +91,10 @@ abstract class WeaponsComp implements Teamc, Posc, Rotc, Velc, Statusc{ mount.bullet.time = mount.bullet.lifetime - 10f; mount.bullet = null; } + + if(mount.sound != null){ + mount.sound.stop(); + } } } From 40b67349d9a522cc8f3bb8e5293efe0755f28b98 Mon Sep 17 00:00:00 2001 From: Anuken Date: Wed, 25 Nov 2020 11:56:10 -0500 Subject: [PATCH 28/28] Fixed quotes --- .github/workflows/push.yml | 2 +- core/src/mindustry/game/EventType.java | 1 + core/src/mindustry/world/blocks/campaign/Accelerator.java | 3 +++ desktop/src/mindustry/desktop/steam/SAchievement.java | 1 + desktop/src/mindustry/desktop/steam/SStats.java | 2 ++ 5 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.github/workflows/push.yml b/.github/workflows/push.yml index 7ee54919ac..cf01e4bc68 100644 --- a/.github/workflows/push.yml +++ b/.github/workflows/push.yml @@ -15,7 +15,7 @@ jobs: - name: Run unit tests run: ./gradlew test - name: Trigger BE build - if: ${{ github.repository == ‘Anuken/Mindustry’ }} + if: ${{ github.repository == 'Anuken/Mindustry' }} run: | git clone --depth=1 --branch=master https://github.com/Anuken/MindustryBuilds ../MindustryBuilds cd ../MindustryBuilds diff --git a/core/src/mindustry/game/EventType.java b/core/src/mindustry/game/EventType.java index 43ae282d4c..f0aa3278b2 100644 --- a/core/src/mindustry/game/EventType.java +++ b/core/src/mindustry/game/EventType.java @@ -18,6 +18,7 @@ public class EventType{ impactPower, thoriumReactorOverheat, fireExtinguish, + acceleratorUse, newGame, tutorialComplete, flameAmmo, diff --git a/core/src/mindustry/world/blocks/campaign/Accelerator.java b/core/src/mindustry/world/blocks/campaign/Accelerator.java index 9dd9040f8f..7c8359a6bf 100644 --- a/core/src/mindustry/world/blocks/campaign/Accelerator.java +++ b/core/src/mindustry/world/blocks/campaign/Accelerator.java @@ -1,5 +1,6 @@ package mindustry.world.blocks.campaign; +import arc.*; import arc.Graphics.*; import arc.Graphics.Cursor.*; import arc.graphics.g2d.*; @@ -8,6 +9,7 @@ import arc.scene.ui.layout.*; import arc.util.*; import mindustry.annotations.Annotations.*; import mindustry.content.*; +import mindustry.game.EventType.*; import mindustry.gen.*; import mindustry.graphics.*; import mindustry.type.*; @@ -91,6 +93,7 @@ public class Accelerator extends Block{ if(!state.isCampaign() || !consValid()) return; ui.showInfo("@indev.campaign"); + Events.fire(Trigger.acceleratorUse); } @Override diff --git a/desktop/src/mindustry/desktop/steam/SAchievement.java b/desktop/src/mindustry/desktop/steam/SAchievement.java index 38236eabd8..092f486249 100644 --- a/desktop/src/mindustry/desktop/steam/SAchievement.java +++ b/desktop/src/mindustry/desktop/steam/SAchievement.java @@ -61,6 +61,7 @@ public enum SAchievement{ coolTurret, enablePixelation, openWiki, + useAccelerator, ; private final SStat stat; diff --git a/desktop/src/mindustry/desktop/steam/SStats.java b/desktop/src/mindustry/desktop/steam/SStats.java index e9e8258487..822efe33cc 100644 --- a/desktop/src/mindustry/desktop/steam/SStats.java +++ b/desktop/src/mindustry/desktop/steam/SStats.java @@ -215,6 +215,8 @@ public class SStats implements SteamUserStatsCallback{ } }); + trigger(Trigger.acceleratorUse, useAccelerator); + trigger(Trigger.impactPower, powerupImpactReactor); trigger(Trigger.flameAmmo, useFlameAmmo);