Пример #1
0
        public static void solve(CharacterCalculationsShadowPriest calculatedStats, CalculationOptionsShadowPriest calcOpts, BossOptions bossOpts)
        {
            Stats         stats     = calculatedStats.BasicStats;
            Character     character = calculatedStats.LocalCharacter;
            PriestTalents talents   = character.PriestTalents;

            Solver   e;
            Rotation rot;

            float FightDuration = bossOpts.BerserkTimer;

            // WITHOUT PROCS
            e   = new Solver(stats, new Stats {
            }, talents, calcOpts);
            rot = e.getPriorityRotation();

            calculatedStats.DpsPoints      = rot.DPS;
            calculatedStats.SurvivalPoints = stats.Stamina / FightDuration; //TODO: meaningful surv points

            calculatedStats.CombatStats = stats.Clone();

            calculatedStats.DevouringPlauge = rot.DP;
            calculatedStats.MindBlast       = rot.MB;
            calculatedStats.MindFlay        = rot.MF;
            calculatedStats.MindSpike       = rot.Spike;
            //calculatedStats.PowerWordShield = rot.shield;
            calculatedStats.ShadowFiend     = rot.Fiend;
            calculatedStats.ShadowWordDeath = rot.SWD;
            calculatedStats.ShadowWordPain  = rot.SWP;
            calculatedStats.VampiricTouch   = rot.VT;

            calculatedStats.Rotation        = rot.ToString();
            calculatedStats.RotationDetails = rot.ToDetailedString();
        }
Пример #2
0
 public BurstCalculations(Stats stats, CalculationOptionsShadowPriest options, BossOptions boss, PriestTalents talents)
 {
     _stats   = stats;
     _boss    = boss;
     _talents = talents;
     _options = options;
 }
Пример #3
0
        public static void solve(CharacterCalculationsShadowPriest calculatedStats, CalculationOptionsShadowPriest calcOpts, BossOptions bossOpts)
        {
            Stats stats = calculatedStats.BasicStats;
            Character character = calculatedStats.LocalCharacter;
            PriestTalents talents = character.PriestTalents;

            Solver e;
            Rotation rot;

            float FightDuration = bossOpts.BerserkTimer;

            // WITHOUT PROCS
            e = new Solver(stats, new Stats{}, talents, calcOpts);
            rot = e.getPriorityRotation();

            calculatedStats.DpsPoints = rot.DPS;
            calculatedStats.SurvivalPoints = stats.Stamina / FightDuration; //TODO: meaningful surv points

            calculatedStats.CombatStats = stats.Clone();

            calculatedStats.DevouringPlauge = rot.DP;
            calculatedStats.MindBlast = rot.MB;
            calculatedStats.MindFlay = rot.MF;
            calculatedStats.MindSpike = rot.Spike;
            //calculatedStats.PowerWordShield = rot.shield;
            calculatedStats.ShadowFiend = rot.Fiend;
            calculatedStats.ShadowWordDeath = rot.SWD;
            calculatedStats.ShadowWordPain = rot.SWP;
            calculatedStats.VampiricTouch = rot.VT;

            calculatedStats.Rotation = rot.ToString();
            calculatedStats.RotationDetails = rot.ToDetailedString();

        }
Пример #4
0
 public BaseCharacterStatCalculations(Stats stats, CalculationOptionsShadowPriest options, BossOptions boss, PriestTalents talents)
 {
     _stats   = stats;
     _target  = boss;
     _talents = talents;
     _options = options;
 }
