AzerothCore 3.3.5a
OpenSource WoW Emulator
Loading...
Searching...
No Matches
instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript Struct Reference
Inheritance diagram for instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript:
InstanceScript ZoneScript

Public Member Functions

 instance_icecrown_citadel_InstanceMapScript (InstanceMap *map)
 
void FillInitialWorldStates (WorldPackets::WorldState::InitWorldStates &packet) override
 
void OnPlayerAreaUpdate (Player *player, uint32, uint32 newArea) override
 
void OnPlayerEnter (Player *player) override
 
void OnCreatureCreate (Creature *creature) override
 
void OnCreatureRemove (Creature *creature) override
 
uint32 GetCreatureEntry (ObjectGuid::LowType, CreatureData const *data) override
 
uint32 GetGameObjectEntry (ObjectGuid::LowType, uint32 entry) override
 
void OnUnitDeath (Unit *unit) override
 
void OnGameObjectCreate (GameObject *go) override
 
void OnGameObjectRemove (GameObject *go) override
 
uint32 GetData (uint32 type) const override
 
ObjectGuid GetGuidData (uint32 type) const override
 
void HandleDropAttempt (bool drop=true)
 
void RemoveBackPack ()
 
bool SetBossState (uint32 type, EncounterState state) override
 
void SpawnGunship ()
 
void HideSaurfangEventNpc (Creature *creature)
 
void RestoreSaurfangEventNpc (Creature *creature)
 
void SpawnSaurfangEventNpcs ()
 
void RestoreHiddenSaurfangEventNpcs ()
 
void DespawnSaurfangZeppelinPassenger ()
 
void SpawnSaurfangCamp (bool staged)
 
void SummonSaurfangCampTeleporters ()
 
void ActivateSaurfangCampTeleporters ()
 
void SpawnSaurfangCampWorkers ()
 
void SendSaurfangCampWorkerOut (uint8 i)
 
void SetSaurfangCampWorkerWorking (uint8 i)
 
void SpawnSaurfangCampTents ()
 
void SendSaurfangCampWorkersBack ()
 
void SummonSaurfangCampVendor (bool smith, bool walkIn)
 
void SetData (uint32 type, uint32 data) override
 
bool CheckAchievementCriteriaMeet (uint32 criteria_id, Player const *, Unit const *, uint32) override
 
bool CheckRequiredBosses (uint32 bossId, Player const *player) const override
 
bool CheckPlagueworks (uint32 bossId) const
 
bool CheckCrimsonHalls (uint32 bossId) const
 
bool CheckFrostwingHalls (uint32 bossId) const
 
bool CheckLowerSpire (uint32 bossId) const
 
void CheckLichKingAvailability ()
 
void ReadSaveDataMore (std::istringstream &data) override
 
void WriteSaveDataMore (std::ostringstream &data) override
 
void Update (uint32 diff) override
 
void ProcessEvent (WorldObject *source, uint32 eventId) override
 
void SetPositionTraps (GameObject *go)
 
- Public Member Functions inherited from InstanceScript
 InstanceScript (Map *map)
 
 ~InstanceScript () override
 
virtual void Initialize ()
 
virtual void Load (char const *data)
 
virtual void CreatureLooted (Creature *, LootType)
 
virtual std::string GetSaveData ()
 
void SaveToDB ()
 
virtual bool IsEncounterInProgress () const
 
void OnCreatureCreate (Creature *creature) override
 
void OnCreatureRemove (Creature *creature) override
 
void OnGameObjectCreate (GameObject *go) override
 
void OnGameObjectRemove (GameObject *go) override
 
ObjectGuid GetObjectGuid (uint32 type) const
 
ObjectGuid GetGuidData (uint32 type) const override
 
Creature * GetCreature (uint32 type)
 
GameObject * GetGameObject (uint32 type)
 
virtual void OnPlayerLeave (Player *)
 
virtual void OnPlayerInWaterStateUpdate (Player *, bool)
 
void HandleGameObject (ObjectGuid guid, bool open, GameObject *go=nullptr)
 Open or close a GameObject by GUID.
 
void HandleGameObject (uint32 type, bool open)
 Open or close a GameObject registered via LoadObjectData.
 
void DoUseDoorOrButton (ObjectGuid guid, uint32 withRestoreTime=0, bool useAlternativeState=false)
 
void DoRespawnGameObject (ObjectGuid guid, uint32 timeToDespawn=MINUTE)
 
void DoRespawnGameObject (uint32 type)
 
void DoRespawnCreature (ObjectGuid guid, bool force=false)
 
void DoRespawnCreature (uint32 type, bool force=false)
 
void DoUpdateWorldState (uint32 worldstateId, uint32 worldstateValue)
 
void DoSendNotifyToInstance (char const *format,...)
 
void DoUpdateAchievementCriteria (AchievementCriteriaTypes type, uint32 miscValue1=0, uint32 miscValue2=0, Unit *unit=nullptr)
 
void DoStartTimedAchievement (AchievementCriteriaTimedTypes type, uint32 entry)
 
void DoStopTimedAchievement (AchievementCriteriaTimedTypes type, uint32 entry)
 
void DoRemoveAurasDueToSpellOnPlayers (uint32 spell)
 
void DoCastSpellOnPlayers (uint32 spell)
 
void DoCastSpellOnPlayer (Player *player, uint32 spell, bool includePets, bool includeControlled)
 
bool ServerAllowsTwoSideGroups ()
 
EncounterState GetBossState (uint32 id) const
 
CreatureBoundary const * GetBossBoundary (uint32 id) const
 
BossInfo const * GetBossInfo (uint32 id) const
 
uint32 GetPersistentData (uint32 index) const
 
void StorePersistentData (uint32 index, uint32 data)
 
bool _SkipCheckRequiredBosses (Player const *player=nullptr) const
 
void SetCompletedEncountersMask (uint32 newMask, bool save)
 
uint32 GetCompletedEncounterMask () const
 
void SendEncounterUnit (uint32 type, Unit *unit=nullptr, uint8 param1=0, uint8 param2=0)
 
uint32 GetEncounterCount () const
 
void MarkAreaTriggerDone (uint32 id)
 
void ResetAreaTriggerDone (uint32 id)
 
bool IsAreaTriggerDone (uint32 id) const
 
virtual void DoAction (int32)
 
void DoForAllMinions (uint32 id, std::function< void(Creature *)> exec)
 
void StoreGameObjectState (ObjectGuid::LowType spawnId, uint8 state)
 
uint8 GetStoredGameObjectState (ObjectGuid::LowType spawnId) const
 
void LoadInstanceSavedGameobjectStateData ()
 
bool IsBossDone (uint32 bossId) const
 
bool AllBossesDone () const
 
bool AllBossesDone (std::initializer_list< uint32 > bossIds) const
 
TeamId GetTeamIdInInstance () const
 
void SetTeamIdInInstance (TeamId teamId)
 
bool IsTwoFactionInstance () const
 
- Public Member Functions inherited from ZoneScript
 ZoneScript ()
 
virtual ~ZoneScript ()
 
virtual void OnCreatureEvade (Creature *)
 
virtual void SetGuidData (uint32, ObjectGuid)
 
virtual uint64 GetData64 (uint32) const
 
virtual void SetData64 (uint32, uint64)
 

Protected Attributes

bool IsBuffAvailable
 
uint32 WeeklyQuestId10
 
ObjectGuid WeeklyQuestNpcGUID [WeeklyNPCs]
 
ObjectGuid PutricideEnteranceDoorGUID
 
uint32 PutricideEventProgress
 
ObjectGuid GasReleaseValveGUID
 
ObjectGuid OozeReleaseValveGUID
 
bool LichKingHeroicAvailable
 
uint32 LichKingRandomWhisperTimer
 
uint32 DarkwhisperElevatorTimer
 
ObjectGuid ScourgeTransporterFirstGUID
 
EventMap Events
 
ObjectGuid LadyDeathwhisperGUID
 
ObjectGuid LadyDeathwisperElevatorGUID
 
ObjectGuid GunshipGUID
 
ObjectGuid EnemyGunshipGUID
 
ObjectGuid GunshipArmoryGUID
 
ObjectGuid DeathbringerSaurfangGUID
 
ObjectGuid DeathbringerSaurfangDoorGUID
 
ObjectGuid DeathbringerSaurfangEventGUID
 
ObjectGuid DeathbringersCacheGUID
 
ObjectGuid SaurfangTeleportGUID
 
GuidList SaurfangCampGUIDs
 
GuidList SaurfangEventGuardGUIDs
 
std::array< ObjectGuid, 2 > SaurfangCampTeleporterGUIDs
 
std::array< ObjectGuid, 2 > SaurfangCampWorkerGUIDs
 
ObjectGuid SaurfangZeppelinGUID
 
ObjectGuid SaurfangZeppelinPassengerGUID
 
bool _saurfangCampSpawned
 
bool _saurfangOutroRunning
 
bool _saurfangZeppelinDocked
 
bool _saurfangZeppelinLeaving
 
ObjectGuid PlagueSigilGUID
 
ObjectGuid BloodwingSigilGUID
 
ObjectGuid FrostwingSigilGUID
 
ObjectGuid PutricidePipeGUIDs [2]
 
ObjectGuid PutricideGateGUIDs [2]
 
ObjectGuid PutricideCollisionGUID
 
ObjectGuid FestergutGUID
 
ObjectGuid RotfaceGUID
 
ObjectGuid ProfessorPutricideGUID
 
ObjectGuid PutricideTableGUID
 
ObjectGuid BloodCouncilGUIDs [3]
 
ObjectGuid BloodCouncilControllerGUID
 
ObjectGuid BloodQueenLanaThelGUID
 
ObjectGuid CrokScourgebaneGUID
 
ObjectGuid CrokCaptainGUIDs [4]
 
ObjectGuid SisterSvalnaGUID
 
ObjectGuid ValithriaDreamwalkerGUID
 
ObjectGuid ValithriaLichKingGUID
 
ObjectGuid ValithriaTriggerGUID
 
ObjectGuid PutricadeTrapGUID
 
ObjectGuid SindragosaGauntletGUID
 
ObjectGuid SindragosaGUID
 
ObjectGuid SpinestalkerGUID
 
ObjectGuid RimefangGUID
 
ObjectGuid TheLichKingTeleportGUID
 
ObjectGuid TheLichKingGUID
 
ObjectGuid TheLichKingLhGUID
 
ObjectGuid HighlordTirionFordringGUID
 
ObjectGuid TerenasMenethilGUID
 
ObjectGuid ArthasPlatformGUID
 
ObjectGuid ArthasPrecipiceGUID
 
ObjectGuid FrozenThroneEdgeGUID
 
ObjectGuid FrozenThroneWindGUID
 
ObjectGuid FrozenThroneWarningGUID
 
ObjectGuid FrozenBolvarGUID
 
ObjectGuid PillarsChainedGUID
 
ObjectGuid PillarsUnchainedGUID
 
uint32 ColdflameJetsState
 
std::set< ObjectGuid::LowType > FrostwyrmGUIDs
 
std::set< ObjectGuid::LowType > SpinestalkerTrash
 
std::set< ObjectGuid::LowType > RimefangTrash
 
uint32 BloodQuickeningState
 
uint32 HeroicAttempts
 
uint16 BloodQuickeningMinutes
 
uint32 BloodPrinceTrashCount
 
bool IsBonedEligible
 
bool IsOozeDanceEligible
 
bool IsNauseaEligible
 
bool IsOrbWhispererEligible
 
bool IsSindragosaIntroDone
 

Additional Inherited Members

- Static Public Member Functions inherited from InstanceScript
static std::string GetBossStateName (uint8 state)
 
- Public Attributes inherited from InstanceScript
Map * instance
 
TaskScheduler scheduler
 
- Protected Member Functions inherited from InstanceScript
void SetHeaders (std::string const &dataHeaders)
 
void SetBossNumber (uint32 number)
 
