constCStack*getNextStack()const;//which stack will have turn after current one
//void getStackQueue(std::vector<const CStack *> &out, int howMany, int turn = 0, int lastMoved = -1) const; //returns stack in order of their movement action
//void getAccessibilityMap(bool *accessibility, bool twoHex, bool attackerOwned, bool addOccupiable, std::set<BattleHex> & occupyable, bool flying, const CStack* stackToOmmit = nullptr) const; //send pointer to at least 187 allocated bytes
intgetAvaliableHex(CreatureIDcreID,boolattackerOwned,intinitialPos=-1)const;//find place for summon / clone effects
//void makeBFS(BattleHex start, bool*accessibility, BattleHex *predecessor, int *dists, bool twoHex, bool attackerOwned, bool flying, bool fillPredecessors) const; //*accessibility must be prepared bool[187] array; last two pointers must point to the at least 187-elements int arrays - there is written result
std::pair<std::vector<BattleHex>,int>getPath(BattleHexstart,BattleHexdest,constCStack*stack);//returned value: pair<path, length>; length may be different than number of elements in path since flying vreatures jump between distant hexes
ui32calculateDmg(constCStack*attacker,constCStack*defender,boolshooting,ui8charge,boollucky,boolunlucky,booldeathBlow,boolballistaDoubleDmg,CRandomGenerator&rand);//charge - number of hexes travelled before attack (for champion's jousting)
//void getPotentiallyAttackableHexes(AttackableTiles &at, const CStack* attacker, BattleHex destinationTile, BattleHex attackerPos); //hexes around target that could be attacked in melee
//std::set<CStack*> getAttackedCreatures(const CStack* attacker, BattleHex destinationTile, BattleHex attackerPos = BattleHex::INVALID); //calculates range of multi-hex attacks
//std::set<BattleHex> getAttackedHexes(const CStack* attacker, BattleHex destinationTile, BattleHex attackerPos = BattleHex::INVALID); //calculates range of multi-hex attacks
CStack*generateNewStack(constCStackInstance&base,boolattackerOwned,SlotIDslot,BattleHexposition)const;//helper for CGameHandler::setupBattle and spells addign new stacks to the battlefield
CStack*generateNewStack(constCStackBasicDescriptor&base,boolattackerOwned,SlotIDslot,BattleHexposition)const;//helper for CGameHandler::setupBattle and spells addign new stacks to the battlefield
intgetIdForNewStack()const;//suggest a currently unused ID that'd suitable for generating a new stack
constCGHeroInstance*getHero(PlayerColorplayer)const;//returns fighting hero that belongs to given player