internal override void CheckMechanic(ParsedEvtcLog log, Dictionary <Mechanic, List <MechanicEvent> > mechanicLogs, Dictionary <int, AbstractSingleActor> regroupedMobs) { foreach (Player p in log.PlayerList) { IReadOnlyList <AbstractHealthDamageEvent> combatitems = p.GetDamageTakenEvents(null, log, 0, log.FightData.FightEnd); foreach (AbstractHealthDamageEvent c in combatitems) { if (MechanicIDs.Contains(c.SkillId) && Keep(c, log)) { mechanicLogs[this].Add(new MechanicEvent(c.Time, this, p)); } } } }
private AbstractHealthDamageEvent GetFirstHit(AgentItem src, ParsedEvtcLog log) { if (!_firstHits.TryGetValue(src, out AbstractHealthDamageEvent evt)) { AbstractHealthDamageEvent res = log.CombatData.GetDamageData(src).Where(x => MechanicIDs.Contains(x.SkillId) && x.To.Type == AgentItem.AgentType.Player && base.Keep(x, log)).FirstOrDefault(); _firstHits[src] = res; return(res); } return(evt); }