diff --git a/core/assets-raw/sprites/ui/sectors/sector-sunkenPier.png b/core/assets-raw/sprites/ui/sectors/sector-sunkenPier.png new file mode 100644 index 0000000000..a930ae2117 Binary files /dev/null and b/core/assets-raw/sprites/ui/sectors/sector-sunkenPier.png differ diff --git a/core/assets/bundles/bundle.properties b/core/assets/bundles/bundle.properties index 54b3c0afe1..ab7bafc07e 100644 --- a/core/assets/bundles/bundle.properties +++ b/core/assets/bundles/bundle.properties @@ -880,6 +880,7 @@ sector.seaPort.name = Sea Port sector.weatheredChannels.name = Weathered Channels sector.mycelialBastion.name = Mycelial Bastion sector.frontier.name = Frontier +sector.sunkenPier.name = Sunken Pier sector.cruxscape.name = Cruxscape sector.geothermalStronghold.name = Geothermal Stronghold @@ -905,6 +906,7 @@ sector.navalFortress.description = The enemy has established a base on a remote, #do not translate sector.facility32m.description = WIP, map submission by Stormride_R sector.taintedWoods.description = WIP, map submission by Stormride_R +sector.sunkenPier.description = WIP, map submission by Stormride_R sector.atolls.description = WIP, map submission by Stormride_R sector.frontier.description = WIP, map submission by Stormride_R sector.infestedCanyons.description = WIP, map submission by Skeledragon diff --git a/core/assets/maps/sunkenPier.msav b/core/assets/maps/sunkenPier.msav new file mode 100644 index 0000000000..7f7322526f Binary files /dev/null and b/core/assets/maps/sunkenPier.msav differ diff --git a/core/assets/planets/serpulo.json b/core/assets/planets/serpulo.json index e2dfd3f818..d4c2f578a8 100644 --- a/core/assets/planets/serpulo.json +++ b/core/assets/planets/serpulo.json @@ -1 +1 @@ -{presets:{windsweptIslands:97,stainedMountains:223,weatheredChannels:166,craters:219,extractionOutpost:213,coastline:164,navalFortress:165,frontier:86,groundZero:170,mycelialBastion:143,facility32m:65,atolls:75,overgrowth:142,testingGrounds:169,frozenForest:64,saltFlats:98,taintedWoods:145,infestedCanyons:85,desolateRift:271,nuclearComplex:228,ruinousShores:41,planetaryTerminal:217,impact0078:266,seaPort:214,geothermalStronghold:264,cruxscape:54,fungalPass:221,tarFields:99,biomassFacility:23},attackSectors:[0,6,13,16,19,20,24,27,30,47,55,66,67,69,76,92,94,103,111,116,127,133,138,150,157,161,162,176,180,185,191,192,197,200,204,207,225,230,237,242,243,244,245,246,247,248,251,254,259,263,265]} \ No newline at end of file +{presets:{windsweptIslands:97,stainedMountains:223,weatheredChannels:166,craters:219,extractionOutpost:213,coastline:164,navalFortress:165,frontier:86,sunkenPier:173,groundZero:170,mycelialBastion:143,facility32m:65,atolls:75,overgrowth:142,testingGrounds:169,frozenForest:64,saltFlats:98,taintedWoods:145,infestedCanyons:85,desolateRift:271,nuclearComplex:228,ruinousShores:41,planetaryTerminal:217,impact0078:266,seaPort:214,geothermalStronghold:264,cruxscape:54,fungalPass:221,tarFields:99,biomassFacility:23},attackSectors:[0,6,13,16,19,20,24,27,30,47,55,66,67,69,76,92,94,103,111,116,127,133,138,150,157,161,162,176,180,185,191,192,197,200,204,207,225,230,237,242,243,244,245,246,247,248,251,254,259,263,265]} \ No newline at end of file diff --git a/core/src/mindustry/content/Planets.java b/core/src/mindustry/content/Planets.java index 955f9f03a5..b81f2decb3 100644 --- a/core/src/mindustry/content/Planets.java +++ b/core/src/mindustry/content/Planets.java @@ -66,11 +66,7 @@ public class Planets{ defaultCore = Blocks.coreBastion; iconColor = Color.valueOf("ff9266"); enemyBuildSpeedMultiplier = 0.4f; - - //TODO disallowed for now allowLaunchToNumbered = false; - - //TODO SHOULD there be lighting? updateLighting = false; defaultAttributes.set(Attribute.heat, 0.8f); diff --git a/core/src/mindustry/content/SectorPresets.java b/core/src/mindustry/content/SectorPresets.java index dcbf1ca438..78274ae1e2 100644 --- a/core/src/mindustry/content/SectorPresets.java +++ b/core/src/mindustry/content/SectorPresets.java @@ -9,7 +9,7 @@ public class SectorPresets{ public static SectorPreset groundZero, craters, biomassFacility, taintedWoods, frozenForest, ruinousShores, facility32m, windsweptIslands, stainedMountains, tarFields, - frontier, fungalPass, infestedCanyons, atolls, mycelialBastion, extractionOutpost, saltFlats, testingGrounds, overgrowth, //polarAerodrome, + frontier, fungalPass, infestedCanyons, atolls, sunkenPier, mycelialBastion, extractionOutpost, saltFlats, testingGrounds, overgrowth, //polarAerodrome, impact0078, desolateRift, nuclearComplex, planetaryTerminal, coastline, navalFortress, weatheredChannels, seaPort, @@ -123,6 +123,11 @@ public class SectorPresets{ difficulty = 7; }}; + sunkenPier = new SectorPreset("sunkenPier", serpulo, -1){{ + captureWave = 50; + difficulty = 8; + }}; + mycelialBastion = new SectorPreset("mycelialBastion", serpulo, 260){{ difficulty = 8; }}; diff --git a/core/src/mindustry/content/SerpuloTechTree.java b/core/src/mindustry/content/SerpuloTechTree.java index 8ef67e329e..9517c5ebdf 100644 --- a/core/src/mindustry/content/SerpuloTechTree.java +++ b/core/src/mindustry/content/SerpuloTechTree.java @@ -580,6 +580,14 @@ public class SerpuloTechTree{ new Research(cyclone), new Research(ripple) ), () -> { + node(sunkenPier, Seq.with( + new SectorComplete(navalFortress), + new SectorComplete(coastline), + new Research(multiplicativeReconstructor) + ), () -> { + + }); + node(weatheredChannels, Seq.with( new SectorComplete(impact0078), new SectorComplete(navalFortress), diff --git a/core/src/mindustry/type/SectorPreset.java b/core/src/mindustry/type/SectorPreset.java index 220ffc2ec2..fa283b1e78 100644 --- a/core/src/mindustry/type/SectorPreset.java +++ b/core/src/mindustry/type/SectorPreset.java @@ -70,9 +70,13 @@ public class SectorPreset extends UnlockableContent{ sector = data.presets.get(name, sector); } sector %= planet.sectors.size; - this.sector = planet.sectors.get(sector); + this.sector = planet.sectors.get(sector == -1 ? 0 : sector); - planet.preset(sector, this); + if(sector != -1){ + planet.preset(sector, this); + }else{ + Log.warn("Preset '@' doesn't have a sector assigned.", name); + } } @Override diff --git a/core/src/mindustry/ui/dialogs/PlanetDialog.java b/core/src/mindustry/ui/dialogs/PlanetDialog.java index eecc8e606c..a6c99837b9 100644 --- a/core/src/mindustry/ui/dialogs/PlanetDialog.java +++ b/core/src/mindustry/ui/dialogs/PlanetDialog.java @@ -269,7 +269,7 @@ public class PlanetDialog extends BaseDialog implements PlanetInterfaceRenderer{ //announce new presets for(SectorPreset preset : content.sectors()){ - if(preset.unlocked() && !preset.alwaysUnlocked && !preset.sector.info.shown && preset.requireUnlock && !preset.sector.hasBase() && preset.planet == state.planet){ + if(preset.unlocked() && preset.sector.preset == preset && !preset.alwaysUnlocked && !preset.sector.info.shown && preset.requireUnlock && !preset.sector.hasBase() && preset.planet == state.planet){ newPresets.add(preset.sector); preset.sector.info.shown = true; preset.sector.saveInfo(); @@ -662,7 +662,7 @@ public class PlanetDialog extends BaseDialog implements PlanetInterfaceRenderer{ PlanetData data = new PlanetData(); IntSeq attack = new IntSeq(); for(var sector : state.planet.sectors){ - if(sector.preset == null && sector.generateEnemyBase){ + if((sector.preset == null || !sector.preset.requireUnlock) && sector.generateEnemyBase){ attack.add(sector.id); } diff --git a/core/src/mindustry/ui/dialogs/SectorSelectDialog.java b/core/src/mindustry/ui/dialogs/SectorSelectDialog.java index 7624f8005b..c1ab07af05 100644 --- a/core/src/mindustry/ui/dialogs/SectorSelectDialog.java +++ b/core/src/mindustry/ui/dialogs/SectorSelectDialog.java @@ -78,6 +78,6 @@ public class SectorSelectDialog extends BaseDialog{ } boolean matches(SectorPreset sector, String text){ - return sector.planet == planet && (text.isEmpty() || sector.name.toLowerCase(Locale.ROOT).contains(text) || sector.localizedName.toLowerCase(Locale.ROOT).contains(text)); + return sector.planet == planet && sector.requireUnlock && (text.isEmpty() || sector.name.toLowerCase(Locale.ROOT).contains(text) || sector.localizedName.toLowerCase(Locale.ROOT).contains(text)); } }