Пример #1
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);
        }
Пример #2
0
 public void Accumulate(StatsPriest data)
 {
     base.Accumulate(data);
     this.PriestSpec = data.PriestSpec;
     this.InnerFire = data.InnerFire;
     this.InnerWill = data.InnerWill;
     this.ShieldDiscipline = data.ShieldDiscipline;
     this.EchoofLight = data.EchoofLight;
 }
Пример #3
0
 public void Accumulate(StatsPriest data)
 {
     base.Accumulate(data);
     this.PriestSpec       = data.PriestSpec;
     this.InnerFire        = data.InnerFire;
     this.InnerWill        = data.InnerWill;
     this.ShieldDiscipline = data.ShieldDiscipline;
     this.EchoofLight      = data.EchoofLight;
 }
Пример #4
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.";
            }
        }
Пример #5
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);
        }
Пример #6
0
        public SpellResurrection(Character character, StatsPriest stats)
        {
            Name = "Resurrection";

            BaseCastTime = 10.0f;
            BaseManaCost = 0.6f;

            SetPriestInformation(character, stats);
            CritChance = 0f;
        }
Пример #7
0
        public PriestSolver(CharacterCalculationsHealPriest calc, CalculationOptionsHealPriest calcOpts, bool verbose)
        {
            Name = "Priest Solver base";

            this.character   = calc.Character;
            this.stats       = calc.BasicStats;
            this.calc        = calc;
            this.calcOpts    = calcOpts;
            this.bossOptions = character.BossOptions;
            this.verbose     = verbose;
        }
Пример #8
0
        public SpellGreaterHeal(Character character, StatsPriest stats)
        {
            Name = "Greater Heal";

            BaseDirectValue       = 9.56400012969971f * BaseScalar85;
            BaseDirectCoefficient = 0.967f;
            BaseDirectVariation   = 0.15f;

            BaseCastTime = 3.0f - PriestInformation.GetDivineFury(character.PriestTalents.DivineFury);
            BaseManaCost = 0.27f;

            SetPriestInformation(character, stats);
        }
Пример #9
0
        public SpellHeal(Character character, StatsPriest stats)
        {
            Name = "Heal";

            BaseDirectValue       = 3.58699989318848f * BaseScalar85;
            BaseDirectCoefficient = 0.362f;
            BaseDirectVariation   = 0.15f;

            BaseCastTime = 3.0f - PriestInformation.GetDivineFury(character.PriestTalents.DivineFury);
            BaseManaCost = 0.09f;

            SetPriestInformation(character, stats);
        }
Пример #10
0
        public SpellFlashHeal(Character character, StatsPriest stats)
        {
            Name = "Flash Heal";

            BaseDirectValue       = 7.17399978637695f * BaseScalar85;
            BaseDirectCoefficient = 0.725f;
            BaseDirectVariation   = 0.15f;

            BaseCastTime = 1.5f;
            BaseManaCost = 0.28f;

            SetPriestInformation(character, stats);
        }
Пример #11
0
        public SpellSerenity(Character character, StatsPriest stats)
        {
            Name = "Holy Word Serenity";

            BaseDirectValue       = 5.97700023651123f * BaseScalar85;
            BaseDirectCoefficient = 0.486f;
            BaseDirectVariation   = 0.16f;

            BaseManaCost = 0.08f;

            BaseCooldown = 15f;
            SetPriestInformation(character, stats);
        }
Пример #12
0
        public SpellRenew(Character character, StatsPriest stats)
        {
            Name = "Renew";

            BaseOverTimeValue       = 1.29499995708466f * BaseScalar85;
            BaseOverTimeCoefficient = 0.131f;
            BaseOverTimeTickPeriod  = 3f;
            BaseOverTimeTicks       = 4f;

            BaseManaCost = 0.17f;

            SetPriestInformation(character, stats);
        }
Пример #13
0
        public SpellPowerWordShield(Character character, StatsPriest stats)
        {
            Name = "Power Word: Shield";

            BaseDirectValue       = 8.60879993438721f * BaseScalar85;
            BaseDirectCoefficient = 0.87f;
            BaseDirectVariation   = 0.0f;

            BaseManaCost = 0.34f;

            BaseCooldown = 3;

            SetPriestInformation(character, stats);
        }
Пример #14
0
        protected void Initialize(Character character, StatsPriest stats, int targets)
        {
            Name = "Holy Nova";

            BaseDirectValue       = 0.316000014543533f * BaseScalar85;
            BaseDirectCoefficient = 0.143f;
            BaseDirectVariation   = 0.15f;

            BaseManaCost = 0.15f;

            Targets = targets;

            SetPriestInformation(character, stats);
        }
