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

Public Member Functions

 instance_trial_of_the_crusader_InstanceMapScript (Map *pMap)
 
void SpawnAnubArak ()
 
bool IsValidDedicatedInsanityItem (ItemTemplate const *item)
 
void DoCheckDedicatedInsanity ()
 
void OnUnitDeath (Unit *u) override
 
void Initialize () override
 
bool IsEncounterInProgress () const override
 
void OnCreatureCreate (Creature *creature) override
 
void OnGameObjectCreate (GameObject *go) override
 
void SetData (uint32 type, uint32 data) override
 
uint32 GetData (uint32 type) const override
 
ObjectGuid GetGuidData (uint32 type) const override
 
void Update (uint32 diff) override
 
void OnPlayerEnter (Player *plr) override
 
bool DoNeedCleanup (Player *ignoredPlayer=nullptr)
 
void InstanceCleanup (bool fromFailed=false)
 
void ReadSaveDataMore (std::istringstream &data) override
 
void WriteSaveDataMore (std::ostringstream &data) override
 
bool CheckAchievementCriteriaMeet (uint32 criteria_id, Player const *, Unit const *, uint32) override
 
- 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 void Update (uint32)
 
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
 
CreatureGetCreature (uint32 type)
 
GameObjectGetGameObject (uint32 type)
 
virtual void OnPlayerEnter (Player *)
 
virtual void OnPlayerAreaUpdate (Player *, uint32, uint32)
 
void HandleGameObject (ObjectGuid guid, bool open, GameObject *go=nullptr)
 
void DoUseDoorOrButton (ObjectGuid guid, uint32 withRestoreTime=0, bool useAlternativeState=false)
 
void DoRespawnGameObject (ObjectGuid guid, uint32 timeToDespawn=MINUTE)
 
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 ()
 
virtual bool SetBossState (uint32 id, EncounterState state)
 
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)
 
virtual bool CheckAchievementCriteriaMeet (uint32, Player const *, Unit const *=nullptr, uint32=0)
 
virtual bool CheckRequiredBosses (uint32, Player const *=nullptr) const
 
void SetCompletedEncountersMask (uint32 newMask, bool save)
 
uint32 GetCompletedEncounterMask () const
 
void SendEncounterUnit (uint32 type, Unit *unit=nullptr, uint8 param1=0, uint8 param2=0)
 
virtual void FillInitialWorldStates (WorldPacket &)
 
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)
 
- Public Member Functions inherited from ZoneScript
 ZoneScript ()
 
virtual ~ZoneScript ()
 
virtual uint32 GetCreatureEntry (ObjectGuid::LowType, CreatureData const *data)
 
virtual uint32 GetGameObjectEntry (ObjectGuid::LowType, uint32 entry)
 
virtual void OnCreatureCreate (Creature *)
 
virtual void OnCreatureRemove (Creature *)
 
virtual void OnGameObjectCreate (GameObject *)
 
virtual void OnGameObjectRemove (GameObject *)
 
virtual void OnUnitDeath (Unit *)
 
virtual void OnCreatureEvade (Creature *)
 
virtual ObjectGuid GetGuidData (uint32) const
 
virtual void SetGuidData (uint32, ObjectGuid)
 
virtual uint64 GetData64 (uint32) const
 
virtual void SetData64 (uint32, uint64)
 
virtual uint32 GetData (uint32) const
 
virtual void SetData (uint32, uint32)
 
virtual void ProcessEvent (WorldObject *, uint32)
 

Public Attributes

bool CLEANED
 
uint32 EncounterStatus
 
uint32 InstanceProgress
 
uint32 AttemptsLeft
 
TeamId TeamIdInInstance
 
uint8 Counter
 
uint8 northrendBeastsMask
 
uint32 AchievementTimer
 
bool bDedicatedInsanity
 
bool bSwitcher
 
bool bNooneDied
 
std::string str_data
 
EventMap events
 
ObjectGuid NPC_BarrettGUID
 
ObjectGuid NPC_TirionGUID
 
ObjectGuid NPC_FizzlebangGUID
 
ObjectGuid NPC_GarroshGUID
 
ObjectGuid NPC_VarianGUID
 
ObjectGuid NPC_GormokGUID
 
ObjectGuid NPC_DreadscaleGUID
 
ObjectGuid NPC_AcidmawGUID
 
ObjectGuid NPC_IcehowlGUID
 
ObjectGuid NPC_JaraxxusGUID
 
GuidVector NPC_ChampionGUIDs
 
ObjectGuid NPC_LightbaneGUID
 
ObjectGuid NPC_DarkbaneGUID
 
ObjectGuid NPC_LichKingGUID
 
ObjectGuid NPC_AnubarakGUID
 
ObjectGuid NPC_PurpleGroundGUID
 
ObjectGuid NPC_PortalGUID
 
ObjectGuid GO_MainGateGUID
 
ObjectGuid GO_EnterGateGUID
 
ObjectGuid GO_WebDoorGUID
 
ObjectGuid GO_FloorGUID
 
- Public Attributes inherited from InstanceScript
Mapinstance
 
TaskScheduler scheduler
 

Additional Inherited Members

- Static Public Member Functions inherited from InstanceScript
static std::string GetBossStateName (uint8 state)
 
- 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 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)
 
virtual void ReadSaveDataMore (std::istringstream &)
 
void WriteSaveDataHeaders (std::ostringstream &data)
 
void WriteSaveDataBossStates (std::ostringstream &data)
 
void WritePersistentData (std::ostringstream &data)
 
virtual void WriteSaveDataMore (std::ostringstream &)
 

Detailed Description

Constructor & Destructor Documentation

◆ instance_trial_of_the_crusader_InstanceMapScript()

instance_trial_of_the_crusader::instance_trial_of_the_crusader_InstanceMapScript::instance_trial_of_the_crusader_InstanceMapScript ( Map pMap)
inline
35 : InstanceScript(pMap)
36 {
38 Initialize();
39 }
#define DataHeader
Definition: blackrock_depths.h:23
Definition: InstanceScript.h:141
void SetHeaders(std::string const &dataHeaders)
Definition: InstanceScript.cpp:137
void Initialize() override
Definition: instance_trial_of_the_crusader.cpp:166

References DataHeader, Initialize(), and InstanceScript::SetHeaders().

Member Function Documentation

◆ CheckAchievementCriteriaMeet()

bool instance_trial_of_the_crusader::instance_trial_of_the_crusader_InstanceMapScript::CheckAchievementCriteriaMeet ( uint32  criteria_id,
Player const *  ,
Unit const *  ,
uint32   
)
inlineoverridevirtual

Reimplemented from InstanceScript.

1625 {
1626 switch(criteria_id)
1627 {
1631 {
1632 std::list<Creature*> L;
1633 uint8 count = 0;
1634 c->GetCreaturesWithEntryInRange(L, 200.0f, 34800); // find all snobolds
1635 for( std::list<Creature*>::const_iterator itr = L.begin(); itr != L.end(); ++itr )
1636 if( (*itr)->GetVehicle() )
1637 ++count;
1638 return (count >= 2);
1639 }
1640 break;
1644 {
1645 std::list<Creature*> L;
1646 uint8 count = 0;
1647 c->GetCreaturesWithEntryInRange(L, 200.0f, 34800); // find all snobolds
1648 for( std::list<Creature*>::const_iterator itr = L.begin(); itr != L.end(); ++itr )
1649 if( (*itr)->GetVehicle() )
1650 ++count;
1651 return (count >= 4);
1652 }
1653 break;
1659 {
1660 std::list<Creature*> L;
1661 uint8 count = 0;
1662 c->GetCreaturesWithEntryInRange(L, 200.0f, 34826); // find all mistress of pain
1663 for( std::list<Creature*>::const_iterator itr = L.begin(); itr != L.end(); ++itr )
1664 if( (*itr)->IsAlive() )
1665 ++count;
1666 return (count >= 2);
1667 }
1668 break;
1671 return AttemptsLeft >= 25;
1674 return AttemptsLeft >= 45;
1678 return AttemptsLeft == 50;
1681 return AttemptsLeft == 50 && bNooneDied;
1683 return AttemptsLeft == 50 && bDedicatedInsanity;
1684 }
1685 return false;
1686 }
std::uint8_t uint8
Definition: Define.h:110
@ ACHIEV_CRITERIA_THREE_SIXTY_PAIN_SPIKE_25_H
Definition: trial_of_the_crusader.h:368
@ ACHIEV_CRITERIA_A_TRIBUTE_TO_SKILL_10_PLAYER
Definition: trial_of_the_crusader.h:370
@ ACHIEV_CRITERIA_UPPER_BACK_PAIN_25_H
Definition: trial_of_the_crusader.h:364
@ ACHIEV_CRITERIA_A_TRIBUTE_TO_INSANITY_10_PLAYER
Definition: trial_of_the_crusader.h:374
@ ACHIEV_CRITERIA_A_TRIBUTE_TO_INSANITY_25_PLAYER
Definition: trial_of_the_crusader.h:375
@ ACHIEV_CRITERIA_A_TRIBUTE_TO_DEDICATED_INSANITY
Definition: trial_of_the_crusader.h:378
@ ACHIEV_CRITERIA_A_TRIBUTE_TO_IMMORTALITY_ALLIANCE
Definition: trial_of_the_crusader.h:377
@ ACHIEV_CRITERIA_REALM_FIRST_GRAND_CRUSADER
Definition: trial_of_the_crusader.h:379
@ ACHIEV_CRITERIA_A_TRIBUTE_TO_SKILL_25_PLAYER
Definition: trial_of_the_crusader.h:371
@ ACHIEV_CRITERIA_A_TRIBUTE_TO_MAD_SKILL_25_PLAYER
Definition: trial_of_the_crusader.h:373
@ ACHIEV_CRITERIA_A_TRIBUTE_TO_MAD_SKILL_10_PLAYER
Definition: trial_of_the_crusader.h:372
@ ACHIEV_CRITERIA_THREE_SIXTY_PAIN_SPIKE_25_N
Definition: trial_of_the_crusader.h:367
@ ACHIEV_CRITERIA_UPPER_BACK_PAIN_10_N
Definition: trial_of_the_crusader.h:361
@ ACHIEV_CRITERIA_THREE_SIXTY_PAIN_SPIKE_10_H
Definition: trial_of_the_crusader.h:366
@ ACHIEV_CRITERIA_THREE_SIXTY_PAIN_SPIKE_10_N
Definition: trial_of_the_crusader.h:365
@ ACHIEV_CRITERIA_UPPER_BACK_PAIN_25_N
Definition: trial_of_the_crusader.h:363
@ ACHIEV_CRITERIA_UPPER_BACK_PAIN_10_H
Definition: trial_of_the_crusader.h:362
@ ACHIEV_CRITERIA_A_TRIBUTE_TO_IMMORTALITY_HORDE
Definition: trial_of_the_crusader.h:376
Definition: Creature.h:46
Map * instance
Definition: InstanceScript.h:147
Creature * GetCreature(ObjectGuid const guid)
Definition: Map.cpp:3307
bool bNooneDied
Definition: instance_trial_of_the_crusader.cpp:51
ObjectGuid NPC_BarrettGUID
Definition: instance_trial_of_the_crusader.cpp:55
uint32 AttemptsLeft
Definition: instance_trial_of_the_crusader.cpp:44
bool bDedicatedInsanity
Definition: instance_trial_of_the_crusader.cpp:49

References ACHIEV_CRITERIA_A_TRIBUTE_TO_DEDICATED_INSANITY, ACHIEV_CRITERIA_A_TRIBUTE_TO_IMMORTALITY_ALLIANCE, ACHIEV_CRITERIA_A_TRIBUTE_TO_IMMORTALITY_HORDE, ACHIEV_CRITERIA_A_TRIBUTE_TO_INSANITY_10_PLAYER, ACHIEV_CRITERIA_A_TRIBUTE_TO_INSANITY_25_PLAYER, ACHIEV_CRITERIA_A_TRIBUTE_TO_MAD_SKILL_10_PLAYER, ACHIEV_CRITERIA_A_TRIBUTE_TO_MAD_SKILL_25_PLAYER, ACHIEV_CRITERIA_A_TRIBUTE_TO_SKILL_10_PLAYER, ACHIEV_CRITERIA_A_TRIBUTE_TO_SKILL_25_PLAYER, ACHIEV_CRITERIA_REALM_FIRST_GRAND_CRUSADER, ACHIEV_CRITERIA_THREE_SIXTY_PAIN_SPIKE_10_H, ACHIEV_CRITERIA_THREE_SIXTY_PAIN_SPIKE_10_N, ACHIEV_CRITERIA_THREE_SIXTY_PAIN_SPIKE_25_H, ACHIEV_CRITERIA_THREE_SIXTY_PAIN_SPIKE_25_N, ACHIEV_CRITERIA_UPPER_BACK_PAIN_10_H, ACHIEV_CRITERIA_UPPER_BACK_PAIN_10_N, ACHIEV_CRITERIA_UPPER_BACK_PAIN_25_H, ACHIEV_CRITERIA_UPPER_BACK_PAIN_25_N, AttemptsLeft, bDedicatedInsanity, bNooneDied, Map::GetCreature(), InstanceScript::instance, and NPC_BarrettGUID.

◆ DoCheckDedicatedInsanity()

void instance_trial_of_the_crusader::instance_trial_of_the_crusader_InstanceMapScript::DoCheckDedicatedInsanity ( )
inline
131 {
132 if (!bDedicatedInsanity || AttemptsLeft < 50 || instance->GetDifficulty() != RAID_DIFFICULTY_10MAN_HEROIC)
133 return;
134
135 if (validDedicatedInsanityItems.empty())
136 {
137 for (uint32 i = 0; i < dIIc; ++i)
139 }
140
141 Map::PlayerList const& pl = instance->GetPlayers();
142 for (Map::PlayerList::const_iterator itr = pl.begin(); itr != pl.end(); ++itr)
143 if (Player* plr = itr->GetSource())
144 if (!plr->IsGameMaster() && plr->IsInCombat() /*performance*/)
145 {
146 for (uint8 i = EQUIPMENT_SLOT_START; i < EQUIPMENT_SLOT_END; ++i) // loop through equipped items
147 if (Item* item = plr->GetItemByPos(INVENTORY_SLOT_BAG_0, i))
148 if (!IsValidDedicatedInsanityItem(item->GetTemplate()))
149 {
150 bDedicatedInsanity = false;
151 SaveToDB();
152 return;
153 }
154 }
155 }
std::uint32_t uint32
Definition: Define.h:108
@ EQUIPMENT_SLOT_END
Definition: Player.h:695
@ EQUIPMENT_SLOT_START
Definition: Player.h:675
#define INVENTORY_SLOT_BAG_0
Definition: Player.h:671
std::map< uint32, bool > validDedicatedInsanityItems
Definition: instance_trial_of_the_crusader.cpp:26
const uint32 dIIc
Definition: trial_of_the_crusader.h:388
const uint32 dedicatedInsanityItems[405]
Definition: trial_of_the_crusader.h:389
@ RAID_DIFFICULTY_10MAN_HEROIC
Definition: DBCEnums.h:283
Definition: LinkedList.h:139
Definition: Item.h:214
Definition: Player.h:1056
void SaveToDB()
Definition: InstanceScript.cpp:40
PlayerList const & GetPlayers() const
Definition: Map.h:485
Definition: MapRefMgr.h:26
iterator begin()
Definition: MapRefMgr.h:36
iterator end()
Definition: MapRefMgr.h:37
bool IsValidDedicatedInsanityItem(ItemTemplate const *item)
Definition: instance_trial_of_the_crusader.cpp:114

