diff options
author | Shauren <shauren.trinity@gmail.com> | 2022-09-29 00:39:44 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2022-09-29 00:39:44 +0200 |
commit | 753a9019282c122c3e019a0bf4632b8b19089ecd (patch) | |
tree | c3a5f12cc1ed4f0543808bc8ec0386dcc096cf02 /src | |
parent | 2dc1b69a70f599539c479344c14ec60f98f535bc (diff) |
Scripts/Hyjal: Change boss state management from SetData to SetBossState
Diffstat (limited to 'src')
9 files changed, 91 insertions, 200 deletions
diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_anetheron.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_anetheron.cpp index 2d66df1956c..c45930d1046 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_anetheron.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_anetheron.cpp @@ -82,13 +82,13 @@ public: Initialize(); if (IsEvent) - instance->SetData(DATA_ANETHERONEVENT, NOT_STARTED); + instance->SetBossState(DATA_ANETHERON, NOT_STARTED); } void JustEngagedWith(Unit* /*who*/) override { if (IsEvent) - instance->SetData(DATA_ANETHERONEVENT, IN_PROGRESS); + instance->SetBossState(DATA_ANETHERON, IN_PROGRESS); Talk(SAY_ONAGGRO); } @@ -113,7 +113,7 @@ public: { hyjal_trashAI::JustDied(killer); if (IsEvent) - instance->SetData(DATA_ANETHERONEVENT, DONE); + instance->SetBossState(DATA_ANETHERON, DONE); Talk(SAY_ONDEATH); } @@ -177,7 +177,6 @@ public: DoMeleeAttackIfReady(); } }; - }; class npc_towering_infernal : public CreatureScript @@ -197,12 +196,10 @@ public: ImmolationTimer = 5000; CheckTimer = 5000; instance = creature->GetInstanceScript(); - AnetheronGUID = instance->GetGuidData(DATA_ANETHERON); } uint32 ImmolationTimer; uint32 CheckTimer; - ObjectGuid AnetheronGUID; InstanceScript* instance; void Reset() override @@ -235,14 +232,11 @@ public: { if (CheckTimer <= diff) { - if (AnetheronGUID) + Creature* boss = instance->GetCreature(DATA_ANETHERON); + if (!boss || boss->isDead()) { - Creature* boss = ObjectAccessor::GetCreature(*me, AnetheronGUID); - if (!boss || boss->isDead()) - { - me->DespawnOrUnsummon(); - return; - } + me->DespawnOrUnsummon(); + return; } CheckTimer = 5000; } else CheckTimer -= diff; @@ -260,7 +254,6 @@ public: DoMeleeAttackIfReady(); } }; - }; // 38196 - Vampiric Aura diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_archimonde.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_archimonde.cpp index f86a813e490..18576af9a32 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_archimonde.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_archimonde.cpp @@ -147,7 +147,7 @@ public: { if (CheckTimer <= diff) { - if (Creature* Archimonde = ObjectAccessor::GetCreature(*me, ArchimondeGUID)) + if (Creature* Archimonde = instance->GetCreature(DATA_ARCHIMONDE)) { if (Archimonde->HealthBelowPct(2) || !Archimonde->IsAlive()) DoCast(me, SPELL_DENOUEMENT_WISP); diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_azgalor.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_azgalor.cpp index cd7bc6c7868..ca034462c35 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_azgalor.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_azgalor.cpp @@ -86,13 +86,13 @@ public: Initialize(); if (IsEvent) - instance->SetData(DATA_AZGALOREVENT, NOT_STARTED); + instance->SetBossState(DATA_AZGALOR, NOT_STARTED); } void JustEngagedWith(Unit* /*who*/) override { if (IsEvent) - instance->SetData(DATA_AZGALOREVENT, IN_PROGRESS); + instance->SetBossState(DATA_AZGALOR, IN_PROGRESS); Talk(SAY_ONAGGRO); } @@ -116,7 +116,7 @@ public: { hyjal_trashAI::JustDied(killer); if (IsEvent) - instance->SetData(DATA_AZGALOREVENT, DONE); + instance->SetBossState(DATA_AZGALOR, DONE); Talk(SAY_ONDEATH); } diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_kazrogal.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_kazrogal.cpp index cdcf56f5e96..ff1c108d4a2 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_kazrogal.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_kazrogal.cpp @@ -82,13 +82,13 @@ public: Initialize(); if (IsEvent) - instance->SetData(DATA_KAZROGALEVENT, NOT_STARTED); + instance->SetBossState(DATA_KAZROGAL, NOT_STARTED); } void JustEngagedWith(Unit* /*who*/) override { if (IsEvent) - instance->SetData(DATA_KAZROGALEVENT, IN_PROGRESS); + instance->SetBossState(DATA_KAZROGAL, IN_PROGRESS); Talk(SAY_ONAGGRO); } @@ -111,7 +111,7 @@ public: { hyjal_trashAI::JustDied(killer); if (IsEvent) - instance->SetData(DATA_KAZROGALEVENT, DONE); + instance->SetBossState(DATA_KAZROGAL, DONE); DoPlaySoundToSet(me, SOUND_ONDEATH); } diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_rage_winterchill.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_rage_winterchill.cpp index 47b1d5d3c84..05c520cd470 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_rage_winterchill.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_rage_winterchill.cpp @@ -77,13 +77,13 @@ public: Initialize(); if (IsEvent) - instance->SetData(DATA_RAGEWINTERCHILLEVENT, NOT_STARTED); + instance->SetBossState(DATA_RAGEWINTERCHILL, NOT_STARTED); } void JustEngagedWith(Unit* /*who*/) override { if (IsEvent) - instance->SetData(DATA_RAGEWINTERCHILLEVENT, IN_PROGRESS); + instance->SetBossState(DATA_RAGEWINTERCHILL, IN_PROGRESS); Talk(SAY_ONAGGRO); } @@ -106,7 +106,7 @@ public: { hyjal_trashAI::JustDied(killer); if (IsEvent) - instance->SetData(DATA_RAGEWINTERCHILLEVENT, DONE); + instance->SetBossState(DATA_RAGEWINTERCHILL, DONE); Talk(SAY_ONDEATH); } @@ -162,7 +162,6 @@ public: DoMeleeAttackIfReady(); } }; - }; void AddSC_boss_rage_winterchill() diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjal.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjal.cpp index 3b8a5ebcc1a..57c4983eb7a 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjal.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjal.cpp @@ -115,14 +115,14 @@ class npc_jaina_proudmoore : public CreatureScript if (EventBegun) return false; - uint32 RageEncounter = GetInstanceData(DATA_RAGEWINTERCHILLEVENT); - uint32 AnetheronEncounter = GetInstanceData(DATA_ANETHERONEVENT); - if (RageEncounter == NOT_STARTED) + uint32 RageEncounter = instance->GetBossState(DATA_RAGEWINTERCHILL); + uint32 AnetheronEncounter = instance->GetBossState(DATA_ANETHERON); + if (RageEncounter != DONE && RageEncounter != IN_PROGRESS) { AddGossipItemFor(player, GOSSIP_ITEM_BEGIN_ALLY_MID, GOSSIP_ITEM_BEGIN_ALLY_OID, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1); SendGossipMenuFor(player, 9168, me->GetGUID()); } - else if (RageEncounter == DONE && AnetheronEncounter == NOT_STARTED) + else if (RageEncounter == DONE && AnetheronEncounter != DONE && AnetheronEncounter != IN_PROGRESS) { AddGossipItemFor(player, GOSSIP_ITEM_ANETHERON_MID, GOSSIP_ITEM_ANETHERON_OID, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2); SendGossipMenuFor(player, 9380, me->GetGUID()); @@ -194,18 +194,18 @@ class npc_thrall : public CreatureScript if (EventBegun) return false; - uint32 AnetheronEvent = GetInstanceData(DATA_ANETHERONEVENT); + uint32 AnetheronEvent = instance->GetBossState(DATA_ANETHERON); // Only let them start the Horde phases if Anetheron is dead. if (AnetheronEvent == DONE && GetInstanceData(DATA_ALLIANCE_RETREAT)) { - uint32 KazrogalEvent = GetInstanceData(DATA_KAZROGALEVENT); - uint32 AzgalorEvent = GetInstanceData(DATA_AZGALOREVENT); - if (KazrogalEvent == NOT_STARTED) + uint32 KazrogalEvent = instance->GetBossState(DATA_KAZROGAL); + uint32 AzgalorEvent = instance->GetBossState(DATA_AZGALOR); + if (KazrogalEvent != DONE && AzgalorEvent != IN_PROGRESS) { AddGossipItemFor(player, GOSSIP_ITEM_BEGIN_HORDE_MID, GOSSIP_ITEM_BEGIN_HORDE_OID, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1); SendGossipMenuFor(player, 9225, me->GetGUID()); } - else if (KazrogalEvent == DONE && AzgalorEvent == NOT_STARTED) + else if (KazrogalEvent == DONE && AzgalorEvent != DONE && AzgalorEvent != IN_PROGRESS) { AddGossipItemFor(player, GOSSIP_ITEM_AZGALOR_MID, GOSSIP_ITEM_AZGALOR_OID, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2); SendGossipMenuFor(player, 9396, me->GetGUID()); @@ -260,7 +260,7 @@ class npc_tyrande_whisperwind : public CreatureScript bool OnGossipHello(Player* player) override { - uint32 AzgalorEvent = GetInstanceData(DATA_AZGALOREVENT); + uint32 AzgalorEvent = instance->GetBossState(DATA_AZGALOR); // Only let them get item if Azgalor is dead. if (AzgalorEvent == DONE && !player->HasItemCount(ITEM_TEAR_OF_GODDESS)) diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjal.h b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjal.h index ad4ea550da0..da8ad8ed1e0 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjal.h +++ b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjal.h @@ -27,27 +27,23 @@ uint32 const EncounterCount = 5; enum HYDataTypes { + DATA_RAGEWINTERCHILL = 0, DATA_ANETHERON = 1, - DATA_ANETHERONEVENT = 2, - DATA_ARCHIMONDE = 3, - DATA_ARCHIMONDEEVENT = 4, - DATA_AZGALOR = 5, - DATA_AZGALOREVENT = 6, - DATA_JAINAPROUDMOORE = 7, - DATA_KAZROGAL = 8, - DATA_KAZROGALEVENT = 9, - DATA_RAGEWINTERCHILL = 10, - DATA_RAGEWINTERCHILLEVENT = 11, - DATA_THRALL = 12, - DATA_TYRANDEWHISPERWIND = 13, - DATA_TRASH = 14, - DATA_RESET_TRASH_COUNT = 15, - DATA_ALLIANCE_RETREAT = 16, - DATA_HORDE_RETREAT = 17, - DATA_RAIDDAMAGE = 18, - DATA_RESET_RAIDDAMAGE = 19, - TYPE_RETREAT = 20, - DATA_CHANNEL_TARGET = 21 + DATA_KAZROGAL = 2, + DATA_AZGALOR = 3, + DATA_ARCHIMONDE = 4, + + DATA_JAINAPROUDMOORE = 5, + DATA_THRALL = 6, + DATA_TYRANDEWHISPERWIND = 7, + DATA_TRASH = 8, + DATA_RESET_TRASH_COUNT = 9, + DATA_ALLIANCE_RETREAT = 10, + DATA_HORDE_RETREAT = 11, + DATA_RAIDDAMAGE = 12, + DATA_RESET_RAIDDAMAGE = 13, + TYPE_RETREAT = 14, + DATA_CHANNEL_TARGET = 15 }; enum HYWorldStateIds diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjalAI.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjalAI.cpp index a3620020435..b60826b64c1 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjalAI.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjalAI.cpp @@ -903,15 +903,6 @@ void hyjalAI::JustDied(Unit* /*killer*/) RespawnTimer = 120000; Talk(DEATH); Summons.DespawnAll();//despawn all wave's summons - //reset encounter if boss is despawned (ex: thrall is killed, boss despawns, event stucks at inprogress) - if (instance->GetData(DATA_RAGEWINTERCHILLEVENT) == IN_PROGRESS) - instance->SetData(DATA_RAGEWINTERCHILLEVENT, NOT_STARTED); - if (instance->GetData(DATA_ANETHERONEVENT) == IN_PROGRESS) - instance->SetData(DATA_ANETHERONEVENT, NOT_STARTED); - if (instance->GetData(DATA_KAZROGALEVENT) == IN_PROGRESS) - instance->SetData(DATA_KAZROGALEVENT, NOT_STARTED); - if (instance->GetData(DATA_AZGALOREVENT) == IN_PROGRESS) - instance->SetData(DATA_AZGALOREVENT, NOT_STARTED); instance->SetData(DATA_RESET_RAIDDAMAGE, 0);//reset damage on die } diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/instance_hyjal.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/instance_hyjal.cpp index 652e3f007a9..9a017828b78 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/instance_hyjal.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/instance_hyjal.cpp @@ -46,8 +46,16 @@ enum Yells ObjectData const creatureData[] = { - { NPC_CHANNEL_TARGET, DATA_CHANNEL_TARGET }, - { 0, 0 } // END + { RAGE_WINTERCHILL, DATA_RAGEWINTERCHILL }, + { ANETHERON, DATA_ANETHERON }, + { KAZROGAL, DATA_KAZROGAL }, + { AZGALOR, DATA_AZGALOR }, + { ARCHIMONDE, DATA_ARCHIMONDE }, + { JAINA, DATA_JAINAPROUDMOORE }, + { THRALL, DATA_THRALL }, + { TYRANDE, DATA_TYRANDEWHISPERWIND }, + { NPC_CHANNEL_TARGET, DATA_CHANNEL_TARGET }, + { 0, 0 } // END }; class instance_hyjal : public InstanceMapScript @@ -65,8 +73,8 @@ public: instance_mount_hyjal_InstanceMapScript(InstanceMap* map) : InstanceScript(map) { SetHeaders(DataHeader); + SetBossNumber(EncounterCount); LoadObjectData(creatureData, nullptr); - memset(&m_auiEncounter, 0, sizeof(m_auiEncounter)); RaidDamage = 0; Trash = 0; @@ -76,15 +84,6 @@ public: ArchiYell = false; } - bool IsEncounterInProgress() const override - { - for (uint8 i = 0; i < EncounterCount; ++i) - if (m_auiEncounter[i] == IN_PROGRESS) - return true; - - return false; - } - void OnGameObjectCreate(GameObject* go) override { switch (go->GetEntry()) @@ -107,101 +106,30 @@ public: m_uiAncientGemGUID.push_back(go->GetGUID()); break; } + + InstanceScript::OnGameObjectCreate(go); } void OnCreatureCreate(Creature* creature) override { switch (creature->GetEntry()) { - case RAGE_WINTERCHILL: - RageWinterchill = creature->GetGUID(); - break; - case ANETHERON: - Anetheron = creature->GetGUID(); - break; - case KAZROGAL: - Kazrogal = creature->GetGUID(); - break; - case AZGALOR: - Azgalor = creature->GetGUID(); - break; case ARCHIMONDE: - Archimonde = creature->GetGUID(); - if (GetData(DATA_AZGALOREVENT) != DONE) + if (GetBossState(DATA_AZGALOR) != DONE) { creature->SetVisible(false); creature->SetReactState(REACT_PASSIVE); } break; - case JAINA: - JainaProudmoore = creature->GetGUID(); - break; - case THRALL: - Thrall = creature->GetGUID(); - break; - case TYRANDE: - TyrandeWhisperwind = creature->GetGUID(); - break; - case NPC_CHANNEL_TARGET: - WorldtreeChannelTarget = creature->GetGUID(); - break; } InstanceScript::OnCreatureCreate(creature); } - ObjectGuid GetGuidData(uint32 identifier) const override - { - switch (identifier) - { - case DATA_RAGEWINTERCHILL: return RageWinterchill; - case DATA_ANETHERON: return Anetheron; - case DATA_KAZROGAL: return Kazrogal; - case DATA_AZGALOR: return Azgalor; - case DATA_ARCHIMONDE: return Archimonde; - case DATA_JAINAPROUDMOORE: return JainaProudmoore; - case DATA_THRALL: return Thrall; - case DATA_TYRANDEWHISPERWIND: return TyrandeWhisperwind; - case DATA_CHANNEL_TARGET: return WorldtreeChannelTarget; - } - - return ObjectGuid::Empty; - } - void SetData(uint32 type, uint32 data) override { switch (type) { - case DATA_RAGEWINTERCHILLEVENT: - m_auiEncounter[0] = data; - break; - case DATA_ANETHERONEVENT: - m_auiEncounter[1] = data; - break; - case DATA_KAZROGALEVENT: - m_auiEncounter[2] = data; - break; - case DATA_AZGALOREVENT: - m_auiEncounter[3] = data; - if (data == DONE) - { - instance->LoadGrid(5581.49f, -3445.63f); - if (Creature* archimonde = instance->GetCreature(Archimonde)) - { - archimonde->SetVisible(true); - archimonde->SetReactState(REACT_AGGRESSIVE); - - if (!ArchiYell) - { - ArchiYell = true; - archimonde->AI()->Talk(YELL_ARCHIMONDE_INTRO); - } - } - } - break; - case DATA_ARCHIMONDEEVENT: - m_auiEncounter[4] = data; - break; case DATA_RESET_TRASH_COUNT: Trash = 0; break; @@ -245,35 +173,52 @@ public: break; } - TC_LOG_DEBUG("scripts", "Instance Hyjal: Instance data updated for event %u (Data=%u)", type, data); + TC_LOG_DEBUG("scripts", "Instance Hyjal: Instance data updated for event %u (Data=%u)", type, data); + } - if (data == DONE) + bool SetBossState(uint32 id, EncounterState state) override + { + if (!InstanceScript::SetBossState(id, state)) + return false; + + switch (id) { - OUT_SAVE_INST_DATA; + case DATA_AZGALOR: + if (state == DONE) + { + instance->LoadGrid(5581.49f, -3445.63f); + if (Creature* archimonde = GetCreature(DATA_ARCHIMONDE)) + { + archimonde->SetVisible(true); + archimonde->SetReactState(REACT_AGGRESSIVE); - std::ostringstream saveStream; - saveStream << m_auiEncounter[0] << ' ' << m_auiEncounter[1] << ' ' << m_auiEncounter[2] << ' ' - << m_auiEncounter[3] << ' ' << m_auiEncounter[4] - << ' ' << allianceRetreat << ' ' << hordeRetreat - << ' ' << RaidDamage; + if (!ArchiYell) + { + ArchiYell = true; + archimonde->AI()->Talk(YELL_ARCHIMONDE_INTRO); + } + } + } + break; + } - str_data = saveStream.str(); + return true; + } - SaveToDB(); - OUT_SAVE_INST_DATA_COMPLETE; - } + void ReadSaveDataMore(std::istringstream& loadStream) override + { + loadStream >> allianceRetreat >> hordeRetreat >> RaidDamage; + } + void WriteSaveDataMore(std::ostringstream& saveStream) override + { + saveStream << allianceRetreat << ' ' << hordeRetreat << ' ' << RaidDamage; } uint32 GetData(uint32 type) const override { switch (type) { - case DATA_RAGEWINTERCHILLEVENT: return m_auiEncounter[0]; - case DATA_ANETHERONEVENT: return m_auiEncounter[1]; - case DATA_KAZROGALEVENT: return m_auiEncounter[2]; - case DATA_AZGALOREVENT: return m_auiEncounter[3]; - case DATA_ARCHIMONDEEVENT: return m_auiEncounter[4]; case DATA_TRASH: return Trash; case DATA_ALLIANCE_RETREAT: return allianceRetreat; case DATA_HORDE_RETREAT: return hordeRetreat; @@ -282,41 +227,8 @@ public: return 0; } - std::string GetSaveData() override - { - return str_data; - } - - void Load(char const* in) override - { - if (!in) - { - OUT_LOAD_INST_DATA_FAIL; - return; - } - - OUT_LOAD_INST_DATA(in); - std::istringstream loadStream(in); - loadStream >> m_auiEncounter[0] >> m_auiEncounter[1] >> m_auiEncounter[2] >> m_auiEncounter[3] >> m_auiEncounter[4] >> allianceRetreat >> hordeRetreat >> RaidDamage; - for (uint8 i = 0; i < EncounterCount; ++i) - if (m_auiEncounter[i] == IN_PROGRESS) // Do not load an encounter as IN_PROGRESS - reset it instead. - m_auiEncounter[i] = NOT_STARTED; - OUT_LOAD_INST_DATA_COMPLETE; - } - protected: - uint32 m_auiEncounter[EncounterCount]; - std::string str_data; GuidList m_uiAncientGemGUID; - ObjectGuid RageWinterchill; - ObjectGuid Anetheron; - ObjectGuid Kazrogal; - ObjectGuid Azgalor; - ObjectGuid Archimonde; - ObjectGuid JainaProudmoore; - ObjectGuid Thrall; - ObjectGuid TyrandeWhisperwind; - ObjectGuid WorldtreeChannelTarget; ObjectGuid HordeGate; ObjectGuid ElfGate; uint32 Trash; |