void SetPersistentDataCount (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 LoadSummonData (ObjectData const *data)
 
void SetSummoner (Creature *creature)
 
void AddObject (Creature *obj, bool add=true)
 
void RemoveObject (Creature *obj)
 
void AddObject (GameObject *obj, bool add=true)
 
void RemoveObject (GameObject *obj)
 
void AddObject (WorldObject *obj, uint32 type, bool add=true)
 
void RemoveObject (WorldObject *obj, uint32 type)
 
void AddDoor (GameObject *door, bool add=true)
 
void RemoveDoor (GameObject *door)
 
void AddMinion (Creature *minion, bool add=true)
 
void RemoveMinion (Creature *minion)
 
void UpdateDoorState (GameObject *door)
 
void UpdateMinionState (Creature *minion, EncounterState state)
 
bool ReadSaveDataHeaders (std::istringstream &data)
 
void ReadSaveDataBossStates (std::istringstream &data)
 
void ReadSavePersistentData (std::istringstream &data)
 
void WriteSaveDataHeaders (std::ostringstream &data)
 
void WriteSaveDataBossStates (std::ostringstream &data)
 
void WritePersistentData (std::ostringstream &data)
 

Detailed Description

Constructor & Destructor Documentation

◆ instance_icecrown_citadel_InstanceMapScript()

instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::instance_icecrown_citadel_InstanceMapScript ( InstanceMap *  map)
inline
289 : InstanceScript(map)
290 {
291 // pussywizard:
292 IsBuffAvailable = true;
293 WeeklyQuestId10 = 0;
298 _saurfangCampSpawned = false;
299 _saurfangOutroRunning = false;
302
310 IsBonedEligible = true;
311 IsOozeDanceEligible = true;
312 IsNauseaEligible = true;
318 IsSindragosaIntroDone = false;
319 }
constexpr auto IN_MILLISECONDS
Definition Common.h:53
@ NOT_STARTED
Definition InstanceScript.h:58
#define DataHeader
Definition blackrock_depths.h:23
Definition InstanceScript.h:143
void SetBossNumber(uint32 number)
Definition InstanceScript.h:308
void SetPersistentDataCount(uint32 number)
Definition InstanceScript.h:309
void LoadDoorData(DoorData const *data)
Definition InstanceScript.cpp:186
void LoadBossBoundaries(BossBoundaryData const &data)
Definition InstanceScript.cpp:156
void SetHeaders(std::string const &dataHeaders)
Definition InstanceScript.cpp:163
void LoadObjectData(ObjectData const *creatureData, ObjectData const *gameObjectData)
Definition InstanceScript.cpp:198
@ MAX_ENCOUNTERS
Definition deadmines.h:30
uint32 const MaxHeroicAttempts
Definition icecrown_citadel.h:33
@ MAX_DATA_INDEXES
Definition icecrown_citadel.h:155
ObjectData const creatureData[]
Definition instance_icecrown_citadel.cpp:153
constexpr uint32 DARKWHISPER_ELEVATOR_DWELL_TIME
Definition instance_icecrown_citadel.cpp:99
DoorData const doorData[]
Definition instance_icecrown_citadel.cpp:121
BossBoundaryData const boundaries
Definition instance_icecrown_citadel.cpp:101
uint32 DarkwhisperElevatorTimer
Definition instance_icecrown_citadel.cpp:2382
uint32 PutricideEventProgress
Definition instance_icecrown_citadel.cpp:2377
bool IsBuffAvailable
Definition instance_icecrown_citadel.cpp:2373
bool IsNauseaEligible
Definition instance_icecrown_citadel.cpp:2453
bool _saurfangOutroRunning
Definition instance_icecrown_citadel.cpp:2403
bool _saurfangCampSpawned
Definition instance_icecrown_citadel.cpp:2402
uint32 BloodPrinceTrashCount
Definition instance_icecrown_citadel.cpp:2450
uint16 BloodQuickeningMinutes
Definition instance_icecrown_citadel.cpp:2449
bool LichKingHeroicAvailable
Definition instance_icecrown_citadel.cpp:2380
uint32 WeeklyQuestId10
Definition instance_icecrown_citadel.cpp:2374
bool IsOrbWhispererEligible
Definition instance_icecrown_citadel.cpp:2454
bool IsOozeDanceEligible
Definition instance_icecrown_citadel.cpp:2452
uint32 BloodQuickeningState
Definition instance_icecrown_citadel.cpp:2447
bool _saurfangZeppelinDocked
Definition instance_icecrown_citadel.cpp:2404
uint32 ColdflameJetsState
Definition instance_icecrown_citadel.cpp:2443
uint32 HeroicAttempts
Definition instance_icecrown_citadel.cpp:2448
bool IsBonedEligible
Definition instance_icecrown_citadel.cpp:2451
uint32 LichKingRandomWhisperTimer
Definition instance_icecrown_citadel.cpp:2381
bool IsSindragosaIntroDone
Definition instance_icecrown_citadel.cpp:2455
bool _saurfangZeppelinLeaving
Definition instance_icecrown_citadel.cpp:2405

References _saurfangCampSpawned, _saurfangOutroRunning, _saurfangZeppelinDocked, _saurfangZeppelinLeaving, BloodPrinceTrashCount, BloodQuickeningMinutes, BloodQuickeningState, boundaries, ColdflameJetsState, creatureData, DARKWHISPER_ELEVATOR_DWELL_TIME, DarkwhisperElevatorTimer, DataHeader, doorData, HeroicAttempts, IN_MILLISECONDS, IsBonedEligible, IsBuffAvailable, IsNauseaEligible, IsOozeDanceEligible, IsOrbWhispererEligible, IsSindragosaIntroDone, LichKingHeroicAvailable, LichKingRandomWhisperTimer, InstanceScript::LoadBossBoundaries(), InstanceScript::LoadDoorData(), InstanceScript::LoadObjectData(), MAX_DATA_INDEXES, MAX_ENCOUNTERS, MaxHeroicAttempts, NOT_STARTED, PutricideEventProgress, InstanceScript::SetBossNumber(), InstanceScript::SetHeaders(), InstanceScript::SetPersistentDataCount(), and WeeklyQuestId10.

Member Function Documentation

◆ ActivateSaurfangCampTeleporters()

void instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::ActivateSaurfangCampTeleporters ( )
inline
1438 {
1439 for (ObjectGuid const& guid : SaurfangCampTeleporterGUIDs)
1440 if (GameObject* go = instance->GetGameObject(guid))
1441 go->SetGoState(GO_STATE_ACTIVE);
1442 }
@ GO_STATE_ACTIVE
Definition GameObjectData.h:708
Definition GameObject.h:120
Map * instance
Definition InstanceScript.h:149
GameObject * GetGameObject(uint32 type)
Definition InstanceScript.cpp:125
Definition ObjectGuid.h:121
std::array< ObjectGuid, 2 > SaurfangCampTeleporterGUIDs
Definition instance_icecrown_citadel.cpp:2398

References Map::GetGameObject(), GO_STATE_ACTIVE, InstanceScript::instance, and SaurfangCampTeleporterGUIDs.

Referenced by SpawnSaurfangCamp(), and Update().

◆ CheckAchievementCriteriaMeet()

bool instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::CheckAchievementCriteriaMeet ( uint32  criteria_id,
Player const *  ,
Unit const *  ,
uint32   
)
inlineoverridevirtual

Reimplemented from InstanceScript.

1783 {
1784 switch (criteria_id)
1785 {
1786 case CRITERIA_BONED_10N:
1787 case CRITERIA_BONED_25N:
1788 case CRITERIA_BONED_10H:
1789 case CRITERIA_BONED_25H:
1790 return IsBonedEligible;
1795 return IsOozeDanceEligible;
1800 return IsNauseaEligible;
1806 // Only one criteria for both modes, need to do it like this
1808 return instance->ToInstanceMap()->GetMaxPlayers() == 10;
1810 return instance->ToInstanceMap()->GetMaxPlayers() == 25;
1811 default:
1812 break;
1813 }
1814
1815 return false;
1816 }
uint32 GetMaxPlayers() const
Definition Map.cpp:2342
InstanceMap * ToInstanceMap()
Definition Map.h:390
@ CRITERIA_BONED_25H
Definition icecrown_citadel.h:520
@ CRITERIA_BONED_10N
Definition icecrown_citadel.h:517
@ CRITERIA_NAUSEA_10H
Definition icecrown_citadel.h:531
@ CRITERIA_BONED_25N
Definition icecrown_citadel.h:518
@ CRITERIA_BONED_10H
Definition icecrown_citadel.h:519
@ CRITERIA_DANCES_WITH_OOZES_10H
Definition icecrown_citadel.h:525
@ CRITERIA_NAUSEA_10N
Definition icecrown_citadel.h:529
@ CRITERIA_NAUSEA_25N
Definition icecrown_citadel.h:530
@ CRITERIA_NAUSEA_25H
Definition icecrown_citadel.h:532
@ CRITERIA_ORB_WHISPERER_25H
Definition icecrown_citadel.h:538
@ CRITERIA_DANCES_WITH_OOZES_10N
Definition icecrown_citadel.h:523
@ CRITERIA_DANCES_WITH_OOZES_25H
Definition icecrown_citadel.h:526
@ CRITERIA_KILL_LANA_THEL_25M
Definition icecrown_citadel.h:542
@ CRITERIA_DANCES_WITH_OOZES_25N
Definition icecrown_citadel.h:524
@ CRITERIA_ORB_WHISPERER_25N
Definition icecrown_citadel.h:536
@ CRITERIA_KILL_LANA_THEL_10M
Definition icecrown_citadel.h:541
@ CRITERIA_ORB_WHISPERER_10N
Definition icecrown_citadel.h:535
@ CRITERIA_ORB_WHISPERER_10H
Definition icecrown_citadel.h:537

References CRITERIA_BONED_10H, CRITERIA_BONED_10N, CRITERIA_BONED_25H, CRITERIA_BONED_25N, CRITERIA_DANCES_WITH_OOZES_10H, CRITERIA_DANCES_WITH_OOZES_10N, CRITERIA_DANCES_WITH_OOZES_25H, CRITERIA_DANCES_WITH_OOZES_25N, CRITERIA_KILL_LANA_THEL_10M, CRITERIA_KILL_LANA_THEL_25M, CRITERIA_NAUSEA_10H, CRITERIA_NAUSEA_10N, CRITERIA_NAUSEA_25H, CRITERIA_NAUSEA_25N, CRITERIA_ORB_WHISPERER_10H, CRITERIA_ORB_WHISPERER_10N, CRITERIA_ORB_WHISPERER_25H, CRITERIA_ORB_WHISPERER_25N, InstanceMap::GetMaxPlayers(), InstanceScript::instance, IsBonedEligible, IsNauseaEligible, IsOozeDanceEligible, IsOrbWhispererEligible, and Map::ToInstanceMap().

◆ CheckCrimsonHalls()

bool instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::CheckCrimsonHalls ( uint32  bossId) const
inline
1881 {
1882 switch (bossId)
1883 {
1884 case DATA_THE_LICH_KING:
1886 {
1887 return false;
1888 }
1889 [[fallthrough]];
1892 return false;
1893 break;
1894 default:
1895 break;
1896 }
1897
1898 return true;
1899 }
@ DONE
Definition InstanceScript.h:61
EncounterState GetBossState(uint32 id) const
Definition InstanceScript.h:252
@ DATA_THE_LICH_KING
Definition icecrown_citadel.h:101
@ DATA_BLOOD_PRINCE_COUNCIL
Definition icecrown_citadel.h:96
@ DATA_BLOOD_QUEEN_LANA_THEL
Definition icecrown_citadel.h:97

References DATA_BLOOD_PRINCE_COUNCIL, DATA_BLOOD_QUEEN_LANA_THEL, DATA_THE_LICH_KING, DONE, and InstanceScript::GetBossState().

Referenced by CheckRequiredBosses().

◆ CheckFrostwingHalls()

bool instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::CheckFrostwingHalls ( uint32  bossId) const
inline
1902 {
1903 switch (bossId)
1904 {
1905 case DATA_THE_LICH_KING:
1907 {
1908 return false;
1909 }
1910 [[fallthrough]];
1911 case DATA_SINDRAGOSA:
1913 {
1914 return false;
1915 }
1917 {
1918 return false;
1919 }
1920 break;
1921 default:
1922 break;
1923 }
1924
1925 return true;
1926 }
@ DATA_SINDRAGOSA_GAUNTLET
Definition icecrown_citadel.h:102
@ DATA_VALITHRIA_DREAMWALKER
Definition icecrown_citadel.h:99
@ DATA_SINDRAGOSA
Definition icecrown_citadel.h:100

References DATA_SINDRAGOSA, DATA_SINDRAGOSA_GAUNTLET, DATA_THE_LICH_KING, DATA_VALITHRIA_DREAMWALKER, DONE, and InstanceScript::GetBossState().

Referenced by CheckRequiredBosses().

◆ CheckLichKingAvailability()

void instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::CheckLichKingAvailability ( )
inline
1972 {
1974 {
1976 {
1977 teleporter->SetGoState(GO_STATE_ACTIVE);
1978
1979 std::list<Creature*> stalkers;
1980 GetCreatureListWithEntryInGrid(stalkers, teleporter, NPC_INVISIBLE_STALKER, 100.0f);
1981 if (stalkers.empty())
1982 return;
1983
1984 stalkers.sort(Acore::ObjectDistanceOrderPred(teleporter));
1985 stalkers.front()->CastSpell((Unit*)nullptr, SPELL_ARTHAS_TELEPORTER_CEREMONY, false);
1986 stalkers.pop_front();
1987 for (std::list<Creature*>::iterator itr = stalkers.begin(); itr != stalkers.end(); ++itr)
1988 (*itr)->AI()->Reset();
1989 }
1990 }
1991 }
void GetCreatureListWithEntryInGrid(std::list< Creature * > &list, WorldObject *source, uint32 entry, float maxSearchRange)
Definition ScriptedCreature.cpp:943
Definition Object.h:860
GameObject * GetGameObject(ObjectGuid const &guid)
Definition Map.cpp:2447
Definition Unit.h:665
@ NPC_INVISIBLE_STALKER
Definition icecrown_citadel.h:389
@ SPELL_ARTHAS_TELEPORTER_CEREMONY
Definition icecrown_citadel.h:58
@ DATA_PROFESSOR_PUTRICIDE
Definition icecrown_citadel.h:95
ObjectGuid TheLichKingTeleportGUID
Definition instance_icecrown_citadel.cpp:2430

References DATA_BLOOD_QUEEN_LANA_THEL, DATA_PROFESSOR_PUTRICIDE, DATA_SINDRAGOSA, DONE, InstanceScript::GetBossState(), GetCreatureListWithEntryInGrid(), Map::GetGameObject(), GO_STATE_ACTIVE, InstanceScript::instance, NPC_INVISIBLE_STALKER, SPELL_ARTHAS_TELEPORTER_CEREMONY, and TheLichKingTeleportGUID.

Referenced by SetBossState().

◆ CheckLowerSpire()

bool instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::CheckLowerSpire ( uint32  bossId) const
inline
1929 {
1930 switch (bossId)
1931 {
1932 case DATA_THE_LICH_KING:
1933 case DATA_SINDRAGOSA:
1938 case DATA_ROTFACE:
1939 case DATA_FESTERGUT:
1941 {
1942 return false;
1943 }
1944 [[fallthrough]];
1947 {
1948 return false;
1949 }
1950 [[fallthrough]];
1953 {
1954 return false;
1955 }
1956 [[fallthrough]];
1959 {
1960 return false;
1961 }
1962 [[fallthrough]];
1964 default:
1965 break;
1966 }
1967
1968 return true;
1969 }
@ DATA_DEATHBRINGER_SAURFANG
Definition icecrown_citadel.h:92
@ DATA_ICECROWN_GUNSHIP_BATTLE
Definition icecrown_citadel.h:91
@ DATA_ROTFACE
Definition icecrown_citadel.h:94
@ DATA_LORD_MARROWGAR
Definition icecrown_citadel.h:89
@ DATA_FESTERGUT
Definition icecrown_citadel.h:93
@ DATA_LADY_DEATHWHISPER
Definition icecrown_citadel.h:90

References DATA_BLOOD_PRINCE_COUNCIL, DATA_BLOOD_QUEEN_LANA_THEL, DATA_DEATHBRINGER_SAURFANG, DATA_FESTERGUT, DATA_ICECROWN_GUNSHIP_BATTLE, DATA_LADY_DEATHWHISPER, DATA_LORD_MARROWGAR, DATA_PROFESSOR_PUTRICIDE, DATA_ROTFACE, DATA_SINDRAGOSA, DATA_THE_LICH_KING, DATA_VALITHRIA_DREAMWALKER, DONE, and InstanceScript::GetBossState().

Referenced by CheckRequiredBosses().

◆ CheckPlagueworks()

bool instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::CheckPlagueworks ( uint32  bossId) const
inline
1860 {
1861 switch (bossId)
1862 {
1863 case DATA_THE_LICH_KING:
1865 {
1866 return false;
1867 }
1868 [[fallthrough]];
1871 return false;
1872 break;
1873 default:
1874 break;
1875 }
1876
1877 return true;
1878 }

References DATA_FESTERGUT, DATA_PROFESSOR_PUTRICIDE, DATA_ROTFACE, DATA_THE_LICH_KING, DONE, and InstanceScript::GetBossState().

Referenced by CheckRequiredBosses().

◆ CheckRequiredBosses()

bool instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::CheckRequiredBosses ( uint32  bossId,
Player const *  player 
) const
inlineoverridevirtual

Reimplemented from InstanceScript.

1819 {
1820 if (_SkipCheckRequiredBosses(player))
1821 return true;
1822
1823 switch (bossId)
1824 {
1825 case DATA_THE_LICH_KING:
1826 if (!CheckPlagueworks(bossId))
1827 return false;
1828 if (!CheckCrimsonHalls(bossId))
1829 return false;
1830 if (!CheckFrostwingHalls(bossId))
1831 return false;
1832 break;
1833 case DATA_SINDRAGOSA:
1835 if (!CheckFrostwingHalls(bossId))
1836 return false;
1837 break;
1840 if (!CheckCrimsonHalls(bossId))
1841 return false;
1842 break;
1843 case DATA_FESTERGUT:
1844 case DATA_ROTFACE:
1846 if (!CheckPlagueworks(bossId))
1847 return false;
1848 break;
1849 default:
1850 break;
1851 }
1852
1853 if (!CheckLowerSpire(bossId))
1854 return false;
1855
1856 return true;
1857 }
bool _SkipCheckRequiredBosses(Player const *player=nullptr) const
Definition InstanceScript.cpp:395
bool CheckFrostwingHalls(uint32 bossId) const
Definition instance_icecrown_citadel.cpp:1901
bool CheckLowerSpire(uint32 bossId) const
Definition instance_icecrown_citadel.cpp:1928
bool CheckCrimsonHalls(uint32 bossId) const
Definition instance_icecrown_citadel.cpp:1880
bool CheckPlagueworks(uint32 bossId) const
Definition instance_icecrown_citadel.cpp:1859

References InstanceScript::_SkipCheckRequiredBosses(), CheckCrimsonHalls(), CheckFrostwingHalls(), CheckLowerSpire(), CheckPlagueworks(), DATA_BLOOD_PRINCE_COUNCIL, DATA_BLOOD_QUEEN_LANA_THEL, DATA_FESTERGUT, DATA_PROFESSOR_PUTRICIDE, DATA_ROTFACE, DATA_SINDRAGOSA, DATA_THE_LICH_KING, and DATA_VALITHRIA_DREAMWALKER.

◆ DespawnSaurfangZeppelinPassenger()

void instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::DespawnSaurfangZeppelinPassenger ( )
inline
1393 {
1395 passenger->DespawnOrUnsummon();
1397 }
Definition Creature.h:47
Creature * GetCreature(ObjectGuid const &guid)
Definition Map.cpp:2442
void Clear()
Definition ObjectGuid.h:141
ObjectGuid SaurfangZeppelinPassengerGUID
Definition instance_icecrown_citadel.cpp:2401

References ObjectGuid::Clear(), Map::GetCreature(), InstanceScript::instance, and SaurfangZeppelinPassengerGUID.

Referenced by SetData(), and Update().

◆ FillInitialWorldStates()

void instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::FillInitialWorldStates ( WorldPackets::WorldState::InitWorldStates &  packet)
inlineoverridevirtual

Reimplemented from InstanceScript.

322 {
323 packet.Worldstates.reserve(5);
326 packet.Worldstates.emplace_back(WORLD_STATE_ICECROWN_CITADEL_SHOW_ATTEMPTS, 1); // instance->IsHeroic() ? 1 : 0
329 }
@ IN_PROGRESS
Definition InstanceScript.h:59
@ WORLD_STATE_ICECROWN_CITADEL_ATTEMPTS_REMAINING
Definition WorldStateDefines.h:551
@ WORLD_STATE_ICECROWN_CITADEL_ATTEMPTS_MAX
Definition WorldStateDefines.h:552
@ WORLD_STATE_ICECROWN_CITADEL_EXECUTION_TIME
Definition WorldStateDefines.h:549
@ WORLD_STATE_ICECROWN_CITADEL_SHOW_ATTEMPTS
Definition WorldStateDefines.h:550
@ WORLD_STATE_ICECROWN_CITADEL_SHOW_TIMER
Definition WorldStateDefines.h:548
std::vector< WorldStateInfo > Worldstates
Definition WorldStatePackets.h:46

References BloodQuickeningMinutes, BloodQuickeningState, HeroicAttempts, IN_PROGRESS, MaxHeroicAttempts, WORLD_STATE_ICECROWN_CITADEL_ATTEMPTS_MAX, WORLD_STATE_ICECROWN_CITADEL_ATTEMPTS_REMAINING, WORLD_STATE_ICECROWN_CITADEL_EXECUTION_TIME, WORLD_STATE_ICECROWN_CITADEL_SHOW_ATTEMPTS, WORLD_STATE_ICECROWN_CITADEL_SHOW_TIMER, and WorldPackets::WorldState::InitWorldStates::Worldstates.

◆ GetCreatureEntry()

uint32 instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::GetCreatureEntry ( ObjectGuid::LowType  ,
CreatureData const *  data 
)
inlineoverridevirtual

Reimplemented from ZoneScript.

650 {
651 uint32 entry = data->id;
652 switch (entry)
653 {
658 return 0;
659 break;
664 return 0;
665 break;
667 if (GameObjectTemplate const* go = sObjectMgr->GetGameObjectTemplate(GO_THE_SKYBREAKER_A))
668 if ((GetTeamIdInInstance() == TEAM_ALLIANCE && data->mapid == go->moTransport.mapID) ||
669 (GetTeamIdInInstance() == TEAM_HORDE && data->mapid != go->moTransport.mapID))
670 return entry;
671 return 0;
673 if ((GetTeamIdInInstance() == TEAM_ALLIANCE && data->posX > 10.0f) ||
674 (GetTeamIdInInstance() == TEAM_HORDE && data->posX < 10.0f))
675 return entry;
676 return 0;
678 if ((GetTeamIdInInstance() == TEAM_ALLIANCE && data->posY < 2200.0f) || (GetTeamIdInInstance() == TEAM_HORDE && data->posY > 2200.0f))
679 return 0;
680 break;
681 }
682
683 return entry;
684 }
@ NPC_ALLIANCE_GUNSHIP_CANNON
Definition BattlegroundIC.h:47
@ NPC_HORDE_GUNSHIP_CANNON
Definition BattlegroundIC.h:46
std::uint32_t uint32
Definition Define.h:107
#define sObjectMgr
Definition ObjectMgr.h:1731
@ TEAM_ALLIANCE
Definition SharedDefines.h:748
@ TEAM_HORDE
Definition SharedDefines.h:749
TeamId GetTeamIdInInstance() const
Definition InstanceScript.h:301
@ NPC_HIGH_CAPTAIN_JUSTIN_BARTLETT
Definition icecrown_citadel.h:243
@ NPC_SKY_REAVER_KORM_BLACKSCAR
Definition icecrown_citadel.h:244
@ NPC_IGB_MURADIN_BRONZEBEARD
Definition icecrown_citadel.h:226
@ NPC_SPIRE_FROSTWYRM
Definition icecrown_citadel.h:390
@ NPC_ZAFOD_BOOMBOX
Definition icecrown_citadel.h:242
@ NPC_SKYBREAKER_DECKHAND
Definition icecrown_citadel.h:223
@ NPC_ORGRIMS_HAMMER_CREW
Definition icecrown_citadel.h:224
@ GO_THE_SKYBREAKER_A
Definition icecrown_citadel.h:425
Definition GameObjectData.h:32

References InstanceScript::GetTeamIdInInstance(), GO_THE_SKYBREAKER_A, CreatureData::id, SpawnData::mapid, NPC_ALLIANCE_GUNSHIP_CANNON, NPC_HIGH_CAPTAIN_JUSTIN_BARTLETT, NPC_HORDE_GUNSHIP_CANNON, NPC_IGB_MURADIN_BRONZEBEARD, NPC_ORGRIMS_HAMMER_CREW, NPC_SKY_REAVER_KORM_BLACKSCAR, NPC_SKYBREAKER_DECKHAND, NPC_SPIRE_FROSTWYRM, NPC_ZAFOD_BOOMBOX, SpawnData::posX, SpawnData::posY, sObjectMgr, TEAM_ALLIANCE, and TEAM_HORDE.

◆ GetData()

uint32 instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::GetData ( uint32  type) const
inlineoverridevirtual

Reimplemented from ZoneScript.

1022 {
1023 switch (type)
1024 {
1026 // DONE once it has come to rest, so the outro can wait for the ship instead of guessing.
1029 return (IsBuffAvailable ? 1 : 0);
1031 return WeeklyQuestId10;
1034 return TO_BE_DECIDED;
1036 return IN_PROGRESS;
1038 return DONE;
1039 return NOT_STARTED;
1041 return (instance->IsHeroic() ? 1 : 0);
1043 return (LichKingHeroicAvailable ? 1 : 0);
1045 return FrostwyrmGUIDs.size();
1046 case DATA_SPINESTALKER:
1047 return SpinestalkerTrash.size();
1048 case DATA_RIMEFANG:
1049 return RimefangTrash.size();
1051 return ColdflameJetsState;
1053 return GetTeamIdInInstance();
1055 return BloodQuickeningState;
1057 return HeroicAttempts;
1059 return (IsSindragosaIntroDone ? 1 : 0);
1060 default:
1061 break;
1062 }
1063
1064 return 0;
1065 }
@ TO_BE_DECIDED
Definition InstanceScript.h:63
bool IsHeroic() const
Definition Map.h:303
@ PUTRICIDE_EVENT_FLAG_FESTERGUT_VALVE
Definition icecrown_citadel.h:597
@ PUTRICIDE_EVENT_FLAG_TRAP_FINISHED
Definition icecrown_citadel.h:600
@ PUTRICIDE_EVENT_FLAG_ROTFACE_VALVE
Definition icecrown_citadel.h:598
@ PUTRICIDE_EVENT_FLAG_TRAP_INPROGRESS
Definition icecrown_citadel.h:599
@ DATA_HEROIC_ATTEMPTS
Definition icecrown_citadel.h:123
@ DATA_SINDRAGOSA_FROSTWYRMS
Definition icecrown_citadel.h:117
@ DATA_WEEKLY_QUEST_ID
Definition icecrown_citadel.h:142
@ DATA_LK_HC_AVAILABLE
Definition icecrown_citadel.h:146
@ DATA_HAS_LIMITED_ATTEMPTS
Definition icecrown_citadel.h:145
@ DATA_PUTRICIDE_TRAP_STATE
Definition icecrown_citadel.h:144
@ DATA_SAURFANG_OUTRO_ZEPPELIN
Definition icecrown_citadel.h:138
@ DATA_BUFF_AVAILABLE
Definition icecrown_citadel.h:141
@ DATA_RIMEFANG
Definition icecrown_citadel.h:119
@ DATA_BLOOD_QUICKENING_STATE
Definition icecrown_citadel.h:122
@ DATA_SINDRAGOSA_INTRO
Definition icecrown_citadel.h:147
@ DATA_COLDFLAME_JETS
Definition icecrown_citadel.h:120
@ DATA_SPINESTALKER
Definition icecrown_citadel.h:118
std::set< ObjectGuid::LowType > SpinestalkerTrash
Definition instance_icecrown_citadel.cpp:2445
std::set< ObjectGuid::LowType > RimefangTrash
Definition instance_icecrown_citadel.cpp:2446
std::set< ObjectGuid::LowType > FrostwyrmGUIDs
Definition instance_icecrown_citadel.cpp:2444
@ DATA_TEAMID_IN_INSTANCE
Definition trial_of_the_champion.h:44

References _saurfangZeppelinDocked, BloodQuickeningState, ColdflameJetsState, DATA_BLOOD_QUICKENING_STATE, DATA_BUFF_AVAILABLE, DATA_COLDFLAME_JETS, DATA_HAS_LIMITED_ATTEMPTS, DATA_HEROIC_ATTEMPTS, DATA_LK_HC_AVAILABLE, DATA_PUTRICIDE_TRAP_STATE, DATA_RIMEFANG, DATA_SAURFANG_OUTRO_ZEPPELIN, DATA_SINDRAGOSA_FROSTWYRMS, DATA_SINDRAGOSA_INTRO, DATA_SPINESTALKER, DATA_TEAMID_IN_INSTANCE, DATA_WEEKLY_QUEST_ID, DONE, FrostwyrmGUIDs, InstanceScript::GetTeamIdInInstance(), HeroicAttempts, IN_PROGRESS, InstanceScript::instance, IsBuffAvailable, Map::IsHeroic(), IsSindragosaIntroDone, LichKingHeroicAvailable, NOT_STARTED, PUTRICIDE_EVENT_FLAG_FESTERGUT_VALVE, PUTRICIDE_EVENT_FLAG_ROTFACE_VALVE, PUTRICIDE_EVENT_FLAG_TRAP_FINISHED, PUTRICIDE_EVENT_FLAG_TRAP_INPROGRESS, PutricideEventProgress, RimefangTrash, SpinestalkerTrash, TO_BE_DECIDED, and WeeklyQuestId10.

Referenced by HandleDropAttempt(), OnCreatureCreate(), OnUnitDeath(), and SetBossState().

◆ GetGameObjectEntry()

uint32 instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::GetGameObjectEntry ( ObjectGuid::LowType  ,
uint32  entry 
)
inlineoverridevirtual

Reimplemented from ZoneScript.

687 {
688 switch (entry)
689 {
695 return 0;
696 break;
702 return 0;
703 break;
704 }
705
706 return entry;
707 }
@ GO_GUNSHIP_ARMORY_H_10N
Definition icecrown_citadel.h:418
@ GO_GUNSHIP_ARMORY_A_10H
Definition icecrown_citadel.h:428
@ GO_GUNSHIP_ARMORY_A_25N
Definition icecrown_citadel.h:427
@ GO_GUNSHIP_ARMORY_A_10N
Definition icecrown_citadel.h:426
@ GO_GUNSHIP_ARMORY_H_25H
Definition icecrown_citadel.h:421
@ GO_GUNSHIP_ARMORY_H_25N
Definition icecrown_citadel.h:419
@ GO_GUNSHIP_ARMORY_A_25H
Definition icecrown_citadel.h:429
@ GO_GUNSHIP_ARMORY_H_10H
Definition icecrown_citadel.h:420

References InstanceScript::GetTeamIdInInstance(), GO_GUNSHIP_ARMORY_A_10H, GO_GUNSHIP_ARMORY_A_10N, GO_GUNSHIP_ARMORY_A_25H, GO_GUNSHIP_ARMORY_A_25N, GO_GUNSHIP_ARMORY_H_10H, GO_GUNSHIP_ARMORY_H_10N, GO_GUNSHIP_ARMORY_H_25H, GO_GUNSHIP_ARMORY_H_25N, TEAM_ALLIANCE, and TEAM_HORDE.

◆ GetGuidData()

ObjectGuid instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::GetGuidData ( uint32  type) const
inlineoverridevirtual

Reimplemented from ZoneScript.

1068 {
1069 switch (type)
1070 {
1072 return LadyDeathwhisperGUID;
1074 return GunshipGUID;
1075 case DATA_ENEMY_GUNSHIP:
1076 return EnemyGunshipGUID;
1081 case GO_SAURFANG_S_DOOR:
1084 return SaurfangTeleportGUID;
1085 case DATA_FESTERGUT:
1086 return FestergutGUID;
1087 case DATA_ROTFACE:
1088 return RotfaceGUID;
1092 return PutricideTableGUID;
1094 return BloodCouncilGUIDs[0];
1096 return BloodCouncilGUIDs[1];
1098 return BloodCouncilGUIDs[2];
1104 return CrokScourgebaneGUID;
1110 case DATA_SISTER_SVALNA:
1111 return SisterSvalnaGUID;
1115 return ValithriaLichKingGUID;
1117 return ValithriaTriggerGUID;
1121 return PutricadeTrapGUID;
1122 case DATA_SINDRAGOSA:
1123 return SindragosaGUID;
1124 case DATA_SPINESTALKER:
1125 return SpinestalkerGUID;
1126 case DATA_RIMEFANG:
1127 return RimefangGUID;
1128 case DATA_THE_LICH_KING:
1129 return TheLichKingGUID;
1133 return ArthasPlatformGUID;
1135 return TerenasMenethilGUID;
1136 default:
1137 break;
1138 }
1139
1140 return ObjectGuid::Empty;
1141 }
static ObjectGuid const Empty
Definition ObjectGuid.h:123
@ NPC_SINDRAGOSA_GAUNTLET
Definition icecrown_citadel.h:355
@ NPC_PUTRICADES_TRAP
Definition icecrown_citadel.h:363
@ GO_SAURFANG_S_DOOR
Definition icecrown_citadel.h:432
@ GO_SCOURGE_TRANSPORTER_SAURFANG
Definition icecrown_citadel.h:437
@ DATA_VALITHRIA_LICH_KING
Definition icecrown_citadel.h:130
@ DATA_BLOOD_PRINCES_CONTROL
Definition icecrown_citadel.h:116
@ DATA_PRINCE_TALDARAM_GUID
Definition icecrown_citadel.h:114
@ DATA_PRINCE_VALANAR_GUID
Definition icecrown_citadel.h:115
@ DATA_VALITHRIA_TRIGGER
Definition icecrown_citadel.h:129
@ DATA_TERENAS_MENETHIL
Definition icecrown_citadel.h:133
@ DATA_SISTER_SVALNA
Definition icecrown_citadel.h:98
@ DATA_CROK_SCOURGEBANE
Definition icecrown_citadel.h:124
@ DATA_SAURFANG_EVENT_NPC
Definition icecrown_citadel.h:107
@ DATA_HIGHLORD_TIRION_FORDRING
Definition icecrown_citadel.h:131
@ DATA_ENEMY_GUNSHIP
Definition icecrown_citadel.h:134
@ DATA_CAPTAIN_RUPERT
Definition icecrown_citadel.h:128
@ DATA_PUTRICIDE_TABLE
Definition icecrown_citadel.h:110
@ DATA_CAPTAIN_ARNATH
Definition icecrown_citadel.h:125
@ DATA_PRINCE_KELESETH_GUID
Definition icecrown_citadel.h:113
@ DATA_CAPTAIN_GRONDEL
Definition icecrown_citadel.h:127
@ DATA_CAPTAIN_BRANDON
Definition icecrown_citadel.h:126
@ DATA_ARTHAS_PLATFORM
Definition icecrown_citadel.h:132
ObjectGuid SindragosaGauntletGUID
Definition instance_icecrown_citadel.cpp:2426
ObjectGuid RimefangGUID
Definition instance_icecrown_citadel.cpp:2429
ObjectGuid SpinestalkerGUID
Definition instance_icecrown_citadel.cpp:2428
ObjectGuid BloodCouncilGUIDs[3]
Definition instance_icecrown_citadel.cpp:2416
ObjectGuid TheLichKingGUID
Definition instance_icecrown_citadel.cpp:2431
ObjectGuid TerenasMenethilGUID
Definition instance_icecrown_citadel.cpp:2434
ObjectGuid DeathbringerSaurfangEventGUID
Definition instance_icecrown_citadel.cpp:2393
ObjectGuid ValithriaDreamwalkerGUID
Definition instance_icecrown_citadel.cpp:2422
ObjectGuid BloodCouncilControllerGUID
Definition instance_icecrown_citadel.cpp:2417
ObjectGuid FestergutGUID
Definition instance_icecrown_citadel.cpp:2412
ObjectGuid ValithriaLichKingGUID
Definition instance_icecrown_citadel.cpp:2423
ObjectGuid HighlordTirionFordringGUID
Definition instance_icecrown_citadel.cpp:2433
ObjectGuid BloodQueenLanaThelGUID
Definition instance_icecrown_citadel.cpp:2418
ObjectGuid ArthasPlatformGUID
Definition instance_icecrown_citadel.cpp:2435
ObjectGuid ProfessorPutricideGUID
Definition instance_icecrown_citadel.cpp:2414
ObjectGuid CrokCaptainGUIDs[4]
Definition instance_icecrown_citadel.cpp:2420
ObjectGuid DeathbringerSaurfangGUID
Definition instance_icecrown_citadel.cpp:2391
ObjectGuid LadyDeathwhisperGUID
Definition instance_icecrown_citadel.cpp:2386
ObjectGuid PutricadeTrapGUID
Definition instance_icecrown_citadel.cpp:2425
ObjectGuid GunshipGUID
Definition instance_icecrown_citadel.cpp:2388
ObjectGuid PutricideTableGUID
Definition instance_icecrown_citadel.cpp:2415
ObjectGuid EnemyGunshipGUID
Definition instance_icecrown_citadel.cpp:2389
ObjectGuid ValithriaTriggerGUID
Definition instance_icecrown_citadel.cpp:2424
ObjectGuid SindragosaGUID
Definition instance_icecrown_citadel.cpp:2427
ObjectGuid RotfaceGUID
Definition instance_icecrown_citadel.cpp:2413
ObjectGuid SisterSvalnaGUID
Definition instance_icecrown_citadel.cpp:2421
ObjectGuid SaurfangTeleportGUID
Definition instance_icecrown_citadel.cpp:2395
ObjectGuid DeathbringerSaurfangDoorGUID
Definition instance_icecrown_citadel.cpp:2392
ObjectGuid CrokScourgebaneGUID
Definition instance_icecrown_citadel.cpp:2419

References ArthasPlatformGUID, BloodCouncilControllerGUID, BloodCouncilGUIDs, BloodQueenLanaThelGUID, CrokCaptainGUIDs, CrokScourgebaneGUID, DATA_ARTHAS_PLATFORM, DATA_BLOOD_PRINCES_CONTROL, DATA_BLOOD_QUEEN_LANA_THEL, DATA_CAPTAIN_ARNATH, DATA_CAPTAIN_BRANDON, DATA_CAPTAIN_GRONDEL, DATA_CAPTAIN_RUPERT, DATA_CROK_SCOURGEBANE, DATA_DEATHBRINGER_SAURFANG, DATA_ENEMY_GUNSHIP, DATA_FESTERGUT, DATA_HIGHLORD_TIRION_FORDRING, DATA_ICECROWN_GUNSHIP_BATTLE, DATA_LADY_DEATHWHISPER, DATA_PRINCE_KELESETH_GUID, DATA_PRINCE_TALDARAM_GUID, DATA_PRINCE_VALANAR_GUID, DATA_PROFESSOR_PUTRICIDE, DATA_PUTRICIDE_TABLE, DATA_RIMEFANG, DATA_ROTFACE, DATA_SAURFANG_EVENT_NPC, DATA_SINDRAGOSA, DATA_SISTER_SVALNA, DATA_SPINESTALKER, DATA_TERENAS_MENETHIL, DATA_THE_LICH_KING, DATA_VALITHRIA_DREAMWALKER, DATA_VALITHRIA_LICH_KING, DATA_VALITHRIA_TRIGGER, DeathbringerSaurfangDoorGUID, DeathbringerSaurfangEventGUID, DeathbringerSaurfangGUID, ObjectGuid::Empty, EnemyGunshipGUID, FestergutGUID, GO_SAURFANG_S_DOOR, GO_SCOURGE_TRANSPORTER_SAURFANG, GunshipGUID, HighlordTirionFordringGUID, LadyDeathwhisperGUID, NPC_PUTRICADES_TRAP, NPC_SINDRAGOSA_GAUNTLET, ProfessorPutricideGUID, PutricadeTrapGUID, PutricideTableGUID, RimefangGUID, RotfaceGUID, SaurfangTeleportGUID, SindragosaGauntletGUID, SindragosaGUID, SisterSvalnaGUID, SpinestalkerGUID, TerenasMenethilGUID, TheLichKingGUID, ValithriaDreamwalkerGUID, ValithriaLichKingGUID, and ValithriaTriggerGUID.

◆ HandleDropAttempt()

void instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::HandleDropAttempt ( bool  drop = true)
inline
1144 {
1146 return;
1147 if (drop && HeroicAttempts)
1148 {
1151 SaveToDB();
1152 }
1153 if (HeroicAttempts)
1154 return;
1157 if (professor->IsAlive())
1158 professor->SetVisible(false);
1160 if (bq->IsAlive())
1161 bq->SetVisible(false);
1163 if (sindra->IsAlive())
1164 sindra->SetVisible(false);
1165 if (Creature* theLichKing = instance->GetCreature(TheLichKingGUID))
1166 if (theLichKing->IsAlive())
1167 theLichKing->SetVisible(false);
1168 }
void SaveToDB()
Definition InstanceScript.cpp:43
void DoUpdateWorldState(uint32 worldstateId, uint32 worldstateValue)
Definition InstanceScript.cpp:639
uint32 GetData(uint32 type) const override
Definition instance_icecrown_citadel.cpp:1021

References BloodQueenLanaThelGUID, DATA_FESTERGUT, DATA_HAS_LIMITED_ATTEMPTS, DATA_ROTFACE, DONE, InstanceScript::DoUpdateWorldState(), InstanceScript::GetBossState(), Map::GetCreature(), GetData(), HeroicAttempts, InstanceScript::instance, ProfessorPutricideGUID, InstanceScript::SaveToDB(), SindragosaGUID, TheLichKingGUID, and WORLD_STATE_ICECROWN_CITADEL_ATTEMPTS_REMAINING.

Referenced by SetBossState().

◆ HideSaurfangEventNpc()

void instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::HideSaurfangEventNpc ( Creature *  creature)
inline
1350 {
1352 return;
1353
1354 creature->SetVisible(false);
1355 }
void SetVisible(bool x)
Definition Unit.cpp:10854

References DATA_ICECROWN_GUNSHIP_BATTLE, DONE, InstanceScript::GetBossState(), and Unit::SetVisible().

Referenced by OnCreatureCreate().

◆ OnCreatureCreate()

void instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::OnCreatureCreate ( Creature *  creature)
inlineoverridevirtual

Reimplemented from ZoneScript.

388 {
389 // apply ICC buff to pets/summons
391 if (Unit* owner = creature->GetOwner())
392 if (Player* plr = owner->ToPlayer())
393 {
394 SpellAreaForAreaMapBounds saBounds = sSpellMgr->GetSpellAreaForAreaMapBounds(4812);
395 for (SpellAreaForAreaMap::const_iterator itr = saBounds.first; itr != saBounds.second; ++itr)
396 if ((itr->second->raceMask & plr->getRaceMask()) && !creature->HasAura(itr->second->spellId))
397 if (SpellInfo const* si = sSpellMgr->GetSpellInfo(itr->second->spellId))
399 creature->AddAura(itr->second->spellId, creature);
400 }
401
402 // fighting npcs in Rampart of Skulls
403 std::string name1("Skybreaker ");
404 std::string name2("Kor'kron ");
405 if (!creature->GetTransport() && creature->GetPositionZ() <= 205.0f && creature->GetExactDist2d(-439.0f, 2210.0f) <= 150.0f && (creature->GetEntry() == 37544 || creature->GetEntry() == 37545 || creature->GetName().compare(0, name1.length(), name1) == 0 || creature->GetName().compare(0, name2.length(), name2) == 0))
407
408 // pussywizard: check weekly here, before possible UpdateEntry
409 // allow creating all of them, because after killing Marrowgar some have to appear, so just hide them
410 switch (creature->GetEntry())
411 {
419 for (uint8 i = 0; i < WeeklyNPCs; ++i)
420 if (WeeklyQuestData[i].creatureEntry == creature->GetEntry())
421 {
422 WeeklyQuestNpcGUID[i] = creature->GetGUID();
423 if (WeeklyQuestId10 != WeeklyQuestData[i].questId[0])
424 creature->SetVisible(false);
426 creature->SetVisible(false);
427 }
428 break;
429 }
430
431 switch (creature->GetEntry())
432 {
436 break;
440 break;
441 case NPC_TORTUNOK:
444 break;
448 break;
452 break;
455 creature->UpdateEntry(NPC_YILI);
456 break;
457 case NPC_VOL_GUK:
459 creature->UpdateEntry(NPC_JEDEBIA);
460 break;
464 break;
468
469 // Xinef: summon in case of instance unload
471 {
476 }
477 break;
479 LadyDeathwhisperGUID = creature->GetGUID();
480 break;
482 DeathbringerSaurfangGUID = creature->GetGUID();
483 break;
485 // Only the static spawn is the event NPC - the Alliance outro summons another
486 // High Overlord Saurfang, which would otherwise clobber the guid.
487 if (creature->IsSummon())
488 break;
489
491 {
493 creature->LoadEquipment();
494 }
496 creature->LastUsedScriptID = creature->GetScriptId();
497 HideSaurfangEventNpc(creature);
498 break;
500 if (creature->IsSummon())
501 break;
502
504 HideSaurfangEventNpc(creature);
505 break;
508 {
510 creature->LoadEquipment();
511 }
512 break;
514 if (creature->IsSummon())
515 break;
516
519 SaurfangEventGuardGUIDs.push_back(creature->GetGUID());
520 HideSaurfangEventNpc(creature);
521 break;
522 case NPC_FESTERGUT:
523 FestergutGUID = creature->GetGUID();
524 break;
525 case NPC_ROTFACE:
526 RotfaceGUID = creature->GetGUID();
527 break;
529 ProfessorPutricideGUID = creature->GetGUID();
531 creature->SetVisible(false);
532 break;
534 BloodCouncilGUIDs[0] = creature->GetGUID();
535 break;
537 BloodCouncilGUIDs[1] = creature->GetGUID();
538 break;
540 BloodCouncilGUIDs[2] = creature->GetGUID();
541 break;
544 break;
546 BloodQueenLanaThelGUID = creature->GetGUID();
548 creature->SetVisible(false);
549 break;
551 CrokScourgebaneGUID = creature->GetGUID();
552 break;
553 // we can only do this because there are no gaps in their entries
558 CrokCaptainGUIDs[creature->GetEntry() - NPC_CAPTAIN_ARNATH] = creature->GetGUID();
559 break;
561 SisterSvalnaGUID = creature->GetGUID();
562 break;
564 ValithriaDreamwalkerGUID = creature->GetGUID();
565 break;
567 ValithriaLichKingGUID = creature->GetGUID();
568 break;
570 TheLichKingLhGUID = creature->GetGUID();
571 break;
573 ValithriaTriggerGUID = creature->GetGUID();
574 break;
576 PutricadeTrapGUID = creature->GetGUID();
577 break;
579 SindragosaGauntletGUID = creature->GetGUID();
580 break;
581 case NPC_SINDRAGOSA:
582 SindragosaGUID = creature->GetGUID();
584 creature->SetVisible(false);
585 break;
586 case NPC_SPINESTALKER:
587 SpinestalkerGUID = creature->GetGUID();
588 break;
589 case NPC_RIMEFANG:
590 RimefangGUID = creature->GetGUID();
591 break;
593 // Teleporter visual at center
595 creature->CastSpell(creature, SPELL_ARTHAS_TELEPORTER_CEREMONY, false);
596 break;
598 TheLichKingGUID = creature->GetGUID();
600 creature->SetVisible(false);
601 break;
604 break;
607 TerenasMenethilGUID = creature->GetGUID();
608 break;
611 creature->DespawnOrUnsummon(1ms);
612 break;
615 {
616 uint32 spellId = 0;
617 if (creature->GetPositionY() > 2790.0f && creature->GetPositionZ() > 420.0f)
618 spellId = BLOOD_BEAM_VISUAL_RHAND;
619 else if (creature->GetPositionY() < 2790.0f && creature->GetPositionZ() > 420.0f)
620 spellId = BLOOD_BEAM_VISUAL_LHAND;
621 else if (creature->GetPositionY() < 2790.0f && creature->GetPositionZ() < 420.0f)
622 spellId = BLOOD_BEAM_VISUAL_LLEG;
623 else
624 spellId = BLOOD_BEAM_VISUAL_RLEG;
625 creature->m_Events.AddEventAtOffset(new DelayedCastMincharEvent(creature, spellId), 1s);
626 }
627 break;
630 if (!creature->IsAlive())
631 creature->Respawn();
632 break;
633 default:
634 break;
635 }
636
638
639 }
std::uint8_t uint8
Definition Define.h:109
@ NOTIFY_AI_RELOCATION
Definition Object.h:71
@ SPELL_AURA_MOD_INCREASE_HEALTH_PERCENT
Definition SpellAuraDefines.h:196
std::pair< SpellAreaForAreaMap::const_iterator, SpellAreaForAreaMap::const_iterator > SpellAreaForAreaMapBounds
Definition SpellMgr.h:547
#define sSpellMgr
Definition SpellMgr.h:847
@ UNIT_MASK_CONTROLLABLE_GUARDIAN
Definition UnitDefines.h:167
@ UNIT_MASK_GUARDIAN
Definition UnitDefines.h:161
@ UNIT_MASK_MINION
Definition UnitDefines.h:160
@ NPC_PRINCE_TALDARAM
Definition ahnkahet.h:41
void Respawn(bool force=false)
Definition Creature.cpp:2044
bool UpdateEntry(uint32 entry, CreatureData const *data=nullptr, bool changelevel=true, bool updateAI=false)
Definition Creature.cpp:587
void LoadEquipment(int8 id=1, bool force=false)
Definition Creature.cpp:1808
uint32 GetScriptId() const
Definition Creature.cpp:3226
CreatureData const * GetCreatureData() const
Definition Creature.h:208
void DespawnOrUnsummon(Milliseconds msTimeToDespawn=0ms, Seconds forcedRespawnTimer=0s)
Definition Creature.cpp:2216
Definition instance_icecrown_citadel.cpp:266
void AddEventAtOffset(BasicEvent *event, Milliseconds offset, uint8 eventGroup=0)
Definition EventProcessor.h:108
void OnCreatureCreate(Creature *creature) override
Definition InstanceScript.cpp:75
TempSummon * SummonCreature(uint32 entry, Position const &pos, SummonPropertiesEntry const *properties=nullptr, uint32 duration=0, WorldObject *summoner=nullptr, uint32 spellId=0, uint32 vehId=0, bool visibleBySummonerOnly=false)
Definition Object.cpp:2246
bool IsPlayer() const
Definition ObjectGuid.h:172
Player * ToPlayer()
Definition Object.h:208
uint32 GetEntry() const
Definition Object.h:123
static ObjectGuid GetGUID(Object const *o)
Definition Object.h:120
Definition Player.h:1086
Definition SpellInfo.h:340
Unit * GetOwner() const
Definition Unit.cpp:7487
ObjectGuid GetOwnerGUID() const override
Definition Unit.h:714
Aura * AddAura(uint32 spellId, Unit *target)
Definition Unit.cpp:14747
bool IsAlive() const
Definition Unit.h:1796
bool HasAura(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, ObjectGuid itemCasterGUID=ObjectGuid::Empty, uint8 reqEffMask=0) const
Definition Unit.cpp:5764
bool IsSummon() const
Definition Unit.h:795
SpellCastResult CastSpell(SpellCastTargets const &targets, SpellInfo const *spellInfo, CustomSpellValues const *value, TriggerCastFlags triggerFlags=TRIGGERED_NONE, Item *castItem=nullptr, AuraEffect const *triggeredByAura=nullptr, ObjectGuid originalCaster=ObjectGuid::Empty)
Definition Unit.cpp:1372
uint32 HasUnitTypeMask(uint32 mask) const
Definition Unit.h:742
bool CanHaveThreatList(bool skipAliveCheck=false) const
Definition Unit.cpp:11179
uint32 LastUsedScriptID
Definition Object.h:698
std::string const & GetName() const
Definition Object.h:535
Transport * GetTransport() const
Definition Object.h:701
void AddToNotify(uint16 f)
Definition Object.cpp:3079
EventProcessor m_Events
Definition Object.h:749
@ NPC_THE_LICH_KING_VALITHRIA
Definition icecrown_citadel.h:338
@ NPC_UVLUS_BANEFIRE
Definition icecrown_citadel.h:170
@ NPC_MURADIN_BRONZEBEARD_DUMMY
Definition icecrown_citadel.h:182
@ NPC_GREEN_DRAGON_COMBAT_TRIGGER
Definition icecrown_citadel.h:329
@ NPC_CAPTAIN_BRANDON
Definition icecrown_citadel.h:312
@ NPC_INFILTRATOR_MINCHAR_BQ
Definition icecrown_citadel.h:196
@ NPC_TERENAS_MENETHIL_FROSTMOURNE
Definition icecrown_citadel.h:369
@ NPC_SKYBREAKER_LIEUTENANT
Definition icecrown_citadel.h:191
@ NPC_PRINCE_VALANAR
Definition icecrown_citadel.h:289
@ NPC_YILI
Definition icecrown_citadel.h:173
@ NPC_VALITHRIA_DREAMWALKER
Definition icecrown_citadel.h:328
@ NPC_ALRIN_THE_AGILE
Definition icecrown_citadel.h:195
@ NPC_ALLIANCE_COMMANDER
Definition icecrown_citadel.h:165
@ NPC_TALAN_MOONSTRIKE
Definition icecrown_citadel.h:169
@ NPC_ALANA_MOONSTRIKE
Definition icecrown_citadel.h:167
@ NPC_UTHER_THE_LIGHTBRINGER_QUEST
Definition icecrown_citadel.h:185
@ NPC_ALCHEMIST_ADRIANNA
Definition icecrown_citadel.h:194
@ NPC_IKFIRUS_THE_VILE
Definition icecrown_citadel.h:172
@ NPC_HIGH_OVERLORD_SAURFANG_DUMMY
Definition icecrown_citadel.h:181
@ NPC_DEATHBRINGER_SAURFANG
Definition icecrown_citadel.h:247
@ NPC_KING_VARIAN_WRYNN
Definition icecrown_citadel.h:179
@ NPC_KOR_KRON_GENERAL
Definition icecrown_citadel.h:164
@ NPC_BLOOD_ORB_CONTROLLER
Definition icecrown_citadel.h:290
@ NPC_LADY_JAINA_PROUDMOORE_QUEST
Definition icecrown_citadel.h:183
@ NPC_MURADIN_BRONZEBEARD_QUEST
Definition icecrown_citadel.h:184
@ NPC_KOR_KRON_LIEUTENANT
Definition icecrown_citadel.h:190
@ NPC_SE_SKYBREAKER_MARINE
Definition icecrown_citadel.h:254
@ NPC_CAPTAIN_RUPERT
Definition icecrown_citadel.h:314
@ NPC_FESTERGUT
Definition icecrown_citadel.h:266
@ NPC_HARAGG_THE_UNSEEN
Definition icecrown_citadel.h:176
@ NPC_INFILTRATOR_MINCHAR
Definition icecrown_citadel.h:189
@ NPC_BLOOD_QUEEN_LANA_THEL
Definition icecrown_citadel.h:307
@ NPC_HIGHLORD_TIRION_FORDRING_LK
Definition icecrown_citadel.h:368
@ NPC_MALFUS_GRIMFROST
Definition icecrown_citadel.h:171
@ NPC_JEDEBIA
Definition icecrown_citadel.h:175
@ NPC_ROTFACE
Definition icecrown_citadel.h:270
@ NPC_SE_HIGH_OVERLORD_SAURFANG
Definition icecrown_citadel.h:252
@ NPC_MINCHAR_BEAM_STALKER
Definition icecrown_citadel.h:198
@ NPC_LADY_SYLVANAS_WINDRUNNER_QUEST
Definition icecrown_citadel.h:186
@ NPC_PROFESSOR_PUTRICIDE
Definition icecrown_citadel.h:276
@ NPC_NIBY_THE_ALMIGHTY
Definition icecrown_citadel.h:177
@ NPC_VOL_GUK
Definition icecrown_citadel.h:174
@ NPC_CROK_SCOURGEBANE
Definition icecrown_citadel.h:310
@ NPC_SE_KOR_KRON_REAVER
Definition icecrown_citadel.h:253
@ NPC_TORTUNOK
Definition icecrown_citadel.h:166
@ NPC_LADY_DEATHWHISPER
Definition icecrown_citadel.h:207
@ NPC_GARROSH_HELLSCREAM
Definition icecrown_citadel.h:178
@ NPC_SISTER_SVALNA
Definition icecrown_citadel.h:324
@ NPC_SPINESTALKER
Definition icecrown_citadel.h:346
@ NPC_THE_LICH_KING_LH
Definition icecrown_citadel.h:162
@ NPC_GERARDO_THE_SUAVE
Definition icecrown_citadel.h:168
@ NPC_PRINCE_KELESETH
Definition icecrown_citadel.h:287
@ NPC_CAPTAIN_GRONDEL
Definition icecrown_citadel.h:313
@ NPC_SE_MURADIN_BRONZEBEARD
Definition icecrown_citadel.h:250
@ NPC_VALITHRIA_DREAMWALKER_QUEST
Definition icecrown_citadel.h:199
@ NPC_TERENAS_MENETHIL_FROSTMOURNE_H
Definition icecrown_citadel.h:371
@ NPC_CAPTAIN_ARNATH
Definition icecrown_citadel.h:311
uint32 const WeeklyNPCs
Definition icecrown_citadel.h:32
Position const UtherSpawnPos
Definition instance_icecrown_citadel.cpp:184
@ BLOOD_BEAM_VISUAL_LHAND
Definition instance_icecrown_citadel.cpp:86
@ BLOOD_BEAM_VISUAL_RHAND
Definition instance_icecrown_citadel.cpp:85
@ BLOOD_BEAM_VISUAL_LLEG
Definition instance_icecrown_citadel.cpp:87
@ BLOOD_BEAM_VISUAL_RLEG
Definition instance_icecrown_citadel.cpp:88
Position const SylvanasSpawnPos
Definition instance_icecrown_citadel.cpp:185
WeeklyQuest const WeeklyQuestData[WeeklyNPCs]
Definition instance_icecrown_citadel.cpp:169
Position const MuradinSpawnPos
Definition instance_icecrown_citadel.cpp:183
Position const JainaSpawnPos
Definition instance_icecrown_citadel.cpp:182
@ NPC_RIMEFANG
Definition pit_of_saron.h:71
@ NPC_SINDRAGOSA
Definition pit_of_saron.h:72
float GetExactDist2d(const float x, const float y) const
Definition Position.h:170
float GetPositionZ() const
Definition Position.h:123
float GetPositionY() const
Definition Position.h:122
ObjectGuid WeeklyQuestNpcGUID[WeeklyNPCs]
Definition instance_icecrown_citadel.cpp:2375
ObjectGuid TheLichKingLhGUID
Definition instance_icecrown_citadel.cpp:2432
GuidList SaurfangEventGuardGUIDs
Definition instance_icecrown_citadel.cpp:2397
void HideSaurfangEventNpc(Creature *creature)
Definition instance_icecrown_citadel.cpp:1349
@ NPC_THE_LICH_KING
Definition zone_the_scarlet_enclave.cpp:1489

References Unit::AddAura(), EventProcessor::AddEventAtOffset(), WorldObject::AddToNotify(), BLOOD_BEAM_VISUAL_LHAND, BLOOD_BEAM_VISUAL_LLEG, BLOOD_BEAM_VISUAL_RHAND, BLOOD_BEAM_VISUAL_RLEG, BloodCouncilControllerGUID, BloodCouncilGUIDs, BloodQueenLanaThelGUID, BloodQuickeningState, Unit::CanHaveThreatList(), Unit::CastSpell(), CrokCaptainGUIDs, CrokScourgebaneGUID, DATA_BLOOD_QUEEN_LANA_THEL, DATA_BUFF_AVAILABLE, DATA_FESTERGUT, DATA_HAS_LIMITED_ATTEMPTS, DATA_PROFESSOR_PUTRICIDE, DATA_ROTFACE, DATA_SINDRAGOSA, DATA_THE_LICH_KING, DATA_VALITHRIA_DREAMWALKER, DeathbringerSaurfangEventGUID, DeathbringerSaurfangGUID, Creature::DespawnOrUnsummon(), DONE, FestergutGUID, InstanceScript::GetBossState(), Creature::GetCreatureData(), GetData(), Object::GetEntry(), Position::GetExactDist2d(), Object::GetGUID(), WorldObject::GetName(), Unit::GetOwner(), Unit::GetOwnerGUID(), Position::GetPositionY(), Position::GetPositionZ(), Creature::GetScriptId(), InstanceScript::GetTeamIdInInstance(), WorldObject::GetTransport(), Unit::HasAura(), Unit::HasUnitTypeMask(), HeroicAttempts, HideSaurfangEventNpc(), HighlordTirionFordringGUID, InstanceScript::instance, Unit::IsAlive(), ObjectGuid::IsPlayer(), Unit::IsSummon(), JainaSpawnPos, LadyDeathwhisperGUID, WorldObject::LastUsedScriptID, Creature::LoadEquipment(), WorldObject::m_Events, MuradinSpawnPos, NOTIFY_AI_RELOCATION, NPC_ALANA_MOONSTRIKE, NPC_ALCHEMIST_ADRIANNA, NPC_ALLIANCE_COMMANDER, NPC_ALRIN_THE_AGILE, NPC_BLOOD_ORB_CONTROLLER, NPC_BLOOD_QUEEN_LANA_THEL, NPC_CAPTAIN_ARNATH, NPC_CAPTAIN_BRANDON, NPC_CAPTAIN_GRONDEL, NPC_CAPTAIN_RUPERT, NPC_CROK_SCOURGEBANE, NPC_DEATHBRINGER_SAURFANG, NPC_FESTERGUT, NPC_GARROSH_HELLSCREAM, NPC_GERARDO_THE_SUAVE, NPC_GREEN_DRAGON_COMBAT_TRIGGER, NPC_HARAGG_THE_UNSEEN, NPC_HIGH_OVERLORD_SAURFANG_DUMMY, NPC_HIGHLORD_TIRION_FORDRING_LK, NPC_IKFIRUS_THE_VILE, NPC_INFILTRATOR_MINCHAR, NPC_INFILTRATOR_MINCHAR_BQ, NPC_INVISIBLE_STALKER, NPC_JEDEBIA, NPC_KING_VARIAN_WRYNN, NPC_KOR_KRON_GENERAL, NPC_KOR_KRON_LIEUTENANT, NPC_LADY_DEATHWHISPER, NPC_LADY_JAINA_PROUDMOORE_QUEST, NPC_LADY_SYLVANAS_WINDRUNNER_QUEST, NPC_MALFUS_GRIMFROST, NPC_MINCHAR_BEAM_STALKER, NPC_MURADIN_BRONZEBEARD_DUMMY, NPC_MURADIN_BRONZEBEARD_QUEST, NPC_NIBY_THE_ALMIGHTY, NPC_ORGRIMS_HAMMER_CREW, NPC_PRINCE_KELESETH, NPC_PRINCE_TALDARAM, NPC_PRINCE_VALANAR, NPC_PROFESSOR_PUTRICIDE, NPC_PUTRICADES_TRAP, NPC_RIMEFANG, NPC_ROTFACE, NPC_SE_HIGH_OVERLORD_SAURFANG, NPC_SE_KOR_KRON_REAVER, NPC_SE_MURADIN_BRONZEBEARD, NPC_SE_SKYBREAKER_MARINE, NPC_SINDRAGOSA, NPC_SINDRAGOSA_GAUNTLET, NPC_SISTER_SVALNA, NPC_SKYBREAKER_DECKHAND, NPC_SKYBREAKER_LIEUTENANT, NPC_SPINESTALKER, NPC_TALAN_MOONSTRIKE, NPC_TERENAS_MENETHIL_FROSTMOURNE, NPC_TERENAS_MENETHIL_FROSTMOURNE_H, NPC_THE_LICH_KING, NPC_THE_LICH_KING_LH, NPC_THE_LICH_KING_VALITHRIA, NPC_TORTUNOK, NPC_UTHER_THE_LIGHTBRINGER_QUEST, NPC_UVLUS_BANEFIRE, NPC_VALITHRIA_DREAMWALKER, NPC_VALITHRIA_DREAMWALKER_QUEST, NPC_VOL_GUK, NPC_YILI, InstanceScript::OnCreatureCreate(), ProfessorPutricideGUID, PutricadeTrapGUID, Creature::Respawn(), RimefangGUID, RotfaceGUID, SaurfangEventGuardGUIDs, Unit::SetVisible(), SindragosaGauntletGUID, SindragosaGUID, SisterSvalnaGUID, SPELL_ARTHAS_TELEPORTER_CEREMONY, SPELL_AURA_MOD_INCREASE_HEALTH_PERCENT, SpinestalkerGUID, sSpellMgr, Map::SummonCreature(), SylvanasSpawnPos, TEAM_ALLIANCE, TerenasMenethilGUID, TheLichKingGUID, TheLichKingLhGUID, Object::ToPlayer(), UNIT_MASK_CONTROLLABLE_GUARDIAN, UNIT_MASK_GUARDIAN, UNIT_MASK_MINION, Creature::UpdateEntry(), UtherSpawnPos, ValithriaDreamwalkerGUID, ValithriaLichKingGUID, ValithriaTriggerGUID, WeeklyNPCs, WeeklyQuestData, WeeklyQuestId10, and WeeklyQuestNpcGUID.

◆ OnCreatureRemove()

void instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::OnCreatureRemove ( Creature *  creature)
inlineoverridevirtual

Reimplemented from ZoneScript.

642 {
643 if (creature->GetEntry() == NPC_SINDRAGOSA)
645
647 }
void OnCreatureRemove(Creature *creature) override
Definition InstanceScript.cpp:84

References ObjectGuid::Clear(), Object::GetEntry(), NPC_SINDRAGOSA, InstanceScript::OnCreatureRemove(), and SindragosaGUID.

◆ OnGameObjectCreate()

void instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::OnGameObjectCreate ( GameObject *  go)
inlineoverridevirtual

Reimplemented from ZoneScript.

782 {
783 switch (go->GetEntry())
784 {
790 break;
791 case GO_GEIST_ALARM_1:
792 case GO_GEIST_ALARM_2:
793 go->SetPosition(go->GetPositionX() + urand(0, 2) * 20.0f * (go->GetEntry() == GO_GEIST_ALARM_1 ? -1.0f : 1.0f), go->GetPositionY(), go->GetPositionZ(), go->GetOrientation());
794 break;
796 case GO_ICEWALL:
812 case GO_ICE_WALL:
814 AddDoor(go);
815 break;
819 break;
820 // these 2 gates are functional only on 25man modes
823 if (instance->Is25ManRaid())
824 AddDoor(go);
825 break;
828 break;
832 break;
842 break;
845 AddDoor(go);
846 break;
852 break;
855 break;
859 // Camp props belong to the aftermath; their spawn rows are unconditional, hence the despawn.
860 SaurfangCampGUIDs.push_back(go->GetGUID());
862 go->DespawnOrUnsummon(0ms, Seconds(WEEK));
863 // The despawn is persisted, so an instance restarted after the outro comes back
864 // with them hidden. Horde only - the Alliance camp summons its own props.
865 else if (GetTeamIdInInstance() == TEAM_HORDE)
866 go->Respawn();
867 break;
868 case GO_PLAGUE_SIGIL:
869 PlagueSigilGUID = go->GetGUID();
872 break;
877 break;
882 break;
886 break;
888 PutricideGateGUIDs[0] = go->GetGUID();
891 else
893 break;
895 PutricideGateGUIDs[1] = go->GetGUID();
898 else
900 break;
902 PutricidePipeGUIDs[0] = go->GetGUID();
905 break;
907 PutricidePipeGUIDs[1] = go->GetGUID();
910 break;
915 break;
920 break;
921 case GO_DRINK_ME:
923 break;
929 go->SetLootRecipient(valithria);
931 break;
936 break;
938 // this enables movement at The Frozen Throne, when printed this value is 0.000000f
939 // however, when represented as integer client will accept only this value
942 break;
946 break;
949 break;
952 break;
955 break;
959 go->SetRespawnTime(7 * DAY);
960 break;
964 go->SetRespawnTime(7 * DAY);
965 break;
969 go->SetRespawnTime(7 * DAY);
970 break;
972 AddDoor(go);
976 break;
977 default:
978 break;
979 }
980 }
constexpr auto DAY
Definition Common.h:49
constexpr auto WEEK
Definition Common.h:50
std::chrono::seconds Seconds
Seconds shorthand typedef.
Definition Duration.h:30
@ GO_STATE_ACTIVE_ALTERNATIVE
Definition GameObjectData.h:710
uint32 urand(uint32 min, uint32 max)
Definition Random.cpp:44
@ GO_FLAG_INTERACT_COND
Definition SharedDefines.h:1609
@ GO_FLAG_NODESPAWN
Definition SharedDefines.h:1612
@ GO_FLAG_NOT_SELECTABLE
Definition SharedDefines.h:1611
@ GO_FLAG_LOCKED
Definition SharedDefines.h:1608
@ GAMEOBJECT_PARENTROTATION
Definition UpdateFields.h:400
void SetGoState(GOState state)
Definition GameObject.cpp:2519
void SetGameObjectFlag(GameObjectFlags flags)
Definition GameObject.h:219
void SetRespawnTime(int32 respawn)
Definition GameObject.cpp:1288
void SetLootRecipient(Creature *creature)
Definition GameObject.cpp:2688
void Respawn()
Definition GameObject.cpp:1303
void RemoveGameObjectFlag(GameObjectFlags flags)
Definition GameObject.h:220
void SetPosition(float x, float y, float z, float o)
Definition GameObject.cpp:2904
void DespawnOrUnsummon(Milliseconds delay=0ms, Seconds forcedRespawnTime=0s)
Definition GameObject.cpp:928
void HandleGameObject(ObjectGuid guid, bool open, GameObject *go=nullptr)
Open or close a GameObject by GUID.
Definition InstanceScript.cpp:130
void AddDoor(GameObject *door, bool add=true)
Definition InstanceScript.cpp:341
bool Is25ManRaid() const
Definition Map.h:304
void SetUInt32Value(uint16 index, uint32 value)
Definition Object.cpp:648
@ GO_ICE_WALL
Definition halls_of_reflection.h:99
@ GO_SAURFANG_CAMP_BONFIRE
Definition icecrown_citadel.h:441
@ GO_SINDRAGOSA_SHORTCUT_ENTRANCE_DOOR
Definition icecrown_citadel.h:492
@ GO_SCIENTIST_AIRLOCK_DOOR_GREEN
Definition icecrown_citadel.h:458
@ GO_SCOURGE_TRANSPORTER_LK
Definition icecrown_citadel.h:499
@ GO_THE_SKYBREAKER_H
Definition icecrown_citadel.h:417
@ GO_GREEN_PLAGUE_MONSTER_ENTRANCE
Definition icecrown_citadel.h:455
@ GO_SCIENTIST_AIRLOCK_DOOR_COLLISION
Definition icecrown_citadel.h:456
@ GO_SAURFANG_CAMP_FORGE
Definition icecrown_citadel.h:440
@ GO_ORGRIMS_HAMMER_A
Definition icecrown_citadel.h:424
@ GO_DOODAD_ICECROWN_GREENTUBES02
Definition icecrown_citadel.h:460
@ GO_DEATHBRINGER_S_CACHE_10N
Definition icecrown_citadel.h:433
@ GO_CACHE_OF_THE_DREAMWALKER_25H
Definition icecrown_citadel.h:488
@ GO_GAS_RELEASE_VALVE
Definition icecrown_citadel.h:464
@ GO_FROZEN_LAVAMAN
Definition icecrown_citadel.h:509
@ GO_BLOODWING_SIGIL
Definition icecrown_citadel.h:476
@ GO_DEATHBRINGER_S_CACHE_25N
Definition icecrown_citadel.h:434
@ GO_LADY_DEATHWHISPER_ELEVATOR
Definition icecrown_citadel.h:413
@ GO_CACHE_OF_THE_DREAMWALKER_25N
Definition icecrown_citadel.h:486
@ GO_BLOOD_ELF_COUNCIL_DOOR_RIGHT
Definition icecrown_citadel.h:470
@ GO_SINDRAGOSA_SHORTCUT_EXIT_DOOR
Definition icecrown_citadel.h:493
@ GO_DOODAD_ICECROWN_SNOWEDGEWARNING01
Definition icecrown_citadel.h:508
@ GO_DOODAD_ICECROWN_ICEWALL02
Definition icecrown_citadel.h:407
@ GO_ICEWALL
Definition icecrown_citadel.h:408
@ GO_LAVAMAN_PILLARS_UNCHAINED
Definition icecrown_citadel.h:511
@ GO_SPIRIT_ALARM_1
Definition icecrown_citadel.h:399
@ GO_ORATORY_OF_THE_DAMNED_ENTRANCE
Definition icecrown_citadel.h:412
@ GO_DOODAD_ICECROWN_ROOSTPORTCULLIS_04
Definition icecrown_citadel.h:484
@ GO_SCIENTIST_AIRLOCK_DOOR_ORANGE
Definition icecrown_citadel.h:457
@ GO_ARTHAS_PLATFORM
Definition icecrown_citadel.h:500
@ GO_GEIST_ALARM_2
Definition icecrown_citadel.h:404
@ GO_CACHE_OF_THE_DREAMWALKER_10N
Definition icecrown_citadel.h:485
@ GO_GREEN_DRAGON_BOSS_EXIT
Definition icecrown_citadel.h:480
@ GO_ORANGE_PLAGUE_MONSTER_ENTRANCE
Definition icecrown_citadel.h:454
@ GO_PLAGUE_SIGIL
Definition icecrown_citadel.h:463
@ GO_DOODAD_ICECROWN_BLOODPRINCE_DOOR_01
Definition icecrown_citadel.h:474
@ GO_DEATHBRINGER_S_CACHE_10H
Definition icecrown_citadel.h:435
@ GO_DOODAD_ICECROWN_THRONEFROSTYWIND01
Definition icecrown_citadel.h:502
@ GO_SAURFANG_CAMP_ANVIL
Definition icecrown_citadel.h:442
@ GO_DOODAD_ICECROWN_ROOSTPORTCULLIS_02
Definition icecrown_citadel.h:482
@ GO_DOODAD_ICECROWN_ROOSTPORTCULLIS_03
Definition icecrown_citadel.h:483
@ GO_SIGIL_OF_THE_FROSTWING
Definition icecrown_citadel.h:496
@ GO_OOZE_RELEASE_VALVE
Definition icecrown_citadel.h:465
@ GO_SCOURGE_TRANSPORTER_FIRST
Definition icecrown_citadel.h:396
@ GO_SPIRIT_ALARM_3
Definition icecrown_citadel.h:401
@ GO_SPIRIT_ALARM_2
Definition icecrown_citadel.h:400
@ GO_DOODAD_ICECROWN_ROOSTPORTCULLIS_01
Definition icecrown_citadel.h:481
@ GO_BLOOD_ELF_COUNCIL_DOOR
Definition icecrown_citadel.h:469
@ GO_DOODAD_ICECROWN_ORANGETUBES02
Definition icecrown_citadel.h:459
@ GO_DEATHBRINGER_S_CACHE_25H
Definition icecrown_citadel.h:436
@ GO_GEIST_ALARM_1
Definition icecrown_citadel.h:403
@ GO_DOODAD_ICECROWN_GRATE_01
Definition icecrown_citadel.h:475
@ GO_LORD_MARROWGAR_S_ENTRANCE
Definition icecrown_citadel.h:409
@ GO_SCIENTIST_ENTRANCE
Definition icecrown_citadel.h:461
@ GO_LAVAMAN_PILLARS_CHAINED
Definition icecrown_citadel.h:510
@ GO_DRINK_ME
Definition icecrown_citadel.h:462
@ GO_CRIMSON_HALL_DOOR
Definition icecrown_citadel.h:468
@ GO_DOODAD_ICECROWN_THRONEFROSTYEDGE01
Definition icecrown_citadel.h:503
@ GO_CACHE_OF_THE_DREAMWALKER_10H
Definition icecrown_citadel.h:487
@ GO_SPIRIT_ALARM_4
Definition icecrown_citadel.h:402
@ GO_GREEN_DRAGON_BOSS_ENTRANCE
Definition icecrown_citadel.h:479
@ GO_SINDRAGOSA_ENTRANCE_DOOR
Definition icecrown_citadel.h:491
@ GO_ARTHAS_PRECIPICE
Definition icecrown_citadel.h:501
float GetPositionX() const
Definition Position.h:121
ObjectGuid LadyDeathwisperElevatorGUID
Definition instance_icecrown_citadel.cpp:2387
ObjectGuid FrozenThroneWarningGUID
Definition instance_icecrown_citadel.cpp:2439
ObjectGuid ScourgeTransporterFirstGUID
Definition instance_icecrown_citadel.cpp:2383
ObjectGuid DeathbringersCacheGUID
Definition instance_icecrown_citadel.cpp:2394
ObjectGuid PutricideEnteranceDoorGUID
Definition instance_icecrown_citadel.cpp:2376
ObjectGuid FrostwingSigilGUID
Definition instance_icecrown_citadel.cpp:2408
ObjectGuid ArthasPrecipiceGUID
Definition instance_icecrown_citadel.cpp:2436
ObjectGuid PutricideCollisionGUID
Definition instance_icecrown_citadel.cpp:2411
ObjectGuid GunshipArmoryGUID
Definition instance_icecrown_citadel.cpp:2390
ObjectGuid FrozenThroneWindGUID
Definition instance_icecrown_citadel.cpp:2438
ObjectGuid OozeReleaseValveGUID
Definition instance_icecrown_citadel.cpp:2379
ObjectGuid GasReleaseValveGUID
Definition instance_icecrown_citadel.cpp:2378
ObjectGuid PutricidePipeGUIDs[2]
Definition instance_icecrown_citadel.cpp:2409
ObjectGuid FrozenThroneEdgeGUID
Definition instance_icecrown_citadel.cpp:2437
ObjectGuid PillarsChainedGUID
Definition instance_icecrown_citadel.cpp:2441
ObjectGuid FrozenBolvarGUID
Definition instance_icecrown_citadel.cpp:2440
ObjectGuid PutricideGateGUIDs[2]
Definition instance_icecrown_citadel.cpp:2410
ObjectGuid BloodwingSigilGUID
Definition instance_icecrown_citadel.cpp:2407
GuidList SaurfangCampGUIDs
Definition instance_icecrown_citadel.cpp:2396
ObjectGuid PlagueSigilGUID
Definition instance_icecrown_citadel.cpp:2406
ObjectGuid PillarsUnchainedGUID
Definition instance_icecrown_citadel.cpp:2442
void SetPositionTraps(GameObject *go)
Definition instance_icecrown_citadel.cpp:2346

References InstanceScript::AddDoor(), ArthasPlatformGUID, ArthasPrecipiceGUID, BloodwingSigilGUID, DATA_BLOOD_QUEEN_LANA_THEL, DATA_DEATHBRINGER_SAURFANG, DATA_FESTERGUT, DATA_LORD_MARROWGAR, DATA_PROFESSOR_PUTRICIDE, DATA_ROTFACE, DATA_SINDRAGOSA, DATA_THE_LICH_KING, DAY, DeathbringerSaurfangDoorGUID, DeathbringersCacheGUID, GameObject::DespawnOrUnsummon(), DONE, EnemyGunshipGUID, FrostwingSigilGUID, FrozenBolvarGUID, FrozenThroneEdgeGUID, FrozenThroneWarningGUID, FrozenThroneWindGUID, GAMEOBJECT_PARENTROTATION, GasReleaseValveGUID, InstanceScript::GetBossState(), Map::GetCreature(), Object::GetEntry(), Object::GetGUID(), Position::GetOrientation(), Position::GetPositionX(), Position::GetPositionY(), Position::GetPositionZ(), InstanceScript::GetTeamIdInInstance(), GO_ARTHAS_PLATFORM, GO_ARTHAS_PRECIPICE, GO_BLOOD_ELF_COUNCIL_DOOR, GO_BLOOD_ELF_COUNCIL_DOOR_RIGHT, GO_BLOODWING_SIGIL, GO_CACHE_OF_THE_DREAMWALKER_10H, GO_CACHE_OF_THE_DREAMWALKER_10N, GO_CACHE_OF_THE_DREAMWALKER_25H, GO_CACHE_OF_THE_DREAMWALKER_25N, GO_CRIMSON_HALL_DOOR, GO_DEATHBRINGER_S_CACHE_10H, GO_DEATHBRINGER_S_CACHE_10N, GO_DEATHBRINGER_S_CACHE_25H, GO_DEATHBRINGER_S_CACHE_25N, GO_DOODAD_ICECROWN_BLOODPRINCE_DOOR_01, GO_DOODAD_ICECROWN_GRATE_01, GO_DOODAD_ICECROWN_GREENTUBES02, GO_DOODAD_ICECROWN_ICEWALL02, GO_DOODAD_ICECROWN_ORANGETUBES02, GO_DOODAD_ICECROWN_ROOSTPORTCULLIS_01, GO_DOODAD_ICECROWN_ROOSTPORTCULLIS_02, GO_DOODAD_ICECROWN_ROOSTPORTCULLIS_03, GO_DOODAD_ICECROWN_ROOSTPORTCULLIS_04, GO_DOODAD_ICECROWN_SNOWEDGEWARNING01, GO_DOODAD_ICECROWN_THRONEFROSTYEDGE01, GO_DOODAD_ICECROWN_THRONEFROSTYWIND01, GO_DRINK_ME, GO_FLAG_INTERACT_COND, GO_FLAG_LOCKED, GO_FLAG_NODESPAWN, GO_FLAG_NOT_SELECTABLE, GO_FROZEN_LAVAMAN, GO_GAS_RELEASE_VALVE, GO_GEIST_ALARM_1, GO_GEIST_ALARM_2, GO_GREEN_DRAGON_BOSS_ENTRANCE, GO_GREEN_DRAGON_BOSS_EXIT, GO_GREEN_PLAGUE_MONSTER_ENTRANCE, GO_GUNSHIP_ARMORY_A_10H, GO_GUNSHIP_ARMORY_A_10N, GO_GUNSHIP_ARMORY_A_25H, GO_GUNSHIP_ARMORY_A_25N, GO_GUNSHIP_ARMORY_H_10H, GO_GUNSHIP_ARMORY_H_10N, GO_GUNSHIP_ARMORY_H_25H, GO_GUNSHIP_ARMORY_H_25N, GO_ICE_WALL, GO_ICEWALL, GO_LADY_DEATHWHISPER_ELEVATOR, GO_LAVAMAN_PILLARS_CHAINED, GO_LAVAMAN_PILLARS_UNCHAINED, GO_LORD_MARROWGAR_S_ENTRANCE, GO_OOZE_RELEASE_VALVE, GO_ORANGE_PLAGUE_MONSTER_ENTRANCE, GO_ORATORY_OF_THE_DAMNED_ENTRANCE, GO_ORGRIMS_HAMMER_A, GO_PLAGUE_SIGIL, GO_SAURFANG_CAMP_ANVIL, GO_SAURFANG_CAMP_BONFIRE, GO_SAURFANG_CAMP_FORGE, GO_SAURFANG_S_DOOR, GO_SCIENTIST_AIRLOCK_DOOR_COLLISION, GO_SCIENTIST_AIRLOCK_DOOR_GREEN, GO_SCIENTIST_AIRLOCK_DOOR_ORANGE, GO_SCIENTIST_ENTRANCE, GO_SCOURGE_TRANSPORTER_FIRST, GO_SCOURGE_TRANSPORTER_LK, GO_SCOURGE_TRANSPORTER_SAURFANG, GO_SIGIL_OF_THE_FROSTWING, GO_SINDRAGOSA_ENTRANCE_DOOR, GO_SINDRAGOSA_SHORTCUT_ENTRANCE_DOOR, GO_SINDRAGOSA_SHORTCUT_EXIT_DOOR, GO_SPIRIT_ALARM_1, GO_SPIRIT_ALARM_2, GO_SPIRIT_ALARM_3, GO_SPIRIT_ALARM_4, GO_STATE_ACTIVE, GO_STATE_ACTIVE_ALTERNATIVE, GO_THE_SKYBREAKER_H, GunshipArmoryGUID, InstanceScript::HandleGameObject(), InstanceScript::instance, Map::Is25ManRaid(), LadyDeathwisperElevatorGUID, OozeReleaseValveGUID, PillarsChainedGUID, PillarsUnchainedGUID, PlagueSigilGUID, PUTRICIDE_EVENT_FLAG_FESTERGUT_VALVE, PUTRICIDE_EVENT_FLAG_ROTFACE_VALVE, PUTRICIDE_EVENT_FLAG_TRAP_FINISHED, PutricideCollisionGUID, PutricideEnteranceDoorGUID, PutricideEventProgress, PutricideGateGUIDs, PutricidePipeGUIDs, PutricideTableGUID, GameObject::RemoveGameObjectFlag(), GameObject::Respawn(), SaurfangCampGUIDs, SaurfangTeleportGUID, ScourgeTransporterFirstGUID, GameObject::SetGameObjectFlag(), GameObject::SetGoState(), GameObject::SetLootRecipient(), GameObject::SetPosition(), SetPositionTraps(), GameObject::SetRespawnTime(), Object::SetUInt32Value(), TEAM_HORDE, TheLichKingTeleportGUID, urand(), ValithriaDreamwalkerGUID, and WEEK.

◆ OnGameObjectRemove()

void instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::OnGameObjectRemove ( GameObject *  go)
inlineoverridevirtual

Reimplemented from ZoneScript.

983 {
984 switch (go->GetEntry())
985 {
987 case GO_ICEWALL:
1005 //case GO_SINDRAGOSA_ENTRANCE_DOOR:
1008 case GO_ICE_WALL:
1010 RemoveDoor(go);
1011 break;
1015 break;
1016 default:
1017 break;
1018 }
1019 }
void RemoveDoor(GameObject *door)
Definition InstanceScript.cpp:363
@ GO_ORGRIMS_HAMMER_H
Definition icecrown_citadel.h:416

References ObjectGuid::Clear(), Object::GetEntry(), GO_BLOOD_ELF_COUNCIL_DOOR, GO_BLOOD_ELF_COUNCIL_DOOR_RIGHT, GO_CRIMSON_HALL_DOOR, GO_DOODAD_ICECROWN_BLOODPRINCE_DOOR_01, GO_DOODAD_ICECROWN_GRATE_01, GO_DOODAD_ICECROWN_ICEWALL02, GO_DOODAD_ICECROWN_ROOSTPORTCULLIS_01, GO_DOODAD_ICECROWN_ROOSTPORTCULLIS_02, GO_DOODAD_ICECROWN_ROOSTPORTCULLIS_03, GO_DOODAD_ICECROWN_ROOSTPORTCULLIS_04, GO_GREEN_DRAGON_BOSS_ENTRANCE, GO_GREEN_DRAGON_BOSS_EXIT, GO_GREEN_PLAGUE_MONSTER_ENTRANCE, GO_ICE_WALL, GO_ICEWALL, GO_LORD_MARROWGAR_S_ENTRANCE, GO_ORANGE_PLAGUE_MONSTER_ENTRANCE, GO_ORATORY_OF_THE_DAMNED_ENTRANCE, GO_ORGRIMS_HAMMER_H, GO_SAURFANG_S_DOOR, GO_SCIENTIST_ENTRANCE, GO_SCOURGE_TRANSPORTER_FIRST, GO_SINDRAGOSA_SHORTCUT_ENTRANCE_DOOR, GO_SINDRAGOSA_SHORTCUT_EXIT_DOOR, GO_THE_SKYBREAKER_A, GunshipGUID, and InstanceScript::RemoveDoor().

◆ OnPlayerAreaUpdate()

void instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::OnPlayerAreaUpdate ( Player *  player,
uint32  ,
uint32  newArea 
)
inlineoverridevirtual

Reimplemented from InstanceScript.

332 {
334 newArea == AREA_THE_SANCTUM_OF_BLOOD ||
335 newArea == AREA_THE_FROST_QUEENS_LAIR ||
336 newArea == AREA_THE_FROZEN_THRONE ||
337 newArea == AREA_FROSTMOURNE)
338 {
339 player->SendInitWorldStates(player->GetZoneId(), player->GetAreaId());
340 }
341 else
342 {
344 }
345 }
@ AREA_FROSTMOURNE
Definition AreaDefines.h:182
@ AREA_THE_SANCTUM_OF_BLOOD
Definition AreaDefines.h:181
@ AREA_THE_FROZEN_THRONE
Definition AreaDefines.h:178
@ AREA_PUTRICIDES_LABORATORY_OF_ALCHEMICAL_HORRORS_AND_FUN
Definition AreaDefines.h:180
@ AREA_THE_FROST_QUEENS_LAIR
Definition AreaDefines.h:179
void SendUpdateWorldState(uint32 variable, uint32 value) const
Definition PlayerUpdates.cpp:2302
void SendInitWorldStates(uint32 zoneId, uint32 areaId)
Definition Player.cpp:8418
uint32 GetAreaId() const
Definition Object.cpp:3179
uint32 GetZoneId() const
Definition Object.cpp:3171

