diff --git a/android/assets/jsons/Difficulties.json b/android/assets/jsons/Difficulties.json index 4b4ffabd68..a3ec1933c2 100644 --- a/android/assets/jsons/Difficulties.json +++ b/android/assets/jsons/Difficulties.json @@ -8,6 +8,7 @@ buildingCostModifier:0.5, policyCostModifier:0.5, unhappinessModifier:0.4, + barbarianBonus:0.75, aiCityGrowthModifier:1.6, // that is to say it'll take them 1.6 times as long to grow the city aiUnitCostModifier:1.75, aiBuildingCostModifier:1.6, @@ -28,6 +29,7 @@ buildingCostModifier:0.67, policyCostModifier:0.67, unhappinessModifier:0.6, + barbarianBonus:0.5, aiCityGrowthModifier:1.3, aiUnitCostModifier:1.3, aiBuildingCostModifier:1.3, @@ -48,6 +50,7 @@ buildingCostModifier:0.85, policyCostModifier:0.85, unhappinessModifier:0.75, + barbarianBonus:0.4, aiCityGrowthModifier:1.1, aiUnitCostModifier:1.1, aiBuildingCostModifier:1.1, @@ -68,6 +71,7 @@ buildingCostModifier:1, policyCostModifier:1, unhappinessModifier:1, + barbarianBonus:0.33, aiCityGrowthModifier:1, aiUnitCostModifier:1, aiBuildingCostModifier:1, @@ -88,6 +92,7 @@ buildingCostModifier:1, policyCostModifier:1, unhappinessModifier:1, + barbarianBonus:0.25, aiCityGrowthModifier:0.9, aiUnitCostModifier:0.85, aiBuildingCostModifier:0.85, @@ -108,6 +113,7 @@ buildingCostModifier:1, policyCostModifier:1, unhappinessModifier:1, + barbarianBonus:0.2, aiCityGrowthModifier:0.85, aiUnitCostModifier:0.8, aiBuildingCostModifier:0.8, @@ -128,6 +134,7 @@ buildingCostModifier:1, policyCostModifier:1, unhappinessModifier:1, + barbarianBonus:0.1, aiCityGrowthModifier:0.75, aiUnitCostModifier:0.65, aiBuildingCostModifier:0.65, @@ -148,6 +155,7 @@ buildingCostModifier:1, policyCostModifier:1, unhappinessModifier:1, + barbarianBonus:0, aiCityGrowthModifier:0.6, aiUnitCostModifier:0.5, aiBuildingCostModifier:0.5, diff --git a/core/src/com/unciv/logic/battle/BattleDamage.kt b/core/src/com/unciv/logic/battle/BattleDamage.kt index 0763b797dd..8edb04335f 100644 --- a/core/src/com/unciv/logic/battle/BattleDamage.kt +++ b/core/src/com/unciv/logic/battle/BattleDamage.kt @@ -92,9 +92,12 @@ class BattleDamage{ } - if (combatant.getCivInfo().policies.isAdopted("Honor") && enemy.getCivInfo().isBarbarian()) - modifiers["vs Barbarians"] = 0.25f - + if (enemy.getCivInfo().isBarbarian()) { + modifiers["Difficulty"] = combatant.getCivInfo().gameInfo.getDifficulty().barbarianBonus + if (combatant.getCivInfo().policies.isAdopted("Honor")) + modifiers["vs Barbarians"] = 0.25f + } + return modifiers } diff --git a/core/src/com/unciv/models/gamebasics/Difficulty.kt b/core/src/com/unciv/models/gamebasics/Difficulty.kt index 30d886300b..be57aabe32 100644 --- a/core/src/com/unciv/models/gamebasics/Difficulty.kt +++ b/core/src/com/unciv/models/gamebasics/Difficulty.kt @@ -12,6 +12,7 @@ class Difficulty: INamed { var buildingCostModifier:Float = 1f var policyCostModifier:Float = 1f var unhappinessModifier:Float = 1f + var barbarianBonus:Float = 0f var aiCityGrowthModifier:Float = 1f var aiUnitCostModifier:Float = 1f var aiBuildingCostModifier:Float = 1f diff --git a/core/src/com/unciv/ui/worldscreen/WorldScreen.kt b/core/src/com/unciv/ui/worldscreen/WorldScreen.kt index 9f44162dba..65402618f4 100644 --- a/core/src/com/unciv/ui/worldscreen/WorldScreen.kt +++ b/core/src/com/unciv/ui/worldscreen/WorldScreen.kt @@ -52,6 +52,7 @@ class WorldScreen(val viewingCiv:CivilizationInfo) : CameraStageBaseScreen() { private val notificationsScroll: NotificationsScroll var alertPopupIsOpen = false // if we have an alert popup and then we changed screens, the old one shouldn't affect us + var shouldUpdate=false init { topBar.setPosition(0f, stage.height - topBar.height) @@ -112,7 +113,6 @@ class WorldScreen(val viewingCiv:CivilizationInfo) : CameraStageBaseScreen() { } tileMapHolder.setCenterPosition(tileToCenterOn,true) - update() if(gameInfo.gameParameters.isOnlineMultiplayer && !gameInfo.isUpToDate) isPlayersTurn = false // until we're up to date, don't let the player do anything @@ -121,6 +121,10 @@ class WorldScreen(val viewingCiv:CivilizationInfo) : CameraStageBaseScreen() { loadLatestMultiplayerState() }, Actions.delay(10f)))) // delay is in seconds } + + // don't run update() directly, because the UncivGame.worldScreen should be set so that the city buttons and tile groups + // know what the viewing civ is. + shouldUpdate=true } fun loadLatestMultiplayerState(){ @@ -409,8 +413,6 @@ class WorldScreen(val viewingCiv:CivilizationInfo) : CameraStageBaseScreen() { } } - var shouldUpdate=false - override fun render(delta: Float) { // This is so that updates happen in the MAIN THREAD, where there is a GL Context,