aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2025-03-31 00:03:11 +0200
committerShauren <shauren.trinity@gmail.com>2025-03-31 00:03:11 +0200
commit79e59e9158b1b9e9ddb1180c7c66c9136ca33871 (patch)
tree49b6ed359669ddeede9268e04ebf553a7a47d0a1
parent972bcdcdd7a4beee41ad1017fa3177afd630f3e5 (diff)
Scripts/Spells: Update shaman spell scripts to 11.1
-rw-r--r--sql/updates/world/master/2025_03_31_00_world.sql2
-rw-r--r--src/server/scripts/Spells/spell_shaman.cpp78
2 files changed, 20 insertions, 60 deletions
diff --git a/sql/updates/world/master/2025_03_31_00_world.sql b/sql/updates/world/master/2025_03_31_00_world.sql
new file mode 100644
index 00000000000..6b3e7c8dd73
--- /dev/null
+++ b/sql/updates/world/master/2025_03_31_00_world.sql
@@ -0,0 +1,2 @@
+DELETE FROM `spell_script_names` WHERE `spell_id`=114738;
+DELETE FROM `spell_script_names` WHERE `ScriptName`='spell_sha_windspeakers_lava_resurgence';
diff --git a/src/server/scripts/Spells/spell_shaman.cpp b/src/server/scripts/Spells/spell_shaman.cpp
index 07ed4dc4702..0951db1d2c6 100644
--- a/src/server/scripts/Spells/spell_shaman.cpp
+++ b/src/server/scripts/Spells/spell_shaman.cpp
@@ -99,8 +99,6 @@ enum ShamanSpells
SPELL_SHAMAN_ITEM_LIGHTNING_SHIELD = 23552,
SPELL_SHAMAN_ITEM_LIGHTNING_SHIELD_DAMAGE = 27635,
SPELL_SHAMAN_ITEM_MANA_SURGE = 23571,
- SPELL_SHAMAN_LAVA_BEAM = 114074,
- SPELL_SHAMAN_LAVA_BEAM_OVERLOAD = 114738,
SPELL_SHAMAN_LAVA_BURST = 51505,
SPELL_SHAMAN_LAVA_BURST_BONUS_DAMAGE = 71824,
SPELL_SHAMAN_LAVA_BURST_OVERLOAD = 77451,
@@ -156,7 +154,6 @@ enum ShamanSpells
SPELL_SHAMAN_UNRELENTING_STORMS_REDUCTION = 470491,
SPELL_SHAMAN_UNRELENTING_STORMS_TALENT = 470490,
SPELL_SHAMAN_UNRULY_WINDS = 390288,
- SPELL_SHAMAN_VOLCANIC_SURGE = 408572,
SPELL_SHAMAN_VOLTAIC_BLAZE_DAMAGE = 470057,
SPELL_SHAMAN_VOLTAIC_BLAZE_OVERRIDE = 470058,
SPELL_SHAMAN_WINDFURY_ATTACK = 25504,
@@ -303,7 +300,7 @@ class spell_sha_ancestral_guidance_heal : public SpellScript
void Register() override
{
- OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_sha_ancestral_guidance_heal::ResizeTargets, EFFECT_0, TARGET_UNIT_DEST_AREA_ALLY);
+ OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_sha_ancestral_guidance_heal::ResizeTargets, EFFECT_0, TARGET_UNIT_CASTER_AREA_RAID);
}
};
@@ -366,14 +363,14 @@ class spell_sha_ascendance_restoration : public AuraScript
return ValidateSpellInfo({ SPELL_SHAMAN_RESTORATIVE_MISTS });
}
- bool CheckProc(ProcEventInfo& procInfo)
+ static bool CheckProc(ProcEventInfo const& procInfo)
{
return procInfo.GetHealInfo() && procInfo.GetHealInfo()->GetOriginalHeal() && procInfo.GetSpellInfo()->Id != SPELL_SHAMAN_RESTORATIVE_MISTS_INITIAL;
}
- void OnProcHeal(AuraEffect* /*aurEff*/, ProcEventInfo& procInfo)
+ void OnProcHeal(AuraEffect const* aurEff, ProcEventInfo const& procInfo)
{
- _healToDistribute += procInfo.GetHealInfo()->GetOriginalHeal();
+ _healToDistribute += CalculatePct(int32(procInfo.GetHealInfo()->GetOriginalHeal()), aurEff->GetAmount());
}
void HandleEffectPeriodic(AuraEffect const* aurEff)
@@ -381,21 +378,23 @@ class spell_sha_ascendance_restoration : public AuraScript
if (!_healToDistribute)
return;
- CastSpellExtraArgs args(aurEff);
- args.AddSpellBP0(_healToDistribute);
- GetTarget()->CastSpell(nullptr, SPELL_SHAMAN_RESTORATIVE_MISTS, args);
+ GetTarget()->CastSpell(nullptr, SPELL_SHAMAN_RESTORATIVE_MISTS, CastSpellExtraArgsInit{
+ .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR,
+ .TriggeringAura = aurEff,
+ .SpellValueOverrides = { { SPELLVALUE_BASE_POINT0, _healToDistribute } }
+ });
_healToDistribute = 0;
}
void Register() override
{
DoCheckProc += AuraCheckProcFn(spell_sha_ascendance_restoration::CheckProc);
- OnEffectProc += AuraEffectProcFn(spell_sha_ascendance_restoration::OnProcHeal, EFFECT_1, SPELL_AURA_PERIODIC_DUMMY);
- OnEffectPeriodic += AuraEffectPeriodicFn(spell_sha_ascendance_restoration::HandleEffectPeriodic, EFFECT_1, SPELL_AURA_PERIODIC_DUMMY);
+ OnEffectProc += AuraEffectProcFn(spell_sha_ascendance_restoration::OnProcHeal, EFFECT_8, SPELL_AURA_DUMMY);
+ OnEffectPeriodic += AuraEffectPeriodicFn(spell_sha_ascendance_restoration::HandleEffectPeriodic, EFFECT_6, SPELL_AURA_PERIODIC_DUMMY);
}
private:
- uint32 _healToDistribute = 0;
+ int32 _healToDistribute = 0;
};
// 390370 - Ashen Catalyst
@@ -1914,13 +1913,11 @@ class spell_sha_mastery_elemental_overload : public AuraScript
SPELL_SHAMAN_LAVA_BURST_OVERLOAD,
SPELL_SHAMAN_CHAIN_LIGHTNING,
SPELL_SHAMAN_CHAIN_LIGHTNING_OVERLOAD,
- SPELL_SHAMAN_LAVA_BEAM,
- SPELL_SHAMAN_LAVA_BEAM_OVERLOAD,
SPELL_SHAMAN_STORMKEEPER
});
}
- bool CheckProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo)
+ static bool CheckProc(AuraEffect const* aurEff, ProcEventInfo const& eventInfo)
{
SpellInfo const* spellInfo = eventInfo.GetSpellInfo();
if (!spellInfo || !eventInfo.GetProcSpell())
@@ -1935,13 +1932,13 @@ class spell_sha_mastery_elemental_overload : public AuraScript
chance /= 3.0f;
if (Aura* stormkeeper = eventInfo.GetActor()->GetAura(SPELL_SHAMAN_STORMKEEPER))
- if (eventInfo.GetProcSpell()->m_appliedMods.find(stormkeeper) != eventInfo.GetProcSpell()->m_appliedMods.end())
+ if (eventInfo.GetProcSpell()->m_appliedMods.contains(stormkeeper))
chance = 100.0f;
return roll_chance_f(chance);
}
- void HandleProc(AuraEffect* /*aurEff*/, ProcEventInfo& procInfo)
+ void HandleProc(AuraEffect const* /*aurEff*/, ProcEventInfo const& procInfo)
{
PreventDefaultAction();
@@ -1969,7 +1966,7 @@ class spell_sha_mastery_elemental_overload : public AuraScript
OnEffectProc += AuraEffectProcFn(spell_sha_mastery_elemental_overload::HandleProc, EFFECT_0, SPELL_AURA_DUMMY);
}
- uint32 GetTriggeredSpellId(uint32 triggeringSpellId)
+ static uint32 GetTriggeredSpellId(uint32 triggeringSpellId)
{
switch (triggeringSpellId)
{
@@ -1978,7 +1975,6 @@ class spell_sha_mastery_elemental_overload : public AuraScript
case SPELL_SHAMAN_ICEFURY: return SPELL_SHAMAN_ICEFURY_OVERLOAD;
case SPELL_SHAMAN_LAVA_BURST: return SPELL_SHAMAN_LAVA_BURST_OVERLOAD;
case SPELL_SHAMAN_CHAIN_LIGHTNING: return SPELL_SHAMAN_CHAIN_LIGHTNING_OVERLOAD;
- case SPELL_SHAMAN_LAVA_BEAM: return SPELL_SHAMAN_LAVA_BEAM_OVERLOAD;
default:
break;
}
@@ -2198,25 +2194,15 @@ class spell_sha_path_of_flames_spread : public SpellScript
// 294020 - Restorative Mists
class spell_sha_restorative_mists : public SpellScript
{
- void FilterTargets(std::list<WorldObject*>& targets)
+ void HandleHeal(SpellEffIndex effIndex)
{
- _targetCount = uint32(targets.size());
- }
-
- void HandleHeal(SpellEffIndex /*effIndex*/)
- {
- if (_targetCount)
- SetHitHeal(GetHitHeal() / _targetCount);
+ SetHitHeal(GetHitHeal() / GetUnitTargetCountForEffect(effIndex));
}
void Register() override
{
- OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_sha_restorative_mists::FilterTargets, EFFECT_0, TARGET_UNIT_SRC_AREA_ALLY);
OnEffectHitTarget += SpellEffectFn(spell_sha_restorative_mists::HandleHeal, EFFECT_0, SPELL_EFFECT_HEAL);
}
-
-private:
- uint32 _targetCount = 0;
};
// 2645 - Ghost Wolf
@@ -3119,33 +3105,6 @@ class spell_sha_windfury_weapon_proc : public AuraScript
}
};
-// 378269 - Windspeaker's Lava Resurgence
-class spell_sha_windspeakers_lava_resurgence : public SpellScript
-{
- bool Validate(SpellInfo const* /*spellInfo*/) override
- {
- return ValidateSpellInfo({ SPELL_SHAMAN_VOLCANIC_SURGE });
- }
-
- void PreventLavaSurge(SpellEffIndex effIndex)
- {
- if (GetCaster()->HasAura(SPELL_SHAMAN_VOLCANIC_SURGE))
- PreventHitDefaultEffect(effIndex);
- }
-
- void PreventVolcanicSurge(SpellEffIndex effIndex)
- {
- if (!GetCaster()->HasAura(SPELL_SHAMAN_VOLCANIC_SURGE))
- PreventHitDefaultEffect(effIndex);
- }
-
- void Register() override
- {
- OnEffectLaunch += SpellEffectFn(spell_sha_windspeakers_lava_resurgence::PreventLavaSurge, EFFECT_1, SPELL_EFFECT_TRIGGER_SPELL);
- OnEffectLaunch += SpellEffectFn(spell_sha_windspeakers_lava_resurgence::PreventVolcanicSurge, EFFECT_2, SPELL_EFFECT_TRIGGER_SPELL);
- }
-};
-
// 462767 - Arctic Snowstorm
// 36797 - AreatriggerId
struct areatrigger_sha_arctic_snowstorm : AreaTriggerAI
@@ -3312,7 +3271,6 @@ void AddSC_shaman_spell_scripts()
RegisterSpellScript(spell_sha_voltaic_blaze_talent);
RegisterSpellScript(spell_sha_windfury_weapon);
RegisterSpellScript(spell_sha_windfury_weapon_proc);
- RegisterSpellScript(spell_sha_windspeakers_lava_resurgence);
RegisterAreaTriggerAI(areatrigger_sha_arctic_snowstorm);
RegisterAreaTriggerAI(areatrigger_sha_wind_rush_totem);
}