Example #1
0
        public void Initialize(ISpellArgs args, float fs)
        {
            manaCost      *= 1f - .02f * args.Talents.Convection;
            totalCoef     += .01f * args.Talents.Concussion;
            totalCoef     += .02f * args.Talents.CallOfFlame;
            totalCoef     += args.Stats.BonusLavaBurstDamageMultiplier; // t9 4 piece
            castTime      -= .1f * args.Talents.LightningMastery;
            spCoef        += .05f * args.Talents.Shamanism;
            critModifier  += new float[] { 0f, 0.06f, 0.12f, 0.24f }[args.Talents.LavaFlows];
            critModifier  += args.Stats.BonusLavaBurstCritDamage / 100f; // t7 4 piece
            baseMinDamage += args.Stats.LavaBurstBonus;                  // Totem (relic)
            baseMaxDamage += args.Stats.LavaBurstBonus;                  // Totem (relic)
            spellPower    += args.Stats.SpellFireDamageRating;
            if (args.Talents.GlyphofLava)
            {
                spCoef += .1f;
            }
            totalCoef *= 1 + args.Stats.BonusFireDamageMultiplier;
            if (args.Stats.Elemental4T10 > 0)
            {
                elementalT10 = true;
            }

            base.Initialize(args);

            this.fs = fs;
            crit    = (1 - fs) * crit + fs;
        }
Example #2
0
        public override void Initialize(ISpellArgs args)
        {
            castTime -= .5f;
            spCoef   += .32f;
            loCoef   += .2f;
            loChance  = LOChance(args.Stats.MasteryRating);

            manaCost  *= 1f - (0.05f * args.Talents.Convection);
            manaCost  -= (args.Stats.Mana * (.01f * args.Talents.RollingThunder)) * .6f;
            manaCost  -= args.Stats.NatureSpellsManaCostReduction;
            totalCoef += .02f * args.Talents.Concussion;
            spCoef    += .2f;
            loCoef    += .2f;
            crit      += .01f * args.Talents.Acuity;
            totalCoef += .01f * args.Talents.ElementalPrecision;

            spellPower += args.Stats.SpellNatureDamageRating; // Nature SP
            if (args.Talents.GlyphofLightningBolt)
            {
                totalCoef += .04f;
            }
            totalCoef *= 1 + args.Stats.BonusNatureDamageMultiplier;

            base.Initialize(args);
        }
Example #3
0
        public override void Initialize(ISpellArgs args)
        {
            //for reference
            //dotTick = totalCoef * (periodicTick * dotBaseCoef + spellPower * dotSpCoef) * (1 + dotCanCrit * critModifier * CritChance)

            totalCoef  += .01f * args.Talents.Concussion;
            manaCost   *= 1 - .02f * args.Talents.Convection;
            manaCost   -= args.Stats.NatureSpellsManaCostReduction;
            cooldown   -= .2f * args.Talents.Reverberation;
            spellPower += args.Stats.SpellFireDamageRating;
            totalCoef  *= 1 + args.Stats.BonusFireDamageMultiplier;

            if (args.Talents.GlyphofFlameShock)
            {
                periodicTicks = (Single)(periodicTicks * .5);
            }
            if (args.Talents.GlyphofShocking)
            {
                gcd -= .5f;
            }

            baseDuration = periodicTicks * periodicTickTime;

            dotCanCrit = 1;

            ApplyDotHaste(args);
            base.Initialize(args);
        }
Example #4
0
        public override void  Initialize(ISpellArgs args)
        {
            additionalTargets = args.AdditionalTargets;
            if(additionalTargets < 0)
                additionalTargets = 0;
            else if(additionalTargets > 9)
                additionalTargets = 9;

            if (args.Talents.GlyphofFireElementalTotem)
                cooldown = 300;
            
            ap = args.Stats.AttackPower;
            sp = args.Stats.SpellPower;
            petMeleeMissRate = args.Stats.HitRating;
            petMeleeMultipliers = args.Stats.BonusPetDamageMultiplier;
            petSpellMissRate = args.Stats.SpellHit;
            petSpellMultipliers = args.Stats.BonusPetDamageMultiplier;

            PeriodicTicks *= args.Talents.TotemicFocus;

            meleeTotalDps = 0f;
            novaTotalDps = 0f;
            blastTotalDps = 0f;
            shieldTotalDps = 0f;
            totalDps = 0f;
            totalMana = 4000 + (15 * (0.3f * args.Stats.Intellect));
            CalculateUses();
            CalculateDamage();
            periodicTick = totalDps;
        }
Example #5
0
        public override void Initialize(ISpellArgs args)
        {
            manaCost  *= 1 - (.05f * args.Talents.TotemicFocus);
            totalCoef *= 1 + (.05f * args.Talents.CallOfFlame);

            base.Initialize(args);
        }
