From 8aa99c03e239c7c48c97359212e5a84fa1c6b64d Mon Sep 17 00:00:00 2001 From: yairm210 Date: Thu, 11 Nov 2021 23:56:29 +0200 Subject: [PATCH] Probably solved a bug where brushes would cause non-ruleset terrains for mods without grassland --- core/src/com/unciv/logic/battle/Battle.kt | 8 ++------ .../com/unciv/ui/mapeditor/MapEditorOptionsTable.kt | 10 ++++++---- 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/core/src/com/unciv/logic/battle/Battle.kt b/core/src/com/unciv/logic/battle/Battle.kt index 39d2cf37fc..e2dda185a0 100644 --- a/core/src/com/unciv/logic/battle/Battle.kt +++ b/core/src/com/unciv/logic/battle/Battle.kt @@ -27,14 +27,10 @@ object Battle { fun moveAndAttack(attacker: ICombatant, attackableTile: AttackableTile) { if (attacker is MapUnitCombatant) { attacker.unit.movement.moveToTile(attackableTile.tileToAttackFrom) - /** You might ask: When can this possibly happen? - * We always receive an AttackableTile, which means that it was returned from getAttackableTiles! - * And getAttackableTiles should ensure that we return only units that are in the range of movement! - * - * The answer is: when crossing a HIDDEN TILE. + /** * When calculating movement distance, we assume that a hidden tile is 1 movement point, * which can lead to EXCEEDINGLY RARE edge cases where you think - * that you can attack a tile by passing through a hidden tile, + * that you can attack a tile by passing through a HIDDEN TILE, * but the hidden tile is actually IMPASSIBLE so you stop halfway! */ if (attacker.getTile() != attackableTile.tileToAttackFrom) return diff --git a/core/src/com/unciv/ui/mapeditor/MapEditorOptionsTable.kt b/core/src/com/unciv/ui/mapeditor/MapEditorOptionsTable.kt index 6645eaf96a..fd94897869 100644 --- a/core/src/com/unciv/ui/mapeditor/MapEditorOptionsTable.kt +++ b/core/src/com/unciv/ui/mapeditor/MapEditorOptionsTable.kt @@ -299,12 +299,14 @@ class MapEditorOptionsTable(val mapEditorScreen: MapEditorScreen): Table(CameraS tileInfo.ruleset = mapEditorScreen.ruleset val terrain = resource.terrainsCanBeFoundOn.first { ruleset.terrains.containsKey(it) } val terrainObject = ruleset.terrains[terrain]!! - if (terrainObject.type == TerrainType.TerrainFeature) { + + if (terrainObject.type != TerrainType.TerrainFeature) tileInfo.baseTerrain = terrain + else { tileInfo.baseTerrain = - if (terrainObject.occursOn.isNotEmpty()) terrainObject.occursOn.first() - else "Grassland" + if (terrainObject.occursOn.isNotEmpty()) terrainObject.occursOn.first() + else ruleset.terrains.values.first { it.type == TerrainType.Land }.name tileInfo.terrainFeatures.add(terrain) - } else tileInfo.baseTerrain = terrain + } tileInfo.resource = resource.name tileInfo.setTerrainTransients()