diff --git a/AI/Nullkiller/AIGateway.cpp b/AI/Nullkiller/AIGateway.cpp index 795ddbd8a..9ce3ddeba 100644 --- a/AI/Nullkiller/AIGateway.cpp +++ b/AI/Nullkiller/AIGateway.cpp @@ -1331,17 +1331,32 @@ bool AIGateway::moveHeroToTile(int3 dst, HeroPtr h) auto doChannelProbing = [&]() -> void { auto currentPos = h->visitablePos(); - auto currentExit = getObj(currentPos, true)->id; + auto currentTeleport = getObj(currentPos, true); - status.setChannelProbing(true); - for(auto exit : teleportChannelProbingList) - doTeleportMovement(exit, int3(-1)); - teleportChannelProbingList.clear(); - status.setChannelProbing(false); + if(currentTeleport) + { + auto currentExit = currentTeleport->id; - doTeleportMovement(currentExit, currentPos); + status.setChannelProbing(true); + for(auto exit : teleportChannelProbingList) + doTeleportMovement(exit, int3(-1)); + teleportChannelProbingList.clear(); + status.setChannelProbing(false); + + doTeleportMovement(currentExit, currentPos); + } + else + { + logAi->debug("Unexpected channel probbing at " + currentPos.toString()); + + teleportChannelProbingList.clear(); + status.setChannelProbing(false); + } }; + teleportChannelProbingList.clear(); + status.setChannelProbing(false); + for(; i > 0; i--) { int3 currentCoord = path.nodes[i].coord;