Example #6
0
        public override void Initialize(ISpellArgs args)
        {
            additionalTargets = args.AdditionalTargets;
            // jumps
            if (additionalTargets < 0)
                additionalTargets = 0;
            
            spellPower += args.Stats.SpellNatureDamageRating;
            totalCoef *= 1 + args.Stats.BonusNatureDamageMultiplier;

            if (additionalTargets > 4)
                additionalTargets = 4;
            if (!args.Talents.GlyphofChainLightning && additionalTargets > 2)
                additionalTargets = 2;
            totalCoef *= new float[] { 1f, 1.7f, 2.19f, 2.533f, 2.7731f }[additionalTargets];

            loChance = LOChance(args.Stats.MasteryRating);
            cooldown = 3f;
            manaCost *= 1f - (0.05f * args.Talents.Convection);
            manaCost -= ((args.Stats.Mana * (.01f * args.Talents.RollingThunder)) * .6f) * (additionalTargets + 1);
            manaCost -= args.Stats.NatureSpellsManaCostReduction;
            totalCoef += .02f * args.Talents.Concussion;
            spCoef += .32f;
            loCoef += .2f;
            crit += .01f * args.Talents.Acuity;
            totalCoef += .01f * args.Talents.ElementalPrecision;

            shortName = "CL" + (1 + additionalTargets);

            base.Initialize(args);
        }
Example #7
0
        public override void Initialize(ISpellArgs args)
        {
            additionalTargets = args.AdditionalTargets;
            if (additionalTargets < 0)
            {
                additionalTargets = 0;
            }
            if (additionalTargets > 9)
            {
                additionalTargets = 9;
            }

            totalCoef *= 1f + additionalTargets;

            shortName = "FN" + (1 + additionalTargets);

            spCoef += .1f * args.Talents.ImprovedFireNova;

            cooldown -= 2 * args.Talents.ImprovedFireNova;

            if (args.Talents.GlyphofFireNova)
            {
                cooldown -= 3;
            }

            base.Initialize(args);
        }
Example #8
0
        public override void Initialize(ISpellArgs args)
        {
            additionalTargets = args.AdditionalTargets;
            if (additionalTargets < 0)
            {
                additionalTargets = 0;
            }
            if (additionalTargets > 9)
            {
                additionalTargets = 9;
            }

            totalCoef *= 1f + additionalTargets;

            manaCost -= args.Stats.NatureSpellsManaCostReduction;

            shortName = "FN" + (1 + additionalTargets);

            spCoef += .1f * args.Talents.CallOfFlame;

            if (args.Talents.GlyphofFireNova)
            {
                cooldown -= 3;
            }

            base.Initialize(args);
        }
Example #9
0
        public override void  Initialize(ISpellArgs args)
        {
            additionalTargets = args.AdditionalTargets;
            if (additionalTargets < 0)
            {
                additionalTargets = 0;
            }
            else if (additionalTargets > 9)
            {
                additionalTargets = 9;
            }

            if (args.Talents.GlyphofFireElementalTotem)
            {
                cooldown = 300;
            }

            ap = args.Stats.AttackPower;
            sp = args.Stats.SpellPower;
            petMeleeMissRate    = args.Stats.HitRating;
            petMeleeMultipliers = args.Stats.BonusPetDamageMultiplier;
            petSpellMissRate    = args.Stats.SpellHit;
            petSpellMultipliers = args.Stats.BonusPetDamageMultiplier;

            meleeTotalDps  = 0f;
            novaTotalDps   = 0f;
            blastTotalDps  = 0f;
            shieldTotalDps = 0f;
            totalDps       = 0f;
            totalMana      = 4000 + (15 * (0.3f * args.Stats.Intellect));
            CalculateUses();
            CalculateDamage();
            periodicTick = totalDps;
        }
Example #10
0
        public override void Initialize(ISpellArgs args)
        {
            additionalTargets = args.AdditionalTargets;
            // jumps
            if (additionalTargets < 0)
            {
                additionalTargets = 0;
            }
            if (additionalTargets > 3)
            {
                additionalTargets = 3;
            }
            shortName = "CL" + (1 + additionalTargets);
            if (!args.Talents.GlyphofChainLightning && additionalTargets > 2)
            {
                additionalTargets = 2;
            }
            totalCoef *= new float[] { 1f, 1.7f, 2.19f, 2.533f, 2.7731f }[additionalTargets];

            manaCost            *= 1f - .02f * args.Talents.Convection;
            totalCoef           += .01f * args.Talents.Concussion;
            crit                += .05f * args.Talents.CallOfThunder;
            spCoef              += .04f * args.Talents.Shamanism;
            loCoef              += .04f * args.Talents.Shamanism;
            castTime            -= .1f * args.Talents.LightningMastery;
            cooldown            -= new float[] { 0, .75f, 1.5f, 2.5f }[args.Talents.StormEarthAndFire];
            crit                += .01f * args.Talents.TidalMastery;
            spellPower          += args.Stats.SpellNatureDamageRating;
            lightningSpellpower += args.Stats.LightningSpellPower;
            totalCoef           *= 1 + args.Stats.BonusNatureDamageMultiplier;

            lightningOverload = args.Talents.LightningOverload;

            base.Initialize(args);
        }
