From e5ef66015717aef9b17360b1636f9ff29b3f4c7d Mon Sep 17 00:00:00 2001 From: itanasi <44038014+itanasi@users.noreply.github.com> Date: Sat, 16 Apr 2022 13:04:17 -0700 Subject: [PATCH] Updating XP Rewards. Interception now gives XP (#6543) * Updating XP Rewards to match Civ5 Add isAirUnit() Boolean for ICombatant * Revert Melee XP Co-authored-by: itanasi --- core/src/com/unciv/logic/battle/Battle.kt | 12 ++++++++++-- core/src/com/unciv/logic/battle/ICombatant.kt | 4 ++++ 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/core/src/com/unciv/logic/battle/Battle.kt b/core/src/com/unciv/logic/battle/Battle.kt index 345a49429d..337e4242f0 100644 --- a/core/src/com/unciv/logic/battle/Battle.kt +++ b/core/src/com/unciv/logic/battle/Battle.kt @@ -399,8 +399,14 @@ object Battle { } private fun postBattleAddXp(attacker: ICombatant, defender: ICombatant) { - if (!attacker.isMelee()) { // ranged attack - addXp(attacker, 2, defender) + if (attacker.isAirUnit()) { + addXp(attacker, 4, defender) + addXp(defender, 2, attacker) + } else if (attacker.isRanged()) { // ranged attack + if(defender.isCity()) + addXp(attacker, 3, defender) + else + addXp(attacker, 2, defender) addXp(defender, 2, attacker) } else if (!defender.isCivilian()) // unit was not captured but actually attacked { @@ -804,6 +810,8 @@ object Battle { attacker.takeDamage(damage) interceptor.attacksThisTurn++ + if (damage > 0) + addXp(MapUnitCombatant(interceptor), 2, attacker) val attackerName = attacker.getName() val interceptorName = interceptor.name diff --git a/core/src/com/unciv/logic/battle/ICombatant.kt b/core/src/com/unciv/logic/battle/ICombatant.kt index 2b41c3ff4b..41a76537da 100644 --- a/core/src/com/unciv/logic/battle/ICombatant.kt +++ b/core/src/com/unciv/logic/battle/ICombatant.kt @@ -26,6 +26,10 @@ interface ICombatant { if (this is CityCombatant) return true return (this as MapUnitCombatant).unit.baseUnit.isRanged() } + fun isAirUnit(): Boolean { + if (this is CityCombatant) return false + return (this as MapUnitCombatant).unit.baseUnit.isAirUnit() + } fun isCity(): Boolean { return this is CityCombatant }