mirror of
https://github.com/vcmi/vcmi.git
synced 2025-09-16 09:26:28 +02:00
Merge pull request #4259 from vcmi/fix-4203
BattleAI: fix moving to unreachable in case of back-to-back 2-hex
This commit is contained in:
@@ -66,8 +66,24 @@ uint32_t ReachabilityInfo::distToNearestNeighbour(
|
||||
|
||||
if(attacker->doubleWide())
|
||||
{
|
||||
vstd::concatenate(attackableHexes, battle::Unit::getHexes(defender->occupiedHex(), true, attacker->unitSide()));
|
||||
if(defender->doubleWide())
|
||||
{
|
||||
// It can be back to back attack o==o or head to head =oo=.
|
||||
// In case of back-to-back the distance between heads (unit positions) may be up to 3 tiles
|
||||
vstd::concatenate(attackableHexes, battle::Unit::getHexes(defender->occupiedHex(), true, defender->unitSide()));
|
||||
}
|
||||
else
|
||||
{
|
||||
vstd::concatenate(attackableHexes, battle::Unit::getHexes(defender->getPosition(), true, defender->unitSide()));
|
||||
}
|
||||
}
|
||||
|
||||
vstd::removeDuplicates(attackableHexes);
|
||||
|
||||
vstd::erase_if(attackableHexes, [defender](BattleHex h) -> bool
|
||||
{
|
||||
return h.getY() != defender->getPosition().getY() || !h.isAvailable();
|
||||
});
|
||||
|
||||
return distToNearestNeighbour(attackableHexes, chosenHex);
|
||||
}
|
||||
|
Reference in New Issue
Block a user