protected virtual void UpdateActionAvailability() { this.IsMessengerAvailable = MessengerManager.CanSendMessengerWithCost(Faction2Leader.Hero, DiplomacyCostCalculator.DetermineCostForSendingMessenger()); this.IsOptionAvailable = DeclareWarConditions.Instance.CanApplyExceptions(this, true).IsEmpty(); string allianceException = FormAllianceConditions.Instance.CanApplyExceptions(this, true).FirstOrDefault()?.ToString(); this.IsAllianceAvailable = allianceException == null; string declareWarException = DeclareWarConditions.Instance.CanApplyExceptions(this, true).FirstOrDefault()?.ToString(); this.ActionHint = declareWarException != null ? new HintViewModel(declareWarException) : new HintViewModel(); this.AllianceHint = allianceException != null ? new HintViewModel(allianceException) : new HintViewModel(); string nonAggressionPactException = NonAggressionPactConditions.Instance.CanApplyExceptions(this, true).FirstOrDefault()?.ToString(); this.IsNonAggressionPactAvailable = nonAggressionPactException == null; this.NonAggressionPactHint = nonAggressionPactException != null ? new HintViewModel(nonAggressionPactException) : new HintViewModel(); HybridCost allianceCost = DiplomacyCostCalculator.DetermineCostForFormingAlliance(Faction1 as Kingdom, Faction2 as Kingdom, true); this.AllianceInfluenceCost = (int)allianceCost.InfluenceCost.Value; this.AllianceGoldCost = (int)allianceCost.GoldCost.Value; HybridCost nonAggressionPactCost = DiplomacyCostCalculator.DetermineCostForFormingNonAggressionPact(Faction1 as Kingdom, Faction2 as Kingdom, true); this.NonAggressionPactInfluenceCost = (int)nonAggressionPactCost.InfluenceCost.Value; this.NonAggressionPactGoldCost = (int)nonAggressionPactCost.GoldCost.Value; this.AllianceScoreHint = this.UpdateDiplomacyTooltip(AllianceScoringModel.Instance.GetScore(Faction2 as Kingdom, Faction1 as Kingdom, new StatExplainer())); this.NonAggressionPactScoreHint = this.UpdateDiplomacyTooltip(NonAggressionPactScoringModel.Instance.GetScore(Faction2 as Kingdom, Faction1 as Kingdom, new StatExplainer())); }
private static void CreatePeaceInquiry(Kingdom kingdom, Kingdom faction, HybridCost diplomacyCost) { int payment = (int)diplomacyCost.GoldCost.Value; InformationManager.ShowInquiry(new InquiryData(new TextObject("{=BkGSVccZ}Peace Proposal").ToString(), CreateMakePeaceInquiryText(kingdom, faction, payment), true, true, new TextObject("{=3fTqLwkC}Accept").ToString(), new TextObject("{=dRoMejb0}Decline").ToString(), () => { AcceptPeace(kingdom, faction, diplomacyCost); }, () => { Events.Instance.OnPeaceProposalSent(kingdom); }, ""), true); }
public KingdomWarItemVMExtensionVM(StanceLink stanceLink, Action <KingdomWarItemVM> onSelect, Action <KingdomWarItemVM> onAction) : base(stanceLink, onSelect, onAction) { this.SendMessengerActionName = new TextObject("{=cXfcwzPp}Send Messenger").ToString(); HybridCost costForMakingPeace = DiplomacyCostCalculator.DetermineCostForMakingPeace(Faction1 as Kingdom, Faction2 as Kingdom, true); this.InfluenceCost = (int)costForMakingPeace.InfluenceCost.Value; this.GoldCost = (int)costForMakingPeace.GoldCost.Value; this.ActionName = GameTexts.FindText("str_kingdom_propose_peace_action", null).ToString(); this.AllianceText = new TextObject("{=zpNalMeA}Alliances").ToString(); this.WarsText = new TextObject("{=y5tXjbLK}Wars").ToString(); this.PactsText = new TextObject("{=noWHMN1W}Non-Aggression Pacts").ToString(); UpdateDiplomacyProperties(); }
public static void ApplyPeace(Kingdom kingdomMakingPeace, Kingdom otherKingdom, bool forcePlayerCharacterCosts = false) { HybridCost diplomacyCost = DiplomacyCostCalculator.DetermineCostForMakingPeace(kingdomMakingPeace, otherKingdom, forcePlayerCharacterCosts); if (!otherKingdom.Leader.IsHumanPlayerCharacter) { AcceptPeace(kingdomMakingPeace, otherKingdom, diplomacyCost); } else if (!CooldownManager.HasPeaceProposalCooldownWithPlayerKingdom(kingdomMakingPeace)) { CreatePeaceInquiry(kingdomMakingPeace, otherKingdom, diplomacyCost); } }