aboutsummaryrefslogtreecommitdiff
path: root/src/server/scripts/EasternKingdoms/zone_tirisfal_glades.cpp
blob: 30f1378e7694e0130201444c4949a30f35d04839 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
/*
 * 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 "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();
}