TrinityCore
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
instance_the_black_morass::instance_the_black_morass_InstanceMapScript Struct Reference

Public Member Functions

 instance_the_black_morass_InstanceMapScript (Map *map)
 
void Clear ()
 
void InitWorldState (bool Enable=true)
 
bool IsEncounterInProgress () const override
 
void OnPlayerEnter (Player *player) override
 
void OnCreatureCreate (Creature *creature) override
 
bool CanProgressEvent ()
 
uint8 GetRiftWaveId ()
 
void SetData (uint32 type, uint32 data) override
 
uint32 GetData (uint32 type) const override
 
ObjectGuid GetGuidData (uint32 data) const override
 
CreatureSummonedPortalBoss (Creature *me)
 
void DoSpawnPortal ()
 
void Update (uint32 diff) override
 
void ScheduleEventNextPortal (uint32 nextPortalTime)
 
- Public Member Functions inherited from InstanceScript
 InstanceScript (Map *map)
 
virtual ~InstanceScript ()
 
virtual void Initialize ()
 
virtual void Load (char const *data)
 
virtual std::string GetSaveData ()
 
void SaveToDB ()
 
virtual void OnCreatureRemove (Creature *creature) override
 
virtual void OnGameObjectCreate (GameObject *go) override
 
virtual void OnGameObjectRemove (GameObject *go) override
 
ObjectGuid GetObjectGuid (uint32 type) const
 
CreatureGetCreature (uint32 type)
 
GameObjectGetGameObject (uint32 type)
 
void HandleGameObject (ObjectGuid guid, bool open, GameObject *go=nullptr)
 
void DoUseDoorOrButton (ObjectGuid guid, uint32 withRestoreTime=0, bool useAlternativeState=false)
 
void DoCloseDoorOrButton (ObjectGuid guid)
 
void DoRespawnGameObject (ObjectGuid guid, uint32 timeToDespawn=MINUTE)
 
void DoUpdateWorldState (uint32 worldstateId, uint32 worldstateValue)
 
void DoSendNotifyToInstance (char const *format,...)
 
void DoUpdateAchievementCriteria (AchievementCriteriaTypes type, uint32 miscValue1=0, uint32 miscValue2=0, Unit *unit=NULL)
 
void DoStartTimedAchievement (AchievementCriteriaTimedTypes type, uint32 entry)
 
void DoStopTimedAchievement (AchievementCriteriaTimedTypes type, uint32 entry)
 
void DoRemoveAurasDueToSpellOnPlayers (uint32 spell)
 
void DoCastSpellOnPlayers (uint32 spell)
 
bool ServerAllowsTwoSideGroups ()
 
virtual bool SetBossState (uint32 id, EncounterState state)
 
EncounterState GetBossState (uint32 id) const
 
CreatureBoundary constGetBossBoundary (uint32 id) const
 
virtual bool CheckAchievementCriteriaMeet (uint32, Player const *, Unit const *=NULL, uint32=0)
 
virtual bool CheckRequiredBosses (uint32, Player const *=nullptr) const
 
void UpdateEncounterState (EncounterCreditType type, uint32 creditEntry, Unit *source)
 
void SetCompletedEncountersMask (uint32 newMask)
 
uint32 GetCompletedEncounterMask () const
 
void SendEncounterUnit (uint32 type, Unit *unit=NULL, uint8 param1=0, uint8 param2=0)
 
virtual void FillInitialWorldStates (WorldPackets::WorldState::InitWorldStates &)
 
void UpdatePhasing ()
 
uint32 GetEncounterCount () const
 
- Public Member Functions inherited from ZoneScript
 ZoneScript ()
 
virtual ~ZoneScript ()
 
virtual uint32 GetCreatureEntry (ObjectGuid::LowType, CreatureData const *data)
 
virtual uint32 GetGameObjectEntry (ObjectGuid::LowType, uint32 entry)
 
virtual void OnUnitDeath (Unit *)
 
virtual void SetGuidData (uint32, ObjectGuid)
 
virtual uint64 GetData64 (uint32) const
 
virtual void SetData64 (uint32, uint64)
 
