1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-08-13 19:54:17 +02:00

Merge pull request #519 from dydzio0614/ObjectRemovalFix

Do not evaluate goals related to removed hero
This commit is contained in:
Alexander Shishkin
2018-11-08 05:26:06 +03:00
committed by GitHub

View File

@@ -2825,6 +2825,30 @@ void VCAI::lostHero(HeroPtr h)
{ {
vstd::erase_if_present(heroVec.second, h); vstd::erase_if_present(heroVec.second, h);
} }
//remove goals with removed hero assigned from main loop
vstd::erase_if(ultimateGoalsFromBasic, [&](const std::pair<Goals::TSubgoal, Goals::TGoalVec> & x) -> bool
{
if(x.first->hero == h)
return true;
else
return false;
});
auto removedHeroGoalPredicate = [&](const Goals::TSubgoal & x) ->bool
{
if(x->hero == h)
return true;
else
return false;
};
vstd::erase_if(basicGoals, removedHeroGoalPredicate);
vstd::erase_if(goalsToAdd, removedHeroGoalPredicate);
vstd::erase_if(goalsToRemove, removedHeroGoalPredicate);
for(auto goal : ultimateGoalsFromBasic)
vstd::erase_if(goal.second, removedHeroGoalPredicate);
} }
void VCAI::answerQuery(QueryID queryID, int selection) void VCAI::answerQuery(QueryID queryID, int selection)