Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Loading...
Searching...
No Matches
ulduar_teleporter.cpp
Go to the documentation of this file.
1/*
2* This file is part of Project SkyFire https://www.projectskyfire.org.
3* See LICENSE.md file for Copyright information
4*/
5
6#include "ScriptMgr.h"
7#include "ScriptedGossip.h"
8#include "InstanceScript.h"
9#include "Player.h"
10#include "ulduar.h"
11
12/*
13The teleporter appears to be active and stable.
14
15- Expedition Base Camp
16- Formation Grounds
17- Colossal Forge
18- Scrapyard
19- Antechamber of Ulduar
20- Shattered Walkway
21- Conservatory of Life
22*/
23
25{
26 BASE_CAMP = 200,
27 GROUNDS = 201,
28 FORGE = 202,
29 SCRAPYARD = 203,
31 WALKWAY = 205,
33};
34
36{
37 public:
38 ulduar_teleporter() : GameObjectScript("ulduar_teleporter") { }
39
40 bool OnGossipSelect(Player* player, GameObject* /*gameObject*/, uint32 sender, uint32 action) OVERRIDE
41 {
42 player->PlayerTalkClass->ClearMenus();
43 if (sender != GOSSIP_SENDER_MAIN)
44 return false;
45 if (!player->getAttackers().empty())
46 return false;
47
48 switch (action)
49 {
50 case BASE_CAMP:
51 player->TeleportTo(603, -706.122f, -92.6024f, 429.876f, 0.0f);
52 player->CLOSE_GOSSIP_MENU();
53 break;
54 case GROUNDS:
55 player->TeleportTo(603, 131.248f, -35.3802f, 409.804f, 0.0f);
56 player->CLOSE_GOSSIP_MENU();
57 break;
58 case FORGE:
59 player->TeleportTo(603, 553.233f, -12.3247f, 409.679f, 0.0f);
60 player->CLOSE_GOSSIP_MENU();
61 break;
62 case SCRAPYARD:
63 player->TeleportTo(603, 926.292f, -11.4635f, 418.595f, 0.0f);
64 player->CLOSE_GOSSIP_MENU();
65 break;
66 case ANTECHAMBER:
67 player->TeleportTo(603, 1498.09f, -24.246f, 420.967f, 0.0f);
68 player->CLOSE_GOSSIP_MENU();
69 break;
70 case WALKWAY:
71 player->TeleportTo(603, 1859.45f, -24.1f, 448.9f, 0.0f);
72 player->CLOSE_GOSSIP_MENU();
73 break;
74 case CONSERVATORY:
75 player->TeleportTo(603, 2086.27f, -24.3134f, 421.239f, 0.0f);
76 player->CLOSE_GOSSIP_MENU();
77 break;
78 }
79
80 return true;
81 }
82
83 bool OnGossipHello(Player* player, GameObject* gameObject) OVERRIDE
84 {
85 player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Teleport to the Expedition Base Camp", GOSSIP_SENDER_MAIN, BASE_CAMP);
86 if (InstanceScript* instance = gameObject->GetInstanceScript())
87 {
88 if (instance->GetData(DATA_COLOSSUS) == 2) //count of 2 collossus death
89 player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Teleport to the Formation Grounds", GOSSIP_SENDER_MAIN, GROUNDS);
90 if (instance->GetBossState(BOSS_LEVIATHAN) == DONE)
91 player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Teleport to the Colossal Forge", GOSSIP_SENDER_MAIN, FORGE);
92 if (instance->GetBossState(BOSS_XT002) == DONE)
93 {
94 player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Teleport to the Scrapyard", GOSSIP_SENDER_MAIN, SCRAPYARD);
95 player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Teleport to the Antechamber of Ulduar", GOSSIP_SENDER_MAIN, ANTECHAMBER);
96 }
97 if (instance->GetBossState(BOSS_KOLOGARN) == DONE)
98 player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Teleport to the Shattered Walkway", GOSSIP_SENDER_MAIN, WALKWAY);
99 if (instance->GetBossState(BOSS_AURIAYA) == DONE)
100 player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Teleport to the Conservatory of Life", GOSSIP_SENDER_MAIN, CONSERVATORY);
101 }
102
103 player->SEND_GOSSIP_MENU(gameObject->GetGOInfo()->GetGossipMenuId(), gameObject->GetGUID());
104 return true;
105 }
106};
107
109{
110 new ulduar_teleporter();
111}
std::uint32_t uint32
Definition Define.h:77
#define OVERRIDE
Definition Define.h:60
@ GOSSIP_ICON_CHAT
Definition GossipDef.h:46
@ DONE
@ GOSSIP_SENDER_MAIN
GameObjectScript(const char *name)
bool OnGossipHello(Player *player, GameObject *gameObject) OVERRIDE
bool OnGossipSelect(Player *player, GameObject *, uint32 sender, uint32 action) OVERRIDE
@ BOSS_LEVIATHAN
Definition ulduar.h:20
@ BOSS_KOLOGARN
Definition ulduar.h:25
@ BOSS_AURIAYA
Definition ulduar.h:26
@ BOSS_XT002
Definition ulduar.h:23
@ DATA_COLOSSUS
Definition ulduar.h:263
UlduarTeleporter
@ SCRAPYARD
@ BASE_CAMP
@ ANTECHAMBER
@ CONSERVATORY
void AddSC_ulduar_teleporter()