Beispiel #1
0
        public void Calculate(Dictionary <string, string> results)
        {
            var spikes = 3;
            var blasts = 1;

            MindSpike spike = new MindSpike(_talents, _stats, _boss);
            MindBlast blast = new MindBlast(_talents, _stats, _boss);

            blast.MindMelts  = spikes;
            blast.MindSpikes = spikes;

            var rotationManaCost = spike.ManaCost * spikes + blast.ManaCost * blasts;
            var rotationTimeCost = spike.CastTime * spikes + blast.CastTime * blasts;
            var rotationDamage   = spike.AverageDamage * spikes + blast.AverageDamage * blasts;
            var rotationDps      = rotationDamage / rotationTimeCost;

            var maxRotations = _stats.Mana / rotationManaCost;

            if (rotationTimeCost > _boss.BerserkTimer)
            {
                maxRotations = _boss.BerserkTimer / rotationTimeCost;
            }

            var totalDamage = rotationDamage * maxRotations;

            _points = rotationDps;

            results.Add("Damage Per Second", rotationDps.ToString("0.00"));
            results.Add("Rotations", maxRotations.ToString("0.00"));
            results.Add("Total Damage", totalDamage.ToString("0"));
        }
Beispiel #2
0
        public Rotation(SpellBox spellBox, PriestTalents talents, IRotationOptions rotOpt)
            : this()
        {
            Talents = talents;
            DP      = spellBox.DP;
            MB      = spellBox.MB;
            MF      = spellBox.MF;
            Fiend   = spellBox.Fiend;
            SWD     = spellBox.SWD;
            SWP     = spellBox.SWP;
            VT      = spellBox.VT;
            Spike   = spellBox.Spike;

            //useXXX = rotOpt.UseDpsFireTotem;

            CalculateRotation();
        }