References AREA_FROSTMOURNE, AREA_PUTRICIDES_LABORATORY_OF_ALCHEMICAL_HORRORS_AND_FUN, AREA_THE_FROST_QUEENS_LAIR, AREA_THE_FROZEN_THRONE, AREA_THE_SANCTUM_OF_BLOOD, WorldObject::GetAreaId(), WorldObject::GetZoneId(), Player::SendInitWorldStates(), Player::SendUpdateWorldState(), and WORLD_STATE_ICECROWN_CITADEL_SHOW_ATTEMPTS.

◆ OnPlayerEnter()

void instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::OnPlayerEnter ( Player *  player)
inlineoverridevirtual

Reimplemented from InstanceScript.

348 {
350 // for professor putricide hc
353
355 SpawnGunship();
356
357 // Also covers an instance whose Gunship Battle state was set directly, which would
358 // otherwise keep them hidden for good.
361
363 SpawnSaurfangCamp(false);
364
366 {
367 Events.ScheduleEvent(EVENT_RESPAWN_SINDRAGOSA, 30s);
368 }
369
370 if (IsBuffAvailable)
371 {
372 SpellAreaForAreaMapBounds saBounds = sSpellMgr->GetSpellAreaForAreaMapBounds(4812);
373 for (SpellAreaForAreaMap::const_iterator itr = saBounds.first; itr != saBounds.second; ++itr)
374 if ((itr->second->raceMask & player->getRaceMask()) && !player->HasAura(itr->second->spellId))
375 {
376 if (SpellInfo const* si = sSpellMgr->GetSpellInfo(itr->second->spellId))
377 {
379 {
380 DoCastSpellOnPlayer(player, itr->second->spellId, false, false);
381 }
382 }
383 }
384 }
385 }
Events
Definition alterac_valley.cpp:53
Creature * GetCreature(uint32 type)
Definition InstanceScript.cpp:120
void DoRemoveAurasDueToSpellOnPlayers(uint32 spell)
Definition InstanceScript.cpp:701
virtual void OnPlayerEnter(Player *)
Definition InstanceScript.cpp:63
void DoCastSpellOnPlayer(Player *player, uint32 spell, bool includePets, bool includeControlled)
Definition InstanceScript.cpp:720
uint32 getRaceMask() const
Definition Unit.h:839
@ SPELL_OOZE_VARIABLE
Definition instance_icecrown_citadel.cpp:84
@ SPELL_GAS_VARIABLE
Definition instance_icecrown_citadel.cpp:83
@ EVENT_RESPAWN_SINDRAGOSA
Definition instance_icecrown_citadel.cpp:56
void SpawnGunship()
Definition instance_icecrown_citadel.cpp:1333
void SpawnSaurfangCamp(bool staged)
Definition instance_icecrown_citadel.cpp:1402
void RestoreHiddenSaurfangEventNpcs()
Definition instance_icecrown_citadel.cpp:1380