References bDedicatedInsanity, MapRefMgr::begin(), dedicatedInsanityItems, dIIc, MapRefMgr::end(), EQUIPMENT_SLOT_END, EQUIPMENT_SLOT_START, Map::GetPlayers(), InstanceScript::instance, INVENTORY_SLOT_BAG_0, IsValidDedicatedInsanityItem(), RAID_DIFFICULTY_10MAN_HEROIC, InstanceScript::SaveToDB(), and validDedicatedInsanityItems.

Referenced by Update().

◆ DoNeedCleanup()

bool instance_trial_of_the_crusader::instance_trial_of_the_crusader_InstanceMapScript::DoNeedCleanup ( Player ignoredPlayer = nullptr)
inline
1422 {
1423 uint8 aliveCount = 0;
1424 for (auto const& itr: instance->GetPlayers())
1425 {
1426 if (Player* plr = itr.GetSource())
1427 {
1428 if (plr != ignoredPlayer && plr->IsAlive() && !plr->IsGameMaster())
1429 {
1430 ++aliveCount;
1431 }
1432 }
1433 }
1434
1435 bool need = aliveCount == 0;
1436 if (!need && CLEANED)
1437 {
1438 CLEANED = false;
1439 }
1440
1441 return need;
1442 }
bool CLEANED
Definition: instance_trial_of_the_crusader.cpp:41

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

Referenced by OnPlayerEnter(), and Update().

◆ GetData()

uint32 instance_trial_of_the_crusader::instance_trial_of_the_crusader_InstanceMapScript::GetData ( uint32  type) const
inlineoverridevirtual

Reimplemented from ZoneScript.

531 {
532 switch( type )
533 {
535 return InstanceProgress;
536 }
537 return 0;
538 }
@ TYPE_INSTANCE_PROGRESS
Definition: trial_of_the_crusader.h:32
uint32 InstanceProgress
Definition: instance_trial_of_the_crusader.cpp:43

References InstanceProgress, and TYPE_INSTANCE_PROGRESS.

◆ GetGuidData()

ObjectGuid instance_trial_of_the_crusader::instance_trial_of_the_crusader_InstanceMapScript::GetGuidData ( uint32  type) const
inlineoverridevirtual

Reimplemented from InstanceScript.

541 {
542 switch( type )
543 {
544 case TYPE_GORMOK:
545 return NPC_GormokGUID;
546 case TYPE_DREADSCALE:
547 return NPC_DreadscaleGUID;
548 case TYPE_ACIDMAW:
549 return NPC_AcidmawGUID;
550 case NPC_DARKBANE:
551 return NPC_DarkbaneGUID;
552 case NPC_LIGHTBANE:
553 return NPC_LightbaneGUID;
554 case TYPE_ANUBARAK:
555 return NPC_AnubarakGUID;
556 }
557
558 return ObjectGuid::Empty;
559 }
@ NPC_LIGHTBANE
Definition: trial_of_the_crusader.h:185
@ NPC_DARKBANE
Definition: trial_of_the_crusader.h:186
@ TYPE_DREADSCALE
Definition: trial_of_the_crusader.h:38
@ TYPE_ACIDMAW
Definition: trial_of_the_crusader.h:39
@ TYPE_ANUBARAK
Definition: trial_of_the_crusader.h:45
@ TYPE_GORMOK
Definition: trial_of_the_crusader.h:36
static ObjectGuid const Empty
Definition: ObjectGuid.h:122
ObjectGuid NPC_DreadscaleGUID
Definition: instance_trial_of_the_crusader.cpp:62
ObjectGuid NPC_LightbaneGUID
Definition: instance_trial_of_the_crusader.cpp:67
ObjectGuid NPC_AnubarakGUID
Definition: instance_trial_of_the_crusader.cpp:70
ObjectGuid NPC_AcidmawGUID
Definition: instance_trial_of_the_crusader.cpp:63
ObjectGuid NPC_GormokGUID
Definition: instance_trial_of_the_crusader.cpp:61
ObjectGuid NPC_DarkbaneGUID
Definition: instance_trial_of_the_crusader.cpp:68

References ObjectGuid::Empty, NPC_AcidmawGUID, NPC_AnubarakGUID, NPC_DARKBANE, NPC_DarkbaneGUID, NPC_DreadscaleGUID, NPC_GormokGUID, NPC_LIGHTBANE, NPC_LightbaneGUID, TYPE_ACIDMAW, TYPE_ANUBARAK, TYPE_DREADSCALE, and TYPE_GORMOK.

◆ Initialize()

void instance_trial_of_the_crusader::instance_trial_of_the_crusader_InstanceMapScript::Initialize ( )
inlineoverridevirtual

Reimplemented from InstanceScript.

167 {
168 CLEANED = false;
171 AttemptsLeft = 50;
173 Counter = 0;
176 bDedicatedInsanity = true;
177 bSwitcher = false;
178 bNooneDied = true;
179 events.Reset();
180 events.RescheduleEvent(EVENT_CHECK_PLAYERS, 0);
181
182 NPC_ChampionGUIDs.clear();
183 }
@ NOT_STARTED
Definition: InstanceScript.h:57
@ EVENT_CHECK_PLAYERS
Definition: boss_kiljaeden.cpp:118
events
Definition: boss_sartura.cpp:43
@ INSTANCE_PROGRESS_INITIAL
Definition: trial_of_the_champion.h:53
@ TEAM_NEUTRAL
Definition: SharedDefines.h:762
bool bSwitcher
Definition: instance_trial_of_the_crusader.cpp:50
TeamId TeamIdInInstance
Definition: instance_trial_of_the_crusader.cpp:45
uint8 northrendBeastsMask
Definition: instance_trial_of_the_crusader.cpp:47
uint32 AchievementTimer
Definition: instance_trial_of_the_crusader.cpp:48
GuidVector NPC_ChampionGUIDs
Definition: instance_trial_of_the_crusader.cpp:66
uint8 Counter
Definition: instance_trial_of_the_crusader.cpp:46
uint32 EncounterStatus
Definition: instance_trial_of_the_crusader.cpp:42

References AchievementTimer, AttemptsLeft, bDedicatedInsanity, bNooneDied, bSwitcher, CLEANED, Counter, EncounterStatus, EVENT_CHECK_PLAYERS, INSTANCE_PROGRESS_INITIAL, InstanceProgress, northrendBeastsMask, NOT_STARTED, NPC_ChampionGUIDs, TEAM_NEUTRAL, and TeamIdInInstance.

Referenced by instance_trial_of_the_crusader_InstanceMapScript().

◆ InstanceCleanup()

void instance_trial_of_the_crusader::instance_trial_of_the_crusader_InstanceMapScript::InstanceCleanup ( bool  fromFailed = false)
inline
1445 {
1446 if( CLEANED )
1447 return;
1448 CLEANED = true;
1449
1450 switch( InstanceProgress )
1451 {
1454 c->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP);
1455 break;
1458 c->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP);
1460 {
1461 c->AI()->DoAction(-1); // despawn summons
1462 c->DespawnOrUnsummon();
1463 }
1466 c->DespawnOrUnsummon();
1469 c->DespawnOrUnsummon();
1472 c->DespawnOrUnsummon();
1475 break;
1478 c->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP);
1480 c->DespawnOrUnsummon();
1483 c->DespawnOrUnsummon();
1486 c->DespawnOrUnsummon();
1489 c->DespawnOrUnsummon();
1491 break;
1494 c->DespawnOrUnsummon();
1496 {
1497 c->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP);
1499 {
1500 jaraxxus->CastSpell(jaraxxus, 67924, true);
1501 jaraxxus->SetReactState(REACT_AGGRESSIVE);
1502 jaraxxus->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
1503 jaraxxus->RemoveUnitMovementFlag(MOVEMENTFLAG_WALKING);
1504 }
1505 }
1506 break;
1509 c->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP);
1510 for (ObjectGuid const& guid : NPC_ChampionGUIDs)
1511 if (Creature* c = instance->GetCreature(guid))
1512 c->DespawnOrUnsummon();
1513 NPC_ChampionGUIDs.clear();
1514 break;
1517 c->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP);
1519 {
1520 c->AI()->DoAction(-1);
1521 c->DespawnOrUnsummon();
1522 }
1525 {
1526 c->AI()->DoAction(-1);
1527 c->DespawnOrUnsummon();
1528 }
1530 break;
1533 /*if( GameObject* floor = instance->GetGameObject(GO_FloorGUID) )
1534 floor->SetDestructibleState(GO_DESTRUCTIBLE_REBUILDING, nullptr, true);*/
1536 {
1538 {
1539 c->SetVisible(false);
1540 c->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP);
1541 }
1542 else
1543 {
1544 c->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP);
1545 c->SetVisible(true);
1546 c->SetFacingTo(c->GetOrientation());
1547 }
1548 if (Creature* t = c->FindNearestCreature(NPC_WORLD_TRIGGER, 500.0f, true))
1549 t->DespawnOrUnsummon();
1550 }
1552 c->DespawnOrUnsummon();
1554
1556 {
1557 c->AI()->DoAction(-1);
1558 c->DespawnOrUnsummon();
1559 }
1561
1562 break;
1565 floor->SetDestructibleState(GO_DESTRUCTIBLE_REBUILDING, nullptr, true);
1567 {
1568 c->SetVisible(false);
1569 c->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP);
1570 }
1571 break;
1572 }
1573
1574 if (instance->IsHeroic() && AttemptsLeft > 0 && !fromFailed && EncounterStatus == IN_PROGRESS)
1575 {
1576 --AttemptsLeft;
1577 Map::PlayerList const& pl = instance->GetPlayers();
1578 for( Map::PlayerList::const_iterator itr = pl.begin(); itr != pl.end(); ++itr )
1579 if( Player* plr = itr->GetSource() )
1580 plr->SendUpdateWorldState(UPDATE_STATE_UI_COUNT, AttemptsLeft);
1581 }
1582
1583 if( instance->IsHeroic() && AttemptsLeft == 0 )
1585 c->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP);
1586
1590 Counter = 0;
1592 events.Reset();
1593 events.RescheduleEvent(EVENT_CHECK_PLAYERS, 5s);
1594 }
@ TEMPSUMMON_CORPSE_TIMED_DESPAWN
Definition: Object.h:47
@ MOVEMENTFLAG_WALKING
Definition: Unit.h:560
@ REACT_AGGRESSIVE
Definition: Unit.h:1037
@ UNIT_NPC_FLAG_GOSSIP
Definition: Unit.h:516
@ UNIT_FLAG_NON_ATTACKABLE
Definition: Unit.h:449
@ IN_PROGRESS
Definition: InstanceScript.h:58
const Position Locs[]
Definition: trial_of_the_crusader.h:274
@ LOC_CENTER
Definition: trial_of_the_crusader.h:304
@ UPDATE_STATE_UI_COUNT
Definition: trial_of_the_crusader.h:385
@ NPC_WORLD_TRIGGER
Definition: trial_of_the_crusader.h:153
@ NPC_JARAXXUS
Definition: trial_of_the_crusader.h:150
@ INSTANCE_PROGRESS_INTRO_DONE
Definition: trial_of_the_crusader.h:54
@ INSTANCE_PROGRESS_BEASTS_DEAD
Definition: trial_of_the_crusader.h:55
@ INSTANCE_PROGRESS_DONE
Definition: trial_of_the_crusader.h:61
@ INSTANCE_PROGRESS_VALKYR_DEAD
Definition: trial_of_the_crusader.h:59
@ INSTANCE_PROGRESS_ANUB_ARAK
Definition: trial_of_the_crusader.h:60
@ INSTANCE_PROGRESS_JARAXXUS_DEAD
Definition: trial_of_the_crusader.h:57
@ INSTANCE_PROGRESS_FACTION_CHAMPIONS_DEAD
Definition: trial_of_the_crusader.h:58
@ INSTANCE_PROGRESS_JARAXXUS_INTRO_DONE
Definition: trial_of_the_crusader.h:56
@ GO_DESTRUCTIBLE_REBUILDING
Definition: SharedDefines.h:1630
Definition: GameObject.h:122
TempSummon * SummonCreature(uint32 id, const Position &pos, TempSummonType spwtype=TEMPSUMMON_MANUAL_DESPAWN, uint32 despwtime=0, uint32 vehId=0, SummonPropertiesEntry const *properties=nullptr, bool visibleBySummonerOnly=false) const
Definition: Object.cpp:2343
Creature * FindNearestCreature(uint32 entry, float range, bool alive=true) const
Definition: Object.cpp:2434
Definition: ObjectGuid.h:120
void Clear()
Definition: ObjectGuid.h:140
float GetPositionZ() const
Definition: Position.h:119
float GetOrientation() const
Definition: Position.h:120
float GetPositionX() const
Definition: Position.h:117
float GetPositionY() const
Definition: Position.h:118
void HandleGameObject(ObjectGuid guid, bool open, GameObject *go=nullptr)
Definition: InstanceScript.cpp:109
GameObject * GetGameObject(ObjectGuid const guid)
Definition: Map.cpp:3312
bool IsHeroic() const
Definition: Map.h:452
ObjectGuid GO_WebDoorGUID
Definition: instance_trial_of_the_crusader.cpp:77
ObjectGuid NPC_PurpleGroundGUID
Definition: instance_trial_of_the_crusader.cpp:72
ObjectGuid GO_EnterGateGUID
Definition: instance_trial_of_the_crusader.cpp:76
ObjectGuid NPC_JaraxxusGUID
Definition: instance_trial_of_the_crusader.cpp:65
ObjectGuid NPC_FizzlebangGUID
Definition: instance_trial_of_the_crusader.cpp:57
ObjectGuid NPC_IcehowlGUID
Definition: instance_trial_of_the_crusader.cpp:64
ObjectGuid NPC_PortalGUID
Definition: instance_trial_of_the_crusader.cpp:73
ObjectGuid GO_MainGateGUID
Definition: instance_trial_of_the_crusader.cpp:75
ObjectGuid GO_FloorGUID
Definition: instance_trial_of_the_crusader.cpp:78
ObjectGuid NPC_LichKingGUID
Definition: instance_trial_of_the_crusader.cpp:69

