From 7f0b0bd1b5daddbb4809ab39ff7340ee7d29a37d Mon Sep 17 00:00:00 2001 From: ArseniyShestakov Date: Mon, 9 Nov 2015 15:48:07 +0300 Subject: [PATCH] Bonus system: use updateBonuses in battleTurnPasseed --- lib/HeroBonus.cpp | 22 ++++------------------ 1 file changed, 4 insertions(+), 18 deletions(-) diff --git a/lib/HeroBonus.cpp b/lib/HeroBonus.cpp index e9ac989a8..9b89111db 100644 --- a/lib/HeroBonus.cpp +++ b/lib/HeroBonus.cpp @@ -769,12 +769,9 @@ void CBonusSystemNode::updateBonuses(const CSelector &s) exportedBonuses.getBonuses(bl, s); for(Bonus *b : bl) { - if(b->duration & Bonus::N_DAYS) - { - b->turnsRemain--; - if(b->turnsRemain <= 0) - removeBonus(b); - } + b->turnsRemain--; + if(b->turnsRemain <= 0) + removeBonus(b); } for(CBonusSystemNode *child : children) @@ -968,18 +965,7 @@ void CBonusSystemNode::getRedDescendants(TNodes &out) void CBonusSystemNode::battleTurnPassed() { - BonusList bonusesCpy = exportedBonuses; //copy, because removing bonuses invalidates iters - for (auto & elem : bonusesCpy) - { - Bonus *b = elem; - - if(b->duration & Bonus::N_TURNS) - { - b->turnsRemain--; - if(b->turnsRemain <= 0) - removeBonus(b); - } - } + updateBonuses(Bonus::NTurns); } void CBonusSystemNode::exportBonus(Bonus * b)