private void GenerateSpellList(Character character) { _AvailableSpells.Clear(); float tankHealingModifier = (_CalculationOptions.EarthShield && _CalculationOptions.Targets == "Tank") ? 0.15f : 0f; short orbValue = (short)((1516 * (1 + (character.ShamanTalents.ImprovedShields * .05f)))); if (_CalculationOptions.EarthShield) { EarthShield es = new EarthShield() { BaseManaCost = (int)(0.19f * _BaseMana), CostScale = 1f - character.ShamanTalents.TidalFocus * .02f, EffectModifier = 1.1f + (character.ShamanTalents.SparkOfLife * .02f), BonusSpellPower = 1 * ((1 + character.ShamanTalents.ElementalWeapons * .2f) * 150f), AbsorbOrbChance = 0f }; if (character.ShamanTalents.GlyphofEarthShield) es.EffectModifier += 0.2f; if (character.ShamanTalents.ImprovedShields > 0) es.EffectModifier += character.ShamanTalents.ImprovedShields * 0.05f; _AvailableSpells.Add(es); } if (character.ShamanTalents.Riptide > 0) { Riptide riptide = new Riptide() { BaseManaCost = (int)(0.10f * _BaseMana), DurationModifer = (character.ShamanTalents.GlyphofRiptide ? 6f : 0f), CostScale = 1f - character.ShamanTalents.TidalFocus * .02f, EffectModifier = (1.1f + (character.ShamanTalents.SparkOfLife * .02f) + tankHealingModifier), BonusSpellPower = 1 * ((1 + character.ShamanTalents.ElementalWeapons * .2f) * 150f), AbsorbOrbChance = 0.5f * character.ShamanTalents.ImprovedWaterShield, OrbValue = orbValue, ProvidesTidalWaves = (character.ShamanTalents.TidalWaves > 0) }; _AvailableSpells.Add(riptide); } HealingRain healingRain = new HealingRain() { BaseManaCost = (int)(0.46f * _BaseMana), CostScale = 1f - character.ShamanTalents.TidalFocus * .02f, EffectModifier = 1.1f + (character.ShamanTalents.SparkOfLife * .02f), AbsorbOrbChance = 0f, BonusSpellPower = 1 * ((1 + character.ShamanTalents.ElementalWeapons * .2f) * 150f) }; //_AvailableSpells.Add(healingRain); ChainHeal chainHeal = new ChainHeal() { BaseManaCost = (int)(0.17f * _BaseMana), ChainedHeal = false, CostScale = 1f - character.ShamanTalents.TidalFocus * .02f, EffectModifier = 1.1f + (character.ShamanTalents.SparkOfLife * .02f) + tankHealingModifier, BonusSpellPower = 1 * ((1 + character.ShamanTalents.ElementalWeapons * .2f) * 150f), AbsorbOrbChance = 0.15f * character.ShamanTalents.ImprovedWaterShield, OrbValue = orbValue, ProvidesTidalWaves = (character.ShamanTalents.TidalWaves > 0) }; _AvailableSpells.Add(chainHeal); HealingSpell healingSurge = new HealingSpell() { SpellId = 8004, SpellName = "Healing Surge", SpellAbrv = "HS", BaseManaCost = (int)(0.27f * _BaseMana), BaseCastTime = 1.5f, BaseCoefficient = 1.5f / 3.5f, BaseEffect = 6004f, CostScale = 1f - character.ShamanTalents.TidalFocus * .02f, EffectModifier = 1.1f + (character.ShamanTalents.SparkOfLife * .02f) + tankHealingModifier, BonusSpellPower = 1 * ((1 + character.ShamanTalents.ElementalWeapons * .2f) * 150f), AbsorbOrbChance = 0.3f * character.ShamanTalents.ImprovedWaterShield, OrbValue = orbValue, ConsumesTidalWaves = true }; if (character.ShamanTalents.TidalWaves > 0) healingSurge.TidalWavesBuff = new TemporaryBuff() { Name = "Tidal Waves", Stats = new Stats() { SpellCrit = 0.1f * character.ShamanTalents.TidalWaves } }; _AvailableSpells.Add(healingSurge); HealingSpell healingWave = new HealingSpell() { SpellId = 331, SpellName = "Healing Wave", SpellAbrv = "HW", BaseManaCost = (int)(0.09f * _BaseMana), BaseCastTime = 3f, BaseCoefficient = 3f / 3.5f, BaseEffect = 3002f, CostScale = 1f - character.ShamanTalents.TidalFocus * .02f, EffectModifier = 1.1f + (character.ShamanTalents.SparkOfLife * .02f) + tankHealingModifier, BonusSpellPower = 1 * ((1 + character.ShamanTalents.ElementalWeapons * .2f) * 150f), ConsumesTidalWaves = true, AbsorbOrbChance = 0.5f * character.ShamanTalents.ImprovedWaterShield, OrbValue = orbValue, CastTimeReduction = 0.5f // Purification }; if (character.ShamanTalents.TidalWaves > 0) healingWave.TidalWavesBuff = new TemporaryBuff() { Name = "Tidal Waves", Stats = new Stats() { SpellHaste = 0.1f * character.ShamanTalents.TidalWaves } }; _AvailableSpells.Add(healingWave); HealingSpell greaterHw = new HealingSpell() { SpellId = 77472, SpellName = "Greater Healing Wave", SpellAbrv = "GHW", BaseManaCost = (int)(0.3f * _BaseMana), BaseCastTime = 3f, BaseCoefficient = 3f / 3.5f, BaseEffect = 8005f, CostScale = 1f - character.ShamanTalents.TidalFocus * .02f, EffectModifier = 1.1f + (character.ShamanTalents.SparkOfLife * .02f) + tankHealingModifier, BonusSpellPower = 1 * ((1 + character.ShamanTalents.ElementalWeapons * .2f) * 150f), ConsumesTidalWaves = true, AbsorbOrbChance = 0.5f * character.ShamanTalents.ImprovedWaterShield, OrbValue = orbValue, CastTimeReduction = 0.5f // Purification }; if (character.ShamanTalents.TidalWaves > 0) greaterHw.TidalWavesBuff = new TemporaryBuff() { Name = "Tidal Waves", Stats = new Stats() { SpellHaste = 0.1f * character.ShamanTalents.TidalWaves } }; _AvailableSpells.Add(greaterHw); if (character.ShamanTalents.TelluricCurrents > 0) { LightningBolt lb = new LightningBolt() { BaseManaCost = (int)(0.06f * _BaseMana), CostScale = 1f - character.ShamanTalents.Convection * .05f, EffectModifier = 1f + (character.ShamanTalents.Concussion * 0.02f) + (character.ShamanTalents.GlyphofLightningBolt ? 0.04f : 0f), TCPercent = character.ShamanTalents.TelluricCurrents * 0.2f }; _AvailableSpells.Add(lb); } }
private void GenerateSpellList(Character character) { _AvailableSpells.Clear(); float tankHealingModifier = (_CalculationOptions.EarthShield && _CalculationOptions.Targets == "Tank") ? 0.15f : 0f; short orbValue = (short)((1516 * (1 + (character.ShamanTalents.ImprovedShields * .05f)))); if (_CalculationOptions.EarthShield) { EarthShield es = new EarthShield() { BaseManaCost = (int)(0.19f * _BaseMana), CostScale = 1f - character.ShamanTalents.TidalFocus * .02f, EffectModifier = 1.1f + (character.ShamanTalents.SparkOfLife * .02f), BonusSpellPower = 1 * ((1 + character.ShamanTalents.ElementalWeapons * .2f) * 150f), AbsorbOrbChance = 0f }; if (character.ShamanTalents.GlyphofEarthShield) { es.EffectModifier += 0.2f; } if (character.ShamanTalents.ImprovedShields > 0) { es.EffectModifier += character.ShamanTalents.ImprovedShields * 0.05f; } _AvailableSpells.Add(es); } if (character.ShamanTalents.Riptide > 0) { Riptide riptide = new Riptide() { BaseManaCost = (int)(0.10f * _BaseMana), DurationModifer = (character.ShamanTalents.GlyphofRiptide ? 6f : 0f), CostScale = 1f - character.ShamanTalents.TidalFocus * .02f, EffectModifier = (1.1f + (character.ShamanTalents.SparkOfLife * .02f) + tankHealingModifier), BonusSpellPower = 1 * ((1 + character.ShamanTalents.ElementalWeapons * .2f) * 150f), AbsorbOrbChance = 0.5f * character.ShamanTalents.ImprovedWaterShield, OrbValue = orbValue, ProvidesTidalWaves = (character.ShamanTalents.TidalWaves > 0) }; _AvailableSpells.Add(riptide); } HealingRain healingRain = new HealingRain() { BaseManaCost = (int)(0.46f * _BaseMana), CostScale = 1f - character.ShamanTalents.TidalFocus * .02f, EffectModifier = 1.1f + (character.ShamanTalents.SparkOfLife * .02f), AbsorbOrbChance = 0f, BonusSpellPower = 1 * ((1 + character.ShamanTalents.ElementalWeapons * .2f) * 150f) }; //_AvailableSpells.Add(healingRain); ChainHeal chainHeal = new ChainHeal() { BaseManaCost = (int)(0.17f * _BaseMana), ChainedHeal = false, CostScale = 1f - character.ShamanTalents.TidalFocus * .02f, EffectModifier = 1.1f + (character.ShamanTalents.SparkOfLife * .02f) + tankHealingModifier, BonusSpellPower = 1 * ((1 + character.ShamanTalents.ElementalWeapons * .2f) * 150f), AbsorbOrbChance = 0.15f * character.ShamanTalents.ImprovedWaterShield, OrbValue = orbValue, ProvidesTidalWaves = (character.ShamanTalents.TidalWaves > 0) }; _AvailableSpells.Add(chainHeal); HealingSpell healingSurge = new HealingSpell() { SpellId = 8004, SpellName = "Healing Surge", SpellAbrv = "HS", BaseManaCost = (int)(0.27f * _BaseMana), BaseCastTime = 1.5f, BaseCoefficient = 1.5f / 3.5f, BaseEffect = 6004f, CostScale = 1f - character.ShamanTalents.TidalFocus * .02f, EffectModifier = 1.1f + (character.ShamanTalents.SparkOfLife * .02f) + tankHealingModifier, BonusSpellPower = 1 * ((1 + character.ShamanTalents.ElementalWeapons * .2f) * 150f), AbsorbOrbChance = 0.3f * character.ShamanTalents.ImprovedWaterShield, OrbValue = orbValue, ConsumesTidalWaves = true }; if (character.ShamanTalents.TidalWaves > 0) { healingSurge.TidalWavesBuff = new TemporaryBuff() { Name = "Tidal Waves", Stats = new Stats() { SpellCrit = 0.1f * character.ShamanTalents.TidalWaves } } } ; _AvailableSpells.Add(healingSurge); HealingSpell healingWave = new HealingSpell() { SpellId = 331, SpellName = "Healing Wave", SpellAbrv = "HW", BaseManaCost = (int)(0.09f * _BaseMana), BaseCastTime = 3f, BaseCoefficient = 3f / 3.5f, BaseEffect = 3002f, CostScale = 1f - character.ShamanTalents.TidalFocus * .02f, EffectModifier = 1.1f + (character.ShamanTalents.SparkOfLife * .02f) + tankHealingModifier, BonusSpellPower = 1 * ((1 + character.ShamanTalents.ElementalWeapons * .2f) * 150f), ConsumesTidalWaves = true, AbsorbOrbChance = 0.5f * character.ShamanTalents.ImprovedWaterShield, OrbValue = orbValue, CastTimeReduction = 0.5f // Purification }; if (character.ShamanTalents.TidalWaves > 0) { healingWave.TidalWavesBuff = new TemporaryBuff() { Name = "Tidal Waves", Stats = new Stats() { SpellHaste = 0.1f * character.ShamanTalents.TidalWaves } } } ; _AvailableSpells.Add(healingWave); HealingSpell greaterHw = new HealingSpell() { SpellId = 77472, SpellName = "Greater Healing Wave", SpellAbrv = "GHW", BaseManaCost = (int)(0.3f * _BaseMana), BaseCastTime = 3f, BaseCoefficient = 3f / 3.5f, BaseEffect = 8005f, CostScale = 1f - character.ShamanTalents.TidalFocus * .02f, EffectModifier = 1.1f + (character.ShamanTalents.SparkOfLife * .02f) + tankHealingModifier, BonusSpellPower = 1 * ((1 + character.ShamanTalents.ElementalWeapons * .2f) * 150f), ConsumesTidalWaves = true, AbsorbOrbChance = 0.5f * character.ShamanTalents.ImprovedWaterShield, OrbValue = orbValue, CastTimeReduction = 0.5f // Purification }; if (character.ShamanTalents.TidalWaves > 0) { greaterHw.TidalWavesBuff = new TemporaryBuff() { Name = "Tidal Waves", Stats = new Stats() { SpellHaste = 0.1f * character.ShamanTalents.TidalWaves } } } ; _AvailableSpells.Add(greaterHw); if (character.ShamanTalents.TelluricCurrents > 0) { LightningBolt lb = new LightningBolt() { BaseManaCost = (int)(0.06f * _BaseMana), CostScale = 1f - character.ShamanTalents.Convection * .05f, EffectModifier = 1f + (character.ShamanTalents.Concussion * 0.02f) + (character.ShamanTalents.GlyphofLightningBolt ? 0.04f : 0f), TCPercent = character.ShamanTalents.TelluricCurrents * 0.2f }; _AvailableSpells.Add(lb); } }