public void DailyTick() { foreach (MobileParty mobileParty in MobileParty.All.ToList()) { if (mobileParty != null && mobileParty.IsActive && mobileParty.IsBandit && !mobileParty.IsCurrentlyUsedByAQuest && mobileParty.CurrentSettlement == null && mobileParty.MapEvent == null && NumberCanBeMerged(mobileParty)) { foreach (MobileParty nearbyMobileParty in Campaign.Current.GetNearbyMobileParties( mobileParty.Position2D, SubModule.Settings.Strategy_BanditMerger_MergeRadius, (Func <MobileParty, bool>)(x => true)).ToList()) { if (nearbyMobileParty != null && nearbyMobileParty != mobileParty && nearbyMobileParty.IsActive && nearbyMobileParty.IsBandit && !nearbyMobileParty.IsCurrentlyUsedByAQuest && nearbyMobileParty.CurrentSettlement == null && nearbyMobileParty.MapEvent == null && nearbyMobileParty.MapFaction.StringId == mobileParty.MapFaction.StringId && NumberCanBeMerged(nearbyMobileParty)) { mobileParty.Party.AddMembers(nearbyMobileParty.MemberRoster.ToFlattenedRoster()); mobileParty.Party.AddPrisoners(nearbyMobileParty.PrisonRoster.ToFlattenedRoster()); DestroyPartyAction.Apply(mobileParty.Party, nearbyMobileParty); } } } } }
internal static void EndFailedRevolt(Revolt revolt) { var textObject = new TextObject(Localization.GameTexts.RevoltsRevoltEnd); textObject.SetTextVariable("SETTLEMENT", revolt.Settlement.Name); InformationManager.AddQuickInformation(textObject); revolt.SettlementInfo.CurrentFactionInfo.CityRevoltionFailed(revolt.Settlement); if (revolt.IsMinorFaction) { Managers.Kingdom.DestroyKingdom(revolt.Party.Owner.Clan.Kingdom); KillCharacterAction.ApplyByExecution(revolt.Party.Owner, revolt.Settlement.OwnerClan?.Kingdom?.Leader ?? revolt.Settlement.OwnerClan.Leader, true); if (revolt.Party?.MobileParty != null) { DestroyPartyAction.Apply(revolt.SettlementInfo.Garrision, revolt.Party.MobileParty); } } Managers.Revolt.Revolts.Remove(revolt); }