46 { 1877.523f, 850.1788f, 45.36822f, 4.34587f },
47 { 1890.679f, 753.4202f, 48.771f, 1.675516f },
48 { 1936.09f, 803.1875f, 54.09715f, 3.054326f },
49 { 1858.243f, 770.2379f, 40.42146f, 0.9075712f },
50 { 1907.288f, 831.1111f, 40.22015f, 3.560472f }
56 { 1911.281f, 800.9722f, 39.91673f, 3.01942f },
57 { 1926.516f, 763.6616f, 52.35725f, 2.251475f },
58 { 1922.464f, 847.0699f, 48.50161f, 3.961897f }
64 { 1877.51f, 850.1042f, 44.65989f, 4.782202f },
65 { 1890.637f, 753.4705f, 48.72239f, 1.710423f },
66 { 1936.073f, 803.1979f, 53.37491f, 3.124139f },
67 { 1886.545f, 803.2014f, 40.40931f, 3.159046f },
68 { 1924.096f, 804.3707f, 54.29256f, 3.228859f }
77 { 0, 1893.895f, 728.1261f, 47.75016f },
78 { 1, 1892.997f, 738.4987f, 47.66684f },
79 { 2, 1889.76f, 758.1089f, 47.66684f }
88 { 0, 1871.456f, 871.0361f, 43.41524f },
89 { 1, 1874.948f, 859.5452f, 43.33349f },
90 { 2, 1877.245f, 851.967f, 43.3335f, 4.921828f }
99 { 0, 1853.752f, 862.4528f, 43.41614f },
100 { 1, 1866.931f, 854.577f, 43.3335f },
101 { 2, 1872.973f, 850.7875f, 43.3335f }
110 { 0, 1892.418f, 872.2831f, 43.41563f },
111 { 1, 1885.639f, 859.0245f, 43.3335f },
112 { 2, 1882.432f, 852.2423f, 43.3335f }
121 { 0, 1942.041f, 749.5228f, 30.95229f },
122 { 1, 1930.571f, 762.9065f, 31.98814f },
123 { 2, 1923.657f, 770.6718f, 34.07256f },
124 { 3, 1910.631f, 784.4096f, 37.09015f },
125 { 4, 1906.595f, 788.3828f, 37.99429f }
134 { 0, 1844.557f, 748.7083f, 38.74205f },
135 { 1, 1854.618f, 761.5295f, 38.65631f },
136 { 2, 1862.17f, 773.2255f, 38.74879f }
145 { 0, 1908.417f, 845.8502f, 38.71947f },
146 { 1, 1905.557f, 841.3157f, 38.65529f },
147 { 2, 1899.453f, 832.533f, 38.70752f }
156 { 0, 1934.151f, 860.9463f, 47.29499f },
157 { 1, 1927.085f, 852.1342f, 47.19214f },
158 { 2, 1923.226f, 847.3297f, 47.15541f }
457 else if (data ==
DONE)
581 moragg->GetMotionMaster()->MovePath(
MoraggPath,
false);
587 moragg->SetImmuneToAll(
false);
588 moragg->AI()->DoZoneInCombat(moragg);
603 erekem->GetMotionMaster()->MovePath(
ErekemPath,
false);
620 guard->SetImmuneToAll(
false);
625 erekem->SetImmuneToAll(
false);
626 erekem->AI()->DoZoneInCombat(erekem);
642 ichoron->GetMotionMaster()->MovePath(
IchoronPath,
false);
648 ichoron->SetImmuneToAll(
false);
649 ichoron->AI()->DoZoneInCombat(ichoron);
664 lavanthor->GetMotionMaster()->MovePath(
LavanthorPath,
false);
670 lavanthor->SetImmuneToAll(
false);
671 lavanthor->AI()->DoZoneInCombat(lavanthor);
691 xevozz->GetMotionMaster()->MovePath(
XevozzPath,
false);
697 xevozz->SetImmuneToAll(
false);
698 xevozz->AI()->DoZoneInCombat(xevozz);
717 zuramat->GetMotionMaster()->MovePath(
ZuramatPath,
false);
723 zuramat->SetImmuneToAll(
false);
724 zuramat->AI()->DoZoneInCombat(zuramat);
762 guard->GetMotionMaster()->MoveTargetedHome();
763 guard->SetImmuneToAll(
true);
828 Player* player = itr->GetSource();
909 sinclari->AI()->EnterEvadeMode();
931 cyanigosa->SetImmuneToAll(
false);
949 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)
if(posix_memalign(&__mallocedMemory, __align, __size)) return NULL
@ 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)
void LoadDungeonEncounterData(T const &encounters)
void DoUpdateWorldState(int32 worldStateId, int32 value)
virtual void OnCreatureRemove(Creature *creature) override
virtual ObjectGuid GetGuidData(uint32 type) const override
virtual void OnGameObjectRemove(GameObject *go) override
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 SetHeaders(std::string const &dataHeaders)
ObjectGuid GetObjectGuid(uint32 type) const
void LoadObjectData(ObjectData const *creatureData, ObjectData const *gameObjectData)
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)
PlayerList const & GetPlayers() const
Creature * GetCreature(ObjectGuid const &guid)
static ObjectGuid GetGUID(Object const *o)
bool IsGameMaster() const
TaskContext & Schedule(std::chrono::duration< Rep, Period > time, TaskScheduler::task_handler_t task)
TaskScheduler & CancelAll()
TaskScheduler & Schedule(std::chrono::duration< Rep, Period > time, task_handler_t task)
TaskScheduler & Async(std::function< void()> callable)
TaskScheduler & Update(success_t const &callback=nullptr)
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)
InstanceScript * GetInstanceScript(InstanceMap *map) const override
Position const CyanigosaJumpLocation
uint32 const PortalPositionsSize
ObjectData const gameObjectData[]
Position const SaboteurSpawnLocation
uint32 const EncouterPortalsCount
void AddSC_instance_violet_hold()
WaypointPath const ZuramatPath
ObjectData const creatureData[]
uint32 const PortalIntroPositionsSize
Position const PortalElitePositions[PortalElitePositionsSize]
@ SPELL_ZURAMAT_COSMETIC_CHANNEL_OMNI
@ SPELL_MORAGG_EMOTE_ROAR
@ SPELL_CYANIGOSA_ARCANE_POWER_STATE
@ SPELL_LAVANTHOR_SPECIAL_UNARMED
@ SPELL_CYANIGOSA_TRANSFORM
WaypointPath const ErekemGuardLeftPath
MinionData const minionData[]
Position const CyanigosaSpawnLocation
Position const PortalPositions[PortalPositionsSize]
Position const PortalIntroPositions[PortalIntroPositionsSize]
WaypointPath const XevozzPath
WaypointPath const ErekemGuardRightPath
Position const DefenseSystemLocation
uint32 const PortalElitePositionsSize
WaypointPath const LavanthorPath
WaypointPath const ErekemPath
WaypointPath const MoraggPath
DungeonEncounterData const encounters[]
WaypointPath const IchoronPath
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
PersistentInstanceScriptValue< uint32 > SecondBossId
bool SetBossState(uint32 type, EncounterState state) override
PersistentInstanceScriptValue< uint32 > FirstBossId
void OnCreatureCreate(Creature *creature) override
ObjectGuid GetGuidData(uint32 type) const override
void Update(uint32 diff) override
void ScheduleCyanigosaIntro()
void HandleCells(uint8 bossId, bool open=true)
void SetData(uint32 type, uint32 data) override
static bool IsBossWave(uint8 wave)
void ProcessEvent(WorldObject *, uint32 eventId, WorldObject *) override
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