Example #1
0
        public override Stats GetCharacterStats(Character character, Item additionalItem)
        {
            CalculationOptionsHealPriest calcOpts = character.CalculationOptions as CalculationOptionsHealPriest;

            StatsPriest statsTotal = new StatsPriest()
            {
                SpellHaste = PriestInformation.GetDarkness(character.PriestTalents.Darkness),
                InnerFire  = true,
                BonusIntellectMultiplier = 0.05f,   // Cloth bonus.
                PriestSpec = PriestSpec.GetPriestSpec(character.PriestTalents),
            };

            if (statsTotal.PriestSpec == ePriestSpec.Spec_Disc)
            {
                statsTotal.SpellCombatManaRegeneration = 0.5f;
                statsTotal.BonusIntellectMultiplier    = 0.15f;
            }
            else if (statsTotal.PriestSpec == ePriestSpec.Spec_Holy)
            {
                statsTotal.SpellCombatManaRegeneration = 0.5f + PriestInformation.GetHolyConcentration(character.PriestTalents.HolyConcentration);
                statsTotal.BonusHealingDoneMultiplier  = 0.15f;
            }
            else if (statsTotal.PriestSpec == ePriestSpec.Spec_ERROR)
            {
                throw new Exception("Unpossible Talent Spec!");
            }

            statsTotal.Accumulate(BaseStats.GetBaseStats(character));
            statsTotal.Accumulate(GetItemStats(character, additionalItem));
            statsTotal.Accumulate(GetBuffsStats(character, calcOpts));


            statsTotal.Stamina     = (float)Math.Floor((statsTotal.Stamina) * (1 + statsTotal.BonusStaminaMultiplier));
            statsTotal.Intellect   = (float)Math.Floor((statsTotal.Intellect) * (1 + statsTotal.BonusIntellectMultiplier));
            statsTotal.Spirit      = (float)Math.Floor((statsTotal.Spirit) * (1 + statsTotal.BonusSpiritMultiplier));
            statsTotal.SpellPower += (statsTotal.InnerFire ? PriestInformation.GetInnerFireSpellPowerBonus(character) : 0) + (statsTotal.Intellect - 10);
            statsTotal.SpellPower *= (1f + statsTotal.BonusSpellPowerMultiplier);
            statsTotal.Mana       += StatConversion.GetManaFromIntellect(statsTotal.Intellect);
            statsTotal.Mana       *= (1f + statsTotal.BonusManaMultiplier);
            statsTotal.Health     += StatConversion.GetHealthFromStamina(statsTotal.Stamina);
            statsTotal.Health      = (float)Math.Floor(statsTotal.Health * (1f + statsTotal.BonusHealthMultiplier));
            statsTotal.SpellCrit  += StatConversion.GetSpellCritFromIntellect(statsTotal.Intellect)
                                     + StatConversion.GetSpellCritFromRating(statsTotal.CritRating);
            statsTotal.SpellHaste = (1f + statsTotal.SpellHaste) * (1f + StatConversion.GetSpellHasteFromRating(statsTotal.HasteRating)) - 1f;
            statsTotal.Armor     *= (1 + (statsTotal.InnerFire ? PriestInformation.GetInnerFireArmorBonus(character) : 0));

            if (statsTotal.PriestSpec == ePriestSpec.Spec_Disc)
            {
                statsTotal.ShieldDiscipline = (PriestInformation.DisciplineMasteryBase + StatConversion.GetMasteryFromRating(statsTotal.MasteryRating)) * PriestInformation.DisciplineMasteryEffect;
            }
            else if (statsTotal.PriestSpec == ePriestSpec.Spec_Holy)
            {
                statsTotal.EchoofLight = (PriestInformation.HolyMasteryBase + StatConversion.GetMasteryFromRating(statsTotal.MasteryRating)) * PriestInformation.HolyMasteryEffect;
            }

            return(statsTotal);
        }
Example #2
0
        // This was called 'Horrible' by Jothay, but he claimed it would work.
        public new StatsPriest Clone()
        {
            StatsPriest clone = new StatsPriest();

            clone.Accumulate(this);
            return(clone);
        }
