From 3d99e38f10b73bba8a2fba97c27ec5e6e3e5f3de Mon Sep 17 00:00:00 2001 From: Anuken Date: Sun, 11 Oct 2020 10:51:33 -0400 Subject: [PATCH] Sector simplification --- core/assets/bundles/bundle.properties | 2 ++ core/assets/maps/craters.msav | Bin 11757 -> 11971 bytes core/src/mindustry/Vars.java | 2 +- core/src/mindustry/content/StatusEffects.java | 14 ++++++------ core/src/mindustry/core/Logic.java | 4 +++- .../mindustry/entities/comp/ShieldComp.java | 3 ++- .../mindustry/entities/comp/StatusComp.java | 6 ++--- core/src/mindustry/game/Objectives.java | 5 +++-- core/src/mindustry/game/SpawnGroup.java | 14 ++++++++---- core/src/mindustry/type/StatusEffect.java | 4 ++-- .../mindustry/ui/dialogs/PausedDialog.java | 9 ++++---- .../mindustry/ui/dialogs/PlanetDialog.java | 7 ++++-- .../mindustry/ui/fragments/HudFragment.java | 21 ++++++++++++++++++ 13 files changed, 64 insertions(+), 27 deletions(-) diff --git a/core/assets/bundles/bundle.properties b/core/assets/bundles/bundle.properties index 6d1aafb54f..3f4cc635fe 100644 --- a/core/assets/bundles/bundle.properties +++ b/core/assets/bundles/bundle.properties @@ -291,6 +291,8 @@ waiting = [lightgray]Waiting... waiting.players = Waiting for players... wave.enemies = [lightgray]{0} Enemies Remaining wave.enemy = [lightgray]{0} Enemy Remaining +wave.guardianwarn = Guardian approaching in [accent]{0}[] waves. +wave.guardianwarn.one = Guardian approaching in [accent]{0}[] wave. loadimage = Load Image saveimage = Save Image unknown = Unknown diff --git a/core/assets/maps/craters.msav b/core/assets/maps/craters.msav index b879701ae6bf4dd86e0831622f05cd11e168e550..b10b354bf009d65f7a94e7eda8c95064d58f0599 100644 GIT binary patch literal 11971 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 Szw@j8ztZ3T8P_trngjsUlh||s literal 11757 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 diff --git a/core/src/mindustry/Vars.java b/core/src/mindustry/Vars.java index be658a7a87..5d25f77cbf 100644 --- a/core/src/mindustry/Vars.java +++ b/core/src/mindustry/Vars.java @@ -85,7 +85,7 @@ public class Vars implements Loadable{ /** range for moving items for logic units */ public static final float logicItemTransferRange = 45f; /** duration of time between turns in ticks */ - public static final float turnDuration = 20 * Time.toMinutes; + public static final float turnDuration = 2 * Time.toMinutes; /** turns needed to destroy a sector completely */ public static final float sectorDestructionTurns = 2f; /** min armor fraction damage; e.g. 0.05 = at least 5% damage */ diff --git a/core/src/mindustry/content/StatusEffects.java b/core/src/mindustry/content/StatusEffects.java index 6752cf68e6..4cdfadec76 100644 --- a/core/src/mindustry/content/StatusEffects.java +++ b/core/src/mindustry/content/StatusEffects.java @@ -33,7 +33,7 @@ public class StatusEffects implements ContentList{ freezing = new StatusEffect("freezing"){{ speedMultiplier = 0.6f; - armorMultiplier = 0.8f; + healthMultiplier = 0.8f; effect = Fx.freezing; init(() -> { @@ -81,7 +81,7 @@ public class StatusEffects implements ContentList{ melting = new StatusEffect("melting"){{ speedMultiplier = 0.8f; - armorMultiplier = 0.8f; + healthMultiplier = 0.8f; damage = 0.3f; effect = Fx.melting; @@ -93,7 +93,7 @@ public class StatusEffects implements ContentList{ sapped = new StatusEffect("sapped"){{ speedMultiplier = 0.7f; - armorMultiplier = 0.8f; + healthMultiplier = 0.8f; effect = Fx.sapped; effectChance = 0.1f; }}; @@ -115,7 +115,7 @@ public class StatusEffects implements ContentList{ }}; overdrive = new StatusEffect("overdrive"){{ - armorMultiplier = 0.95f; + healthMultiplier = 0.95f; speedMultiplier = 1.15f; damageMultiplier = 1.4f; damage = -0.01f; @@ -132,13 +132,13 @@ public class StatusEffects implements ContentList{ }}; shielded = new StatusEffect("shielded"){{ - armorMultiplier = 3f; + healthMultiplier = 3f; }}; boss = new StatusEffect("boss"){{ permanent = true; - damageMultiplier = 1.5f; - armorMultiplier = 1.5f; + damageMultiplier = 2f; + healthMultiplier = 2f; }}; shocked = new StatusEffect("shocked"); diff --git a/core/src/mindustry/core/Logic.java b/core/src/mindustry/core/Logic.java index f49133e7d1..31dee47410 100644 --- a/core/src/mindustry/core/Logic.java +++ b/core/src/mindustry/core/Logic.java @@ -197,6 +197,8 @@ public class Logic implements ApplicationListener{ state.rules.waves = false; } + //TODO capturing is disabled + /* //if there's a "win" wave and no enemies are present, win automatically if(state.rules.waves && state.enemies == 0 && state.rules.winWave > 0 && state.wave >= state.rules.winWave && !spawner.isSpawning()){ //the sector has been conquered - waves get disabled @@ -209,7 +211,7 @@ public class Logic implements ApplicationListener{ if(!headless){ control.saves.saveSector(state.rules.sector); } - } + }*/ }else{ if(!state.rules.attackMode && state.teams.playerCores().size == 0 && !state.gameOver){ state.gameOver = true; diff --git a/core/src/mindustry/entities/comp/ShieldComp.java b/core/src/mindustry/entities/comp/ShieldComp.java index 359637414e..274286b801 100644 --- a/core/src/mindustry/entities/comp/ShieldComp.java +++ b/core/src/mindustry/entities/comp/ShieldComp.java @@ -9,7 +9,7 @@ import static mindustry.Vars.*; @Component abstract class ShieldComp implements Healthc, Posc{ - @Import float health, hitTime, x, y; + @Import float health, hitTime, x, y, healthMultiplier; @Import boolean dead; /** Absorbs health damage. */ @@ -22,6 +22,7 @@ abstract class ShieldComp implements Healthc, Posc{ @Replace @Override public void damage(float amount){ + amount /= healthMultiplier; //apply armor amount = Math.max(amount - armor, minArmorDamage * amount); diff --git a/core/src/mindustry/entities/comp/StatusComp.java b/core/src/mindustry/entities/comp/StatusComp.java index 3a31b13b95..fcce0d0a02 100644 --- a/core/src/mindustry/entities/comp/StatusComp.java +++ b/core/src/mindustry/entities/comp/StatusComp.java @@ -19,7 +19,7 @@ abstract class StatusComp implements Posc, Flyingc{ private Seq statuses = new Seq<>(); private transient Bits applied = new Bits(content.getBy(ContentType.status).size); - @ReadOnly transient float speedMultiplier = 1, damageMultiplier = 1, armorMultiplier = 1, reloadMultiplier = 1; + @ReadOnly transient float speedMultiplier = 1, damageMultiplier = 1, healthMultiplier = 1, reloadMultiplier = 1; @Import UnitType type; @@ -104,7 +104,7 @@ abstract class StatusComp implements Posc, Flyingc{ } applied.clear(); - speedMultiplier = damageMultiplier = armorMultiplier = reloadMultiplier = 1f; + speedMultiplier = damageMultiplier = healthMultiplier = reloadMultiplier = 1f; if(statuses.isEmpty()) return; @@ -122,7 +122,7 @@ abstract class StatusComp implements Posc, Flyingc{ statuses.remove(index); }else{ speedMultiplier *= entry.effect.speedMultiplier; - armorMultiplier *= entry.effect.armorMultiplier; + healthMultiplier *= entry.effect.healthMultiplier; damageMultiplier *= entry.effect.damageMultiplier; reloadMultiplier *= entry.effect.reloadMultiplier; entry.effect.update(self(), entry.time); diff --git a/core/src/mindustry/game/Objectives.java b/core/src/mindustry/game/Objectives.java index 535f1d3e13..a4097c51fc 100644 --- a/core/src/mindustry/game/Objectives.java +++ b/core/src/mindustry/game/Objectives.java @@ -28,6 +28,7 @@ public class Objectives{ } } + //TODO fix public static class SectorComplete extends SectorObjective{ public SectorComplete(SectorPreset zone){ @@ -38,12 +39,12 @@ public class Objectives{ @Override public boolean complete(){ - return preset.sector.isCaptured(); + return preset.sector.save != null && preset.sector.save.meta.wave >= preset.sector.save.meta.rules.winWave; } @Override public String display(){ - return Core.bundle.format("requirement.capture", preset.localizedName); + return Core.bundle.format("requirement.wave", preset.sector.save == null ? "" : preset.sector.save.meta.rules.winWave, preset.localizedName); } } diff --git a/core/src/mindustry/game/SpawnGroup.java b/core/src/mindustry/game/SpawnGroup.java index 28edfd0a1a..f9ae7c74d3 100644 --- a/core/src/mindustry/game/SpawnGroup.java +++ b/core/src/mindustry/game/SpawnGroup.java @@ -28,7 +28,7 @@ public class SpawnGroup implements Serializable{ /** The spacing, in waves, of spawns. For example, 2 = spawns every other wave */ public int spacing = 1; /** Maximum amount of units that spawn */ - public int max = 100; + public int max = 40; /** How many waves need to pass before the amount of units spawned increases by 1 */ public float unitScaling = never; /** Shield points that this unit has. */ @@ -88,7 +88,7 @@ public class SpawnGroup implements Serializable{ if(begin != 0) json.writeValue("begin", begin); if(end != never) json.writeValue("end", end); if(spacing != 1) json.writeValue("spacing", spacing); - //if(max != 40) json.writeValue("max", max); + if(max != 40) json.writeValue("max", max); if(unitScaling != never) json.writeValue("scaling", unitScaling); if(shields != 0) json.writeValue("shields", shields); if(shieldScaling != 0) json.writeValue("shieldScaling", shieldScaling); @@ -105,12 +105,18 @@ public class SpawnGroup implements Serializable{ begin = data.getInt("begin", 0); end = data.getInt("end", never); spacing = data.getInt("spacing", 1); - //max = data.getInt("max", 40); + max = data.getInt("max", 40); unitScaling = data.getFloat("scaling", never); shields = data.getFloat("shields", 0); shieldScaling = data.getFloat("shieldScaling", 0); unitAmount = data.getInt("amount", 1); - effect = content.getByName(ContentType.status, data.hasChild("effect") && data.getChild("effect").isString() ? data.getString("effect", "none") : "none"); + + //old boss effect ID + if(data.has("effect") && data.get("effect").isNumber() && data.getInt("effect", -1) == 8){ + effect = StatusEffects.boss; + }else{ + effect = content.getByName(ContentType.status, data.has("effect") && data.get("effect").isString() ? data.getString("effect", "none") : "none"); + } } @Override diff --git a/core/src/mindustry/type/StatusEffect.java b/core/src/mindustry/type/StatusEffect.java index fda8dbbbf2..eb0bedb60c 100644 --- a/core/src/mindustry/type/StatusEffect.java +++ b/core/src/mindustry/type/StatusEffect.java @@ -13,8 +13,8 @@ import mindustry.gen.*; public class StatusEffect extends MappableContent{ /** Damage dealt by the unit with the effect. */ public float damageMultiplier = 1f; - /** Unit armor multiplier. */ - public float armorMultiplier = 1f; + /** Unit health multiplier. */ + public float healthMultiplier = 1f; /** Unit speed multiplier */ public float speedMultiplier = 1f; /** Unit speed multiplier */ diff --git a/core/src/mindustry/ui/dialogs/PausedDialog.java b/core/src/mindustry/ui/dialogs/PausedDialog.java index 559450a591..664d4df92a 100644 --- a/core/src/mindustry/ui/dialogs/PausedDialog.java +++ b/core/src/mindustry/ui/dialogs/PausedDialog.java @@ -35,10 +35,11 @@ public class PausedDialog extends BaseDialog{ if(!mobile){ //TODO localize - cont.label(() -> state.getSector() == null ? "" : - ("[lightgray]Next turn in [accent]" + state.getSector().displayTimeRemaining() + - (state.rules.winWave > 0 && !state.getSector().isCaptured() ? "\n[lightgray]Reach wave[accent] " + state.rules.winWave + "[] to capture" : ""))) - .visible(() -> state.getSector() != null).colspan(2); + //TODO capturing is disabled, remove? + //cont.label(() -> state.getSector() == null ? "" : + //("[lightgray]Next turn in [accent]" + state.getSector().displayTimeRemaining() + + // (state.rules.winWave > 0 && !state.getSector().isCaptured() ? "\n[lightgray]Reach wave[accent] " + state.rules.winWave + "[] to capture" : ""))) + // .visible(() -> state.getSector() != null).colspan(2); cont.row(); float dw = 220f; diff --git a/core/src/mindustry/ui/dialogs/PlanetDialog.java b/core/src/mindustry/ui/dialogs/PlanetDialog.java index a7b667dcd8..999c12035f 100644 --- a/core/src/mindustry/ui/dialogs/PlanetDialog.java +++ b/core/src/mindustry/ui/dialogs/PlanetDialog.java @@ -263,9 +263,10 @@ public class PlanetDialog extends BaseDialog implements PlanetInterfaceRenderer{ } }, new Table(t -> { + t.touchable = Touchable.disabled; //TODO localize t.top(); - t.label(() -> mode == select ? "@sectors.select" : mode == launch ? "Select Launch Sector" : "Turn " + universe.turn()).style(Styles.outlineLabel).color(Pal.accent); + t.label(() -> mode == select ? "@sectors.select" : mode == launch ? "Select Launch Sector" : "").style(Styles.outlineLabel).color(Pal.accent); })).grow(); } @@ -338,6 +339,8 @@ public class PlanetDialog extends BaseDialog implements PlanetInterfaceRenderer{ stable.add("[accent]Difficulty: " + (int)(sector.baseCoverage * 10)).row(); } + //TODO sector damage is disabled, remove when finalized + /* if(sector.hasBase() && sector.hasWaves()){ //TODO localize when finalized //these mechanics are likely to change and as such are not added to the bundle @@ -345,7 +348,7 @@ public class PlanetDialog extends BaseDialog implements PlanetInterfaceRenderer{ stable.row(); stable.add("[accent]" + Mathf.ceil(sectorDestructionTurns - (sector.getSecondsPassed() * 60) / turnDuration) + " turn(s)\nuntil destruction"); stable.row(); - } + }*/ if(sector.save != null){ stable.add("@sectors.resources").row(); diff --git a/core/src/mindustry/ui/fragments/HudFragment.java b/core/src/mindustry/ui/fragments/HudFragment.java index 38ae0cd1f2..4c76976ec5 100644 --- a/core/src/mindustry/ui/fragments/HudFragment.java +++ b/core/src/mindustry/ui/fragments/HudFragment.java @@ -15,6 +15,7 @@ import arc.scene.ui.layout.*; import arc.struct.*; import arc.util.*; import mindustry.annotations.Annotations.*; +import mindustry.content.*; import mindustry.core.GameState.*; import mindustry.ctype.*; import mindustry.game.EventType.*; @@ -47,6 +48,26 @@ public class HudFragment extends Fragment{ @Override public void build(Group parent){ + //warn about guardian/boss waves + Events.on(WaveEvent.class, e -> { + int max = 10; + outer: + for(int i = state.wave - 1; i <= state.wave + max; i++){ + for(SpawnGroup group : state.rules.spawns){ + if(group.effect == StatusEffects.boss && group.getUnitsSpawned(i) > 0){ + int diff = (i + 2) - state.wave; + + //increments at which to warn about incoming guardian + if(diff == 1 || diff == 2 || diff == 5 || diff == 10){ + showToast(Icon.warning, Core.bundle.format("wave.guardianwarn" + (diff == 1 ? ".one" : ""), diff)); + } + + break outer; + } + } + } + }); + //TODO details and stuff Events.on(SectorCaptureEvent.class, e ->{ //TODO localize