From 07e7d6cc14ca5192791a7fc4b6fb0cbcb3c59e3f Mon Sep 17 00:00:00 2001 From: Ivan Savenko Date: Tue, 21 Nov 2023 20:32:07 +0200 Subject: [PATCH] Do not allow fleeing from cities without fort --- lib/battle/CBattleInfoEssentials.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/battle/CBattleInfoEssentials.cpp b/lib/battle/CBattleInfoEssentials.cpp index 2b69caa29..b7761a6f8 100644 --- a/lib/battle/CBattleInfoEssentials.cpp +++ b/lib/battle/CBattleInfoEssentials.cpp @@ -282,7 +282,7 @@ bool CBattleInfoEssentials::battleCanFlee(const PlayerColor & player) const return false; //we are besieged defender - if(side == BattleSide::DEFENDER && battleGetSiegeLevel()) + if(side == BattleSide::DEFENDER && getBattle()->getDefendedTown() != nullptr) { const auto * town = battleGetDefendedTown(); if(!town->hasBuilt(BuildingSubID::ESCAPE_TUNNEL)) @@ -357,7 +357,7 @@ bool CBattleInfoEssentials::battleCanSurrender(const PlayerColor & player) const const auto side = playerToSide(player); if(!side) return false; - bool iAmSiegeDefender = (side.value() == BattleSide::DEFENDER && battleGetSiegeLevel()); + bool iAmSiegeDefender = (side.value() == BattleSide::DEFENDER && getBattle()->getDefendedTown() != nullptr); //conditions like for fleeing (except escape tunnel presence) + enemy must have a hero return battleCanFlee(player) && !iAmSiegeDefender && battleHasHero(otherSide(side.value())); }