public override void EIEvtcParse(FightData fightData, AgentData agentData, List <CombatItem> combatData, List <Player> playerList)
        {
            // make those into npcs
            List <AgentItem> cas       = agentData.GetGadgetsByID((int)ParseEnum.TargetIDS.ConjuredAmalgamate);
            List <AgentItem> leftArms  = agentData.GetGadgetsByID((int)ParseEnum.TargetIDS.CALeftArm);
            List <AgentItem> rightArms = agentData.GetGadgetsByID((int)ParseEnum.TargetIDS.CARightArm);

            foreach (AgentItem ca in cas)
            {
                ca.OverrideType(AgentItem.AgentType.NPC);
            }
            foreach (AgentItem leftArm in leftArms)
            {
                leftArm.OverrideType(AgentItem.AgentType.NPC);
            }
            foreach (AgentItem rightArm in rightArms)
            {
                rightArm.OverrideType(AgentItem.AgentType.NPC);
            }
            agentData.Refresh();
            ComputeFightTargets(agentData, combatData);
            AgentItem sword = agentData.AddCustomAgent(fightData.FightStart, fightData.FightEnd, AgentItem.AgentType.Player, "Conjured Sword\0:Conjured Sword\051", "Sword", 0);

            playerList.Add(new Player(sword, false, true));
            foreach (CombatItem c in combatData)
            {
                if (c.SkillID == 52370 && c.IsStateChange == ParseEnum.StateChange.None && c.IsBuffRemove == ParseEnum.BuffRemove.None &&
                    ((c.IsBuff == 1 && c.BuffDmg >= 0 && c.Value == 0) ||
                     (c.IsBuff == 0 && c.Value >= 0)) && c.DstInstid != 0 && c.IFF == ParseEnum.IFF.Foe)
                {
                    c.OverrideSrcAgent(sword.Agent);
                }
            }
        }
Esempio n. 2
0
        internal override void EIEvtcParse(ulong gw2Build, FightData fightData, AgentData agentData,
                                           List <CombatItem> combatData, IReadOnlyDictionary <uint, AbstractExtensionHandler> extensions)
        {
            IReadOnlyList <AgentItem> sooWons = agentData.GetGadgetsByID((int)ArcDPSEnums.TargetID.SooWonOW);

            if (!sooWons.Any())
            {
                throw new MissingKeyActorsException("Soo-Won not found");
            }

            foreach (AgentItem sooWon in sooWons)
            {
                sooWon.OverrideType(AgentItem.AgentType.NPC);
                sooWon.OverrideID(ArcDPSEnums.TargetID.SooWonOW);
            }

            IReadOnlyList <AgentItem> sooWonTails = agentData.GetGadgetsByID((int)ArcDPSEnums.TrashID.SooWonTail);

            foreach (AgentItem sooWonTail in sooWonTails)
            {
                sooWonTail.OverrideType(AgentItem.AgentType.NPC);
                sooWonTail.OverrideID(ArcDPSEnums.TrashID.SooWonTail);
            }

            agentData.Refresh();
            ComputeFightTargets(agentData, combatData, extensions);
        }
        internal override void EIEvtcParse(ulong gw2Build, FightData fightData, AgentData agentData, List <CombatItem> combatData, List <AbstractSingleActor> friendlies, IReadOnlyDictionary <uint, AbstractExtensionHandler> extensions)
        {
            // make those into npcs
            IReadOnlyList <AgentItem> cas       = agentData.GetGadgetsByID((int)ArcDPSEnums.TargetID.ConjuredAmalgamate);
            IReadOnlyList <AgentItem> leftArms  = agentData.GetGadgetsByID((int)ArcDPSEnums.TargetID.CALeftArm);
            IReadOnlyList <AgentItem> rightArms = agentData.GetGadgetsByID((int)ArcDPSEnums.TargetID.CARightArm);

            foreach (AgentItem ca in cas)
            {
                ca.OverrideType(AgentItem.AgentType.NPC);
            }
            foreach (AgentItem leftArm in leftArms)
            {
                leftArm.OverrideType(AgentItem.AgentType.NPC);
            }
            foreach (AgentItem rightArm in rightArms)
            {
                rightArm.OverrideType(AgentItem.AgentType.NPC);
            }
            agentData.Refresh();
            ComputeFightTargets(agentData, combatData, extensions);
            AgentItem sword = agentData.AddCustomAgent(0, fightData.FightEnd, AgentItem.AgentType.NPC, "Conjured Sword\0:Conjured Sword\051", ParserHelper.Spec.NPC, (int)ArcDPSEnums.TrashID.ConjuredPlayerSword, true);

            friendlies.Add(new NPC(sword));
            foreach (CombatItem c in combatData)
            {
                if (c.IsDamage(extensions) && c.SkillID == 52370)
                {
                    c.OverrideSrcAgent(sword.Agent);
                }
            }
        }
