예제 #1
0
 public static void EndAbnormality(ulong target, uint id)
 {
     if (AbnormalityDatabase.Abnormalities.TryGetValue(id, out Abnormality ab))
     {
         App.Current.Dispatcher.Invoke(() =>
         {
             if (target == SessionManager.CurrentPlayer.EntityId)
             {
                 SessionManager.EndPlayerAbnormality(ab);
             }
             else if (EntitiesManager.TryGetBossById(target, out Boss b) && b.HasBuff(ab))
             {
                 b.EndBuff(ab);
             }
         });
     }
 }
예제 #2
0
 static void BeginNPCAbnormality(Abnormality ab, int stacks, int duration, ulong target)
 {
     if (EntitiesManager.TryGetBossById(target, out Boss b))
     {
         App.Current.Dispatcher.Invoke(() =>
         {
             if (b.HasBuff(ab))
             {
                 NPCAbnormalityUpdated?.Invoke(b.EntityId, ab, duration, stacks);
             }
             else
             {
                 if (!ab.Infinity)
                 {
                     EntitiesManager.CurrentBosses.Where(x => x.EntityId == target).First().Buffs.Add(new AbnormalityDuration(ab, duration, stacks, target));
                 }
                 else
                 {
                     EntitiesManager.CurrentBosses.Where(x => x.EntityId == target).First().Buffs.Insert(0, new AbnormalityDuration(ab, -1, stacks, target));
                 }
             }
         });
     }
 }