diff --git a/android/assets/jsons/Difficulties.json b/android/assets/jsons/Difficulties.json index a8ea2b4f59..5cd39bdd75 100644 --- a/android/assets/jsons/Difficulties.json +++ b/android/assets/jsons/Difficulties.json @@ -7,7 +7,8 @@ aiCityGrowthModifier:1.6, // that is to say it'll take them 1.6 times as long to grow the city aiUnitMaintainanceModifier:1, aiConstructionModifier:0.6, // Replaces "Construction rate" and "Create rate" in original config - aiFreeTechs:[] + aiFreeTechs:[], + aiUnhappinessModifier:1 }, { name:"Chieftain", @@ -17,7 +18,8 @@ aiCityGrowthModifier:1.3, aiUnitMaintainanceModifier:1, aiConstructionModifier:0.75, - aiFreeTechs:[] + aiFreeTechs:[], + aiUnhappinessModifier:1 }, { name:"Warlord", @@ -27,7 +29,8 @@ aiCityGrowthModifier:1.1, aiUnitMaintainanceModifier:1, aiConstructionModifier:0.9, - aiFreeTechs:[] + aiFreeTechs:[], + aiUnhappinessModifier:1 }, { name:"Prince", @@ -37,7 +40,8 @@ aiCityGrowthModifier:1, aiUnitMaintainanceModifier:0.85, aiConstructionModifier:1, - aiFreeTechs:[] + aiFreeTechs:[], + aiUnhappinessModifier:1 }, { name:"King", @@ -47,7 +51,8 @@ aiCityGrowthModifier:0.9, aiUnitMaintainanceModifier:0.8, aiConstructionModifier:1.15, - aiFreeTechs:["Pottery"] + aiFreeTechs:["Pottery"], + aiUnhappinessModifier:0.9 }, { name:"Emperor", @@ -57,7 +62,8 @@ aiCityGrowthModifier:0.85, aiUnitMaintainanceModifier:0.75, aiConstructionModifier:1.25, - aiFreeTechs:["Pottery","Animal Husbandry"] + aiFreeTechs:["Pottery","Animal Husbandry"], + aiUnhappinessModifier:0.85 }, { name:"Immortal", @@ -67,7 +73,8 @@ aiCityGrowthModifier:0.75, aiUnitMaintainanceModifier:0.65, aiConstructionModifier:1.5, - aiFreeTechs:["Pottery","Animal Husbandry","Mining"] + aiFreeTechs:["Pottery","Animal Husbandry","Mining"], + aiUnhappinessModifier:0.75 }, { name:"Deity", @@ -77,6 +84,7 @@ aiCityGrowthModifier:0.6, aiUnitMaintainanceModifier:0.5, aiConstructionModifier:2, - aiFreeTechs:["Pottery","Animal Husbandry","Mining","The Wheel"] + aiFreeTechs:["Pottery","Animal Husbandry","Mining","The Wheel"], + aiUnhappinessModifier:0.6 } ] diff --git a/core/src/com/unciv/GameStarter.kt b/core/src/com/unciv/GameStarter.kt index d30101e247..2f5b175bc0 100644 --- a/core/src/com/unciv/GameStarter.kt +++ b/core/src/com/unciv/GameStarter.kt @@ -29,12 +29,13 @@ class GameStarter(){ playerCiv.difficulty=difficulty gameInfo.civilizations.add(playerCiv) // first one is player civ - freeTiles.removeAll(gameInfo.tileMap.getTilesInDistance(playerPosition,distanceAroundStartingPointNoOneElseWillStartIn )) + freeTiles.removeAll(gameInfo.tileMap.getTilesInDistance(playerPosition, distanceAroundStartingPointNoOneElseWillStartIn )) val barbarianCivilization = CivilizationInfo() gameInfo.civilizations.add(barbarianCivilization)// second is barbarian civ for (civname in GameBasics.Civilizations.keys.filterNot { it=="Barbarians" || it==civilization }.take(numberOfCivs)) { + if(freeTiles.isEmpty()) break // we can't add any more civs. val startingLocation = freeTiles.toList().getRandom().position val civ = CivilizationInfo(civname, startingLocation, gameInfo) civ.tech.techsResearched.addAll(playerCiv.getDifficulty().aiFreeTechs) diff --git a/core/src/com/unciv/logic/city/CityStats.kt b/core/src/com/unciv/logic/city/CityStats.kt index 5dc8cf9579..bca98cecfb 100644 --- a/core/src/com/unciv/logic/city/CityStats.kt +++ b/core/src/com/unciv/logic/city/CityStats.kt @@ -101,6 +101,8 @@ class CityStats { fun getCityHappiness(): LinkedHashMap { val civInfo = cityInfo.civInfo var unhappinessModifier = civInfo.getDifficulty().unhappinessModifier + if(!civInfo.isPlayerCivilization()) + unhappinessModifier *= civInfo.gameInfo.getPlayerCivilization().getDifficulty().aiUnhappinessModifier happinessList["Cities"] = -3f * unhappinessModifier diff --git a/core/src/com/unciv/models/gamebasics/Difficulty.kt b/core/src/com/unciv/models/gamebasics/Difficulty.kt index 19074eeb91..2b514a9232 100644 --- a/core/src/com/unciv/models/gamebasics/Difficulty.kt +++ b/core/src/com/unciv/models/gamebasics/Difficulty.kt @@ -12,4 +12,5 @@ class Difficulty: INamed { var aiUnitMaintainanceModifier = 1f var aiConstructionModifier = 1f var aiFreeTechs = ArrayList() + var aiUnhappinessModifier = 1f } \ No newline at end of file