std::vector<std::shared_ptr<constCObstacleInstance>>battleGetAllObstaclesOnPos(BattleHextile,boolonlyBlocking=true)const;//blocking obstacles makes tile inaccessible, others cause special effects (like Land Mines, Moat, Quicksands)
boolbattleCanAttack(constCStack*stack,constCStack*target,BattleHexdest)const;//determines if stack with given ID can attack target at the selected destination
TDmgRangecalculateDmgRange(constBattleAttackInfo&info)const;//charge - number of hexes travelled before attack (for champion's jousting); returns pair <min dmg, max dmg>
TDmgRangebattleEstimateDamage(constBattleAttackInfo&bai,TDmgRange*retaliationDmg=nullptr)const;//estimates damage dealt by attacker to defender; it may be not precise especially when stack has randomly working bonuses; returns pair <min dmg, max dmg>
TDmgRangebattleEstimateDamage(constCStack*attacker,constCStack*defender,TDmgRange*retaliationDmg=nullptr)const;//estimates damage dealt by attacker to defender; it may be not precise especially when stack has randomly working bonuses; returns pair <min dmg, max dmg>
EWallPart::EWallPartbattleHexToWallPart(BattleHexhex)const;//returns part of destructible wall / gate / keep under given hex or -1 if not found
boolisWallPartPotentiallyAttackable(EWallPart::EWallPartwallPart)const;// returns true if the wall part is potentially attackable (independent of wall state), false if not
si8battleMinSpellLevel(ui8side)const;//calculates maximum spell level possible to be cast on battlefield - takes into account artifacts of both heroes; if no effects are set, 0 is returned
si8battleMaxSpellLevel(ui8side)const;//calculates minimum spell level possible to be cast on battlefield - takes into account artifacts of both heroes; if no effects are set, 0 is returned
ESpellCastProblem::ESpellCastProblembattleCanCastSpell(constspells::Caster*caster,spells::Modemode)const;//returns true if there are no general issues preventing from casting a spell
si8battleCanTeleportTo(constbattle::Unit*stack,BattleHexdestHex,inttelportLevel)const;//checks if teleportation of given stack to given position can take place
si8battleGetTacticDist()const;//returns tactic distance for calling player or 0 if this player is not in tactic phase (for ALL_KNOWING actual distance for tactic side)
std::vector<constbattle::Unit*>getAttackedBattleUnits(constbattle::Unit*attacker,BattleHexdestinationTile,boolrangedAttack,BattleHexattackerPos=BattleHex::INVALID)const;//calculates range of multi-hex attacks
std::set<constCStack*>getAttackedCreatures(constCStack*attacker,BattleHexdestinationTile,boolrangedAttack,BattleHexattackerPos=BattleHex::INVALID)const;//calculates range of multi-hex attacks
boolisToReverse(BattleHexhexFrom,BattleHexhexTo,boolcurDir/*if true, creature is in attacker's direction*/,booltoDoubleWide,booltoDir)const;//determines if creature should be reversed (it stands on hexFrom and should 'see' hexTo)
boolisToReverseHlp(BattleHexhexFrom,BattleHexhexTo,boolcurDir)const;//helper for isToReverse