Esempio n. 4
0
        internal override void EIEvtcParse(ulong gw2Build, FightData fightData, AgentData agentData, List <CombatItem> combatData, IReadOnlyDictionary <uint, AbstractExtensionHandler> extensions)
        {
            // make those into npcs
            IReadOnlyList <AgentItem> cas = agentData.GetGadgetsByID(_cn ? (int)ArcDPSEnums.TargetID.ConjuredAmalgamate_CHINA : (int)ArcDPSEnums.TargetID.ConjuredAmalgamate);

            if (!cas.Any())
            {
                throw new MissingKeyActorsException("Conjured Amalgamate not found");
            }
            IReadOnlyList <AgentItem> leftArms  = agentData.GetGadgetsByID(_cn ? (int)ArcDPSEnums.TargetID.CALeftArm_CHINA : (int)ArcDPSEnums.TargetID.CALeftArm);
            IReadOnlyList <AgentItem> rightArms = agentData.GetGadgetsByID(_cn ? (int)ArcDPSEnums.TargetID.CARightArm_CHINA : (int)ArcDPSEnums.TargetID.CARightArm);

            foreach (AgentItem ca in cas)
            {
                ca.OverrideType(AgentItem.AgentType.NPC);
                ca.OverrideID(ArcDPSEnums.TargetID.ConjuredAmalgamate);
            }
            foreach (AgentItem leftArm in leftArms)
            {
                leftArm.OverrideType(AgentItem.AgentType.NPC);
                leftArm.OverrideID(ArcDPSEnums.TargetID.CALeftArm);
            }
            foreach (AgentItem rightArm in rightArms)
            {
                rightArm.OverrideType(AgentItem.AgentType.NPC);
                rightArm.OverrideID(ArcDPSEnums.TargetID.CARightArm);
            }
            agentData.Refresh();
            AgentItem sword = agentData.AddCustomNPCAgent(0, fightData.FightEnd, "Conjured Sword\0:Conjured Sword\051", ParserHelper.Spec.NPC, (int)ArcDPSEnums.TrashID.ConjuredPlayerSword, true);

            ComputeFightTargets(agentData, combatData, extensions);
            foreach (CombatItem c in combatData)
            {
                if (c.IsDamage(extensions) && c.SkillID == 52370)
                {
                    c.OverrideSrcAgent(sword.Agent);
                }
            }
        }
        internal override void ComputeFightTargets(AgentData agentData, List <CombatItem> combatItems)
        {
            int       id        = GetFightTargetsIDs().First();
            AgentItem agentItem = agentData.GetNPCsByID(id).FirstOrDefault();

            // Trigger ID is not NPC
            if (agentItem == null)
            {
                agentItem = agentData.GetGadgetsByID(id).FirstOrDefault();
                if (agentItem != null)
                {
                    _targets.Add(new NPC(agentItem));
                }
            }
            else
            {
                _targets.Add(new NPC(agentItem));
            }
        }
        internal override void ComputeFightTargets(AgentData agentData, List <CombatItem> combatItems, IReadOnlyDictionary <uint, AbstractExtensionHandler> extensions)
        {
            int       id        = GetTargetsIDs().First();
            AgentItem agentItem = agentData.GetNPCsByID(id).FirstOrDefault();

            // Trigger ID is not NPC
            if (agentItem == null)
            {
                agentItem = agentData.GetGadgetsByID(id).FirstOrDefault();
                if (agentItem != null)
                {
                    _targets.Add(new NPC(agentItem));
                }
            }
            else
            {
                _targets.Add(new NPC(agentItem));
            }
            //
            TargetAgents   = new HashSet <AgentItem>(_targets.Select(x => x.AgentItem));
            TrashMobAgents = new HashSet <AgentItem>(_trashMobs.Select(x => x.AgentItem));
        }