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); } }); } }
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)); } } }); } }