فهرست منبع

Merge pull request #3249 from vcmi/fix-ai-pathfinder

Fix ai pathfinder
Ivan Savenko 1 سال پیش
والد
کامیت
aa2934853f
2فایلهای تغییر یافته به همراه8 افزوده شده و 8 حذف شده
  1. 2 7
      AI/Nullkiller/Pathfinding/Rules/AILayerTransitionRule.cpp
  2. 6 1
      client/adventureMap/AdventureMapInterface.cpp

+ 2 - 7
AI/Nullkiller/Pathfinding/Rules/AILayerTransitionRule.cpp

@@ -91,12 +91,12 @@ namespace AIPathfinding
 
 		for(const CGHeroInstance * hero : nodeStorage->getAllHeroes())
 		{
-			if(hero->canCastThisSpell(waterWalk.toSpell()))
+			if(hero->canCastThisSpell(waterWalk.toSpell()) && hero->mana >= hero->getSpellCost(waterWalk.toSpell()))
 			{
 				waterWalkingActions[hero] = std::make_shared<WaterWalkingAction>(hero);
 			}
 
-			if(hero->canCastThisSpell(airWalk.toSpell()))
+			if(hero->canCastThisSpell(airWalk.toSpell()) && hero->mana >= hero->getSpellCost(airWalk.toSpell()))
 			{
 				airWalkingActions[hero] = std::make_shared<AirWalkingAction>(hero);
 			}
@@ -179,11 +179,6 @@ namespace AIPathfinding
 	{
 		bool result = false;
 
-		if(!specialAction->canAct(nodeStorage->getAINode(source.node)))
-		{
-			return false;
-		}
-
 		nodeStorage->updateAINode(destination.node, [&](AIPathNode * node)
 			{
 				auto castNodeOptional = nodeStorage->getOrCreateNode(

+ 6 - 1
client/adventureMap/AdventureMapInterface.cpp

@@ -441,7 +441,12 @@ void AdventureMapInterface::onPlayerTurnStarted(PlayerColor playerID)
 		if(auto iw = GH.windows().topWindow<CInfoWindow>())
 			iw->close();
 
-		hotkeyEndingTurn();
+		boost::thread newThread([this]()
+			{
+				hotkeyEndingTurn();
+			});
+
+		newThread.detach();
 	}
 }