Example #11
0
        public virtual void Initialize(ISpellArgs args)
        {
            float Speed = (1f + args.Stats.SpellHaste) * (1f + StatConversion.GetSpellHasteFromRating(args.Stats.HasteRating));

            gcd              = (float)Math.Round(gcd / Speed, 4);
            castTime         = (float)Math.Round(castTime / Speed, 4);
            latencyGcd       = args.LatencyGCD;
            latencyCast      = args.LatencyCast;
            critModifier    += .2f * args.Talents.ElementalFury;
            critModifier    *= (float)Math.Round(1.5f * (1f + args.Stats.BonusSpellCritMultiplier) - 1f, 6);
            dotCritModifier += .2f * args.Talents.ElementalFury;
            dotCritModifier *= (float)Math.Round(1.5f * (1f + args.Stats.BonusSpellCritMultiplier) - 1f, 6);
            //critModifier += 1f;
            spellPower += args.Stats.SpellPower;
            crit       += args.Stats.SpellCrit;
            missChance -= args.Stats.SpellHit;
            totalCoef  *= 1 + args.Stats.BonusDamageMultiplier; //ret + bm buff
            if (missChance < 0)
            {
                missChance = 0;
            }
            manaCost = (float)Math.Floor(manaCost);
            //base resistance by level
            totalCoef *= 1f - StatConversion.GetAverageResistance(80, 83, 0, 0);
        }
Example #12
0
        public override void Initialize(ISpellArgs args)
        {
            //for reference
            //dotTick = totalCoef * (periodicTick * dotBaseCoef + spellPower * dotSpCoef) * (1 + dotCanCrit * critModifier * CritChance)

            totalCoef       += .01f * args.Talents.Concussion;
            directCoefBonus += .1f * args.Talents.BoomingEchoes;
            manaCost        *= 1 - .02f * args.Talents.Convection;
            dotBaseCoef     *= 1 + .2f * args.Talents.StormEarthAndFire;
            dotSpCoef       *= 1 + .2f * args.Talents.StormEarthAndFire;
            dotBaseCoef     *= 1 + args.Stats.BonusFlameShockDoTDamage;
            dotSpCoef       *= 1 + args.Stats.BonusFlameShockDoTDamage;
            manaCost        *= 1 - .45f * args.Talents.ShamanisticFocus;
            cooldown        -= .2f * args.Talents.Reverberation;
            cooldown        -= 1f * args.Talents.BoomingEchoes;
            spellPower      += args.Stats.SpellFireDamageRating;
            totalCoef       *= 1 + args.Stats.BonusFireDamageMultiplier;
            periodicTicks   += args.Stats.BonusFlameShockDuration / periodicTickTime; // t9 2 piece

            if (args.Talents.GlyphofFlameShock)
            {
                dotCritModifier += .6f;
            }
            if (args.Talents.GlyphofShocking)
            {
                gcd -= .5f;
            }

            dotCanCrit = 1;

            ApplyDotHaste(args);
            base.Initialize(args);
        }
Example #13
0
        public override void Initialize(ISpellArgs args)
        {
            //totalCoef += .01f * args.Talents.TwinDisciplines;
            cooldown -= .5f * args.Talents.ImprovedMindBlast;
            //totalCoef += .01f + args.Talents.Shadowform;

            base.Initialize(args);
        }
Example #14
0
 public void Update(ISpellArgs args)
 {
     foreach (Spell s in spells)
     {
         if (s != null)
             s.Update(args);
     }
 }
Example #15
0
        public override void Initialize(ISpellArgs args)
        {
            //totalCoef += .01f * args.Talents.TwinDisciplines;
            cooldown -= .5f * args.Talents.ImprovedMindBlast;
            //totalCoef += .01f + args.Talents.Shadowform;

            base.Initialize(args);
        }
Example #16
0
        public override void Initialize(ISpellArgs args)
        {
            if (args.Talents.GlyphofElementalMastery)
            {
                cooldown -= 30f;
            }

            base.Initialize(args);
        }
Example #17
0
 public void Update(ISpellArgs args)
 {
     foreach (Spell s in spells)
     {
         if (s != null)
             s.Update(args);
     }
     EMapplied = false;
 }
