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));
                }
            }
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
 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);
            }
        }
Ejemplo n.º 5
0
 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);
             }
         }
     }
 }