Browse Source

NKAI: fix capturing shipyards

Andrii Danylchenko 1 year ago
parent
commit
26b6d1cf74

+ 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();
 	}
 }