示例#1
0
        internal static bool IsKnownMinionID(AgentItem minion, Spec spec)
        {
            if (minion.Type == AgentItem.AgentType.Gadget)
            {
                return(false);
            }
            long id  = minion.ID;
            bool res = CommonMinions.Contains(id);

            switch (spec)
            {
            //
            case Spec.Elementalist:
            case Spec.Tempest:
            case Spec.Weaver:
            case Spec.Catalyst:
                res |= ElementalistHelper.IsKnownMinionID(id);
                break;

            //
            case Spec.Necromancer:
            case Spec.Scourge:
            case Spec.Harbinger:
                res |= NecromancerHelper.IsKnownMinionID(id);
                break;

            case Spec.Reaper:
                res |= NecromancerHelper.IsKnownMinionID(id);
                res |= ReaperHelper.IsKnownMinionID(id);
                break;

            //
            case Spec.Mesmer:
                res |= MesmerHelper.IsKnownMinionID(id);
                break;

            case Spec.Chronomancer:
                res |= MesmerHelper.IsKnownMinionID(id);
                res |= ChronomancerHelper.IsKnownMinionID(id);
                break;

            case Spec.Mirage:
                res |= MesmerHelper.IsKnownMinionID(id);
                res |= MirageHelper.IsKnownMinionID(id);
                break;

            case Spec.Virtuoso:
                res |= MesmerHelper.IsKnownMinionID(id);
                res |= VirtuosoHelper.IsKnownMinionID(id);
                break;

            //
            case Spec.Thief:
                res |= ThiefHelper.IsKnownMinionID(id);
                break;

            case Spec.Daredevil:
                res |= ThiefHelper.IsKnownMinionID(id);
                res |= DaredevilHelper.IsKnownMinionID(id);
                break;

            case Spec.Deadeye:
                res |= ThiefHelper.IsKnownMinionID(id);
                res |= DeadeyeHelper.IsKnownMinionID(id);
                break;

            case Spec.Specter:
                res |= ThiefHelper.IsKnownMinionID(id);
                res |= SpecterHelper.IsKnownMinionID(id);
                break;

            //
            case Spec.Engineer:
            case Spec.Scrapper:
            case Spec.Holosmith:
                res |= EngineerHelper.IsKnownMinionID(id);
                break;

            case Spec.Mechanist:
                res |= EngineerHelper.IsKnownMinionID(id);
                res |= MechanistHelper.IsKnownMinionID(id);
                break;

            //
            case Spec.Ranger:
            case Spec.Druid:
            case Spec.Soulbeast:
            case Spec.Untamed:
                res |= RangerHelper.IsKnownMinionID(id);
                break;

            //
            case Spec.Revenant:
            case Spec.Herald:
            case Spec.Vindicator:
                res |= RevenantHelper.IsKnownMinionID(id);
                break;

            case Spec.Renegade:
                res |= RevenantHelper.IsKnownMinionID(id);
                res |= RenegadeHelper.IsKnownMinionID(id);
                break;

            //
            case Spec.Guardian:
            case Spec.Dragonhunter:
            case Spec.Firebrand:
            case Spec.Willbender:
                res |= GuardianHelper.IsKnownMinionID(id);
                break;
            }
            return(res);
        }
        //
        public static List <InstantCastEvent> ComputeInstantCastEvents(List <Player> players, CombatData combatData, SkillData skillData, AgentData agentData)
        {
            var instantCastFinders = new HashSet <InstantCastFinder>(_genericInstantCastFinders);
            var res = new List <InstantCastEvent>();

            foreach (Player p in players)
            {
                switch (p.Prof)
                {
                //
                case "Elementalist":
                    ElementalistHelper.InstantCastFinder.ForEach(x => instantCastFinders.Add(x));
                    break;

                case "Tempest":
                    ElementalistHelper.InstantCastFinder.ForEach(x => instantCastFinders.Add(x));
                    TempestHelper.InstantCastFinder.ForEach(x => instantCastFinders.Add(x));
                    break;

                case "Weaver":
                    ElementalistHelper.InstantCastFinder.ForEach(x => instantCastFinders.Add(x));
                    WeaverHelper.InstantCastFinder.ForEach(x => instantCastFinders.Add(x));
                    break;

                //
                case "Necromancer":
                    NecromancerHelper.InstantCastFinder.ForEach(x => instantCastFinders.Add(x));
                    break;

                case "Reaper":
                    NecromancerHelper.InstantCastFinder.ForEach(x => instantCastFinders.Add(x));
                    ReaperHelper.InstantCastFinder.ForEach(x => instantCastFinders.Add(x));
                    break;

                case "Scourge":
                    NecromancerHelper.InstantCastFinder.ForEach(x => instantCastFinders.Add(x));
                    ScourgeHelper.InstantCastFinder.ForEach(x => instantCastFinders.Add(x));
                    break;

                //
                case "Mesmer":
                    MesmerHelper.InstantCastFinder.ForEach(x => instantCastFinders.Add(x));
                    break;

                case "Chronomancer":
                    MesmerHelper.InstantCastFinder.ForEach(x => instantCastFinders.Add(x));
                    ChronomancerHelper.InstantCastFinder.ForEach(x => instantCastFinders.Add(x));
                    break;

                case "Mirage":
                    MesmerHelper.InstantCastFinder.ForEach(x => instantCastFinders.Add(x));
                    MirageHelper.InstantCastFinder.ForEach(x => instantCastFinders.Add(x));
                    res.AddRange(MirageHelper.TranslateMirageCloak(combatData.GetBuffData(40408), skillData));
                    break;

                //
                case "Thief":
                    ThiefHelper.InstantCastFinder.ForEach(x => instantCastFinders.Add(x));
                    break;

                case "Daredevil":
                    ThiefHelper.InstantCastFinder.ForEach(x => instantCastFinders.Add(x));
                    DaredevilHelper.InstantCastFinder.ForEach(x => instantCastFinders.Add(x));
                    break;

                case "Deadeye":
                    ThiefHelper.InstantCastFinder.ForEach(x => instantCastFinders.Add(x));
                    DeadeyeHelper.InstantCastFinder.ForEach(x => instantCastFinders.Add(x));
                    break;

                //
                case "Engineer":
                    EngineerHelper.InstantCastFinder.ForEach(x => instantCastFinders.Add(x));
                    break;

                case "Scrapper":
                    EngineerHelper.InstantCastFinder.ForEach(x => instantCastFinders.Add(x));
                    ScrapperHelper.InstantCastFinder.ForEach(x => instantCastFinders.Add(x));
                    break;

                case "Holosmith":
                    EngineerHelper.InstantCastFinder.ForEach(x => instantCastFinders.Add(x));
                    HolosmithHelper.InstantCastFinder.ForEach(x => instantCastFinders.Add(x));
                    break;

                //
                case "Ranger":
                    RangerHelper.InstantCastFinder.ForEach(x => instantCastFinders.Add(x));
                    break;

                case "Druid":
                    RangerHelper.InstantCastFinder.ForEach(x => instantCastFinders.Add(x));
                    DruidHelper.InstantCastFinder.ForEach(x => instantCastFinders.Add(x));
                    break;

                case "Soulbeast":
                    RangerHelper.InstantCastFinder.ForEach(x => instantCastFinders.Add(x));
                    SoulbeastHelper.InstantCastFinder.ForEach(x => instantCastFinders.Add(x));
                    break;

                //
                case "Revenant":
                    RevenantHelper.InstantCastFinder.ForEach(x => instantCastFinders.Add(x));
                    break;

                case "Herald":
                    RevenantHelper.InstantCastFinder.ForEach(x => instantCastFinders.Add(x));
                    HeraldHelper.InstantCastFinder.ForEach(x => instantCastFinders.Add(x));
                    break;

                case "Renegade":
                    RevenantHelper.InstantCastFinder.ForEach(x => instantCastFinders.Add(x));
                    RenegadeHelper.InstantCastFinder.ForEach(x => instantCastFinders.Add(x));
                    break;

                //
                case "Guardian":
                    GuardianHelper.InstantCastFinder.ForEach(x => instantCastFinders.Add(x));
                    break;

                case "Dragonhunter":
                    GuardianHelper.InstantCastFinder.ForEach(x => instantCastFinders.Add(x));
                    DragonhunterHelper.InstantCastFinder.ForEach(x => instantCastFinders.Add(x));
                    break;

                case "Firebrand":
                    GuardianHelper.InstantCastFinder.ForEach(x => instantCastFinders.Add(x));
                    FirebrandHelper.InstantCastFinder.ForEach(x => instantCastFinders.Add(x));
                    break;

                //
                case "Warrior":
                    WarriorHelper.InstantCastFinder.ForEach(x => instantCastFinders.Add(x));
                    break;

                case "Berserker":
                    WarriorHelper.InstantCastFinder.ForEach(x => instantCastFinders.Add(x));
                    BerserkerHelper.InstantCastFinder.ForEach(x => instantCastFinders.Add(x));
                    break;

                case "Spellbreaker":
                    WarriorHelper.InstantCastFinder.ForEach(x => instantCastFinders.Add(x));
                    SpellbreakerHelper.InstantCastFinder.ForEach(x => instantCastFinders.Add(x));
                    break;
                }
            }
            res.AddRange(ComputeInstantCastEvents(combatData, skillData, agentData, instantCastFinders.ToList()));
            return(res);
        }