From ae1629fcb046dea05fff8c9ac961ee5eda6746e8 Mon Sep 17 00:00:00 2001 From: Duan Tao Date: Wed, 26 Dec 2018 23:30:21 +0800 Subject: [PATCH] AI uses great generals. I hope. --- .../unciv/logic/automation/UnitAutomation.kt | 22 ++++++++++++++++++- .../unciv/ui/worldscreen/unit/UnitActions.kt | 2 +- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/core/src/com/unciv/logic/automation/UnitAutomation.kt b/core/src/com/unciv/logic/automation/UnitAutomation.kt index 156c3bada6..e3ac79e787 100644 --- a/core/src/com/unciv/logic/automation/UnitAutomation.kt +++ b/core/src/com/unciv/logic/automation/UnitAutomation.kt @@ -33,7 +33,9 @@ class UnitAutomation{ return SpecificUnitAutomation().automateWorkBoats(unit) } - if(unit.name.startsWith("Great") + if (unit.name == "Great General") { + return SpecificUnitAutomation().automateGeneral(unit) + } else if(unit.name.startsWith("Great") && unit.name in GreatPersonManager().statToGreatPersonMapping.values){ // So "Great War Infantry" isn't caught here return SpecificUnitAutomation().automateGreatPerson(unit)// I don't know what to do with you yet. } @@ -397,6 +399,24 @@ class SpecificUnitAutomation{ else UnitAutomation().explore(unit, unit.getDistanceToTiles()) } + fun automateGeneral(unit: MapUnit){ + val militantToCompany = unit.civInfo.getCivUnits() + .firstOrNull { val tile = it.currentTile + it.type.isLandUnit() && it.getMaxMovement() <= 2.0f && tile.civilianUnit==null + && unit.canMoveTo(tile) && unit.movementAlgs().canReach(tile) } + if(militantToCompany!=null) { + unit.movementAlgs().headTowards(militantToCompany.currentTile) + return + } + + val cityToGarison = unit.civInfo.cities.filter {it.getCenterTile().civilianUnit == null} + .minBy { it.getCenterTile().arialDistanceTo(unit.currentTile) } + if (cityToGarison != null) { + unit.movementAlgs().headTowards(cityToGarison.getCenterTile()) + return + } + return + } fun rankTileAsCityCenter(tileInfo: TileInfo, nearbyTileRankings: Map): Float { val bestTilesFromOuterLayer = tileInfo.getTilesAtDistance(2) diff --git a/core/src/com/unciv/ui/worldscreen/unit/UnitActions.kt b/core/src/com/unciv/ui/worldscreen/unit/UnitActions.kt index 05257bfc68..270910e39d 100644 --- a/core/src/com/unciv/ui/worldscreen/unit/UnitActions.kt +++ b/core/src/com/unciv/ui/worldscreen/unit/UnitActions.kt @@ -162,7 +162,7 @@ class UnitActions { }.sound("chimes") } - if (unit.name == "Great Artist" && !unit.isEmbarked()) { + if ((unit.name == "Great Artist" || unit.name == "Great General") && !unit.isEmbarked()) { actionList += UnitAction( "Start Golden Age",unit.currentMovement != 0f ) { unit.civInfo.goldenAges.enterGoldenAge()