private static bool EncounterAttackCondition(MenuCallbackArgs args) { args.optionLeaveType = GameMenuOption.LeaveType.HostileAction; if (MapEvent.PlayerMapEvent == null) { return(false); } MapEvent battle = PlayerEncounter.Battle; Settlement mapEventSettlement = battle?.MapEventSettlement; return((battle == null || mapEventSettlement == null || !mapEventSettlement.IsFortification || !battle.IsSiegeAssault || PlayerSiege.PlayerSiegeEvent == null || PlayerSiege.PlayerSiegeEvent.BesiegerCamp.IsPreparationComplete) && battle != null && (battle.HasTroopsOnBothSides() || battle.IsSiegeAssault) && MapEvent.PlayerMapEvent.GetLeaderParty(PartyBase.MainParty.OpponentSide) != null && Hero.MainHero.IsWounded); }