From 9b38d0c33e497d9ce4afe328bd8a47bc78b05bc7 Mon Sep 17 00:00:00 2001 From: Yair Morgenstern Date: Wed, 8 Aug 2018 18:34:23 +0300 Subject: [PATCH] Cities conquered in battle lose population --- core/src/com/unciv/logic/automation/UnitAutomation.kt | 1 + core/src/com/unciv/logic/battle/Battle.kt | 2 ++ core/src/com/unciv/logic/map/MapUnit.kt | 3 ++- 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/core/src/com/unciv/logic/automation/UnitAutomation.kt b/core/src/com/unciv/logic/automation/UnitAutomation.kt index d4508ddccd..eed898d6e7 100644 --- a/core/src/com/unciv/logic/automation/UnitAutomation.kt +++ b/core/src/com/unciv/logic/automation/UnitAutomation.kt @@ -218,6 +218,7 @@ class UnitAutomation{ } private fun tryGarrisoningUnit(unit: MapUnit): Boolean { + if(unit.getBaseUnit().unitType.isMelee()) return false // don't garrison melee units, they're not that good at it val reachableCitiesWithoutUnits = unit.civInfo.cities.filter { val centerTile = it.getCenterTile() unit.canMoveTo(centerTile) diff --git a/core/src/com/unciv/logic/battle/Battle.kt b/core/src/com/unciv/logic/battle/Battle.kt index 86efd6a81a..485d1c1eb2 100644 --- a/core/src/com/unciv/logic/battle/Battle.kt +++ b/core/src/com/unciv/logic/battle/Battle.kt @@ -106,6 +106,8 @@ class Battle(val gameInfo:GameInfo=UnCivGame.Current.gameInfo) { private fun conquerCity(city: CityInfo, attacker: ICombatant) { val enemyCiv = city.civInfo attacker.getCivilization().addNotification("We have conquered the city of [${city.name}]!",city.location, Color.RED) + val currentPopulation = city.population.population + if(currentPopulation>1) city.population.population -= 1 + currentPopulation/4 // so from 2-4 population, remove 1, from 5-8, remove 2, etc. city.moveToCiv(attacker.getCivilization()) city.health = city.getMaxHealth() / 2 // I think that cities recover to half health when conquered? city.getCenterTile().apply { diff --git a/core/src/com/unciv/logic/map/MapUnit.kt b/core/src/com/unciv/logic/map/MapUnit.kt index f33d4e388d..2c843d09b2 100644 --- a/core/src/com/unciv/logic/map/MapUnit.kt +++ b/core/src/com/unciv/logic/map/MapUnit.kt @@ -28,7 +28,8 @@ class MapUnit { fun getBaseUnit(): BaseUnit = GameBasics.Units[name]!! fun getMovementString(): String = DecimalFormat("0.#").format(currentMovement.toDouble()) + "/" + maxMovement - @Transient private lateinit var currentTile :TileInfo + @Transient + internal lateinit var currentTile :TileInfo fun getTile(): TileInfo = currentTile fun getDistanceToTiles(): HashMap {