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")); }
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(); }