aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTeleqraph <nyrdeveloper@gmail.com>2023-05-07 16:43:56 +0200
committerGitHub <noreply@github.com>2023-05-07 16:43:56 +0200
commit23f42e09ec34ac6285773b70bd53503ea0986ff6 (patch)
tree6c48728862cfc4f3b86c2f21479871048ccc6d64
parent6ac102d1cf25881e8033e10be7e2a397a35349ae (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.sql3
-rw-r--r--src/server/scripts/Spells/spell_priest.cpp37
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);