|
|
@@ -59,7 +59,11 @@ std::vector<int> CBattleInfoCallback::battleGetDistances(const CStack * stack, B
|
|
|
if(!hex.isValid())
|
|
|
hex = stack->position;
|
|
|
|
|
|
- std::vector<int> ret;
|
|
|
+ std::vector<int> ret(GameConstants::BFIELD_SIZE, -1); //fill initial ret with -1's
|
|
|
+
|
|
|
+ if(!hex.isValid()) //stack has bad position? probably castle turret, return initial values (they can't move)
|
|
|
+ return ret;
|
|
|
+
|
|
|
bool ac[GameConstants::BFIELD_SIZE] = {0};
|
|
|
std::set<BattleHex> occupyable;
|
|
|
gs->curB->getAccessibilityMap(ac, stack->doubleWide(), stack->attackerOwned, false, occupyable, stack->hasBonusOfType(Bonus::FLYING), stack);
|
|
|
@@ -69,10 +73,8 @@ std::vector<int> CBattleInfoCallback::battleGetDistances(const CStack * stack, B
|
|
|
|
|
|
for(int i=0; i<GameConstants::BFIELD_SIZE; ++i)
|
|
|
{
|
|
|
- if(pr[i] == -1)
|
|
|
- ret.push_back(-1);
|
|
|
- else
|
|
|
- ret.push_back(dist[i]);
|
|
|
+ if(pr[i] != -1)
|
|
|
+ ret[i] = dist[i];
|
|
|
}
|
|
|
|
|
|
if(predecessors)
|