public GeneralStatistics(CombatData combatData, List <Player> players, BuffsContainer boons)
        {
            HashSet <long> skillIDs = combatData.GetSkills();

            // Main boons
            foreach (Buff boon in boons.BuffsByNature[BuffNature.Boon])
            {
                if (skillIDs.Contains(boon.ID))
                {
                    PresentBoons.Add(boon);
                }
            }
            // Main Conditions
            foreach (Buff boon in boons.BuffsByNature[BuffNature.Condition])
            {
                if (skillIDs.Contains(boon.ID))
                {
                    PresentConditions.Add(boon);
                }
            }

            // Important class specific boons
            foreach (Buff boon in boons.BuffsByNature[BuffNature.OffensiveBuffTable])
            {
                if (skillIDs.Contains(boon.ID))
                {
                    PresentOffbuffs.Add(boon);
                }
            }

            foreach (Buff boon in boons.BuffsByNature[BuffNature.DefensiveBuffTable])
            {
                if (skillIDs.Contains(boon.ID))
                {
                    PresentDefbuffs.Add(boon);
                }
            }

            foreach (Buff boon in boons.BuffsBySource[GeneralHelper.Source.FractalInstability])
            {
                if (skillIDs.Contains(boon.ID))
                {
                    PresentFractalInstabilities.Add(boon);
                }
            }

            // All class specific boons
            var remainingBuffsByIds = boons.BuffsByNature[BuffNature.GraphOnlyBuff].GroupBy(x => x.ID).ToDictionary(x => x.Key, x => x.ToList().FirstOrDefault());

            foreach (Player player in players)
            {
                PresentPersonalBuffs[player] = new HashSet <Buff>();
                foreach (AbstractBuffEvent item in combatData.GetBuffData(player.AgentItem))
                {
                    if (item is BuffApplyEvent && item.To == player.AgentItem && remainingBuffsByIds.TryGetValue(item.BuffID, out Buff boon))
                    {
                        PresentPersonalBuffs[player].Add(boon);
                    }
                }
            }
        }
Exemple #2
0
 private static HashSet <AgentItem> GetBannerAgents(CombatData combatData, long id, HashSet <AgentItem> playerAgents)
 {
     return(new HashSet <AgentItem>(combatData.GetBuffData(id).Where(x => x is BuffApplyEvent && x.CreditedBy.Type == AgentItem.AgentType.Gadget && x.CreditedBy.Master == null && playerAgents.Contains(x.To.GetFinalMaster())).Select(x => x.CreditedBy)));
 }
Exemple #3
0
        internal StatisticsHelper(CombatData combatData, IReadOnlyList <Player> players, BuffsContainer buffs)
        {
            IReadOnlyCollection <long> skillIDs = combatData.GetSkills();

            // Main boons
            foreach (Buff boon in buffs.BuffsByClassification[BuffClassification.Boon])
            {
                if (skillIDs.Contains(boon.ID))
                {
                    _presentBoons.Add(boon);
                }
            }
            // Main Conditions
            foreach (Buff condition in buffs.BuffsByClassification[BuffClassification.Condition])
            {
                if (skillIDs.Contains(condition.ID))
                {
                    _presentConditions.Add(condition);
                }
            }

            // Important class specific boons
            foreach (Buff offensiveBuff in buffs.BuffsByClassification[BuffClassification.Offensive])
            {
                if (skillIDs.Contains(offensiveBuff.ID))
                {
                    _presentOffbuffs.Add(offensiveBuff);
                }
            }

            foreach (Buff supportBuff in buffs.BuffsByClassification[BuffClassification.Support])
            {
                if (skillIDs.Contains(supportBuff.ID))
                {
                    _presentSupbuffs.Add(supportBuff);
                }
            }

            foreach (Buff defensiveBuff in buffs.BuffsByClassification[BuffClassification.Defensive])
            {
                if (skillIDs.Contains(defensiveBuff.ID))
                {
                    _presentDefbuffs.Add(defensiveBuff);
                }
            }

            foreach (Buff gearBuff in buffs.BuffsByClassification[BuffClassification.Gear])
            {
                if (skillIDs.Contains(gearBuff.ID))
                {
                    _presentGearbuffs.Add(gearBuff);
                }
            }

            foreach (Buff debuff in buffs.BuffsByClassification[BuffClassification.Debuff])
            {
                if (skillIDs.Contains(debuff.ID))
                {
                    _presentDebuffs.Add(debuff);
                }
            }

            // All class specific boons
            var remainingBuffsByIds = buffs.BuffsByClassification[BuffClassification.Other].GroupBy(x => x.ID).ToDictionary(x => x.Key, x => x.ToList().FirstOrDefault());

            foreach (Player player in players)
            {
                _presentRemainingBuffsPerPlayer[player] = new HashSet <Buff>();
                foreach (AbstractBuffEvent item in combatData.GetBuffData(player.AgentItem))
                {
                    if (item is BuffApplyEvent && item.To == player.AgentItem && remainingBuffsByIds.TryGetValue(item.BuffID, out Buff boon))
                    {
                        _presentRemainingBuffsPerPlayer[player].Add(boon);
                    }
                }
            }
        }