From e9e0e55b5ea5f9c69806d97b8d5dbb46853790e4 Mon Sep 17 00:00:00 2001 From: Yair Morgenstern Date: Sun, 21 Jul 2019 19:54:16 +0300 Subject: [PATCH] Resolved #952 - fixed building requirements for Neuschwanstein, Stone Works, Windmill and Spaceship Factory --- android/assets/jsons/Buildings.json | 6 +++++- android/assets/jsons/Translations/Buildings.json | 6 ++++++ core/src/com/unciv/Constants.kt | 1 + core/src/com/unciv/logic/automation/WorkerAutomation.kt | 2 +- core/src/com/unciv/logic/map/RandomMapGenerator.kt | 4 ++-- core/src/com/unciv/models/gamebasics/Building.kt | 8 ++++++++ 6 files changed, 23 insertions(+), 4 deletions(-) diff --git a/android/assets/jsons/Buildings.json b/android/assets/jsons/Buildings.json index 27ac036017..72dc447d07 100644 --- a/android/assets/jsons/Buildings.json +++ b/android/assets/jsons/Buildings.json @@ -33,6 +33,7 @@ resourceBonusStats:{production:1}, maintenance:1, hurryCostModifier:25, + uniques:["Must not be on plains"] requiredTech:"Calendar" }, { @@ -600,6 +601,7 @@ hurryCostModifier:25, maintenance:2, percentStatBonus:{production:10}, + uniques:["Must not be on hill"], requiredTech:"Economics" }, @@ -721,7 +723,8 @@ culture:4, gold:6, isWonder:true, - uniques:["+1 happiness, +2 culture and +3 gold from every Castle"], + uniques:["+1 happiness, +2 culture and +3 gold from every Castle", + "Must be next to mountain"], requiredTech:"Railroad" }, @@ -785,6 +788,7 @@ requiredResource:"Aluminum", cost:360, uniques:["Increases production of spaceship parts by 50%"] + requiredBuilding:"Factory", requiredTech:"Robotics" }, { diff --git a/android/assets/jsons/Translations/Buildings.json b/android/assets/jsons/Translations/Buildings.json index 50dbba0bd2..ec0b1a214b 100644 --- a/android/assets/jsons/Translations/Buildings.json +++ b/android/assets/jsons/Translations/Buildings.json @@ -53,6 +53,9 @@ Portuguese:"Obras de pedras" German:"Mauerwerk" } + + "Must not be on plains":{ + } "Stonehenge":{ Italian:"Stonehenge" @@ -971,6 +974,9 @@ Portuguese:"Moinho de vento" German:"Windmühle" } + + "Must not be on hill":{ + } "Museum":{ Italian:"Museo" diff --git a/core/src/com/unciv/Constants.kt b/core/src/com/unciv/Constants.kt index 00a1b7f5ad..363f45be43 100644 --- a/core/src/com/unciv/Constants.kt +++ b/core/src/com/unciv/Constants.kt @@ -10,6 +10,7 @@ class Constants{ const val jungle = "Jungle" const val hill = "Hill" const val coast = "Coast" + const val plains = "Plains" const val peaceTreaty = "Peace Treaty" const val barbarianEncampment = "Barbarian encampment" const val ancientRuins = "Ancient ruins" diff --git a/core/src/com/unciv/logic/automation/WorkerAutomation.kt b/core/src/com/unciv/logic/automation/WorkerAutomation.kt index 96324b92ab..1085cf28f3 100644 --- a/core/src/com/unciv/logic/automation/WorkerAutomation.kt +++ b/core/src/com/unciv/logic/automation/WorkerAutomation.kt @@ -151,7 +151,7 @@ class WorkerAutomation(val unit: MapUnit) { tile.terrainFeature == "Marsh" -> "Remove Marsh" tile.terrainFeature == Constants.forest -> "Lumber mill" tile.baseTerrain == Constants.hill -> "Mine" - tile.baseTerrain in listOf("Grassland","Desert","Plains") -> "Farm" + tile.baseTerrain in listOf("Grassland","Desert",Constants.plains) -> "Farm" tile.baseTerrain == "Tundra" -> "Trading post" else -> throw Exception("No improvement found for "+tile.baseTerrain) } diff --git a/core/src/com/unciv/logic/map/RandomMapGenerator.kt b/core/src/com/unciv/logic/map/RandomMapGenerator.kt index b7c752d400..2bac9ade0c 100644 --- a/core/src/com/unciv/logic/map/RandomMapGenerator.kt +++ b/core/src/com/unciv/logic/map/RandomMapGenerator.kt @@ -204,11 +204,11 @@ class CelluarAutomataRandomMapGenerator(): SeedRandomMapGenerator() { if (terrain == "Grassland" || terrain == "Tundra") terrain = "Desert" } else if (abs(getLatitude(tile.position)) > maxLatitude * 0.7) { - if (terrain == "Grassland" || terrain == "Plains" || terrain == "Desert" || terrain == ocean) { + if (terrain == "Grassland" || terrain == Constants.plains || terrain == "Desert" || terrain == ocean) { terrain = "Tundra" } } else { - if (terrain == "Tundra") terrain = "Plains" + if (terrain == "Tundra") terrain = Constants.plains else if (terrain == "Desert") terrain = "Grassland" } diff --git a/core/src/com/unciv/models/gamebasics/Building.kt b/core/src/com/unciv/models/gamebasics/Building.kt index dbf374b187..c210fab861 100644 --- a/core/src/com/unciv/models/gamebasics/Building.kt +++ b/core/src/com/unciv/models/gamebasics/Building.kt @@ -228,6 +228,14 @@ class Building : NamedStats(), IConstruction{ && !construction.cityInfo.getCenterTile().neighbors.any { it.baseTerrain == Constants.mountain }) return "Must be next to mountain" + if("Must not be on plains" in uniques + && construction.cityInfo.getCenterTile().baseTerrain==Constants.plains) + return "Must not be on plains" + + if("Must not be on hill" in uniques + && construction.cityInfo.getCenterTile().baseTerrain==Constants.hill) + return "Must not be on hill" + if("Can only be built in coastal cities" in uniques && !construction.cityInfo.getCenterTile().neighbors.any { it.baseTerrain==Constants.coast }) return "Can only be built in coastal cities"