internal override void CheckSuccess(CombatData combatData, AgentData agentData, FightData fightData, IReadOnlyCollection <AgentItem> playerAgents) { base.CheckSuccess(combatData, agentData, fightData, playerAgents); // reward or death worked if (fightData.Success) { return; } AbstractSingleActor skorvald = Targets.FirstOrDefault(x => x.ID == (int)ArcDPSEnums.TargetID.Skorvald); if (skorvald == null) { throw new MissingKeyActorsException("Skorvald not found"); } AbstractHealthDamageEvent lastDamageTaken = combatData.GetDamageTakenData(skorvald.AgentItem).LastOrDefault(x => (x.HealthDamage > 0) && playerAgents.Contains(x.From.GetFinalMaster())); if (lastDamageTaken != null) { BuffApplyEvent invul895Apply = combatData.GetBuffData(895).OfType <BuffApplyEvent>().Where(x => x.To == skorvald.AgentItem && x.Time > lastDamageTaken.Time - 500).LastOrDefault(); if (invul895Apply != null) { fightData.SetSuccess(true, Math.Min(invul895Apply.Time, lastDamageTaken.Time)); } } }
internal override List <PhaseData> GetPhases(ParsedEvtcLog log, bool requirePhases) { List <PhaseData> phases = GetInitialPhase(log); AbstractSingleActor cairn = Targets.FirstOrDefault(x => x.ID == (int)ArcDPSEnums.TargetID.Cairn); if (cairn == null) { throw new MissingKeyActorsException("Cairn not found"); } phases[0].AddTarget(cairn); if (!requirePhases) { return(phases); } BuffApplyEvent enrageApply = log.CombatData.GetBuffData(EnragedCairn).OfType <BuffApplyEvent>().FirstOrDefault(x => x.To == cairn.AgentItem); if (enrageApply != null) { var normalPhase = new PhaseData(0, enrageApply.Time) { Name = "Calm" }; normalPhase.AddTarget(cairn); var enragePhase = new PhaseData(enrageApply.Time + 1, log.FightData.FightEnd) { Name = "Angry" }; enragePhase.AddTarget(cairn); phases.Add(normalPhase); phases.Add(enragePhase); } return(phases); }
protected bool Keep(BuffApplyEvent c, ParsedEvtcLog log) { if (_triggerCondition != null) { return(_triggerCondition(c, log)); } return(true); }
internal override void CheckSuccess(CombatData combatData, AgentData agentData, FightData fightData, IReadOnlyCollection <AgentItem> playerAgents) { AbstractSingleActor mordremoth = Targets.FirstOrDefault(x => x.ID == (int)ArcDPSEnums.TargetID.Mordremoth); if (mordremoth == null) { throw new EvtcAgentException("Mordremoth not found"); } BuffApplyEvent buffApply = combatData.GetBuffData(Determined895).OfType <BuffApplyEvent>().LastOrDefault(x => x.To == mordremoth.AgentItem); if (buffApply != null) { fightData.SetSuccess(true, mordremoth.LastAware); } }
internal override void CheckSuccess(CombatData combatData, AgentData agentData, FightData fightData, IReadOnlyCollection <AgentItem> playerAgents) { base.CheckSuccess(combatData, agentData, fightData, playerAgents); if (!fightData.Success) { AbstractSingleActor echoOfScarlet = Targets.FirstOrDefault(x => x.ID == (int)ArcDPSEnums.TargetID.EchoOfScarletBriar); if (echoOfScarlet != null) { AbstractSingleActor maiTrin = Targets.FirstOrDefault(x => x.ID == (int)ArcDPSEnums.TargetID.MaiTrinStrike); if (maiTrin == null) { throw new MissingKeyActorsException("Mai Trin not found"); } BuffApplyEvent buffApply = combatData.GetBuffData(895).OfType <BuffApplyEvent>().Where(x => x.To == maiTrin.AgentItem).LastOrDefault(); if (buffApply != null && buffApply.Time > echoOfScarlet.FirstAware) { fightData.SetSuccess(true, buffApply.Time); } } } }