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:
@@ -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)
|
||||||
|
Reference in New Issue
Block a user