diff options
author | Teleqraph <nyrdeveloper@gmail.com> | 2023-05-07 16:43:56 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-05-07 16:43:56 +0200 |
commit | 23f42e09ec34ac6285773b70bd53503ea0986ff6 (patch) | |
tree | 6c48728862cfc4f3b86c2f21479871048ccc6d64 | |
parent | 6ac102d1cf25881e8033e10be7e2a397a35349ae (diff) |
Scripts/Spells: Update Halo (#28924)
* Update Halo's trigger spells to properly support both Halo for Shadow and Holy/Discipline specs. It also offers support during Shadow Covenant aura for Discipline since it uses SPELL_AURA_OVERRIDE_ACTIONBAR_SPELLS to override the spells cast.
-rw-r--r-- | sql/updates/world/master/2023_05_07_04_world.sql | 3 | ||||
-rw-r--r-- | src/server/scripts/Spells/spell_priest.cpp | 37 |
2 files changed, 35 insertions, 5 deletions
diff --git a/sql/updates/world/master/2023_05_07_04_world.sql b/sql/updates/world/master/2023_05_07_04_world.sql new file mode 100644 index 00000000000..2f15c012a09 --- /dev/null +++ b/sql/updates/world/master/2023_05_07_04_world.sql @@ -0,0 +1,3 @@ +DELETE FROM `spell_script_names` WHERE `ScriptName`='spell_pri_halo_shadow'; +INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES +(120644,'spell_pri_halo_shadow'); diff --git a/src/server/scripts/Spells/spell_priest.cpp b/src/server/scripts/Spells/spell_priest.cpp index db296515183..1a78be8d936 100644 --- a/src/server/scripts/Spells/spell_priest.cpp +++ b/src/server/scripts/Spells/spell_priest.cpp @@ -59,8 +59,12 @@ enum PriestSpells SPELL_PRIEST_DIVINE_WRATH = 40441, SPELL_PRIEST_FLASH_HEAL = 2061, SPELL_PRIEST_GUARDIAN_SPIRIT_HEAL = 48153, - SPELL_PRIEST_HALO_DAMAGE = 120696, - SPELL_PRIEST_HALO_HEAL = 120692, + SPELL_PRIEST_HALO_HOLY = 120517, + SPELL_PRIEST_HALO_SHADOW = 120644, + SPELL_PRIEST_HALO_HOLY_DAMAGE = 120696, + SPELL_PRIEST_HALO_HOLY_HEAL = 120692, + SPELL_PRIEST_HALO_SHADOW_DAMAGE = 390964, + SPELL_PRIEST_HALO_SHADOW_HEAL = 390971, SPELL_PRIEST_HEAL = 2060, SPELL_PRIEST_HOLY_WORD_CHASTISE = 88625, SPELL_PRIEST_HOLY_WORD_SANCTIFY = 34861, @@ -541,7 +545,27 @@ class spell_pri_guardian_spirit : public AuraScript } }; -// 120517 - Halo +// 120644 - Halo (Shadow) +class spell_pri_halo_shadow : public SpellScript +{ + PrepareSpellScript(spell_pri_halo_shadow); + + void HandleHitTarget(SpellEffIndex effIndex) + { + Unit* caster = GetCaster(); + + if (caster->GetPowerType() != GetEffectInfo().MiscValue) + PreventHitDefaultEffect(effIndex); + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_pri_halo_shadow::HandleHitTarget, EFFECT_1, SPELL_EFFECT_ENERGIZE); + } +}; + +// 120517 - Halo (Holy) +// 120644 - Halo (Shadow) struct areatrigger_pri_halo : AreaTriggerAI { areatrigger_pri_halo(AreaTrigger* areatrigger) : AreaTriggerAI(areatrigger) {} @@ -551,9 +575,11 @@ struct areatrigger_pri_halo : AreaTriggerAI if (Unit* caster = at->GetCaster()) { if (caster->IsValidAttackTarget(unit)) - caster->CastSpell(unit, SPELL_PRIEST_HALO_DAMAGE, CastSpellExtraArgs(TriggerCastFlags(TRIGGERED_IGNORE_GCD | TRIGGERED_IGNORE_CAST_IN_PROGRESS))); + caster->CastSpell(unit, at->GetSpellId() == SPELL_PRIEST_HALO_SHADOW ? SPELL_PRIEST_HALO_SHADOW_DAMAGE : SPELL_PRIEST_HALO_HOLY_DAMAGE, + CastSpellExtraArgs(TriggerCastFlags(TRIGGERED_IGNORE_GCD | TRIGGERED_IGNORE_CAST_IN_PROGRESS))); else if (caster->IsValidAssistTarget(unit)) - caster->CastSpell(unit, SPELL_PRIEST_HALO_HEAL, CastSpellExtraArgs(TriggerCastFlags(TRIGGERED_IGNORE_GCD | TRIGGERED_IGNORE_CAST_IN_PROGRESS))); + caster->CastSpell(unit, at->GetSpellId() == SPELL_PRIEST_HALO_SHADOW ? SPELL_PRIEST_HALO_SHADOW_HEAL : SPELL_PRIEST_HALO_HOLY_HEAL, + CastSpellExtraArgs(TriggerCastFlags(TRIGGERED_IGNORE_GCD | TRIGGERED_IGNORE_CAST_IN_PROGRESS))); } } }; @@ -1647,6 +1673,7 @@ void AddSC_priest_spell_scripts() RegisterSpellScript(spell_pri_divine_star_shadow); RegisterAreaTriggerAI(areatrigger_pri_divine_star); RegisterSpellScript(spell_pri_guardian_spirit); + RegisterSpellScript(spell_pri_halo_shadow); RegisterAreaTriggerAI(areatrigger_pri_halo); RegisterSpellScript(spell_pri_holy_words); RegisterSpellScript(spell_pri_item_t6_trinket); |