References _saurfangOutroRunning, DATA_DEATHBRINGER_SAURFANG, DATA_ICECROWN_GUNSHIP_BATTLE, DATA_LADY_DEATHWHISPER, DATA_SINDRAGOSA, InstanceScript::DoCastSpellOnPlayer(), DONE, InstanceScript::DoRemoveAurasDueToSpellOnPlayers(), EVENT_RESPAWN_SINDRAGOSA, InstanceScript::GetBossState(), InstanceScript::GetCreature(), Unit::getRaceMask(), Unit::HasAura(), IsBuffAvailable, IsSindragosaIntroDone, InstanceScript::OnPlayerEnter(), RestoreHiddenSaurfangEventNpcs(), SpawnGunship(), SpawnSaurfangCamp(), SPELL_AURA_MOD_INCREASE_HEALTH_PERCENT, SPELL_GAS_VARIABLE, SPELL_OOZE_VARIABLE, and sSpellMgr.

◆ OnUnitDeath()

void instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::OnUnitDeath ( Unit *  unit)
inlineoverridevirtual

Reimplemented from ZoneScript.

710 {
711 Creature* creature = unit->ToCreature();
712 if (!creature)
713 return;
714
715 // fighting npcs in Rampart of Skulls
716 std::string name1("Skybreaker ");
717 std::string name2("Kor'kron ");
718 if (!creature->GetTransport() && creature->GetPositionZ() <= 205.0f && creature->GetExactDist2d(-439.0f, 2210.0f) <= 150.0f && (creature->GetEntry() == 37544 || creature->GetEntry() == 37545 || creature->GetName().compare(0, name1.length(), name1) == 0 || creature->GetName().compare(0, name2.length(), name2) == 0))
719 if (!creature->GetLootRecipient())
720 creature->m_Events.AddEventAtOffset(new RespawnEvent(*creature), 3s);
721
722 switch (creature->GetEntry())
723 {
730 crok->AI()->SetGUID(creature->GetGUID(), ACTION_VRYKUL_DEATH);
731 break;
733 if (FrostwyrmGUIDs.empty())
734 return;
735
736 if (creature->AI()->GetData(1/*DATA_FROSTWYRM_OWNER*/) == DATA_SPINESTALKER)
737 {
738 SpinestalkerTrash.erase(creature->GetSpawnId());
739 if (SpinestalkerTrash.empty())
740 if (Creature* spinestalk = instance->GetCreature(SpinestalkerGUID))
741 spinestalk->AI()->DoAction(ACTION_START_FROSTWYRM);
742 }
743 else
744 {
745 RimefangTrash.erase(creature->GetSpawnId());
746 if (RimefangTrash.empty())
747 if (Creature* spinestalk = instance->GetCreature(RimefangGUID))
748 spinestalk->AI()->DoAction(ACTION_START_FROSTWYRM);
749 }
750 break;
751 case NPC_RIMEFANG:
752 case NPC_SPINESTALKER:
753 {
755 return;
756
758 return;
759
760 FrostwyrmGUIDs.erase(creature->GetSpawnId());
761 if (FrostwyrmGUIDs.empty())
762 {
764 boss->AI()->DoAction(ACTION_START_FROSTWYRM);
765 }
766 break;
767 }
769 if (Creature* c = unit->SummonCreature(WORLD_TRIGGER, *unit, TEMPSUMMON_TIMED_DESPAWN, 10000))
770 {
771 c->CastSpell(c, VOID_ZONE_VISUAL, true);
773 unit->ToCreature()->DespawnOrUnsummon(3s);
774 }
775 break;
776 default:
777 break;
778 }
779 }
@ TEMPSUMMON_MANUAL_DESPAWN
Definition Object.h:57
@ TEMPSUMMON_TIMED_DESPAWN
Definition Object.h:52
#define WORLD_TRIGGER
Definition Unit.h:38
Player * GetLootRecipient() const
Definition Creature.cpp:1310
ObjectGuid::LowType GetSpawnId() const
Definition Creature.h:69
CreatureAI * AI() const
Definition Creature.h:144
Creature * ToCreature()
Definition Object.h:212
Definition instance_icecrown_citadel.cpp:250
virtual uint32 GetData(uint32) const
Definition UnitAI.h:218
TempSummon * SummonCreature(uint32 id, Position const &pos, TempSummonType spwtype=TEMPSUMMON_MANUAL_DESPAWN, uint32 despwtime=0, uint32 vehId=0, SummonPropertiesEntry const *properties=nullptr, bool visibleBySummonerOnly=false) const
Definition Object.cpp:2453
@ NPC_YMIRJAR_BATTLE_MAIDEN
Definition icecrown_citadel.h:319
@ NPC_YMIRJAR_WARLORD
Definition icecrown_citadel.h:323
@ NPC_RISEN_DEATHSPEAKER_SERVANT
Definition icecrown_citadel.h:217
@ NPC_YMIRJAR_HUNTRESS
Definition icecrown_citadel.h:322
@ NPC_FROSTWING_WHELP
Definition icecrown_citadel.h:349
@ NPC_YMIRJAR_FROSTBINDER
Definition icecrown_citadel.h:321
@ NPC_DEATHSPEAKER_SERVANT
Definition icecrown_citadel.h:216
@ ACTION_VRYKUL_DEATH
Definition icecrown_citadel.h:566
@ ACTION_START_FROSTWYRM
Definition icecrown_citadel.h:569
@ VOID_ZONE_VISUAL
Definition instance_icecrown_citadel.cpp:89
Position const SindragosaSpawnPos
Definition instance_icecrown_citadel.cpp:186
@ NPC_YMIRJAR_DEATHBRINGER
Definition pit_of_saron.h:104

