diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/scripts/EasternKingdoms/zone_tirisfal_glades.cpp | 53 |
1 files changed, 53 insertions, 0 deletions
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 <http://www.gnu.org/licenses/>. */ +#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(); } |