References AttemptsLeft, MapRefMgr::begin(), CLEANED, ObjectGuid::Clear(), Counter, EncounterStatus, MapRefMgr::end(), EVENT_CHECK_PLAYERS, WorldObject::FindNearestCreature(), Map::GetCreature(), Map::GetGameObject(), Position::GetOrientation(), Map::GetPlayers(), Position::GetPositionX(), Position::GetPositionY(), Position::GetPositionZ(), GO_DESTRUCTIBLE_REBUILDING, GO_EnterGateGUID, GO_FloorGUID, GO_MainGateGUID, GO_WebDoorGUID, InstanceScript::HandleGameObject(), IN_PROGRESS, InstanceScript::instance, INSTANCE_PROGRESS_ANUB_ARAK, INSTANCE_PROGRESS_BEASTS_DEAD, INSTANCE_PROGRESS_DONE, INSTANCE_PROGRESS_FACTION_CHAMPIONS_DEAD, INSTANCE_PROGRESS_INITIAL, INSTANCE_PROGRESS_INTRO_DONE, INSTANCE_PROGRESS_JARAXXUS_DEAD, INSTANCE_PROGRESS_JARAXXUS_INTRO_DONE, INSTANCE_PROGRESS_VALKYR_DEAD, InstanceProgress, Map::IsHeroic(), LOC_CENTER, Locs, MOVEMENTFLAG_WALKING, northrendBeastsMask, NOT_STARTED, NPC_AcidmawGUID, NPC_AnubarakGUID, NPC_BarrettGUID, NPC_ChampionGUIDs, NPC_DarkbaneGUID, NPC_DreadscaleGUID, NPC_FizzlebangGUID, NPC_GormokGUID, NPC_IcehowlGUID, NPC_JARAXXUS, NPC_JaraxxusGUID, NPC_LichKingGUID, NPC_LightbaneGUID, NPC_PortalGUID, NPC_PurpleGroundGUID, NPC_WORLD_TRIGGER, REACT_AGGRESSIVE, WorldObject::SummonCreature(), TEMPSUMMON_CORPSE_TIMED_DESPAWN, UNIT_FLAG_NON_ATTACKABLE, UNIT_NPC_FLAG_GOSSIP, and UPDATE_STATE_UI_COUNT.

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

◆ IsEncounterInProgress()

bool instance_trial_of_the_crusader::instance_trial_of_the_crusader_InstanceMapScript::IsEncounterInProgress ( ) const
inlineoverridevirtual

Reimplemented from InstanceScript.

186 {
187 Map::PlayerList const& pl = instance->GetPlayers();
188 for( Map::PlayerList::const_iterator itr = pl.begin(); itr != pl.end(); ++itr )
189 if( Player* plr = itr->GetSource() )
190 if( plr->IsAlive() && !plr->IsGameMaster() )
191 return EncounterStatus == IN_PROGRESS; // found alive player
192
194 *(const_cast<uint32*>(&EncounterStatus)) = NOT_STARTED;
195 return false;
196 }

References MapRefMgr::begin(), EncounterStatus, MapRefMgr::end(), Map::GetPlayers(), IN_PROGRESS, InstanceScript::instance, and NOT_STARTED.

◆ IsValidDedicatedInsanityItem()

bool instance_trial_of_the_crusader::instance_trial_of_the_crusader_InstanceMapScript::IsValidDedicatedInsanityItem ( ItemTemplate const *  item)
inline
115 {
116 if (!item) // should not happen, but checked in GetAverageItemLevel()
117 return true;
118 if (item->ItemLevel < 245)
119 return true;
120 if (item->ItemId == 46017) // Val'anyr, Hammer of Ancient Kings - exception, too powerful
121 return false;
122 if (item->ItemLevel == 245 && item->Bonding == BIND_WHEN_EQUIPED) // this also includes items crafted from patterns obtained in ToC 10 norm/hc
123 return true;
124 if (validDedicatedInsanityItems.find(item->ItemId) != validDedicatedInsanityItems.end()) // list of items dropping from ToC 10 norm/hc and also items ilevel 245 buyable for emblems of triumph
125 return true;
126
127 return false;
128 }
@ BIND_WHEN_EQUIPED
Definition: ItemTemplate.h:98

References BIND_WHEN_EQUIPED, ItemTemplate::Bonding, ItemTemplate::ItemId, ItemTemplate::ItemLevel, and validDedicatedInsanityItems.

Referenced by DoCheckDedicatedInsanity().

◆ OnCreatureCreate()

void instance_trial_of_the_crusader::instance_trial_of_the_crusader_InstanceMapScript::OnCreatureCreate ( Creature creature)
inlineoverridevirtual

Reimplemented from InstanceScript.

199 {
200 switch( creature->GetEntry() )
201 {
202 case NPC_BARRENT:
203 NPC_BarrettGUID = creature->GetGUID();
204 break;
205 case NPC_TIRION:
206 NPC_TirionGUID = creature->GetGUID();
207 break;
208 case NPC_GARROSH:
209 NPC_GarroshGUID = creature->GetGUID();
210 break;
211 case NPC_VARIAN:
212 NPC_VarianGUID = creature->GetGUID();
213 break;
214 case NPC_FIZZLEBANG:
215 NPC_FizzlebangGUID = creature->GetGUID();
216 break;
217
218 case NPC_GORMOK:
219 NPC_GormokGUID = creature->GetGUID();
220 break;
221 case NPC_DREADSCALE:
222 NPC_DreadscaleGUID = creature->GetGUID();
223 break;
224 case NPC_ACIDMAW:
225 NPC_AcidmawGUID = creature->GetGUID();
226 break;
227 case NPC_ICEHOWL:
228 NPC_IcehowlGUID = creature->GetGUID();
229 break;
230 case NPC_JARAXXUS:
231 NPC_JaraxxusGUID = creature->GetGUID();
232 break;
233 case NPC_LIGHTBANE:
234 NPC_LightbaneGUID = creature->GetGUID();
235 break;
236 case NPC_DARKBANE:
237 NPC_DarkbaneGUID = creature->GetGUID();
238 break;
239 case NPC_LICH_KING:
240 NPC_LichKingGUID = creature->GetGUID();
241 break;
242 case NPC_ANUBARAK:
243 NPC_AnubarakGUID = creature->GetGUID();
244 break;
245 }
246 }
@ NPC_TIRION
Definition: trial_of_the_champion.h:148
@ NPC_DREADSCALE
Definition: trial_of_the_crusader.h:147
@ NPC_VARIAN
Definition: trial_of_the_crusader.h:139
@ NPC_ICEHOWL
Definition: trial_of_the_crusader.h:149
@ NPC_ACIDMAW
Definition: trial_of_the_crusader.h:148
@ NPC_GARROSH
Definition: trial_of_the_crusader.h:137
@ NPC_ANUBARAK
Definition: trial_of_the_crusader.h:188
@ NPC_BARRENT
Definition: trial_of_the_crusader.h:135
@ NPC_LICH_KING
Definition: trial_of_the_crusader.h:144
@ NPC_FIZZLEBANG
Definition: trial_of_the_crusader.h:143
@ NPC_GORMOK
Definition: trial_of_the_crusader.h:146
uint32 GetEntry() const
Definition: Object.h:109
static ObjectGuid GetGUID(Object const *o)
Definition: Object.h:106
ObjectGuid NPC_TirionGUID
Definition: instance_trial_of_the_crusader.cpp:56
ObjectGuid NPC_VarianGUID
Definition: instance_trial_of_the_crusader.cpp:59
ObjectGuid NPC_GarroshGUID
Definition: instance_trial_of_the_crusader.cpp:58

References Object::GetEntry(), Object::GetGUID(), NPC_ACIDMAW, NPC_AcidmawGUID, NPC_ANUBARAK, NPC_AnubarakGUID, NPC_BARRENT, NPC_BarrettGUID, NPC_DARKBANE, NPC_DarkbaneGUID, NPC_DREADSCALE, NPC_DreadscaleGUID, NPC_FIZZLEBANG, NPC_FizzlebangGUID, NPC_GARROSH, NPC_GarroshGUID, NPC_GORMOK, NPC_GormokGUID, NPC_ICEHOWL, NPC_IcehowlGUID, NPC_JARAXXUS, NPC_JaraxxusGUID, NPC_LICH_KING, NPC_LichKingGUID, NPC_LIGHTBANE, NPC_LightbaneGUID, NPC_TIRION, NPC_TirionGUID, NPC_VARIAN, and NPC_VarianGUID.

◆ OnGameObjectCreate()

void instance_trial_of_the_crusader::instance_trial_of_the_crusader_InstanceMapScript::OnGameObjectCreate ( GameObject go)
inlineoverridevirtual

Reimplemented from InstanceScript.

249 {
250 switch( go->GetEntry() )
251 {
253 GO_MainGateGUID = go->GetGUID();
255 break;
256 case GO_WEB_DOOR:
257 GO_WebDoorGUID = go->GetGUID();
259 break;
261 GO_FloorGUID = go->GetGUID();
264 break;
267 HandleGameObject(go->GetGUID(), false, go);
268 break;
270 HandleGameObject(go->GetGUID(), true, go);
272 break;
273 }
274 }
@ GO_SOUTH_PORTCULLIS
Definition: trial_of_the_champion.h:171
@ GO_EAST_PORTCULLIS
Definition: trial_of_the_champion.h:172
@ GO_NORTH_PORTCULLIS
Definition: trial_of_the_champion.h:173
@ GO_ARGENT_COLISEUM_FLOOR
Definition: trial_of_the_crusader.h:193
@ GO_MAIN_GATE_DOOR
Definition: trial_of_the_crusader.h:194
@ GO_WEB_DOOR
Definition: trial_of_the_crusader.h:195
@ GO_DESTRUCTIBLE_DAMAGED
Definition: SharedDefines.h:1628
void SetDestructibleState(GameObjectDestructibleState state, Player *eventInvoker=nullptr, bool setHealth=false)
Definition: GameObject.cpp:2340

References Object::GetEntry(), Object::GetGUID(), GO_ARGENT_COLISEUM_FLOOR, GO_DESTRUCTIBLE_DAMAGED, GO_EAST_PORTCULLIS, GO_EnterGateGUID, GO_FloorGUID, GO_MAIN_GATE_DOOR, GO_MainGateGUID, GO_NORTH_PORTCULLIS, GO_SOUTH_PORTCULLIS, GO_WEB_DOOR, GO_WebDoorGUID, InstanceScript::HandleGameObject(), INSTANCE_PROGRESS_ANUB_ARAK, InstanceProgress, and GameObject::SetDestructibleState().

◆ OnPlayerEnter()

void instance_trial_of_the_crusader::instance_trial_of_the_crusader_InstanceMapScript::OnPlayerEnter ( Player plr)
inlineoverridevirtual

Reimplemented from InstanceScript.

1401 {
1402 if( instance->IsHeroic() )
1403 {
1406 }
1407 else
1409
1410 if (DoNeedCleanup(plr))
1411 {
1413 }
1414
1415 // if missing spawn anub'arak
1416 SpawnAnubArak();
1417
1418 events.RescheduleEvent(EVENT_CHECK_PLAYERS, 5s);
1419 }
@ UPDATE_STATE_UI_SHOW
Definition: trial_of_the_crusader.h:384
void SendUpdateWorldState(uint32 variable, uint32 value) const
Definition: PlayerUpdates.cpp:2197
void InstanceCleanup(bool fromFailed=false)
Definition: instance_trial_of_the_crusader.cpp:1444
bool DoNeedCleanup(Player *ignoredPlayer=nullptr)
Definition: instance_trial_of_the_crusader.cpp:1421
void SpawnAnubArak()
Definition: instance_trial_of_the_crusader.cpp:80

References AttemptsLeft, DoNeedCleanup(), EVENT_CHECK_PLAYERS, InstanceScript::instance, InstanceCleanup(), Map::IsHeroic(), Player::SendUpdateWorldState(), SpawnAnubArak(), UPDATE_STATE_UI_COUNT, and UPDATE_STATE_UI_SHOW.

◆ OnUnitDeath()

void instance_trial_of_the_crusader::instance_trial_of_the_crusader_InstanceMapScript::OnUnitDeath ( Unit u)
inlineoverridevirtual

Reimplemented from ZoneScript.

158 {
159 if (bNooneDied && u->GetTypeId() == TYPEID_PLAYER)
160 {
161 bNooneDied = false;
162 SaveToDB();
163 }
164 }
@ TYPEID_PLAYER
Definition: ObjectGuid.h:38
TypeID GetTypeId() const
Definition: Object.h:121

References bNooneDied, Object::GetTypeId(), InstanceScript::SaveToDB(), and TYPEID_PLAYER.

◆ ReadSaveDataMore()

void instance_trial_of_the_crusader::instance_trial_of_the_crusader_InstanceMapScript::ReadSaveDataMore ( std::istringstream &  data)
inlineoverridevirtual

Reimplemented from InstanceScript.

1597 {
1598 data >> InstanceProgress;
1599
1600 if (instance->IsHeroic())
1601 {
1602 data >> AttemptsLeft;
1603 uint32 temp = 0;
1604 data >> temp;
1605 bDedicatedInsanity = !!temp;
1606 data >> temp;
1607 bNooneDied = !!temp;
1608 }
1609 }

References AttemptsLeft, bDedicatedInsanity, bNooneDied, InstanceScript::instance, InstanceProgress, and Map::IsHeroic().

◆ SetData()

void instance_trial_of_the_crusader::instance_trial_of_the_crusader_InstanceMapScript::SetData ( uint32  type,
uint32  data 
)
inlineoverridevirtual

Reimplemented from ZoneScript.

