public override void CheckMechanic(ParsedLog log, Dictionary <ushort, DummyActor> regroupedMobs) { MechanicData mechData = log.MechanicData; CombatData combatData = log.CombatData; HashSet <ushort> playersIds = log.PlayerIDs; IEnumerable <AgentItem> agents = log.AgentData.GetAgentsByID((ushort)SkillId); foreach (AgentItem a in agents) { List <CombatItem> combatitems = combatData.GetDamageTakenData(a.InstID, a.FirstAware, a.LastAware); foreach (CombatItem c in combatitems) { if (c.IsBuff > 0 || !c.ResultEnum.IsHit() || !Keep(c, log)) { continue; } foreach (Player p in log.PlayerList) { if (c.SrcInstid == p.InstID || c.SrcMasterInstid == p.InstID) { mechData[this].Add(new MechanicLog(log.FightData.ToFightSpace(c.Time), this, p)); } } } } }
public override void CheckMechanic(ParsedLog log, Dictionary <ushort, DummyActor> regroupedMobs) { MechanicData mechData = log.MechanicData; CombatData combatData = log.CombatData; HashSet <ushort> playersIds = log.PlayerIDs; foreach (Player p in log.PlayerList) { List <CombatItem> cList = new List <CombatItem>(); switch (SkillId) { case SkillItem.DeathId: cList = combatData.GetStatesData(p.InstID, ParseEnum.StateChange.ChangeDead, log.FightData.FightStart, log.FightData.FightEnd); break; case SkillItem.DownId: cList = combatData.GetStatesData(p.InstID, ParseEnum.StateChange.ChangeDown, log.FightData.FightStart, log.FightData.FightEnd); List <CombatItem> downByVaporForm = combatData.GetBoonData(5620).Where(x => x.SrcInstid == p.InstID && x.IsBuffRemove == ParseEnum.BuffRemove.All).ToList(); foreach (CombatItem c in downByVaporForm) { cList.RemoveAll(x => Math.Abs(x.Time - c.Time) < 20); } break; case SkillItem.ResurrectId: cList = log.CombatData.GetCastData(p.InstID, log.FightData.FightStart, log.FightData.FightEnd).Where(x => x.SkillID == SkillItem.ResurrectId && x.IsActivation.StartCasting()).ToList(); break; } foreach (CombatItem mechItem in cList) { mechData[this].Add(new MechanicLog(log.FightData.ToFightSpace(mechItem.Time), this, p)); } } }
public override void CheckMechanic(ParsedLog log, Dictionary <ushort, DummyActor> regroupedMobs) { MechanicData mechData = log.MechanicData; CombatData combatData = log.CombatData; HashSet <ushort> playersIds = log.PlayerIDs; foreach (AgentItem a in log.AgentData.GetAgentByType(AgentItem.AgentType.NPC).Where(x => x.ID == SkillId)) { if (!regroupedMobs.TryGetValue(a.ID, out DummyActor amp)) { amp = new DummyActor(a); regroupedMobs.Add(a.ID, amp); } mechData[this].Add(new MechanicLog(log.FightData.ToFightSpace(a.FirstAware), this, amp)); } }
public override void CheckMechanic(ParsedLog log, Dictionary <ushort, DummyActor> regroupedMobs) { MechanicData mechData = log.MechanicData; CombatData combatData = log.CombatData; HashSet <ushort> playersIds = log.PlayerIDs; foreach (Player p in log.PlayerList) { foreach (CombatItem c in log.CombatData.GetCastDataById(SkillId)) { if (!c.IsActivation.StartCasting() && c.SrcInstid == p.InstID && Keep(c, log)) { mechData[this].Add(new MechanicLog(log.FightData.ToFightSpace(c.Time), this, p)); } } } }
public override void CheckMechanic(ParsedLog log, Dictionary <ushort, DummyActor> regroupedMobs) { MechanicData mechData = log.MechanicData; CombatData combatData = log.CombatData; HashSet <ushort> playersIds = log.PlayerIDs; foreach (Player p in log.PlayerList) { foreach (CombatItem c in log.CombatData.GetBoonData(SkillId)) { if (c.IsBuffRemove == ParseEnum.BuffRemove.Manual && p.InstID == c.SrcInstid && Keep(c, log)) { mechData[this].Add(new MechanicLog(log.FightData.ToFightSpace(c.Time), this, p)); } } } }
public override void CheckMechanic(ParsedLog log, Dictionary <ushort, DummyActor> regroupedMobs) { MechanicData mechData = log.MechanicData; CombatData combatData = log.CombatData; HashSet <ushort> playersIds = log.PlayerIDs; foreach (CombatItem c in log.CombatData.GetBoonData(SkillId)) { DummyActor amp = null; if (c.IsBuffRemove == ParseEnum.BuffRemove.Manual && Keep(c, log)) { Target target = log.FightData.Logic.Targets.Find(x => x.InstID == c.SrcInstid && x.FirstAware <= c.Time && x.LastAware >= c.Time); if (target != null) { amp = target; } else { AgentItem a = log.AgentData.GetAgent(c.SrcAgent, c.Time); if (playersIds.Contains(a.InstID)) { continue; } else if (a.MasterAgent != 0) { AgentItem m = log.AgentData.GetAgent(a.MasterAgent, c.Time); if (playersIds.Contains(m.InstID)) { continue; } } if (!regroupedMobs.TryGetValue(a.ID, out amp)) { amp = new DummyActor(a); regroupedMobs.Add(a.ID, amp); } } } if (amp != null) { mechData[this].Add(new MechanicLog(log.FightData.ToFightSpace(c.Time), this, amp)); } } }
public override void CheckMechanic(ParsedLog log, Dictionary <ushort, DummyActor> regroupedMobs) { MechanicData mechData = log.MechanicData; CombatData combatData = log.CombatData; HashSet <ushort> playersIds = log.PlayerIDs; foreach (Player p in log.PlayerList) { List <CombatItem> combatitems = combatData.GetDamageTakenData(p.InstID, p.FirstAware, p.LastAware); foreach (CombatItem c in combatitems) { if (!(c.SkillID == SkillId) || (c.IsBuff == 0 && !c.ResultEnum.IsHit()) || (c.IsBuff > 0 && c.Result > 0) || !Keep(c, log)) { continue; } mechData[this].Add(new MechanicLog(log.FightData.ToFightSpace(c.Time), this, p)); } } }