Пример #15
0
        protected void Initialize(Character character, StatsPriest stats, int targets)
        {
            Name = "Prayer of Healing";

            BaseDirectValue       = 3.35899996757507f * BaseScalar85;
            BaseDirectCoefficient = 0.34f;
            BaseDirectVariation   = 0.055f;

            BaseCastTime = 2.5f;
            BaseManaCost = 0.26f;

            Targets = targets;

            SetPriestInformation(character, stats);
        }
Пример #16
0
        protected void Initialize(Character character, StatsPriest stats, int targets)
        {
            Name = "Prayer of Mending";

            BaseDirectValue       = 3.14400005340576f * BaseScalar85;
            BaseDirectCoefficient = 0.318f;
            BaseDirectVariation   = 0.0f;

            Targets = targets;

            BaseManaCost = 0.18f;

            BaseCooldown = 10;

            SetPriestInformation(character, stats);
        }
Пример #17
0
        protected void Initialize(Character character, StatsPriest stats, int targets)
        {
            Name = "Circle of Healing";

            BaseDirectValue       = 2.57100009918213f * BaseScalar85;
            BaseDirectCoefficient = 0.26f;
            BaseDirectVariation   = 0.10f;

            BaseManaCost = 0.21f;

            Targets = targets;

            BaseCooldown = 10;

            SetPriestInformation(character, stats);
        }
Пример #18
0
        protected void Initialize(Character character, StatsPriest stats, int targets)
        {
            Name = "Holy Word Sanctuary";

            BaseDirectValue       = 0.345999985933304f * BaseScalar85;
            BaseDirectCoefficient = 0.031f;
            BaseDirectVariation   = 0.173f;

            BaseManaCost = 0.44f;

            Targets = targets;

            BaseCooldown = 40;

            SetPriestInformation(character, stats);
        }
Пример #19
0
        public SpellBindingHeal(Character character, StatsPriest stats)
        {
            Name = "Binding Heal";

            BaseDirectValue       = 5.74599981307983f * BaseScalar85;
            BaseDirectCoefficient = 0.544f;
            BaseDirectVariation   = 0.25f;

            BaseCastTime = 1.5f;
            BaseManaCost = 0.28f;

            Targets    = 2;
            MaxTargets = 2;

            SetPriestInformation(character, stats);
        }
Пример #20
0
        public SpellPenance(Character character, StatsPriest stats)
        {
            Name = "Penance";

            BaseDirectValue       = 3.1800000667572f * BaseScalar85;
            BaseDirectCoefficient = 0.321f;
            BaseDirectVariation   = 0.122f;

            BaseCastTime = 2f;
            BaseManaCost = 0.14f;

            Targets = MaxTargets = 3;

            BaseCooldown = 12;

            SetPriestInformation(character, stats);
        }
Пример #21
0
        public SpellLightwell(Character character, StatsPriest stats)
        {
            Name = "Lightwell";

            BaseOverTimeValue       = 3.04500007629395f * BaseScalar85;
            BaseOverTimeCoefficient = 0.308f;
            BaseOverTimeTickPeriod  = 2f;
            BaseOverTimeTicks       = 3f;

            BaseManaCost = 0.30f;

            MaxTargets = character.PriestTalents.GlyphofLightwell ? 15 : 10;
            Targets    = MaxTargets;

            BaseCooldown = 3 * 60;

            SetPriestInformation(character, stats);
        }
Пример #22
0
        public SpellDivineHymn(Character character, StatsPriest stats)
        {
            Name = "Divine Hymn";

            BaseDirectValue       = 4.24200010299683f * BaseScalar85;
            BaseDirectCoefficient = 0.429f;
            BaseDirectVariation   = 0.0f;

            BaseCastTime           = 8f;
            BaseOverTimeTickPeriod = 2f;
            BaseOverTimeTicks      = BaseCastTime / BaseOverTimeTickPeriod;

            BaseManaCost = 0.36f;

            Targets = MaxTargets = 12;

            BaseCooldown = 60 * 8;

            SetPriestInformation(character, stats);
        }
Пример #23
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.";
            }
        }
Пример #24
0
        public SpellRenew(Character character, StatsPriest stats)
        {
            Name = "Renew";

            BaseOverTimeValue = 1.29499995708466f * BaseScalar85;
            BaseOverTimeCoefficient = 0.131f;
            BaseOverTimeTickPeriod = 3f;
            BaseOverTimeTicks = 4f;

            BaseManaCost = 0.17f;

            SetPriestInformation(character, stats);
        }
Пример #25
0
        protected void Initialize(Character character, StatsPriest stats, int targets)
        {
            Name = "Prayer of Mending";

            BaseDirectValue = 3.14400005340576f * BaseScalar85;
            BaseDirectCoefficient = 0.318f;
            BaseDirectVariation = 0.0f;

            Targets = targets;

            BaseManaCost = 0.18f;

            BaseCooldown = 10;

            SetPriestInformation(character, stats);
        }