Пример #5
0
        protected override void LoadCalculationOptions()
        {
            loading = true;
            if (Character.CalculationOptions == null)
            {
                Character.CalculationOptions = new CalculationOptionsShadowPriest();
            }

            CalculationOptionsShadowPriest calcOpts = Character.CalculationOptions as CalculationOptionsShadowPriest;

            cmbLength.Value   = (decimal)calcOpts.FightDuration;
            cmbManaAmt.Text   = calcOpts.ManaAmt.ToString();
            cmbManaTime.Value = (decimal)calcOpts.ManaTime;
            cmbSpriest.Value  = (decimal)calcOpts.Spriest;
            lsSpellPriopity.Items.Clear();
            if (Character.Race != Character.CharacterRace.NightElf)
            {
                calcOpts.SpellPriority.Remove("Starshards");
            }
            else if (!calcOpts.SpellPriority.Contains("Starshards"))
            {
                calcOpts.SpellPriority.Add("Starshards");
            }
            if (Character.Race != Character.CharacterRace.Undead)
            {
                calcOpts.SpellPriority.Remove("Devouring Plague");
            }
            else if (!calcOpts.SpellPriority.Contains("Devouring Plague"))
            {
                calcOpts.SpellPriority.Add("Devouring Plague");
            }
            lsSpellPriopity.Items.AddRange(calcOpts.SpellPriority.ToArray());

            loading = false;
        }
Пример #6
0
        private void bChangePriority_Click(object sender, EventArgs e)
        {
            CalculationOptionsShadowPriest calcOpts = Character.CalculationOptions as CalculationOptionsShadowPriest;
            SpellPriorityForm priority = new SpellPriorityForm(calcOpts.SpellPriority, lsSpellPriopity);

            priority.Show();
        }
Пример #7
0
        public override ICalculationOptionBase DeserializeDataObject(string xml)
        {
            XmlSerializer serializer = new XmlSerializer(typeof(CalculationOptionsShadowPriest));
            StringReader  reader     = new StringReader(xml);
            CalculationOptionsShadowPriest calcOpts = serializer.Deserialize(reader) as CalculationOptionsShadowPriest;

            return(calcOpts);
        }
 private void cbTargetLevel_SelectedIndexChanged(object sender, EventArgs e)
 {
     if (!loading)
     {
         CalculationOptionsShadowPriest calcOpts = Character.CalculationOptions as CalculationOptionsShadowPriest;
         calcOpts.TargetLevel = cbTargetLevel.SelectedIndex;
         Character.OnCalculationsInvalidated();
     }
 }
Пример #9
0
 private void cbDrums_CheckedChanged(object sender, EventArgs e)
 {
     if (!loading)
     {
         CalculationOptionsShadowPriest calcOpts = Character.CalculationOptions as CalculationOptionsShadowPriest;
         calcOpts.UseYourDrum = cbDrums.Checked;
         Character.OnItemsChanged();
     }
 }
 private void cmbManaAmt_SelectedIndexChanged(object sender, EventArgs e)
 {
     if (!loading)
     {
         CalculationOptionsShadowPriest calcOpts = Character.CalculationOptions as CalculationOptionsShadowPriest;
         calcOpts.ManaPot = cmbManaAmt.SelectedIndex;
         Character.OnCalculationsInvalidated();
     }
 }
Пример #11
0
 private void cmbLength_ValueChanged(object sender, EventArgs e)
 {
     if (!loading)
     {
         CalculationOptionsShadowPriest calcOpts = Character.CalculationOptions as CalculationOptionsShadowPriest;
         calcOpts.FightDuration = (float)cmbLength.Value;
         Character.OnItemsChanged();
     }
 }