277 {
278 switch( type )
279 {
280 case TYPE_FAILED:
281 // - some scene here?
282 if( instance->IsHeroic() && !CLEANED )
283 {
284 if( AttemptsLeft > 0 )
285 --AttemptsLeft;
286 Map::PlayerList const& pl = instance->GetPlayers();
287 for( Map::PlayerList::const_iterator itr = pl.begin(); itr != pl.end(); ++itr )
288 if( Player* plr = itr->GetSource() )
289 plr->SendUpdateWorldState(UPDATE_STATE_UI_COUNT, AttemptsLeft);
290 }
291 InstanceCleanup(true);
292 SaveToDB();
293 break;
295 if( instance->IsHeroic() && AttemptsLeft == 0 )
296 break;
297 switch( InstanceProgress )
298 {
300 events.RescheduleEvent(EVENT_SCENE_001, 0);
301 break;
303 events.RescheduleEvent(EVENT_SCENE_004, 0);
304 break;
306 events.RescheduleEvent(EVENT_SCENE_101, 0);
307 break;
309 events.RescheduleEvent(EVENT_SCENE_201, 0);
310 break;
312 events.RescheduleEvent(EVENT_SCENE_301, 0);
313 break;
315 events.RescheduleEvent(EVENT_SCENE_401, 0);
316 break;
317 }
318 break;
319 case TYPE_GORMOK:
320 if( data == DONE )
321 {
322 if (Creature* trigger = instance->SummonCreature(WORLD_TRIGGER, Locs[LOC_CENTER], nullptr, 25000))
323 {
324 trigger->SetDisplayId(11686);
325 trigger->ReplaceAllUnitFlags(UNIT_FLAG_NOT_SELECTABLE);
326 trigger->SetFaction(FACTION_MONSTER);
327 trigger->SetInCombatWithZone();
328 }
329
331
333 if ((northrendBeastsMask & 7) == 7)
335 else if ((northrendBeastsMask & 16) == 0)
336 events.RescheduleEvent(EVENT_SCENE_005, 2500);
337 }
338 break;
339 case TYPE_JORMUNGAR:
340 if( data == DONE )
341 {
342 if( ++Counter == 2 )
343 {
344 if (Creature* trigger = instance->SummonCreature(WORLD_TRIGGER, Locs[LOC_CENTER], nullptr, 25000))
345 {
346 trigger->SetDisplayId(11686);
347 trigger->ReplaceAllUnitFlags(UNIT_FLAG_NOT_SELECTABLE);
348 trigger->SetFaction(FACTION_MONSTER);
349 trigger->SetInCombatWithZone();
350 }
351
353 c->DespawnOrUnsummon(10000);
355 c->DespawnOrUnsummon(10000);
356 if( AchievementTimer + 10 >= GameTime::GetGameTime().count() )
359
361
363 if ((northrendBeastsMask & 7) == 7)
365 else if ((northrendBeastsMask & 32) == 0)
366 {
367 Counter = 0;
368 events.RescheduleEvent(EVENT_SCENE_006, 2500);
369 }
370 }
371 else // first one died, start timer for achievement
372 {
374 }
375 }
376 else
378 break;
379 case TYPE_ICEHOWL:
380 if( data == DONE )
381 {
383 if ((northrendBeastsMask & 7) == 7)
385 }
386 break;
388 if (data == DONE)
389 {
395 events.RescheduleEvent(EVENT_SCENE_BEASTS_DONE, 2500);
396 SaveToDB();
397 }
398 break;
399 case TYPE_JARAXXUS:
401 if( data == IN_PROGRESS )
403 else if( data == DONE )
404 {
407 events.RescheduleEvent(EVENT_SCENE_110, 2500);
408 SaveToDB();
409 }
410 break;
412 if( data == DONE )
413 {
414 if( ++Counter >= NPC_ChampionGUIDs.size() )
415 {
417 c->CastSpell(c, SPELL_FACTION_CHAMPIONS_KILL_CREDIT, true);
418 Counter = 0;
421 events.RescheduleEvent(EVENT_SCENE_FACTION_CHAMPIONS_DEAD, 2500);
422
423 for (ObjectGuid const& guid : NPC_ChampionGUIDs)
424 if (Creature* c = instance->GetCreature(guid))
425 c->DespawnOrUnsummon(15000);
426 NPC_ChampionGUIDs.clear();
427
429 {
430 uint32 cacheEntry = 0;
431 switch( instance->GetDifficulty() )
432 {
434 cacheEntry = GO_CRUSADERS_CACHE_10;
435 break;
437 cacheEntry = GO_CRUSADERS_CACHE_25;
438 break;
440 cacheEntry = GO_CRUSADERS_CACHE_10_H;
441 break;
443 cacheEntry = GO_CRUSADERS_CACHE_25_H;
444 break;
445 }
446
447 if (GameObject* go = c->SummonGameObject(cacheEntry, Locs[LOC_CENTER].GetPositionX(), Locs[LOC_CENTER].GetPositionY(), Locs[LOC_CENTER].GetPositionZ(), Locs[LOC_CENTER].GetOrientation(), 0.0f, 0.0f, 0.0f, 0.0f, 630000000))
448 {
449 go->SetLootRecipient(instance);
450 }
451 }
452
454
455 if( AchievementTimer + 60 >= GameTime::GetGameTime().count() )
458
459 SaveToDB();
460 }
461 else if( Counter == 1 )
463 }
464 break;
466 {
469 for (ObjectGuid const& guid : NPC_ChampionGUIDs)
470 if (Creature* c = instance->GetCreature(guid))
471 if (!c->IsInCombat())
472 if (Unit* target = c->SelectNearestTarget(200.0f))
473 c->AI()->AttackStart(target);
474 }
475 break;
477 if( urand(0, 2) == 0 )
478 {
480 {
482 pTemp->AI()->Talk(SAY_VARIAN_KILL_HORDE_PLAYER_1);
483 }
484 else if( Creature* pTemp = instance->GetCreature(NPC_GarroshGUID) )
485 pTemp->AI()->Talk(SAY_GARROSH_KILL_ALLIANCE_PLAYER_1);
486 }
487 break;
488 case TYPE_VALKYR:
489 if( data == DONE && ++Counter >= 2 )
490 {
491 Counter = 0;
496 events.RescheduleEvent(EVENT_SCENE_VALKYR_DEAD, 2500);
498 SaveToDB();
499 }
500 break;
501 case TYPE_ANUBARAK:
502 if( data == IN_PROGRESS )
503 {
506 }
507 else if( data == DONE )
508 {
509 Counter = 0;
514 SaveToDB();
515
517 {
518 c->UpdatePosition(Locs[LOC_TIRION_FINAL], true);
519 c->StopMovingOnCurrentPos();
520 c->SetFacingTo(Locs[LOC_TIRION_FINAL].GetOrientation());
521 events.RescheduleEvent(EVENT_SCENE_501, 20000);
522 }
524 floor->SetDestructibleState(GO_DESTRUCTIBLE_REBUILDING, nullptr, true);
525 }
526 break;
527 }
528 }
uint32 urand(uint32 min, uint32 max)
Definition: Random.cpp:44
#define WORLD_TRIGGER
Definition: Unit.h:36
@ UNIT_FLAG_NOT_SELECTABLE
Definition: Unit.h:473
@ DONE
Definition: InstanceScript.h:60
@ GO_CRUSADERS_CACHE_10_H
Definition: trial_of_the_crusader.h:202
@ GO_CRUSADERS_CACHE_10
Definition: trial_of_the_crusader.h:200
@ GO_CRUSADERS_CACHE_25_H
Definition: trial_of_the_crusader.h:203
@ GO_CRUSADERS_CACHE_25
Definition: trial_of_the_crusader.h:201
@ LOC_TIRION_FINAL
Definition: trial_of_the_crusader.h:318
@ SAY_GARROSH_KILL_ALLIANCE_PLAYER_1
Definition: trial_of_the_crusader.h:253
@ SAY_VARIAN_KILL_HORDE_PLAYER_1
Definition: trial_of_the_crusader.h:244
@ SPELL_FACTION_CHAMPIONS_KILL_CREDIT
Definition: trial_of_the_crusader.h:352
@ SPELL_RESILIENCE_WILL_FIX_IT_CREDIT
Definition: trial_of_the_crusader.h:353
@ SPELL_JORMUNGAR_ACHIEV
Definition: trial_of_the_crusader.h:351
@ EVENT_SCENE_005
Definition: trial_of_the_crusader.h:76
@ EVENT_SCENE_501
Definition: trial_of_the_crusader.h:129
@ EVENT_SCENE_101
Definition: trial_of_the_crusader.h:86
@ EVENT_SCENE_201
Definition: trial_of_the_crusader.h:102
@ EVENT_SCENE_BEASTS_DONE
Definition: trial_of_the_crusader.h:83
@ EVENT_SCENE_VALKYR_DEAD
Definition: trial_of_the_crusader.h:116
@ EVENT_SCENE_401
Definition: trial_of_the_crusader.h:118
@ EVENT_SCENE_301
Definition: trial_of_the_crusader.h:111
@ EVENT_SCENE_001
Definition: trial_of_the_crusader.h:70
@ EVENT_NORTHREND_BEASTS_ENRAGE
Definition: trial_of_the_crusader.h:84
@ EVENT_SCENE_110
Definition: trial_of_the_crusader.h:97
@ EVENT_SCENE_004
Definition: trial_of_the_crusader.h:73
@ EVENT_SCENE_006
Definition: trial_of_the_crusader.h:80
@ EVENT_SCENE_FACTION_CHAMPIONS_DEAD
Definition: trial_of_the_crusader.h:109
@ TYPE_ANNOUNCER_GOSSIP_SELECT
Definition: trial_of_the_crusader.h:33
@ TYPE_ICEHOWL
Definition: trial_of_the_crusader.h:40
@ TYPE_JARAXXUS
Definition: trial_of_the_crusader.h:41
@ TYPE_NORTHREND_BEASTS_ALL
Definition: trial_of_the_crusader.h:48
@ TYPE_VALKYR
Definition: trial_of_the_crusader.h:44
@ TYPE_FAILED
Definition: trial_of_the_crusader.h:34
@ TYPE_FACTION_CHAMPIONS
Definition: trial_of_the_crusader.h:42
@ TYPE_FACTION_CHAMPIONS_PLAYER_DIED
Definition: trial_of_the_crusader.h:43
@ TYPE_FACTION_CHAMPIONS_START
Definition: trial_of_the_crusader.h:47
@ TYPE_JORMUNGAR
Definition: trial_of_the_crusader.h:37
@ RAID_DIFFICULTY_25MAN_HEROIC
Definition: DBCEnums.h:284
@ RAID_DIFFICULTY_10MAN_NORMAL
Definition: DBCEnums.h:281
@ RAID_DIFFICULTY_25MAN_NORMAL
Definition: DBCEnums.h:282
@ ACHIEVEMENT_CRITERIA_TYPE_BE_SPELL_TARGET
Definition: DBCEnums.h:150
@ ACHIEVEMENT_CRITERIA_TYPE_KILL_CREATURE
Definition: DBCEnums.h:130
@ TEAM_HORDE
Definition: SharedDefines.h:761
@ FACTION_MONSTER
Definition: SharedDefines.h:195
Seconds GetGameTime()
Definition: GameTime.cpp:38
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, GOSummonType summonType=GO_SUMMON_TIMED_OR_CORPSE_DESPAWN)
Definition: Object.cpp:2357
Definition: Unit.h:1302
void DoUpdateAchievementCriteria(AchievementCriteriaTypes type, uint32 miscValue1=0, uint32 miscValue2=0, Unit *unit=nullptr)
Definition: InstanceScript.cpp:611
Difficulty GetDifficulty() const
Definition: Map.h:443
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:2154
void SetData(uint32 type, uint32 data) override
Definition: instance_trial_of_the_crusader.cpp:276

References ACHIEVEMENT_CRITERIA_TYPE_BE_SPELL_TARGET, ACHIEVEMENT_CRITERIA_TYPE_KILL_CREATURE, AchievementTimer, AttemptsLeft, MapRefMgr::begin(), CLEANED, Counter, DONE, InstanceScript::DoUpdateAchievementCriteria(), EncounterStatus, MapRefMgr::end(), EVENT_NORTHREND_BEASTS_ENRAGE, EVENT_SCENE_001, EVENT_SCENE_004, EVENT_SCENE_005, EVENT_SCENE_006, EVENT_SCENE_101, EVENT_SCENE_110, EVENT_SCENE_201, EVENT_SCENE_301, EVENT_SCENE_401, EVENT_SCENE_501, EVENT_SCENE_BEASTS_DONE, EVENT_SCENE_FACTION_CHAMPIONS_DEAD, EVENT_SCENE_VALKYR_DEAD, FACTION_MONSTER, Map::GetCreature(), Map::GetDifficulty(), Map::GetGameObject(), GameTime::GetGameTime(), Position::GetOrientation(), Map::GetPlayers(), Position::GetPositionX(), Position::GetPositionY(), Position::GetPositionZ(), GO_CRUSADERS_CACHE_10, GO_CRUSADERS_CACHE_10_H, GO_CRUSADERS_CACHE_25, GO_CRUSADERS_CACHE_25_H, GO_DESTRUCTIBLE_REBUILDING, GO_EnterGateGUID, GO_FloorGUID, GO_WebDoorGUID, InstanceScript::HandleGameObject(), IN_PROGRESS, InstanceScript::instance, INSTANCE_PROGRESS_BEASTS_DEAD, INSTANCE_PROGRESS_DONE, INSTANCE_PROGRESS_FACTION_CHAMPIONS_DEAD, INSTANCE_PROGRESS_INITIAL, INSTANCE_PROGRESS_INTRO_DONE, INSTANCE_PROGRESS_JARAXXUS_DEAD, INSTANCE_PROGRESS_VALKYR_DEAD, InstanceCleanup(), InstanceProgress, Map::IsHeroic(), LOC_CENTER, LOC_TIRION_FINAL, Locs, northrendBeastsMask, NOT_STARTED, NPC_AcidmawGUID, NPC_ChampionGUIDs, NPC_DreadscaleGUID, NPC_GarroshGUID, NPC_TirionGUID, NPC_VarianGUID, RAID_DIFFICULTY_10MAN_HEROIC, RAID_DIFFICULTY_10MAN_NORMAL, RAID_DIFFICULTY_25MAN_HEROIC, RAID_DIFFICULTY_25MAN_NORMAL, InstanceScript::SaveToDB(), SAY_GARROSH_KILL_ALLIANCE_PLAYER_1, SAY_VARIAN_KILL_HORDE_PLAYER_1, SetData(), SPELL_FACTION_CHAMPIONS_KILL_CREDIT, SPELL_JORMUNGAR_ACHIEV, SPELL_RESILIENCE_WILL_FIX_IT_CREDIT, Map::SummonCreature(), WorldObject::SummonGameObject(), TEAM_HORDE, TeamIdInInstance, TYPE_ANNOUNCER_GOSSIP_SELECT, TYPE_ANUBARAK, TYPE_FACTION_CHAMPIONS, TYPE_FACTION_CHAMPIONS_PLAYER_DIED, TYPE_FACTION_CHAMPIONS_START, TYPE_FAILED, TYPE_GORMOK, TYPE_ICEHOWL, TYPE_JARAXXUS, TYPE_JORMUNGAR, TYPE_NORTHREND_BEASTS_ALL, TYPE_VALKYR, UNIT_FLAG_NOT_SELECTABLE, UPDATE_STATE_UI_COUNT, urand(), and WORLD_TRIGGER.

Referenced by SetData().

◆ SpawnAnubArak()

