diff --git a/core/assets/maps/onset.msav b/core/assets/maps/onset.msav index 45fc6513ec..42cf184789 100644 Binary files a/core/assets/maps/onset.msav and b/core/assets/maps/onset.msav differ diff --git a/core/src/mindustry/content/Planets.java b/core/src/mindustry/content/Planets.java index caf7b1139d..f3e45c83a0 100644 --- a/core/src/mindustry/content/Planets.java +++ b/core/src/mindustry/content/Planets.java @@ -57,6 +57,12 @@ public class Planets{ totalRadius += 2.6f; lightSrcTo = 0.5f; lightDstFrom = 0.2f; + + unlockedOnLand.addAll( + Blocks.plasmaBore, Blocks.duct, + Blocks.turbineCondenser, Blocks.breach, + Blocks.coreCitadel + ); }}; //TODO names diff --git a/core/src/mindustry/type/Planet.java b/core/src/mindustry/type/Planet.java index 3892cd0b6d..520f51d2ea 100644 --- a/core/src/mindustry/type/Planet.java +++ b/core/src/mindustry/type/Planet.java @@ -91,6 +91,8 @@ public class Planet extends UnlockableContent{ public @Nullable TechNode techTree; /** Planets that can be launched to from this one. Made mutual in init(). */ public Seq launchCandidates = new Seq<>(); + /** Content (usually planet-specific) that is unlocked upon landing here. */ + public Seq unlockedOnLand = new Seq<>(); /** Loads the mesh. Clientside only. Defaults to a boring sphere mesh. */ protected Prov meshLoader = () -> new ShaderSphereMesh(this, Shaders.unlit, 2), cloudMeshLoader = () -> null; diff --git a/core/src/mindustry/ui/dialogs/PlanetDialog.java b/core/src/mindustry/ui/dialogs/PlanetDialog.java index 4011c54e3c..9a8f21861e 100644 --- a/core/src/mindustry/ui/dialogs/PlanetDialog.java +++ b/core/src/mindustry/ui/dialogs/PlanetDialog.java @@ -1137,6 +1137,8 @@ public class PlanetDialog extends BaseDialog implements PlanetInterfaceRenderer{ //TODO animation //schematic selection and cost handled by listener listener.get(sector); + //unlock right before launch + sector.planet.unlockedOnLand.each(UnlockableContent::unlock); control.playSector(sector); }else{ //sector should have base here