Пример #12
0
        public Solver(Stats playerStats, TalentTree playerTalentTree, CalculationOptionsShadowPriest calculationOptions)
        {
            PlayerStats        = playerStats;
            PlayerTalentTree   = playerTalentTree;
            CalculationOptions = calculationOptions;
            SpellPriority      = new List <Spell>(CalculationOptions.SpellPriority.Count);
            foreach (string spellname in calculationOptions.SpellPriority)
            {
                SpellPriority.Add(SpellFactory.CreateSpell(spellname, playerStats, playerTalentTree));
            }

            HitChance       = PlayerStats.SpellHitRating / 12.6f;
            ShadowHitChance = 83.0f + (PlayerStats.SpellHitRating + playerTalentTree.GetTalent("Shadow Focus").PointsInvested * 12.6f * 2.0f) / 12.6f;
            if (ShadowHitChance > 99.0f)
            {
                ShadowHitChance = 99.0f;
            }

            Trinkets         = new List <Trinket>();
            ShadowCritChance = PlayerStats.SpellCrit + playerTalentTree.GetTalent("Shadow Power").PointsInvested * 3;
            Sequence         = new Dictionary <float, Spell>();
            if (playerStats.SpellDamageFor15SecOnUse2Min > 0.0f)
            {
                Trinkets.Add(new Trinket()
                {
                    Cooldown = 120.0f, DamageBonus = playerStats.SpellDamageFor15SecOnUse2Min, UpTime = 15.0f
                });
            }
            if (playerStats.SpellDamageFor15SecOnUse90Sec > 0.0f)
            {
                Trinkets.Add(new Trinket()
                {
                    Cooldown = 90.0f, DamageBonus = playerStats.SpellDamageFor15SecOnUse90Sec, UpTime = 15.0f
                });
            }
            if (playerStats.SpellDamageFor20SecOnUse2Min > 0.0f)
            {
                Trinkets.Add(new Trinket()
                {
                    Cooldown = 120.0f, DamageBonus = playerStats.SpellDamageFor20SecOnUse2Min, UpTime = 20.0f
                });
            }
            if (playerStats.SpellHasteFor20SecOnUse2Min > 0.0f)
            {
                Trinkets.Add(new Trinket()
                {
                    Cooldown = 120.0f, HasteBonus = playerStats.SpellHasteFor20SecOnUse2Min, UpTime = 20.0f
                });
            }
            if (playerStats.SpellHasteFor20SecOnUse5Min > 0.0f)
            {
                Trinkets.Add(new Trinket()
                {
                    Cooldown = 300.0f, HasteBonus = playerStats.SpellHasteFor20SecOnUse5Min, UpTime = 20.0f
                });
            }
        }
