private static void UpdateDiplomacyProperties(KingdomDiplomacyItemVM __instance, ref IFaction ____playerKingdom, ref IFaction ___Faction1, ref IFaction ___Faction2, ref string ____faction2Name)
        {
            StanceLink stanceWith = ____playerKingdom.GetStanceWith(___Faction2);

            if (stanceWith.IsNeutral)
            {
                var days = (int)stanceWith.PeaceDeclarationDate.ElapsedDaysUntilNow;
                if (stanceWith.GetDailyTributePaid(____playerKingdom) != 0)
                {
                    var paid = -stanceWith.GetDailyTributePaid(____playerKingdom);
                    __instance.Faction2Name = $"{___Faction2.Name.ToString()}({paid}$/d)({days}d)";
                }
                else
                {
                    __instance.Faction2Name = ___Faction2.Name.ToString() + (days < 10000 ? $"({days}d)" : "");
                }
            }
            else
            {
                var days = (int)stanceWith.WarStartDate.ElapsedDaysUntilNow;
                __instance.Faction2Name = ___Faction2.Name.ToString() + (days < 10000 ? $"({days}d)" : "");
            }
        }
        //CalculateTributeFactor
        private double CalculateTributeFactor(DecisionMaker decisionMaker, IFaction factionToChangeStateWith, int dailyTributeToBePaid = 0)
        {
            bool       atWar      = decisionMaker.Hero.MapFaction.IsAtWarWith(factionToChangeStateWith);
            StanceLink stanceWith = decisionMaker.Hero.MapFaction.GetStanceWith(factionToChangeStateWith);

            dailyTributeToBePaid = atWar ? dailyTributeToBePaid : stanceWith.GetDailyTributePaid(decisionMaker.Hero.MapFaction);

            double GetReputationScoreModifierAtWar() =>
            dailyTributeToBePaid *CalculateWarSuccessScore(decisionMaker.Hero.Clan.Kingdom, factionToChangeStateWith) >= 0 //Tribute is being demanded from the winning faction
            ? CalculateWarSuccessScore(decisionMaker.Hero.Clan.Kingdom, factionToChangeStateWith) >= 0                     //Deciding kingdom is winning
              ? GetTraitLevelModifier(decisionMaker.Hero.GetTraitLevel(DefaultTraits.Valor) * 2 + decisionMaker.Hero.GetTraitLevel(DefaultTraits.Calculating) - decisionMaker.Hero.GetTraitLevel(DefaultTraits.Generosity), 2)
              : GetTraitLevelModifier(-decisionMaker.Hero.GetTraitLevel(DefaultTraits.Honor) - decisionMaker.Hero.GetTraitLevel(DefaultTraits.Generosity))
            : 1.0;
            double GetReputationScoreModifierAtPeace() => GetTraitLevelModifier(-decisionMaker.Hero.GetTraitLevel(DefaultTraits.Honor) - decisionMaker.Hero.GetTraitLevel(DefaultTraits.Generosity));

            double weightedDailyTribute = dailyTributeToBePaid * (atWar ? GetReputationScoreModifierAtWar() : GetReputationScoreModifierAtPeace()) * 0.25 //This is reputational consideration part (uses faction tribute as whole)
                                          + (dailyTributeToBePaid * deCalculateShareFactor(decisionMaker.Hero.Clan)                                       //This is clan financial consideration part (assesses clan income)
                                             * GetTraitLevelModifier(decisionMaker.Hero.GetTraitLevel(DefaultTraits.Calculating) - decisionMaker.Hero.GetTraitLevel(DefaultTraits.Generosity)));

            return(Campaign.Current.Models.DiplomacyModel.GetValueOfDailyTribute((int)weightedDailyTribute) * Campaign.Current.Models.DiplomacyModel.DenarsToInfluence());
        }