Example #18
0
        public override void Initialize(ISpellArgs args)
        {
            //for reference
            //dotTick = totalCoef * (periodicTick * dotBaseCoef + spellPower * dotSpCoef) * (1 + critModifier * CritChance)

            manaCost *= 1 - .2f * args.Talents.MentalAgility;

            base.Initialize(args);
        }
Example #19
0
        public override void Initialize(ISpellArgs args)
        {
            //for reference
            //dotTick = totalCoef * (periodicTick * dotBaseCoef + spellPower * dotSpCoef) * (1 + critModifier * CritChance)

            manaCost *= 1 - .2f * args.Talents.MentalAgility;
            
            base.Initialize(args);
        }
Example #20
0
 public void Update(ISpellArgs args)
 {
     foreach (Spell s in spells)
     {
         if (s != null)
         {
             s.Update(args);
         }
     }
 }
Example #21
0
        public override void Initialize(ISpellArgs args)
        {
            totalCoef *= 1 + (.1f * args.Talents.CallOfFlame);

            manaCost -= args.Stats.NatureSpellsManaCostReduction;

            periodicTicks *= 1 + (.2f * args.Talents.TotemicFocus);

            base.Initialize(args);
        }
Example #22
0
        public override void Initialize(ISpellArgs args)
        {
            totalCoef *= 1 + (.1f * args.Talents.CallOfFlame);

            manaCost -= args.Stats.NatureSpellsManaCostReduction;

            periodicTicks *= 1 + (.2f * args.Talents.TotemicFocus);

            base.Initialize(args);
        }
Example #23
0
        public void ApplyDotHaste(ISpellArgs args)
        {
            float Speed = (1f + args.Stats.SpellHaste) * (1f + StatConversion.GetSpellHasteFromRating(args.Stats.HasteRating));

            periodicTickTime = (float)Math.Round(periodicTickTime / Speed, 4);
            // Enough haste adds more ticks.
            while (((periodicTicks + 1) * periodicTickTime) <= (baseDuration))
            {
                periodicTicks++;
            }
        }
Example #24
0
 public void Update(ISpellArgs args)
 {
     foreach (Spell s in spells)
     {
         if (s != null)
         {
             s.Update(args);
         }
     }
     EMapplied = false;
 }
Example #25
0
        public override void Initialize(ISpellArgs args)
        {
            crit += .01f * args.Talents.Acuity;
            totalCoef += .01f * args.Talents.Concussion;
            spellPower += args.Stats.SpellNatureDamageRating;
            totalCoef *= 1 + args.Stats.BonusNatureDamageMultiplier;

            if (args.Talents.GlyphofThunder)
                cooldown -= 10f;

            base.Initialize(args);
        }
Example #26
0
 public SpellBox(ISpellArgs args)
 {
     spells = new Spell[10];
     spells[(int)SpellIndex.DevouringPlauge] = new DevouringPlauge(args);
     spells[(int)SpellIndex.MindBlast]       = new MindBlast(args);
     spells[(int)SpellIndex.MindFlay]        = new MindFlay(args);
     spells[(int)SpellIndex.ShadowFiend]     = new ShadowFiend(args);
     spells[(int)SpellIndex.ShadowWordDeath] = new ShadowWordDeath(args);
     spells[(int)SpellIndex.ShadowWordPain]  = new ShadowWordPain(args);
     spells[(int)SpellIndex.VampiricTouch]   = new VampiricTouch(args);
     spells[(int)SpellIndex.PowerWordShield] = new PowerWordShield(args);
     spells[(int)SpellIndex.MindSpike]       = new MindSpike(args);
 }
Example #27
0
        public override void Initialize(ISpellArgs args)
        {
            //for reference
            //dotTick = totalCoef * (periodicTick * dotBaseCoef + spellPower * dotSpCoef) * (1 + critModifier * CritChance)

            //totalCoef += .01f + args.Talents.TwinDisciplines;
            //totalCoef += .01f + args.Talents.Evangelism;
            //totalCoef += .01f + args.Talents.Shadowform;

            //if (args.Talents.GlyphofMindFlay)
            //periodicTick *= 1.1f; //Add 10% periodic damage

            base.Initialize(args);
        }
Example #28
0
        public SpellBox(ISpellArgs args)
        {
            spells = new Spell[10];
            spells[(int)SpellIndex.DevouringPlauge] = new DevouringPlauge(args);
            spells[(int)SpellIndex.MindBlast] = new MindBlast(args);
            spells[(int)SpellIndex.MindFlay] = new MindFlay(args);
            spells[(int)SpellIndex.ShadowFiend] = new ShadowFiend(args);
            spells[(int)SpellIndex.ShadowWordDeath] = new ShadowWordDeath(args);
            spells[(int)SpellIndex.ShadowWordPain] = new ShadowWordPain(args);
            spells[(int)SpellIndex.VampiricTouch] = new VampiricTouch(args);
            spells[(int)SpellIndex.PowerWordShield] = new PowerWordShield(args);
            spells[(int)SpellIndex.MindSpike] = new MindSpike(args);

        }