Пример #13
0
 private void cmbManaTime_ValueChanged(object sender, EventArgs e)
 {
     if (!loading)
     {
         CalculationOptionsShadowPriest calcOpts = Character.CalculationOptions as CalculationOptionsShadowPriest;
         calcOpts.ManaTime = (float)cmbManaTime.Value;
         Character.OnItemsChanged();
     }
 }
 private void cbPtr_CheckedChanged(object sender, EventArgs e)
 {
     if (!loading)
     {
         CalculationOptionsShadowPriest calcOpts = Character.CalculationOptions as CalculationOptionsShadowPriest;
         calcOpts.PTR = cbPtr.Checked;
         Character.OnCalculationsInvalidated();
     }
 }
 private void trkReplenishment_Scroll(object sender, EventArgs e)
 {
     if (!loading)
     {
         CalculationOptionsShadowPriest calcOpts = Character.CalculationOptions as CalculationOptionsShadowPriest;
         calcOpts.Replenishment = trkReplenishment.Value;
         lblReplenishment.Text  = trkReplenishment.Value + "% effect from Replenishment.";
         Character.OnCalculationsInvalidated();
     }
 }
 private void trkMoveDuration_Scroll(object sender, EventArgs e)
 {
     if (!loading)
     {
         CalculationOptionsShadowPriest calcOpts = Character.CalculationOptions as CalculationOptionsShadowPriest;
         calcOpts.MoveDuration = trkMoveDuration.Value;
         lblMoveDuration.Text  = trkMoveDuration.Value + " seconds of movement each time.";
         Character.OnCalculationsInvalidated();
     }
 }
 private void trackBar1_Scroll(object sender, EventArgs e)
 {
     if (!loading)
     {
         CalculationOptionsShadowPriest calcOpts = Character.CalculationOptions as CalculationOptionsShadowPriest;
         calcOpts.Survivability = trkSurvivability.Value;
         lblSurvivability.Text  = trkSurvivability.Value + "% Focus on Survivability.";
         Character.OnCalculationsInvalidated();
     }
 }
 private void trkFSR_Scroll(object sender, EventArgs e)
 {
     if (!loading)
     {
         CalculationOptionsShadowPriest calcOpts = Character.CalculationOptions as CalculationOptionsShadowPriest;
         calcOpts.FSRRatio = trkFSR.Value;
         lblFSR.Text       = trkFSR.Value + "% time spent in FSR";
         Character.OnCalculationsInvalidated();
     }
 }
 private void trkFightLength_Scroll(object sender, EventArgs e)
 {
     if (!loading)
     {
         CalculationOptionsShadowPriest calcOpts = Character.CalculationOptions as CalculationOptionsShadowPriest;
         calcOpts.FightLength = trkFightLength.Value;
         lblFightLength.Text  = trkFightLength.Value + " minute fight.";
         Character.OnCalculationsInvalidated();
     }
 }
 private void trkMoveFrequency_Scroll(object sender, EventArgs e)
 {
     if (!loading)
     {
         CalculationOptionsShadowPriest calcOpts = Character.CalculationOptions as CalculationOptionsShadowPriest;
         calcOpts.MoveFrequency = trkMoveFrequency.Value;
         lblMoveFrequency.Text  = trkMoveFrequency.Value + " seconds between each need for Movement.";
         Character.OnCalculationsInvalidated();
     }
 }
 private void trkDelay_Scroll(object sender, EventArgs e)
 {
     if (!loading)
     {
         CalculationOptionsShadowPriest calcOpts = Character.CalculationOptions as CalculationOptionsShadowPriest;
         calcOpts.Delay = trkDelay.Value;
         lblDelay.Text  = trkDelay.Value + "ms Game/Brain Latency";
         Character.OnCalculationsInvalidated();
     }
 }
 private void trkJoW_Scroll(object sender, EventArgs e)
 {
     if (!loading)
     {
         CalculationOptionsShadowPriest calcOpts = Character.CalculationOptions as CalculationOptionsShadowPriest;
         calcOpts.JoW = trkJoW.Value;
         lblJoW.Text  = trkJoW.Value + "% effect from JoW.";
         Character.OnCalculationsInvalidated();
     }
 }
