aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAqua Deus <95978183+aquadeus@users.noreply.github.com>2024-12-01 13:33:40 +0100
committerGitHub <noreply@github.com>2024-12-01 13:33:40 +0100
commit9c6a9d031ef0227093d42360e6acd9d17e07ab0c (patch)
tree6871de86f3c99cf07da167e316f7671ed9a85e5f
parent230ac6e69881965d3785d4880ef24b60333c5692 (diff)
Scripts/Spells: Implement demon hunter talent "Eye Beam" (#30470)
-rw-r--r--sql/updates/world/master/2024_12_01_01_world.sql3
-rw-r--r--src/server/game/Spells/SpellMgr.cpp6
-rw-r--r--src/server/scripts/Spells/spell_dh.cpp32
3 files changed, 37 insertions, 4 deletions
diff --git a/sql/updates/world/master/2024_12_01_01_world.sql b/sql/updates/world/master/2024_12_01_01_world.sql
new file mode 100644
index 00000000000..6afc6ac6606
--- /dev/null
+++ b/sql/updates/world/master/2024_12_01_01_world.sql
@@ -0,0 +1,3 @@
+DELETE FROM `spell_script_names` WHERE `ScriptName`='spell_dh_eye_beam';
+INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
+(198013, 'spell_dh_eye_beam');
diff --git a/src/server/game/Spells/SpellMgr.cpp b/src/server/game/Spells/SpellMgr.cpp
index 43e561e6633..817dc049f91 100644
--- a/src/server/game/Spells/SpellMgr.cpp
+++ b/src/server/game/Spells/SpellMgr.cpp
@@ -5065,6 +5065,12 @@ void SpellMgr::LoadSpellInfoCorrections()
spellInfo->AttributesCu |= SPELL_ATTR0_CU_AURA_CANNOT_BE_SAVED;
});
+ // Eye Beam
+ ApplySpellFix({ 198030 }, [](SpellInfo* spellInfo)
+ {
+ spellInfo->_LoadSqrtTargetLimit(5, 0, {}, {});
+ });
+
for (SpellInfo const& s : mSpellInfoMap)
{
SpellInfo* spellInfo = &const_cast<SpellInfo&>(s);
diff --git a/src/server/scripts/Spells/spell_dh.cpp b/src/server/scripts/Spells/spell_dh.cpp
index f0d692266f0..f7b8bc4d5b8 100644
--- a/src/server/scripts/Spells/spell_dh.cpp
+++ b/src/server/scripts/Spells/spell_dh.cpp
@@ -74,7 +74,7 @@ enum DemonHunterSpells
SPELL_DH_DEMONIC_TRAMPLE_STUN = 213491,
SPELL_DH_DEMONS_BITE = 162243,
SPELL_DH_EYE_BEAM = 198013,
- SPELL_DH_EYE_BEAM_DMG = 198030,
+ SPELL_DH_EYE_BEAM_DAMAGE = 198030,
SPELL_DH_EYE_OF_LEOTHERAS_DMG = 206650,
SPELL_DH_FEAST_OF_SOULS = 207697,
SPELL_DH_FEAST_OF_SOULS_PERIODIC_HEAL = 207693,
@@ -241,6 +241,29 @@ private:
uint32 _healAmount = 0;
};
+// 198013 - Eye Beam
+class spell_dh_eye_beam : public AuraScript
+{
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo({ SPELL_DH_EYE_BEAM_DAMAGE });
+ }
+
+ void HandleEffectPeriodic(AuraEffect const* aurEff) const
+ {
+ if (Unit* caster = GetCaster())
+ caster->CastSpell(nullptr, SPELL_DH_EYE_BEAM_DAMAGE, CastSpellExtraArgsInit{
+ .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR,
+ .TriggeringAura = aurEff
+ });
+ }
+
+ void Register() override
+ {
+ OnEffectPeriodic += AuraEffectPeriodicFn(spell_dh_eye_beam::HandleEffectPeriodic, EFFECT_0, SPELL_AURA_PERIODIC_TRIGGER_SPELL);
+ }
+};
+
// 206416 - First Blood
class spell_dh_first_blood : public AuraScript
{
@@ -573,14 +596,15 @@ void AddSC_demon_hunter_spell_scripts()
{
RegisterSpellScript(spell_dh_chaos_strike);
RegisterSpellScript(spell_dh_charred_warblades);
+ RegisterSpellScript(spell_dh_eye_beam);
+ RegisterSpellScript(spell_dh_sigil_of_chains);
+ RegisterSpellScript(spell_dh_tactical_retreat);
+ RegisterSpellScript(spell_dh_vengeful_retreat_damage);
new areatrigger_dh_generic_sigil<SPELL_DH_SIGIL_OF_SILENCE_AOE>("areatrigger_dh_sigil_of_silence");
new areatrigger_dh_generic_sigil<SPELL_DH_SIGIL_OF_MISERY_AOE>("areatrigger_dh_sigil_of_misery");
new areatrigger_dh_generic_sigil<SPELL_DH_SIGIL_OF_FLAME_AOE>("areatrigger_dh_sigil_of_flame");
RegisterAreaTriggerAI(areatrigger_dh_sigil_of_chains);
- RegisterSpellScript(spell_dh_sigil_of_chains);
- RegisterSpellScript(spell_dh_tactical_retreat);
- RegisterSpellScript(spell_dh_vengeful_retreat_damage);
// Havoc