Resolved #3476 - captured civilian units can no longer move on the same turn

This commit is contained in:
Yair Morgenstern
2020-12-29 19:57:28 +02:00
parent 03ddd3c410
commit 2ff345b6a6

View File

@ -132,7 +132,7 @@ object Battle {
var damageToAttacker = BattleDamage.calculateDamageToAttacker(attacker, attacker.getTile(), defender) var damageToAttacker = BattleDamage.calculateDamageToAttacker(attacker, attacker.getTile(), defender)
if (defender.getUnitType().isCivilian() && attacker.isMelee()) { if (defender.getUnitType().isCivilian() && attacker.isMelee()) {
captureCivilianUnit(attacker, defender) captureCivilianUnit(attacker, defender as MapUnitCombatant)
} else if (attacker.isRanged()) { } else if (attacker.isRanged()) {
defender.takeDamage(damageToDefender) // straight up defender.takeDamage(damageToDefender) // straight up
} else { } else {
@ -318,7 +318,7 @@ object Battle {
return null return null
} }
private fun captureCivilianUnit(attacker: ICombatant, defender: ICombatant){ private fun captureCivilianUnit(attacker: ICombatant, defender: MapUnitCombatant) {
// barbarians don't capture civilians // barbarians don't capture civilians
if (attacker.getCivInfo().isBarbarian() if (attacker.getCivInfo().isBarbarian()
|| (defender as MapUnitCombatant).unit.hasUnique("Uncapturable")) { || (defender as MapUnitCombatant).unit.hasUnique("Uncapturable")) {
@ -338,10 +338,10 @@ object Battle {
val tile = capturedUnit.getTile() val tile = capturedUnit.getTile()
capturedUnit.destroy() capturedUnit.destroy()
attacker.getCivInfo().placeUnitNearTile(tile.position, Constants.worker) attacker.getCivInfo().placeUnitNearTile(tile.position, Constants.worker)
} } else {
else {
capturedUnit.civInfo.removeUnit(capturedUnit) capturedUnit.civInfo.removeUnit(capturedUnit)
capturedUnit.assignOwner(attacker.getCivInfo()) capturedUnit.assignOwner(attacker.getCivInfo())
capturedUnit.currentMovement = 0f
} }
destroyIfDefeated(defenderCiv, attacker.getCivInfo()) destroyIfDefeated(defenderCiv, attacker.getCivInfo())