Пример #23
0
        /// <summary>
        /// Beware when updating: The spells from an earlier returned Rotation are references to the SpellBox from this Estimation.
        /// </summary>
        /// <param name="baseStats"></param>
        /// <param name="procStats"></param>
        /// <param name="talents"></param>
        /// <param name="calcOpts"></param>
        public void Update(Stats baseStats, Stats procStats, PriestTalents talents, CalculationOptionsShadowPriest calcOpts)
        {
            this.baseStats = baseStats;
            this.procStats = procStats;
            this.talents = talents;
            this.calcOpts = calcOpts;

            Stats addedStats = baseStats.Clone();
            addedStats.Accumulate(procStats);
            CombatFactors combatFactors = new CombatFactors(talents, addedStats, Math.Max(calcOpts.NumberOfTargets - 1, 0), calcOpts.LatencyCast, calcOpts.LatencyGcd);
            spellbox.Update(combatFactors);
        }
        protected override void LoadCalculationOptions()
        {
            loading = true;
            if (Character.CalculationOptions == null)
            {
                Character.CalculationOptions = new CalculationOptionsShadowPriest();
            }

            CalculationOptionsShadowPriest calcOpts = Character.CalculationOptions as CalculationOptionsShadowPriest;

            cbTargetLevel.SelectedIndex = calcOpts.TargetLevel;

            trkFightLength.Value = (int)calcOpts.FightLength;
            lblFightLength.Text  = trkFightLength.Value + " minute fight.";

            trkFSR.Value = (int)calcOpts.FSRRatio;
            lblFSR.Text  = trkFSR.Value + "% time spent in FSR";

            trkDelay.Value = (int)calcOpts.Delay;
            lblDelay.Text  = trkDelay.Value + "ms Game/Brain Latency";

            trkShadowfiend.Value = (int)calcOpts.Shadowfiend;
            lblShadowfiend.Text  = trkShadowfiend.Value + "% effect from Shadowfiend.";

            trkReplenishment.Value = (int)calcOpts.Replenishment;
            lblReplenishment.Text  = trkReplenishment.Value + "% effect from Replenishment.";

            trkJoW.Value = (int)calcOpts.JoW;
            lblJoW.Text  = trkJoW.Value + "% effect from JoW.";

            trkSurvivability.Value = (int)calcOpts.Survivability;
            lblSurvivability.Text  = trkSurvivability.Value + "% Focus on Survivability.";

            trkMoveFrequency.Value = (int)calcOpts.MoveFrequency;
            lblMoveFrequency.Text  = trkMoveFrequency.Value + " seconds between each need for movement.";

            trkMoveDuration.Value = (int)calcOpts.MoveDuration;
            lblMoveDuration.Text  = trkMoveDuration.Value + " seconds of movement each time.";

            cbPtr.Checked = calcOpts.PTR;

            cmbManaAmt.SelectedIndex = calcOpts.ManaPot;

            if (calcOpts.SpellPriority == null)
            {
                calcOpts.SpellPriority = new List <string>(Spell.ShadowSpellList);
            }
            lsSpellPriopity.Items.Clear();
            lsSpellPriopity.Items.AddRange(calcOpts.SpellPriority.ToArray());

            loading = false;
        }
Пример #25
0
 private void cmbManaAmt_TextUpdate(object sender, EventArgs e)
 {
     if (!loading)
     {
         CalculationOptionsShadowPriest calcOpts = Character.CalculationOptions as CalculationOptionsShadowPriest;
         try
         {
             calcOpts.ManaAmt = float.Parse(cmbManaAmt.Text);
         }
         catch { }
         Character.OnItemsChanged();
     }
 }
Пример #26
0
        /// <summary>
        /// Beware when updating: The spells from an earlier returned Rotation are references to the SpellBox from this Estimation.
        /// </summary>
        /// <param name="baseStats"></param>
        /// <param name="procStats"></param>
        /// <param name="talents"></param>
        /// <param name="calcOpts"></param>
        public void Update(Stats baseStats, Stats procStats, PriestTalents talents, CalculationOptionsShadowPriest calcOpts)
        {
            this.baseStats = baseStats;
            this.procStats = procStats;
            this.talents   = talents;
            this.calcOpts  = calcOpts;

            Stats addedStats = baseStats.Clone();

            addedStats.Accumulate(procStats);
            CombatFactors combatFactors = new CombatFactors(talents, addedStats, Math.Max(calcOpts.NumberOfTargets - 1, 0), calcOpts.LatencyCast, calcOpts.LatencyGcd);

            spellbox.Update(combatFactors);
        }
