32#include <unordered_set>
232 professorPutricide->AI()->JustSummoned(creature);
834 else if (state ==
FAIL)
845 loot->SetTapList(deathbringer->GetTapList());
937 bolvar->SetRespawnTime(7 *
DAY);
939 pillars->SetRespawnTime(7 *
DAY);
941 pillars->SetRespawnTime(7 *
DAY);
1037 switch (criteria_id)
1216 std::list<Creature*> stalkers;
1218 if (stalkers.empty())
1223 stalkers.pop_front();
1224 for (std::list<Creature*>::iterator itr = stalkers.begin(); itr != stalkers.end(); ++itr)
1225 (*itr)->AI()->Reset();
1297 transport->EnableMovement(
false);
1304 transport->EnableMovement(
false);
1322 std::list<Creature*> triggers;
1324 if (!triggers.empty())
1327 Unit* visual = triggers.front();
1333 terenas->AI()->AttackStart(warden);
1334 warden->GetThreatManager().AddThreat(terenas, 300000.0f,
nullptr,
true,
true);
@ GO_DESTRUCTIBLE_DESTROYED
@ GO_DESTRUCTIBLE_REBUILDING
@ GO_DESTRUCTIBLE_DAMAGED
@ GO_STATE_TRANSPORT_ACTIVE
uint32 const EncounterCount
Position const SindragosaSpawnPos
Position const TerenasSpawn
Position const SpiritWardenSpawn
ObjectGuid const & GetGUID() const
void SetReactState(ReactStates st)
ObjectGuid::LowType GetSpawnId() const
void SetCorpseDelay(uint32 delay, bool ignoreCorpseDecayRatio=false)
void SetGoState(GOState state)
void RemoveFlag(GameObjectFlags flags)
void HandleCustomTypeCommand(GameObjectTypeBase::CustomCommand const &command) const
void SetFlag(GameObjectFlags flags)
void SetRespawnTime(int32 respawn)
Transport * ToTransport()
void SetTapList(GuidUnorderedSet tapList)
uint32 GetMaxPlayers() const
Team GetTeamInInstance() const
void SetBossNumber(uint32 number)
virtual bool SetBossState(uint32 id, EncounterState state)
void DoRemoveAurasDueToSpellOnPlayers(uint32 spell, bool includePets=false, bool includeControlled=false)
void HandleGameObject(ObjectGuid guid, bool open, GameObject *go=nullptr)
void DoCastSpellOnPlayer(Player *player, uint32 spell, bool includePets=false, bool includeControlled=false)
void SetHeaders(std::string_view dataHeaders)
void LoadDungeonEncounterData(std::span< DungeonEncounterData const > encounters)
EncounterState GetBossState(uint32 id) const
virtual void AddDoor(GameObject *door, bool add)
void DoRemoveAurasDueToSpellOnPlayer(Player *player, uint32 spell, bool includePets=false, bool includeControlled=false)
void LoadDoorData(std::span< DoorData const > data)
void LoadBossBoundaries(BossBoundaryData const &data)
bool _SkipCheckRequiredBosses(Player const *player=nullptr) const
bool SpawnGroupSpawn(uint32 groupId, bool ignoreRespawn=false, bool force=false, std::vector< WorldObject * > *spawnedObjects=nullptr)
void LoadGrid(float x, float y)
TempSummon * SummonCreature(uint32 entry, Position const &pos, SummonPropertiesEntry const *properties=nullptr, Milliseconds duration=0ms, WorldObject *summoner=nullptr, uint32 spellId=0, uint32 vehId=0, ObjectGuid privateObjectOwner=ObjectGuid::Empty, SmoothPhasingInfo const *smoothPhasingInfo=nullptr)
GameObject * GetGameObject(ObjectGuid const &guid)
bool IsSpawnGroupActive(uint32 groupId) const
InstanceMap * ToInstanceMap()
Creature * GetCreature(ObjectGuid const &guid)
static ObjectGuid const Empty
GameObject * ToGameObject()
virtual void SetGUID(ObjectGuid const &guid, int32 id)
virtual uint32 GetData(uint32 id) const
void SetControlled(bool apply, UnitState state)
ObjectGuid GetOwnerGUID() const override
bool SetDisableGravity(bool disable, bool updateAnimTier=true)
void SetEmoteState(Emote emote)
SpellCastResult CastSpell(CastSpellTargetArg const &targets, uint32 spellId, CastSpellExtraArgs const &args={ })
void AddObjectToRemoveList()
Creature * FindNearestCreature(uint32 entry, float range, bool alive=true) const
instance_icecrown_citadel()
InstanceScript * GetInstanceScript(InstanceMap *map) const override
@ SPELL_STRENGHT_OF_WRYNN
@ SPELL_ARTHAS_TELEPORTER_CEREMONY
@ SPELL_FROSTMOURNE_TELEPORT_VISUAL
@ SPELL_HELLSCREAMS_WARSONG
@ GO_SINDRAGOSA_SHORTCUT_ENTRANCE_DOOR
@ GO_SCIENTIST_AIRLOCK_DOOR_GREEN
@ GO_SCOURGE_TRANSPORTER_LICHKING
@ GO_GREEN_PLAGUE_MONSTER_ENTRANCE
@ GO_SCIENTIST_AIRLOCK_DOOR_COLLISION
@ GO_DOODAD_ICECROWN_GREENTUBES02
@ GO_DEATHBRINGER_S_CACHE_10N
@ GO_CACHE_OF_THE_DREAMWALKER_25H
@ GO_SCOURGE_TRANSPORTER_LIGHTSHAMMER
@ GO_GUNSHIP_ARMORY_H_10N
@ GO_SCOURGE_TRANSPORTER_RAMPART
@ GO_DEATHBRINGER_S_CACHE_25N
@ GO_LADY_DEATHWHISPER_ELEVATOR
@ GO_CACHE_OF_THE_DREAMWALKER_25N
@ GO_BLOOD_ELF_COUNCIL_DOOR_RIGHT
@ GO_GUNSHIP_ARMORY_A_10H
@ GO_SINDRAGOSA_SHORTCUT_EXIT_DOOR
@ GO_DOODAD_ICECROWN_SNOWEDGEWARNING01
@ GO_GUNSHIP_ARMORY_A_25N
@ GO_SCOURGE_TRANSPORTER_UPPERSPIRE
@ GO_DOODAD_ICECROWN_ICEWALL02
@ GO_GUNSHIP_ARMORY_A_10N
@ GO_GUNSHIP_ARMORY_H_25H
@ GO_LAVAMAN_PILLARS_UNCHAINED
@ GO_GUNSHIP_ARMORY_H_25N
@ GO_ORATORY_OF_THE_DAMNED_ENTRANCE
@ GO_DOODAD_ICECROWN_ROOSTPORTCULLIS_04
@ GO_GUNSHIP_ARMORY_A_25H
@ GO_SCIENTIST_AIRLOCK_DOOR_ORANGE
@ GO_CACHE_OF_THE_DREAMWALKER_10N
@ GO_GREEN_DRAGON_BOSS_EXIT
@ GO_ORANGE_PLAGUE_MONSTER_ENTRANCE
@ GO_SCOURGE_TRANSPORTER_ORATORY
@ GO_DOODAD_ICECROWN_BLOODPRINCE_DOOR_01
@ GO_DEATHBRINGER_S_CACHE_10H
@ GO_DOODAD_ICECROWN_THRONEFROSTYWIND01
@ GO_DOODAD_ICECROWN_ROOSTPORTCULLIS_02
@ GO_DOODAD_ICECROWN_ROOSTPORTCULLIS_03
@ GO_SIGIL_OF_THE_FROSTWING
@ GO_SCOURGE_TRANSPORTER_SINDRAGOSA
@ GO_DOODAD_ICECROWN_ROOSTPORTCULLIS_01
@ GO_BLOOD_ELF_COUNCIL_DOOR
@ GO_DOODAD_ICECROWN_ORANGETUBES02
@ GO_DEATHBRINGER_S_CACHE_25H
@ GO_DOODAD_ICECROWN_GRATE_01
@ GO_LORD_MARROWGAR_S_ENTRANCE
@ GO_LAVAMAN_PILLARS_CHAINED
@ GO_SCOURGE_TRANSPORTER_DEATHBRINGER
@ GO_DOODAD_ICECROWN_THRONEFROSTYEDGE01
@ GO_GUNSHIP_ARMORY_H_10H
@ GO_CACHE_OF_THE_DREAMWALKER_10H
@ GO_GREEN_DRAGON_BOSS_ENTRANCE
@ GO_SINDRAGOSA_ENTRANCE_DOOR
@ CRITERIA_ONCE_BITTEN_TWICE_SHY_25V
@ CRITERIA_DANCES_WITH_OOZES_10H
@ CRITERIA_ONCE_BITTEN_TWICE_SHY_10V
@ CRITERIA_ORB_WHISPERER_25H
@ CRITERIA_DANCES_WITH_OOZES_10N
@ CRITERIA_DANCES_WITH_OOZES_25H
@ CRITERIA_KILL_LANA_THEL_25M
@ CRITERIA_ONCE_BITTEN_TWICE_SHY_10N
@ CRITERIA_DANCES_WITH_OOZES_25N
@ CRITERIA_ORB_WHISPERER_25N
@ CRITERIA_KILL_LANA_THEL_10M
@ CRITERIA_ORB_WHISPERER_10N
@ CRITERIA_ORB_WHISPERER_10H
@ CRITERIA_ONCE_BITTEN_TWICE_SHY_25N
@ ACTION_FROSTMOURNE_INTRO
@ ACTION_ENEMY_GUNSHIP_TALK
@ DATA_ORB_WHISPERER_ACHIEVEMENT
@ DATA_SINDRAGOSA_FROSTWYRMS
@ DATA_BLOOD_PRINCE_COUNCIL_INTRO
@ DATA_BLOOD_PRINCE_COUNCIL
@ DATA_DEATHBRINGER_SAURFANG
@ DATA_BLOOD_QUEEN_LANA_THEL_COUNCIL
also used by conditions
@ DATA_VALITHRIA_LICH_KING
@ DATA_OOZE_DANCE_ACHIEVEMENT
@ DATA_NAUSEA_ACHIEVEMENT
@ DATA_BLOOD_PRINCES_CONTROL
@ DATA_ICECROWN_GUNSHIP_BATTLE
@ DATA_SAURFANG_EVENT_NPC
@ DATA_VALITHRIA_DREAMWALKER
@ DATA_HIGHLORD_TIRION_FORDRING
@ DATA_UPPERSPIRE_TELE_ACT
@ DATA_BLOOD_QUEEN_LANA_THEL
@ DATA_PROFESSOR_PUTRICIDE
@ DATA_NERUBAR_BROODKEEPER_EVENT
@ NPC_THE_LICH_KING_VALITHRIA
@ NPC_HIGH_CAPTAIN_JUSTIN_BARTLETT
@ NPC_GREEN_DRAGON_COMBAT_TRIGGER
@ NPC_INFILTRATOR_MINCHAR_BQ
@ NPC_TERENAS_MENETHIL_FROSTMOURNE
@ NPC_SKY_REAVER_KORM_BLACKSCAR
@ NPC_IGB_MURADIN_BRONZEBEARD
@ NPC_VALITHRIA_DREAMWALKER
@ NPC_YMIRJAR_BATTLE_MAIDEN
@ NPC_BLOOD_QUEEN_LANA_THEL_COUNCIL
@ NPC_UTHER_THE_LIGHTBRINGER_QUEST
@ NPC_DEATHBRINGER_SAURFANG
@ NPC_BLOOD_ORB_CONTROLLER
@ NPC_LADY_JAINA_PROUDMOORE_QUEST
@ NPC_MURADIN_BRONZEBEARD_QUEST
@ NPC_KOR_KRON_LIEUTENANT
@ NPC_SE_SKYBREAKER_MARINE
@ NPC_INFILTRATOR_MINCHAR
@ NPC_BLOOD_QUEEN_LANA_THEL
@ NPC_HIGHLORD_TIRION_FORDRING_LK
@ NPC_SE_HIGH_OVERLORD_SAURFANG
@ NPC_MINCHAR_BEAM_STALKER
@ NPC_LADY_SYLVANAS_WINDRUNNER_QUEST
@ NPC_PROFESSOR_PUTRICIDE
@ NPC_IGB_HIGH_OVERLORD_SAURFANG
@ NPC_WORLD_TRIGGER_INFINITE_AOI
@ NPC_SKYBREAKER_DECKHAND
@ NPC_ORGRIMS_HAMMER_CREW
@ NPC_YMIRJAR_FROSTBINDER
@ NPC_SE_MURADIN_BRONZEBEARD
@ NPC_VALITHRIA_DREAMWALKER_QUEST
@ NPC_TERENAS_MENETHIL_FROSTMOURNE_H
@ NPC_NERUBAR_BROODKEEPER
static constexpr Position UtherSpawnPos
@ SPAWN_GROUP_ALLIANCE_ROS
void AddSC_instance_icecrown_citadel()
static constexpr Position MuradinSpawnPos
static constexpr Position SylvanasSpawnPos
static constexpr DoorData doorData[]
static constexpr Position JainaSpawnPos
BossBoundaryData const boundaries
@ EVENT_PLAYERS_GUNSHIP_SPAWN
@ EVENT_SECOND_REMORSELESS_WINTER
@ EVENT_ENEMY_GUNSHIP_DESPAWN
@ EVENT_PLAYERS_GUNSHIP_COMBAT
@ EVENT_TELEPORT_TO_FROSTMOURNE
@ EVENT_ENEMY_GUNSHIP_COMBAT
@ EVENT_PLAYERS_GUNSHIP_SAURFANG
static constexpr DungeonEncounterData encounters[]
@ NPC_ALLIANCE_GUNSHIP_CANNON
@ NPC_HORDE_GUNSHIP_CANNON
@ NPC_YMIRJAR_DEATHBRINGER
constexpr float GetPositionX() const
constexpr float GetPositionY() const
float GetExactDist2d(const float x, const float y) const
bool CheckAchievementCriteriaMeet(uint32 criteria_id, Player const *, Unit const *, uint32) override
ObjectGuid TeleporterSindragosaGUID
std::array< GuidVector, 2 > nerubarBroodkeepersGUIDs
ObjectGuid LadyDeathwisperElevatorGUID
ObjectGuid FrozenThroneWarningGUID
std::unordered_set< ObjectGuid::LowType > FrostwyrmGUIDs
uint32 GetData(uint32 type) const override
void SetData(uint32 type, uint32 data) override
ObjectGuid DeathbringersCacheGUID
ObjectGuid TeleporterDeathBringerGUID
void OnCreatureRemove(Creature *creature) override
ObjectGuid SpinestalkerGUID
ObjectGuid LordMarrowgarGUID
ObjectGuid FrostwingSigilGUID
instance_icecrown_citadel_InstanceMapScript(InstanceMap *map)
void ProcessEvent(WorldObject *source, uint32 eventId, WorldObject *) override
ObjectGuid BloodCouncilGUIDs[3]
ObjectGuid TheLichKingGUID
uint32 GetGameObjectEntry(ObjectGuid::LowType, uint32 entry) override
void OnPlayerEnter(Player *player) override
bool CheckFrostwingHalls(uint32 bossId) const
ObjectGuid TeleporterLightsHammerGUID
ObjectGuid BloodQueenLanaThelCouncilGUID
ObjectGuid ArthasPrecipiceGUID
ObjectGuid PutricideCollisionGUID
bool SetBossState(uint32 type, EncounterState state) override
ObjectGuid TerenasMenethilGUID
ObjectGuid DeathbringerSaurfangEventGUID
ObjectGuid GunshipArmoryGUID
void SetData64(uint32 type, uint64 data) override
ObjectGuid ValithriaDreamwalkerGUID
ObjectGuid BloodCouncilControllerGUID
bool IsOrbWhispererEligible
ObjectGuid FrozenThroneWindGUID
uint32 UpperSpireTeleporterActiveState
ObjectGuid ValithriaLichKingGUID
ObjectGuid HighlordTirionFordringGUID
void AfterDataLoad() override
bool CheckLowerSpire(uint32 bossId) const
std::unordered_set< ObjectGuid::LowType > SpinestalkerTrash
ObjectGuid BloodQueenLanaThelGUID
uint32 ColdflameJetsState
void OnUnitDeath(Unit *unit) override
ObjectGuid TeleporterOratoryGUID
ObjectGuid ArthasPlatformGUID
ObjectGuid TeleporterUpperSpireGUID
ObjectGuid TheLichKingTeleportGUID
ObjectGuid ProfessorPutricideGUID
void OnPlayerLeave(Player *player) override
ObjectGuid CrokCaptainGUIDs[4]
bool CheckCrimsonHalls(uint32 bossId) const
ObjectGuid DeathbringerSaurfangGUID
std::unordered_set< ObjectGuid::LowType > RimefangTrash
ObjectGuid PutricidePipeGUIDs[2]
ObjectGuid LadyDeahtwhisperGUID
ObjectGuid TeleporterLichKingGUID
ObjectGuid FrozenThroneEdgeGUID
uint32 GetCreatureEntry(ObjectGuid::LowType, CreatureData const *data) override
ObjectGuid PillarsChainedGUID
void OnCreatureCreate(Creature *creature) override
void OnGameObjectCreate(GameObject *go) override
void CheckLichKingAvailability()
ObjectGuid PutricideTableGUID
void SetTeleporterState(GameObject *go, bool usable)
ObjectGuid GetGuidData(uint32 type) const override
ObjectGuid EnemyGunshipGUID
ObjectGuid FrozenBolvarGUID
ObjectGuid PutricideGateGUIDs[2]
ObjectGuid ValithriaTriggerGUID
ObjectGuid BloodwingSigilGUID
ObjectGuid SindragosaGUID
void OnGameObjectRemove(GameObject *go) override
bool CheckRequiredBosses(uint32 bossId, Player const *player=nullptr) const override
ObjectGuid PlagueSigilGUID
ObjectGuid SisterSvalnaGUID
ObjectGuid TeleporterRampartsGUID
bool CheckPlagueworks(uint32 bossId) const
ObjectGuid PillarsUnchainedGUID
ObjectGuid DeathbringerSaurfangDoorGUID
ObjectGuid CrokScourgebaneGUID
void Update(uint32 diff) override