From 4f0f163c0033b4beb1adc0b3f4de30a5d6f12437 Mon Sep 17 00:00:00 2001 From: Yair Morgenstern Date: Mon, 3 Dec 2018 09:57:27 +0200 Subject: [PATCH] Difficulty affects all AI yields now, which should widen the difficulty range - easy difficulties are now easier, and hard ones are harder --- android/assets/jsons/Difficulties.json | 32 +++++++++---------- android/assets/jsons/Units.json | 4 +-- android/build.gradle | 2 +- .../com/unciv/logic/city/CityConstructions.kt | 3 -- core/src/com/unciv/logic/city/CityStats.kt | 20 ++++++++++-- .../logic/civilization/CivilizationInfo.kt | 2 +- .../com/unciv/models/gamebasics/Difficulty.kt | 4 +-- 7 files changed, 40 insertions(+), 27 deletions(-) diff --git a/android/assets/jsons/Difficulties.json b/android/assets/jsons/Difficulties.json index 81b9ada3c2..6bbdd715f8 100644 --- a/android/assets/jsons/Difficulties.json +++ b/android/assets/jsons/Difficulties.json @@ -5,8 +5,8 @@ researchCostModifier:0.9, unhappinessModifier:0.4, 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 + aiUnitMaintenanceModifier:1, + aiYieldModifier:0.6, // Replaces "Construction rate" and "Create rate" in original config aiFreeTechs:[], aiUnhappinessModifier:1 }, @@ -16,8 +16,8 @@ researchCostModifier:0.95, unhappinessModifier:0.6, aiCityGrowthModifier:1.3, - aiUnitMaintainanceModifier:1, - aiConstructionModifier:0.75, + aiUnitMaintenanceModifier:1, + aiYieldModifier:0.75, aiFreeTechs:[], aiUnhappinessModifier:1 }, @@ -27,8 +27,8 @@ researchCostModifier:1, unhappinessModifier:0.75, aiCityGrowthModifier:1.1, - aiUnitMaintainanceModifier:1, - aiConstructionModifier:0.9, + aiUnitMaintenanceModifier:1, + aiYieldModifier:0.9, aiFreeTechs:[], aiUnhappinessModifier:1 }, @@ -38,8 +38,8 @@ researchCostModifier:1, unhappinessModifier:1, aiCityGrowthModifier:1, - aiUnitMaintainanceModifier:0.85, - aiConstructionModifier:1, + aiUnitMaintenanceModifier:0.85, + aiYieldModifier:1, aiFreeTechs:[], aiUnhappinessModifier:1 }, @@ -49,8 +49,8 @@ researchCostModifier:1.1, unhappinessModifier:1, aiCityGrowthModifier:0.9, - aiUnitMaintainanceModifier:0.8, - aiConstructionModifier:1.15, + aiUnitMaintenanceModifier:0.8, + aiYieldModifier:1.15, aiFreeTechs:["Pottery"], aiUnhappinessModifier:0.9 }, @@ -60,8 +60,8 @@ researchCostModifier:1.2, unhappinessModifier:1, aiCityGrowthModifier:0.85, - aiUnitMaintainanceModifier:0.75, - aiConstructionModifier:1.25, + aiUnitMaintenanceModifier:0.75, + aiYieldModifier:1.25, aiFreeTechs:["Pottery","Animal Husbandry"], aiUnhappinessModifier:0.85 }, @@ -71,8 +71,8 @@ researchCostModifier:1.3, unhappinessModifier:1, aiCityGrowthModifier:0.75, - aiUnitMaintainanceModifier:0.65, - aiConstructionModifier:1.5, + aiUnitMaintenanceModifier:0.65, + aiYieldModifier:1.5, aiFreeTechs:["Pottery","Animal Husbandry","Mining"], aiUnhappinessModifier:0.75 }, @@ -82,8 +82,8 @@ researchCostModifier:1.5, unhappinessModifier:1, aiCityGrowthModifier:0.6, - aiUnitMaintainanceModifier:0.5, - aiConstructionModifier:2, + aiUnitMaintenanceModifier:0.5, + aiYieldModifier:2, aiFreeTechs:["Pottery","Animal Husbandry","Mining","The Wheel"], aiUnhappinessModifier:0.6 } diff --git a/android/assets/jsons/Units.json b/android/assets/jsons/Units.json index dd4e5c45b1..ad726a79b7 100644 --- a/android/assets/jsons/Units.json +++ b/android/assets/jsons/Units.json @@ -292,7 +292,7 @@ strength:24, cost: 150, requiredTech:"Gunpowder", - upgradesTo:"Rifleman," + upgradesTo:"Rifleman" obsoleteTech:"Rifling", hurryCostModifier:20 }, @@ -305,7 +305,7 @@ strength:28, cost: 150, requiredTech:"Gunpowder", - upgradesTo:"Rifleman," + upgradesTo:"Rifleman" obsoleteTech:"Rifling", hurryCostModifier:20 }, diff --git a/android/build.gradle b/android/build.gradle index eb9234c415..3a3744a16c 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -21,7 +21,7 @@ android { applicationId "com.unciv.game" minSdkVersion 14 targetSdkVersion 26 - versionCode 170 + versionCode 172 versionName "2.10.9" } diff --git a/core/src/com/unciv/logic/city/CityConstructions.kt b/core/src/com/unciv/logic/city/CityConstructions.kt index 267d5ea184..84def1f7e7 100644 --- a/core/src/com/unciv/logic/city/CityConstructions.kt +++ b/core/src/com/unciv/logic/city/CityConstructions.kt @@ -140,9 +140,6 @@ class CityConstructions { } else currentConstruction = saveCurrentConstruction - var productionToAdd = cityStats.production - if(!cityInfo.civInfo.isPlayerCivilization()) - productionToAdd *= cityInfo.civInfo.gameInfo.getPlayerCivilization().getDifficulty().aiConstructionModifier addProduction(Math.round(cityStats.production)) val productionCost = construction.getProductionCost(cityInfo.civInfo.policies.adoptedPolicies) if (inProgressConstructions[currentConstruction]!! >= productionCost) { diff --git a/core/src/com/unciv/logic/city/CityStats.kt b/core/src/com/unciv/logic/city/CityStats.kt index 9563fa46d6..9b768ab5b0 100644 --- a/core/src/com/unciv/logic/city/CityStats.kt +++ b/core/src/com/unciv/logic/city/CityStats.kt @@ -87,6 +87,23 @@ class CityStats { return stats } + private fun getStatPercentBonusesFromDifficulty(): Stats { + val stats = Stats() + + val civ = cityInfo.civInfo + if (!civ.isPlayerCivilization()) { + val modifier = civ.gameInfo.getPlayerCivilization().getDifficulty().aiYieldModifier + stats.production += modifier + stats.science += modifier + stats.food += modifier + stats.gold += modifier + stats.culture += modifier + } + + return stats + } + + private fun getGrowthBonusFromPolicies(): Float { var bonus = 0f if (cityInfo.civInfo.policies.isAdopted("Landed Elite") && cityInfo.isCapital()) @@ -258,14 +275,13 @@ class CityStats { newStatPercentBonusList["Railroad"]=getStatPercentBonusesFromRailroad() newStatPercentBonusList["Marble"]=getStatPercentBonusesFromMarble() newStatPercentBonusList["Computers"]=getStatPercentBonusesFromComputers() + newStatPercentBonusList["Difficutly"]=getStatPercentBonusesFromDifficulty() statPercentBonusList=newStatPercentBonusList val statPercentBonuses = Stats() for(bonus in statPercentBonusList.values) statPercentBonuses.add(bonus) - //val stats = Stats() for (stat in newBaseStatList.values) stat.production *= 1 + statPercentBonuses.production / 100 - //stats.production *= 1 + statPercentBonuses.production / 100 // So they get bonuses for production and gold/science val statsFromProduction = getStatsFromProduction(newBaseStatList.values.map { it.production }.sum()) newBaseStatList["Construction"] = statsFromProduction diff --git a/core/src/com/unciv/logic/civilization/CivilizationInfo.kt b/core/src/com/unciv/logic/civilization/CivilizationInfo.kt index c197c5fd48..ff36d845af 100644 --- a/core/src/com/unciv/logic/civilization/CivilizationInfo.kt +++ b/core/src/com/unciv/logic/civilization/CivilizationInfo.kt @@ -138,7 +138,7 @@ class CivilizationInfo { var cost = baseUnitCost*totalPaidUnits*(1+gameProgress) cost = cost.pow(1+gameProgress/3) // Why 3? To spread 1 to 1.33 if(!isPlayerCivilization()) - cost *= gameInfo.getPlayerCivilization().getDifficulty().aiUnitMaintainanceModifier + cost *= gameInfo.getPlayerCivilization().getDifficulty().aiUnitMaintenanceModifier if(policies.isAdopted("Autocracy")) cost = cost*0.66f return cost.toInt() } diff --git a/core/src/com/unciv/models/gamebasics/Difficulty.kt b/core/src/com/unciv/models/gamebasics/Difficulty.kt index 2b514a9232..66ad532d87 100644 --- a/core/src/com/unciv/models/gamebasics/Difficulty.kt +++ b/core/src/com/unciv/models/gamebasics/Difficulty.kt @@ -9,8 +9,8 @@ class Difficulty: INamed { var researchCostModifier:Float = 1f var unhappinessModifier = 1f var aiCityGrowthModifier = 1f - var aiUnitMaintainanceModifier = 1f - var aiConstructionModifier = 1f + var aiUnitMaintenanceModifier = 1f + var aiYieldModifier = 1f var aiFreeTechs = ArrayList() var aiUnhappinessModifier = 1f } \ No newline at end of file