Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Loading...
Searching...
No Matches
instance_scarlet_monastery.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/* ScriptData
7SDName: Instance_Scarlet_Monastery
8SD%Complete: 50
9SDComment:
10SDCategory: Scarlet Monastery
11EndScriptData */
12
13#include "ScriptMgr.h"
14#include "ScriptedCreature.h"
15#include "scarlet_monastery.h"
16
18{
21 ENTRY_HEAD = 23775,
23};
24
25#define MAX_ENCOUNTER 2
26
28{
29public:
30 instance_scarlet_monastery() : InstanceMapScript("instance_scarlet_monastery", 189) { }
31
36
38 {
40
44 std::set<uint64> HorsemanAdds;
45
50
52
54 {
55 memset(&encounter, 0, sizeof(encounter));
56
58 HorsemanGUID = 0;
59 HeadGUID = 0;
60 HorsemanAdds.clear();
61
62 MograineGUID = 0;
63 WhitemaneGUID = 0;
64 VorrelGUID = 0;
66 }
67
69 {
70 switch (go->GetEntry())
71 {
72 case ENTRY_PUMPKIN_SHRINE: PumpkinShrineGUID = go->GetGUID();break;
73 case 104600: DoorHighInquisitorGUID = go->GetGUID(); break;
74 }
75 }
76
78 {
79 switch (creature->GetEntry())
80 {
81 case ENTRY_HORSEMAN: HorsemanGUID = creature->GetGUID(); break;
82 case ENTRY_HEAD: HeadGUID = creature->GetGUID(); break;
83 case ENTRY_PUMPKIN: HorsemanAdds.insert(creature->GetGUID());break;
84 case 3976: MograineGUID = creature->GetGUID(); break;
85 case 3977: WhitemaneGUID = creature->GetGUID(); break;
86 case 3981: VorrelGUID = creature->GetGUID(); break;
87 }
88 }
89
90 void SetData(uint32 type, uint32 data) OVERRIDE
91 {
92 switch (type)
93 {
95 if (data == IN_PROGRESS)
97 if (data == FAIL)
99
100 encounter[0] = data;
101 break;
104 break;
106 encounter[1] = data;
107 if (data == DONE)
108 {
109 for (std::set<uint64>::const_iterator itr = HorsemanAdds.begin(); itr != HorsemanAdds.end(); ++itr)
110 {
111 Creature* add = instance->GetCreature(*itr);
112 if (add && add->IsAlive())
113 add->Kill(add);
114 }
115 HorsemanAdds.clear();
117 }
118 break;
119 }
120 }
121
123 {
124 switch (type)
125 {
126 //case GAMEOBJECT_PUMPKIN_SHRINE: return PumpkinShrineGUID;
127 //case DATA_HORSEMAN: return HorsemanGUID;
128 //case DATA_HEAD: return HeadGUID;
129 case DATA_MOGRAINE: return MograineGUID;
130 case DATA_WHITEMANE: return WhitemaneGUID;
131 case DATA_VORREL: return VorrelGUID;
133 }
134 return 0;
135 }
136
138 {
140 return encounter[0];
141 if (type == DATA_HORSEMAN_EVENT)
142 return encounter[1];
143 return 0;
144 }
145 };
146};
147
std::uint32_t uint32
Definition Define.h:77
#define OVERRIDE
Definition Define.h:60
std::uint64_t uint64
Definition Define.h:76
@ IN_PROGRESS
@ FAIL
@ DONE
InstanceMapScript(const char *name, uint32 mapId)
InstanceScript(Map *map)
void DoUseDoorOrButton(uint64 guid, uint32 withRestoreTime=0, bool useAlternativeState=false)
void HandleGameObject(uint64 guid, bool open, GameObject *go=NULL)
Definition Map.h:238
void Kill(Unit *victim, bool durabilityLoss=true)
Definition Unit.cpp:6342
bool IsAlive() const
Definition Unit.h:2032
InstanceScript * GetInstanceScript(InstanceMap *map) const OVERRIDE
void AddSC_instance_scarlet_monastery()
#define MAX_ENCOUNTER
@ DATA_MOGRAINE
@ DATA_WHITEMANE
@ DATA_DOOR_WHITEMANE
@ DATA_HORSEMAN_EVENT
@ DATA_VORREL
@ GAMEOBJECT_PUMPKIN_SHRINE
@ TYPE_MOGRAINE_AND_WHITE_EVENT