Example #29
0
        public override void Initialize(ISpellArgs args)
        {
            crit       += .01f * args.Talents.Acuity;
            totalCoef  += .01f * args.Talents.Concussion;
            spellPower += args.Stats.SpellNatureDamageRating;
            totalCoef  *= 1 + args.Stats.BonusNatureDamageMultiplier;

            if (args.Talents.GlyphofThunder)
            {
                cooldown -= 10f;
            }

            base.Initialize(args);
        }
Example #30
0
        public override void Initialize(ISpellArgs args)
        {
            //for reference
            //dotTick = totalCoef * (periodicTick * dotBaseCoef + spellPower * dotSpCoef) * (1 + critModifier * CritChance)

            //totalCoef += .01f + args.Talents.TwinDisciplines;
            //totalCoef += .01f + args.Talents.Evangelism;
            //totalCoef += .01f + args.Talents.Shadowform;

           //if (args.Talents.GlyphofMindFlay)
                //periodicTick *= 1.1f; //Add 10% periodic damage

                base.Initialize(args);
        }
Example #31
0
        public override void Initialize(ISpellArgs args)
        {
            totalCoef += .01f * args.Talents.ElementalPrecision;
            totalCoef += .02f * args.Talents.Concussion;
            manaCost *= 1 - .05f * args.Talents.Convection;
            manaCost -= args.Stats.NatureSpellsManaCostReduction;
            cooldown -= .5f * args.Talents.Reverberation;
            crit += .01f * args.Talents.Acuity;
            spellPower += args.Stats.SpellFrostDamageRating;
            totalCoef *= 1 + args.Stats.BonusFrostDamageMultiplier;
            if (args.Talents.GlyphofShocking)
                gcd -= .5f;

            base.Initialize(args);
        }
Example #32
0
        public override void Initialize(ISpellArgs args)
        {
            totalCoef  += .01f * args.Talents.Concussion;
            manaCost   *= 1 - .02f * args.Talents.Convection;
            manaCost   *= 1 - .45f * args.Talents.ShamanisticFocus;
            cooldown   -= .2f * args.Talents.Reverberation;
            spellPower += args.Stats.SpellNatureDamageRating;
            totalCoef  *= 1 + args.Stats.BonusNatureDamageMultiplier;
            if (args.Talents.GlyphofShocking)
            {
                gcd -= .5f;
            }

            base.Initialize(args);
        }
Example #33
0
 public SpellBox(ISpellArgs args)
 {
     spells = new Spell[12];
     spells[(int)SpellIndex.LightningBolt]  = new LightningBolt(args);
     spells[(int)SpellIndex.ChainLightning] = new ChainLightning(args);
     spells[(int)SpellIndex.LavaBurst]      = new LavaBurst(args, 0);
     spells[(int)SpellIndex.LavaBurstFS]    = new LavaBurst(args, 1);
     spells[(int)SpellIndex.FlameShock]     = new FlameShock(args);
     spells[(int)SpellIndex.EarthShock]     = new EarthShock(args);
     spells[(int)SpellIndex.FrostShock]     = new FrostShock(args);
     spells[(int)SpellIndex.Thunderstorm]   = new Thunderstorm(args);
     spells[(int)SpellIndex.FireNova]       = new FireNova(args);
     spells[(int)SpellIndex.SearingTotem]   = new SearingTotem(args);
     spells[(int)SpellIndex.MagmaTotem]     = new MagmaTotem(args);
     spells[(int)SpellIndex.FireElemental]  = new FireElemental(args);
 }
Example #34
0
        public override void Initialize(ISpellArgs args)
        {
            base.Initialize(args);

            float hasteRating = StatConversion.GetHasteFromRating(args.Stats.HasteRating, CharacterClass.Priest);

            if (tickHasteCoEf != 0f)
            {
                tickExtra = hasteRating / tickHasteCoEf;
            }

            float remander = (float)Math.IEEERemainder(tickExtra, 1);

            tickPeriod     = tickPeriodBase / (1 + hasteRating);
            debuffDuration = debuffDurationBase / (1 + hasteRating);
        }
