aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sql/updates/world/master/2022_08_31_01_world.sql3
-rw-r--r--src/server/scripts/Spells/spell_generic.cpp41
2 files changed, 44 insertions, 0 deletions
diff --git a/sql/updates/world/master/2022_08_31_01_world.sql b/sql/updates/world/master/2022_08_31_01_world.sql
new file mode 100644
index 00000000000..967950a74d4
--- /dev/null
+++ b/sql/updates/world/master/2022_08_31_01_world.sql
@@ -0,0 +1,3 @@
+DELETE FROM `spell_script_names` WHERE `ScriptName` = 'spell_gen_ancestral_call';
+INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
+(274738, 'spell_gen_ancestral_call');
diff --git a/src/server/scripts/Spells/spell_generic.cpp b/src/server/scripts/Spells/spell_generic.cpp
index 1aa75e40d48..615cf7072e0 100644
--- a/src/server/scripts/Spells/spell_generic.cpp
+++ b/src/server/scripts/Spells/spell_generic.cpp
@@ -5032,6 +5032,46 @@ class spell_gen_mount_check_aura : public AuraScript
}
};
+enum AncestralCallSpells
+{
+ SPELL_RICTUS_OF_THE_LAUGHING_SKULL = 274739,
+ SPELL_ZEAL_OF_THE_BURNING_BLADE = 274740,
+ SPELL_FEROCITY_OF_THE_FROSTWOLF = 274741,
+ SPELL_MIGHT_OF_THE_BLACKROCK = 274742
+};
+
+// 274738 - Ancestral Call (Mag'har Orc Racial)
+class spell_gen_ancestral_call : public SpellScript
+{
+ PrepareSpellScript(spell_gen_ancestral_call);
+
+ bool Validate(SpellInfo const* /*spell*/) override
+ {
+ return ValidateSpellInfo(
+ {
+ SPELL_RICTUS_OF_THE_LAUGHING_SKULL,
+ SPELL_ZEAL_OF_THE_BURNING_BLADE,
+ SPELL_FEROCITY_OF_THE_FROSTWOLF,
+ SPELL_MIGHT_OF_THE_BLACKROCK
+ });
+ }
+
+ static constexpr uint32 AncestralCallBuffs[] = { SPELL_RICTUS_OF_THE_LAUGHING_SKULL, SPELL_ZEAL_OF_THE_BURNING_BLADE, SPELL_FEROCITY_OF_THE_FROSTWOLF, SPELL_MIGHT_OF_THE_BLACKROCK };
+
+ void HandleOnCast()
+ {
+ Unit* caster = GetCaster();
+ uint32 spellId = Trinity::Containers::SelectRandomContainerElement(AncestralCallBuffs);
+
+ caster->CastSpell(caster, spellId, true);
+ }
+
+ void Register() override
+ {
+ OnCast += SpellCastFn(spell_gen_ancestral_call::HandleOnCast);
+ }
+};
+
void AddSC_generic_spell_scripts()
{
RegisterSpellScript(spell_gen_absorb0_hitlimit1);
@@ -5187,4 +5227,5 @@ void AddSC_generic_spell_scripts()
RegisterSpellScript(spell_summon_battle_pet);
RegisterSpellScript(spell_gen_anchor_here);
RegisterSpellScript(spell_gen_mount_check_aura);
+ RegisterSpellScript(spell_gen_ancestral_call);
}