References ACTION_START_FROSTWYRM, ACTION_VRYKUL_DEATH, EventProcessor::AddEventAtOffset(), Creature::AI(), CrokScourgebaneGUID, DATA_HAS_LIMITED_ATTEMPTS, DATA_SINDRAGOSA, DATA_SPINESTALKER, Creature::DespawnOrUnsummon(), DONE, FrostwyrmGUIDs, InstanceScript::GetBossState(), Map::GetCreature(), GetData(), UnitAI::GetData(), Object::GetEntry(), Position::GetExactDist2d(), Object::GetGUID(), Creature::GetLootRecipient(), WorldObject::GetName(), Position::GetPositionZ(), Creature::GetSpawnId(), WorldObject::GetTransport(), HeroicAttempts, InstanceScript::instance, WorldObject::m_Events, NPC_DEATHSPEAKER_SERVANT, NPC_FROSTWING_WHELP, NPC_RIMEFANG, NPC_RISEN_DEATHSPEAKER_SERVANT, NPC_SINDRAGOSA, NPC_SPINESTALKER, NPC_YMIRJAR_BATTLE_MAIDEN, NPC_YMIRJAR_DEATHBRINGER, NPC_YMIRJAR_FROSTBINDER, NPC_YMIRJAR_HUNTRESS, NPC_YMIRJAR_WARLORD, RimefangGUID, RimefangTrash, SindragosaSpawnPos, SpinestalkerGUID, SpinestalkerTrash, Map::SummonCreature(), WorldObject::SummonCreature(), TEMPSUMMON_MANUAL_DESPAWN, TEMPSUMMON_TIMED_DESPAWN, Object::ToCreature(), VOID_ZONE_VISUAL, and WORLD_TRIGGER.

◆ ProcessEvent()

void instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::ProcessEvent ( WorldObject *  source,
uint32  eventId 
)
inlineoverridevirtual

Reimplemented from ZoneScript.

2232 {
2233 switch (eventId)
2234 {
2237 {
2238 if (GameObject* go = source->ToGameObject())
2239 if (MotionTransport* transport = go->ToMotionTransport())
2240 transport->UnloadNonStaticPassengers();
2241 source->AddObjectToRemoveList();
2242 }
2243 break;
2246 {
2247 captain->AI()->DoAction(ACTION_ENEMY_GUNSHIP_TALK);
2248 }
2249 [[fallthrough]];
2252 if (GameObject* go = source->ToGameObject())
2253 if (MotionTransport* transport = go->ToMotionTransport())
2254 transport->EnableMovement(false);
2255 break;
2257 if (GameObject* go = source->ToGameObject())
2258 if (MotionTransport* transport = go->ToMotionTransport())
2259 {
2260 transport->setActive(false);
2261 transport->EnableMovement(false);
2262 //After movement is stopped remove the backpack
2264 }
2266 captain->AI()->DoAction(ACTION_EXIT_SHIP);
2267 // The captain despawns 18s into his walk off the ship; the event party appears with him.
2268 Events.ScheduleEvent(EVENT_SPAWN_SAURFANG_EVENT, 18s);
2269 break;
2270
2271 case EVENT_QUAKE:
2273 warning->SetGoState(GO_STATE_ACTIVE);
2274 Events.ScheduleEvent(EVENT_QUAKE_SHATTER, 5s);
2275 break;
2278 {
2279 platform->SetDestructibleState(GO_DESTRUCTIBLE_DESTROYED);
2280 Events.ScheduleEvent(EVENT_REBUILD_PLATFORM, 1500ms);
2281 }
2282 break;
2283 case EVENT_TELEPORT_TO_FROSMOURNE: // Harvest Soul (normal mode)
2285 {
2286 terenas->AI()->DoAction(ACTION_FROSTMOURNE_INTRO);
2287 std::list<Creature*> triggers;
2289 if (!triggers.empty())
2290 {
2291 triggers.sort(Acore::ObjectDistanceOrderPred(terenas, false));
2292 Unit* visual = triggers.front();
2293 visual->CastSpell(visual, SPELL_FROSTMOURNE_TELEPORT_VISUAL, true);
2294 }
2295
2296 if (Creature* warden = instance->SummonCreature(NPC_SPIRIT_WARDEN, SpiritWardenSpawn, nullptr, 65000))
2297 {
2298 terenas->AI()->AttackStart(warden);
2299 warden->AddThreat(terenas, 300000.0f);
2300 }
2301 }
2302 break;
2305 {
2307 goGas->SetGameObjectFlag(GO_FLAG_INTERACT_COND | GO_FLAG_NOT_SELECTABLE);
2308
2311 {
2313 for (uint8 i = 0; i < 2; ++i)
2315 go->SetGoState(GO_STATE_ACTIVE_ALTERNATIVE);
2316 }
2317 else
2320 SaveToDB();
2321 }
2322 break;
2325 {
2327 goOoze->SetGameObjectFlag(GO_FLAG_INTERACT_COND | GO_FLAG_NOT_SELECTABLE);
2328
2331 {
2333 for (uint8 i = 0; i < 2; ++i)
2335 go->SetGoState(GO_STATE_ACTIVE_ALTERNATIVE);
2336 }
2337 else
2340 SaveToDB();
2341 }
2342 break;
2343 }
2344 }
@ GO_DESTRUCTIBLE_DESTROYED
Definition SharedDefines.h:1633
Position const TerenasSpawn
Definition boss_the_lich_king.cpp:314
Position const SpiritWardenSpawn
Definition boss_the_lich_king.cpp:316
MotionTransport * ToMotionTransport()
Definition GameObject.h:329
virtual void DoAction(int32)
Definition InstanceScript.h:286
Definition Transport.h:51
GameObject * ToGameObject()
Definition Object.h:220
void AddObjectToRemoveList()
Definition Object.cpp:2232
Creature * FindNearestCreature(uint32 entry, float range, bool alive=true) const
Definition Object.cpp:2558
@ NPC_SPIRIT_WARDEN
Definition icecrown_citadel.h:370
@ NPC_IGB_HIGH_OVERLORD_SAURFANG
Definition icecrown_citadel.h:225
@ NPC_WORLD_TRIGGER_INFINITE_AOI
Definition icecrown_citadel.h:383
@ ACTION_FROSTMOURNE_INTRO
Definition icecrown_citadel.h:573
@ ACTION_ENEMY_GUNSHIP_TALK
Definition icecrown_citadel.h:548
@ ACTION_EXIT_SHIP
Definition icecrown_citadel.h:549
@ SPELL_FROSTMOURNE_TELEPORT_VISUAL
Definition icecrown_citadel.h:59
@ EVENT_QUAKE_SHATTER
Definition instance_icecrown_citadel.cpp:53
@ EVENT_REBUILD_PLATFORM
Definition instance_icecrown_citadel.cpp:54
@ EVENT_SPAWN_SAURFANG_EVENT
Definition instance_icecrown_citadel.cpp:57
@ EVENT_PLAYERS_GUNSHIP_SPAWN
Definition instance_icecrown_citadel.cpp:37
@ EVENT_SECOND_REMORSELESS_WINTER
Definition instance_icecrown_citadel.cpp:44
@ EVENT_ENEMY_GUNSHIP_DESPAWN
Definition instance_icecrown_citadel.cpp:41
@ EVENT_TELEPORT_TO_FROSMOURNE
Definition instance_icecrown_citadel.cpp:45
@ EVENT_PLAYERS_GUNSHIP_COMBAT
Definition instance_icecrown_citadel.cpp:38
@ EVENT_ROTFACE_VALVE_USED
Definition instance_icecrown_citadel.cpp:47
@ EVENT_FESTERGUT_VALVE_USED
Definition instance_icecrown_citadel.cpp:46
@ EVENT_QUAKE
Definition instance_icecrown_citadel.cpp:43
@ EVENT_ENEMY_GUNSHIP_COMBAT
Definition instance_icecrown_citadel.cpp:40
@ EVENT_PLAYERS_GUNSHIP_SAURFANG
Definition instance_icecrown_citadel.cpp:39
void RemoveBackPack()
Definition instance_icecrown_citadel.cpp:1170