virtual void ProcessEvent (WorldObject *, uint32)
 

Public Attributes

uint32 m_auiEncounter [EncounterCount]
 
uint32 mRiftPortalCount
 
uint32 mShieldPercent
 
uint8 mRiftWaveCount
 
uint8 mRiftWaveId
 
ObjectGuid _medivhGUID
 
uint8 _currentRiftId
 
- Public Attributes inherited from InstanceScript
Mapinstance
 

Protected Attributes

EventMap Events
 

Additional Inherited Members

- Static Public Member Functions inherited from InstanceScript
static std::string GetBossStateName (uint8 state)
 
- Protected Member Functions inherited from InstanceScript
void SetHeaders (std::string const &dataHeaders)
 
void SetBossNumber (uint32 number)
 
void LoadBossBoundaries (BossBoundaryData const &data)
 
void LoadDoorData (DoorData const *data)
 
void LoadMinionData (MinionData const *data)
 
void LoadObjectData (ObjectData const *creatureData, ObjectData const *gameObjectData)
 
void AddObject (Creature *obj, bool add)
 
void AddObject (GameObject *obj, bool add)
 
void AddObject (WorldObject *obj, uint32 type, bool add)
 
virtual void AddDoor (GameObject *door, bool add)
 
void AddMinion (Creature *minion, bool add)
 
virtual void UpdateDoorState (GameObject *door)
 
void UpdateMinionState (Creature *minion, EncounterState state)
 
BossInfoGetBossInfo (uint32 id)
 
bool ReadSaveDataHeaders (std::istringstream &data)
 
void ReadSaveDataBossStates (std::istringstream &data)
 
virtual void ReadSaveDataMore (std::istringstream &)
 
void WriteSaveDataHeaders (std::ostringstream &data)
 
void WriteSaveDataBossStates (std::ostringstream &data)
 
virtual void WriteSaveDataMore (std::ostringstream &)
 
bool _SkipCheckRequiredBosses (Player const *player=nullptr) const
 

Constructor & Destructor Documentation

instance_the_black_morass::instance_the_black_morass_InstanceMapScript::instance_the_black_morass_InstanceMapScript ( Map map)
inline
83  : InstanceScript(map)
84  {
86  Clear();
87  }
void SetHeaders(std::string const &dataHeaders)
Definition: InstanceScript.cpp:98
#define DataHeader
Definition: baradin_hold.h:25
InstanceScript(Map *map)
Definition: InstanceScript.h:144
void Clear()
Definition: instance_the_black_morass.cpp:99

+ Here is the call graph for this function:

Member Function Documentation

bool instance_the_black_morass::instance_the_black_morass_InstanceMapScript::CanProgressEvent ( )
inline
142  {
143  if (instance->GetPlayers().isEmpty())
144  return false;
145 
146  return true;
147  }
Map * instance
Definition: InstanceScript.h:148
bool isEmpty() const
Definition: LinkedList.h:102
PlayerList const & GetPlayers() const
Definition: Map.h:433

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void instance_the_black_morass::instance_the_black_morass_InstanceMapScript::Clear ( )
inline
100  {
101  memset(&m_auiEncounter, 0, sizeof(m_auiEncounter));
102 
103  mRiftPortalCount = 0;
104  mShieldPercent = 100;
105  mRiftWaveCount = 0;
106  mRiftWaveId = 0;
107 
108  _currentRiftId = 0;
109  }
uint32 m_auiEncounter[EncounterCount]
Definition: instance_the_black_morass.cpp:89
uint8 _currentRiftId
Definition: instance_the_black_morass.cpp:97
uint8 mRiftWaveId
Definition: instance_the_black_morass.cpp:94
uint8 mRiftWaveCount
Definition: instance_the_black_morass.cpp:93
uint32 mRiftPortalCount
Definition: instance_the_black_morass.cpp:91
uint32 mShieldPercent
Definition: instance_the_black_morass.cpp:92

+ Here is the caller graph for this function:

void instance_the_black_morass::instance_the_black_morass_InstanceMapScript::DoSpawnPortal ( )
inline
283  {
284  if (Creature* medivh = instance->GetCreature(_medivhGUID))
285  {
286  uint8 tmp = urand(0, 2);
287 
288  if (tmp >= _currentRiftId)
289  ++tmp;
290 
291  TC_LOG_DEBUG("scripts", "Instance The Black Morass: Creating Time Rift at locationId %i (old locationId was %u).", tmp, _currentRiftId);
292 
293  _currentRiftId = tmp;
294 
295  Creature* temp = medivh->SummonCreature(NPC_TIME_RIFT,
296  PortalLocation[tmp][0], PortalLocation[tmp][1], PortalLocation[tmp][2], PortalLocation[tmp][3],
298  if (temp)
299  {
302 
303  if (Creature* boss = SummonedPortalBoss(temp))
304  {
305  if (boss->GetEntry() == NPC_AEONUS)
306  boss->AddThreat(medivh, 0.0f);
307  else
308  {
309  boss->AddThreat(temp, 0.0f);
310  temp->CastSpell(boss, SPELL_RIFT_CHANNEL, false);
311  }
312  }
313  }
314  }
315  }
Definition: instance_the_black_morass.cpp:36
Definition: Unit.h:674
uint8 _currentRiftId
Definition: instance_the_black_morass.cpp:97
Definition: culling_of_stratholme.h:57
#define TC_LOG_DEBUG(filterType__,...)
Definition: Log.h:198
Definition: Object.h:58
Definition: Creature.h:467
void SetFlag(uint16 index, uint32 newFlag)
Definition: Object.cpp:1199
Definition: the_black_morass.h:60
uint32 urand(uint32 min, uint32 max)
Definition: Random.cpp:45
ObjectGuid _medivhGUID
Definition: instance_the_black_morass.cpp:96
Map * instance
Definition: InstanceScript.h:148
float PortalLocation[4][4]
Definition: instance_the_black_morass.cpp:42
Creature * GetCreature(ObjectGuid const &guid)
Definition: Map.cpp:3535
Definition: UpdateFields.h:109
uint8_t uint8
Definition: Define.h:152
Creature * SummonedPortalBoss(Creature *me)
Definition: instance_the_black_morass.cpp:261
void CastSpell(SpellCastTargets const &targets, SpellInfo const *spellInfo, CustomSpellValues const *value, TriggerCastFlags triggerFlags=TRIGGERED_NONE, Item *castItem=NULL, AuraEffect const *triggeredByAura=NULL, ObjectGuid originalCaster=ObjectGuid::Empty)
Definition: Unit.cpp:869
Definition: Unit.h:698
TempSummon * SummonCreature(uint32 id, Position const &pos, TempSummonType spwtype=TEMPSUMMON_MANUAL_DESPAWN, uint32 despwtime=0, uint32 vehId=0) const
Definition: Object.cpp:2346

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

uint32 instance_the_black_morass::instance_the_black_morass_InstanceMapScript::GetData ( uint32  type) const
inlineoverridevirtual

Reimplemented from ZoneScript.

238  {
239  switch (type)
240  {
241  case TYPE_MEDIVH:
242  return m_auiEncounter[0];
243  case TYPE_RIFT:
244  return m_auiEncounter[1];
245  case DATA_PORTAL_COUNT:
246  return mRiftPortalCount;
247  case DATA_SHIELD:
248  return mShieldPercent;
249  }
250  return 0;
251  }
uint32 m_auiEncounter[EncounterCount]
Definition: instance_the_black_morass.cpp:89
Definition: the_black_morass.h:29
Definition: the_black_morass.h:35
Definition: the_black_morass.h:28
uint32 mRiftPortalCount
Definition: instance_the_black_morass.cpp:91
uint32 mShieldPercent
Definition: instance_the_black_morass.cpp:92
Definition: the_black_morass.h:34

+ Here is the caller graph for this function:

ObjectGuid instance_the_black_morass::instance_the_black_morass_InstanceMapScript::GetGuidData ( uint32  data) const
inlineoverridevirtual

Reimplemented from InstanceScript.

254  {
255  if (data == DATA_MEDIVH)
256  return _medivhGUID;
257 
258  return ObjectGuid::Empty;
259  }
static ObjectGuid const Empty
Definition: ObjectGuid.h:196
ObjectGuid _medivhGUID
Definition: instance_the_black_morass.cpp:96
Definition: the_black_morass.h:33
uint8 instance_the_black_morass::instance_the_black_morass_InstanceMapScript::GetRiftWaveId ( )
inline
150  {
151  switch (mRiftPortalCount)
152  {
153  case 6:
154  mRiftWaveId = 2;
155  return 1;
156  case 12:
157  mRiftWaveId = 4;
158  return 3;
159  case 18:
160  return 5;
161  default:
162  return mRiftWaveId;
163  }
164  }
uint8 mRiftWaveId
Definition: instance_the_black_morass.cpp:94
uint32 mRiftPortalCount
Definition: instance_the_black_morass.cpp:91

+ Here is the caller graph for this function:

void instance_the_black_morass::instance_the_black_morass_InstanceMapScript::InitWorldState ( bool  Enable = true)
inline
112  {
113  DoUpdateWorldState(WORLD_STATE_BM, Enable ? 1 : 0);
116  }
Definition: the_black_morass.h:42
Definition: the_black_morass.h:41
void DoUpdateWorldState(uint32 worldstateId, uint32 worldstateValue)
Definition: InstanceScript.cpp:473
Definition: the_black_morass.h:40

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

bool instance_the_black_morass::instance_the_black_morass_InstanceMapScript::IsEncounterInProgress ( ) const
inlineoverridevirtual

Reimplemented from InstanceScript.

119  {
121  return true;
122 
123  return false;
124  }
Definition: InstanceScript.h:59
Definition: the_black_morass.h:28
uint32 GetData(uint32 type) const override
Definition: instance_the_black_morass.cpp:237

+ Here is the call graph for this function:

void instance_the_black_morass::instance_the_black_morass_InstanceMapScript::OnCreatureCreate ( Creature creature)
inlineoverridevirtual

Reimplemented from InstanceScript.

135  {
136  if (creature->GetEntry() == NPC_MEDIVH)
137  _medivhGUID = creature->GetGUID();
138  }
Definition: the_black_morass.h:53
ObjectGuid _medivhGUID
Definition: instance_the_black_morass.cpp:96
ObjectGuid const & GetGUID() const
Definition: Object.h:105
uint32 GetEntry() const
Definition: Object.h:107

+ Here is the call graph for this function:

void instance_the_black_morass::instance_the_black_morass_InstanceMapScript::OnPlayerEnter ( Player player)
inlineoverridevirtual

Reimplemented from InstanceScript.

127  {
129  return;
130 
131  player->SendUpdateWorldState(WORLD_STATE_BM, 0);
132  }
Definition: InstanceScript.h:59
Definition: the_black_morass.h:28
Definition: the_black_morass.h:40
uint32 GetData(uint32 type) const override
Definition: instance_the_black_morass.cpp:237

+ Here is the call graph for this function:

void instance_the_black_morass::instance_the_black_morass_InstanceMapScript::ScheduleEventNextPortal ( uint32  nextPortalTime)
inline
341  {
342  if (nextPortalTime > 0)
343  Events.RescheduleEvent(EVENT_NEXT_PORTAL, nextPortalTime);
344  }
Events
Definition: alterac_valley.cpp:51
Definition: instance_the_black_morass.cpp:68

+ Here is the caller graph for this function:

void instance_the_black_morass::instance_the_black_morass_InstanceMapScript::SetData ( uint32  type,
uint32  data 
)
inlineoverridevirtual

Reimplemented from ZoneScript.

167  {
168  switch (type)
169  {
170  case TYPE_MEDIVH:
171  if (data == SPECIAL && m_auiEncounter[0] == IN_PROGRESS)
172  {
173  --mShieldPercent;
174 
176 
177  if (!mShieldPercent)
178  {
179  if (Creature* medivh = instance->GetCreature(_medivhGUID))
180  {
181  if (medivh->IsAlive())
182  {
183  medivh->DealDamage(medivh, medivh->GetHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false);
184  m_auiEncounter[0] = FAIL;
186  }
187  }
188  }
189  }
190  else
191  {
192  if (data == IN_PROGRESS)
193  {
194  TC_LOG_DEBUG("scripts", "Instance The Black Morass: Starting event.");
195  InitWorldState();
198  }
199 
200  if (data == DONE)
201  {
202  //this may be completed further out in the post-event
203  TC_LOG_DEBUG("scripts", "Instance The Black Morass: Event completed.");
204  Map::PlayerList const& players = instance->GetPlayers();
205 
206  if (!players.isEmpty())
207  {
208  for (Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr)
209  {
210  if (Player* player = itr->GetSource())
211  {
212  if (player->GetQuestStatus(QUEST_OPENING_PORTAL) == QUEST_STATUS_INCOMPLETE)
213  player->AreaExploredOrEventHappens(QUEST_OPENING_PORTAL);
214 
215  if (player->GetQuestStatus(QUEST_MASTER_TOUCH) == QUEST_STATUS_INCOMPLETE)
216  player->AreaExploredOrEventHappens(QUEST_MASTER_TOUCH);
217  }
218  }
219  }
220  }
221 
222  m_auiEncounter[0] = data;
223  }
224  break;
225  case TYPE_RIFT:
226  if (data == SPECIAL)
227  {
228  if (mRiftPortalCount < 7)
230  }
231  else
232  m_auiEncounter[1] = data;
233  break;
234  }
235  }
uint32 m_auiEncounter[EncounterCount]
Definition: instance_the_black_morass.cpp:89
Definition: the_black_morass.h:48
Definition: inflate.h:49
arena_t NULL
Definition: jemalloc_internal.h:624
#define TC_LOG_DEBUG(filterType__,...)
Definition: Log.h:198
Definition: Creature.h:467
void InitWorldState(bool Enable=true)
Definition: instance_the_black_morass.cpp:111
Definition: InstanceScript.h:60
iterator begin()
Definition: MapRefManager.h:37
Definition: the_black_morass.h:41
Definition: the_black_morass.h:29
Definition: SharedDefines.h:288
Definition: InstanceScript.h:59
Definition: InstanceScript.h:58
ObjectGuid _medivhGUID
Definition: instance_the_black_morass.cpp:96
Map * instance
Definition: InstanceScript.h:148
Definition: LinkedList.h:141
Definition: InstanceScript.h:62
bool isEmpty() const
Definition: LinkedList.h:102
Definition: the_black_morass.h:28
PlayerList const & GetPlayers() const
Definition: Map.h:433
void DoUpdateWorldState(uint32 worldstateId, uint32 worldstateValue)
Definition: InstanceScript.cpp:473
uint32 mRiftPortalCount
Definition: instance_the_black_morass.cpp:91
Definition: MapRefManager.h:26
Creature * GetCreature(ObjectGuid const &guid)
Definition: Map.cpp:3535
void ScheduleEventNextPortal(uint32 nextPortalTime)
Definition: instance_the_black_morass.cpp:340
Definition: QuestDef.h:113
uint32 mShieldPercent
Definition: instance_the_black_morass.cpp:92
Definition: Unit.h:662
Definition: the_black_morass.h:47
iterator end()
Definition: MapRefManager.h:38

+ Here is the call graph for this function:

Creature* instance_the_black_morass::instance_the_black_morass_InstanceMapScript::SummonedPortalBoss ( Creature me)
inline
262  {
264 
265  if (entry == RIFT_BOSS)
266  entry = RandRiftBoss();
267 
268  TC_LOG_DEBUG("scripts", "Instance The Black Morass: Summoning rift boss entry %u.", entry);
269 
270  Position pos = me->GetRandomNearPosition(10.0f);
271 
272  //normalize Z-level if we can, if rift is not at ground level.
274 
275  if (Creature* summon = me->SummonCreature(entry, pos, TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 600000))
276  return summon;
277 
278  TC_LOG_DEBUG("scripts", "Instance The Black Morass: What just happened there? No boss, no loot, no fun...");
279  return NULL;
280  }
Map * GetMap() const
Definition: Object.h:543
float m_positionY
Definition: Position.h:53
uint32 RandRiftBoss()
Definition: instance_the_black_morass.cpp:40
float GetHeight(float x, float y, float z, bool checkVMap=true, float maxSearchDist=DEFAULT_HEIGHT_SEARCH) const
Definition: Map.cpp:2314
arena_t NULL
Definition: jemalloc_internal.h:624
float m_positionX
Definition: Position.h:52
#define TC_LOG_DEBUG(filterType__,...)
Definition: Log.h:198
Definition: Creature.h:467
uint8 GetRiftWaveId()
Definition: instance_the_black_morass.cpp:149
T max(const T &x, const T &y)
Definition: g3dmath.h:320
float GetWaterLevel(float x, float y) const
Definition: Map.cpp:2582
Position GetRandomNearPosition(float radius)
Definition: Object.cpp:2643
uint32_t uint32
Definition: Define.h:150
static Wave RiftWaves[]
Definition: instance_the_black_morass.cpp:56
float m_positionZ
Definition: Position.h:54
Definition: instance_the_black_morass.cpp:37
Definition: Position.h:27
uint32 PortalBoss
Definition: instance_the_black_morass.cpp:52
#define MAX_HEIGHT
Definition: Map.h:247
TempSummon * SummonCreature(uint32 id, Position const &pos, TempSummonType spwtype=TEMPSUMMON_MANUAL_DESPAWN, uint32 despwtime=0, uint32 vehId=0) const
Definition: Object.cpp:2346
Definition: Object.h:54

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void instance_the_black_morass::instance_the_black_morass_InstanceMapScript::Update ( uint32  diff)
inlineoverridevirtual

Reimplemented from InstanceScript.

318  {
319  if (m_auiEncounter[1] != IN_PROGRESS)
320  return;
321 
322  //add delay timer?
323  if (!CanProgressEvent())
324  {
325  Clear();
326  return;
327  }
328 
329  Events.Update(diff);
330 
331  if (Events.ExecuteEvent() == EVENT_NEXT_PORTAL)
332  {
335  DoSpawnPortal();
337  }
338  }
uint32 m_auiEncounter[EncounterCount]
Definition: instance_the_black_morass.cpp:89
Definition: the_black_morass.h:42
uint8 GetRiftWaveId()
Definition: instance_the_black_morass.cpp:149
Events
Definition: alterac_valley.cpp:51
void DoSpawnPortal()
Definition: instance_the_black_morass.cpp:282
Definition: InstanceScript.h:59
bool CanProgressEvent()
Definition: instance_the_black_morass.cpp:141
static Wave RiftWaves[]
Definition: instance_the_black_morass.cpp:56
void DoUpdateWorldState(uint32 worldstateId, uint32 worldstateValue)
Definition: InstanceScript.cpp:473
uint32 mRiftPortalCount
Definition: instance_the_black_morass.cpp:91
Definition: instance_the_black_morass.cpp:68
void ScheduleEventNextPortal(uint32 nextPortalTime)
Definition: instance_the_black_morass.cpp:340
void Clear()
Definition: instance_the_black_morass.cpp:99

+ Here is the call graph for this function:

Member Data Documentation

uint8 instance_the_black_morass::instance_the_black_morass_InstanceMapScript::_currentRiftId
ObjectGuid instance_the_black_morass::instance_the_black_morass_InstanceMapScript::_medivhGUID
EventMap instance_the_black_morass::instance_the_black_morass_InstanceMapScript::Events
protected
uint32 instance_the_black_morass::instance_the_black_morass_InstanceMapScript::m_auiEncounter[EncounterCount]
uint32 instance_the_black_morass::instance_the_black_morass_InstanceMapScript::mRiftPortalCount
uint8 instance_the_black_morass::instance_the_black_morass_InstanceMapScript::mRiftWaveCount
uint8 instance_the_black_morass::instance_the_black_morass_InstanceMapScript::mRiftWaveId
uint32 instance_the_black_morass::instance_the_black_morass_InstanceMapScript::mShieldPercent

The documentation for this struct was generated from the following file: