public static void Postfix(DecisionOutcome popularOption, DecisionOutcome overridingOption, KingdomDecision decision, ref int __result) { try { bool SubSystemEnabled = SettingsHelper.SubSystemEnabled(SubSystemType.ElectionRebalance, decision.Kingdom); bool SystemDebugEnabled = SettingsHelper.SystemDebugEnabled(AOSystems.PoliticsRebalance, DebugType.Technical, decision.Kingdom); if (!SubSystemEnabled && !SystemDebugEnabled) { if (SettingsHelper.SubSystemEnabled(SubSystemType.FreeDecisionOverriding)) { __result = 0; } return; } float PopularOptionSupportPoints = popularOption.TotalSupportPoints; float OverridingOptionSupportPoints = overridingOption.TotalSupportPoints; float CalculatedResult = 0.0f; if (decision.Kingdom.RulingClan == Clan.PlayerClan) { CalculatedResult += ApplySupport(ref PopularOptionSupportPoints, ref OverridingOptionSupportPoints, decision); } float LackingPointsCompensationCost = 0; if (PopularOptionSupportPoints > OverridingOptionSupportPoints) { LackingPointsCompensationCost = GetBaseCompensationCost(Settings.Instance.OverrideDecisionCostCalculationMethod.SelectedValue.EnumValue, popularOption, overridingOption, decision); if (decision.Kingdom.ActivePolicies.Contains(DefaultPolicies.RoyalPrivilege)) { LackingPointsCompensationCost *= 0.8f; } if (decision.Kingdom.RulingClan != Clan.PlayerClan) { LackingPointsCompensationCost *= 0.8f; } CalculatedResult += LackingPointsCompensationCost; } if (SettingsHelper.SubSystemEnabled(SubSystemType.FreeDecisionOverriding)) { CalculatedResult = 0f; } if (SystemDebugEnabled) { string InfluenceRequiredDebugInfo = string.Format("DefaultClanPoliticsModel - InfluenceRequiredToOverrideKingdomDecision. Kingdom: {0}. Decision: {1}. PopularOption: {2}. OverridingOption: {3}. " + "PopularOptionSupportPoints = {4}. OverridingOptionSupportPoints = {5}. " + "OverrideDecisionCostCalculationMethod: {6}. LackingPointsCompensationCost = {7}. " + "Royal Privilege modifier: {8}. NPC modifier: {9}. Free of charge cheat modifier: {10} " + "CalculatedResult = {11}. NativeResult = {12}", decision.Kingdom.Name, decision.GetGeneralTitle(), popularOption.GetDecisionTitle(), overridingOption.GetDecisionTitle(), PopularOptionSupportPoints, OverridingOptionSupportPoints, Settings.Instance.OverrideDecisionCostCalculationMethod.SelectedValue, LackingPointsCompensationCost, GetModifierApplied(decision.Kingdom.ActivePolicies.Contains(DefaultPolicies.RoyalPrivilege)), GetModifierApplied(decision.Kingdom.RulingClan != Clan.PlayerClan), GetModifierApplied(SettingsHelper.SubSystemEnabled(SubSystemType.FreeDecisionOverriding)), CalculatedResult.ToString("N"), __result.ToString("N")); MessageHelper.TechnicalMessage(InfluenceRequiredDebugInfo); } if (SubSystemEnabled) { __result = (int)CalculatedResult; } } catch (Exception ex) { MethodInfo methodInfo = MethodBase.GetCurrentMethod() as MethodInfo; DebugHelper.HandleException(ex, methodInfo, "Harmony patch for DefaultClanPoliticsModel. GetInfluenceRequiredToOverrideKingdomDecision"); } }