Example #3
0
        //
        // PWS, Penance_BT, PROH_BT, PWS, PROH_BT, PWS, PROH_BT, GH, GH
        public override void Solve()
        {
            float graceBonus   = PriestInformation.GetGrace(character.PriestTalents.Grace) * 3;
            float borrowedTime = PriestInformation.GetBorrowedTime(character.PriestTalents.BorrowedTime);
            float renewedHope  = PriestInformation.GetRenewedHope(character.PriestTalents.RenewedHope);

            StatsPriest statsGR = new StatsPriest()
            {
                BonusHealingDoneMultiplier = graceBonus
            };

            statsGR.Accumulate(stats);

            StatsPriest statsBTGR = new StatsPriest()
            {
                SpellHaste = borrowedTime, BonusHealingDoneMultiplier = graceBonus
            };

            statsBTGR.Accumulate(stats);

            StatsPriest statsRHGR = new StatsPriest()
            {
                SpellCrit = renewedHope, BonusHealingDoneMultiplier = graceBonus
            };

            statsRHGR.Accumulate(stats);

            StatsPriest statsBTRHGR = new StatsPriest()
            {
                SpellHaste = borrowedTime, SpellCrit = renewedHope, BonusHealingDoneMultiplier = graceBonus
            };

            statsBTRHGR.Accumulate(stats);

            // BT = Borrowed Time, RH = Renewed Hope, GR = Grace
            SpellPowerWordShield pwsGR         = new SpellPowerWordShield(character, statsGR);
            SpellPenance         penanceBTGRRH = new SpellPenance(character, statsBTRHGR);
            SpellGreaterHeal     ghBTGRRH      = new SpellGreaterHeal(character, statsBTRHGR);
            SpellGreaterHeal     ghGTRH        = new SpellGreaterHeal(character, statsRHGR);
            SpellPrayerOfHealing prohBTGR      = new SpellPrayerOfHealing(character, statsBTGR, 3);

            castSequence.Add(pwsGR);
            castSequence.Add(penanceBTGRRH);
            castSequence.Add(prohBTGR);
            castSequence.Add(ghGTRH);
            castSequence.Add(pwsGR);
            castSequence.Add(prohBTGR);
            castSequence.Add(ghGTRH);
            castSequence.Add(pwsGR);
            castSequence.Add(prohBTGR);

            DoCalcs();
            if (verbose)
            {
                Name += "\n\nThree tank healing, keeping Grace up on 3 targets, using Prayer of Healing as filler.";
            }
        }
Example #4
0
        // PWS
        // ProH_BT
        public override void Solve()
        {
            float borrowedTime = PriestInformation.GetBorrowedTime(character.PriestTalents.BorrowedTime);

            StatsPriest statsBT = new StatsPriest()
            {
                SpellHaste = borrowedTime
            };

            statsBT.Accumulate(stats);

            castSequence.Clear();

            castSequence.Add(new SpellPowerWordShield(character, stats));
            castSequence.Add(new SpellPrayerOfHealing(character, statsBT));

            DoCalcs();

            if (verbose)
            {
                Name += "\nCasting Power Word: Shield and then Prayer of Healing, repeat.";
            }
        }
Example #5
0
 // This was called 'Horrible' by Jothay, but he claimed it would work.
 public new StatsPriest Clone()
 {
     StatsPriest clone = new StatsPriest();
     clone.Accumulate(this);
     return clone;
 }
        public override Stats GetCharacterStats(Character character, Item additionalItem)
        {           
            CalculationOptionsHealPriest calcOpts = character.CalculationOptions as CalculationOptionsHealPriest;

            StatsPriest statsTotal = new StatsPriest()
            {
                SpellHaste = PriestInformation.GetDarkness(character.PriestTalents.Darkness),
                InnerFire = true,
                BonusIntellectMultiplier = 0.05f,   // Cloth bonus.
                PriestSpec = PriestSpec.GetPriestSpec(character.PriestTalents),
            };
            if (statsTotal.PriestSpec == ePriestSpec.Spec_Disc)
            {
                statsTotal.SpellCombatManaRegeneration = 0.5f;
                statsTotal.BonusIntellectMultiplier = 0.15f;
            }
            else if (statsTotal.PriestSpec == ePriestSpec.Spec_Holy)
            {
                statsTotal.SpellCombatManaRegeneration = 0.5f + PriestInformation.GetHolyConcentration(character.PriestTalents.HolyConcentration);
                statsTotal.BonusHealingDoneMultiplier = 0.15f;
            }
            else if (statsTotal.PriestSpec == ePriestSpec.Spec_ERROR)
            {
                throw new Exception("Unpossible Talent Spec!");
            }

            statsTotal.Accumulate(BaseStats.GetBaseStats(character));
            statsTotal.Accumulate(GetItemStats(character, additionalItem));
            statsTotal.Accumulate(GetBuffsStats(character, calcOpts));

          
            statsTotal.Stamina = (float)Math.Floor((statsTotal.Stamina) * (1 + statsTotal.BonusStaminaMultiplier));
            statsTotal.Intellect = (float)Math.Floor((statsTotal.Intellect) * (1 + statsTotal.BonusIntellectMultiplier));
            statsTotal.Spirit = (float)Math.Floor((statsTotal.Spirit) * (1 + statsTotal.BonusSpiritMultiplier));
            statsTotal.SpellPower += (statsTotal.InnerFire ? PriestInformation.GetInnerFireSpellPowerBonus(character) : 0) + (statsTotal.Intellect - 10);
            statsTotal.SpellPower *= (1f + statsTotal.BonusSpellPowerMultiplier);
            statsTotal.Mana += StatConversion.GetManaFromIntellect(statsTotal.Intellect);
            statsTotal.Mana *= (1f + statsTotal.BonusManaMultiplier);
            statsTotal.Health += StatConversion.GetHealthFromStamina(statsTotal.Stamina);
            statsTotal.Health = (float)Math.Floor(statsTotal.Health * (1f + statsTotal.BonusHealthMultiplier));
            statsTotal.SpellCrit += StatConversion.GetSpellCritFromIntellect(statsTotal.Intellect)
                + StatConversion.GetSpellCritFromRating(statsTotal.CritRating);
            statsTotal.SpellHaste = (1f + statsTotal.SpellHaste) * (1f + StatConversion.GetSpellHasteFromRating(statsTotal.HasteRating)) - 1f;
            statsTotal.Armor *= (1 + (statsTotal.InnerFire ? PriestInformation.GetInnerFireArmorBonus(character) : 0));

            if (statsTotal.PriestSpec == ePriestSpec.Spec_Disc)
            {
                statsTotal.ShieldDiscipline = (PriestInformation.DisciplineMasteryBase + StatConversion.GetMasteryFromRating(statsTotal.MasteryRating)) * PriestInformation.DisciplineMasteryEffect;
            }
            else if (statsTotal.PriestSpec == ePriestSpec.Spec_Holy)
            {
                statsTotal.EchoofLight = (PriestInformation.HolyMasteryBase + StatConversion.GetMasteryFromRating(statsTotal.MasteryRating)) * PriestInformation.HolyMasteryEffect;
            }

            return statsTotal;
        }
