45 { 1877.523f, 850.1788f, 45.36822f, 4.34587f },
46 { 1890.679f, 753.4202f, 48.771f, 1.675516f },
47 { 1936.09f, 803.1875f, 54.09715f, 3.054326f },
48 { 1858.243f, 770.2379f, 40.42146f, 0.9075712f },
49 { 1907.288f, 831.1111f, 40.22015f, 3.560472f }
55 { 1911.281f, 800.9722f, 39.91673f, 3.01942f },
56 { 1926.516f, 763.6616f, 52.35725f, 2.251475f },
57 { 1922.464f, 847.0699f, 48.50161f, 3.961897f }
63 { 1877.51f, 850.1042f, 44.65989f, 4.782202f },
64 { 1890.637f, 753.4705f, 48.72239f, 1.710423f },
65 { 1936.073f, 803.1979f, 53.37491f, 3.124139f },
66 { 1886.545f, 803.2014f, 40.40931f, 3.159046f },
67 { 1924.096f, 804.3707f, 54.29256f, 3.228859f }
75 { 1893.895f, 728.1261f, 47.75016f },
76 { 1892.997f, 738.4987f, 47.66684f },
77 { 1889.76f, 758.1089f, 47.66684f }
83 { 1871.456f, 871.0361f, 43.41524f },
84 { 1874.948f, 859.5452f, 43.33349f },
85 { 1877.245f, 851.967f, 43.3335f }
91 { 1853.752f, 862.4528f, 43.41614f },
92 { 1866.931f, 854.577f, 43.3335f },
93 { 1872.973f, 850.7875f, 43.3335f }
99 { 1892.418f, 872.2831f, 43.41563f },
100 { 1885.639f, 859.0245f, 43.3335f },
101 { 1882.432f, 852.2423f, 43.3335f }
107 { 1942.041f, 749.5228f, 30.95229f },
108 { 1930.571f, 762.9065f, 31.98814f },
109 { 1923.657f, 770.6718f, 34.07256f },
110 { 1910.631f, 784.4096f, 37.09015f },
111 { 1906.595f, 788.3828f, 37.99429f }
117 { 1844.557f, 748.7083f, 38.74205f },
118 { 1854.618f, 761.5295f, 38.65631f },
119 { 1862.17f, 773.2255f, 38.74879f }
125 { 1908.417f, 845.8502f, 38.71947f },
126 { 1905.557f, 841.3157f, 38.65529f },
127 { 1899.453f, 832.533f, 38.70752f }
133 { 1934.151f, 860.9463f, 47.29499f },
134 { 1927.085f, 852.1342f, 47.19214f },
135 { 1923.226f, 847.3297f, 47.15541f }
432 else if (data ==
DONE)
562 moragg->SetImmuneToAll(
false);
563 moragg->AI()->DoZoneInCombat(moragg);
595 guard->SetImmuneToAll(
false);
600 erekem->SetImmuneToAll(
false);
601 erekem->AI()->DoZoneInCombat(erekem);
623 ichoron->SetImmuneToAll(
false);
624 ichoron->AI()->DoZoneInCombat(ichoron);
645 lavanthor->SetImmuneToAll(
false);
646 lavanthor->AI()->DoZoneInCombat(lavanthor);
672 xevozz->SetImmuneToAll(
false);
673 xevozz->AI()->DoZoneInCombat(xevozz);
698 zuramat->SetImmuneToAll(
false);
699 zuramat->AI()->DoZoneInCombat(zuramat);
737 guard->GetMotionMaster()->MoveTargetedHome();
738 guard->SetImmuneToAll(
true);
803 Player* player = itr->GetSource();
884 sinclari->AI()->EnterEvadeMode();
906 cyanigosa->SetImmuneToAll(
false);
924 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[]
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
@ SPELL_ZURAMAT_COSMETIC_CHANNEL_OMNI
@ SPELL_MORAGG_EMOTE_ROAR
@ SPELL_CYANIGOSA_ARCANE_POWER_STATE
@ SPELL_LAVANTHOR_SPECIAL_UNARMED
@ SPELL_CYANIGOSA_TRANSFORM
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
DungeonEncounterData const encounters[]
Position const MoraggPath[MoraggPathSize]
Position const ErekemGuardRightPath[ErekemGuardRightPathSize]
Position const LavanthorPath[LavanthorPathSize]
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