From 8b0c62e10ece7eae8b32a5f6cab2b7ec8a1369df Mon Sep 17 00:00:00 2001 From: Dydzio Date: Sun, 18 Sep 2016 22:05:05 +0200 Subject: [PATCH] Block surrender via escape tunnel. Fix issue 2389 --- lib/CBattleCallback.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/CBattleCallback.cpp b/lib/CBattleCallback.cpp index d2da9d392..21e468464 100644 --- a/lib/CBattleCallback.cpp +++ b/lib/CBattleCallback.cpp @@ -425,8 +425,10 @@ ui8 CBattleInfoEssentials::battleGetSiegeLevel() const bool CBattleInfoEssentials::battleCanSurrender(PlayerColor player) const { RETURN_IF_NOT_BATTLE(false); - //conditions like for fleeing + enemy must have a hero - return battleCanFlee(player) && battleHasHero(!playerToSide(player)); + ui8 mySide = playerToSide(player); + bool iAmSiegeDefender = ( mySide == BattleSide::DEFENDER && battleGetSiegeLevel() ); + //conditions like for fleeing (except escape tunnel presence) + enemy must have a hero + return battleCanFlee(player) && !iAmSiegeDefender && battleHasHero(!mySide); } bool CBattleInfoEssentials::battleHasHero(ui8 side) const