From 525cea1cc94d6e756a6ca1f932a040c7322a99c1 Mon Sep 17 00:00:00 2001 From: 9kgsofrice <65415105+9kgsofrice@users.noreply.github.com> Date: Wed, 2 Dec 2020 20:45:44 +0000 Subject: [PATCH] "Uncapturable" unique (#3388) * WIP * "Uncapturable" unique; civilians will be destroyed instead of captured --- core/src/com/unciv/logic/battle/Battle.kt | 5 +++-- core/src/com/unciv/ui/worldscreen/bottombar/BattleTable.kt | 5 ++++- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/core/src/com/unciv/logic/battle/Battle.kt b/core/src/com/unciv/logic/battle/Battle.kt index a94dd43c68..8bf6033b9d 100644 --- a/core/src/com/unciv/logic/battle/Battle.kt +++ b/core/src/com/unciv/logic/battle/Battle.kt @@ -333,7 +333,8 @@ object Battle { private fun captureCivilianUnit(attacker: ICombatant, defender: ICombatant){ // barbarians don't capture civilians - if(attacker.getCivInfo().isBarbarian()){ + if(attacker.getCivInfo().isBarbarian() + ||(defender as MapUnitCombatant).unit.hasUnique("Uncapturable")){ defender.takeDamage(100) return } @@ -341,7 +342,7 @@ object Battle { // need to save this because if the unit is captured its owner wil be overwritten val defenderCiv = defender.getCivInfo() - val capturedUnit = (defender as MapUnitCombatant).unit + val capturedUnit = defender.unit capturedUnit.civInfo.addNotification("An enemy ["+attacker.getName()+"] has captured our ["+defender.getName()+"]", defender.getTile().position, Color.RED) diff --git a/core/src/com/unciv/ui/worldscreen/bottombar/BattleTable.kt b/core/src/com/unciv/ui/worldscreen/bottombar/BattleTable.kt index cbee8a395d..0cc2b034d1 100644 --- a/core/src/com/unciv/ui/worldscreen/bottombar/BattleTable.kt +++ b/core/src/com/unciv/ui/worldscreen/bottombar/BattleTable.kt @@ -167,7 +167,10 @@ class BattleTable(val worldScreen: WorldScreen): Table() { if(attacker.isMelee() && (defender.getUnitType().isCivilian() || defender.getUnitType()==UnitType.City && defender.isDefeated())) { add("") - add(if(defender.getUnitType().isCivilian()) "Captured!".tr() else "Occupied!".tr() ) + add(if(defender.getUnitType().isCivilian() + && (defender as MapUnitCombatant).unit.hasUnique("Uncapturable")) "" + else if(defender.getUnitType().isCivilian()) "Captured!".tr() + else "Occupied!".tr()) }