Пример #27
0
        public override CharacterCalculationsBase GetCharacterCalculations(Character character, Item additionalItem, bool referenceCalculation, bool significantChange, bool needsDisplayCalculations)
        {
            // First things first, we need to ensure that we aren't using bad data
            CharacterCalculationsShadowPriest calc = new CharacterCalculationsShadowPriest();

            if (character == null)
            {
                return(calc);
            }

            var stats = GetCharacterStats(character, additionalItem);

            var results = new Dictionary <string, string>();

            BaseCharacterStatCalculations baseCalculations = new BaseCharacterStatCalculations(stats, _calculationOptions, character.BossOptions, character.PriestTalents);

            baseCalculations.Calculate(results);


            stats.SpellPower += _calculationOptions.InnerFire ? 532 : 0;

            BurstCalculations burstCalculations = new BurstCalculations(stats, _calculationOptions, character.BossOptions, character.PriestTalents);

            burstCalculations.Calculate(results);

            calc.BurstPoints = burstCalculations.Points;

            foreach (KeyValuePair <string, string> keyValuePair in results)
            {
                calc.AddResult(keyValuePair.Key, keyValuePair.Value);
            }

            CalculationOptionsShadowPriest calcOpts = character.CalculationOptions as CalculationOptionsShadowPriest;

            if (calcOpts == null)
            {
                return(calc);
            }

            BossOptions bossOpts = character.BossOptions;

            calc.BasicStats     = stats;
            calc.LocalCharacter = character;

            Solver.solve(calc, calcOpts, bossOpts);

            return(calc);
        }
 public void LoadCalculationOptions()
 {
     _loadingCalculationOptions = true;
     if (Character.CalculationOptions == null)
     {
         Character.CalculationOptions = new CalculationOptionsShadowPriest();
     }
     calcOpts = Character.CalculationOptions as CalculationOptionsShadowPriest;
     // Model Specific Code
     if (calcOpts.SpellPriority == null)
     {
         calcOpts.SpellPriority = new List <string>(Spell.ShadowSpellList);
     }
     //
     _loadingCalculationOptions = false;
 }
Пример #29
0
        private Stats GetBuffsStats(Character character, CalculationOptionsShadowPriest calcOpts)
        {
            List <Buff> removedBuffs = new List <Buff>();
            List <Buff> addedBuffs   = new List <Buff>();

            Stats statsBuffs = GetBuffsStats(character.ActiveBuffs, character.SetBonusCount);

            foreach (Buff b in removedBuffs)
            {
                character.ActiveBuffsAdd(b);
            }
            foreach (Buff b in addedBuffs)
            {
                character.ActiveBuffs.Remove(b);
            }

            return(statsBuffs);
        }
Пример #30
0
        private void cmbDrums_ValueChanged(object sender, EventArgs e)
        {
            if (cmbDrums.Value == 0)
            {
                cbDrums.Checked = false;
                cbDrums.Enabled = false;
            }
            else
            {
                cbDrums.Enabled = true;
            }

            if (!loading)
            {
                CalculationOptionsShadowPriest calcOpts = Character.CalculationOptions as CalculationOptionsShadowPriest;
                calcOpts.DrumsCount = (int)cmbDrums.Value;
                Character.OnItemsChanged();
            }
        }
        public CalculationOptionsPanelShadowPriest(CalculationOptionsShadowPriest calculationOptions)
        {
            _calculationOptions = calculationOptions;

            InitializeComponent();

                        // Set about text
            tbModuleNotes.Text =
                "Notes:\r\n" +
               "Shadow Priest Notes";
            /*
            SpellBox spellBox = new SpellBox();

            
            foreach (Spell s in spellBox.Spells)
            {
                lsSpellPriority.Items.Add(s.name);
            }
            */
        }
        public CalculationOptionsPanelShadowPriest(CalculationOptionsShadowPriest calculationOptions)
        {
            _calculationOptions = calculationOptions;

            InitializeComponent();

            // Set about text
            tbModuleNotes.Text =
                "Notes:\r\n" +
                "Shadow Priest Notes";

            /*
             * SpellBox spellBox = new SpellBox();
             *
             *
             * foreach (Spell s in spellBox.Spells)
             * {
             *  lsSpellPriority.Items.Add(s.name);
             * }
             */
        }
