public static void AttachMasterToRangerGadgets(List <Player> players, Dictionary <long, List <AbstractDamageEvent> > damageData, Dictionary <long, List <AbstractCastEvent> > castData) { var playerAgents = new HashSet <AgentItem>(players.Select(x => x.AgentItem)); // entangle works fine already HashSet <AgentItem> jacarandaEmbraces = ProfHelper.GetOffensiveGadgetAgents(damageData, 1286, playerAgents); HashSet <AgentItem> blackHoles = ProfHelper.GetOffensiveGadgetAgents(damageData, 31436, playerAgents); var rangers = players.Where(x => x.Prof == "Ranger" || x.Prof == "Soulbeast" || x.Prof == "Druid").ToList(); // if only one ranger, could only be that one if (rangers.Count == 1) { Player ranger = rangers[0]; ProfHelper.SetGadgetMaster(jacarandaEmbraces, ranger.AgentItem); ProfHelper.SetGadgetMaster(blackHoles, ranger.AgentItem); } else if (rangers.Count > 1) { ProfHelper.AttachMasterToGadgetByCastData(castData, jacarandaEmbraces, new List <long> { 44980 }, 1000); ProfHelper.AttachMasterToGadgetByCastData(castData, blackHoles, new List <long> { 31503 }, 1000); } }
public static void AttachMasterToRangerGadgets(IReadOnlyList <Player> players, CombatData combatData) { var playerAgents = new HashSet <AgentItem>(players.Select(x => x.AgentItem)); // entangle works fine already HashSet <AgentItem> jacarandaEmbraces = ProfHelper.GetOffensiveGadgetAgents(combatData, 1286, playerAgents); HashSet <AgentItem> blackHoles = ProfHelper.GetOffensiveGadgetAgents(combatData, 31436, playerAgents); var rangers = players.Where(x => x.BaseSpec == Spec.Ranger).ToList(); // if only one ranger, could only be that one if (rangers.Count == 1) { Player ranger = rangers[0]; ProfHelper.SetGadgetMaster(jacarandaEmbraces, ranger.AgentItem); ProfHelper.SetGadgetMaster(blackHoles, ranger.AgentItem); } else if (rangers.Count > 1) { ProfHelper.AttachMasterToGadgetByCastData(combatData, jacarandaEmbraces, new List <long> { 44980 }, 1000); ProfHelper.AttachMasterToGadgetByCastData(combatData, blackHoles, new List <long> { 31503 }, 1000); } }
protected override void InitAdditionalCombatReplayData(ParsedEvtcLog log) { // Fight related stuff log.FightData.Logic.ComputePlayerCombatReplayActors(this, log, CombatReplay); ProfHelper.ComputeProfessionCombatReplayActors(this, log, CombatReplay); if (CombatReplay.Rotations.Any()) { CombatReplay.Decorations.Add(new FacingDecoration(((int)CombatReplay.TimeOffsets.start, (int)CombatReplay.TimeOffsets.end), new AgentConnector(this), CombatReplay.PolledRotations)); } }
public static void AttachMasterToEngineerTurrets(List<Player> players, Dictionary<long, List<AbstractHealthDamageEvent>> damageData, Dictionary<long, List<AnimatedCastEvent>> castData) { var playerAgents = new HashSet<AgentItem>(players.Select(x => x.AgentItem)); HashSet<AgentItem> flameTurrets = ProfHelper.GetOffensiveGadgetAgents(damageData, 5903, playerAgents); HashSet<AgentItem> rifleTurrets = ProfHelper.GetOffensiveGadgetAgents(damageData, 5841, playerAgents); rifleTurrets.UnionWith(ProfHelper.GetOffensiveGadgetAgents(damageData, 5875, playerAgents)); HashSet<AgentItem> netTurrets = ProfHelper.GetOffensiveGadgetAgents(damageData, 5896, playerAgents); netTurrets.UnionWith(ProfHelper.GetOffensiveGadgetAgents(damageData, 22137, playerAgents)); HashSet<AgentItem> rocketTurrets = ProfHelper.GetOffensiveGadgetAgents(damageData, 6108, playerAgents); rocketTurrets.UnionWith(ProfHelper.GetOffensiveGadgetAgents(damageData, 5914, playerAgents)); HashSet<AgentItem> thumperTurrets = ProfHelper.GetOffensiveGadgetAgents(damageData, 5856, playerAgents); thumperTurrets.UnionWith(ProfHelper.GetOffensiveGadgetAgents(damageData, 5890, playerAgents)); // TODO: need ID here HashSet<AgentItem> harpoonTurrets = ProfHelper.GetOffensiveGadgetAgents(damageData, -1, playerAgents); HashSet<AgentItem> healingTurrets = ProfHelper.GetOffensiveGadgetAgents(damageData, 5958, playerAgents); healingTurrets.RemoveWhere(x => thumperTurrets.Contains(x) || rocketTurrets.Contains(x) || netTurrets.Contains(x) || rifleTurrets.Contains(x) || flameTurrets.Contains(x) || harpoonTurrets.Contains(x)); var engineers = players.Where(x => x.Prof == "Engineer" || x.Prof == "Scrapper" || x.Prof == "Holosmith").ToList(); // if only one engineer, could only be that one if (engineers.Count == 1) { Player engineer = engineers[0]; ProfHelper.SetGadgetMaster(flameTurrets, engineer.AgentItem); ProfHelper.SetGadgetMaster(netTurrets, engineer.AgentItem); ProfHelper.SetGadgetMaster(rocketTurrets, engineer.AgentItem); ProfHelper.SetGadgetMaster(rifleTurrets, engineer.AgentItem); ProfHelper.SetGadgetMaster(thumperTurrets, engineer.AgentItem); ProfHelper.SetGadgetMaster(harpoonTurrets, engineer.AgentItem); ProfHelper.SetGadgetMaster(healingTurrets, engineer.AgentItem); } else if (engineers.Count > 1) { ProfHelper.AttachMasterToGadgetByCastData(castData, flameTurrets, new List<long> { 5836, 5868 }, 1000); ProfHelper.AttachMasterToGadgetByCastData(castData, rifleTurrets, new List<long> { 5818 }, 1000); ProfHelper.AttachMasterToGadgetByCastData(castData, netTurrets, new List<long> { 5837, 5868, 6183 }, 1000); ProfHelper.AttachMasterToGadgetByCastData(castData, rocketTurrets, new List<long> { 5912, 22574, 6183 }, 1000); ProfHelper.AttachMasterToGadgetByCastData(castData, thumperTurrets, new List<long> { 5838 }, 1000); //AttachMasterToGadgetByCastData(castData, harpoonTurrets, new List<long> { 6093, 6183 }, 1000); //AttachMasterToGadgetByCastData(castData, healingTurrets, new List<long> { 5857, 5868 }, 1000); } }
protected override void InitAdditionalCombatReplayData(ParsedEvtcLog log) { log.FightData.Logic.ComputeNPCCombatReplayActors(this, log, CombatReplay); AgentItem master = AgentItem.GetFinalMaster(); if (CombatReplay.Rotations.Any() && (log.FightData.Logic.TargetAgents.Contains(AgentItem) || log.FriendlyAgents.Contains(AgentItem))) { CombatReplay.Decorations.Add(new FacingDecoration(((int)CombatReplay.TimeOffsets.start, (int)CombatReplay.TimeOffsets.end), new AgentConnector(this), CombatReplay.PolledRotations)); } if (master != AgentItem) { AbstractSingleActor masterActor = log.FindActor(master); // Basic linkage CombatReplay.Decorations.Add(new LineDecoration(0, ((int)CombatReplay.TimeOffsets.start, (int)CombatReplay.TimeOffsets.end), "rgba(0, 255, 0, 0.5)", new AgentConnector(this), new AgentConnector(masterActor))); // Prof specific treatment ProfHelper.ComputeMinionCombatReplayActors(this, masterActor, log, CombatReplay); } }
/*private static HashSet<AgentItem> FindBattleStandards(Dictionary<long, List<AbstractBuffEvent>> buffData, HashSet<AgentItem> playerAgents) * { * if (buffData.TryGetValue(725, out List<AbstractBuffEvent> list)) * { * var battleBannerCandidates = new HashSet<AgentItem>(list.Where(x => x is BuffApplyEvent && x.By.Type == AgentItem.AgentType.Gadget && (playerAgents.Contains(x.To) || playerAgents.Contains(x.To.Master))).Select(x => x.By)); * if (battleBannerCandidates.Count > 0) * { * if (buffData.TryGetValue(740, out list)) * { * battleBannerCandidates.IntersectWith(new HashSet<AgentItem>(list.Where(x => x is BuffApplyEvent && x.By.Type == AgentItem.AgentType.Gadget && (playerAgents.Contains(x.To) || playerAgents.Contains(x.To.Master))).Select(x => x.By))); * if (battleBannerCandidates.Count > 0) * { * if (buffData.TryGetValue(719, out list)) * { * battleBannerCandidates.IntersectWith(new HashSet<AgentItem>(list.Where(x => x is BuffApplyEvent && x.By.Type == AgentItem.AgentType.Gadget && (playerAgents.Contains(x.To) || playerAgents.Contains(x.To.Master))).Select(x => x.By))); * return battleBannerCandidates; * } * } * } * } * } * return new HashSet<AgentItem>(); * }*/ public static void AttachMasterToWarriorBanners(List <Player> players, Dictionary <long, List <AbstractBuffEvent> > buffData, Dictionary <long, List <AnimatedCastEvent> > castData) { var playerAgents = new HashSet <AgentItem>(players.Select(x => x.AgentItem)); HashSet <AgentItem> strBanners = GetBannerAgents(buffData, 14417, playerAgents), defBanners = GetBannerAgents(buffData, 14543, playerAgents), disBanners = GetBannerAgents(buffData, 14449, playerAgents), tacBanners = GetBannerAgents(buffData, 14450, playerAgents); //battleBanner = FindBattleStandards(buffData, playerAgents); var warriors = players.Where(x => x.Prof == "Warrior" || x.Prof == "Spellbreaker" || x.Prof == "Berserker").ToList(); // if only one warrior, could only be that one if (warriors.Count == 1) { Player warrior = warriors[0]; ProfHelper.SetGadgetMaster(strBanners, warrior.AgentItem); ProfHelper.SetGadgetMaster(disBanners, warrior.AgentItem); ProfHelper.SetGadgetMaster(tacBanners, warrior.AgentItem); ProfHelper.SetGadgetMaster(defBanners, warrior.AgentItem); //SetBannerMaster(battleBanner, warrior.AgentItem); } else if (warriors.Count > 1) { // land and under water cast ids ProfHelper.AttachMasterToGadgetByCastData(castData, strBanners, new List <long> { 14405, 14572 }, 1000); ProfHelper.AttachMasterToGadgetByCastData(castData, defBanners, new List <long> { 14528, 14570 }, 1000); ProfHelper.AttachMasterToGadgetByCastData(castData, disBanners, new List <long> { 14407, 14571 }, 1000); ProfHelper.AttachMasterToGadgetByCastData(castData, tacBanners, new List <long> { 14408, 14573 }, 1000); //AttachMasterToBanner(castData, battleBanner, 14419, 14569); } }
/*private static HashSet<AgentItem> FindBattleStandards(Dictionary<long, List<AbstractBuffEvent>> buffData, HashSet<AgentItem> playerAgents) * { * if (buffData.TryGetValue(725, out List<AbstractBuffEvent> list)) * { * var battleBannerCandidates = new HashSet<AgentItem>(list.Where(x => x is BuffApplyEvent && x.By.Type == AgentItem.AgentType.Gadget && (playerAgents.Contains(x.To) || playerAgents.Contains(x.To.Master))).Select(x => x.By)); * if (battleBannerCandidates.Count > 0) * { * if (buffData.TryGetValue(740, out list)) * { * battleBannerCandidates.IntersectWith(new HashSet<AgentItem>(list.Where(x => x is BuffApplyEvent && x.By.Type == AgentItem.AgentType.Gadget && (playerAgents.Contains(x.To) || playerAgents.Contains(x.To.Master))).Select(x => x.By))); * if (battleBannerCandidates.Count > 0) * { * if (buffData.TryGetValue(719, out list)) * { * battleBannerCandidates.IntersectWith(new HashSet<AgentItem>(list.Where(x => x is BuffApplyEvent && x.By.Type == AgentItem.AgentType.Gadget && (playerAgents.Contains(x.To) || playerAgents.Contains(x.To.Master))).Select(x => x.By))); * return battleBannerCandidates; * } * } * } * } * } * return new HashSet<AgentItem>(); * }*/ public static void AttachMasterToWarriorBanners(IReadOnlyList <Player> players, CombatData combatData) { var playerAgents = new HashSet <AgentItem>(players.Select(x => x.AgentItem)); HashSet <AgentItem> strBanners = GetBannerAgents(combatData, 14417, playerAgents), defBanners = GetBannerAgents(combatData, 14543, playerAgents), disBanners = GetBannerAgents(combatData, 14449, playerAgents), tacBanners = GetBannerAgents(combatData, 14450, playerAgents); //battleBanner = FindBattleStandards(buffData, playerAgents); var warriors = players.Where(x => x.BaseSpec == Spec.Warrior).ToList(); // if only one warrior, could only be that one if (warriors.Count == 1) { Player warrior = warriors[0]; ProfHelper.SetGadgetMaster(strBanners, warrior.AgentItem); ProfHelper.SetGadgetMaster(disBanners, warrior.AgentItem); ProfHelper.SetGadgetMaster(tacBanners, warrior.AgentItem); ProfHelper.SetGadgetMaster(defBanners, warrior.AgentItem); //SetBannerMaster(battleBanner, warrior.AgentItem); } else if (warriors.Count > 1) { // land and under water cast ids ProfHelper.AttachMasterToGadgetByCastData(combatData, strBanners, new List <long> { 14405, 14572 }, 1000); ProfHelper.AttachMasterToGadgetByCastData(combatData, defBanners, new List <long> { 14528, 14570 }, 1000); ProfHelper.AttachMasterToGadgetByCastData(combatData, disBanners, new List <long> { 14407, 14571 }, 1000); ProfHelper.AttachMasterToGadgetByCastData(combatData, tacBanners, new List <long> { 14408, 14573 }, 1000); //AttachMasterToBanner(castData, battleBanner, 14419, 14569); } }
/*private static HashSet<AgentItem> FindBattleStandards(Dictionary<long, List<AbstractBuffEvent>> buffData, HashSet<AgentItem> playerAgents) * { * if (buffData.TryGetValue(725, out List<AbstractBuffEvent> list)) * { * var battleBannerCandidates = new HashSet<AgentItem>(list.Where(x => x is BuffApplyEvent && x.By.Type == AgentItem.AgentType.Gadget && (playerAgents.Contains(x.To) || playerAgents.Contains(x.To.Master))).Select(x => x.By)); * if (battleBannerCandidates.Count > 0) * { * if (buffData.TryGetValue(740, out list)) * { * battleBannerCandidates.IntersectWith(new HashSet<AgentItem>(list.Where(x => x is BuffApplyEvent && x.By.Type == AgentItem.AgentType.Gadget && (playerAgents.Contains(x.To) || playerAgents.Contains(x.To.Master))).Select(x => x.By))); * if (battleBannerCandidates.Count > 0) * { * if (buffData.TryGetValue(Swiftness, out list)) * { * battleBannerCandidates.IntersectWith(new HashSet<AgentItem>(list.Where(x => x is BuffApplyEvent && x.By.Type == AgentItem.AgentType.Gadget && (playerAgents.Contains(x.To) || playerAgents.Contains(x.To.Master))).Select(x => x.By))); * return battleBannerCandidates; * } * } * } * } * } * return new HashSet<AgentItem>(); * }*/ public static void AttachMasterToWarriorBanners(IReadOnlyList <Player> players, CombatData combatData) { var playerAgents = new HashSet <AgentItem>(players.Select(x => x.AgentItem)); HashSet <AgentItem> strBanners = GetBannerAgents(combatData, BannerOfStrengthEffect, playerAgents), defBanners = GetBannerAgents(combatData, BannerOfDefenseEffect, playerAgents), disBanners = GetBannerAgents(combatData, BannerOfDisciplineEffect, playerAgents), tacBanners = GetBannerAgents(combatData, BannerOfTacticsEffect, playerAgents); //battleBanner = FindBattleStandards(buffData, playerAgents); var warriors = players.Where(x => x.BaseSpec == Spec.Warrior).ToList(); // if only one warrior, could only be that one if (warriors.Count == 1) { Player warrior = warriors[0]; ProfHelper.SetGadgetMaster(strBanners, warrior.AgentItem); ProfHelper.SetGadgetMaster(disBanners, warrior.AgentItem); ProfHelper.SetGadgetMaster(tacBanners, warrior.AgentItem); ProfHelper.SetGadgetMaster(defBanners, warrior.AgentItem); //SetBannerMaster(battleBanner, warrior.AgentItem); } else if (warriors.Count > 1) { // land and under water cast ids ProfHelper.AttachMasterToGadgetByCastData(combatData, strBanners, new List <long> { BannerOfStrengthSkill, BannerOfStrengthSkillUW }, 1000); ProfHelper.AttachMasterToGadgetByCastData(combatData, defBanners, new List <long> { BannerOfDefenseSkill, BannerOfDefenseSkillUW }, 1000); ProfHelper.AttachMasterToGadgetByCastData(combatData, disBanners, new List <long> { BannerOfDisciplineSkill, BannerOfDisciplineSkillUW }, 1000); ProfHelper.AttachMasterToGadgetByCastData(combatData, tacBanners, new List <long> { BannerOfTacticsSkill, BannerOfTacticsSkillUW }, 1000); //AttachMasterToBanner(castData, battleBanner, 14419, 14569); } }
public static void AttachMasterToEngineerTurrets(IReadOnlyList <Player> players, CombatData combatData) { var playerAgents = new HashSet <AgentItem>(players.Select(x => x.AgentItem)); HashSet <AgentItem> flameTurrets = ProfHelper.GetOffensiveGadgetAgents(combatData, 5903, playerAgents); HashSet <AgentItem> rifleTurrets = ProfHelper.GetOffensiveGadgetAgents(combatData, 5841, playerAgents); rifleTurrets.UnionWith(ProfHelper.GetOffensiveGadgetAgents(combatData, 5875, playerAgents)); HashSet <AgentItem> netTurrets = ProfHelper.GetOffensiveGadgetAgents(combatData, 5896, playerAgents); netTurrets.UnionWith(ProfHelper.GetOffensiveGadgetAgents(combatData, 22137, playerAgents)); HashSet <AgentItem> rocketTurrets = ProfHelper.GetOffensiveGadgetAgents(combatData, 6108, playerAgents); rocketTurrets.UnionWith(ProfHelper.GetOffensiveGadgetAgents(combatData, 5914, playerAgents)); HashSet <AgentItem> thumperTurrets = ProfHelper.GetOffensiveGadgetAgents(combatData, 5856, playerAgents); thumperTurrets.UnionWith(ProfHelper.GetOffensiveGadgetAgents(combatData, 5890, playerAgents)); // TODO: need ID here HashSet <AgentItem> harpoonTurrets = ProfHelper.GetOffensiveGadgetAgents(combatData, -1, playerAgents); HashSet <AgentItem> healingTurrets = ProfHelper.GetOffensiveGadgetAgents(combatData, 5958, playerAgents); healingTurrets.RemoveWhere(x => thumperTurrets.Contains(x) || rocketTurrets.Contains(x) || netTurrets.Contains(x) || rifleTurrets.Contains(x) || flameTurrets.Contains(x) || harpoonTurrets.Contains(x)); var engineers = players.Where(x => x.BaseSpec == Spec.Engineer).ToList(); // if only one engineer, could only be that one if (engineers.Count == 1) { Player engineer = engineers[0]; ProfHelper.SetGadgetMaster(flameTurrets, engineer.AgentItem); ProfHelper.SetGadgetMaster(netTurrets, engineer.AgentItem); ProfHelper.SetGadgetMaster(rocketTurrets, engineer.AgentItem); ProfHelper.SetGadgetMaster(rifleTurrets, engineer.AgentItem); ProfHelper.SetGadgetMaster(thumperTurrets, engineer.AgentItem); ProfHelper.SetGadgetMaster(harpoonTurrets, engineer.AgentItem); ProfHelper.SetGadgetMaster(healingTurrets, engineer.AgentItem); } else if (engineers.Count > 1) { ProfHelper.AttachMasterToGadgetByCastData(combatData, flameTurrets, new List <long> { 5836, 5868 }, 1000); ProfHelper.AttachMasterToGadgetByCastData(combatData, rifleTurrets, new List <long> { 5818 }, 1000); ProfHelper.AttachMasterToGadgetByCastData(combatData, netTurrets, new List <long> { 5837, 5868, 6183 }, 1000); ProfHelper.AttachMasterToGadgetByCastData(combatData, rocketTurrets, new List <long> { 5912, 22574, 6183 }, 1000); ProfHelper.AttachMasterToGadgetByCastData(combatData, thumperTurrets, new List <long> { 5838 }, 1000); //AttachMasterToGadgetByCastData(castData, harpoonTurrets, new List<long> { 6093, 6183 }, 1000); //AttachMasterToGadgetByCastData(castData, healingTurrets, new List<long> { 5857, 5868 }, 1000); } }
public static void AttachMasterToEngineerTurrets(IReadOnlyList <Player> players, CombatData combatData) { var playerAgents = new HashSet <AgentItem>(players.Select(x => x.AgentItem)); HashSet <AgentItem> flameTurrets = ProfHelper.GetOffensiveGadgetAgents(combatData, FireTurretDamage, playerAgents); HashSet <AgentItem> rifleTurrets = ProfHelper.GetOffensiveGadgetAgents(combatData, RifleTurretDamage, playerAgents); rifleTurrets.UnionWith(ProfHelper.GetOffensiveGadgetAgents(combatData, RifleTurretDamageUW, playerAgents)); HashSet <AgentItem> netTurrets = ProfHelper.GetOffensiveGadgetAgents(combatData, NetTurretDamage, playerAgents); netTurrets.UnionWith(ProfHelper.GetOffensiveGadgetAgents(combatData, NetTurretDamageUW, playerAgents)); HashSet <AgentItem> rocketTurrets = ProfHelper.GetOffensiveGadgetAgents(combatData, RocketTurretDamage, playerAgents); rocketTurrets.UnionWith(ProfHelper.GetOffensiveGadgetAgents(combatData, RocketTurretDamageUW, playerAgents)); HashSet <AgentItem> thumperTurrets = ProfHelper.GetOffensiveGadgetAgents(combatData, ThumperTurret, playerAgents); thumperTurrets.UnionWith(ProfHelper.GetOffensiveGadgetAgents(combatData, ThumperTurretUW, playerAgents)); // TODO: need ID here HashSet <AgentItem> harpoonTurrets = ProfHelper.GetOffensiveGadgetAgents(combatData, Unknown, playerAgents); HashSet <AgentItem> healingTurrets = ProfHelper.GetOffensiveGadgetAgents(combatData, TurretExplosion, playerAgents); healingTurrets.RemoveWhere(x => thumperTurrets.Contains(x) || rocketTurrets.Contains(x) || netTurrets.Contains(x) || rifleTurrets.Contains(x) || flameTurrets.Contains(x) || harpoonTurrets.Contains(x)); var engineers = players.Where(x => x.BaseSpec == Spec.Engineer).ToList(); // if only one engineer, could only be that one if (engineers.Count == 1) { Player engineer = engineers[0]; ProfHelper.SetGadgetMaster(flameTurrets, engineer.AgentItem); ProfHelper.SetGadgetMaster(netTurrets, engineer.AgentItem); ProfHelper.SetGadgetMaster(rocketTurrets, engineer.AgentItem); ProfHelper.SetGadgetMaster(rifleTurrets, engineer.AgentItem); ProfHelper.SetGadgetMaster(thumperTurrets, engineer.AgentItem); ProfHelper.SetGadgetMaster(harpoonTurrets, engineer.AgentItem); ProfHelper.SetGadgetMaster(healingTurrets, engineer.AgentItem); } else if (engineers.Count > 1) { ProfHelper.AttachMasterToGadgetByCastData(combatData, flameTurrets, new List <long> { FlameTurretCast, SupplyCrate }, 1000); ProfHelper.AttachMasterToGadgetByCastData(combatData, rifleTurrets, new List <long> { RifleTurretCast }, 1000); ProfHelper.AttachMasterToGadgetByCastData(combatData, netTurrets, new List <long> { NetTurretCast, SupplyCrate, SupplyCrateUW }, 1000); ProfHelper.AttachMasterToGadgetByCastData(combatData, rocketTurrets, new List <long> { RocketTurretCast, RocketTurretCast2, SupplyCrateUW }, 1000); ProfHelper.AttachMasterToGadgetByCastData(combatData, thumperTurrets, new List <long> { ThumperTurretCast }, 1000); //AttachMasterToGadgetByCastData(castData, harpoonTurrets, new List<long> { 6093, 6183 }, 1000); //AttachMasterToGadgetByCastData(castData, healingTurrets, new List<long> { 5857, 5868 }, 1000); } }