boolbattleCanAttack(constbattle::Unit*stack,constbattle::Unit*target,BattleHexdest)const;//determines if stack with given ID can attack target at the selected destination
boolbattleCanShoot(constbattle::Unit*attacker,BattleHexdest)const;//determines if stack with given ID shoot at the selected destination
boolbattleCanShoot(constbattle::Unit*attacker)const;//determines if stack with given ID shoot in principle
boolbattleIsUnitBlocked(constbattle::Unit*unit)const;//returns true if there is neighboring enemy stack
EWallPartbattleHexToWallPart(BattleHexhex)const;//returns part of destructible wall / gate / keep under given hex or -1 if not found
boolisWallPartPotentiallyAttackable(EWallPartwallPart)const;// returns true if the wall part is potentially attackable (independent of wall state), false if not
boolisWallPartAttackable(EWallPartwallPart)const;// returns true if the wall part is actually attackable, 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
int32_tbattleGetSpellCost(constspells::Spell*sp,constCGHeroInstance*caster)const;//returns cost of given spell
ESpellCastProblembattleCanCastSpell(constspells::Caster*caster,spells::Modemode)const;//returns true if there are no general issues preventing from casting a spell
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)
AttackableTilesgetPotentiallyAttackableHexes(constbattle::Unit*attacker,BattleHexdestinationTile,BattleHexattackerPos)const;//TODO: apply rotation to two-hex attacker
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(constbattle::Unit*attacker,constbattle::Unit*defender)const;//determines if attacker standing at attackerHex should reverse in order to attack defender