Example #35
0
 public SpellBox(ISpellArgs args)
 {
     spells = new Spell[12];
     spells[(int)SpellIndex.LightningBolt] = new LightningBolt(args);
     spells[(int)SpellIndex.ChainLightning] = new ChainLightning(args);
     spells[(int)SpellIndex.LavaBurst] = new LavaBurst(args, 0);
     spells[(int)SpellIndex.LavaBurstFS] = new LavaBurst(args, 1);
     spells[(int)SpellIndex.FlameShock] = new FlameShock(args);
     spells[(int)SpellIndex.EarthShock] = new EarthShock(args);
     spells[(int)SpellIndex.FrostShock] = new FrostShock(args);
     spells[(int)SpellIndex.Thunderstorm] = new Thunderstorm(args);
     spells[(int)SpellIndex.FireNova] = new FireNova(args);
     spells[(int)SpellIndex.SearingTotem] = new SearingTotem(args);
     spells[(int)SpellIndex.MagmaTotem] = new MagmaTotem(args);
     spells[(int)SpellIndex.FireElemental] = new FireElemental(args);
 }
Example #36
0
        public override void Initialize(ISpellArgs args)
        {
            totalCoef  += .01f * args.Talents.ElementalPrecision;
            totalCoef  += .02f * args.Talents.Concussion;
            manaCost   *= 1 - .05f * args.Talents.Convection;
            manaCost   -= args.Stats.NatureSpellsManaCostReduction;
            cooldown   -= .5f * args.Talents.Reverberation;
            crit       += .01f * args.Talents.Acuity;
            spellPower += args.Stats.SpellFrostDamageRating;
            totalCoef  *= 1 + args.Stats.BonusFrostDamageMultiplier;
            if (args.Talents.GlyphofShocking)
            {
                gcd -= .5f;
            }

            base.Initialize(args);
        }
Example #37
0
        public override void Initialize(ISpellArgs args)
        {
            additionalTargets = args.AdditionalTargets;
            if (additionalTargets < 0)
                additionalTargets = 0;
            else if (additionalTargets > 9)
                additionalTargets = 9;

            manaCost -= args.Stats.NatureSpellsManaCostReduction;

            totalCoef *= 1 + (.1f * args.Talents.CallOfFlame);
            totalCoef *= (1 + additionalTargets);
            shortName = "MT" + (1 + additionalTargets);

            periodicTicks *= 1 + (.2f * args.Talents.TotemicFocus);

            base.Initialize(args);
        }
Example #38
0
        public override void Initialize(ISpellArgs args)
        {
            additionalTargets = args.AdditionalTargets;
            if (additionalTargets < 0)
            {
                additionalTargets = 0;
            }
            else if (additionalTargets > 9)
            {
                additionalTargets = 9;
            }

            totalCoef *= 1 + (.05f * args.Talents.CallOfFlame);
            manaCost  *= 1 - (.05f * args.Talents.TotemicFocus);
            totalCoef *= (1 + additionalTargets);
            shortName  = "MT" + (1 + additionalTargets);

            base.Initialize(args);
        }
Example #39
0
        public override void Initialize(ISpellArgs args)
        {
            additionalTargets = args.AdditionalTargets;
            if (additionalTargets < 0)
                additionalTargets = 0;
            if (additionalTargets > 9)
                additionalTargets = 9;

            totalCoef *= 1f + additionalTargets;

            manaCost -= args.Stats.NatureSpellsManaCostReduction;

            shortName = "FN" + (1 + additionalTargets);

            spCoef += .1f * args.Talents.CallOfFlame;

            if (args.Talents.GlyphofFireNova)
                cooldown -= 3;

            base.Initialize(args);
        }
Example #40
0
        public override void Initialize(ISpellArgs args)
        {
            castTime -= .5f;
            spCoef += .32f;
            loCoef += .2f;
            loChance = LOChance(args.Stats.MasteryRating);

            manaCost *= 1f - (0.05f * args.Talents.Convection);
            manaCost -= (args.Stats.Mana * (.01f * args.Talents.RollingThunder)) * .6f;
            manaCost -= args.Stats.NatureSpellsManaCostReduction;
            totalCoef += .02f * args.Talents.Concussion;
            spCoef += .2f;
            loCoef += .2f;
            crit += .01f * args.Talents.Acuity;
            totalCoef += .01f * args.Talents.ElementalPrecision;

            spellPower += args.Stats.SpellNatureDamageRating; // Nature SP
            if (args.Talents.GlyphofLightningBolt) totalCoef += .04f;
            totalCoef *= 1 + args.Stats.BonusNatureDamageMultiplier;

            base.Initialize(args);
        }
Example #41
0
        public void Initialize(ISpellArgs args, float fs)
        {
            castTime -= .5f;
            spCoef += .32f;
            crit += args.Talents.Acuity;            
            manaCost *= 1f - .05f * args.Talents.Convection;
            manaCost -= args.Stats.NatureSpellsManaCostReduction;
            totalCoef += .02f * args.Talents.Concussion;
            totalCoef += .01f * args.Talents.ElementalPrecision;
            totalCoef += .05f * args.Talents.CallOfFlame;
            totalCoef += args.Stats.BonusDamageMultiplierLavaBurst; // t9 4 piece
            critModifier += new float[] { 0f, 0.06f, 0.12f, 0.24f }[args.Talents.LavaFlows];
            spellPower += args.Stats.SpellFireDamageRating;
            if (args.Talents.GlyphofLavaBurst)
                spCoef += .1f;
            totalCoef *= 1 + args.Stats.BonusFireDamageMultiplier;

            base.Initialize(args);

            this.fs = fs;
            crit = (1 - fs) * crit + fs;
        }
