public static bool DisperseArmy(ref Army __instance, ref bool ____armyIsDispersing, ref List <MobileParty> ____parties, ref MBCampaignEvent ____hourlyTickEvent, Army.ArmyDispersionReason reason = Army.ArmyDispersionReason.Unknown) { try { if (____armyIsDispersing) { return(false); } CampaignEventDispatcher.Instance.OnArmyDispersed(__instance, reason, __instance.Parties.Contains(MobileParty.MainParty)); ____armyIsDispersing = true; int num = 0; for (int i = __instance.Parties.Count - 1; i >= num; i--) { __instance.Parties[i].Army = null; } ____parties.Clear(); __instance.Kingdom = null; if (__instance.LeaderParty == MobileParty.MainParty) { MapState mapState = Game.Current.GameStateManager.ActiveState as MapState; if (mapState != null) { mapState.OnDispersePlayerLeadedArmy(); } } Campaign.Current.DeletePeriodicEvent(____hourlyTickEvent); ____armyIsDispersing = false; } catch (Exception ex) { InformationManager.DisplayMessage(new InformationMessage($"GCO prevented crash with error {ex.Message}")); } return(false); }
internal static void OnArmyDispersed(this CampaignEventDispatcher __instance, Army army, Army.ArmyDispersionReason reason, bool isPlayersArmy) { throw new NotImplementedException("Need to patch first"); }