References ACTION_ENEMY_GUNSHIP_TALK, ACTION_EXIT_SHIP, ACTION_FROSTMOURNE_INTRO, WorldObject::AddObjectToRemoveList(), ArthasPlatformGUID, Unit::CastSpell(), DATA_ICECROWN_GUNSHIP_BATTLE, DONE, EVENT_ENEMY_GUNSHIP_COMBAT, EVENT_ENEMY_GUNSHIP_DESPAWN, EVENT_FESTERGUT_VALVE_USED, EVENT_PLAYERS_GUNSHIP_COMBAT, EVENT_PLAYERS_GUNSHIP_SAURFANG, EVENT_PLAYERS_GUNSHIP_SPAWN, EVENT_QUAKE, EVENT_QUAKE_SHATTER, EVENT_REBUILD_PLATFORM, EVENT_ROTFACE_VALVE_USED, EVENT_SECOND_REMORSELESS_WINTER, EVENT_SPAWN_SAURFANG_EVENT, EVENT_TELEPORT_TO_FROSMOURNE, WorldObject::FindNearestCreature(), FrozenThroneWarningGUID, GasReleaseValveGUID, InstanceScript::GetBossState(), GetCreatureListWithEntryInGrid(), Map::GetGameObject(), InstanceScript::GetTeamIdInInstance(), GO_DESTRUCTIBLE_DESTROYED, GO_FLAG_INTERACT_COND, GO_FLAG_NOT_SELECTABLE, GO_STATE_ACTIVE, GO_STATE_ACTIVE_ALTERNATIVE, InstanceScript::HandleGameObject(), InstanceScript::instance, NPC_IGB_HIGH_OVERLORD_SAURFANG, NPC_IGB_MURADIN_BRONZEBEARD, NPC_SPIRIT_WARDEN, NPC_TERENAS_MENETHIL_FROSTMOURNE, NPC_WORLD_TRIGGER_INFINITE_AOI, OozeReleaseValveGUID, PUTRICIDE_EVENT_FLAG_FESTERGUT_VALVE, PUTRICIDE_EVENT_FLAG_ROTFACE_VALVE, PutricideCollisionGUID, PutricideEventProgress, PutricideGateGUIDs, PutricidePipeGUIDs, RemoveBackPack(), InstanceScript::SaveToDB(), SPELL_FROSTMOURNE_TELEPORT_VISUAL, SpiritWardenSpawn, Map::SummonCreature(), TEAM_HORDE, TerenasSpawn, Object::ToGameObject(), and GameObject::ToMotionTransport().

◆ ReadSaveDataMore()

void instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::ReadSaveDataMore ( std::istringstream &  data)
inlineoverridevirtual

Reimplemented from InstanceScript.

1994 {
1995 data >> HeroicAttempts;
1996
1997 uint32 temp = 0;
1998 data >> temp;
1999
2000 if (temp == IN_PROGRESS)
2001 {
2003 }
2004 else
2005 {
2007 }
2008
2009 data >> BloodQuickeningState;
2010 data >> BloodQuickeningMinutes;
2011
2013 {
2014 Events.ScheduleEvent(EVENT_UPDATE_EXECUTION_TIME, 1min);
2017 }
2018
2019 data >> WeeklyQuestId10;
2020 data >> PutricideEventProgress;
2021 PutricideEventProgress &= ~PUTRICIDE_EVENT_FLAG_TRAP_INPROGRESS;
2023 data >> BloodPrinceTrashCount;
2024 data >> IsBuffAvailable;
2025 data >> IsSindragosaIntroDone;
2027 }
@ EVENT_UPDATE_EXECUTION_TIME
Definition instance_icecrown_citadel.cpp:52
void SetData(uint32 type, uint32 data) override
Definition instance_icecrown_citadel.cpp:1548

References BloodPrinceTrashCount, BloodQuickeningMinutes, BloodQuickeningState, ColdflameJetsState, DATA_BUFF_AVAILABLE, DONE, InstanceScript::DoUpdateWorldState(), EVENT_UPDATE_EXECUTION_TIME, HeroicAttempts, IN_PROGRESS, IsBuffAvailable, IsSindragosaIntroDone, LichKingHeroicAvailable, NOT_STARTED, PutricideEventProgress, SetData(), WeeklyQuestId10, WORLD_STATE_ICECROWN_CITADEL_EXECUTION_TIME, and WORLD_STATE_ICECROWN_CITADEL_SHOW_TIMER.

◆ RemoveBackPack()

void instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::RemoveBackPack ( )
inline
1171 {
1172 for (auto const& itr : instance->GetPlayers())
1173 if (Player* _player = itr.GetSource())
1174 _player->DestroyItemCount(ITEM_GOBLIN_ROCKET_PACK, _player->GetItemCount(ITEM_GOBLIN_ROCKET_PACK), true);
1175 }
@ ITEM_GOBLIN_ROCKET_PACK
Definition icecrown_citadel.h:605
HashMapHolder< Player >::MapType const & GetPlayers()
Definition ObjectAccessor.cpp:99

References Map::GetPlayers(), InstanceScript::instance, and ITEM_GOBLIN_ROCKET_PACK.

Referenced by ProcessEvent().

◆ RestoreHiddenSaurfangEventNpcs()

void instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::RestoreHiddenSaurfangEventNpcs ( )
inline
1381 {
1383 if (!captain->IsVisible())
1384 RestoreSaurfangEventNpc(captain);
1385
1386 for (ObjectGuid const& guid : SaurfangEventGuardGUIDs)
1387 if (Creature* guard = instance->GetCreature(guid))
1388 if (!guard->IsVisible())
1390 }
void RestoreSaurfangEventNpc(Creature *creature)
Definition instance_icecrown_citadel.cpp:1357

References DeathbringerSaurfangEventGUID, Map::GetCreature(), InstanceScript::instance, RestoreSaurfangEventNpc(), and SaurfangEventGuardGUIDs.

Referenced by OnPlayerEnter().

◆ RestoreSaurfangEventNpc()

void instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::RestoreSaurfangEventNpc ( Creature *  creature)
inline
1358 {
1359 float x, y, z, o;
1360 creature->GetHomePosition(x, y, z, o);
1361 creature->NearTeleportTo(x, y, z, o);
1365 creature->SetVisible(true);
1366 }
@ EMOTE_ONESHOT_NONE
Definition SharedDefines.h:1898
@ UNIT_STAND_STATE_STAND
Definition UnitDefines.h:35
@ SHEATH_STATE_UNARMED
Definition UnitDefines.h:129
void GetHomePosition(float &x, float &y, float &z, float &ori) const
Definition Creature.h:349
virtual void SetSheath(SheathState sheathed)
Definition Unit.h:1780
void SetEmoteState(Emote emoteState)
Definition Unit.h:759
void NearTeleportTo(Position &pos, bool casting=false, bool vehicleTeleport=false, bool withPet=false, bool removeTransport=false)
Definition Unit.cpp:15572
void SetStandState(uint8 state)
Definition Unit.cpp:12731

References EMOTE_ONESHOT_NONE, Creature::GetHomePosition(), Unit::NearTeleportTo(), Unit::SetEmoteState(), Unit::SetSheath(), Unit::SetStandState(), Unit::SetVisible(), SHEATH_STATE_UNARMED, and UNIT_STAND_STATE_STAND.

Referenced by RestoreHiddenSaurfangEventNpcs(), and SpawnSaurfangEventNpcs().

◆ SendSaurfangCampWorkerOut()

void instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::SendSaurfangCampWorkerOut ( uint8  i)
inline
1460 {
1462 if (!builder)
1463 return;
1464
1466 builder->SetWalk(false);
1467 builder->GetMotionMaster()->MovePoint(0, site);
1469 }
bool SetWalk(bool enable) override
Enable or disable the creature's walk mode by removing: MOVEMENTFLAG_WALKING. Infom also the client.
Definition Creature.cpp:3393
void MovePoint(uint32 id, Position const &pos, ForcedMovement forcedMovement=FORCED_MOVEMENT_NONE, float speed=0.f, bool generatePath=true, bool forceDestination=true, std::optional< AnimTier > animTier=std::nullopt)
Definition MotionMaster.h:241
MotionMaster * GetMotionMaster()
Definition Unit.h:1761
Position const SaurfangCampWorkPosA[2]
Definition instance_icecrown_citadel.cpp:219
Position const SaurfangCampWorkPosH[2]
Definition instance_icecrown_citadel.cpp:213
@ EVENT_SAURFANG_CAMP_WORKER_1_WORK
Definition instance_icecrown_citadel.cpp:67
@ EVENT_SAURFANG_CAMP_WORKER_0_WORK
Definition instance_icecrown_citadel.cpp:66
static Milliseconds RunTimeTo(Unit const *who, Position const &to)
Definition instance_icecrown_citadel.cpp:238
Definition Position.h:27
std::array< ObjectGuid, 2 > SaurfangCampWorkerGUIDs
Definition instance_icecrown_citadel.cpp:2399

References EVENT_SAURFANG_CAMP_WORKER_0_WORK, EVENT_SAURFANG_CAMP_WORKER_1_WORK, Map::GetCreature(), Unit::GetMotionMaster(), InstanceScript::GetTeamIdInInstance(), InstanceScript::instance, MotionMaster::MovePoint(), RunTimeTo(), SaurfangCampWorkerGUIDs, SaurfangCampWorkPosA, SaurfangCampWorkPosH, Creature::SetWalk(), and TEAM_HORDE.

Referenced by Update().

◆ SendSaurfangCampWorkersBack()

void instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::SendSaurfangCampWorkersBack ( )
inline
1511 {
1512 for (uint8 i = 0; i < 2; ++i)
1513 {
1515 {
1516 builder->SetEmoteState(EMOTE_ONESHOT_NONE);
1517 builder->SetWalk(false);
1518 builder->GetMotionMaster()->MovePoint(0, SaurfangCampTeleporterPos[i]);
1519 builder->DespawnOrUnsummon(RunTimeTo(builder, SaurfangCampTeleporterPos[i]));
1520 }
1521 SaurfangCampWorkerGUIDs[i].Clear();
1522 }
1523 }
Position const SaurfangCampTeleporterPos[2]
Definition instance_icecrown_citadel.cpp:206

References EMOTE_ONESHOT_NONE, Map::GetCreature(), InstanceScript::instance, RunTimeTo(), SaurfangCampTeleporterPos, and SaurfangCampWorkerGUIDs.

Referenced by Update().

◆ SetBossState()

bool instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::SetBossState ( uint32  type,
EncounterState  state 
)
inlineoverridevirtual

Reimplemented from InstanceScript.

1178 {
1179 if (!InstanceScript::SetBossState(type, state))
1180 return false;
1181
1182 switch (type)
1183 {
1185 if (state == DONE)
1186 {
1188 SetData(DATA_WEEKLY_QUEST_ID, 0); // show required hidden npcs
1190 transporter->RemoveGameObjectFlag(GO_FLAG_NOT_SELECTABLE);
1191 SaveToDB();
1192 }
1193 break;
1195 if (state == DONE)
1196 SpawnGunship();
1197 break;
1199 if (state == DONE)
1200 {
1202 {
1203 loot->SetLootRecipient(instance);
1204 loot->RemoveGameObjectFlag(GO_FLAG_LOCKED | GO_FLAG_NOT_SELECTABLE | GO_FLAG_NODESPAWN);
1205 }
1206 }
1207 else if (state == FAIL)
1208 Events.ScheduleEvent(EVENT_RESPAWN_GUNSHIP, 30s);
1209 break;
1211 switch (state)
1212 {
1213 case DONE:
1215 {
1217 loot->SetLootRecipient(deathbringer);
1218 loot->RemoveGameObjectFlag(GO_FLAG_LOCKED | GO_FLAG_NOT_SELECTABLE | GO_FLAG_NODESPAWN);
1219 }
1220
1221 // Not raised here: DONE fires the moment the boss dies. The outro asks
1222 // via SetData(DATA_SAURFANG_CAMP); OnPlayerEnter covers saved instances.
1223 [[fallthrough]];
1224 case NOT_STARTED:
1226 {
1227 HandleGameObject(SaurfangTeleportGUID, true, teleporter);
1228 teleporter->RemoveGameObjectFlag(GO_FLAG_IN_USE);
1229 }
1230 break;
1231 default:
1232 break;
1233 }
1234 break;
1235 case DATA_FESTERGUT:
1236 if (state == DONE)
1237 {
1239 go->RemoveGameObjectFlag(GO_FLAG_INTERACT_COND | GO_FLAG_NOT_SELECTABLE);
1241 HandleDropAttempt(false);
1242 }
1243 break;
1244 case DATA_ROTFACE:
1245 if (state == DONE)
1246 {
1248 go->RemoveGameObjectFlag(GO_FLAG_INTERACT_COND | GO_FLAG_NOT_SELECTABLE);
1250 HandleDropAttempt(false);
1251 }
1252 break;
1256 if (state == DONE)
1258 else if (state == FAIL)
1260 if (state == DONE && !instance->IsHeroic() && LichKingHeroicAvailable)
1261 {
1263 SaveToDB();
1264 }
1265 break;
1268 if (state == DONE)
1270 else if (state == FAIL)
1272 if (state == DONE && !instance->IsHeroic() && LichKingHeroicAvailable)
1273 {
1275 SaveToDB();
1276 }
1277 break;
1279 if (state == DONE)
1280 SetData(DATA_WEEKLY_QUEST_ID, GetData(DATA_WEEKLY_QUEST_ID)); // will show weekly quest npc if necessary
1281 break;
1282 case DATA_SINDRAGOSA:
1284 if (state == DONE)
1286 else if (state == FAIL)
1287 {
1288 IsSindragosaIntroDone = true;
1290 }
1291 if (state == DONE && !instance->IsHeroic() && LichKingHeroicAvailable)
1292 {
1294 SaveToDB();
1295 }
1296 break;
1297 case DATA_THE_LICH_KING:
1298 {
1299 // dramatically increase visibility range during fight to seeing frostmourne room
1300 instance->SetVisibilityRange(state == IN_PROGRESS ? 500.0f : 200.0f);
1301
1302 if (state == FAIL)
1303 {
1304 Events.CancelEvent(EVENT_QUAKE_SHATTER);
1305 Events.CancelEvent(EVENT_REBUILD_PLATFORM);
1306
1308 }
1309
1310 if (state == DONE)
1311 {
1313 bolvar->SetRespawnTime(7 * DAY);
1315 pillars->SetRespawnTime(7 * DAY);
1317 pillars->SetRespawnTime(7 * DAY);
1318
1323 }
1324 break;
1325 }
1326 default:
1327 break;
1328 }
1329
1330 return true;
1331 }
static First const & RAND(First const &first, Second const &second, Rest const &... rest)
Definition CreatureAIImpl.h:25
@ FAIL
Definition InstanceScript.h:60
@ GO_FLAG_IN_USE
Definition SharedDefines.h:1607
virtual bool SetBossState(uint32 id, EncounterState state)
Definition InstanceScript.cpp:400
void SetVisibilityRange(float range)
Definition Map.h:201
@ QUEST_RESIDUE_RENDEZVOUS_10
Definition icecrown_citadel.h:582
@ QUEST_SECURING_THE_RAMPARTS_10
Definition icecrown_citadel.h:580
@ QUEST_BLOOD_QUICKENING_10
Definition icecrown_citadel.h:584
@ QUEST_DEPROGRAMMING_10
Definition icecrown_citadel.h:578
@ QUEST_RESPITE_FOR_A_TORMENTED_SOUL_10
Definition icecrown_citadel.h:586
@ EVENT_RESPAWN_GUNSHIP
Definition instance_icecrown_citadel.cpp:55
void HandleDropAttempt(bool drop=true)
Definition instance_icecrown_citadel.cpp:1143
void CheckLichKingAvailability()
Definition instance_icecrown_citadel.cpp:1971

References BloodwingSigilGUID, CheckLichKingAvailability(), DATA_BLOOD_QUEEN_LANA_THEL, DATA_DEATHBRINGER_SAURFANG, DATA_FESTERGUT, DATA_ICECROWN_GUNSHIP_BATTLE, DATA_LADY_DEATHWHISPER, DATA_LORD_MARROWGAR, DATA_PROFESSOR_PUTRICIDE, DATA_ROTFACE, DATA_SINDRAGOSA, DATA_THE_LICH_KING, DATA_VALITHRIA_DREAMWALKER, DATA_WEEKLY_QUEST_ID, DAY, DeathbringerSaurfangGUID, DeathbringersCacheGUID, DONE, EVENT_QUAKE_SHATTER, EVENT_REBUILD_PLATFORM, EVENT_RESPAWN_GUNSHIP, FAIL, FrostwingSigilGUID, FrozenBolvarGUID, GasReleaseValveGUID, InstanceScript::GetBossState(), Map::GetCreature(), GetData(), Map::GetGameObject(), GO_FLAG_IN_USE, GO_FLAG_INTERACT_COND, GO_FLAG_LOCKED, GO_FLAG_NODESPAWN, GO_FLAG_NOT_SELECTABLE, GunshipArmoryGUID, HandleDropAttempt(), InstanceScript::HandleGameObject(), IN_PROGRESS, InstanceScript::instance, Map::IsHeroic(), IsSindragosaIntroDone, JainaSpawnPos, LichKingHeroicAvailable, MuradinSpawnPos, NOT_STARTED, NPC_LADY_JAINA_PROUDMOORE_QUEST, NPC_LADY_SYLVANAS_WINDRUNNER_QUEST, NPC_MURADIN_BRONZEBEARD_QUEST, NPC_UTHER_THE_LIGHTBRINGER_QUEST, OozeReleaseValveGUID, PillarsChainedGUID, PillarsUnchainedGUID, PlagueSigilGUID, PUTRICIDE_EVENT_FLAG_TRAP_FINISHED, PutricideEnteranceDoorGUID, PutricideEventProgress, QUEST_BLOOD_QUICKENING_10, QUEST_DEPROGRAMMING_10, QUEST_RESIDUE_RENDEZVOUS_10, QUEST_RESPITE_FOR_A_TORMENTED_SOUL_10, QUEST_SECURING_THE_RAMPARTS_10, RAND(), SaurfangTeleportGUID, InstanceScript::SaveToDB(), ScourgeTransporterFirstGUID, InstanceScript::SetBossState(), SetData(), Map::SetVisibilityRange(), SpawnGunship(), Map::SummonCreature(), SylvanasSpawnPos, UtherSpawnPos, and WeeklyQuestId10.

Referenced by SetData(), and SpawnGunship().

◆ SetData()

void instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::SetData ( uint32  type,
uint32  data 
)
inlineoverridevirtual

Reimplemented from ZoneScript.

