aboutsummaryrefslogtreecommitdiff
path: root/src/server/scripts/Outland
diff options
context:
space:
mode:
authoroffl <11556157+offl@users.noreply.github.com>2025-11-04 23:37:06 +0200
committerGitHub <noreply@github.com>2025-11-04 22:37:06 +0100
commitd1a2f20b56aebc220b48560dfcd0e6bb72e90f7e (patch)
tree1492bf52e03333d62853dcd41970cd4595fad6f9 /src/server/scripts/Outland
parent899ac9e04e84192297fdd06278a8a0643f70b47d (diff)
Scripts/Spells: Migrate some spell linked spells to spell scripts (#31279)
Diffstat (limited to 'src/server/scripts/Outland')
-rw-r--r--src/server/scripts/Outland/BlackTemple/boss_warlord_najentus.cpp29
-rw-r--r--src/server/scripts/Outland/zone_hellfire_peninsula.cpp31
2 files changed, 58 insertions, 2 deletions
diff --git a/src/server/scripts/Outland/BlackTemple/boss_warlord_najentus.cpp b/src/server/scripts/Outland/BlackTemple/boss_warlord_najentus.cpp
index 67a3cecfd94..b0c0ecd4b04 100644
--- a/src/server/scripts/Outland/BlackTemple/boss_warlord_najentus.cpp
+++ b/src/server/scripts/Outland/BlackTemple/boss_warlord_najentus.cpp
@@ -39,13 +39,16 @@ enum NajentusTexts
enum NajentusSpells
{
SPELL_NEEDLE_SPINE_TARGETING = 39992,
- SPELL_NEEDLE_SPINE = 39835,
SPELL_TIDAL_BURST = 39878,
SPELL_TIDAL_SHIELD = 39872,
SPELL_IMPALING_SPINE = 39837,
SPELL_CREATE_NAJENTUS_SPINE = 39956,
SPELL_HURL_SPINE = 39948,
- SPELL_BERSERK = 26662
+ SPELL_BERSERK = 26662,
+
+ // Scripts
+ SPELL_NEEDLE_SPINE = 39835,
+ SPELL_NEEDLE_SPINE_EXPLOSION = 39968
};
enum NajentusEvents
@@ -228,9 +231,31 @@ class spell_najentus_needle_spine : public SpellScript
}
};
+// 39835 - Needle Spine
+class spell_najentus_needle_spine_explosion : public SpellScript
+{
+ PrepareSpellScript(spell_najentus_needle_spine_explosion);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo({ SPELL_NEEDLE_SPINE_EXPLOSION });
+ }
+
+ void HandleScript(SpellEffIndex /*effIndex*/)
+ {
+ GetHitUnit()->CastSpell(GetHitUnit(), SPELL_NEEDLE_SPINE_EXPLOSION, true);
+ }
+
+ void Register() override
+ {
+ OnEffectHitTarget += SpellEffectFn(spell_najentus_needle_spine_explosion::HandleScript, EFFECT_1, SPELL_EFFECT_SCRIPT_EFFECT);
+ }
+};
+
void AddSC_boss_najentus()
{
RegisterBlackTempleCreatureAI(boss_najentus);
RegisterGameObjectAI(go_najentus_spine);
RegisterSpellScript(spell_najentus_needle_spine);
+ RegisterSpellScript(spell_najentus_needle_spine_explosion);
}
diff --git a/src/server/scripts/Outland/zone_hellfire_peninsula.cpp b/src/server/scripts/Outland/zone_hellfire_peninsula.cpp
index 320fb13f989..e387477f185 100644
--- a/src/server/scripts/Outland/zone_hellfire_peninsula.cpp
+++ b/src/server/scripts/Outland/zone_hellfire_peninsula.cpp
@@ -954,6 +954,36 @@ class spell_hellfire_peninsula_absorb_eye_of_grillok : public AuraScript
}
};
+/*######
+## Quest 10838: The Demoniac Scryer
+######*/
+
+enum TheDemoniacScryer
+{
+ SPELL_SUMMON_DEMONAIC_VISITATION = 38991
+};
+
+// 38708 - Demonaic Visitation
+class spell_hellfire_peninsula_demonaic_visitation : public AuraScript
+{
+ PrepareAuraScript(spell_hellfire_peninsula_demonaic_visitation);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo({ SPELL_SUMMON_DEMONAIC_VISITATION });
+ }
+
+ void AfterRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
+ {
+ GetTarget()->CastSpell(GetTarget(), SPELL_SUMMON_DEMONAIC_VISITATION, true);
+ }
+
+ void Register() override
+ {
+ AfterEffectRemove += AuraEffectRemoveFn(spell_hellfire_peninsula_demonaic_visitation::AfterRemove, EFFECT_1, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL);
+ }
+};
+
void AddSC_hellfire_peninsula()
{
new npc_colonel_jules();
@@ -968,4 +998,5 @@ void AddSC_hellfire_peninsula()
RegisterSpellScriptWithArgs(spell_hellfire_peninsula_translocation_falcon_watch, "spell_hellfire_peninsula_translocation_falcon_watch_tower_up", SPELL_TRANSLOCATION_FALCON_WATCH_TOWER_UP);
RegisterSpellScript(spell_hellfire_peninsula_purify_helboar_meat);
RegisterSpellScript(spell_hellfire_peninsula_absorb_eye_of_grillok);
+ RegisterSpellScript(spell_hellfire_peninsula_demonaic_visitation);
}