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);
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(); } } }
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; }