1549 {
1550 switch (type)
1551 {
1552 case DATA_SAURFANG_CAMP:
1553 // The boss is DONE for the whole outro, so the encounter state alone cannot tell
1554 // "outro playing" from "outro over".
1555 if (data == IN_PROGRESS)
1556 {
1557 _saurfangOutroRunning = true;
1558 // Safety net: an instance emptying mid-outro would leave the flag set and
1559 // the camp could never be raised.
1560 Events.ScheduleEvent(EVENT_SAURFANG_OUTRO_TIMEOUT, 8min);
1561 }
1562 else if (data == DONE)
1563 {
1565 _saurfangOutroRunning = false;
1566 SpawnSaurfangCamp(true);
1567 }
1568 break;
1570 if (data == IN_PROGRESS)
1571 {
1573 break;
1574
1577 MotionTransport* zeppelin = sTransportMgr->CreateTransport(GO_SAURFANG_OUTRO_ZEPPELIN, 0, instance);
1578 if (!zeppelin)
1579 break;
1580
1581 SaurfangZeppelinGUID = zeppelin->GetGUID();
1582 zeppelin->setActive(true);
1583 Events.ScheduleEvent(EVENT_SAURFANG_ZEPPELIN_DOCK, 1s);
1584
1585 // Saurfang rides in on deck; the one stepping off at the edge replaces him.
1586 float x, y, z, o;
1588 zeppelin->CalculatePassengerPosition(x, y, z, &o);
1590 {
1591 zeppelin->AddPassenger(passenger, true);
1592 // Clients already got his create packet without the transport; the stop
1593 // spline carries the transport guid and puts him on deck for them.
1594 passenger->StopMovingOnCurrentPos();
1595 passenger->SetReactState(REACT_PASSIVE);
1596 passenger->SetSheath(SHEATH_STATE_MELEE);
1597 passenger->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP);
1598 SaurfangZeppelinPassengerGUID = passenger->GetGUID();
1599 }
1600 }
1601 else if (data == SPECIAL)
1603 // Asked for twice (departure, then cleanup); without the guard the second call
1604 // would restart the removal timer.
1606 {
1611 if (MotionTransport* zeppelin = go->ToMotionTransport())
1612 zeppelin->EnableMovement(true);
1613
1614 // Releasing _pendingStop does not launch it: it leaves when the stop frame
1615 // DepartureTime comes round, ~24s, and takes about 50s more to fly back to
1616 // its berth above the rise. Removal is once it is back there.
1617 Events.ScheduleEvent(EVENT_SAURFANG_ZEPPELIN_REMOVE, 80s);
1618 }
1619 break;
1621 IsBuffAvailable = !!data;
1622 if (!IsBuffAvailable)
1623 {
1624 instance->DoForAllPlayers([&](Player* player)
1625 {
1626 player->UpdateAreaDependentAuras(player->GetAreaId());
1627 for (Unit::ControlSet::const_iterator itr = player->m_Controlled.begin(); itr != player->m_Controlled.end(); ++itr)
1628 {
1629 Unit::AuraMap& am = (*itr)->GetOwnedAuras();
1630 for (Unit::AuraMap::iterator itra = am.begin(); itra != am.end();)
1631 switch (itra->second->GetId())
1632 {
1633 // Hellscream's Warsong
1634 case 73816:
1635 case 73818:
1636 case 73819:
1637 case 73820:
1638 case 73821:
1639 case 73822:
1640 // Strength of Wrynn
1641 case 73762:
1642 case 73824:
1643 case 73825:
1644 case 73826:
1645 case 73827:
1646 case 73828:
1647 (*itr)->RemoveOwnedAura(itra);
1648 break;
1649 default:
1650 ++itra;
1651 break;
1652 }
1653 }
1654 });
1655 }
1656 SaveToDB();
1657 break;
1659 for (uint8 i = 0; i < WeeklyNPCs; ++i)
1660 if (WeeklyQuestData[i].questId[0] == WeeklyQuestId10 && (WeeklyQuestData[i].creatureEntry != NPC_VALITHRIA_DREAMWALKER_QUEST || GetBossState(DATA_VALITHRIA_DREAMWALKER) == DONE) /*appears after killing valithria*/)
1661 if (WeeklyQuestNpcGUID[i])
1663 c->SetVisible(true);
1664 break;
1666 if (data == NOT_STARTED)
1667 {
1668 PutricideEventProgress &= ~PUTRICIDE_EVENT_FLAG_TRAP_INPROGRESS;
1671 {
1672 for (uint8 i = 0; i < 2; ++i)
1674 go->SetGoState(GO_STATE_ACTIVE_ALTERNATIVE);
1675 }
1676 else
1677 {
1680 }
1681 SaveToDB();
1682 }
1683 else if (data == IN_PROGRESS)
1684 {
1689 SaveToDB();
1690 }
1691 else if (data == DONE)
1692 {
1693 PutricideEventProgress &= ~PUTRICIDE_EVENT_FLAG_TRAP_INPROGRESS;
1698 {
1699 for (uint8 i = 0; i < 2; ++i)
1701 go->SetGoState(GO_STATE_ACTIVE_ALTERNATIVE);
1702 }
1703 else
1704 {
1707 }
1708 SaveToDB();
1709 }
1710 return;
1712 IsBonedEligible = !!data;
1713 break;
1715 IsOozeDanceEligible = !!data;
1716 break;
1718 IsNauseaEligible = !!data;
1719 break;
1721 IsOrbWhispererEligible = !!data;
1722 break;
1724 FrostwyrmGUIDs.insert(data);
1725 break;
1726 case DATA_SPINESTALKER:
1727 SpinestalkerTrash.insert(data);
1728 break;
1729 case DATA_RIMEFANG:
1730 RimefangTrash.insert(data);
1731 break;
1733 ColdflameJetsState = data;
1734 if (ColdflameJetsState == DONE)
1735 SaveToDB();
1736 break;
1738 {
1740 break;
1741 if (BloodQuickeningState == data)
1742 break;
1744 break;
1745
1746 switch (data)
1747 {
1748 case IN_PROGRESS:
1749 Events.ScheduleEvent(EVENT_UPDATE_EXECUTION_TIME, 1min);
1753 break;
1754 case DONE:
1758 break;
1759 default:
1760 break;
1761 }
1762
1763 BloodQuickeningState = data;
1764 SaveToDB();
1765 break;
1766 }
1768 {
1769 if (++BloodPrinceTrashCount >= 4)
1770 {
1773 }
1774 SaveToDB();
1775 break;
1776 }
1777 default:
1778 break;
1779 }
1780 }
@ SPECIAL
Definition InstanceScript.h:62
#define sTransportMgr
Definition TransportMgr.h:165
@ UNIT_NPC_FLAG_GOSSIP
Definition UnitDefines.h:322
@ SHEATH_STATE_MELEE
Definition UnitDefines.h:130
@ REACT_PASSIVE
Definition Unit.h:567
void DoForAllPlayers(std::function< void(Player *)> exec)
Definition Map.cpp:3343
void EnableMovement(bool enabled)
Definition Transport.cpp:561
void AddPassenger(WorldObject *passenger, bool withAll=false) override
Definition Transport.cpp:349
void UpdateAreaDependentAuras(uint32 area_id)
Definition PlayerUpdates.cpp:1894
void CalculatePassengerPosition(float &x, float &y, float &z, float *o=nullptr) const override
This method transforms supplied transport offsets into global coordinates.
Definition Transport.h:33
ControlSet m_Controlled
Definition Unit.h:2079
boost::container::flat_multimap< uint32, Aura * > AuraMap
Definition Unit.h:670
void setActive(bool isActiveObject)
Definition Object.cpp:1091
@ GO_SAURFANG_OUTRO_ZEPPELIN
Definition icecrown_citadel.h:451
@ DATA_ORB_WHISPERER_ACHIEVEMENT
Definition icecrown_citadel.h:112
@ DATA_OOZE_DANCE_ACHIEVEMENT
Definition icecrown_citadel.h:109
@ DATA_NAUSEA_ACHIEVEMENT
Definition icecrown_citadel.h:111
@ DATA_SAURFANG_CAMP
Definition icecrown_citadel.h:137
@ DATA_BLOOD_PRINCE_TRASH
Definition icecrown_citadel.h:103
@ DATA_BONED_ACHIEVEMENT
Definition icecrown_citadel.h:108
@ DATA_BPC_TRASH_DIED
Definition icecrown_citadel.h:149
Position const SaurfangZeppelinPassengerOffset
Definition instance_icecrown_citadel.cpp:235
@ EVENT_SAURFANG_OUTRO_TIMEOUT
Definition instance_icecrown_citadel.cpp:59
@ EVENT_SAURFANG_ZEPPELIN_DOCK
Definition instance_icecrown_citadel.cpp:58
@ EVENT_SAURFANG_ZEPPELIN_REMOVE
Definition instance_icecrown_citadel.cpp:60
void GetPosition(float &x, float &y) const
Definition Position.h:126
void DespawnSaurfangZeppelinPassenger()
Definition instance_icecrown_citadel.cpp:1392
bool SetBossState(uint32 type, EncounterState state) override
Definition instance_icecrown_citadel.cpp:1177
ObjectGuid SaurfangZeppelinGUID
Definition instance_icecrown_citadel.cpp:2400

References _saurfangOutroRunning, _saurfangZeppelinDocked, _saurfangZeppelinLeaving, MotionTransport::AddPassenger(), BloodPrinceTrashCount, BloodQuickeningMinutes, BloodQuickeningState, Transport::CalculatePassengerPosition(), ColdflameJetsState, DATA_BLOOD_PRINCE_TRASH, DATA_BLOOD_QUICKENING_STATE, DATA_BONED_ACHIEVEMENT, DATA_BPC_TRASH_DIED, DATA_BUFF_AVAILABLE, DATA_COLDFLAME_JETS, DATA_NAUSEA_ACHIEVEMENT, DATA_OOZE_DANCE_ACHIEVEMENT, DATA_ORB_WHISPERER_ACHIEVEMENT, DATA_PUTRICIDE_TRAP_STATE, DATA_RIMEFANG, DATA_SAURFANG_CAMP, DATA_SAURFANG_OUTRO_ZEPPELIN, DATA_SINDRAGOSA_FROSTWYRMS, DATA_SPINESTALKER, DATA_VALITHRIA_DREAMWALKER, DATA_WEEKLY_QUEST_ID, DespawnSaurfangZeppelinPassenger(), Map::DoForAllPlayers(), DONE, InstanceScript::DoUpdateWorldState(), EVENT_SAURFANG_OUTRO_TIMEOUT, EVENT_SAURFANG_ZEPPELIN_DOCK, EVENT_SAURFANG_ZEPPELIN_REMOVE, EVENT_UPDATE_EXECUTION_TIME, FrostwyrmGUIDs, WorldObject::GetAreaId(), InstanceScript::GetBossState(), Map::GetCreature(), Map::GetGameObject(), Object::GetGUID(), Position::GetPosition(), GO_SAURFANG_OUTRO_ZEPPELIN, GO_STATE_ACTIVE_ALTERNATIVE, InstanceScript::HandleGameObject(), IN_PROGRESS, InstanceScript::instance, IsBonedEligible, IsBuffAvailable, IsNauseaEligible, IsOozeDanceEligible, IsOrbWhispererEligible, Unit::m_Controlled, NOT_STARTED, NPC_SE_HIGH_OVERLORD_SAURFANG, NPC_VALITHRIA_DREAMWALKER_QUEST, PUTRICIDE_EVENT_FLAG_FESTERGUT_VALVE, PUTRICIDE_EVENT_FLAG_ROTFACE_VALVE, PUTRICIDE_EVENT_FLAG_TRAP_FINISHED, PUTRICIDE_EVENT_FLAG_TRAP_INPROGRESS, PutricideCollisionGUID, PutricideEnteranceDoorGUID, PutricideEventProgress, PutricideGateGUIDs, QUEST_BLOOD_QUICKENING_10, REACT_PASSIVE, RimefangTrash, SaurfangZeppelinGUID, SaurfangZeppelinPassengerGUID, SaurfangZeppelinPassengerOffset, InstanceScript::SaveToDB(), WorldObject::setActive(), SetBossState(), SHEATH_STATE_MELEE, SpawnSaurfangCamp(), SPECIAL, SpinestalkerTrash, sTransportMgr, Map::SummonCreature(), GameObject::ToMotionTransport(), UNIT_NPC_FLAG_GOSSIP, Player::UpdateAreaDependentAuras(), WeeklyNPCs, WeeklyQuestData, WeeklyQuestId10, WeeklyQuestNpcGUID, WORLD_STATE_ICECROWN_CITADEL_EXECUTION_TIME, and WORLD_STATE_ICECROWN_CITADEL_SHOW_TIMER.

Referenced by ReadSaveDataMore(), SetBossState(), and Update().

◆ SetPositionTraps()

void instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::SetPositionTraps ( GameObject *  go)
inline
2347 {
2348 std::vector<Position> trapPositions;
2349
2350 switch (go->GetEntry())
2351 {
2352 case GO_SPIRIT_ALARM_1:
2353 trapPositions = GoSpiritAlarm_1;
2354 break;
2355 case GO_SPIRIT_ALARM_2:
2356 trapPositions = GoSpiritAlarm_2;
2357 break;
2358 case GO_SPIRIT_ALARM_3:
2359 trapPositions = GoSpiritAlarm_3;
2360 break;
2361 case GO_SPIRIT_ALARM_4:
2362 trapPositions = GoSpiritAlarm_4;
2363 break;
2364 default:
2365 return;
2366 }
2367
2369 }
std::vector< Position > GoSpiritAlarm_1
Definition instance_icecrown_citadel.cpp:244
std::vector< Position > GoSpiritAlarm_4
Definition instance_icecrown_citadel.cpp:247
std::vector< Position > GoSpiritAlarm_3
Definition instance_icecrown_citadel.cpp:246
std::vector< Position > GoSpiritAlarm_2
Definition instance_icecrown_citadel.cpp:245
auto SelectRandomContainerElement(C const &container) -> typename std::add_const< decltype(*std::begin(container))>::type &
Definition Containers.h:133
void Relocate(float x, float y)
Definition Position.h:77

References Object::GetEntry(), GO_SPIRIT_ALARM_1, GO_SPIRIT_ALARM_2, GO_SPIRIT_ALARM_3, GO_SPIRIT_ALARM_4, GoSpiritAlarm_1, GoSpiritAlarm_2, GoSpiritAlarm_3, GoSpiritAlarm_4, Position::Relocate(), and Acore::Containers::SelectRandomContainerElement().

Referenced by OnGameObjectCreate().

◆ SetSaurfangCampWorkerWorking()

void instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::SetSaurfangCampWorkerWorking ( uint8  i)
inline
1472 {
1474 if (!builder)
1475 return;
1476
1478 builder->SetFacingTo(site.GetOrientation());
1480 }
@ EMOTE_STATE_WORK_MINING
Definition SharedDefines.h:1961
void SetFacingTo(float ori)
Definition Unit.cpp:16068
float GetOrientation() const
Definition Position.h:124

References EMOTE_STATE_WORK_MINING, Map::GetCreature(), Position::GetOrientation(), InstanceScript::GetTeamIdInInstance(), InstanceScript::instance, SaurfangCampWorkerGUIDs, SaurfangCampWorkPosA, SaurfangCampWorkPosH, Unit::SetEmoteState(), Unit::SetFacingTo(), and TEAM_HORDE.

Referenced by Update().

◆ SpawnGunship()

void instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::SpawnGunship ( )
inline
1334 {
1335 if (!GunshipGUID && instance->HavePlayers())
1336 {
1339 if (MotionTransport* gunship = sTransportMgr->CreateTransport(gunshipEntry, 0, instance))
1340 {
1341 GunshipGUID = gunship->GetGUID();
1342 gunship->setActive(false);
1343 }
1344 }
1345 }
bool HavePlayers() const
Definition Map.h:324

References DATA_ICECROWN_GUNSHIP_BATTLE, InstanceScript::GetTeamIdInInstance(), GO_ORGRIMS_HAMMER_H, GO_THE_SKYBREAKER_A, GunshipGUID, Map::HavePlayers(), InstanceScript::instance, NOT_STARTED, SetBossState(), sTransportMgr, and TEAM_HORDE.

Referenced by OnPlayerEnter(), SetBossState(), and Update().

◆ SpawnSaurfangCamp()

void instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::SpawnSaurfangCamp ( bool  staged)
inline
1403 {
1405 return;
1406
1407 _saurfangCampSpawned = true;
1410 if (!staged)
1411 {
1414 SummonSaurfangCampVendor(true, false);
1415 SummonSaurfangCampVendor(false, false);
1416 return;
1417 }
1418
1419 bool const horde = GetTeamIdInInstance() == TEAM_HORDE;
1420 Events.ScheduleEvent(EVENT_SAURFANG_CAMP_ACTIVATE, horde ? 2s : 1s + 700ms);
1421 Events.ScheduleEvent(EVENT_SAURFANG_CAMP_WORKERS, horde ? 0s : 5s + 800ms);
1422 Events.ScheduleEvent(EVENT_SAURFANG_CAMP_WORKER_0_RUN, horde ? 2s : 11s);
1423 Events.ScheduleEvent(EVENT_SAURFANG_CAMP_WORKER_1_RUN, horde ? 2s : 8s + 200ms);
1424 Events.ScheduleEvent(EVENT_SAURFANG_CAMP_TENTS, horde ? 26s + 800ms : 34s + 500ms);
1425 Events.ScheduleEvent(EVENT_SAURFANG_CAMP_VENDORS, horde ? 30s + 400ms : 41s + 300ms);
1426 }
@ EVENT_SAURFANG_CAMP_WORKERS
Definition instance_icecrown_citadel.cpp:63
@ EVENT_SAURFANG_CAMP_ACTIVATE
Definition instance_icecrown_citadel.cpp:62
@ EVENT_SAURFANG_CAMP_VENDORS
Definition instance_icecrown_citadel.cpp:69
@ EVENT_SAURFANG_CAMP_WORKER_1_RUN
Definition instance_icecrown_citadel.cpp:65
@ EVENT_SAURFANG_CAMP_WORKER_0_RUN
Definition instance_icecrown_citadel.cpp:64
@ EVENT_SAURFANG_CAMP_TENTS
Definition instance_icecrown_citadel.cpp:68
void SummonSaurfangCampVendor(bool smith, bool walkIn)
Definition instance_icecrown_citadel.cpp:1526
void SummonSaurfangCampTeleporters()
Definition instance_icecrown_citadel.cpp:1429
void SpawnSaurfangCampTents()
Definition instance_icecrown_citadel.cpp:1482
void ActivateSaurfangCampTeleporters()
Definition instance_icecrown_citadel.cpp:1437
void SpawnSaurfangEventNpcs()
Definition instance_icecrown_citadel.cpp:1368

References _saurfangCampSpawned, ActivateSaurfangCampTeleporters(), EVENT_SAURFANG_CAMP_ACTIVATE, EVENT_SAURFANG_CAMP_TENTS, EVENT_SAURFANG_CAMP_VENDORS, EVENT_SAURFANG_CAMP_WORKER_0_RUN, EVENT_SAURFANG_CAMP_WORKER_1_RUN, EVENT_SAURFANG_CAMP_WORKERS, InstanceScript::GetTeamIdInInstance(), Map::HavePlayers(), InstanceScript::instance, SpawnSaurfangCampTents(), SpawnSaurfangEventNpcs(), SummonSaurfangCampTeleporters(), SummonSaurfangCampVendor(), and TEAM_HORDE.

Referenced by OnPlayerEnter(), SetData(), and Update().

◆ SpawnSaurfangCampTents()

void instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::SpawnSaurfangCampTents ( )
inline
1483 {
1484 bool const horde = GetTeamIdInInstance() == TEAM_HORDE;
1485 uint32 const tents[2] =
1486 {
1489 };
1490
1491 Position const* tentPos = horde ? SaurfangCampTentPosH : SaurfangCampTentPosA;
1492 for (uint8 i = 0; i < 2; ++i)
1493 instance->SummonGameObject(tents[i], tentPos[i], 0.0f, 0.0f, 0.0f, 0.0f, WEEK);
1494
1495 if (horde)
1496 {
1497 for (ObjectGuid const& guid : SaurfangCampGUIDs)
1498 if (GameObject* camp = instance->GetGameObject(guid))
1499 camp->Respawn();
1500 }
1501 else
1502 {
1506 }
1507 }
GameObject * SummonGameObject(uint32 entry, float x, float y, float z, float ang, float rotation0, float rotation1, float rotation2, float rotation3, uint32 respawnTime, bool checkTransport=true)
Definition Object.cpp:2400
@ GO_SAURFANG_CAMP_ANVIL_A
Definition icecrown_citadel.h:449
@ GO_SAURFANG_CAMP_BANNER_A
Definition icecrown_citadel.h:448
@ GO_SAURFANG_CAMP_TENT_A
Definition icecrown_citadel.h:443
@ GO_SAURFANG_CAMP_TENT_H2
Definition icecrown_citadel.h:445
@ GO_SAURFANG_CAMP_TENT_H1
Definition icecrown_citadel.h:444
Position const SaurfangCampForgePosA
Definition instance_icecrown_citadel.cpp:204
Position const SaurfangCampTentPosH[2]
Definition instance_icecrown_citadel.cpp:190
Position const SaurfangCampBannerPosA
Definition instance_icecrown_citadel.cpp:202
Position const SaurfangCampAnvilPosA
Definition instance_icecrown_citadel.cpp:203
Position const SaurfangCampTentPosA[2]
Definition instance_icecrown_citadel.cpp:196

References Map::GetGameObject(), InstanceScript::GetTeamIdInInstance(), GO_SAURFANG_CAMP_ANVIL_A, GO_SAURFANG_CAMP_BANNER_A, GO_SAURFANG_CAMP_FORGE, GO_SAURFANG_CAMP_TENT_A, GO_SAURFANG_CAMP_TENT_H1, GO_SAURFANG_CAMP_TENT_H2, InstanceScript::instance, GameObject::Respawn(), SaurfangCampAnvilPosA, SaurfangCampBannerPosA, SaurfangCampForgePosA, SaurfangCampGUIDs, SaurfangCampTentPosA, SaurfangCampTentPosH, Map::SummonGameObject(), TEAM_HORDE, and WEEK.

Referenced by SpawnSaurfangCamp(), and Update().

◆ SpawnSaurfangCampWorkers()

void instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::SpawnSaurfangCampWorkers ( )
inline
1445 {
1447 for (uint8 i = 0; i < 2; ++i)
1448 {
1449 if (Creature* builder = instance->SummonCreature(worker, SaurfangCampTeleporterPos[i]))
1450 {
1451 SaurfangCampWorkerGUIDs[i] = builder->GetGUID();
1452 builder->SetReactState(REACT_PASSIVE);
1453 builder->CastSpell(builder, SPELL_SIMPLE_TELEPORT, true);
1454 }
1455 }
1456 }
@ NPC_CAMP_WARSONG_PEON
Definition icecrown_citadel.h:260
@ NPC_CAMP_ALLIANCE_MASON
Definition icecrown_citadel.h:257
@ SPELL_SIMPLE_TELEPORT
Definition instance_icecrown_citadel.cpp:90

References InstanceScript::GetTeamIdInInstance(), InstanceScript::instance, NPC_CAMP_ALLIANCE_MASON, NPC_CAMP_WARSONG_PEON, REACT_PASSIVE, SaurfangCampTeleporterPos, SaurfangCampWorkerGUIDs, SPELL_SIMPLE_TELEPORT, Map::SummonCreature(), and TEAM_HORDE.

Referenced by Update().

◆ SpawnSaurfangEventNpcs()

void instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::SpawnSaurfangEventNpcs ( )
inline

◆ SummonSaurfangCampTeleporters()

void instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::SummonSaurfangCampTeleporters ( )
inline
1430 {
1432 for (uint8 i = 0; i < 2; ++i)
1433 if (GameObject* go = instance->SummonGameObject(teleporter, SaurfangCampTeleporterPos[i], 0.0f, 0.0f, 0.0f, 0.0f, WEEK))
1434 SaurfangCampTeleporterGUIDs[i] = go->GetGUID();
1435 }
@ GO_SAURFANG_CAMP_TELEPORTER_H
Definition icecrown_citadel.h:447
@ GO_SAURFANG_CAMP_TELEPORTER_A
Definition icecrown_citadel.h:446

References InstanceScript::GetTeamIdInInstance(), GO_SAURFANG_CAMP_TELEPORTER_A, GO_SAURFANG_CAMP_TELEPORTER_H, InstanceScript::instance, SaurfangCampTeleporterGUIDs, SaurfangCampTeleporterPos, Map::SummonGameObject(), TEAM_HORDE, and WEEK.

Referenced by SpawnSaurfangCamp().

◆ SummonSaurfangCampVendor()

void instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::SummonSaurfangCampVendor ( bool  smith,
bool  walkIn 
)
inline
1527 {
1528 bool const horde = GetTeamIdInInstance() == TEAM_HORDE;
1529 uint32 const entry = smith ? (horde ? NPC_CAMP_MORGAN_DAYBLAZE : NPC_CAMP_SHELY_STEELBOWELS)
1531 if (!walkIn)
1532 {
1535 return;
1536 }
1537
1538 Creature* vendor = instance->SummonCreature(entry, SaurfangCampTeleporterPos[smith ? 0 : 1]);
1539 if (!vendor)
1540 return;
1541
1542 vendor->CastSpell(vendor, SPELL_SIMPLE_TELEPORT, true);
1543 // The path ends on the pitch, facing the customers.
1546 }
void MoveWaypoint(uint32 path_id, bool repeatable, PathSource pathSource=PathSource::WAYPOINT_MGR)
Move the unit following a specific path. Doesn't work with UNIT_FLAG_DISABLE_MOVE.
Definition MotionMaster.cpp:1014
@ NPC_CAMP_BRAZIE_GETZ
Definition icecrown_citadel.h:259
@ NPC_CAMP_SHELY_STEELBOWELS
Definition icecrown_citadel.h:258
@ NPC_CAMP_MORGAN_DAYBLAZE
Definition icecrown_citadel.h:262
@ NPC_CAMP_APOTHECARY_CANDITH_TOMAS
Definition icecrown_citadel.h:261
Position const SaurfangCampBlacksmithPosA
Definition instance_icecrown_citadel.cpp:228
Position const SaurfangCampGeneralGoodsPosA
Definition instance_icecrown_citadel.cpp:229
@ PATH_CAMP_BRAZIE_GETZ
Definition instance_icecrown_citadel.cpp:76
@ PATH_CAMP_MORGAN_DAYBLAZE
Definition instance_icecrown_citadel.cpp:78
@ PATH_CAMP_SHELY_STEELBOWELS
Definition instance_icecrown_citadel.cpp:75
@ PATH_CAMP_APOTHECARY_CANDITH_TOMAS
Definition instance_icecrown_citadel.cpp:77
Position const SaurfangCampGeneralGoodsPos
Definition instance_icecrown_citadel.cpp:227
Position const SaurfangCampBlacksmithPos
Definition instance_icecrown_citadel.cpp:226

