From 822f0603fbaa181871555faa0a9b202c4a02119f Mon Sep 17 00:00:00 2001 From: Yair Morgenstern Date: Sun, 23 Jan 2022 19:09:52 +0200 Subject: [PATCH] Start bias includes neighboring tiles for better effect (#6019) This also means we don't need a special coastal check, since it's caught by the regular check IIRC there are nations in Original Civ that have 'mountain' start bias - if so this will also enable that :) --- core/src/com/unciv/logic/GameStarter.kt | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/core/src/com/unciv/logic/GameStarter.kt b/core/src/com/unciv/logic/GameStarter.kt index ee075689df..bc756a771c 100644 --- a/core/src/com/unciv/logic/GameStarter.kt +++ b/core/src/com/unciv/logic/GameStarter.kt @@ -12,6 +12,8 @@ import com.unciv.models.ruleset.ModOptionsConstants import com.unciv.models.ruleset.Ruleset import com.unciv.models.ruleset.RulesetCache import com.unciv.models.ruleset.unique.UniqueType +import com.unciv.models.translations.equalsPlaceholderText +import com.unciv.models.translations.getPlaceholderParameters import java.util.* import kotlin.collections.HashMap import kotlin.collections.HashSet @@ -436,13 +438,20 @@ object GameStarter { var preferredTiles = freeTiles.toList() for (startBias in civ.nation.startBias) { preferredTiles = when { - startBias.startsWith("Avoid [") -> { - val tileToAvoid = startBias.removePrefix("Avoid [").removeSuffix("]") - preferredTiles.filter { !it.matchesTerrainFilter(tileToAvoid) } + startBias.equalsPlaceholderText("Avoid []") -> { + val tileToAvoid = startBias.getPlaceholderParameters()[0] + preferredTiles.filter { tile -> + !tile.getTilesInDistance(1).any { + it.matchesTerrainFilter(tileToAvoid) + } + } } - startBias == Constants.coast -> preferredTiles.filter { it.isCoastalTile() } startBias in tileMap.naturalWonders -> preferredTiles // passthrough: already failed - else -> preferredTiles.filter { it.matchesTerrainFilter(startBias) } + else -> preferredTiles.filter { tile -> + tile.getTilesInDistance(1).any { + it.matchesTerrainFilter(startBias) + } + } } } return preferredTiles.lastOrNull() ?: freeTiles.last()