From 140753e9c41341fe4c753e4719b3672c75469ee1 Mon Sep 17 00:00:00 2001 From: Yair Morgenstern Date: Tue, 5 Nov 2019 18:16:37 +0200 Subject: [PATCH] Resolved #1302 - captured settlers are converted workers as per original Civ V --- android/build.gradle | 4 ++-- core/src/com/unciv/logic/battle/Battle.kt | 17 +++++++++++------ 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/android/build.gradle b/android/build.gradle index efc75dafcf..f8ae173e13 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -21,8 +21,8 @@ android { applicationId "com.unciv.app" minSdkVersion 14 targetSdkVersion 29 - versionCode 319 - versionName "3.1.13" + versionCode 320 + versionName "3.2.0" } // Had to add this crap for Travis to build, it wanted to sign the app diff --git a/core/src/com/unciv/logic/battle/Battle.kt b/core/src/com/unciv/logic/battle/Battle.kt index 8fe15e7666..220f509c5d 100644 --- a/core/src/com/unciv/logic/battle/Battle.kt +++ b/core/src/com/unciv/logic/battle/Battle.kt @@ -255,10 +255,7 @@ class Battle(val gameInfo:GameInfo) { private fun captureCivilianUnit(attacker: ICombatant, defender: ICombatant){ // barbarians don't capture civilians - // City-states & OCC don't capture settlers - if(attacker.getCivInfo().isBarbarian() - || ((attacker.getCivInfo().isCityState() || attacker.getCivInfo().isPlayerOneCityChallenger()) - && defender.getName()==Constants.settler)){ + if(attacker.getCivInfo().isBarbarian()){ defender.takeDamage(100) return } @@ -272,8 +269,16 @@ class Battle(val gameInfo:GameInfo) { capturedUnit.civInfo.addNotification("An enemy ["+attacker.getName()+"] has captured our ["+defender.getName()+"]", defender.getTile().position, Color.RED) - capturedUnit.civInfo.removeUnit(capturedUnit) - capturedUnit.assignOwner(attacker.getCivInfo()) + // Apparently in Civ V, captured settlers are converted to workers. + if(capturedUnit.name==Constants.settler){ + val tile = capturedUnit.getTile() + capturedUnit.destroy() + attacker.getCivInfo().placeUnitNearTile(tile.position, Constants.worker) + } + else { + capturedUnit.civInfo.removeUnit(capturedUnit) + capturedUnit.assignOwner(attacker.getCivInfo()) + } capturedUnit.updateVisibleTiles() }