From 5a4f5c25474a5a7f533ada819345c6e1a55c7d08 Mon Sep 17 00:00:00 2001 From: Naddley <64811442+Naddley@users.noreply.github.com> Date: Sun, 6 Jul 2025 16:20:31 +0200 Subject: Scripts/Tirisfal: Implement Quest: "A Legend You Can Hold" (#31110) --- .../EasternKingdoms/zone_tirisfal_glades.cpp | 53 ++++++++++++++++++++++ 1 file changed, 53 insertions(+) (limited to 'src') diff --git a/src/server/scripts/EasternKingdoms/zone_tirisfal_glades.cpp b/src/server/scripts/EasternKingdoms/zone_tirisfal_glades.cpp index b573ca76177..30f1378e769 100644 --- a/src/server/scripts/EasternKingdoms/zone_tirisfal_glades.cpp +++ b/src/server/scripts/EasternKingdoms/zone_tirisfal_glades.cpp @@ -15,6 +15,59 @@ * with this program. If not, see . */ +#include "ScriptMgr.h" +#include "Player.h" +#include "PlayerChoice.h" + +enum ALegendYouCanHoldPriest +{ + // Spells + SPELL_FORCE_HOLY_SPEC = 199701, + SPELL_FORCE_SHADOW_SPEC = 199703, + SPELL_FORCE_DISCIPLINE_SPEC = 199704, + SPELL_PLAYERCHOICE_REMOVE_TRACKING_QUESTS_PRIEST = 199699, + + // Playerchoices + PLAYERCHOICE_RESPONSE_CHOOSE_HOLY_WEAPON = 532, + PLAYERCHOICE_RESPONSE_CHOOSE_SHADOW_WEAPON = 533, + PLAYERCHOICE_RESPONSE_CHOOSE_DISCIPLINE = 534 +}; + +// 248 - Playerchoice +class playerchoice_a_weapon_you_can_hold_priest : public PlayerChoiceScript +{ +public: + playerchoice_a_weapon_you_can_hold_priest() : PlayerChoiceScript("playerchoice_a_weapon_you_can_hold_priest") {} + + void OnResponse(WorldObject* /*object*/, Player* player, PlayerChoice const* /*choice*/, PlayerChoiceResponse const* response, uint16 /*clientIdentifier*/) + { + if (response->ResponseId == PLAYERCHOICE_RESPONSE_CHOOSE_HOLY_WEAPON) + player->CastSpell(player, SPELL_FORCE_HOLY_SPEC, CastSpellExtraArgsInit{ .TriggerFlags = TRIGGERED_FULL_MASK }); + else if (response->ResponseId == PLAYERCHOICE_RESPONSE_CHOOSE_SHADOW_WEAPON) + player->CastSpell(player, SPELL_FORCE_SHADOW_SPEC, CastSpellExtraArgsInit{ .TriggerFlags = TRIGGERED_FULL_MASK }); + else if (response->ResponseId == PLAYERCHOICE_RESPONSE_CHOOSE_DISCIPLINE) + player->CastSpell(player, SPELL_FORCE_DISCIPLINE_SPEC, CastSpellExtraArgsInit{ .TriggerFlags = TRIGGERED_FULL_MASK }); + } +}; + +// 40706 - A Legend You Can Hold +class quest_a_legend_you_can_hold : public QuestScript +{ +public: + quest_a_legend_you_can_hold() : QuestScript("quest_a_legend_you_can_hold") {} + + void OnQuestStatusChange(Player* player, Quest const* /*quest*/, QuestStatus /*oldStatus*/, QuestStatus newStatus) override + { + if (newStatus == QUEST_STATUS_NONE) + player->CastSpell(player, SPELL_PLAYERCHOICE_REMOVE_TRACKING_QUESTS_PRIEST, CastSpellExtraArgsInit{ .TriggerFlags = TRIGGERED_FULL_MASK }); + } +}; + void AddSC_tirisfal_glades() { + // Playerchoice + new playerchoice_a_weapon_you_can_hold_priest(); + + // Quest + new quest_a_legend_you_can_hold(); } -- cgit v1.2.3