diff --git a/lib/mapObjects/CGPandoraBox.cpp b/lib/mapObjects/CGPandoraBox.cpp index ec402caea..bf002e0fe 100644 --- a/lib/mapObjects/CGPandoraBox.cpp +++ b/lib/mapObjects/CGPandoraBox.cpp @@ -294,6 +294,18 @@ void CGEvent::init() } } +void CGEvent::battleFinished(IGameEventCallback & gameEvents, const CGHeroInstance *hero, const BattleResult &result) const +{ + if(result.winner == BattleSide::ATTACKER) + { + CRewardableObject::onHeroVisit(gameEvents, hero); + } + if(result.winner == BattleSide::NONE && removeAfterVisit) //rewards are lost if therer is a draw and an event is not repeatable + { + gameEvents.removeObject(this, result.attacker); + } +} + void CGEvent::grantRewardWithMessage(IGameEventCallback & gameEvents, const CGHeroInstance * contextHero, int rewardIndex, bool markAsVisit) const { CRewardableObject::grantRewardWithMessage(gameEvents, contextHero, rewardIndex, markAsVisit); diff --git a/lib/mapObjects/CGPandoraBox.h b/lib/mapObjects/CGPandoraBox.h index 803e25b60..5fe4139c1 100644 --- a/lib/mapObjects/CGPandoraBox.h +++ b/lib/mapObjects/CGPandoraBox.h @@ -65,6 +65,7 @@ public: } void onHeroVisit(IGameEventCallback & gameEvents, const CGHeroInstance * h) const override; + void battleFinished(IGameEventCallback & gameEvents, const CGHeroInstance *hero, const BattleResult &result) const override; protected: void grantRewardWithMessage(IGameEventCallback & gameEvents, const CGHeroInstance * contextHero, int rewardIndex, bool markAsVisit) const override;