private static string FormAlliance(List <string> strings) { if (!CampaignCheats.CheckCheatUsage(ref CampaignCheats.ErrorType)) { return(CampaignCheats.ErrorType); } if (!CampaignCheats.CheckParameters(strings, 2) || CampaignCheats.CheckHelp(strings)) { return("Format uses 2 kingdom ID parameters without spaces: diplomacy.form_alliance [Kingdom1] [Kingdom2]"); } var b1 = strings[0].ToLower(); var b2 = strings[1].ToLower(); if (b1 == b2) { return("Cannot ally a kingdom to itself!"); } Kingdom?kingdom1 = null; Kingdom?kingdom2 = null; foreach (var k in Kingdom.All) { var id = k.Name.ToString().ToLower().Replace(" ", ""); if (id == b1) { kingdom1 = k; } else if (id == b2) { kingdom2 = k; } } if (kingdom1 is null && kingdom2 is null) { return("Could not find either required kingdom!"); } if (kingdom1 is null) { return("1st kingdom ID not found: " + b1); } if (kingdom2 is null) { return("2nd kingdom ID not found: " + b2); } DeclareAllianceAction.Apply(kingdom1, kingdom2, bypassCosts: true); return($"Alliance formed between {kingdom1.Name} and {kingdom2.Name}!"); }
public static string FormAlliance(List <string> strings) { if (!CampaignCheats.CheckCheatUsage(ref CampaignCheats.ErrorType)) { return(CampaignCheats.ErrorType); } if (!CampaignCheats.CheckParameters(strings, 2) || CampaignCheats.CheckHelp(strings)) { return("Format is faction names without space \"campaign.form_alliance [Faction1] [Faction2]\"."); } string b = strings[0].ToLower(); string b2 = strings[1].ToLower(); Kingdom faction = null; Kingdom faction2 = null; foreach (Kingdom faction3 in Campaign.Current.Kingdoms) { string a = faction3.Name.ToString().ToLower().Replace(" ", ""); if (a == b) { faction = faction3; } else if (a == b2) { faction2 = faction3; } } if (faction != null && faction2 != null) { DeclareAllianceAction.Apply(faction as Kingdom, faction2 as Kingdom, bypassCosts: true); return(string.Concat(new object[] { "Alliance declared between ", faction.Name, " and ", faction2.Name })); } if (faction == null) { return("Faction is not found: " + faction); } return("Faction is not found: " + faction2); }
static bool Prefix(ArmyManagementVM __instance, MBBindingList <ArmyManagementItemVM> ____partiesToRemove, Action ____onClose) { // Only enable this hack if it is enabled and player is independent // THIS IS A PORT OF ArmyManagementVM.ExecuteDone! if (!Hero.MainHero.MapFaction.IsKingdomFaction && Settings.Instance.CreatePlayerKingdom) { int num = __instance.PartiesInCart.Sum <ArmyManagementItemVM>((Func <ArmyManagementItemVM, int>)(P => P.Cost)); bool flag1 = num <= 0 || (double)num <= (double)Hero.MainHero.Clan.Influence; if (flag1 && __instance.NewCohesion > __instance.Cohesion) { var foo = __instance.GetType().GetMethod("ApplyCohesionChange", System.Reflection.BindingFlags.NonPublic); foo.Invoke(__instance, null); } if (__instance.PartiesInCart.Count > 1 & flag1 /* && MobileParty.MainParty.MapFaction.IsKingdomFaction*/) { if (MobileParty.MainParty.Army == null) { string err = ""; if (!CampaignCheats.CheckCheatUsage(ref err)) { InformationMessage im = new InformationMessage(err); InformationManager.DisplayMessage(im); return(false); } if ((MobileParty.MainParty.MapFaction as Kingdom) is null) { CampaignCheats.CreatePlayerKingdom(new List <string>()); } ((Kingdom)MobileParty.MainParty.MapFaction).CreateArmy(Hero.MainHero, (IMapPoint)Hero.MainHero.HomeSettlement, Army.ArmyTypes.Patrolling); } foreach (ArmyManagementItemVM managementItemVm in (Collection <ArmyManagementItemVM>)__instance.PartiesInCart) { if (managementItemVm.Party != MobileParty.MainParty) { managementItemVm.Party.Army = MobileParty.MainParty.Army; SetPartyAiAction.GetActionForEscortingParty(managementItemVm.Party, MobileParty.MainParty); managementItemVm.Party.IsJoiningArmy = true; } } Hero.MainHero.Clan.Influence -= (float)num; } if (____partiesToRemove.Count > 0) { bool flag2 = false; foreach (ArmyManagementItemVM managementItemVm in (Collection <ArmyManagementItemVM>)____partiesToRemove) { if (managementItemVm.Party == MobileParty.MainParty) { managementItemVm.Party.Army = (Army)null; flag2 = true; } } if (!flag2) { foreach (ArmyManagementItemVM managementItemVm in (Collection <ArmyManagementItemVM>)____partiesToRemove) { Army army = MobileParty.MainParty.Army; if ((army != null ? (army.Parties.Contains(managementItemVm.Party) ? 1 : 0) : 0) != 0) { managementItemVm.Party.Army = (Army)null; } } } ____partiesToRemove.Clear(); } if (flag1) { ____onClose(); CampaignEventDispatcher.Instance.OnArmyOverlaySetDirty(); } else { InformationManager.AddQuickInformation(new TextObject("{=Xmw93W6a}Not Enough Influence")); } //int num = __instance.PartiesInCart.Sum<ArmyManagementItemVM>((Func<ArmyManagementItemVM, int>)(P => P.Cost)); //bool flag1 = (double)num <= (double)Hero.MainHero.Clan.Influence; //if (flag1 && __instance.NewCohesion > __instance.Cohesion) //{ // if (MobileParty.MainParty.Army == null) // return false; // ArmyManagementCalculationModel calculationModel = Campaign.Current.Models.ArmyManagementCalculationModel; // int num1 = __instance.NewCohesion - __instance.Cohesion; // Army army = MobileParty.MainParty.Army; // double num2 = (double)num1; // int totalInfluenceCost = calculationModel.CalculateTotalInfluenceCost(army, (float)num2); // MobileParty.MainParty.Army.BoostCohesionWithInfluence((float)num1, totalInfluenceCost); //} //if (__instance.PartiesInCart.Count > 1 & flag1/* && MobileParty.MainParty.MapFaction.IsKingdomFaction*/) //{ // if (MobileParty.MainParty.Army == null) // { // string err = ""; // if (!CampaignCheats.CheckCheatUsage(ref err)) // { // InformationMessage im = new InformationMessage(err); // InformationManager.DisplayMessage(im); // return false; // } // if ((MobileParty.MainParty.MapFaction as Kingdom) is null) // CampaignCheats.CreatePlayerKingdom(new List<string>()); // ((Kingdom)MobileParty.MainParty.MapFaction).CreateArmy(Hero.MainHero, (IMapPoint)Hero.MainHero.HomeSettlement, Army.ArmyTypes.Patrolling); // } // foreach (ArmyManagementItemVM managementItemVm in (Collection<ArmyManagementItemVM>)__instance.PartiesInCart) // { // if (managementItemVm.Party != MobileParty.MainParty) // { // managementItemVm.Party.Army = MobileParty.MainParty.Army; // SetPartyAiAction.GetActionForEscortingParty(managementItemVm.Party, MobileParty.MainParty); // managementItemVm.Party.IsJoiningArmy = true; // } // } // Hero.MainHero.Clan.Influence -= (float)num; //} //if (____partiesToRemove.Count > 0) //{ // bool flag2 = false; // foreach (ArmyManagementItemVM managementItemVm in (Collection<ArmyManagementItemVM>)____partiesToRemove) // { // if (managementItemVm.Party == MobileParty.MainParty) // { // managementItemVm.Party.Army = (Army)null; // flag2 = true; // } // } // if (!flag2) // { // foreach (ArmyManagementItemVM managementItemVm in (Collection<ArmyManagementItemVM>)____partiesToRemove) // { // Army army = MobileParty.MainParty.Army; // if ((army != null ? (army.Parties.Contains(managementItemVm.Party) ? 1 : 0) : 0) != 0) // managementItemVm.Party.Army = (Army)null; // } // } // ____partiesToRemove.Clear(); //} //if (flag1) // ____onClose(); //else // InformationManager.AddQuickInformation(new TextObject("{=Xmw93W6a}Not Enough Influence", (Dictionary<string, TextObject>)null), 0, (BasicCharacterObject)null, ""); return(false); } return(true); }