@@ -121,6 +121,8 @@ void CPathfinder::calculatePaths()
movement = hlp->getMaxMovePoints(source.node->layer);
if(!hlp->passOneTurnLimitCheck(source))
continue;
+ if(turn >= hlp->options.turnLimit)
+ continue;
}
source.isInitialPosition = source.nodeHero == hlp->hero;
@@ -30,6 +30,7 @@ PathfinderOptions::PathfinderOptions()
, lightweightFlyingMode(false)
, oneTurnSpecialLayersLimit(true)
, originalMovementRules(false)
+ , turnLimit(std::numeric_limits<uint8_t>::max())
{
@@ -68,6 +68,9 @@ struct DLL_LINKAGE PathfinderOptions
/// I find it's reasonable limitation, but it's will make some movements more expensive than in H3.
bool originalMovementRules;
+ /// Max number of turns to compute. Default = infinite
+ uint8_t turnLimit;
+
PathfinderOptions();
};