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);
                 }
             }
         }
     }
 }
Exemplo n.º 2
0
        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);
        }