void instance_trial_of_the_crusader::instance_trial_of_the_crusader_InstanceMapScript::SpawnAnubArak ( )
inline
81 {
83 {
85 {
86 barrett->SetVisible(false);
87 if (AttemptsLeft)
89 barrett->SummonCreature(NPC_ANUBARAK, Locs[LOC_ANUB].GetPositionX(), Locs[LOC_ANUB].GetPositionY(), Locs[LOC_ANUB].GetPositionZ(), Locs[LOC_ANUB].GetOrientation(), TEMPSUMMON_CORPSE_TIMED_DESPAWN, 630000000);
90 }
91
92 // move corpses
94 for (ObjectGuid const& i : npcs)
95 {
96 if (Creature* c = instance->GetCreature(i))
97 {
98 if (c->GetGUID() == NPC_IcehowlGUID)
99 c->UpdatePosition(626.57f, 162.8f, 140.25f, 4.44f, true);
100 else if (c->GetGUID() == NPC_JaraxxusGUID)
101 c->UpdatePosition(603.92f, 102.61f, 141.85f, 1.4f, true);
102 else if (c->GetGUID() == NPC_LightbaneGUID)
103 c->UpdatePosition(634.58f, 147.16f, 140.5f, 3.02f, true);
104 else if (c->GetGUID() == NPC_DarkbaneGUID)
105 c->UpdatePosition(630.88f, 131.39f, 140.8f, 3.02f, true);
106
107 c->StopMovingOnCurrentPos();
108 c->DestroyForNearbyPlayers();
109 }
110 }
111 }
112 }
@ LOC_ANUB
Definition: trial_of_the_crusader.h:317
npcs
Definition: halls_of_stone.h:58
Creature * GetCreature(WorldObject const &u, ObjectGuid const guid)
Definition: ObjectAccessor.cpp:213

References AttemptsLeft, Map::GetCreature(), ObjectAccessor::GetCreature(), InstanceScript::instance, INSTANCE_PROGRESS_ANUB_ARAK, InstanceProgress, LOC_ANUB, Locs, NPC_ANUBARAK, NPC_AnubarakGUID, NPC_BarrettGUID, NPC_DarkbaneGUID, NPC_IcehowlGUID, NPC_JaraxxusGUID, NPC_LightbaneGUID, and TEMPSUMMON_CORPSE_TIMED_DESPAWN.

Referenced by OnPlayerEnter(), and Update().

◆ Update()

void instance_trial_of_the_crusader::instance_trial_of_the_crusader_InstanceMapScript::Update ( uint32  diff)
inlineoverridevirtual

Reimplemented from InstanceScript.

