From 88585bcf7d147a04c23038e8403c9d847ac02c88 Mon Sep 17 00:00:00 2001 From: OptimizedForDensity <105244635+OptimizedForDensity@users.noreply.github.com> Date: Mon, 16 May 2022 10:37:05 -0400 Subject: [PATCH] Fix MayWithdraw modifier calculation (#6829) * Fix MayWithdraw modifier calculation * Readability changes Co-authored-by: OptimizedForDensity <> --- core/src/com/unciv/logic/battle/Battle.kt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/core/src/com/unciv/logic/battle/Battle.kt b/core/src/com/unciv/logic/battle/Battle.kt index 54cfd252a5..3020fbf863 100644 --- a/core/src/com/unciv/logic/battle/Battle.kt +++ b/core/src/com/unciv/logic/battle/Battle.kt @@ -77,7 +77,8 @@ object Battle { // Withdraw from melee ability if (attacker is MapUnitCombatant && attacker.isMelee() && defender is MapUnitCombatant) { val withdrawUniques = defender.unit.getMatchingUniques(UniqueType.MayWithdraw) - val baseWithdrawChance = 100-withdrawUniques.fold(100) { probability, unique -> probability * (100-unique.params[0].toInt()) } + val combinedProbabilityToStayPut = withdrawUniques.fold(100) { probabilityToStayPut, unique -> probabilityToStayPut * (100-unique.params[0].toInt()) / 100 } + val baseWithdrawChance = 100 - combinedProbabilityToStayPut // If a mod allows multiple withdraw properties, they stack multiplicatively if (baseWithdrawChance != 0 && doWithdrawFromMeleeAbility(attacker, defender, baseWithdrawChance)) return }