Пример #33
0
        public override CharacterCalculationsBase GetCharacterCalculations(Character character, Item additionalItem)
        {
            Stats stats     = GetCharacterStats(character, additionalItem);
            Stats statsRace = GetRaceStats(character);
            CharacterCalculationsShadowPriest calculatedStats    = new CharacterCalculationsShadowPriest();
            CalculationOptionsShadowPriest    calculationOptions = character.CalculationOptions as CalculationOptionsShadowPriest;

            calculatedStats.BasicStats         = stats;
            calculatedStats.Talents            = character.Talents;
            calculatedStats.CalculationOptions = calculationOptions;

            calculatedStats.BasicStats.Spirit = statsRace.Spirit + (calculatedStats.BasicStats.Spirit - statsRace.Spirit) * (1 + character.Talents.GetTalent("Spirit of Redemption").PointsInvested * 0.05f);

            calculatedStats.SpiritRegen = (float)Math.Floor(5 * 0.0093271 * calculatedStats.BasicStats.Spirit * Math.Sqrt(calculatedStats.BasicStats.Intellect));
            calculatedStats.RegenInFSR  = (float)Math.Floor((calculatedStats.BasicStats.Mp5 + character.Talents.GetTalent("Meditation").PointsInvested * 0.1f * calculatedStats.SpiritRegen * (1 + calculatedStats.BasicStats.SpellCombatManaRegeneration)));
            calculatedStats.RegenOutFSR = calculatedStats.BasicStats.Mp5 + calculatedStats.SpiritRegen;

            calculatedStats.BasicStats.SpellCrit = (float)Math.Round((calculatedStats.BasicStats.Intellect / 80) +
                                                                     (calculatedStats.BasicStats.SpellCritRating / 22.08) + 1.85, 2);

            calculatedStats.BasicStats.SpellDamageRating += calculatedStats.BasicStats.Spirit * character.Talents.GetTalent("Spiritual Guidance").PointsInvested * 0.05f;

            Solver solver = new Solver(stats, character.Talents, calculationOptions);

            solver.Calculate();

            calculatedStats.DpsPoints = solver.OverallDps;
            //int hitcap = GetSpellHitCap(character.Talents);
            //calculatedStats.DpsPoints = calculatedStats.BasicStats.SpellDamageRating + calculatedStats.BasicStats.SpellShadowDamageRating
            //    + (calculatedStats.BasicStats.SpellHasteRating)
            //    + (calculatedStats.BasicStats.SpellCritRating / 5.57f)
            //    + (calculatedStats.BasicStats.Spirit * 0.11f)
            //    + (calculatedStats.BasicStats.Intellect * 0.055f)
            //    - (calculatedStats.BasicStats.SpellHitRating < hitcap ? (hitcap - calculatedStats.BasicStats.SpellHitRating) * 1.364f: 0);

            calculatedStats.SurvivalPoints = calculatedStats.BasicStats.Stamina / 10;
            calculatedStats.OverallPoints  = calculatedStats.DpsPoints + calculatedStats.SurvivalPoints;

            return(calculatedStats);
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="CalculationsShadowPriest"/> class.
 /// </summary>
 public CalculationsShadowPriest()
 {
     _calculationOptions = new CalculationOptionsShadowPriest();
 }
        private Stats GetBuffsStats(Character character, CalculationOptionsShadowPriest calcOpts)
        {
            List<Buff> removedBuffs = new List<Buff>();
            List<Buff> addedBuffs = new List<Buff>();

            Stats statsBuffs = GetBuffsStats(character.ActiveBuffs, character.SetBonusCount);

            foreach (Buff b in removedBuffs)
            {
                character.ActiveBuffsAdd(b);
            }
            foreach (Buff b in addedBuffs)
            {
                character.ActiveBuffs.Remove(b);
            }

            return statsBuffs;
        }
 public BurstCalculations(Stats stats, CalculationOptionsShadowPriest options, BossOptions boss, PriestTalents talents)
 {
     _stats = stats;
     _boss = boss;
     _talents = talents;
     _options = options;
 }
 public BaseCharacterStatCalculations(Stats stats, CalculationOptionsShadowPriest options, BossOptions boss, PriestTalents talents)
 {
     _stats = stats;
     _target = boss;
     _talents = talents;
     _options = options;
 }