562 {
563 events.Update(diff);
564 switch( events.ExecuteEvent() )
565 {
566 case 0:
567 break;
569 {
570 if (bSwitcher) // used to double the check interval
573
574 if (DoNeedCleanup())
575 {
577 }
578 events.Repeat(5s);
579 }
580 break;
581 case EVENT_OPEN_GATE:
582 {
584 break;
585 }
586 case EVENT_CLOSE_GATE:
587 {
589 }
590 break;
591 case EVENT_SCENE_001:
592 {
594 c->AI()->Talk(SAY_STAGE_0_01);
595
596 events.RescheduleEvent(EVENT_SCENE_002, 22000);
597 }
598 break;
599 case EVENT_SCENE_002:
600 {
602 c->AI()->Talk(SAY_STAGE_0_03a);
603
604 events.RescheduleEvent(EVENT_SCENE_003, 5000);
605 }
606 break;
607 case EVENT_SCENE_003:
608 {
610 c->AI()->Talk(SAY_STAGE_0_03h);
611
612 events.RescheduleEvent(EVENT_SCENE_004, 8000);
613 }
614 break;
615 case EVENT_SCENE_004:
616 {
619
621 c->AI()->Talk(SAY_STAGE_0_02);
624
625 events.RescheduleEvent(EVENT_SUMMON_GORMOK, 1000);
626 if (instance->IsHeroic())
627 {
628 events.RescheduleEvent(EVENT_SCENE_005, 150000);
629 events.RescheduleEvent(EVENT_SCENE_006, 340000);
630 events.RescheduleEvent(EVENT_NORTHREND_BEASTS_ENRAGE, 520000);
631 }
632 }
633 break;
636 if (c->IsAlive())
637 c->CastSpell(c, 26662, true);
639 if (c->IsAlive())
640 c->CastSpell(c, 26662, true);
642 if (c->IsAlive())
643 c->CastSpell(c, 26662, true);
645 if (c->IsAlive())
646 c->CastSpell(c, 26662, true);
647
648 break;
650 {
653 gormok->GetMotionMaster()->MovePoint(0, Locs[LOC_GATE_FRONT].GetPositionX(), Locs[LOC_GATE_FRONT].GetPositionY(), Locs[LOC_GATE_FRONT].GetPositionZ());
654
655 events.RescheduleEvent(EVENT_GORMOK_ATTACK, 10000);
656 events.RescheduleEvent(EVENT_CLOSE_GATE, 6000);
657 }
658 break;
660 {
663 {
664 c->SetReactState(REACT_AGGRESSIVE);
665 c->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
666 c->RemoveUnitMovementFlag(MOVEMENTFLAG_WALKING);
667 if( Unit* target = c->SelectNearestTarget(200.0f) )
668 {
669 c->AI()->AttackStart(target);
670 c->AI()->DoZoneInCombat();
671 }
672 }
673 break;
674 }
675 case EVENT_SCENE_005:
676 {
679 c->AI()->Talk(SAY_STAGE_0_04);
680
681 events.RescheduleEvent(EVENT_OPEN_GATE, 3000);
682 events.RescheduleEvent(EVENT_SUMMON_ACIDMAW_AND_DREADSCALE, 4000);
683 break;
684 }
686 {
688 {
690 dreadscale->GetMotionMaster()->MovePoint(0, Locs[LOC_BEHIND_GATE].GetPositionX(), Locs[LOC_BEHIND_GATE].GetPositionY() - 25.0f, Locs[LOC_BEHIND_GATE].GetPositionZ());
692 acidmaw->AddAura(53421, acidmaw);
693 }
694
695 events.RescheduleEvent(EVENT_SCENE_005_2, 4000);
696 break;
697 }
698
700 {
701 if( Creature* dreadscale = instance->GetCreature(NPC_DreadscaleGUID) )
702 dreadscale->GetMotionMaster()->MovePoint(0, Locs[LOC_DREADSCALE].GetPositionX(), Locs[LOC_DREADSCALE].GetPositionY(), Locs[LOC_DREADSCALE].GetPositionZ());
703
704 events.RescheduleEvent(EVENT_ACIDMAW_AND_DREADSCALE_ATTACK, 7000);
705 break;
706 }
708 {
711 {
712 c->SetReactState(REACT_AGGRESSIVE);
713 c->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
714 c->RemoveUnitMovementFlag(MOVEMENTFLAG_WALKING);
715 if( Unit* target = c->SelectNearestTarget(200.0f) )
716 {
717 c->AI()->AttackStart(target);
718 c->AI()->DoZoneInCombat();
719 }
720 }
722 {
723 c->SetReactState(REACT_AGGRESSIVE);
724 c->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
725 c->RemoveUnitMovementFlag(MOVEMENTFLAG_WALKING);
726 if( Unit* target = c->SelectNearestTarget(200.0f) )
727 {
728 c->RemoveAura(53421);
729 c->CastSpell(c, 66947, false);
730 c->AI()->AttackStart(target);
731 c->AI()->DoZoneInCombat();
732 }
733 }
734 break;
735 }
736 case EVENT_SCENE_006:
737 {
740 c->AI()->Talk(SAY_STAGE_0_05);
741
742 events.RescheduleEvent(EVENT_OPEN_GATE, 2000);
743 events.RescheduleEvent(EVENT_SUMMON_ICEHOWL, 3000);
744 break;
745 }
747 {
750 icehowl->GetMotionMaster()->MovePoint(0, Locs[LOC_GATE_FRONT].GetPositionX(), Locs[LOC_GATE_FRONT].GetPositionY(), Locs[LOC_GATE_FRONT].GetPositionZ());
751
752 events.RescheduleEvent(EVENT_ICEHOWL_ATTACK, 10000);
753 events.RescheduleEvent(EVENT_CLOSE_GATE, 6000);
754 break;
755 }
757 {
759 {
760 c->SetReactState(REACT_AGGRESSIVE);
761 c->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
762 c->RemoveUnitMovementFlag(MOVEMENTFLAG_WALKING);
763 if( Unit* target = c->SelectNearestTarget(200.0f) )
764 {
765 c->AI()->AttackStart(target);
766 c->AI()->DoZoneInCombat();
767 }
768 }
769 break;
770 }
772 {
774 c->AI()->Talk(SAY_STAGE_0_06);
776 c->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP);
777 break;
778 }
779 case EVENT_SCENE_101:
780 {
782 {
784 c->AI()->Talk(SAY_STAGE_1_01);
786 {
787 fizzlebang->AddUnitMovementFlag(MOVEMENTFLAG_WALKING);
788 fizzlebang->GetMotionMaster()->MovePoint(0, Locs[LOC_BEHIND_GATE].GetPositionX(), Locs[LOC_BEHIND_GATE].GetPositionY() - 65.0f, Locs[LOC_BEHIND_GATE].GetPositionZ() - 1.0f);
789 }
790 events.RescheduleEvent(EVENT_SCENE_102, 20000);
791
792 // move Icehowl to side, can't remove corpse because of loot!
794 {
795 icehowl->UpdatePosition(513.19f, 139.48f, 395.22f, 3 * M_PI / 2, true);
796 icehowl->StopMovingOnCurrentPos();
797 icehowl->DestroyForNearbyPlayers();
798 }
799 }
800 break;
801 }
802 case EVENT_SCENE_102:
803 {
806 c->AI()->Talk(SAY_STAGE_1_02);
807
808 events.RescheduleEvent(EVENT_SCENE_103, 11000);
809 break;
810 }
811 case EVENT_SCENE_103:
812 {
814 {
815 c->AI()->Talk(SAY_STAGE_1_03);
816 c->HandleEmoteCommand(EMOTE_STATE_SPELL_PRECAST);
818 NPC_PurpleGroundGUID = trigger->GetGUID();
819 }
820
821 events.RescheduleEvent(EVENT_SCENE_104, 5000);
822 break;
823 }
824 case EVENT_SCENE_104:
825 {
827 {
829 {
830 NPC_PortalGUID = portal->GetGUID();
831 portal->SetObjectScale(3.0f);
832 portal->SetReactState(REACT_PASSIVE);
833 portal->CastSpell(portal, SPELL_WILFRED_PORTAL, true);
834 }
835 c->HandleEmoteCommand(EMOTE_STATE_SPELL_PRECAST);
836 }
837
838 events.RescheduleEvent(EVENT_SUMMON_JARAXXUS, 5000);
839 break;
840 }
842 {
844 {
846 jaraxxus->GetMotionMaster()->MovePoint(0, Locs[LOC_CENTER].GetPositionX(), Locs[LOC_CENTER].GetPositionY() - 10.0f, Locs[LOC_CENTER].GetPositionZ());
847 c->HandleEmoteCommand(EMOTE_STATE_NONE);
848 c->AI()->Talk(SAY_STAGE_1_04);
849 }
850
851 events.RescheduleEvent(EVENT_SCENE_105, 3000);
852 break;
853 }
854 case EVENT_SCENE_105:
855 {
857 c->SetFacingTo(M_PI / 2);
859 c->DespawnOrUnsummon();
862 c->DespawnOrUnsummon();
864
865 events.RescheduleEvent(EVENT_SCENE_106, 10000);
866 break;
867 }
868 case EVENT_SCENE_106:
869 {
871 c->AI()->Talk(SAY_STAGE_1_05);
872
873 events.RescheduleEvent(EVENT_SCENE_107, 5000);
874 break;
875 }
876 case EVENT_SCENE_107:
877 {
879 c->AI()->Talk(SAY_STAGE_1_06);
880
881 events.RescheduleEvent(EVENT_SCENE_108, 800);
882 break;
883 }
884 case EVENT_SCENE_108:
885 {
887 {
888 c->Yell("Banished to the Nether!", LANG_UNIVERSAL);
889 c->PlayDirectSound(16146, 0);
891 {
892 c->CastSpell(f, 67888, true);
893 Unit::Kill(f, f);
894 }
895 }
896
897 events.RescheduleEvent(EVENT_SCENE_109, 5000);
898 break;
899 }
900 case EVENT_SCENE_109:
901 {
903 c->SetFacingTo(3 * M_PI / 2);
905 c->AI()->Talk(SAY_STAGE_1_07);
906
907 events.RescheduleEvent(EVENT_JARAXXUS_ATTACK, 6000);
908 break;
909 }
911 {
914 {
915 c->SetReactState(REACT_AGGRESSIVE);
916 c->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
917 c->RemoveUnitMovementFlag(MOVEMENTFLAG_WALKING);
918 if( Unit* target = c->SelectNearestTarget(200.0f) )
919 {
920 c->AI()->AttackStart(target);
921 c->AI()->DoZoneInCombat();
922 }
923 }
924 break;
925 }
926 case EVENT_SCENE_110:
927 {
929 c->AI()->Talk(SAY_STAGE_1_08);
930
931 events.RescheduleEvent(EVENT_SCENE_111, 18000);
932 break;
933 }
934 case EVENT_SCENE_111:
935 {
937 c->AI()->Talk(SAY_STAGE_1_09);
938
939 events.RescheduleEvent(EVENT_SCENE_112, 9000);
940 break;
941 }
942 case EVENT_SCENE_112:
943 {
945 c->AI()->Talk(SAY_STAGE_1_10);
946
947 events.RescheduleEvent(EVENT_SCENE_113, 5000);
948 break;
949 }
950 case EVENT_SCENE_113:
951 {
953 c->AI()->Talk(SAY_STAGE_1_11);
955 c->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP);
956 break;
957 }
958 case EVENT_SCENE_201:
959 {
960 // move Jaraxxus to side, can't remove corpse because of loot!
962 {
963 jaraxxus->UpdatePosition(613.83f, 139.5f, 395.22f, 3 * M_PI / 2, true);
964 jaraxxus->StopMovingOnCurrentPos();
965 jaraxxus->DestroyForNearbyPlayers();
966 }
967
969 c->AI()->Talk(SAY_STAGE_2_01);
970
971 events.RescheduleEvent(EVENT_SCENE_202, 9000);
972 break;
973 }
974 case EVENT_SCENE_202:
975 {
976 Map::PlayerList const& pl = instance->GetPlayers();
977 for( Map::PlayerList::const_iterator itr = pl.begin(); itr != pl.end(); ++itr )
978 if( Player* plr = itr->GetSource() )
979 if( !plr->IsGameMaster() )
980 {
981 TeamIdInInstance = plr->GetTeamId();
982 break;
983 }
984
986 {
988 c->AI()->Talk(SAY_STAGE_2_02h);
989 events.RescheduleEvent(EVENT_SCENE_203, 15000);
990 }
991 else
992 {
994 c->AI()->Talk(SAY_STAGE_2_02a);
995 events.RescheduleEvent(EVENT_SCENE_203, 18000);
996 }
997 break;
998 }
999 case EVENT_SCENE_203:
1000 {
1002 c->AI()->Talk(SAY_STAGE_2_03);
1003
1004 events.RescheduleEvent(EVENT_SCENE_204, 5000);
1005 break;
1006 }
1007 case EVENT_SCENE_204:
1008 {
1010 {
1012 c->AI()->Talk(SAY_STAGE_2_04h);
1013 events.RescheduleEvent(EVENT_SCENE_205, 6000);
1014 }
1015 else
1016 {
1018 c->AI()->Talk(SAY_STAGE_2_04a);
1019 events.RescheduleEvent(EVENT_SCENE_205, 5000);
1020 }
1021
1022 events.RescheduleEvent(EVENT_SUMMON_CHAMPIONS, 2500);
1023 break;
1024 }
1025 case EVENT_SCENE_205:
1026 {
1029
1030 break;
1031 }
1033 {
1034 std::vector<uint32> vHealerEntries;
1039
1040 std::vector<uint32> vOtherEntries;
1043 vOtherEntries.push_back(TeamIdInInstance == TEAM_ALLIANCE ? NPC_HORDE_MAGE : NPC_ALLIANCE_MAGE);
1044 vOtherEntries.push_back(TeamIdInInstance == TEAM_ALLIANCE ? NPC_HORDE_ROGUE : NPC_ALLIANCE_ROGUE);
1047
1048 uint8 healersSubtracted = 2;
1050 healersSubtracted = 1;
1051 for( uint8 i = 0; i < healersSubtracted; ++i )
1052 {
1053 uint8 pos = urand(0, vHealerEntries.size() - 1);
1054 switch( vHealerEntries[pos] )
1055 {
1057 vOtherEntries.push_back(NPC_ALLIANCE_DRUID_BALANCE);
1058 break;
1060 vOtherEntries.push_back(NPC_HORDE_DRUID_BALANCE);
1061 break;
1063 vOtherEntries.push_back(NPC_ALLIANCE_PALADIN_RETRIBUTION);
1064 break;
1066 vOtherEntries.push_back(NPC_HORDE_PALADIN_RETRIBUTION);
1067 break;
1069 vOtherEntries.push_back(NPC_ALLIANCE_PRIEST_SHADOW);
1070 break;
1072 vOtherEntries.push_back(NPC_HORDE_PRIEST_SHADOW);
1073 break;
1075 vOtherEntries.push_back(NPC_ALLIANCE_SHAMAN_ENHANCEMENT);
1076 break;
1078 vOtherEntries.push_back(NPC_HORDE_SHAMAN_ENHANCEMENT);
1079 break;
1080 }
1081 vHealerEntries.erase(vHealerEntries.begin() + pos);
1082 }
1083
1085 for( uint8 i = 0; i < 4; ++i )
1086 vOtherEntries.erase(vOtherEntries.begin() + urand(0, vOtherEntries.size() - 1));
1087
1088 for( std::vector<uint32>::iterator itr = vHealerEntries.begin(); itr != vHealerEntries.end(); ++itr )
1089 vOtherEntries.push_back(*itr);
1090
1091 uint8 pos2 = 10;
1092 for( std::vector<uint32>::iterator itr = vOtherEntries.begin(); itr != vOtherEntries.end(); ++itr )
1093 {
1094 if( Creature* pTemp = instance->SummonCreature(*itr, FactionChampionLoc[urand(0, 4) + (TeamIdInInstance == TEAM_ALLIANCE ? 0 : 5)]) )
1095 {
1096 NPC_ChampionGUIDs.push_back(pTemp->GetGUID());
1097 pTemp->SetHomePosition((TeamIdInInstance == TEAM_ALLIANCE ? FactionChampionLoc[pos2].GetPositionX() : (Locs[LOC_CENTER].GetPositionX() * 2 - FactionChampionLoc[pos2].GetPositionX())), FactionChampionLoc[pos2].GetPositionY(), FactionChampionLoc[pos2].GetPositionZ(), 0.0f);
1098 pTemp->GetMotionMaster()->MoveJump((TeamIdInInstance == TEAM_ALLIANCE ? FactionChampionLoc[pos2].GetPositionX() : (Locs[LOC_CENTER].GetPositionX() * 2 - FactionChampionLoc[pos2].GetPositionX())), FactionChampionLoc[pos2].GetPositionY(), FactionChampionLoc[pos2].GetPositionZ(), 20.0f, 20.0f);
1099 }
1100 ++pos2;
1101 }
1102
1104 events.RescheduleEvent(EVENT_CHAMPIONS_ATTACK, 4000);
1105 break;
1106 }
1108 {
1109 for (ObjectGuid const& guid : NPC_ChampionGUIDs)
1110 if (Creature* c = instance->GetCreature(guid))
1111 {
1112 c->SetReactState(REACT_AGGRESSIVE);
1113 c->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
1114 c->RemoveUnitMovementFlag(MOVEMENTFLAG_WALKING);
1115 //if( Unit* target = c->SelectNearestTarget(200.0f) )
1116 // c->AI()->AttackStart(target);
1117 }
1118 Map::PlayerList const& pl = instance->GetPlayers();
1119 for (Map::PlayerList::const_iterator itr = pl.begin(); itr != pl.end(); ++itr)
1120 itr->GetSource()->AddToNotify(NOTIFY_AI_RELOCATION);
1122 break;
1123 }
1125 {
1127 c->AI()->Talk(SAY_STAGE_2_06);
1129 c->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP);
1130 break;
1131 }
1132 case EVENT_SCENE_301:
1133 {
1135 c->AI()->Talk(SAY_STAGE_3_01);
1136
1137 events.RescheduleEvent(EVENT_SCENE_302, 13000);
1138 break;
1139 }
1140 case EVENT_SCENE_302:
1141 {
1143 c->AI()->Talk(SAY_STAGE_3_02);
1144
1145 events.RescheduleEvent(EVENT_SCENE_303, 3000);
1146 break;
1147 }
1148 case EVENT_SCENE_303:
1149 {
1152 {
1155 t->GetMotionMaster()->MovePoint(0, Locs[LOC_VALKYR_DEST_RIGHT].GetPositionX(), Locs[LOC_VALKYR_DEST_RIGHT].GetPositionY(), Locs[LOC_VALKYR_DEST_RIGHT].GetPositionZ());
1157 t->GetMotionMaster()->MovePoint(0, Locs[LOC_VALKYR_DEST_LEFT].GetPositionX(), Locs[LOC_VALKYR_DEST_LEFT].GetPositionY(), Locs[LOC_VALKYR_DEST_LEFT].GetPositionZ());
1158 }
1159
1160 events.RescheduleEvent(EVENT_SCENE_304, 6250);
1161 break;
1162 }
1163 case EVENT_SCENE_304:
1164 {
1168 c->GetMotionMaster()->MovePoint(0, Locs[LOC_VALKYR_DEST_2_RIGHT].GetPositionX(), Locs[LOC_VALKYR_DEST_2_RIGHT].GetPositionY(), Locs[LOC_VALKYR_DEST_2_RIGHT].GetPositionZ());
1170 c->GetMotionMaster()->MovePoint(0, Locs[LOC_VALKYR_DEST_2_LEFT].GetPositionX(), Locs[LOC_VALKYR_DEST_2_LEFT].GetPositionY(), Locs[LOC_VALKYR_DEST_2_LEFT].GetPositionZ());
1171
1172 events.RescheduleEvent(EVENT_VALKYRIES_ATTACK, 3250);
1173 break;
1174 }
1176 {
1178 {
1179 c->SetReactState(REACT_AGGRESSIVE);
1180 c->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
1181 /*if( Unit* target = c->SelectNearestTarget(200.0f) )
1182 {
1183 c->AI()->AttackStart(target);
1184 c->AI()->DoZoneInCombat();
1185 }*/
1186 }
1188 {
1189 c->SetReactState(REACT_AGGRESSIVE);
1190 c->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
1191 /*if( Unit* target = c->SelectNearestTarget(200.0f) )
1192 {
1193 c->AI()->AttackStart(target);
1194 c->AI()->DoZoneInCombat();
1195 }*/
1196 }
1197 break;
1198 }
1200 {
1202 {
1203 Map::PlayerList const& pl = instance->GetPlayers();
1204 for( Map::PlayerList::const_iterator itr = pl.begin(); itr != pl.end(); ++itr )
1205 if( Player* plr = itr->GetSource() )
1206 if( !plr->IsGameMaster() )
1207 {
1208 TeamIdInInstance = plr->GetTeamId();
1209 break;
1210 }
1211 }
1214
1215 events.RescheduleEvent(EVENT_SCENE_401, 60000);
1216 break;
1217 }
1218 case EVENT_SCENE_401:
1219 {
1221 c->AI()->Talk(SAY_STAGE_4_01);
1222
1223 events.RescheduleEvent(EVENT_SCENE_402, 20000);
1224 break;
1225 }
1226 case EVENT_SCENE_402:
1227 {
1232 {
1233 t->SetReactState(REACT_PASSIVE);
1234 t->AddUnitMovementFlag(MOVEMENTFLAG_WALKING);
1235 t->SetDisplayId(11686);
1236 t->AI()->Talk(SAY_STAGE_4_02);
1237 t->SetVisible(false);
1238 }
1239
1240 events.RescheduleEvent(EVENT_SCENE_403, 2000);
1241 break;
1242 }
1243 case EVENT_SCENE_403:
1244 {
1247 {
1248 t->SetReactState(REACT_PASSIVE);
1249 t->CastSpell(t, 51807, true);
1250 }
1251
1252 events.RescheduleEvent(EVENT_SCENE_404, 2000);
1253 break;
1254 }
1255 case EVENT_SCENE_404:
1256 {
1258 {
1259 c->SetDisplayId(c->GetNativeDisplayId());
1260 c->SetVisible(true);
1261 c->GetMotionMaster()->MovePoint(0, Locs[LOC_ARTHAS]);
1262 }
1263
1264 events.RescheduleEvent(EVENT_SCENE_405, 3000);
1265 break;
1266 }
1267 case EVENT_SCENE_405:
1268 {
1270 c->AI()->Talk(SAY_STAGE_4_03);
1271
1272 events.RescheduleEvent(EVENT_SCENE_406, 7000);
1273 break;
1274 }
1275 case EVENT_SCENE_406:
1276 {
1278 {
1279 c->AI()->Talk(SAY_STAGE_4_04);
1280 c->HandleEmoteCommand(EMOTE_ONESHOT_LAUGH);
1281 }
1282
1283 events.RescheduleEvent(EVENT_SCENE_406_2, 2500);
1284 events.RescheduleEvent(EVENT_SCENE_407, 12000);
1285 break;
1286 }
1287 case EVENT_SCENE_406_2:
1288 {
1290 {
1291 c->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_TALK);
1292 }
1293
1294 break;
1295 }
1296
1297 case EVENT_SCENE_407:
1298 {
1300 c->HandleEmoteCommand(EMOTE_ONESHOT_EXCLAMATION);
1301
1302 events.RescheduleEvent(EVENT_SCENE_408, 4000);
1303 break;
1304 }
1305 case EVENT_SCENE_408:
1306 {
1308 {
1309 c->HandleEmoteCommand(EMOTE_ONESHOT_KNEEL);
1310 }
1311
1312 events.RescheduleEvent(EVENT_SCENE_409, 1500);
1313 break;
1314 }
1315 case EVENT_SCENE_409:
1316 {
1318 {
1320 floor->SetDestructibleState(GO_DESTRUCTIBLE_DAMAGED);//floor->ModifyHealth(-10000000, c);
1321 c->CastSpell((Unit*)nullptr, 68193, true);
1322 c->SetVisible(false);
1323 c->SetDisplayId(11686);
1324 if( Creature* t = c->FindNearestCreature(NPC_WORLD_TRIGGER, 500.0f, true) )
1325 t->DespawnOrUnsummon();
1326
1328 SpawnAnubArak();
1329 }
1330
1331 events.RescheduleEvent(EVENT_SCENE_410, 2000);
1332 break;
1333 }
1334 case EVENT_SCENE_410:
1335 {
1337 {
1338 c->SetVisible(true);
1339 c->AI()->Talk(SAY_STAGE_4_05);
1340 c->DespawnOrUnsummon(0);
1341 }
1342
1343 break;
1344 }
1345 case EVENT_SCENE_501:
1346 {
1348 {
1349 c->AI()->Talk(SAY_STAGE_4_06);
1350 c->SummonCreature(NPC_ARGENT_MAGE, Locs[LOC_MAGE].GetPositionX(), Locs[LOC_MAGE].GetPositionY(), Locs[LOC_MAGE].GetPositionZ(), Locs[LOC_MAGE].GetOrientation());
1351 c->SummonGameObject(195682, 668.15f, 134.57f, 142.12f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 630000000);
1352 }
1353
1354 events.RescheduleEvent(EVENT_SCENE_502, 20000);
1355 break;
1356 }
1357 case EVENT_SCENE_502:
1358 {
1359 if( instance->IsHeroic() )
1360 {
1361 uint32 tributeChest = 0;
1363 {
1364 if (AttemptsLeft >= 50)
1365 tributeChest = GO_TRIBUTE_CHEST_10H_99;
1366 else if (AttemptsLeft >= 45)
1367 tributeChest = GO_TRIBUTE_CHEST_10H_50;
1368 else if (AttemptsLeft >= 25)
1369 tributeChest = GO_TRIBUTE_CHEST_10H_45;
1370 else
1371 tributeChest = GO_TRIBUTE_CHEST_10H_25;
1372 }
1374 {
1375 if (AttemptsLeft >= 50)
1376 tributeChest = GO_TRIBUTE_CHEST_25H_99;
1377 else if (AttemptsLeft >= 45)
1378 tributeChest = GO_TRIBUTE_CHEST_25H_50;
1379 else if (AttemptsLeft >= 25)
1380 tributeChest = GO_TRIBUTE_CHEST_25H_45;
1381 else
1382 tributeChest = GO_TRIBUTE_CHEST_25H_25;
1383 }
1384 if (tributeChest)
1386 {
1387 c->AI()->Talk(SAY_STAGE_4_07);
1388 if (GameObject* chest = c->SummonGameObject(tributeChest, 665.12f, 143.78f, 142.12f, 0.0f, 0, 0, 0, 0, 90000000))
1389 {
1390 chest->SetRespawnTime(chest->GetRespawnDelay());
1391 chest->SetLootRecipient(instance);
1392 }
1393 }
1394 }
1395 break;
1396 }
1397 }
1398 }
@ TEMPSUMMON_MANUAL_DESPAWN
Definition: Object.h:49
@ TEMPSUMMON_TIMED_DESPAWN
Definition: Object.h:44
@ NOTIFY_AI_RELOCATION
Definition: Object.h:63
@ UNIT_NPC_EMOTESTATE
Definition: UpdateFields.h:140
@ REACT_PASSIVE
Definition: Unit.h:1035
@ EVENT_CLOSE_GATE
Definition: trial_of_the_champion.h:69
@ GO_TRIBUTE_CHEST_10H_99
Definition: trial_of_the_crusader.h:209
@ GO_TRIBUTE_CHEST_25H_25
Definition: trial_of_the_crusader.h:210
@ GO_TRIBUTE_CHEST_25H_99
Definition: trial_of_the_crusader.h:213
@ GO_TRIBUTE_CHEST_25H_45
Definition: trial_of_the_crusader.h:211
@ GO_TRIBUTE_CHEST_10H_45
Definition: trial_of_the_crusader.h:207
@ GO_TRIBUTE_CHEST_25H_50
Definition: trial_of_the_crusader.h:212
@ GO_TRIBUTE_CHEST_10H_25
Definition: trial_of_the_crusader.h:206
@ GO_TRIBUTE_CHEST_10H_50
Definition: trial_of_the_crusader.h:208
@ LOC_VALKYR_DEST_2_LEFT
Definition: trial_of_the_crusader.h:310
@ LOC_VALKYR_RIGHT
Definition: trial_of_the_crusader.h:305
@ LOC_BEHIND_GATE
Definition: trial_of_the_crusader.h:300
@ LOC_VALKYR_LEFT
Definition: trial_of_the_crusader.h:306
@ LOC_GATE_FRONT
Definition: trial_of_the_crusader.h:301
@ LOC_DREADSCALE
Definition: trial_of_the_crusader.h:302
@ LOC_MAGE
Definition: trial_of_the_crusader.h:319
@ LOC_ARTHAS_PORTAL
Definition: trial_of_the_crusader.h:311
@ LOC_ARTHAS
Definition: trial_of_the_crusader.h:312
@ LOC_VALKYR_DEST_LEFT
Definition: trial_of_the_crusader.h:308
@ LOC_ACIDMAW
Definition: trial_of_the_crusader.h:303
@ LOC_VALKYR_DEST_2_RIGHT
Definition: trial_of_the_crusader.h:309
@ LOC_VALKYR_DEST_RIGHT
Definition: trial_of_the_crusader.h:307
@ NPC_ALLIANCE_SHAMAN_RESTORATION
Definition: trial_of_the_crusader.h:166
@ NPC_ALLIANCE_MAGE
Definition: trial_of_the_crusader.h:159
@ NPC_ALLIANCE_PALADIN_HOLY
Definition: trial_of_the_crusader.h:160
@ NPC_HORDE_SHAMAN_RESTORATION
Definition: trial_of_the_crusader.h:181
@ NPC_ALLIANCE_DRUID_RESTORATION
Definition: trial_of_the_crusader.h:157
@ NPC_ALLIANCE_DRUID_BALANCE
Definition: trial_of_the_crusader.h:156
@ NPC_ALLIANCE_HUNTER
Definition: trial_of_the_crusader.h:158
@ NPC_HORDE_ROGUE
Definition: trial_of_the_crusader.h:179
@ NPC_HORDE_HUNTER
Definition: trial_of_the_crusader.h:173
@ NPC_PURPLE_GROUND
Definition: trial_of_the_crusader.h:152
@ NPC_ARGENT_MAGE
Definition: trial_of_the_crusader.h:141
@ NPC_HORDE_PRIEST_SHADOW
Definition: trial_of_the_crusader.h:178
@ NPC_HORDE_WARLOCK
Definition: trial_of_the_crusader.h:182
@ NPC_ALLIANCE_ROGUE
Definition: trial_of_the_crusader.h:164
@ NPC_HORDE_PALADIN_RETRIBUTION
Definition: trial_of_the_crusader.h:176
@ NPC_ALLIANCE_WARRIOR
Definition: trial_of_the_crusader.h:168
@ NPC_HORDE_DRUID_RESTORATION
Definition: trial_of_the_crusader.h:172
@ NPC_HORDE_DEATH_KNIGHT
Definition: trial_of_the_crusader.h:170
@ NPC_ALLIANCE_PALADIN_RETRIBUTION
Definition: trial_of_the_crusader.h:161
@ NPC_HORDE_DRUID_BALANCE
Definition: trial_of_the_crusader.h:171
@ NPC_HORDE_WARRIOR
Definition: trial_of_the_crusader.h:183
@ NPC_HORDE_MAGE
Definition: trial_of_the_crusader.h:174
@ NPC_HORDE_SHAMAN_ENHANCEMENT
Definition: trial_of_the_crusader.h:180
@ NPC_ALLIANCE_PRIEST_DISCIPLINE
Definition: trial_of_the_crusader.h:162
@ NPC_HORDE_PRIEST_DISCIPLINE
Definition: trial_of_the_crusader.h:177
@ NPC_ALLIANCE_DEATH_KNIGHT
Definition: trial_of_the_crusader.h:155
@ NPC_ALLIANCE_SHAMAN_ENHANCEMENT
Definition: trial_of_the_crusader.h:165
@ NPC_ALLIANCE_WARLOCK
Definition: trial_of_the_crusader.h:167
@ NPC_HORDE_PALADIN_HOLY
Definition: trial_of_the_crusader.h:175
@ NPC_ALLIANCE_PRIEST_SHADOW
Definition: trial_of_the_crusader.h:163
@ SAY_STAGE_4_07
Definition: trial_of_the_crusader.h:271
@ SAY_STAGE_1_03
Definition: trial_of_the_crusader.h:257
@ SAY_STAGE_1_08
Definition: trial_of_the_crusader.h:227
@ SAY_STAGE_0_06
Definition: trial_of_the_crusader.h:223
@ SAY_STAGE_2_02h
Definition: trial_of_the_crusader.h:249
@ SAY_STAGE_0_02
Definition: trial_of_the_crusader.h:220
@ SAY_STAGE_0_01
Definition: trial_of_the_crusader.h:219
@ SAY_STAGE_4_01
Definition: trial_of_the_crusader.h:234
@ SAY_STAGE_1_10
Definition: trial_of_the_crusader.h:239
@ SAY_STAGE_4_02
Definition: trial_of_the_crusader.h:265
@ SAY_STAGE_4_06
Definition: trial_of_the_crusader.h:270
@ SAY_STAGE_4_04
Definition: trial_of_the_crusader.h:267
@ SAY_STAGE_0_03a
Definition: trial_of_the_crusader.h:238
@ SAY_STAGE_4_05
Definition: trial_of_the_crusader.h:266
@ SAY_STAGE_4_03
Definition: trial_of_the_crusader.h:235
@ SAY_STAGE_0_03h
Definition: trial_of_the_crusader.h:247
@ SAY_STAGE_1_07
Definition: trial_of_the_crusader.h:226
@ SAY_STAGE_1_11
Definition: trial_of_the_crusader.h:228
@ SAY_STAGE_2_04a
Definition: trial_of_the_crusader.h:241
@ SAY_STAGE_2_02a
Definition: trial_of_the_crusader.h:240
@ SAY_STAGE_1_05
Definition: trial_of_the_crusader.h:262
@ SAY_STAGE_1_01
Definition: trial_of_the_crusader.h:225
@ SAY_STAGE_2_01
Definition: trial_of_the_crusader.h:229
@ SAY_STAGE_0_05
Definition: trial_of_the_crusader.h:222
@ SAY_STAGE_3_03a
Definition: trial_of_the_crusader.h:243
@ SAY_STAGE_1_06
Definition: trial_of_the_crusader.h:259
@ SAY_STAGE_1_04
Definition: trial_of_the_crusader.h:258
@ SAY_STAGE_0_04
Definition: trial_of_the_crusader.h:221
@ SAY_STAGE_1_02
Definition: trial_of_the_crusader.h:256
@ SAY_STAGE_3_01
Definition: trial_of_the_crusader.h:232
@ SAY_STAGE_2_06
Definition: trial_of_the_crusader.h:231
@ SAY_STAGE_2_05h
Definition: trial_of_the_crusader.h:251
@ SAY_STAGE_3_03h
Definition: trial_of_the_crusader.h:252
@ SAY_STAGE_3_02
Definition: trial_of_the_crusader.h:233
@ SAY_STAGE_2_04h
Definition: trial_of_the_crusader.h:250
@ SAY_STAGE_2_05a
Definition: trial_of_the_crusader.h:242
@ SAY_STAGE_1_09
Definition: trial_of_the_crusader.h:248
@ SAY_STAGE_2_03
Definition: trial_of_the_crusader.h:230
@ SPELL_WILFRED_PORTAL
Definition: trial_of_the_crusader.h:350
const Position FactionChampionLoc[]
Definition: trial_of_the_crusader.h:322
@ EVENT_SUMMON_CHAMPIONS
Definition: trial_of_the_crusader.h:107
@ EVENT_SCENE_409
Definition: trial_of_the_crusader.h:127
@ EVENT_SCENE_404
Definition: trial_of_the_crusader.h:121
@ EVENT_SCENE_402
Definition: trial_of_the_crusader.h:119
@ EVENT_SCENE_002
Definition: trial_of_the_crusader.h:71
@ EVENT_SCENE_410
Definition: trial_of_the_crusader.h:128
@ EVENT_SCENE_104
Definition: trial_of_the_crusader.h:89
@ EVENT_SCENE_406_2
Definition: trial_of_the_crusader.h:124
@ EVENT_SCENE_407
Definition: trial_of_the_crusader.h:125
@ EVENT_CHAMPIONS_ATTACK
Definition: trial_of_the_crusader.h:108
@ EVENT_ACIDMAW_AND_DREADSCALE_ATTACK
Definition: trial_of_the_crusader.h:79
@ EVENT_GORMOK_ATTACK
Definition: trial_of_the_crusader.h:75
@ EVENT_SCENE_113
Definition: trial_of_the_crusader.h:100
@ EVENT_SUMMON_ICEHOWL
Definition: trial_of_the_crusader.h:81
@ EVENT_SCENE_204
Definition: trial_of_the_crusader.h:105
@ EVENT_SCENE_005_2
Definition: trial_of_the_crusader.h:77
@ EVENT_SCENE_502
Definition: trial_of_the_crusader.h:130
@ EVENT_SCENE_103
Definition: trial_of_the_crusader.h:88
@ EVENT_SCENE_202
Definition: trial_of_the_crusader.h:103
@ EVENT_SCENE_405
Definition: trial_of_the_crusader.h:122
@ EVENT_SCENE_106
Definition: trial_of_the_crusader.h:92
@ EVENT_OPEN_GATE
Definition: trial_of_the_crusader.h:67
@ EVENT_ICEHOWL_ATTACK
Definition: trial_of_the_crusader.h:82
@ EVENT_SCENE_303
Definition: trial_of_the_crusader.h:113
@ EVENT_SCENE_205
Definition: trial_of_the_crusader.h:106
@ EVENT_SUMMON_GORMOK
Definition: trial_of_the_crusader.h:74
@ EVENT_SCENE_403
Definition: trial_of_the_crusader.h:120
@ EVENT_JARAXXUS_ATTACK
Definition: trial_of_the_crusader.h:96
@ EVENT_SCENE_302
Definition: trial_of_the_crusader.h:112
@ EVENT_SCENE_406
Definition: trial_of_the_crusader.h:123
@ EVENT_SCENE_108
Definition: trial_of_the_crusader.h:94
@ EVENT_SCENE_408
Definition: trial_of_the_crusader.h:126
@ EVENT_SCENE_203
Definition: trial_of_the_crusader.h:104
@ EVENT_SCENE_003
Definition: trial_of_the_crusader.h:72
@ EVENT_SCENE_107
Definition: trial_of_the_crusader.h:93
@ EVENT_SUMMON_ACIDMAW_AND_DREADSCALE
Definition: trial_of_the_crusader.h:78
@ EVENT_SCENE_304
Definition: trial_of_the_crusader.h:114
@ EVENT_SCENE_111
Definition: trial_of_the_crusader.h:98
@ EVENT_SUMMON_JARAXXUS
Definition: trial_of_the_crusader.h:90
@ EVENT_VALKYRIES_ATTACK
Definition: trial_of_the_crusader.h:115
@ EVENT_SCENE_109
Definition: trial_of_the_crusader.h:95
@ EVENT_SCENE_105
Definition: trial_of_the_crusader.h:91
@ EVENT_SCENE_112
Definition: trial_of_the_crusader.h:99
@ EVENT_SCENE_102
Definition: trial_of_the_crusader.h:87
@ EMOTE_STATE_SPELL_PRECAST
Definition: SharedDefines.h:1954
@ EMOTE_ONESHOT_KNEEL
Definition: SharedDefines.h:1908
@ EMOTE_ONESHOT_EXCLAMATION
Definition: SharedDefines.h:1899
@ EMOTE_STATE_TALK
Definition: SharedDefines.h:1973
@ EMOTE_ONESHOT_LAUGH
Definition: SharedDefines.h:1903
@ EMOTE_STATE_NONE
Definition: SharedDefines.h:1922
@ LANG_UNIVERSAL
Definition: SharedDefines.h:735
@ TEAM_ALLIANCE
Definition: SharedDefines.h:760
static void Kill(Unit *killer, Unit *victim, bool durabilityLoss=true, WeaponAttackType attackType=BASE_ATTACK, SpellInfo const *spellProto=nullptr, Spell const *spell=nullptr)
Definition: Unit.cpp:17956
uint8 GetSpawnMode() const
Definition: Map.h:420
void DoCheckDedicatedInsanity()
Definition: instance_trial_of_the_crusader.cpp:130

