virtualvoidbattleStacksEffectsSet(constSetStackEffect&sse){};//called when a specific effect is set to stacks
virtualvoidbattleStart(constCCreatureSet*army1,constCCreatureSet*army2,int3tile,constCGHeroInstance*hero1,constCGHeroInstance*hero2,boolside){};//called by engine when battle starts; side=0 - left, side=1 - right
virtualvoidbattleStacksHealedRes(conststd::vector<std::pair<ui32,ui32>>&healedStacks,boollifeDrain,booltentHeal,si32lifeDrainFrom){};//called when stacks are healed / resurrected first element of pair - stack id, second - healed hp
virtualvoidbattleNewStackAppeared(constCStack*stack){};//not called at the beginning of a battle or by resurrection; called eg. when elemental is summoned
virtualvoidbattleObstaclesRemoved(conststd::set<si32>&removedObstacles){};//called when a certain set of obstacles is removed from batlefield; IDs of them are given
virtualvoidbattleCatapultAttacked(constCatapultAttack&ca){};//called when catapult makes an attack
virtualvoidbattleStacksRemoved(constBattleStacksRemoved&bsr){};//called when certain stack is completely removed from battlefield
virtualvoidbattleResultsApplied(){};//called when all effects of last battle are applied
//garrison operations
virtualvoidstackChagedCount(constStackLocation&location,constTQuantity&change,boolisAbsolute){};//if absolute, change is the new count; otherwise count was modified by adding change
virtualvoidstackChangedType(constStackLocation&location,constCCreature&newType){};//used eg. when upgrading creatures
virtualvoidstacksErased(constStackLocation&location){};//stack removed from previously filled slot
virtualvoidnewStackInserted(constStackLocation&location,constCStackInstance&stack){};//new stack inserted at given (previously empty position)
virtualvoidstacksRebalanced(constStackLocation&src,constStackLocation&dst,TQuantitycount){};//moves creatures from src stack to dst slot, may be used for merging/splittint/moving stacks
virtualvoidshowShipyardDialog(constIShipyard*obj){}//obj may be town or shipyard; state: 0 - can buid, 1 - lack of resources, 2 - dest tile is blocked, 3 - no water
virtualvoidnewObject(constCGObjectInstance*obj){};//eg. ship built in shipyard
virtualvoidavailableArtifactsChanged(constCGBlackMarket*bm=NULL){};//bm may be NULL, then artifacts are changed in the global pool (used by merchants in towns)