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