aboutsummaryrefslogtreecommitdiff
path: root/src/server/scripts/Maelstrom
diff options
context:
space:
mode:
authorNaddley <64811442+Naddley@users.noreply.github.com>2023-03-31 23:01:50 +0200
committerGitHub <noreply@github.com>2023-03-31 23:01:50 +0200
commit1440fe03de1b161b37dc6026e88a7cefd44cb220 (patch)
tree2ff7e701d9baef02a53af6a8e3c9e051814df067 /src/server/scripts/Maelstrom
parent4c67e2ff7ecb1c36693cb134a54c6805eed4d3d3 (diff)
Scripts/Deepholm: Scripted quest "All Our Friends Are Dead" (#28889)
Diffstat (limited to 'src/server/scripts/Maelstrom')
-rw-r--r--src/server/scripts/Maelstrom/maelstrom_script_loader.cpp2
-rw-r--r--src/server/scripts/Maelstrom/zone_deepholm.cpp61
2 files changed, 63 insertions, 0 deletions
diff --git a/src/server/scripts/Maelstrom/maelstrom_script_loader.cpp b/src/server/scripts/Maelstrom/maelstrom_script_loader.cpp
index 463efc0d9f6..2ec7cf98344 100644
--- a/src/server/scripts/Maelstrom/maelstrom_script_loader.cpp
+++ b/src/server/scripts/Maelstrom/maelstrom_script_loader.cpp
@@ -17,6 +17,7 @@
// This is where scripts' loading functions should be declared:
void AddSC_kezan();
+void AddSC_deepholm();
void AddSC_instance_stonecore(); // Stonecore
void AddSC_stonecore();
void AddSC_boss_corborus();
@@ -29,6 +30,7 @@ void AddSC_boss_high_priestess_azil();
void AddMaelstromScripts()
{
AddSC_kezan();
+ AddSC_deepholm();
AddSC_instance_stonecore(); // Stonecore
AddSC_stonecore();
AddSC_boss_corborus();
diff --git a/src/server/scripts/Maelstrom/zone_deepholm.cpp b/src/server/scripts/Maelstrom/zone_deepholm.cpp
new file mode 100644
index 00000000000..afe4a95cfe1
--- /dev/null
+++ b/src/server/scripts/Maelstrom/zone_deepholm.cpp
@@ -0,0 +1,61 @@
+/*
+* This file is part of the TrinityCore Project. See AUTHORS file for Copyright information
+*
+* This program is free software; you can redistribute it and/or modify it
+* under the terms of the GNU General Public License as published by the
+* Free Software Foundation; either version 2 of the License, or (at your
+* option) any later version.
+*
+* This program is distributed in the hope that it will be useful, but WITHOUT
+* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+* more details.
+*
+* You should have received a copy of the GNU General Public License along
+* with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include "ScriptMgr.h"
+#include "ScriptedCreature.h"
+#include "SpellScript.h"
+#include "SpellAuraEffects.h"
+
+enum AllOurFriendsAreDead
+{
+ // spells
+ SPELL_SPEAK_TO_FALLEN_SPIRIT_FEMALE = 94879,
+ SPELL_SPEAK_TO_FALLEN_SPIRIT_MALE = 79658,
+
+ // npcs
+ NPC_SLAIN_CREW_MEMBER_MALE = 42681
+};
+
+// 79614 - Spirit Totem
+class spell_spirit_totem : public SpellScript
+{
+ PrepareSpellScript(spell_spirit_totem);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo({ SPELL_SPEAK_TO_FALLEN_SPIRIT_FEMALE, SPELL_SPEAK_TO_FALLEN_SPIRIT_MALE });
+ }
+
+ void HandleHit(SpellEffIndex /*effIndex*/)
+ {
+ uint32 spellId = SPELL_SPEAK_TO_FALLEN_SPIRIT_FEMALE;
+ if (GetHitUnit()->GetEntry() == NPC_SLAIN_CREW_MEMBER_MALE)
+ spellId = SPELL_SPEAK_TO_FALLEN_SPIRIT_MALE;
+
+ GetHitUnit()->CastSpell(GetCaster(), spellId, true);
+ }
+
+ void Register() override
+ {
+ OnEffectHitTarget += SpellEffectFn(spell_spirit_totem::HandleHit, EFFECT_0, SPELL_EFFECT_DUMMY);
+ }
+};
+
+void AddSC_deepholm()
+{
+ RegisterSpellScript(spell_spirit_totem);
+}