Pārlūkot izejas kodu

Block surrender via escape tunnel. Fix issue 2389

Dydzio 9 gadi atpakaļ
vecāks
revīzija
8b0c62e10e
1 mainītis faili ar 4 papildinājumiem un 2 dzēšanām
  1. 4 2
      lib/CBattleCallback.cpp

+ 4 - 2
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