public override IReadOnlyList <AbstractHealthDamageEvent> GetDamageEvents(AbstractSingleActor target, ParsedEvtcLog log, long start, long end) { if (DamageEvents == null) { DamageEvents = new List <AbstractHealthDamageEvent>(); foreach (NPC minion in _minionList) { DamageEvents.AddRange(minion.GetDamageEvents(null, log, 0, log.FightData.FightEnd)); } DamageEvents = DamageEvents.OrderBy(x => x.Time).ToList(); DamageEventByDst = DamageEvents.GroupBy(x => x.To).ToDictionary(x => x.Key, x => x.ToList()); } if (target != null) { if (DamageEventByDst.TryGetValue(target.AgentItem, out List <AbstractHealthDamageEvent> list)) { return(list.Where(x => x.Time >= start && x.Time <= end).ToList()); } else { return(new List <AbstractHealthDamageEvent>()); } } return(DamageEvents.Where(x => x.Time >= start && x.Time <= end).ToList()); }
// Damage logs public override IReadOnlyList <AbstractHealthDamageEvent> GetDamageEvents(AbstractSingleActor target, ParsedEvtcLog log, long start, long end) { if (DamageEvents == null) { DamageEvents = new List <AbstractHealthDamageEvent>(); DamageEvents.AddRange(log.CombatData.GetDamageData(AgentItem).Where(x => !x.ToFriendly)); IReadOnlyDictionary <long, Minions> minionsList = GetMinions(log); foreach (Minions mins in minionsList.Values) { DamageEvents.AddRange(mins.GetDamageEvents(null, log, 0, log.FightData.FightEnd)); } DamageEvents = DamageEvents.OrderBy(x => x.Time).ToList(); DamageEventByDst = DamageEvents.GroupBy(x => x.To).ToDictionary(x => x.Key, x => x.ToList()); } if (target != null) { if (DamageEventByDst.TryGetValue(target.AgentItem, out List <AbstractHealthDamageEvent> list)) { return(list.Where(x => x.Time >= start && x.Time <= end).ToList()); } else { return(new List <AbstractHealthDamageEvent>()); } } return(DamageEvents.Where(x => x.Time >= start && x.Time <= end).ToList()); }