From c064587d5c165bdb92ab2269ab39d1042ed81ad4 Mon Sep 17 00:00:00 2001 From: Anuken Date: Tue, 13 Jan 2026 23:14:26 -0500 Subject: [PATCH] Fungal pass expanded / Hint overlap fixes --- core/assets/bundles/bundle.properties | 7 +- core/assets/maps/fungalPass.msav | Bin 14791 -> 17500 bytes .../mindustry/ui/fragments/HintsFragment.java | 153 ++++++++++++++---- 3 files changed, 129 insertions(+), 31 deletions(-) diff --git a/core/assets/bundles/bundle.properties b/core/assets/bundles/bundle.properties index f7aa626580..8f76590433 100644 --- a/core/assets/bundles/bundle.properties +++ b/core/assets/bundles/bundle.properties @@ -2130,7 +2130,7 @@ hint.waveFire = [accent]Wave[] turrets with water as ammunition will automatical hint.generator = :combustion-generator: [accent]Combustion Generators[] burn coal and transmit power to adjacent blocks.\n\nPower transmission range can be extended with :power-node: [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 :graphite: [accent]Graphite[] :duo:Duo/:salvo:Salvo ammunition to take Guardians down. hint.coreUpgrade = Cores can be upgraded by [accent]placing higher-tier cores over them[].\n\nPlace a :core-foundation: [accent]Foundation[] core over the :core-shard: [accent]Shard[] core. Make sure it is free from nearby obstructions. -hint.serpuloCoreZone = Additional cores may be constructed on :core-zone: [accent]Core Zone[] tiles. +hint.serpuloCoreZone = Additional :core-shard: [accent]Cores[] may be constructed on :core-zone: [accent]Core Zone[] tiles. hint.cannotUpgrade = A [red]:tree:[] icon over a payload unit indicates that its upgraded version is not researched yet.\n\nUnit upgrades must be researched in the [accent]:tree: tech tree[] before they can be produced in reconstructors. hint.presetLaunch = Gray [accent]landing zone sectors[], such as [accent]Frozen Forest[], can be launched to from anywhere. They do not require capture of nearby territory.\n\n[accent]Numbered sectors[], such as this one, are [accent]optional[]. hint.presetDifficulty = This sector has a [scarlet]high enemy threat level[].\nLaunching to such sectors is [accent]not recommended[] without proper technology and preparation. @@ -2159,6 +2159,9 @@ gz.zone2 = Anything built in the radius is destroyed when a wave starts. gz.zone3 = A wave will begin now.\nGet ready. gz.finish = Build more turrets, mine more resources,\nand defend against all the waves to [accent]capture the sector[]. +fungalpass.tutorial1 = Use [accent]units[] to defend buildings and attack the enemy.\nResearch and place a :ground-factory: [accent]ground factory[]. +fungalpass.tutorial2 = Select :dagger: [accent]Dagger[] units in the factory.\nProduce 3 units. + atolls.destroy1 = Destroy the 2 enemy [accent]foundation cores[] first.\n[accent]Gain access to thorium[]. atolls.destroy2 = The enemy base to the south is fragile to naval units. \nConstruct [accent]naval units[]   to proceed. atolls.destroy3 = The enemy base to the east is fragile to air units. \nConstruct [accent]air units[]   to proceed. @@ -2210,7 +2213,7 @@ aegis.tungsten = Tungsten can be mined using an [accent]impact drill[].\nThis st split.pickup = Some blocks can be picked up by the core unit.\nPick up this [accent]container[] and place it onto the [accent]payload loader[].\n(Default keys are [[ and ] to pick up and drop) split.pickup.mobile = Some blocks can be picked up by the core unit.\nPick up this [accent]container[] and place it onto the [accent]payload loader[].\n(To pick up or drop something, long-press it.) -split.acquire = You must acquire some tungsten to build units. +split.acquire = Acquire some tungsten to build units. split.build = Units must be transported to the other side of the wall.\nPlace two [accent]Payload Mass Drivers[], one on each side of the wall.\nSet up the link by pressing one of them, then selecting the other. split.container = Similar to the container, units can also be transported using a [accent]Payload Mass Driver[].\nPlace a unit fabricator adjacent to a mass driver to load them, then send them across the wall to attack the enemy base. diff --git a/core/assets/maps/fungalPass.msav b/core/assets/maps/fungalPass.msav index a8f41b5fb4bd95cd1c61fd146a4883f9d9c6e967..71e42dd1447a1324b7240df5b61a05a12cbb5ab6 100644 GIT binary patch literal 17500 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
U~_2x7>U5AjTl- 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 Core.input.axis(Binding.moveX) != 0 || Core.input.axis(Binding.moveY) != 0), + zoom(visibleDesktop, () -> Core.input.axis(KeyCode.scroll) != 0), - breaking(() -> isTutorial.get() && state.rules.defaultTeam.data().getCount(Blocks.conveyor) > 5, () -> ui.hints.events.contains("break")), - desktopShoot(visibleDesktop, () -> isSerpulo() && Vars.state.enemies > 0, () -> player.shooting), - depositItems(() -> !player.dead() && player.unit().hasItem(), () -> !player.dead() && !player.unit().hasItem()), - desktopPause(visibleDesktop, () -> isTutorial.get() && !Vars.net.active() && state.wave >= 2, () -> Core.input.keyTap(Binding.pause)), - unitControl(() -> isSerpulo() && state.rules.defaultTeam.data().units.size > 2 && !net.active() && !player.dead(), () -> !player.dead() && !player.unit().spawnedByCore), - unitSelectControl(() -> isSerpulo() && state.rules.defaultTeam.data().units.size > 3 && !net.active() && !player.dead(), - () -> control.input.commandMode && control.input.selectedUnits.size > 0 && control.input.selectedUnits.first().controller() instanceof CommandAI ai && ai.targetPos != null), - respawn(visibleMobile, () -> !player.dead() && !player.unit().spawnedByCore, () -> !player.dead() && player.unit().spawnedByCore), - launch(() -> (isTutorial.get() || Vars.state.rules.sector == SectorPresets.onset.sector) && state.rules.sector.isCaptured(), () -> ui.planet.isShown()), - schematicSelect(visibleDesktop, () -> ui.hints.placedBlocks.contains(Blocks.router) || ui.hints.placedBlocks.contains(Blocks.ductRouter), () -> Core.input.keyRelease(Binding.schematicSelect) || Core.input.keyTap(Binding.pick)), - conveyorPathfind(() -> control.input.block == Blocks.titaniumConveyor, () -> Core.input.keyRelease(Binding.diagonalPlacement) || (mobile && Core.settings.getBool("swapdiagonal"))), - boost(visibleDesktop, () -> !player.dead() && player.unit().type.canBoost, () -> Core.input.keyDown(Binding.boost)), - blockInfo(() -> control.input.block == Blocks.graphitePress, () -> ui.content.isShown()), - derelict(() -> ui.hints.events.contains("derelictmouse") && !isTutorial.get(), () -> ui.hints.events.contains("derelictbreak")), - payloadPickup(() -> isSerpulo() && !player.dead() && player.unit() instanceof Payloadc p && p.payloads().isEmpty(), () -> player.unit() instanceof Payloadc p && p.payloads().any()), - payloadDrop(() -> !player.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.getFlagged(state.rules.defaultTeam, BlockFlag.extinguisher).size > 0), - generator(() -> control.input.block == Blocks.combustionGenerator, () -> ui.hints.placedBlocks.contains(Blocks.combustionGenerator)), - rebuildSelect(() -> state.rules.defaultTeam.data().plans.size >= 10, () -> control.input.isRebuildSelecting()), - guardian(() -> state.boss() != null && isSerpulo() && state.boss().armor >= 4, () -> state.boss() == null), - cannotUpgrade(() -> ui.hints.events.contains("cannotupgrade"), () -> false), + + breaking( + () -> isTutorial.get() && state.rules.defaultTeam.data().getCount(Blocks.conveyor) > 5, + () -> ui.hints.events.contains("break") + ), + + desktopShoot(visibleDesktop, + () -> isSerpulo() && Vars.state.enemies > 0, + () -> player.shooting + ), + + depositItems( + () -> !player.dead() && player.unit().hasItem(), + () -> !player.dead() && !player.unit().hasItem() + ), + + desktopPause(visibleDesktop, + () -> isTutorial.get() && !Vars.net.active() && state.wave >= 2, + () -> Core.input.keyTap(Binding.pause) + ), + + unitControl( + () -> isSerpulo() && state.rules.defaultTeam.data().units.size > 2 && !net.active() && !player.dead(), + () -> !player.dead() && !player.unit().spawnedByCore + ), + + unitSelectControl( + //if the player is on fungal pass or has *ever* played fungal pass, don't show this hint, it's redundant. + //in general, this should only be necessary if the player is doing a custom game or sequence-broke somehow + () -> isSerpulo() && state.rules.defaultTeam.data().units.size > 3 && !net.active() && !player.dead() && state.getSector() != SectorPresets.fungalPass.sector && SectorPresets.fungalPass.sector.save == null, + () -> control.input.commandMode && control.input.selectedUnits.size > 0 && control.input.selectedUnits.first().controller() instanceof CommandAI ai && ai.targetPos != null + ), + + respawn(visibleMobile, + () -> !player.dead() && !player.unit().spawnedByCore, + () -> !player.dead() && player.unit().spawnedByCore + ), + + launch( + () -> (isTutorial.get() || Vars.state.rules.sector == SectorPresets.onset.sector) && state.rules.sector.isCaptured(), + () -> ui.planet.isShown() + ), + + schematicSelect(visibleDesktop, + () -> ui.hints.placedBlocks.contains(Blocks.router) || ui.hints.placedBlocks.contains(Blocks.ductRouter), + () -> Core.input.keyRelease(Binding.schematicSelect) || Core.input.keyTap(Binding.pick) + ), + + conveyorPathfind( + () -> control.input.block == Blocks.titaniumConveyor, + () -> Core.input.keyRelease(Binding.diagonalPlacement) || (mobile && Core.settings.getBool("swapdiagonal")) + ), + + boost(visibleDesktop, + () -> !player.dead() && player.unit().type.canBoost, + () -> Core.input.keyDown(Binding.boost) + ), + + blockInfo( + () -> control.input.block == Blocks.graphitePress, + () -> ui.content.isShown() + ), + + derelict( + () -> ui.hints.events.contains("derelictmouse") && !isTutorial.get(), + () -> ui.hints.events.contains("derelictbreak") + ), + + payloadPickup( + () -> isSerpulo() && !player.dead() && player.unit() instanceof Payloadc p && p.payloads().isEmpty(), + () -> player.unit() instanceof Payloadc p && p.payloads().any() + ), + + payloadDrop( + () -> !player.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.getFlagged(state.rules.defaultTeam, BlockFlag.extinguisher).size > 0 + ), + + generator( + () -> control.input.block == Blocks.combustionGenerator, + () -> ui.hints.placedBlocks.contains(Blocks.combustionGenerator) + ), + + rebuildSelect( + () -> state.rules.defaultTeam.data().plans.size >= 10, + () -> control.input.isRebuildSelecting() + ), + + guardian( + () -> state.boss() != null && isSerpulo() && state.boss().armor >= 4, + () -> state.boss() == null + ), + + cannotUpgrade( + () -> ui.hints.events.contains("cannotupgrade"), + () -> false + ), + factoryControl(() -> !(state.isCampaign() && state.rules.sector.preset == SectorPresets.onset) && - state.rules.defaultTeam.data().getBuildings(Blocks.tankFabricator).size + state.rules.defaultTeam.data().getBuildings(Blocks.groundFactory).size > 0, () -> ui.hints.events.contains("factorycontrol")), + state.rules.defaultTeam.data().getBuildings(Blocks.tankFabricator).size + state.rules.defaultTeam.data().getBuildings(Blocks.groundFactory).size > 0, + () -> ui.hints.events.contains("factorycontrol") + ), + coreUpgrade(() -> state.isCampaign() && state.rules.sector.planet == Planets.serpulo && Blocks.coreFoundation.unlocked() && state.rules.defaultTeam.core() != null && state.rules.defaultTeam.core().block == Blocks.coreShard && state.rules.defaultTeam.core().items.has(Blocks.coreFoundation.requirements), () -> ui.hints.placedBlocks.contains(Blocks.coreFoundation)), - serpuloCoreZone(() -> state.isCampaign() && state.getPlanet() == Planets.serpulo && Vars.indexer.isBlockPresent(Blocks.coreZone) && - (!state.rules.attackMode || state.stats.getDestroyed(Blocks.coreShard) + state.stats.getDestroyed(Blocks.coreFoundation) + state.stats.getDestroyed(Blocks.coreNucleus) > 0), + + serpuloCoreZone( + () -> state.isCampaign() && state.getPlanet() == Planets.serpulo && Vars.indexer.isBlockPresent(Blocks.coreZone) && + (!state.rules.attackMode || state.stats.getDestroyed(Blocks.coreShard) + state.stats.getDestroyed(Blocks.coreFoundation) + state.stats.getDestroyed(Blocks.coreNucleus) > 0), () -> state.rules.defaultTeam.cores().size > 1), - presetLaunch(() -> state.isCampaign() - && state.getSector().preset == null, - () -> state.isCampaign() && state.getSector().preset == SectorPresets.frozenForest), + presetLaunch( + () -> state.isCampaign() && state.getSector().preset == null, + () -> state.isCampaign() && state.getSector().preset == SectorPresets.frozenForest + ), + presetDifficulty(() -> state.isCampaign() && state.getSector().preset == null && state.getSector().threat >= 0.5f && !SectorPresets.tarFields.sector.isCaptured(), //appear only when the player hasn't progressed much in the game yet - () -> state.isCampaign() && state.getSector().preset != null), - coreIncinerate(() -> state.isCampaign() && state.rules.defaultTeam.core() != null && state.rules.defaultTeam.core().items.get(Items.copper) >= state.rules.defaultTeam.core().storageCapacity - 10, () -> false) + () -> state.isCampaign() && state.getSector().preset != null + ), + + coreIncinerate( + () -> state.isCampaign() && state.rules.defaultTeam.core() != null && state.rules.defaultTeam.core().items.get(Items.copper) >= state.rules.defaultTeam.core().storageCapacity - 10, + () -> false + ) ; @Nullable