References AttemptsLeft, MapRefMgr::begin(), bSwitcher, ObjectGuid::Clear(), DoCheckDedicatedInsanity(), DoNeedCleanup(), EMOTE_ONESHOT_EXCLAMATION, EMOTE_ONESHOT_KNEEL, EMOTE_ONESHOT_LAUGH, EMOTE_STATE_NONE, EMOTE_STATE_SPELL_PRECAST, EMOTE_STATE_TALK, EncounterStatus, MapRefMgr::end(), EVENT_ACIDMAW_AND_DREADSCALE_ATTACK, EVENT_CHAMPIONS_ATTACK, EVENT_CHECK_PLAYERS, EVENT_CLOSE_GATE, EVENT_GORMOK_ATTACK, EVENT_ICEHOWL_ATTACK, EVENT_JARAXXUS_ATTACK, EVENT_NORTHREND_BEASTS_ENRAGE, EVENT_OPEN_GATE, EVENT_SCENE_001, EVENT_SCENE_002, EVENT_SCENE_003, EVENT_SCENE_004, EVENT_SCENE_005, EVENT_SCENE_005_2, EVENT_SCENE_006, EVENT_SCENE_101, EVENT_SCENE_102, EVENT_SCENE_103, EVENT_SCENE_104, EVENT_SCENE_105, EVENT_SCENE_106, EVENT_SCENE_107, EVENT_SCENE_108, EVENT_SCENE_109, EVENT_SCENE_110, EVENT_SCENE_111, EVENT_SCENE_112, EVENT_SCENE_113, EVENT_SCENE_201, EVENT_SCENE_202, EVENT_SCENE_203, EVENT_SCENE_204, EVENT_SCENE_205, EVENT_SCENE_301, EVENT_SCENE_302, EVENT_SCENE_303, EVENT_SCENE_304, EVENT_SCENE_401, EVENT_SCENE_402, EVENT_SCENE_403, EVENT_SCENE_404, EVENT_SCENE_405, EVENT_SCENE_406, EVENT_SCENE_406_2, EVENT_SCENE_407, EVENT_SCENE_408, EVENT_SCENE_409, EVENT_SCENE_410, EVENT_SCENE_501, EVENT_SCENE_502, EVENT_SCENE_BEASTS_DONE, EVENT_SCENE_FACTION_CHAMPIONS_DEAD, EVENT_SCENE_VALKYR_DEAD, EVENT_SUMMON_ACIDMAW_AND_DREADSCALE, EVENT_SUMMON_CHAMPIONS, EVENT_SUMMON_GORMOK, EVENT_SUMMON_ICEHOWL, EVENT_SUMMON_JARAXXUS, EVENT_VALKYRIES_ATTACK, FactionChampionLoc, WorldObject::FindNearestCreature(), Map::GetCreature(), Map::GetGameObject(), Position::GetOrientation(), Map::GetPlayers(), Position::GetPositionX(), Position::GetPositionY(), Position::GetPositionZ(), Map::GetSpawnMode(), GO_DESTRUCTIBLE_DAMAGED, GO_EnterGateGUID, GO_FloorGUID, GO_MainGateGUID, GO_TRIBUTE_CHEST_10H_25, GO_TRIBUTE_CHEST_10H_45, GO_TRIBUTE_CHEST_10H_50, GO_TRIBUTE_CHEST_10H_99, GO_TRIBUTE_CHEST_25H_25, GO_TRIBUTE_CHEST_25H_45, GO_TRIBUTE_CHEST_25H_50, GO_TRIBUTE_CHEST_25H_99, InstanceScript::HandleGameObject(), IN_PROGRESS, InstanceScript::instance, INSTANCE_PROGRESS_ANUB_ARAK, INSTANCE_PROGRESS_INTRO_DONE, INSTANCE_PROGRESS_JARAXXUS_INTRO_DONE, InstanceCleanup(), InstanceProgress, Map::IsHeroic(), Unit::Kill(), LANG_UNIVERSAL, LOC_ACIDMAW, LOC_ARTHAS, LOC_ARTHAS_PORTAL, LOC_BEHIND_GATE, LOC_CENTER, LOC_DREADSCALE, LOC_GATE_FRONT, LOC_MAGE, LOC_VALKYR_DEST_2_LEFT, LOC_VALKYR_DEST_2_RIGHT, LOC_VALKYR_DEST_LEFT, LOC_VALKYR_DEST_RIGHT, LOC_VALKYR_LEFT, LOC_VALKYR_RIGHT, Locs, MOVEMENTFLAG_WALKING, northrendBeastsMask, NOTIFY_AI_RELOCATION, NPC_ACIDMAW, NPC_AcidmawGUID, NPC_ALLIANCE_DEATH_KNIGHT, NPC_ALLIANCE_DRUID_BALANCE, NPC_ALLIANCE_DRUID_RESTORATION, NPC_ALLIANCE_HUNTER, NPC_ALLIANCE_MAGE, NPC_ALLIANCE_PALADIN_HOLY, NPC_ALLIANCE_PALADIN_RETRIBUTION, NPC_ALLIANCE_PRIEST_DISCIPLINE, NPC_ALLIANCE_PRIEST_SHADOW, NPC_ALLIANCE_ROGUE, NPC_ALLIANCE_SHAMAN_ENHANCEMENT, NPC_ALLIANCE_SHAMAN_RESTORATION, NPC_ALLIANCE_WARLOCK, NPC_ALLIANCE_WARRIOR, NPC_ARGENT_MAGE, NPC_BarrettGUID, NPC_ChampionGUIDs, NPC_DARKBANE, NPC_DarkbaneGUID, NPC_DREADSCALE, NPC_DreadscaleGUID, NPC_FIZZLEBANG, NPC_FizzlebangGUID, NPC_GarroshGUID, NPC_GORMOK, NPC_GormokGUID, NPC_HORDE_DEATH_KNIGHT, NPC_HORDE_DRUID_BALANCE, NPC_HORDE_DRUID_RESTORATION, NPC_HORDE_HUNTER, NPC_HORDE_MAGE, NPC_HORDE_PALADIN_HOLY, NPC_HORDE_PALADIN_RETRIBUTION, NPC_HORDE_PRIEST_DISCIPLINE, NPC_HORDE_PRIEST_SHADOW, NPC_HORDE_ROGUE, NPC_HORDE_SHAMAN_ENHANCEMENT, NPC_HORDE_SHAMAN_RESTORATION, NPC_HORDE_WARLOCK, NPC_HORDE_WARRIOR, NPC_ICEHOWL, NPC_IcehowlGUID, NPC_JARAXXUS, NPC_JaraxxusGUID, NPC_LICH_KING, NPC_LichKingGUID, NPC_LIGHTBANE, NPC_LightbaneGUID, NPC_PortalGUID, NPC_PURPLE_GROUND, NPC_PurpleGroundGUID, NPC_TirionGUID, NPC_VarianGUID, NPC_WORLD_TRIGGER, RAID_DIFFICULTY_10MAN_HEROIC, RAID_DIFFICULTY_10MAN_NORMAL, RAID_DIFFICULTY_25MAN_HEROIC, RAID_DIFFICULTY_25MAN_NORMAL, REACT_AGGRESSIVE, REACT_PASSIVE, SAY_STAGE_0_01, SAY_STAGE_0_02, SAY_STAGE_0_03a, SAY_STAGE_0_03h, SAY_STAGE_0_04, SAY_STAGE_0_05, SAY_STAGE_0_06, SAY_STAGE_1_01, SAY_STAGE_1_02, SAY_STAGE_1_03, SAY_STAGE_1_04, SAY_STAGE_1_05, SAY_STAGE_1_06, SAY_STAGE_1_07, SAY_STAGE_1_08, SAY_STAGE_1_09, SAY_STAGE_1_10, SAY_STAGE_1_11, SAY_STAGE_2_01, SAY_STAGE_2_02a, SAY_STAGE_2_02h, SAY_STAGE_2_03, SAY_STAGE_2_04a, SAY_STAGE_2_04h, SAY_STAGE_2_05a, SAY_STAGE_2_05h, SAY_STAGE_2_06, SAY_STAGE_3_01, SAY_STAGE_3_02, SAY_STAGE_3_03a, SAY_STAGE_3_03h, SAY_STAGE_4_01, SAY_STAGE_4_02, SAY_STAGE_4_03, SAY_STAGE_4_04, SAY_STAGE_4_05, SAY_STAGE_4_06, SAY_STAGE_4_07, SpawnAnubArak(), SPELL_WILFRED_PORTAL, Map::SummonCreature(), WorldObject::SummonCreature(), WorldObject::SummonGameObject(), TEAM_ALLIANCE, TEAM_NEUTRAL, TeamIdInInstance, TEMPSUMMON_CORPSE_TIMED_DESPAWN, TEMPSUMMON_MANUAL_DESPAWN, TEMPSUMMON_TIMED_DESPAWN, UNIT_FLAG_NON_ATTACKABLE, UNIT_NPC_EMOTESTATE, UNIT_NPC_FLAG_GOSSIP, and urand().

