Scripts/Spells: Implement Feral Lunge (#31746)

This commit is contained in:
Mirshod Allaberganov
2026-03-30 02:40:05 +05:00
committed by GitHub
parent 068c21528c
commit 88268721c8
2 changed files with 58 additions and 0 deletions

View File

@@ -0,0 +1,8 @@
DELETE FROM `spell_script_names` WHERE `spell_id` IN (196884, 215802);
INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
(196884, 'spell_sha_feral_lunge'),
(215802, 'spell_sha_feral_lunge_damage');
DELETE FROM `jump_charge_params` WHERE `id` = 1211;
INSERT INTO `jump_charge_params` (`id`, `speed`, `treatSpeedAsMoveTimeSeconds`, `unlimitedSpeed`, `minHeight`, `maxHeight`, `spellVisualId`, `progressCurveId`, `parabolicCurveId`, `triggerSpellId`) VALUES
(1211, 42, 0, 0, 2, NULL, NULL, NULL, 79789, 215802);

View File

@@ -77,6 +77,8 @@ enum ShamanSpells
SPELL_SHAMAN_ELEMENTAL_WEAPONS_BUFF = 408390,
SPELL_SHAMAN_ENERGY_SURGE = 40465,
SPELL_SHAMAN_ENHANCED_ELEMENTS = 77223,
SPELL_SHAMAN_FERAL_LUNGE = 196884,
SPELL_SHAMAN_FERAL_LUNGE_DAMAGE = 215802,
SPELL_SHAMAN_FIRE_NOVA_DAMAGE = 333977,
SPELL_SHAMAN_FIRE_NOVA_ENABLER = 466622,
SPELL_SHAMAN_FLAME_SHOCK = 188389,
@@ -1140,6 +1142,52 @@ class spell_sha_elemental_weapons : public AuraScript
}
};
// 196884 - Feral Lunge
class spell_sha_feral_lunge : public SpellScript
{
bool Validate(SpellInfo const* /*spellInfo*/) override
{
return ValidateSpellInfo({ SPELL_SHAMAN_GHOST_WOLF });
}
bool Load() override
{
return !GetCaster()->HasAura(SPELL_SHAMAN_GHOST_WOLF);
}
void OnPrecast() override
{
Unit* caster = GetCaster();
caster->CastSpell(caster, SPELL_SHAMAN_GHOST_WOLF, CastSpellExtraArgsInit{
.TriggerFlags = TRIGGERED_IGNORE_GCD | TRIGGERED_IGNORE_POWER_COST | TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR,
.TriggeringSpell = GetSpell()
});
}
void Register() override
{
}
};
// 215802 - Feral Lunge Damage
class spell_sha_feral_lunge_damage : public SpellScript
{
bool Validate(SpellInfo const* /*spellInfo*/) override
{
return ValidateSpellInfo({ SPELL_SHAMAN_GHOST_WOLF });
}
void HandleHit(SpellEffIndex /*effIndex*/) const
{
GetCaster()->RemoveAurasDueToSpell(SPELL_SHAMAN_GHOST_WOLF);
}
void Register() override
{
OnEffectHitTarget += SpellEffectFn(spell_sha_feral_lunge_damage::HandleHit, EFFECT_0, SPELL_EFFECT_SCHOOL_DAMAGE);
}
};
struct FireNovaTargetCheck
{
float MaxSearchRange = 40.0f;
@@ -3459,6 +3507,8 @@ void AddSC_shaman_spell_scripts()
RegisterSpellScript(spell_sha_earthquake_tick);
RegisterSpellScript(spell_sha_elemental_blast);
RegisterSpellScript(spell_sha_elemental_weapons);
RegisterSpellScript(spell_sha_feral_lunge);
RegisterSpellScript(spell_sha_feral_lunge_damage);
RegisterSpellScript(spell_sha_fire_nova);
RegisterSpellScript(spell_sha_flame_shock_fire_nova_enabler);
RegisterSpellScript(spell_sha_flametongue_weapon);