|
@@ -1718,22 +1718,25 @@ bool CGHeroInstance::isMissionCritical() const
|
|
|
{
|
|
|
for(const TriggeredEvent & event : IObjectInterface::cb->getMapHeader()->triggeredEvents)
|
|
|
{
|
|
|
- if(event.trigger.test([&](const EventCondition & condition)
|
|
|
+ if (event.effect.type != EventEffect::DEFEAT)
|
|
|
+ continue;
|
|
|
+
|
|
|
+ auto const & testFunctor = [&](const EventCondition & condition)
|
|
|
{
|
|
|
if ((condition.condition == EventCondition::CONTROL || condition.condition == EventCondition::HAVE_0) && condition.object)
|
|
|
{
|
|
|
const auto * hero = dynamic_cast<const CGHeroInstance *>(condition.object);
|
|
|
return (hero != this);
|
|
|
}
|
|
|
- else if(condition.condition == EventCondition::IS_HUMAN)
|
|
|
- {
|
|
|
+
|
|
|
+ if(condition.condition == EventCondition::IS_HUMAN)
|
|
|
return true;
|
|
|
- }
|
|
|
+
|
|
|
return false;
|
|
|
- }))
|
|
|
- {
|
|
|
+ };
|
|
|
+
|
|
|
+ if(event.trigger.test(testFunctor))
|
|
|
return true;
|
|
|
- }
|
|
|
}
|
|
|
return false;
|
|
|
}
|