diff --git a/AI/VCAI/VCAI.cpp b/AI/VCAI/VCAI.cpp index 4510529ef..666c9c8f7 100644 --- a/AI/VCAI/VCAI.cpp +++ b/AI/VCAI/VCAI.cpp @@ -1987,7 +1987,6 @@ bool VCAI::moveHeroToTile(int3 dst, HeroPtr h) if(teleportChannelProbingList.size()) doChannelProbing(); } - ret = !i; } if (h) { @@ -2002,6 +2001,8 @@ bool VCAI::moveHeroToTile(int3 dst, HeroPtr h) completeGoal (sptr(Goals::VisitTile(dst).sethero(h))); //we stepped on some tile, anyway completeGoal (sptr(Goals::ClearWayTo(dst).sethero(h))); + ret = (dst == h->visitablePos()); + if(!ret) //reserve object we are heading towards { auto obj = vstd::frontOrNull(cb->getVisitableObjs(dst)); @@ -2020,7 +2021,7 @@ bool VCAI::moveHeroToTile(int3 dst, HeroPtr h) } void VCAI::tryRealize(Goals::Explore & g) { - throw cannotFulfillGoalException("EXPLORE is not a elementar goal!"); + throw cannotFulfillGoalException("EXPLORE is not an elementar goal!"); } void VCAI::tryRealize(Goals::RecruitHero & g) @@ -2853,7 +2854,7 @@ BattleState AIStatus::getBattle() } void AIStatus::addQuery(QueryID ID, std::string description) -{ +{ if(ID == QueryID(-1)) { logAi->debugStream() << boost::format("The \"query\" has an id %d, it'll be ignored as non-query. Description: %s") % ID % description; @@ -2878,7 +2879,7 @@ void AIStatus::removeQuery(QueryID ID) std::string description = remainingQueries[ID]; remainingQueries.erase(ID); - + cv.notify_all(); logAi->debugStream() << boost::format("Removing query %d - %s. Total queries count: %d") % ID % description % remainingQueries.size(); }