public List <AbstractSingleActor> GetSrcs(long boonid, ParsedLog log) { if (!ContainsKey(boonid)) { return(new List <AbstractSingleActor>()); } var actors = new List <AbstractSingleActor>(); foreach (AgentItem agent in this[boonid].Keys) { actors.Add(log.FindActor(agent, true)); } return(actors); }
public override void CheckMechanic(ParsedLog log, Dictionary <Mechanic, List <MechanicEvent> > mechanicLogs, Dictionary <int, AbstractSingleActor> regroupedMobs) { CombatData combatData = log.CombatData; foreach (AgentItem a in log.AgentData.GetNPCsByID((int)SkillId)) { if (!regroupedMobs.TryGetValue(a.ID, out AbstractSingleActor amp)) { amp = log.FindActor(a, false); regroupedMobs.Add(amp.ID, amp); } mechanicLogs[this].Add(new MechanicEvent(a.FirstAware, this, amp)); } }
public override void CheckMechanic(ParsedLog log, Dictionary <Mechanic, List <MechanicEvent> > mechanicLogs, Dictionary <int, AbstractSingleActor> regroupedMobs) { foreach (AbstractBuffEvent c in log.CombatData.GetBuffData(SkillId)) { AbstractSingleActor amp = null; if (c is BuffRemoveManualEvent rme && Keep(rme, log)) { if (!regroupedMobs.TryGetValue(rme.To.ID, out amp)) { amp = log.FindActor(rme.To, false); regroupedMobs.Add(amp.ID, amp); } } if (amp != null) { mechanicLogs[this].Add(new MechanicEvent(c.Time, this, amp)); } } }
public override void CheckMechanic(ParsedLog log, Dictionary <Mechanic, List <MechanicEvent> > mechanicLogs, Dictionary <int, AbstractSingleActor> regroupedMobs) { foreach (AbstractCastEvent c in log.CombatData.GetCastDataById(SkillId)) { AbstractSingleActor amp = null; if (Keep(c, log)) { if (!regroupedMobs.TryGetValue(c.Caster.ID, out amp)) { amp = log.FindActor(c.Caster, false); regroupedMobs.Add(amp.ID, amp); } } if (amp != null) { mechanicLogs[this].Add(new MechanicEvent(GetTime(c), this, amp)); } } }
public override bool Keep(CombatItem item, ParsedLog log) { AbstractActor actor = log.FindActor(item.Time, _dst ? item.DstInstid : item.SrcInstid); if (actor.GetBoonGraphs(log).TryGetValue(_boonId, out BoonsGraphModel bgm)) { bool has = bgm.IsPresent(log.FightData.ToFightSpace(item.Time), 10); return(has == _has); } else { if (_has) { return(false); } else { return(true); } } }
public override void CheckMechanic(ParsedLog log, Dictionary <Mechanic, List <MechanicEvent> > mechanicLogs, Dictionary <int, AbstractSingleActor> regroupedMobs) { foreach (AbstractDamageEvent c in log.CombatData.GetDamageData(SkillId)) { AbstractSingleActor amp = null; if (Keep(c, log)) { if (!regroupedMobs.TryGetValue(c.From.ID, out amp)) { amp = log.FindActor(c.From, false); if (amp == null) { continue; } regroupedMobs.Add(amp.ID, amp); } } if (amp != null) { mechanicLogs[this].Add(new MechanicEvent(c.Time, this, amp)); } } }