From d2cb7173c10ebd1cdabf57e07427105ad559d7f5 Mon Sep 17 00:00:00 2001 From: Yair Morgenstern Date: Thu, 14 Jun 2018 20:47:23 +0300 Subject: [PATCH] AI now moved ranged units before melee, so that it will attack wil the ranged units first =) --- android/assets/jsons/UnitPromotions.json | 24 +++++++++---------- .../com/unciv/logic/automation/Automation.kt | 16 +++++++++++-- core/src/com/unciv/logic/city/CityInfo.kt | 2 +- 3 files changed, 27 insertions(+), 15 deletions(-) diff --git a/android/assets/jsons/UnitPromotions.json b/android/assets/jsons/UnitPromotions.json index 7a5e3ede38..daad556743 100644 --- a/android/assets/jsons/UnitPromotions.json +++ b/android/assets/jsons/UnitPromotions.json @@ -2,70 +2,70 @@ { name:"Accuracy I", - effect:"Bonus vs units in open terrain +15%", + effect:"Bonus vs units in open terrain 15%", unitTypes:["Siege","Ranged"] } { name:"Accuracy II", prerequisites:["Accuracy I"], - effect:"Bonus vs units in open terrain +15%", + effect:"Bonus vs units in open terrain 15%", unitTypes:["Siege","Ranged"] } { name:"Accuracy III", prerequisites:["Accuracy II"], - effect:"Bonus vs units in open terrain +15%", + effect:"Bonus vs units in open terrain 15%", unitTypes:["Siege","Ranged"] } { name:"Barrage I", - effect:"Bonus vs units in rough terrain +15%", + effect:"Bonus vs units in rough terrain 15%", unitTypes:["Siege","Ranged"] } { name:"Barrage II", prerequisites:["Barrage I"], - effect:"Bonus vs units in rough terrain +15%", + effect:"Bonus vs units in rough terrain 15%", unitTypes:["Siege","Ranged"] } { name:"Barrage III", prerequisites:["Barrage II"], - effect:"Bonus vs units in rough terrain +15%", + effect:"Bonus vs units in rough terrain 15%", unitTypes:["Siege","Ranged"] } { name:"Shock I", - effect:"Bonus vs units in open terrain +15%", + effect:"Bonus vs units in open terrain 15%", unitTypes:["Melee","Mounted"] } { name:"Shock II", prerequisites:["Shock I"], - effect:"Bonus vs units in open terrain +15%", + effect:"Bonus vs units in open terrain 15%", unitTypes:["Melee","Mounted"] } { name:"Shock III", prerequisites:["Shock II"], - effect:"Bonus vs units in open terrain +15%", + effect:"Bonus vs units in open terrain 15%", unitTypes:["Melee","Mounted"] } { name:"Drill I", - effect:"Bonus vs units in rough terrain +15%", + effect:"Bonus vs units in rough terrain 15%", unitTypes:["Melee","Mounted"] } { name:"Drill II", prerequisites:["Drill I"], - effect:"Bonus vs units in rough terrain +15%", + effect:"Bonus vs units in rough terrain 15%", unitTypes:["Melee","Mounted"] } { name:"Drill III", prerequisites:["Drill II"], - effect:"Bonus vs units in rough terrain +15%", + effect:"Bonus vs units in rough terrain 15%", unitTypes:["Melee","Mounted"] } { diff --git a/core/src/com/unciv/logic/automation/Automation.kt b/core/src/com/unciv/logic/automation/Automation.kt index b553d3888d..e726b03baf 100644 --- a/core/src/com/unciv/logic/automation/Automation.kt +++ b/core/src/com/unciv/logic/automation/Automation.kt @@ -4,10 +4,11 @@ import com.badlogic.gdx.graphics.Color import com.unciv.logic.city.CityConstructions import com.unciv.logic.city.CityInfo import com.unciv.logic.civilization.CivilizationInfo +import com.unciv.logic.map.MapUnit import com.unciv.logic.map.TileInfo -import com.unciv.models.gamebasics.unit.UnitType import com.unciv.models.gamebasics.GameBasics import com.unciv.models.gamebasics.unit.Unit +import com.unciv.models.gamebasics.unit.UnitType import com.unciv.ui.utils.getRandom class Automation { @@ -41,10 +42,21 @@ class Automation { civInfo.policies.adopt(policyToAdopt) } + val rangedUnits = mutableListOf() + val meleeUnits = mutableListOf() + val civilianUnits = mutableListOf() + for (unit in civInfo.getCivUnits()) { - UnitAutomation().automateUnitMoves(unit) + val unitType = unit.getBaseUnit().unitType + if(unitType.isRanged()) rangedUnits.add(unit) + else if(unitType.isMelee()) meleeUnits.add(unit) + else civilianUnits.add(unit) } + for (unit in rangedUnits) UnitAutomation().automateUnitMoves(unit) + for (unit in meleeUnits) UnitAutomation().automateUnitMoves(unit) + for (unit in civilianUnits) UnitAutomation().automateUnitMoves(unit) + // train settler? if (civInfo.cities.any() && civInfo.happiness > 2*civInfo.cities.size +5 diff --git a/core/src/com/unciv/logic/city/CityInfo.kt b/core/src/com/unciv/logic/city/CityInfo.kt index 04e58bfc58..cf6d5f49f7 100644 --- a/core/src/com/unciv/logic/city/CityInfo.kt +++ b/core/src/com/unciv/logic/city/CityInfo.kt @@ -134,7 +134,6 @@ class CityInfo { expansion.nextTurn(stats.culture) if(isBeingRazed){ population.population-- - population.unassignExtraPopulation() if(population.population==0){ civInfo.addNotification("$name has been razed to the ground!",location, Color.RED) civInfo.cities.remove(this) @@ -145,6 +144,7 @@ class CityInfo { val maxHealth =getMaxHealth() health = min(health+maxHealth/10, maxHealth) + population.unassignExtraPopulation() } fun isCapital() = cityConstructions.isBuilt("Palace")