Пример #26
0
 public SpellHolyNova(Character character, StatsPriest stats, int targets)
 {
     MaxTargets = 5;
     Initialize(character, stats, targets);
 }
Пример #27
0
        public SpellHeal(Character character, StatsPriest stats)
        {
            Name = "Heal";

            BaseDirectValue = 3.58699989318848f * BaseScalar85;
            BaseDirectCoefficient = 0.362f;
            BaseDirectVariation = 0.15f;

            BaseCastTime = 3.0f - PriestInformation.GetDivineFury(character.PriestTalents.DivineFury);
            BaseManaCost = 0.09f;

            SetPriestInformation(character, stats);
        }
Пример #28
0
 public SpellPrayerOfMending(Character character, StatsPriest stats)
 {
     MaxTargets = 5;
     Initialize(character, stats, MaxTargets);
 }
Пример #29
0
        public SpellBindingHeal(Character character, StatsPriest stats)
        {
            Name = "Binding Heal";

            BaseDirectValue = 5.74599981307983f * BaseScalar85;
            BaseDirectCoefficient = 0.544f;
            BaseDirectVariation = 0.25f;

            BaseCastTime = 1.5f;
            BaseManaCost = 0.28f;

            Targets = 2;
            MaxTargets = 2;

            SetPriestInformation(character, stats);
        }
Пример #30
0
 public override void SetPriestInformation(Character character, StatsPriest stats)
 {
     this.character = character;
     this.stats     = stats;
     UpdateSpell();
 }
Пример #31
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.";
        }
Пример #32
0
 public SpellSanctuary(Character character, StatsPriest stats, int targets)
 {
     MaxTargets = 6;
     Initialize(character, stats, targets);
 }
Пример #33
0
        protected void Initialize(Character character, StatsPriest stats, int targets)
        {
            Name = "Holy Word Sanctuary";

            BaseDirectValue = 0.345999985933304f * BaseScalar85;
            BaseDirectCoefficient = 0.031f;
            BaseDirectVariation = 0.173f;

            BaseManaCost = 0.44f;

            Targets = targets;

            BaseCooldown = 40;

            SetPriestInformation(character, stats);
        }
Пример #34
0
        protected void Initialize(Character character, StatsPriest stats, int targets)
        {
            Name = "Circle of Healing";

            BaseDirectValue = 2.57100009918213f * BaseScalar85;
            BaseDirectCoefficient = 0.26f;
            BaseDirectVariation = 0.10f;

            BaseManaCost = 0.21f;

            Targets = targets;

            BaseCooldown = 10;

            SetPriestInformation(character, stats);
        }
Пример #35
0
 public SpellCircleOfHealing(Character character, StatsPriest stats, int targets)
 {
     MaxTargets = character.PriestTalents.GlyphofCircleOfHealing ? 6 : 5;
     Initialize(character, stats, targets);
 }
Пример #36
0
        protected void Initialize(Character character, StatsPriest stats, int targets)
        {
            Name = "Holy Nova";

            BaseDirectValue = 0.316000014543533f * BaseScalar85;
            BaseDirectCoefficient = 0.143f;
            BaseDirectVariation = 0.15f;

            BaseManaCost = 0.15f;

            Targets = targets;

            SetPriestInformation(character, stats);
        }
Пример #37
0
        public PriestSolver(CharacterCalculationsHealPriest calc, CalculationOptionsHealPriest calcOpts, bool verbose)
        {
            Name = "Priest Solver base";

            this.character = calc.Character;
            this.stats = calc.BasicStats;
            this.calc = calc;
            this.calcOpts = calcOpts;
            this.bossOptions = character.BossOptions;
            this.verbose = verbose;
        }
Пример #38
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.";
        }
Пример #39
0
 public SpellGiftOfTheNaaru(Character character, StatsPriest stats)
 {
     SetPriestInformation(character, stats);
     CritChance = 0f;
 }
Пример #40
0
 public SpellPrayerOfHealing(Character character, StatsPriest stats, int targets)
 {
     MaxTargets = 5;
     Initialize(character, stats, targets);
 }
Пример #41
0
        public SpellSerenity(Character character, StatsPriest stats)
        {
            Name = "Holy Word Serenity";

            BaseDirectValue = 5.97700023651123f * BaseScalar85;
            BaseDirectCoefficient = 0.486f;
            BaseDirectVariation = 0.16f;

            BaseManaCost = 0.08f;

            BaseCooldown = 15f;
            SetPriestInformation(character, stats);
        }
Пример #42
0
 public SpellPrayerOfMending(Character character, StatsPriest stats)
 {
     MaxTargets = 5;
     Initialize(character, stats, MaxTargets);
 }
