virtualvoidheroGotLevel(constCGHeroInstance*hero,intpskill,std::vector<ui16>&skills,boost::function<void(ui32)>&callback)=0;//pskill is gained primary skill, interface has to choose one of given skills and call callback with selection id
virtualvoidactionFinished(constBattleAction*action){};//occurs AFTER every action taken by any stack or by the hero
virtualvoidactionStarted(constBattleAction*action){};//occurs BEFORE every action taken by any stack or by the hero
virtualBattleActionactiveStack(intstackID)=0;//called when it's turn of that stack
virtualvoidbattleAttack(BattleAttack*ba){};//called when stack is performing attack
virtualvoidbattleStackAttacked(BattleStackAttacked*bsa){};//called when stack receives damage (after battleAttack())
virtualvoidbattleEnd(BattleResult*br){};
virtualvoidbattleNewRound(intround){};//called at the beggining of each turn, round=-1 is the tactic phase, round=0 is the first "normal" turn
virtualvoidbattleStackMoved(intID,intdest){};
virtualvoidbattleSpellCasted(SpellCasted*sc){};
virtualvoidbattleStart(CCreatureSet*army1,CCreatureSet*army2,int3tile,CGHeroInstance*hero1,CGHeroInstance*hero2,boolside){};//called by engine when battle starts; side=0 - left, side=1 - right
virtualvoidbattlefieldPrepared(intbattlefieldType,std::vector<CObstacle*>obstacles){};//called when battlefield is prepared, prior the battle beginning