From 208ad1aa27e799acfe76c90f083f10d92e31bfb0 Mon Sep 17 00:00:00 2001 From: Yair Morgenstern Date: Wed, 23 Jun 2021 18:20:56 +0300 Subject: [PATCH] Resolves #3800 in a more generic way --- core/src/com/unciv/logic/battle/Battle.kt | 21 ++++++++------------- 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/core/src/com/unciv/logic/battle/Battle.kt b/core/src/com/unciv/logic/battle/Battle.kt index 96dd7922d6..d24d12b384 100644 --- a/core/src/com/unciv/logic/battle/Battle.kt +++ b/core/src/com/unciv/logic/battle/Battle.kt @@ -99,8 +99,6 @@ object Battle { val unitCost = defeatedUnit.unit.baseUnit.cost val bonusUniquePlaceholderText = "Earn []% of killed [] unit's [] as []" - var goldReward = 0 - var cultureReward = 0 val bonusUniques = ArrayList() bonusUniques.addAll(civUnit.getCivInfo().getMatchingUniques(bonusUniquePlaceholderText)) @@ -109,25 +107,22 @@ object Battle { bonusUniques.addAll(civUnit.unit.getMatchingUniques(bonusUniquePlaceholderText)) } - for (unique in bonusUniques) { if (!defeatedUnit.matchesCategory(unique.params[1])) continue - + val yieldPercent = unique.params[0].toFloat() / 100 val defeatedUnitYieldSourceType = unique.params[2] - val yieldType = unique.params[3] - val yieldTypeSourceAmount = if (defeatedUnitYieldSourceType == "Cost") unitCost else unitStr + val yieldTypeSourceAmount = + if (defeatedUnitYieldSourceType == "Cost") unitCost else unitStr val yieldAmount = (yieldTypeSourceAmount * yieldPercent).toInt() - - if (yieldType == "Gold") - goldReward += yieldAmount - else if (yieldType == "Culture") - cultureReward += yieldAmount + try { + val stat = Stat.valueOf(unique.params[3]) + civUnit.getCivInfo().addStat(stat, yieldAmount) + } catch (ex: Exception) { + } // parameter is not a stat } - civUnit.getCivInfo().policies.addCulture(cultureReward) - civUnit.getCivInfo().addGold(goldReward) } private fun takeDamage(attacker: ICombatant, defender: ICombatant) {