Пример #43
0
        public SpellFlashHeal(Character character, StatsPriest stats)
        {
            Name = "Flash Heal";

            BaseDirectValue = 7.17399978637695f * BaseScalar85;
            BaseDirectCoefficient = 0.725f;
            BaseDirectVariation = 0.15f;

            BaseCastTime = 1.5f;
            BaseManaCost = 0.28f;

            SetPriestInformation(character, stats);
        }
Пример #44
0
        public SpellDivineHymn(Character character, StatsPriest stats)
        {
            Name = "Divine Hymn";

            BaseDirectValue = 4.24200010299683f * BaseScalar85;
            BaseDirectCoefficient = 0.429f;
            BaseDirectVariation = 0.0f;

            BaseCastTime = 8f;
            BaseOverTimeTickPeriod = 2f;
            BaseOverTimeTicks = BaseCastTime / BaseOverTimeTickPeriod;

            BaseManaCost = 0.36f;

            Targets = MaxTargets = 12;

            BaseCooldown = 60 * 8;

            SetPriestInformation(character, stats);
        }
Пример #45
0
        public SpellGreaterHeal(Character character, StatsPriest stats)
        {
            Name = "Greater Heal";

            BaseDirectValue = 9.56400012969971f * BaseScalar85;
            BaseDirectCoefficient = 0.967f;
            BaseDirectVariation = 0.15f;

            BaseCastTime = 3.0f - PriestInformation.GetDivineFury(character.PriestTalents.DivineFury);
            BaseManaCost = 0.27f;

            SetPriestInformation(character, stats);
        }
Пример #46
0
 public SpellSanctuary(Character character, StatsPriest stats, int targets)
 {
     MaxTargets = 6;
     Initialize(character, stats, targets);
 }
Пример #47
0
 public SpellGiftOfTheNaaru(Character character, StatsPriest stats)
 {
     SetPriestInformation(character, stats);
     CritChance = 0f;
 }
Пример #48
0
        protected void Initialize(Character character, StatsPriest stats, int targets)
        {
            Name = "Prayer of Healing";

            BaseDirectValue = 3.35899996757507f * BaseScalar85;
            BaseDirectCoefficient = 0.34f;
            BaseDirectVariation = 0.055f;

            BaseCastTime = 2.5f;
            BaseManaCost = 0.26f;

            Targets = targets;

            SetPriestInformation(character, stats);
        }
Пример #49
0
 public SpellPrayerOfHealing(Character character, StatsPriest stats, int targets)
 {
     MaxTargets = 5;
     Initialize(character, stats, targets);
 }
Пример #50
0
        public SpellLightwell(Character character, StatsPriest stats)
        {
            Name = "Lightwell";

            BaseOverTimeValue = 3.04500007629395f * BaseScalar85;
            BaseOverTimeCoefficient = 0.308f;
            BaseOverTimeTickPeriod = 2f;
            BaseOverTimeTicks = 3f;

            BaseManaCost = 0.30f;

            MaxTargets = character.PriestTalents.GlyphofLightwell ? 15 : 10;
            Targets = MaxTargets;

            BaseCooldown = 3 * 60;

            SetPriestInformation(character, stats);
        }
Пример #51
0
 public SpellCircleOfHealing(Character character, StatsPriest stats, int targets)
 {
     MaxTargets = character.PriestTalents.GlyphofCircleOfHealing ? 6 : 5;
     Initialize(character, stats, targets);
 }
Пример #52
0
        public SpellPenance(Character character, StatsPriest stats)
        {
            Name = "Penance";

            BaseDirectValue = 3.1800000667572f * BaseScalar85;
            BaseDirectCoefficient = 0.321f;
            BaseDirectVariation = 0.122f;

            BaseCastTime = 2f;
            BaseManaCost = 0.14f;

            Targets = MaxTargets = 3;

            BaseCooldown = 12;

            SetPriestInformation(character, stats);
        }
Пример #53
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;
        }
Пример #54
0
 public virtual void SetPriestInformation(Character character, StatsPriest stats) { this.character = character; this.stats = stats;  UpdateSpell(); }
Пример #55
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;
 }
Пример #56
0
 public SpellHolyNova(Character character, StatsPriest stats, int targets)
 {
     MaxTargets = 5;
     Initialize(character, stats, targets);
 }
Пример #57
0
        public SpellPowerWordShield(Character character, StatsPriest stats)
        {
            Name = "Power Word: Shield";

            BaseDirectValue = 8.60879993438721f * BaseScalar85;
            BaseDirectCoefficient = 0.87f;
            BaseDirectVariation = 0.0f;

            BaseManaCost = 0.34f;

            BaseCooldown = 3;

            SetPriestInformation(character, stats);
        }
Пример #58
0
        public SpellResurrection(Character character, StatsPriest stats)
        {
            Name = "Resurrection";

            BaseCastTime = 10.0f;
            BaseManaCost = 0.6f;

            SetPriestInformation(character, stats);
            CritChance = 0f;
        }