Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Loading...
Searching...
No Matches
instance_mechanar.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 "InstanceScript.h"
8#include "mechanar.h"
9
17
19{
20 public:
21 instance_mechanar(): InstanceMapScript("instance_mechanar", 554) { }
22
24 {
30
31
33 {
34 switch (gameObject->GetEntry())
35 {
36 case GO_DOOR_MOARG_1:
37 case GO_DOOR_MOARG_2:
39 AddDoor(gameObject, true);
40 break;
41 default:
42 break;
43 }
44 }
45
47 {
48 switch (gameObject->GetEntry())
49 {
50 case GO_DOOR_MOARG_1:
51 case GO_DOOR_MOARG_2:
53 AddDoor(gameObject, false);
54 break;
55 default:
56 break;
57 }
58 }
59
61 {
62 if (!InstanceScript::SetBossState(type, state))
63 return false;
64
65 switch (type)
66 {
72 break;
73 default:
74 break;
75 }
76
77 return true;
78 }
79
80 std::string GetSaveData() OVERRIDE
81 {
83
84 std::ostringstream saveStream;
85 saveStream << "M C " << GetBossSaveData();
86
88 return saveStream.str();
89 }
90
91 void Load(const char* str) OVERRIDE
92 {
93 if (!str)
94 {
96 return;
97 }
98
100
101 char dataHead1, dataHead2;
102
103 std::istringstream loadStream(str);
104 loadStream >> dataHead1 >> dataHead2;
105
106 if (dataHead1 == 'M' && dataHead2 == 'C')
107 {
108 for (uint32 i = 0; i < EncounterCount; ++i)
109 {
110 uint32 tmpState;
111 loadStream >> tmpState;
112 if (tmpState == IN_PROGRESS || tmpState > SPECIAL)
113 tmpState = NOT_STARTED;
114 SetBossState(i, EncounterState(tmpState));
115 }
116 }
117 else
119
121 }
122 };
123
128};
129
131{
132 new instance_mechanar();
133}
std::uint32_t uint32
Definition Define.h:77
#define OVERRIDE
Definition Define.h:60
#define OUT_LOAD_INST_DATA_FAIL
EncounterState
@ IN_PROGRESS
@ SPECIAL
@ NOT_STARTED
#define OUT_SAVE_INST_DATA_COMPLETE
#define OUT_LOAD_INST_DATA_COMPLETE
#define OUT_SAVE_INST_DATA
#define OUT_LOAD_INST_DATA(a)
@ DOOR_TYPE_ROOM
@ DOOR_TYPE_PASSAGE
@ BOUNDARY_NONE
uint32 const EncounterCount
InstanceMapScript(const char *name, uint32 mapId)
InstanceScript(Map *map)
void SetBossNumber(uint32 number)
virtual bool SetBossState(uint32 id, EncounterState state)
std::string GetBossSaveData()
void AddDoor(GameObject *door, bool add)
void LoadDoorData(DoorData const *data)
Definition Map.h:238
InstanceScript * GetInstanceScript(InstanceMap *map) const OVERRIDE
DoorData const doorData[]
void AddSC_instance_mechanar()
static DoorData const doorData[]
@ GO_DOOR_MOARG_1
Definition mechanar.h:22
@ GO_DOOR_MOARG_2
Definition mechanar.h:23
@ GO_DOOR_NETHERMANCER
Definition mechanar.h:24
@ DATA_NETHERMANCER_SEPRETHREA
Definition mechanar.h:16
@ DATA_MECHANOLORD_CAPACITUS
Definition mechanar.h:15
@ DATA_PATHALEON_THE_CALCULATOR
Definition mechanar.h:17
@ DATA_GATEWATCHER_IRON_HAND
Definition mechanar.h:14
@ DATA_GATEWATCHER_GYROKILL
Definition mechanar.h:13
void OnGameObjectRemove(GameObject *gameObject) OVERRIDE
void OnGameObjectCreate(GameObject *gameObject) OVERRIDE
bool SetBossState(uint32 type, EncounterState state) OVERRIDE