44 { 1877.523f, 850.1788f, 45.36822f, 4.34587f },
45 { 1890.679f, 753.4202f, 48.771f, 1.675516f },
46 { 1936.09f, 803.1875f, 54.09715f, 3.054326f },
47 { 1858.243f, 770.2379f, 40.42146f, 0.9075712f },
48 { 1907.288f, 831.1111f, 40.22015f, 3.560472f }
54 { 1911.281f, 800.9722f, 39.91673f, 3.01942f },
55 { 1926.516f, 763.6616f, 52.35725f, 2.251475f },
56 { 1922.464f, 847.0699f, 48.50161f, 3.961897f }
62 { 1877.51f, 850.1042f, 44.65989f, 4.782202f },
63 { 1890.637f, 753.4705f, 48.72239f, 1.710423f },
64 { 1936.073f, 803.1979f, 53.37491f, 3.124139f },
65 { 1886.545f, 803.2014f, 40.40931f, 3.159046f },
66 { 1924.096f, 804.3707f, 54.29256f, 3.228859f }
74 { 1893.895f, 728.1261f, 47.75016f },
75 { 1892.997f, 738.4987f, 47.66684f },
76 { 1889.76f, 758.1089f, 47.66684f }
82 { 1871.456f, 871.0361f, 43.41524f },
83 { 1874.948f, 859.5452f, 43.33349f },
84 { 1877.245f, 851.967f, 43.3335f }
90 { 1853.752f, 862.4528f, 43.41614f },
91 { 1866.931f, 854.577f, 43.3335f },
92 { 1872.973f, 850.7875f, 43.3335f }
98 { 1892.418f, 872.2831f, 43.41563f },
99 { 1885.639f, 859.0245f, 43.3335f },
100 { 1882.432f, 852.2423f, 43.3335f }
106 { 1942.041f, 749.5228f, 30.95229f },
107 { 1930.571f, 762.9065f, 31.98814f },
108 { 1923.657f, 770.6718f, 34.07256f },
109 { 1910.631f, 784.4096f, 37.09015f },
110 { 1906.595f, 788.3828f, 37.99429f }
116 { 1844.557f, 748.7083f, 38.74205f },
117 { 1854.618f, 761.5295f, 38.65631f },
118 { 1862.17f, 773.2255f, 38.74879f }
124 { 1908.417f, 845.8502f, 38.71947f },
125 { 1905.557f, 841.3157f, 38.65529f },
126 { 1899.453f, 832.533f, 38.70752f }
132 { 1934.151f, 860.9463f, 47.29499f },
133 { 1927.085f, 852.1342f, 47.19214f },
134 { 1923.226f, 847.3297f, 47.15541f }
436 else if (data ==
DONE)
566 moragg->SetImmuneToAll(
false);
567 moragg->AI()->DoZoneInCombat(moragg);
599 guard->SetImmuneToAll(
false);
604 erekem->SetImmuneToAll(
false);
605 erekem->AI()->DoZoneInCombat(erekem);
627 ichoron->SetImmuneToAll(
false);
628 ichoron->AI()->DoZoneInCombat(ichoron);
649 lavanthor->SetImmuneToAll(
false);
650 lavanthor->AI()->DoZoneInCombat(lavanthor);
676 xevozz->SetImmuneToAll(
false);
677 xevozz->AI()->DoZoneInCombat(xevozz);
702 zuramat->SetImmuneToAll(
false);
703 zuramat->AI()->DoZoneInCombat(zuramat);
741 guard->GetMotionMaster()->MoveTargetedHome();
742 guard->SetImmuneToAll(
true);
818 Player* player = itr->GetSource();
899 sinclari->AI()->EnterEvadeMode();
921 cyanigosa->SetImmuneToAll(
false);
939 return wave && ((wave % 6) == 0);
std::chrono::seconds Seconds
Seconds shorthand typedef.
@ TEMPSUMMON_DEAD_DESPAWN
@ TEMPSUMMON_TIMED_DESPAWN
@ TEMPSUMMON_CORPSE_DESPAWN
uint32 urand(uint32 min, uint32 max)
@ EMOTE_ONESHOT_TALK_NO_SHEATHE
uint32 const EncounterCount
void Respawn(bool force=false)
void DespawnOrUnsummon(Milliseconds timeToDespawn=0s, Seconds forceRespawnTime=0s)
bool UpdateEntry(uint32 entry, CreatureData const *data=nullptr, bool updateLevel=true)
void SetImmuneToAll(bool apply) override
void SetBossNumber(uint32 number)
virtual bool SetBossState(uint32 id, EncounterState state)
virtual void OnCreatureCreate(Creature *creature) override
Creature * GetCreature(uint32 type)
void HandleGameObject(ObjectGuid guid, bool open, GameObject *go=nullptr)
virtual void OnCreatureRemove(Creature *creature) override
virtual ObjectGuid GetGuidData(uint32 type) const override
virtual void OnGameObjectRemove(GameObject *go) override
void UpdateEncounterStateForKilledCreature(uint32 creatureId, Unit *source)
EncounterState GetBossState(uint32 id) const
virtual void OnGameObjectCreate(GameObject *go) override
void LoadMinionData(MinionData const *data)
GameObject * GetGameObject(uint32 type)
bool _SkipCheckRequiredBosses(Player const *player=nullptr) const
void DoUpdateWorldState(uint32 worldstateId, uint32 worldstateValue)
void SetHeaders(std::string const &dataHeaders)
ObjectGuid GetObjectGuid(uint32 type) const
void LoadObjectData(ObjectData const *creatureData, ObjectData const *gameObjectData)
GameObject * GetGameObject(ObjectGuid const &guid)
TempSummon * SummonCreature(uint32 entry, Position const &pos, SummonPropertiesEntry const *properties=nullptr, uint32 duration=0, WorldObject *summoner=nullptr, uint32 spellId=0, uint32 vehId=0, ObjectGuid privateObjectOwner=ObjectGuid::Empty)
PlayerList const & GetPlayers() const
Creature * GetCreature(ObjectGuid const &guid)
static ObjectGuid GetGUID(Object const *o)
bool IsGameMaster() const
TaskContext & Repeat(std::chrono::duration< _Rep, _Period > const &duration)
TaskContext & Schedule(std::chrono::duration< _Rep, _Period > const &time, TaskScheduler::task_handler_t const &task)
TaskScheduler & CancelAll()
TaskScheduler & Schedule(std::chrono::duration< _Rep, _Period > const &time, task_handler_t const &task)
TaskScheduler & Async(std::function< void()> const &callable)
TaskScheduler & Update(success_t const &callback=EmptyCallback)
MotionMaster * GetMotionMaster()
TempSummon * SummonCreature(uint32 entry, Position const &pos, TempSummonType despawnType=TEMPSUMMON_MANUAL_DESPAWN, Milliseconds despawnTime=0s, uint32 vehId=0, uint32 spellId=0, ObjectGuid privateObjectOwner=ObjectGuid::Empty)
std::vector< WorldStateInfo > Worldstates
InstanceScript * GetInstanceScript(InstanceMap *map) const override
Position const CyanigosaJumpLocation
uint32 const PortalPositionsSize
ObjectData const gameObjectData[]
uint32 const IchoronPathSize
uint32 const MoraggPathSize
Position const SaboteurSpawnLocation
uint32 const EncouterPortalsCount
void AddSC_instance_violet_hold()
ObjectData const creatureData[]
uint32 const PortalIntroPositionsSize
uint32 const ErekemPathSize
Position const PortalElitePositions[PortalElitePositionsSize]
uint32 const ErekemGuardRightPathSize
uint32 const ErekemGuardLeftPathSize
MinionData const minionData[]
Position const ErekemGuardLeftPath[ErekemGuardLeftPathSize]
Position const IchoronPath[IchoronPathSize]
Position const CyanigosaSpawnLocation
Position const PortalPositions[PortalPositionsSize]
Position const ZuramatPath[ZuramatPathSize]
Position const PortalIntroPositions[PortalIntroPositionsSize]
Position const XevozzPath[XevozzPathSize]
Position const DefenseSystemLocation
uint32 const ZuramatPathSize
uint32 const PortalElitePositionsSize
Position const ErekemPath[ErekemPathSize]
uint32 const XevozzPathSize
uint32 const LavanthorPathSize
Position const MoraggPath[MoraggPathSize]
Position const ErekemGuardRightPath[ErekemGuardRightPathSize]
Position const LavanthorPath[LavanthorPathSize]
@ SPELL_ZURAMAT_COSMETIC_CHANNEL_OMNI
@ SPELL_MORAGG_EMOTE_ROAR
@ SPELL_CYANIGOSA_ARCANE_POWER_STATE
@ SPELL_LAVANTHOR_SPECIAL_UNARMED
@ SPELL_CYANIGOSA_TRANSFORM
void ResetBossEncounter(uint8 bossId)
void StartBossEncounter(uint8 bossId)
void OnGameObjectCreate(GameObject *go) override
void UpdateKilledBoss(Creature *boss)
ObjectGuid ErekemGuardGUIDs[ErekemGuardCount]
ObjectGuid ActivationCrystalGUIDs[ActivationCrystalCount]
static uint8 const ErekemGuardCount
void OnCreatureRemove(Creature *creature) override
bool SetBossState(uint32 type, EncounterState state) override
void OnCreatureCreate(Creature *creature) override
void WriteSaveDataMore(std::ostringstream &data) override
void FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates &packet) override
ObjectGuid GetGuidData(uint32 type) const override
void Update(uint32 diff) override
void ScheduleCyanigosaIntro()
void ReadSaveDataMore(std::istringstream &data) override
void HandleCells(uint8 bossId, bool open=true)
void SetData(uint32 type, uint32 data) override
void ProcessEvent(WorldObject *, uint32 eventId) override
static bool IsBossWave(uint8 wave)
instance_violet_hold_InstanceMapScript(InstanceMap *map)
bool CheckRequiredBosses(uint32 bossId, Player const *player=nullptr) const override
void OnGameObjectRemove(GameObject *go) override
static uint8 const ActivationCrystalCount
uint32 GetData(uint32 type) const override
@ DATA_EREKEM_LEFT_GUARD_CELL
@ DATA_START_BOSS_ENCOUNTER
@ DATA_EREKEM_RIGHT_GUARD_CELL
@ WORLD_STATE_VH_WAVE_COUNT
@ WORLD_STATE_VH_PRISON_STATE
#define VioletHoldScriptName
@ NPC_TELEPORTATION_PORTAL_INTRO
@ NPC_TELEPORTATION_PORTAL
@ NPC_TELEPORTATION_PORTAL_ELITE