Example #7
0
        //
        // PWS, Penance_BT, PROH_BT, PWS, PROH_BT, PWS, PROH_BT, GH, GH
        public override void Solve()
        {
            float graceBonus = PriestInformation.GetGrace(character.PriestTalents.Grace) * 3;
            float borrowedTime = PriestInformation.GetBorrowedTime(character.PriestTalents.BorrowedTime);
            float renewedHope = PriestInformation.GetRenewedHope(character.PriestTalents.RenewedHope);

            StatsPriest statsGR = new StatsPriest() { BonusHealingDoneMultiplier = graceBonus };
            statsGR.Accumulate(stats);

            StatsPriest statsBTGR = new StatsPriest() { SpellHaste = borrowedTime, BonusHealingDoneMultiplier = graceBonus };
            statsBTGR.Accumulate(stats);
            
            StatsPriest statsRHGR = new StatsPriest() { SpellCrit = renewedHope, BonusHealingDoneMultiplier = graceBonus };
            statsRHGR.Accumulate(stats);

            StatsPriest statsBTRHGR = new StatsPriest() { SpellHaste = borrowedTime, SpellCrit = renewedHope, BonusHealingDoneMultiplier = graceBonus };
            statsBTRHGR.Accumulate(stats);

            // BT = Borrowed Time, RH = Renewed Hope, GR = Grace
            SpellPowerWordShield pwsGR = new SpellPowerWordShield(character, statsGR);
            SpellPenance penanceBTGRRH = new SpellPenance(character, statsBTRHGR);
            SpellGreaterHeal ghBTGRRH = new SpellGreaterHeal(character, statsBTRHGR);
            SpellGreaterHeal ghGTRH = new SpellGreaterHeal(character, statsRHGR);
            SpellPrayerOfHealing prohBTGR = new SpellPrayerOfHealing(character, statsBTGR, 3);

            castSequence.Add(pwsGR);
            castSequence.Add(penanceBTGRRH);
            castSequence.Add(prohBTGR);
            castSequence.Add(ghGTRH);
            castSequence.Add(pwsGR);
            castSequence.Add(prohBTGR);
            castSequence.Add(ghGTRH);
            castSequence.Add(pwsGR);
            castSequence.Add(prohBTGR);

            DoCalcs();
            if (verbose)
                Name += "\n\nThree tank healing, keeping Grace up on 3 targets, using Prayer of Healing as filler.";
        }
Example #8
0
        // PWS
        // ProH_BT
        public override void Solve()
        {
            float borrowedTime = PriestInformation.GetBorrowedTime(character.PriestTalents.BorrowedTime);
            
            StatsPriest statsBT = new StatsPriest() { SpellHaste = borrowedTime };
            statsBT.Accumulate(stats);

            castSequence.Clear();

            castSequence.Add(new SpellPowerWordShield(character, stats));
            castSequence.Add(new SpellPrayerOfHealing(character, statsBT));

            DoCalcs();

            if (verbose)
                Name += "\nCasting Power Word: Shield and then Prayer of Healing, repeat.";
        }