diff --git a/Source/Game/Entities/Unit/Unit.Spells.cs b/Source/Game/Entities/Unit/Unit.Spells.cs index 97bd76fba..cca4047d0 100644 --- a/Source/Game/Entities/Unit/Unit.Spells.cs +++ b/Source/Game/Entities/Unit/Unit.Spells.cs @@ -684,16 +684,6 @@ namespace Game.Entities if (caster.FindCurrentSpellBySpellId(5938) != null) crit_chance = 0.0f; break; - case SpellFamilyNames.Shaman: - // Lava Burst - if (spellInfo.SpellFamilyFlags[1].HasAnyFlag(0x00001000u)) - { - if (GetAuraEffect(AuraType.PeriodicDamage, SpellFamilyNames.Shaman, new FlagArray128(0x10000000, 0, 0), caster.GetGUID()) != null) - if (GetTotalAuraModifier(AuraType.ModAttackerSpellAndWeaponCritChance) > -100) - return 100.0f; - break; - } - break; } // Spell crit suppression diff --git a/Source/Scripts/Spells/Shaman.cs b/Source/Scripts/Spells/Shaman.cs index 4ea4c6eae..a46f16dd3 100644 --- a/Source/Scripts/Spells/Shaman.cs +++ b/Source/Scripts/Spells/Shaman.cs @@ -935,6 +935,33 @@ namespace Scripts.Spells.Shaman } } + // 285452 - Lava Burst damage + [Script] // 285466 - Lava Burst Overload damage + class spell_sha_lava_crit_chance : SpellScript + { + public override bool Validate(SpellInfo spellInfo) + { + return ValidateSpellInfo(SpellIds.LavaBurstRank2, SpellIds.FlameShock); + } + + void CalcCritChance(Unit victim, ref float chance) + { + Unit caster = GetCaster(); + + if (caster == null || victim == null) + return; + + if (caster.HasAura(SpellIds.LavaBurstRank2) && victim.HasAura(SpellIds.FlameShock, caster.GetGUID())) + if (victim.GetTotalAuraModifier(AuraType.ModAttackerSpellAndWeaponCritChance) > -100) + chance = 100.0f; + } + + public override void Register() + { + OnCalcCritChance.Add(new OnCalcCritChanceHandler(CalcCritChance)); + } + } + [Script] // 77756 - Lava Surge class spell_sha_lava_surge : AuraScript {