References Unit::CastSpell(), Unit::GetMotionMaster(), InstanceScript::GetTeamIdInInstance(), InstanceScript::instance, MotionMaster::MoveWaypoint(), NPC_CAMP_APOTHECARY_CANDITH_TOMAS, NPC_CAMP_BRAZIE_GETZ, NPC_CAMP_MORGAN_DAYBLAZE, NPC_CAMP_SHELY_STEELBOWELS, PATH_CAMP_APOTHECARY_CANDITH_TOMAS, PATH_CAMP_BRAZIE_GETZ, PATH_CAMP_MORGAN_DAYBLAZE, PATH_CAMP_SHELY_STEELBOWELS, SaurfangCampBlacksmithPos, SaurfangCampBlacksmithPosA, SaurfangCampGeneralGoodsPos, SaurfangCampGeneralGoodsPosA, SaurfangCampTeleporterPos, SPELL_SIMPLE_TELEPORT, Map::SummonCreature(), and TEAM_HORDE.

Referenced by SpawnSaurfangCamp(), and Update().

◆ Update()

void instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::Update ( uint32  diff)
inlineoverridevirtual

Reimplemented from InstanceScript.

2044 {
2045 // Xinef: A Feast of Souls (24547) whispers
2046 if (LichKingRandomWhisperTimer <= diff)
2047 {
2049 Map::PlayerList const& players = instance->GetPlayers();
2050 if (!players.IsEmpty())
2051 if (Player* player = players.begin()->GetSource())
2052 if (player->GetQuestStatus(QUEST_A_FEAST_OF_SOULS) == QUEST_STATUS_INCOMPLETE)
2053 {
2054 if (Creature* theLichKing = instance->GetCreature(TheLichKingLhGUID))
2055 {
2056 theLichKing->AI()->Talk(SAY_SOULS_LICH_KING_RAND_WHISPER, player);
2057 }
2058 }
2059 }
2060 else
2062
2065 if (StaticTransport* trans = elevator->ToStaticTransport())
2066 {
2067 // StaticTransport::Update clamps PathProgress to exactly 0 / GetPauseTime() and then freezes
2068 // there while GOState matches, so these two comparisons detect "parked at a stop" exactly.
2069 bool const atBottom = trans->GetGoState() == GO_STATE_READY && trans->GetPathProgress() == 0;
2070 bool const atTop = trans->GetGoState() == GO_STATE_ACTIVE &&
2071 trans->GetPathProgress() == trans->GetPauseTime();
2072
2073 // Count the dwell down only while parked, so it always starts on arrival instead of on the
2074 // phase of a free-running tick. Flipping GOState sends the transport towards the other end.
2075 if (!atBottom && !atTop)
2077 else if (DarkwhisperElevatorTimer <= diff)
2078 {
2080 trans->SetGoState(atBottom ? GO_STATE_ACTIVE : GO_STATE_READY);
2081 }
2082 else
2084 }
2085
2086 if (Events.Empty())
2087 return;
2088
2089 Events.Update(diff);
2090
2091 while (uint32 eventId = Events.ExecuteEvent())
2092 {
2093 switch (eventId)
2094 {
2096 {
2099 {
2100 Events.ScheduleEvent(EVENT_UPDATE_EXECUTION_TIME, 1min);
2103 }
2104 else
2105 {
2109 bq->AI()->DoAction(ACTION_KILL_MINCHAR);
2110 }
2111 SaveToDB();
2112 break;
2113 }
2115 {
2117 platform->SetDestructibleState(GO_DESTRUCTIBLE_DAMAGED);
2119 edge->SetGoState(GO_STATE_ACTIVE);
2121 wind->SetGoState(GO_STATE_READY);
2123 warning->SetGoState(GO_STATE_READY);
2124 if (Creature* theLichKing = instance->GetCreature(TheLichKingGUID))
2125 theLichKing->AI()->DoAction(ACTION_RESTORE_LIGHT);
2126 break;
2127 }
2130 platform->SetDestructibleState(GO_DESTRUCTIBLE_REBUILDING, nullptr, true);
2132 edge->SetGoState(GO_STATE_READY);
2134 wind->SetGoState(GO_STATE_ACTIVE);
2135 break;
2137 SpawnGunship();
2138 break;
2141 {
2143 {
2144 sindragosa->setActive(true);
2145 sindragosa->SetDisableGravity(true);
2146 sindragosa->GetMotionMaster()->MoveWaypoint(NPC_SINDRAGOSA * 10, true);
2147
2148 if (TempSummon* summon = sindragosa->ToTempSummon())
2149 {
2150 summon->SetTempSummonType(TEMPSUMMON_DEAD_DESPAWN);
2151 }
2152 }
2153 }
2154 // Could happen more than once if more than one player enters before she respawns.
2155 Events.CancelEvent(EVENT_RESPAWN_SINDRAGOSA);
2156 break;
2159 break;
2161 _saurfangOutroRunning = false;
2164 {
2165 SpawnSaurfangCamp(false);
2167 }
2168 break;
2171 break;
2174 break;
2177 break;
2180 break;
2183 break;
2186 break;
2190 break;
2192 SummonSaurfangCampVendor(true, true);
2193 SummonSaurfangCampVendor(false, true);
2194 break;
2198 {
2199 // A MO_TRANSPORT is not despawned like an ordinary gameobject.
2200 if (MotionTransport* zeppelin = go->ToMotionTransport())
2201 {
2202 zeppelin->EnableMovement(false);
2203 zeppelin->UnloadStaticPassengers();
2204 }
2205 go->AddObjectToRemoveList();
2206 }
2209 break;
2211 {
2212 // Reschedule unconditionally: giving up on a failed lookup would leave
2213 // it looping its path forever.
2215 MotionTransport* zeppelin = go ? go->ToMotionTransport() : nullptr;
2217 {
2218 zeppelin->EnableMovement(false);
2220 }
2221 else if (SaurfangZeppelinGUID)
2222 Events.ScheduleEvent(EVENT_SAURFANG_ZEPPELIN_DOCK, 500ms);
2223 }
2224 break;
2225 default:
2226 break;
2227 }
2228 }
2229 }
@ GO_STATE_READY
Definition GameObjectData.h:709
@ TEMPSUMMON_DEAD_DESPAWN
Definition Object.h:56
@ QUEST_STATUS_INCOMPLETE
Definition QuestDef.h:103
@ GO_DESTRUCTIBLE_REBUILDING
Definition SharedDefines.h:1634
@ GO_DESTRUCTIBLE_DAMAGED
Definition SharedDefines.h:1632
StaticTransport * ToStaticTransport()
Definition GameObject.h:326
bool IsEmpty() const
Definition LinkedList.h:97
Definition MapRefMgr.h:26
iterator begin()
Definition MapRefMgr.h:36
PlayerList const & GetPlayers() const
Definition Map.h:335
FROM * GetSource() const
Definition Reference.h:97
Definition Transport.h:120
Definition TemporarySummon.h:50
TempSummon * ToTempSummon()
Definition Unit.h:732
@ QUEST_A_FEAST_OF_SOULS
Definition icecrown_citadel.h:592
@ ACTION_RESTORE_LIGHT
Definition icecrown_citadel.h:572
@ ACTION_KILL_MINCHAR
Definition icecrown_citadel.h:563
@ SAY_SOULS_LICH_KING_RAND_WHISPER
Definition instance_icecrown_citadel.cpp:95
float const SaurfangOutroZeppelinDockRange
Definition instance_icecrown_citadel.cpp:233
Position const SaurfangOutroZeppelinPos
Definition instance_icecrown_citadel.cpp:232
void SendSaurfangCampWorkersBack()
Definition instance_icecrown_citadel.cpp:1510
void SpawnSaurfangCampWorkers()
Definition instance_icecrown_citadel.cpp:1444
void SendSaurfangCampWorkerOut(uint8 i)
Definition instance_icecrown_citadel.cpp:1459
void SetSaurfangCampWorkerWorking(uint8 i)
Definition instance_icecrown_citadel.cpp:1471

References _saurfangOutroRunning, _saurfangZeppelinDocked, _saurfangZeppelinLeaving, ACTION_KILL_MINCHAR, ACTION_RESTORE_LIGHT, ActivateSaurfangCampTeleporters(), ArthasPlatformGUID, MapRefMgr::begin(), BloodQueenLanaThelGUID, BloodQuickeningMinutes, BloodQuickeningState, ObjectGuid::Clear(), DARKWHISPER_ELEVATOR_DWELL_TIME, DarkwhisperElevatorTimer, DATA_DEATHBRINGER_SAURFANG, DATA_LADY_DEATHWHISPER, DATA_SAURFANG_OUTRO_ZEPPELIN, DATA_SINDRAGOSA, DespawnSaurfangZeppelinPassenger(), DONE, InstanceScript::DoUpdateWorldState(), MotionTransport::EnableMovement(), EVENT_QUAKE_SHATTER, EVENT_REBUILD_PLATFORM, EVENT_RESPAWN_GUNSHIP, EVENT_RESPAWN_SINDRAGOSA, EVENT_SAURFANG_CAMP_ACTIVATE, EVENT_SAURFANG_CAMP_TENTS, EVENT_SAURFANG_CAMP_VENDORS, EVENT_SAURFANG_CAMP_WORKER_0_RUN, EVENT_SAURFANG_CAMP_WORKER_0_WORK, EVENT_SAURFANG_CAMP_WORKER_1_RUN, EVENT_SAURFANG_CAMP_WORKER_1_WORK, EVENT_SAURFANG_CAMP_WORKERS, EVENT_SAURFANG_OUTRO_TIMEOUT, EVENT_SAURFANG_ZEPPELIN_DOCK, EVENT_SAURFANG_ZEPPELIN_REMOVE, EVENT_SPAWN_SAURFANG_EVENT, EVENT_UPDATE_EXECUTION_TIME, FrozenThroneEdgeGUID, FrozenThroneWarningGUID, FrozenThroneWindGUID, InstanceScript::GetBossState(), Map::GetCreature(), InstanceScript::GetCreature(), Position::GetExactDist2d(), Map::GetGameObject(), Map::GetPlayers(), Reference< TO, FROM >::GetSource(), GO_DESTRUCTIBLE_DAMAGED, GO_DESTRUCTIBLE_REBUILDING, GO_STATE_ACTIVE, GO_STATE_READY, IN_MILLISECONDS, InstanceScript::instance, LinkedListHead::IsEmpty(), LadyDeathwisperElevatorGUID, LichKingRandomWhisperTimer, NPC_SINDRAGOSA, QUEST_A_FEAST_OF_SOULS, QUEST_STATUS_INCOMPLETE, SaurfangOutroZeppelinDockRange, SaurfangOutroZeppelinPos, SaurfangZeppelinGUID, InstanceScript::SaveToDB(), SAY_SOULS_LICH_KING_RAND_WHISPER, SendSaurfangCampWorkerOut(), SendSaurfangCampWorkersBack(), SetData(), SetSaurfangCampWorkerWorking(), SindragosaSpawnPos, SpawnGunship(), SpawnSaurfangCamp(), SpawnSaurfangCampTents(), SpawnSaurfangCampWorkers(), SpawnSaurfangEventNpcs(), Map::SummonCreature(), SummonSaurfangCampVendor(), TEMPSUMMON_DEAD_DESPAWN, TheLichKingGUID, TheLichKingLhGUID, GameObject::ToMotionTransport(), GameObject::ToStaticTransport(), Unit::ToTempSummon(), urand(), WORLD_STATE_ICECROWN_CITADEL_EXECUTION_TIME, and WORLD_STATE_ICECROWN_CITADEL_SHOW_TIMER.

◆ WriteSaveDataMore()

void instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::WriteSaveDataMore ( std::ostringstream &  data)
inlineoverridevirtual

Member Data Documentation

◆ _saurfangCampSpawned

bool instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::_saurfangCampSpawned
protected

◆ _saurfangOutroRunning

bool instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::_saurfangOutroRunning
protected

◆ _saurfangZeppelinDocked

bool instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::_saurfangZeppelinDocked
protected

◆ _saurfangZeppelinLeaving

bool instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::_saurfangZeppelinLeaving
protected

◆ ArthasPlatformGUID

ObjectGuid instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::ArthasPlatformGUID
protected

◆ ArthasPrecipiceGUID

ObjectGuid instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::ArthasPrecipiceGUID
protected

Referenced by OnGameObjectCreate().

◆ BloodCouncilControllerGUID

ObjectGuid instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::BloodCouncilControllerGUID
protected

Referenced by GetGuidData(), and OnCreatureCreate().

◆ BloodCouncilGUIDs

ObjectGuid instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::BloodCouncilGUIDs[3]
protected

Referenced by GetGuidData(), and OnCreatureCreate().

◆ BloodPrinceTrashCount

uint32 instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::BloodPrinceTrashCount
protected

◆ BloodQueenLanaThelGUID

ObjectGuid instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::BloodQueenLanaThelGUID
protected

◆ BloodQuickeningMinutes

uint16 instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::BloodQuickeningMinutes
protected

◆ BloodQuickeningState

uint32 instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::BloodQuickeningState
protected

◆ BloodwingSigilGUID

ObjectGuid instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::BloodwingSigilGUID
protected

Referenced by OnGameObjectCreate(), and SetBossState().

◆ ColdflameJetsState

uint32 instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::ColdflameJetsState
protected

◆ CrokCaptainGUIDs

ObjectGuid instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::CrokCaptainGUIDs[4]
protected

Referenced by GetGuidData(), and OnCreatureCreate().

◆ CrokScourgebaneGUID

ObjectGuid instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::CrokScourgebaneGUID
protected

◆ DarkwhisperElevatorTimer

uint32 instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::DarkwhisperElevatorTimer
protected

◆ DeathbringerSaurfangDoorGUID

ObjectGuid instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::DeathbringerSaurfangDoorGUID
protected

Referenced by GetGuidData(), and OnGameObjectCreate().

◆ DeathbringerSaurfangEventGUID

ObjectGuid instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::DeathbringerSaurfangEventGUID
protected

◆ DeathbringerSaurfangGUID

ObjectGuid instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::DeathbringerSaurfangGUID
protected

◆ DeathbringersCacheGUID

ObjectGuid instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::DeathbringersCacheGUID
protected

Referenced by OnGameObjectCreate(), and SetBossState().

◆ EnemyGunshipGUID

ObjectGuid instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::EnemyGunshipGUID
protected

Referenced by GetGuidData(), and OnGameObjectCreate().

◆ Events

EventMap instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::Events
protected

◆ FestergutGUID

ObjectGuid instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::FestergutGUID
protected

Referenced by GetGuidData(), and OnCreatureCreate().

◆ FrostwingSigilGUID

ObjectGuid instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::FrostwingSigilGUID
protected

Referenced by OnGameObjectCreate(), and SetBossState().

◆ FrostwyrmGUIDs

std::set<ObjectGuid::LowType> instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::FrostwyrmGUIDs
protected

Referenced by GetData(), OnUnitDeath(), and SetData().

◆ FrozenBolvarGUID

ObjectGuid instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::FrozenBolvarGUID
protected

Referenced by OnGameObjectCreate(), and SetBossState().

◆ FrozenThroneEdgeGUID

ObjectGuid instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::FrozenThroneEdgeGUID
protected

Referenced by OnGameObjectCreate(), and Update().

◆ FrozenThroneWarningGUID

ObjectGuid instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::FrozenThroneWarningGUID
protected

◆ FrozenThroneWindGUID

ObjectGuid instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::FrozenThroneWindGUID
protected

Referenced by OnGameObjectCreate(), and Update().

◆ GasReleaseValveGUID

ObjectGuid instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::GasReleaseValveGUID
protected

◆ GunshipArmoryGUID

ObjectGuid instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::GunshipArmoryGUID
protected

Referenced by OnGameObjectCreate(), and SetBossState().

◆ GunshipGUID

ObjectGuid instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::GunshipGUID
protected

◆ HeroicAttempts

uint32 instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::HeroicAttempts
protected

◆ HighlordTirionFordringGUID

ObjectGuid instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::HighlordTirionFordringGUID
protected

Referenced by GetGuidData(), and OnCreatureCreate().

◆ IsBonedEligible

bool instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::IsBonedEligible
protected

◆ IsBuffAvailable

bool instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::IsBuffAvailable
protected

◆ IsNauseaEligible

bool instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::IsNauseaEligible
protected

◆ IsOozeDanceEligible

bool instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::IsOozeDanceEligible
protected

◆ IsOrbWhispererEligible

bool instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::IsOrbWhispererEligible
protected

◆ IsSindragosaIntroDone

bool instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::IsSindragosaIntroDone
protected

◆ LadyDeathwhisperGUID

ObjectGuid instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::LadyDeathwhisperGUID
protected

Referenced by GetGuidData(), and OnCreatureCreate().

◆ LadyDeathwisperElevatorGUID

ObjectGuid instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::LadyDeathwisperElevatorGUID
protected

Referenced by OnGameObjectCreate(), and Update().

◆ LichKingHeroicAvailable

bool instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::LichKingHeroicAvailable
protected

◆ LichKingRandomWhisperTimer

uint32 instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::LichKingRandomWhisperTimer
protected

◆ OozeReleaseValveGUID

ObjectGuid instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::OozeReleaseValveGUID
protected

◆ PillarsChainedGUID

ObjectGuid instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::PillarsChainedGUID
protected

Referenced by OnGameObjectCreate(), and SetBossState().

◆ PillarsUnchainedGUID

ObjectGuid instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::PillarsUnchainedGUID
protected

Referenced by OnGameObjectCreate(), and SetBossState().

◆ PlagueSigilGUID

ObjectGuid instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::PlagueSigilGUID
protected

Referenced by OnGameObjectCreate(), and SetBossState().

◆ ProfessorPutricideGUID

ObjectGuid instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::ProfessorPutricideGUID
protected

◆ PutricadeTrapGUID

ObjectGuid instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::PutricadeTrapGUID
protected

Referenced by GetGuidData(), and OnCreatureCreate().

◆ PutricideCollisionGUID

ObjectGuid instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::PutricideCollisionGUID
protected

◆ PutricideEnteranceDoorGUID

ObjectGuid instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::PutricideEnteranceDoorGUID
protected

◆ PutricideEventProgress

uint32 instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::PutricideEventProgress
protected

◆ PutricideGateGUIDs

ObjectGuid instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::PutricideGateGUIDs[2]
protected

◆ PutricidePipeGUIDs

ObjectGuid instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::PutricidePipeGUIDs[2]
protected

Referenced by OnGameObjectCreate(), and ProcessEvent().

◆ PutricideTableGUID

ObjectGuid instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::PutricideTableGUID
protected

Referenced by GetGuidData(), and OnGameObjectCreate().

◆ RimefangGUID

ObjectGuid instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::RimefangGUID
protected

◆ RimefangTrash

std::set<ObjectGuid::LowType> instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::RimefangTrash
protected

Referenced by GetData(), OnUnitDeath(), and SetData().

◆ RotfaceGUID

ObjectGuid instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::RotfaceGUID
protected

Referenced by GetGuidData(), and OnCreatureCreate().

◆ SaurfangCampGUIDs

GuidList instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::SaurfangCampGUIDs
protected

◆ SaurfangCampTeleporterGUIDs

std::array<ObjectGuid, 2> instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::SaurfangCampTeleporterGUIDs
protected

◆ SaurfangCampWorkerGUIDs

std::array<ObjectGuid, 2> instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::SaurfangCampWorkerGUIDs
protected

◆ SaurfangEventGuardGUIDs

GuidList instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::SaurfangEventGuardGUIDs
protected

◆ SaurfangTeleportGUID

ObjectGuid instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::SaurfangTeleportGUID
protected

◆ SaurfangZeppelinGUID

ObjectGuid instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::SaurfangZeppelinGUID
protected

Referenced by SetData(), and Update().

◆ SaurfangZeppelinPassengerGUID

ObjectGuid instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::SaurfangZeppelinPassengerGUID
protected

◆ ScourgeTransporterFirstGUID

ObjectGuid instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::ScourgeTransporterFirstGUID
protected

Referenced by OnGameObjectCreate(), and SetBossState().

◆ SindragosaGauntletGUID

ObjectGuid instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::SindragosaGauntletGUID
protected

Referenced by GetGuidData(), and OnCreatureCreate().

◆ SindragosaGUID

ObjectGuid instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::SindragosaGUID
protected

◆ SisterSvalnaGUID

ObjectGuid instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::SisterSvalnaGUID
protected

Referenced by GetGuidData(), and OnCreatureCreate().

◆ SpinestalkerGUID

ObjectGuid instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::SpinestalkerGUID
protected

◆ SpinestalkerTrash

std::set<ObjectGuid::LowType> instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::SpinestalkerTrash
protected

Referenced by GetData(), OnUnitDeath(), and SetData().

◆ TerenasMenethilGUID

ObjectGuid instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::TerenasMenethilGUID
protected

Referenced by GetGuidData(), and OnCreatureCreate().

◆ TheLichKingGUID

ObjectGuid instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::TheLichKingGUID
protected

◆ TheLichKingLhGUID

ObjectGuid instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::TheLichKingLhGUID
protected

Referenced by OnCreatureCreate(), and Update().

◆ TheLichKingTeleportGUID

ObjectGuid instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::TheLichKingTeleportGUID
protected

◆ ValithriaDreamwalkerGUID

ObjectGuid instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::ValithriaDreamwalkerGUID
protected

◆ ValithriaLichKingGUID

ObjectGuid instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::ValithriaLichKingGUID
protected

Referenced by GetGuidData(), and OnCreatureCreate().

◆ ValithriaTriggerGUID

ObjectGuid instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::ValithriaTriggerGUID
protected

Referenced by GetGuidData(), and OnCreatureCreate().

◆ WeeklyQuestId10

uint32 instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::WeeklyQuestId10
protected

◆ WeeklyQuestNpcGUID

ObjectGuid instance_icecrown_citadel::instance_icecrown_citadel_InstanceMapScript::WeeklyQuestNpcGUID[WeeklyNPCs]
protected

Referenced by OnCreatureCreate(), and SetData().


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