aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sql/updates/world/master/2025_01_13_03_world.sql7
-rw-r--r--src/server/scripts/Spells/spell_mage.cpp28
2 files changed, 35 insertions, 0 deletions
diff --git a/sql/updates/world/master/2025_01_13_03_world.sql b/sql/updates/world/master/2025_01_13_03_world.sql
new file mode 100644
index 00000000000..e31f45a5089
--- /dev/null
+++ b/sql/updates/world/master/2025_01_13_03_world.sql
@@ -0,0 +1,7 @@
+DELETE FROM `spell_proc` WHERE `SpellId` IN (382289);
+INSERT INTO `spell_proc` (`SpellId`,`SchoolMask`,`SpellFamilyName`,`SpellFamilyMask0`,`SpellFamilyMask1`,`SpellFamilyMask2`,`SpellFamilyMask3`,`ProcFlags`,`ProcFlags2`,`SpellTypeMask`,`SpellPhaseMask`,`HitMask`,`AttributesMask`,`DisableEffectsMask`,`ProcsPerMinute`,`Chance`,`Cooldown`,`Charges`) VALUES
+(382289,0x00,3,0x00010000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0,0,0,0); -- Tempest Barrier
+
+DELETE FROM `spell_script_names` WHERE `ScriptName`='spell_mage_tempest_barrier';
+INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
+(382289, 'spell_mage_tempest_barrier');
diff --git a/src/server/scripts/Spells/spell_mage.cpp b/src/server/scripts/Spells/spell_mage.cpp
index 2db4a8676f3..b0dd0abb7b3 100644
--- a/src/server/scripts/Spells/spell_mage.cpp
+++ b/src/server/scripts/Spells/spell_mage.cpp
@@ -87,6 +87,7 @@ enum MageSpells
SPELL_MAGE_SLOW = 31589,
SPELL_MAGE_SQUIRREL_FORM = 32813,
SPELL_MAGE_SUPERNOVA = 157980,
+ SPELL_MAGE_TEMPEST_BARRIER_ABSORB = 382290,
SPELL_MAGE_WORGEN_FORM = 32819,
SPELL_PET_NETHERWINDS_FATIGUED = 160455,
SPELL_MAGE_ICE_LANCE_TRIGGER = 228598,
@@ -1450,6 +1451,32 @@ class spell_mage_supernova : public SpellScript
}
};
+// 382289 - Tempest Barrier
+class spell_mage_tempest_barrier : public AuraScript
+{
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo({ SPELL_MAGE_TEMPEST_BARRIER_ABSORB });
+ }
+
+ void HandleEffectProc(AuraEffect const* aurEff, ProcEventInfo const& /*eventInfo*/)
+ {
+ PreventDefaultAction();
+ Unit* target = GetTarget();
+ int32 amount = CalculatePct(target->GetMaxHealth(), aurEff->GetAmount());
+ target->CastSpell(target, SPELL_MAGE_TEMPEST_BARRIER_ABSORB, CastSpellExtraArgsInit{
+ .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR,
+ .TriggeringAura = aurEff,
+ .SpellValueOverrides = { { SPELLVALUE_BASE_POINT0, amount } }
+ });
+ }
+
+ void Register() override
+ {
+ OnEffectProc += AuraEffectProcFn(spell_mage_tempest_barrier::HandleEffectProc, EFFECT_0, SPELL_AURA_PROC_TRIGGER_SPELL);
+ }
+};
+
// 210824 - Touch of the Magi (Aura)
class spell_mage_touch_of_the_magi_aura : public AuraScript
{
@@ -1557,6 +1584,7 @@ void AddSC_mage_spell_scripts()
RegisterSpellScript(spell_mage_ring_of_frost);
RegisterSpellAndAuraScriptPair(spell_mage_ring_of_frost_freeze, spell_mage_ring_of_frost_freeze_AuraScript);
RegisterSpellScript(spell_mage_supernova);
+ RegisterSpellScript(spell_mage_tempest_barrier);
RegisterSpellScript(spell_mage_touch_of_the_magi_aura);
RegisterSpellScript(spell_mage_water_elemental_freeze);
}