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); } } }
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); } } }
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)); }