diff --git a/lib/HeroBonus.cpp b/lib/HeroBonus.cpp index 6fc322ceb..0d356c1ed 100644 --- a/lib/HeroBonus.cpp +++ b/lib/HeroBonus.cpp @@ -791,14 +791,10 @@ void CBonusSystemNode::detachFrom(CBonusSystemNode *parent) CBonusSystemNode::treeHasChanged(); } -void CBonusSystemNode::removeBonusesRecursive(const CSelector &s) +void CBonusSystemNode::removeBonusesRecursive(const CSelector & s) { - BonusList bl; - exportedBonuses.getBonuses(bl, s, Selector::all); - for(auto b : bl) - removeBonus(b); - - for(CBonusSystemNode *child : children) + removeBonuses(s); + for(CBonusSystemNode * child : children) child->removeBonusesRecursive(s); } @@ -850,10 +846,10 @@ void CBonusSystemNode::removeBonus(const std::shared_ptr& b) CBonusSystemNode::treeHasChanged(); } -void CBonusSystemNode::removeBonuses(const CSelector &selector) +void CBonusSystemNode::removeBonuses(const CSelector & selector) { BonusList toRemove; - exportedBonuses.getBonuses(toRemove, selector); + exportedBonuses.getBonuses(toRemove, selector, Selector::all); for(auto bonus : toRemove) removeBonus(bonus); } diff --git a/lib/HeroBonus.h b/lib/HeroBonus.h index 5659470d9..7455c05fc 100644 --- a/lib/HeroBonus.h +++ b/lib/HeroBonus.h @@ -709,8 +709,8 @@ public: void propagateBonus(std::shared_ptr b); void unpropagateBonus(std::shared_ptr b); void removeBonus(const std::shared_ptr& b); - void removeBonuses(const CSelector &selector); - void removeBonusesRecursive(const CSelector &s); + void removeBonuses(const CSelector & selector); + void removeBonusesRecursive(const CSelector & s); void newRedDescendant(CBonusSystemNode *descendant); //propagation needed void removedRedDescendant(CBonusSystemNode *descendant); //de-propagation needed