Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Loading...
Searching...
No Matches
instance_the_botanica.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 "the_botanica.h"
9
11{
12 public:
13 instance_the_botanica() : InstanceMapScript("instance_the_botanica", 553) { }
14
16 {
25
27 {
28 switch (creature->GetEntry())
29 {
31 CommanderSarannisGUID = creature->GetGUID();
32 break;
34 HighBotanistFreywinnGUID = creature->GetGUID();
35 break;
37 ThorngrinTheTenderGUID = creature->GetGUID();
38 break;
39 case NPC_LAJ:
40 LajGUID = creature->GetGUID();
41 break;
43 WarpSplinterGUID = creature->GetGUID();
44 break;
45 default:
46 break;
47 }
48 }
49
51 {
52 switch (type)
53 {
60 case DATA_LAJ:
61 return LajGUID;
63 return WarpSplinterGUID;
64 default:
65 break;
66 }
67
68 return 0;
69 }
70
72 {
73 if (!InstanceScript::SetBossState(type, state))
74 return false;
75
76 switch (type)
77 {
81 case DATA_LAJ:
83 break;
84 default:
85 break;
86 }
87
88 return true;
89 }
90
91 std::string GetSaveData() OVERRIDE
92 {
94
95 std::ostringstream saveStream;
96 saveStream << "B O " << GetBossSaveData();
97
99 return saveStream.str();
100 }
101
102 void Load(char const* str) OVERRIDE
103 {
104 if (!str)
105 {
107 return;
108 }
109
111
112 char dataHead1, dataHead2;
113
114 std::istringstream loadStream(str);
115 loadStream >> dataHead1 >> dataHead2;
116
117 if (dataHead1 == 'B' && dataHead2 == 'O')
118 {
119 for (uint8 i = 0; i < EncounterCount; ++i)
120 {
121 uint32 tmpState;
122 loadStream >> tmpState;
123 if (tmpState == IN_PROGRESS || tmpState > SPECIAL)
124 tmpState = NOT_STARTED;
125
126 SetBossState(i, EncounterState(tmpState));
127 }
128 }
129 else
131
133 }
134
135 protected:
141 };
142
147};
148
std::uint8_t uint8
Definition Define.h:79
std::uint32_t uint32
Definition Define.h:77
#define OVERRIDE
Definition Define.h:60
std::uint64_t uint64
Definition Define.h:76
#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)
uint32 const EncounterCount
InstanceMapScript(const char *name, uint32 mapId)
InstanceScript(Map *map)
virtual bool SetBossState(uint32 id, EncounterState state)
std::string GetBossSaveData()
Definition Map.h:238
InstanceScript * GetInstanceScript(InstanceMap *map) const OVERRIDE
void AddSC_instance_the_botanica()
bool SetBossState(uint32 type, EncounterState state) OVERRIDE
@ NPC_WARP_SPLINTER
@ NPC_LAJ
@ NPC_COMMANDER_SARANNIS
@ NPC_HIGH_BOTANIST_FREYWINN
@ NPC_THORNGRIN_THE_TENDER
@ DATA_WARP_SPLINTER
@ DATA_COMMANDER_SARANNIS
@ DATA_LAJ
@ DATA_HIGH_BOTANIST_FREYWINN
@ DATA_THORNGRIN_THE_TENDER