Example #42
0
File: Spell.cs Project: rakot/rawr
        /// <summary>
        /// Initialize Spell based on ISpellArgs
        /// </summary>
        /// <param name="args"></param>
        public virtual void Initialize(ISpellArgs args)
        {
            float Speed = (1f + args.Stats.SpellHaste) * (1f + StatConversion.GetSpellHasteFromRating(args.Stats.HasteRating));

            gcd           = (float)Math.Round(gcd / Speed, 4);
            castTimeBase  = (float)Math.Round(castTimeBase / Speed, 4);
            latencyGcd    = args.LatencyGCD;
            latencyCast   = args.LatencyCast;
            critModifier *= (float)Math.Round(1.5f + args.Stats.BonusSpellCritDamageMultiplier, 6);
            //critModifier += 1f;
            spellPower += args.Stats.SpellPower;
            crit       += args.Stats.SpellCrit;
            missChance -= args.Stats.SpellHit;
            //totalCoef *= 1 + args.Stats.BonusDamageMultiplier; //ret + bm + arcane buff
            if (missChance < 0)
            {
                missChance = 0;
            }
            manaCost = (float)Math.Floor(manaCost);
            //TODO: base resistance by level depending on what bossis being battled
            //totalCoef *= 1f - StatConversion.GetAverageResistance(85, 87, 0, 0);
        }
Example #43
0
        public override void Initialize(ISpellArgs args)
        {
            additionalTargets = args.AdditionalTargets;
            if (additionalTargets < 0)
            {
                additionalTargets = 0;
            }
            else if (additionalTargets > 9)
            {
                additionalTargets = 9;
            }

            manaCost -= args.Stats.NatureSpellsManaCostReduction;

            totalCoef *= 1 + (.1f * args.Talents.CallOfFlame);
            totalCoef *= (1 + additionalTargets);
            shortName  = "MT" + (1 + additionalTargets);

            periodicTicks *= 1 + (.2f * args.Talents.TotemicFocus);

            base.Initialize(args);
        }
Example #44
0
        public override void Initialize(ISpellArgs args)
        {
            additionalTargets = args.AdditionalTargets;
            // jumps
            if (additionalTargets < 0)
            {
                additionalTargets = 0;
            }

            spellPower += args.Stats.SpellNatureDamageRating;
            totalCoef  *= 1 + args.Stats.BonusNatureDamageMultiplier;

            if (additionalTargets > 4)
            {
                additionalTargets = 4;
            }
            if (!args.Talents.GlyphofChainLightning && additionalTargets > 2)
            {
                additionalTargets = 2;
            }
            totalCoef *= new float[] { 1f, 1.7f, 2.19f, 2.533f, 2.7731f }[additionalTargets];

            loChance   = LOChance(args.Stats.MasteryRating);
            cooldown   = 3f;
            manaCost  *= 1f - (0.05f * args.Talents.Convection);
            manaCost  -= ((args.Stats.Mana * (.01f * args.Talents.RollingThunder)) * .6f) * (additionalTargets + 1);
            manaCost  -= args.Stats.NatureSpellsManaCostReduction;
            totalCoef += .02f * args.Talents.Concussion;
            spCoef    += .32f;
            loCoef    += .2f;
            crit      += .01f * args.Talents.Acuity;
            totalCoef += .01f * args.Talents.ElementalPrecision;

            shortName = "CL" + (1 + additionalTargets);

            base.Initialize(args);
        }
Example #45
0
        public override void Initialize(ISpellArgs args)
        {
            //for reference
            //dotTick = totalCoef * (periodicTick * dotBaseCoef + spellPower * dotSpCoef) * (1 + dotCanCrit * critModifier * CritChance)

            totalCoef += .01f * args.Talents.Concussion;
            manaCost *= 1 - .02f * args.Talents.Convection;
            manaCost -= args.Stats.NatureSpellsManaCostReduction;
            cooldown -= .2f * args.Talents.Reverberation;
            spellPower += args.Stats.SpellFireDamageRating;
            totalCoef *= 1 + args.Stats.BonusFireDamageMultiplier;

            if (args.Talents.GlyphofFlameShock)
                periodicTicks = (Single)(periodicTicks * .5);
            if (args.Talents.GlyphofShocking)
                gcd -= .5f;

            baseDuration = periodicTicks * periodicTickTime;

            dotCanCrit = 1;

            ApplyDotHaste(args);
            base.Initialize(args);
        }
