From 433c58f8b1d4125abab5a11d0fca5498a0440e7d Mon Sep 17 00:00:00 2001 From: Xilmi Date: Mon, 23 Sep 2024 18:42:31 +0200 Subject: [PATCH] Workaround for previously masked issue A recent fix made it so that towns that weren't supposed to be defended are now no longer defended. This caused scouts with minimal army to also go after them in addition to the main-hero. Problem is when two heroes go for the same town it's a massive waste of movement-points. So for the time being only main-heroes will go for faraway captures. Better solution would be to memorize who was sent to attack what on the same turn and filter out tasks going for the same target. --- AI/Nullkiller/Engine/PriorityEvaluator.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/AI/Nullkiller/Engine/PriorityEvaluator.cpp b/AI/Nullkiller/Engine/PriorityEvaluator.cpp index 1d343d028..456f8af0d 100644 --- a/AI/Nullkiller/Engine/PriorityEvaluator.cpp +++ b/AI/Nullkiller/Engine/PriorityEvaluator.cpp @@ -1412,6 +1412,9 @@ float PriorityEvaluator::evaluate(Goals::TSubgoal task, int priorityTier) } case PriorityTier::KILL: //Take towns / kill heroes that are further away { + //TODO: This is a workaround for duplicating the same capture town-task being given to several heroes. A better solution ought to be found. + if (evaluationContext.movementCostByRole[HeroRole::MAIN] == 0) + return 0; if (evaluationContext.turn > 0 && evaluationContext.isHero) return 0; if (arriveNextWeek && evaluationContext.isEnemy)