◆ WriteSaveDataMore()

void instance_trial_of_the_crusader::instance_trial_of_the_crusader_InstanceMapScript::WriteSaveDataMore ( std::ostringstream &  data)
inlineoverridevirtual

Reimplemented from InstanceScript.

1612 {
1613 data << InstanceProgress;
1614
1615 if (instance->IsHeroic())
1616 {
1617 data << ' '
1618 << AttemptsLeft << ' '
1619 << (bDedicatedInsanity ? 1 : 0) << ' '
1620 << (bNooneDied ? 1 : 0);
1621 }
1622 }

References AttemptsLeft, bDedicatedInsanity, bNooneDied, InstanceScript::instance, InstanceProgress, and Map::IsHeroic().

Member Data Documentation

◆ AchievementTimer

uint32 instance_trial_of_the_crusader::instance_trial_of_the_crusader_InstanceMapScript::AchievementTimer

Referenced by Initialize(), and SetData().

◆ AttemptsLeft

uint32 instance_trial_of_the_crusader::instance_trial_of_the_crusader_InstanceMapScript::AttemptsLeft

◆ bDedicatedInsanity

bool instance_trial_of_the_crusader::instance_trial_of_the_crusader_InstanceMapScript::bDedicatedInsanity

◆ bNooneDied

bool instance_trial_of_the_crusader::instance_trial_of_the_crusader_InstanceMapScript::bNooneDied

◆ bSwitcher

bool instance_trial_of_the_crusader::instance_trial_of_the_crusader_InstanceMapScript::bSwitcher

Referenced by Initialize(), and Update().

◆ CLEANED

bool instance_trial_of_the_crusader::instance_trial_of_the_crusader_InstanceMapScript::CLEANED

◆ Counter

uint8 instance_trial_of_the_crusader::instance_trial_of_the_crusader_InstanceMapScript::Counter

◆ EncounterStatus

uint32 instance_trial_of_the_crusader::instance_trial_of_the_crusader_InstanceMapScript::EncounterStatus

◆ events

EventMap instance_trial_of_the_crusader::instance_trial_of_the_crusader_InstanceMapScript::events

◆ GO_EnterGateGUID

ObjectGuid instance_trial_of_the_crusader::instance_trial_of_the_crusader_InstanceMapScript::GO_EnterGateGUID

◆ GO_FloorGUID

ObjectGuid instance_trial_of_the_crusader::instance_trial_of_the_crusader_InstanceMapScript::GO_FloorGUID

◆ GO_MainGateGUID

ObjectGuid instance_trial_of_the_crusader::instance_trial_of_the_crusader_InstanceMapScript::GO_MainGateGUID

◆ GO_WebDoorGUID

ObjectGuid instance_trial_of_the_crusader::instance_trial_of_the_crusader_InstanceMapScript::GO_WebDoorGUID

◆ InstanceProgress

uint32 instance_trial_of_the_crusader::instance_trial_of_the_crusader_InstanceMapScript::InstanceProgress

◆ northrendBeastsMask

uint8 instance_trial_of_the_crusader::instance_trial_of_the_crusader_InstanceMapScript::northrendBeastsMask

◆ NPC_AcidmawGUID

ObjectGuid instance_trial_of_the_crusader::instance_trial_of_the_crusader_InstanceMapScript::NPC_AcidmawGUID

◆ NPC_AnubarakGUID

ObjectGuid instance_trial_of_the_crusader::instance_trial_of_the_crusader_InstanceMapScript::NPC_AnubarakGUID

◆ NPC_BarrettGUID

ObjectGuid instance_trial_of_the_crusader::instance_trial_of_the_crusader_InstanceMapScript::NPC_BarrettGUID

◆ NPC_ChampionGUIDs

GuidVector instance_trial_of_the_crusader::instance_trial_of_the_crusader_InstanceMapScript::NPC_ChampionGUIDs

◆ NPC_DarkbaneGUID

ObjectGuid instance_trial_of_the_crusader::instance_trial_of_the_crusader_InstanceMapScript::NPC_DarkbaneGUID

◆ NPC_DreadscaleGUID

ObjectGuid instance_trial_of_the_crusader::instance_trial_of_the_crusader_InstanceMapScript::NPC_DreadscaleGUID

◆ NPC_FizzlebangGUID

ObjectGuid instance_trial_of_the_crusader::instance_trial_of_the_crusader_InstanceMapScript::NPC_FizzlebangGUID

◆ NPC_GarroshGUID

ObjectGuid instance_trial_of_the_crusader::instance_trial_of_the_crusader_InstanceMapScript::NPC_GarroshGUID

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

◆ NPC_GormokGUID

ObjectGuid instance_trial_of_the_crusader::instance_trial_of_the_crusader_InstanceMapScript::NPC_GormokGUID

◆ NPC_IcehowlGUID

ObjectGuid instance_trial_of_the_crusader::instance_trial_of_the_crusader_InstanceMapScript::NPC_IcehowlGUID

◆ NPC_JaraxxusGUID

ObjectGuid instance_trial_of_the_crusader::instance_trial_of_the_crusader_InstanceMapScript::NPC_JaraxxusGUID

◆ NPC_LichKingGUID

ObjectGuid instance_trial_of_the_crusader::instance_trial_of_the_crusader_InstanceMapScript::NPC_LichKingGUID

◆ NPC_LightbaneGUID

ObjectGuid instance_trial_of_the_crusader::instance_trial_of_the_crusader_InstanceMapScript::NPC_LightbaneGUID

◆ NPC_PortalGUID

ObjectGuid instance_trial_of_the_crusader::instance_trial_of_the_crusader_InstanceMapScript::NPC_PortalGUID

Referenced by InstanceCleanup(), and Update().

◆ NPC_PurpleGroundGUID

ObjectGuid instance_trial_of_the_crusader::instance_trial_of_the_crusader_InstanceMapScript::NPC_PurpleGroundGUID

Referenced by InstanceCleanup(), and Update().

◆ NPC_TirionGUID

ObjectGuid instance_trial_of_the_crusader::instance_trial_of_the_crusader_InstanceMapScript::NPC_TirionGUID

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

◆ NPC_VarianGUID

ObjectGuid instance_trial_of_the_crusader::instance_trial_of_the_crusader_InstanceMapScript::NPC_VarianGUID

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

◆ str_data

std::string instance_trial_of_the_crusader::instance_trial_of_the_crusader_InstanceMapScript::str_data

◆ TeamIdInInstance

TeamId instance_trial_of_the_crusader::instance_trial_of_the_crusader_InstanceMapScript::TeamIdInInstance

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