Exemplo n.º 1
0
        internal bool Keep(FightLogic.ParseMode mode, EvtcParserSettings parserSettings)
        {
            // Remove target and approx based damage mods from PvP contexts
            if (this is BuffDamageModifierTarget || Approximate)
            {
                if (mode == FightLogic.ParseMode.WvW || mode == FightLogic.ParseMode.sPvP)
                {
                    return(false);
                }
            }
            if (Mode == DamageModifierMode.All)
            {
                return(true);
            }
            switch (mode)
            {
            case FightLogic.ParseMode.Unknown:
            case FightLogic.ParseMode.Instanced5:
            case FightLogic.ParseMode.Instanced10:
            case FightLogic.ParseMode.Benchmark:
                return(Mode == DamageModifierMode.PvE);

            case FightLogic.ParseMode.WvW:
                return(Mode == DamageModifierMode.WvW || Mode == DamageModifierMode.sPvPWvW);

            case FightLogic.ParseMode.sPvP:
                return(Mode == DamageModifierMode.sPvP || Mode == DamageModifierMode.sPvPWvW);
            }
            return(false);
        }
Exemplo n.º 2
0
        public bool Keep(FightLogic.ParseMode mode)
        {
            if (Mode == DamageModifierMode.All)
            {
                if (mode == FightLogic.ParseMode.WvW)
                {
                    return(!(this is BuffDamageModifierTarget));
                }
                return(true);
            }
            switch (mode)
            {
            case FightLogic.ParseMode.Unknown:
            case FightLogic.ParseMode.Instanced5:
            case FightLogic.ParseMode.Instanced10:
            case FightLogic.ParseMode.Benchmark:
                return(Mode == DamageModifierMode.PvE);

            case FightLogic.ParseMode.WvW:
                return(!(this is BuffDamageModifierTarget) && (Mode == DamageModifierMode.WvW || Mode == DamageModifierMode.sPvPWvW));

            case FightLogic.ParseMode.sPvP:
                return(Mode == DamageModifierMode.sPvP || Mode == DamageModifierMode.sPvPWvW);
            }
            return(false);
        }
        internal bool Keep(FightLogic.ParseMode mode, EvtcParserSettings parserSettings)
        {
            if (Mode == DamageModifierMode.All)
            {
                if (mode == FightLogic.ParseMode.WvW && !parserSettings.DetailedWvWParse)
                {
                    return(!(this is BuffDamageModifierTarget));
                }
                return(true);
            }
            switch (mode)
            {
            case FightLogic.ParseMode.Unknown:
            case FightLogic.ParseMode.Instanced5:
            case FightLogic.ParseMode.Instanced10:
            case FightLogic.ParseMode.Benchmark:
                return(Mode == DamageModifierMode.PvE);

            case FightLogic.ParseMode.WvW:
                return(!(!parserSettings.DetailedWvWParse && this is BuffDamageModifierTarget) && (Mode == DamageModifierMode.WvW || Mode == DamageModifierMode.sPvPWvW));

            case FightLogic.ParseMode.sPvP:
                return(Mode == DamageModifierMode.sPvP || Mode == DamageModifierMode.sPvPWvW);
            }
            return(false);
        }
Exemplo n.º 4
0
        public DamageModifiersContainer(ulong build, FightLogic.ParseMode mode)
        {
            var currentDamageMods = new List <DamageModifier>();

            foreach (List <DamageModifier> boons in AllDamageModifiers)
            {
                currentDamageMods.AddRange(boons.Where(x => x.MaxBuild > build && build >= x.MinBuild && x.Keep(mode)));
            }
            DamageModifiersPerSource = currentDamageMods.GroupBy(x => x.Src).ToDictionary(x => x.Key, x => x.ToList());
            DamageModifiersByName    = currentDamageMods.GroupBy(x => x.Name).ToDictionary(x => x.Key, x => x.ToList().First());
        }
Exemplo n.º 5
0
        internal DamageModifiersContainer(ulong build, FightLogic.ParseMode mode, EvtcParserSettings parserSettings)
        {
            var AllDamageModifiers = new List <List <DamageModifier> >
            {
                DamageModifier.ItemDamageModifiers,
                DamageModifier.GearDamageModifiers,
                DamageModifier.CommonDamageModifiers,
                DamageModifier.FightSpecificDamageModifiers,
                //
                RevenantHelper.DamageMods,
                HeraldHelper.DamageMods,
                RenegadeHelper.DamageMods,
                //
                WarriorHelper.DamageMods,
                BerserkerHelper.DamageMods,
                SpellbreakerHelper.DamageMods,
                //
                GuardianHelper.DamageMods,
                DragonhunterHelper.DamageMods,
                FirebrandHelper.DamageMods,
                //
                EngineerHelper.DamageMods,
                ScrapperHelper.DamageMods,
                HolosmithHelper.DamageMods,
                //
                ThiefHelper.DamageMods,
                DaredevilHelper.DamageMods,
                DeadeyeHelper.DamageMods,
                //
                RangerHelper.DamageMods,
                DruidHelper.DamageMods,
                SoulbeastHelper.DamageMods,
                //
                MesmerHelper.DamageMods,
                ChronomancerHelper.DamageMods,
                MirageHelper.DamageMods,
                //
                NecromancerHelper.DamageMods,
                ReaperHelper.DamageMods,
                ScourgeHelper.DamageMods,
                //
                ElementalistHelper.DamageMods,
                TempestHelper.DamageMods,
                WeaverHelper.DamageMods,
            };
            var currentDamageMods = new List <DamageModifier>();

            foreach (List <DamageModifier> boons in AllDamageModifiers)
            {
                currentDamageMods.AddRange(boons.Where(x => x.Available(build) && x.Keep(mode, parserSettings)));
            }
            DamageModifiersPerSource = currentDamageMods.GroupBy(x => x.Src).ToDictionary(x => x.Key, x => (IReadOnlyList <DamageModifier>)x.ToList());
            DamageModifiersByName    = currentDamageMods.GroupBy(x => x.Name).ToDictionary(x => x.Key, x =>
            {
                var list = x.ToList();
                if (list.Count > 1)
                {
                    throw new InvalidDataException("Same name present multiple times in damage mods - " + x.First().Name);
                }
                return(list.First());
            });
        }