private FindHostSettlementResult FindBirthTournamentSettlementsForParent(MBHero parent)
        {
            var leaderResult = HeroFinder.FindFactionLeaders(parent, parent.Spouse);

            if (leaderResult.Failed)
            {
                return(FindHostSettlementResult.Failure);
            }

            var candidateSettlements = new List <MBSettlement>();

            foreach (var leader in leaderResult.AllQualifiedCandidates)
            {
                var findOwnedSettlementsResult = FindHostSettlementsOwnedByHero(leader);
                if (findOwnedSettlementsResult.Succeeded)
                {
                    candidateSettlements.AddRange(findOwnedSettlementsResult.AllQualifiedCandidates);
                }
            }

            if (candidateSettlements.IsEmpty())
            {
                return(FindHostSettlementResult.Failure);
            }

            return(FindHostSettlementResult.Success(candidateSettlements));
        }
        public FindHostSettlementResult FindForWeddingTournament(MBHero firstWeddedHero, MBHero secondWeddedHero)
        {
            var failureResult      = FindHostSettlementResult.Failure;
            var findHostHeroResult = HeroFinder.FindHostsFromWeddedHeroes(firstWeddedHero, secondWeddedHero);

            if (findHostHeroResult.Failed)
            {
                return(failureResult);
            }

            var result = FindForFactionLeaderWedding(findHostHeroResult.Nominee);

            if (result.Failed && findHostHeroResult.HasRunnerUp)
            {
                result = FindForFactionLeaderWedding(findHostHeroResult.RunnerUp);
            }

            return(result);
        }