示例#1
0
        private FiefBarterable GetBestFiefBarter(Clan ownerClan, out Clan otherClan)
        {
            Settlement settlementToTrade = ownerClan.GetPermanentFiefs().OrderBy(settlement => settlement.Prosperity).FirstOrDefault()?.Settlement;
            Clan       targetClan        = (ownerClan.MapFaction as Kingdom).Clans.Where(clan => clan != ownerClan && !clan.HasMaximumFiefs() && !clan.IsUnderMercenaryService && clan != Clan.PlayerClan)?.OrderByDescending(clan => GetGoldValueForFief(clan, settlementToTrade))?.FirstOrDefault();

            if (settlementToTrade != null && targetClan != null)
            {
                FiefBarterable fiefBarterable = new FiefBarterable(settlementToTrade, ownerClan.Leader, targetClan.Leader);
                otherClan = targetClan;
                return(fiefBarterable);
            }
            else
            {
                otherClan = default;
                return(default);
示例#2
0
        private void ReduceCorruption(Clan clan)
        {
            if (clan.MapFaction.IsKingdomFaction && !clan.Leader.IsHumanPlayerCharacter && clan.InfluenceChange < 0 && clan.GetCorruption() > 0)
            {
                FiefBarterable fiefBarterable = GetBestFiefBarter(clan, out Clan targetClan);
                if (fiefBarterable != null)
                {
                    int            goldValue      = GetGoldValueForFief(targetClan, fiefBarterable.TargetSettlement);
                    GoldBarterable goldBarterable = new GoldBarterable(targetClan.Leader, clan.Leader, null, null, goldValue);
                    goldBarterable.CurrentAmount = goldValue;

                    fiefBarterable.Apply();
                    goldBarterable.Apply();
                }
            }
        }
示例#3
0
        private FiefBarterable? GetBestFiefBarter(Clan ownerClan, out Clan? otherClan)
        {
            otherClan = default;

            var settlementToTrade = ownerClan.GetPermanentFiefs()
                .OrderBy(settlement => settlement.Prosperity)
                .FirstOrDefault()?.Settlement;

            if (settlementToTrade is null)
                return default;

            var targetClan = ((Kingdom)ownerClan.MapFaction).Clans
                .Where(c => c != ownerClan && !c.HasMaximumFiefs() && !c.IsUnderMercenaryService && c != Clan.PlayerClan)?
                .OrderByDescending(c => GetGoldValueForFief(c, settlementToTrade))
                .FirstOrDefault();

            if (targetClan is null)
                return default;

            var fiefBarterable = new FiefBarterable(settlementToTrade, ownerClan.Leader, targetClan.Leader);
            otherClan = targetClan;
            return fiefBarterable;
        }