Example #46
0
        public override void Initialize(ISpellArgs args)
        {
            castTime            -= .1f * args.Talents.LightningMastery;
            manaCost            *= 1f - .02f * args.Talents.Convection;
            totalCoef           += .01f * args.Talents.Concussion;
            crit                += .05f * args.Talents.CallOfThunder;
            spCoef              += .04f * args.Talents.Shamanism;
            loCoef              += .04f * args.Talents.Shamanism;
            crit                += .05f * args.Talents.TidalMastery;
            manaCost            *= 1 - args.Stats.LightningBoltCostReduction / 100f; // T7 2 piece
            spellPower          += args.Stats.SpellNatureDamageRating;               // Nature SP
            lightningSpellpower += args.Stats.LightningSpellPower;                   // Totem (relic) is not affected by shamanism
            if (args.Talents.GlyphofLightningBolt)
            {
                totalCoef += .04f;
            }
            totalCoef *= 1 + args.Stats.BonusNatureDamageMultiplier;
            totalCoef *= 1 + args.Stats.LightningBoltDamageModifier / 100f; // T6 4 piece

            lightningOverload = args.Talents.LightningOverload;

            base.Initialize(args);
            critModifier *= 1 + args.Stats.LightningBoltCritDamageModifier; // T8 4 piece
        }
Example #47
0
        public void Initialize(ISpellArgs args, float fs)
        {
            castTime     -= .5f;
            spCoef       += .32f;
            crit         += args.Talents.Acuity;
            manaCost     *= 1f - .05f * args.Talents.Convection;
            manaCost     -= args.Stats.NatureSpellsManaCostReduction;
            totalCoef    += .02f * args.Talents.Concussion;
            totalCoef    += .01f * args.Talents.ElementalPrecision;
            totalCoef    += .05f * args.Talents.CallOfFlame;
            totalCoef    += args.Stats.BonusDamageMultiplierLavaBurst; // t9 4 piece
            critModifier += new float[] { 0f, 0.06f, 0.12f, 0.24f }[args.Talents.LavaFlows];
            spellPower   += args.Stats.SpellFireDamageRating;
            if (args.Talents.GlyphofLavaBurst)
            {
                spCoef += .1f;
            }
            totalCoef *= 1 + args.Stats.BonusFireDamageMultiplier;

            base.Initialize(args);

            this.fs = fs;
            crit    = (1 - fs) * crit + fs;
        }
Example #48
0
 public MindSpike(ISpellArgs args)
     : this()
 {
     Initialize(args);
 }
Example #49
0
 public FlameShock(ISpellArgs args)
     : this()
 {
     Initialize(args);
 }
Example #50
0
 public ChainLightning(ISpellArgs args)
     : this()
 {
     Initialize(args);
 }
Example #51
0
 public PowerWordShield(ISpellArgs args)
     : this()
 {
     Initialize(args);
 }
Example #52
0
 public VampiricTouch(ISpellArgs args)
     : this()
 {
     Initialize(args);
 }
Example #53
0
        public override void Initialize(ISpellArgs args)
        {
            base.Initialize(args);

            float hasteRating = StatConversion.GetHasteFromRating(args.Stats.HasteRating, CharacterClass.Priest);

            if (tickHasteCoEf != 0f)
                tickExtra = hasteRating / tickHasteCoEf;

            float remander = (float)Math.IEEERemainder(tickExtra, 1);
            
            tickPeriod = tickPeriodBase / (1 + hasteRating);
            debuffDuration = debuffDurationBase / (1 + hasteRating);
        }
Example #54
0
 public ElementalMastery(ISpellArgs args)
     : this()
 {
     Initialize(args);
 }
Example #55
0
 public FireElemental(ISpellArgs args)
     : base()
 {
     Initialize(args);
 }
Example #56
0
 public override void Initialize(ISpellArgs args)
 {
     base.Initialize(args);
 }
Example #57
0
 public MindFlay(ISpellArgs args)
     : this()
 {
     Initialize(args);
 }
Example #58
0
 public void Update(ISpellArgs args)
 {
     SetBaseValues();
     Initialize(args);
 }
Example #59
0
 public MindBlast(ISpellArgs args)
     : this()
 {
     Initialize(args);
 }
Example #60
0
 public void ApplyDotHaste(ISpellArgs args)
 {
     float Speed = (1f + args.Stats.SpellHaste) * (1f + StatConversion.GetSpellHasteFromRating(args.Stats.HasteRating));
     periodicTickTime = (float)Math.Round(periodicTickTime / Speed, 4);
     // Enough haste adds more ticks.
     while (((periodicTicks + 1) * periodicTickTime) <= (baseDuration))
     {
         periodicTicks++;
     }
 }