diff options
author | Machiavelli <none@none> | 2010-12-26 23:35:12 +0100 |
---|---|---|
committer | Machiavelli <none@none> | 2010-12-26 23:35:12 +0100 |
commit | f0d884ee20b48f0dd85820b57561c40e2bc4e480 (patch) | |
tree | 4cb1f282b09401273cc928b7380c77ffd93691d6 | |
parent | 4881f3948d3d7feb1b0d147d8a20e16bc6df647b (diff) |
Scripts/Ulduar: Implement script for General Vezax encounter.
Based on original patch by Lopin -- thank you!
--HG--
branch : trunk
-rw-r--r-- | sql/scripts/world_script_texts.sql | 4 | ||||
-rw-r--r-- | sql/scripts/world_scripts_full.sql | 3 | ||||
-rw-r--r-- | sql/updates/10840_world_script_texts.sql | 7 | ||||
-rw-r--r-- | sql/updates/10840_world_scriptname.sql | 3 | ||||
-rwxr-xr-x | src/server/game/Scripting/ScriptLoader.cpp | 2 | ||||
-rw-r--r-- | src/server/scripts/Northrend/Ulduar/ulduar/boss_general_vezax.cpp | 403 | ||||
-rw-r--r-- | src/server/scripts/Northrend/Ulduar/ulduar/instance_ulduar.cpp | 12 |
7 files changed, 425 insertions, 9 deletions
diff --git a/sql/scripts/world_script_texts.sql b/sql/scripts/world_script_texts.sql index c8015b9b1ce..1766dba76e2 100644 --- a/sql/scripts/world_script_texts.sql +++ b/sql/scripts/world_script_texts.sql @@ -2580,6 +2580,7 @@ INSERT INTO `script_texts` (`npc_entry`,`entry`,`content_default`,`content_loc1` (33413,-1603287,'Golganneth, lend me your strengh! Grant my mortal allies the power of thunder!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,15750,1,0,0,'Thorim SAY_YS_HELP'), -- General Vezax + (33271,-1603289,'A cloud of saronite vapors coalesces nearby!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,3,0,0,'General Vezax - Emote1'), (33271,-1603290,'Your destruction will herald a new age of suffering!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,15542,1,0,0,'Vezax SAY_AGGRO'), (33271,-1603291,'You thought to stand before the legions of death... and survive?',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,15543,1,0,0,'Vezax SAY_SLAY_1'), (33271,-1603292,'Defiance... a flaw of mortality.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,15544,1,0,0,'Vezax SAY_SLAY_2'), @@ -2587,6 +2588,9 @@ INSERT INTO `script_texts` (`npc_entry`,`entry`,`content_default`,`content_loc1` (33271,-1603294,'Oh, what horrors await....',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,15546,1,0,0,'Vezax SAY_DEATH'), (33271,-1603295,'Your defeat was inevitable!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,15547,1,0,0,'Vezax SAY_BERSERK'), (33271,-1603296,'Behold, now! Terror, absolute!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,15548,1,0,0,'Vezax SAY_HARDMODE_ON'), + (33271,-1603297,'The saronite vapors mass and swirl violently, merging into a monstrous form!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,3,0,0,'General Vezax - Emote2'), + (33271,-1603298,'A saronite barrier appears around General Vezax!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,3,0,0,'General Vezax - Emote3'), + (33271,-1603299,'General Vezax roars and surges with dark might!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,3,0,0,'General Vezax - Emote4'); -- XT002 (33293,-1603300,'New toys? For me? I promise I won''t break them this time!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,15724,1,0,0,'XT002 SAY_AGGRO'), diff --git a/sql/scripts/world_scripts_full.sql b/sql/scripts/world_scripts_full.sql index 7454834d6c0..c6898e326d9 100644 --- a/sql/scripts/world_scripts_full.sql +++ b/sql/scripts/world_scripts_full.sql @@ -1528,6 +1528,9 @@ UPDATE `creature_template` SET `ScriptName`='mob_lightning_elemental' WHERE `ent UPDATE `creature_template` SET `ScriptName`='mob_rune_of_summoning' WHERE `entry`=33051; UPDATE `creature_template` SET `ScriptName`= 'mob_rune_of_power' WHERE entry = 33705; UPDATE `creature_template` SET `ScriptName`='boss_kologarn' WHERE `entry`=32930; +UPDATE `creature_template` SET `ScriptName`='boss_general_vezax' WHERE `entry`=33271; +UPDATE `creature_template` SET `ScriptName`='npc_saronite_vapors' WHERE `entry`=33488; +UPDATE `creature_template` SET `ScriptName`='npc_saronite_animus' WHERE `entry`=33524; UPDATE `creature_template` SET `ScriptName`='boss_algalon' WHERE `entry`=32871; UPDATE `creature_template` SET `ScriptName`='mob_collapsing_star' WHERE `entry`=32955; UPDATE `gameobject_template` SET `ScriptName`='ulduar_teleporter' WHERE `entry`=194569; diff --git a/sql/updates/10840_world_script_texts.sql b/sql/updates/10840_world_script_texts.sql new file mode 100644 index 00000000000..180bea7f12e --- /dev/null +++ b/sql/updates/10840_world_script_texts.sql @@ -0,0 +1,7 @@ +DELETE FROM `script_texts` WHERE `entry` IN (-1603289,-1603297,-1603298,-1603299); +INSERT INTO `script_texts` (`npc_entry`,`entry`,`content_default`,`content_loc1`,`content_loc2`,`content_loc3`,`content_loc4`,`content_loc5`,`content_loc6`,`content_loc7`,`content_loc8`,`sound`,`type`,`language`,`emote`,`comment`) +VALUES +(33271,-1603289,'A cloud of saronite vapors coalesces nearby!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,3,0,0,'General Vezax - Emote1'), +(33271,-1603297,'The saronite vapors mass and swirl violently, merging into a monstrous form!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,3,0,0,'General Vezax - Emote2'), +(33271,-1603298,'A saronite barrier appears around General Vezax!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,3,0,0,'General Vezax - Emote3'), +(33271,-1603299,'General Vezax roars and surges with dark might!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,3,0,0,'General Vezax - Emote4'); diff --git a/sql/updates/10840_world_scriptname.sql b/sql/updates/10840_world_scriptname.sql new file mode 100644 index 00000000000..d24da6225c5 --- /dev/null +++ b/sql/updates/10840_world_scriptname.sql @@ -0,0 +1,3 @@ +UPDATE `creature_template` SET `ScriptName`='boss_general_vezax' WHERE `entry`=33271; -- General Vezax +UPDATE `creature_template` SET `ScriptName`='npc_saronite_vapors' WHERE `entry`=33488; -- Saronite Vapors +UPDATE `creature_template` SET `ScriptName`='npc_saronite_animus' WHERE `entry`=33524; -- Saronite Animus diff --git a/src/server/game/Scripting/ScriptLoader.cpp b/src/server/game/Scripting/ScriptLoader.cpp index 78da1ad549d..ec534b6a26b 100755 --- a/src/server/game/Scripting/ScriptLoader.cpp +++ b/src/server/game/Scripting/ScriptLoader.cpp @@ -418,6 +418,7 @@ void AddSC_boss_razorscale(); void AddSC_boss_xt002(); void AddSC_boss_kologarn(); void AddSC_boss_assembly_of_iron(); +void AddSC_boss_general_vezax(); void AddSC_ulduar_teleporter(); void AddSC_instance_ulduar(); void AddSC_boss_keleseth(); //Utgarde Keep @@ -1101,6 +1102,7 @@ void AddNorthrendScripts() AddSC_boss_ignis(); AddSC_boss_razorscale(); AddSC_boss_xt002(); + AddSC_boss_general_vezax(); AddSC_boss_assembly_of_iron(); AddSC_boss_kologarn(); AddSC_ulduar_teleporter(); diff --git a/src/server/scripts/Northrend/Ulduar/ulduar/boss_general_vezax.cpp b/src/server/scripts/Northrend/Ulduar/ulduar/boss_general_vezax.cpp index 7b573864ee0..a43d8d03d18 100644 --- a/src/server/scripts/Northrend/Ulduar/ulduar/boss_general_vezax.cpp +++ b/src/server/scripts/Northrend/Ulduar/ulduar/boss_general_vezax.cpp @@ -18,13 +18,400 @@ #include "ScriptPCH.h" #include "ulduar.h" -enum Yells +enum eYells { - SAY_AGGRO = -1603290, - SAY_SLAY_1 = -1603291, - SAY_SLAY_2 = -1603292, - SAY_KITE = -1603293, - SAY_DEATH = -1603294, - SAY_BERSERK = -1603295, - SAY_HARDMODE_ON = -1603296, + SAY_AGGRO = -1603290, + SAY_SLAY_1 = -1603291, + SAY_SLAY_2 = -1603292, + SAY_SURGE_OF_DARKNESS = -1603293, + SAY_DEATH = -1603294, + SAY_BERSERK = -1603295, + SAY_HARDMODE = -1603296, }; + +enum eEmotes +{ + EMOTE_VAPORS = -1603289, + EMOTE_ANIMUS = -1603297, + EMOTE_BARRIER = -1603298, + EMOTE_SURGE_OF_DARKNESS = -1603299, +}; + +enum eSpells +{ + SPELL_AURA_OF_DESPAIR = 62692, + SPELL_MARK_OF_THE_FACELESS = 63276, + SPELL_SARONITE_BARRIER = 63364, + SPELL_SEARING_FLAMES = 62661, + SPELL_SHADOW_CRASH = 62660, + SPELL_SHADOW_CRASH_HIT = 62659, + SPELL_SURGE_OF_DARKNESS = 62662, + SPELL_SARONITE_VAPORS = 63323, + SPELL_SUMMON_SARONITE_VAPORS = 63081, + SPELL_PROFOUND_OF_DARKNESS = 63420, + SPELL_BERSERK = 26662, + + SPELL_SUMMON_SARONITE_ANIMUS = 63145, + SPELL_VISUAL_SARONITE_ANIMUS = 63319, + SPELL_PROFOUND_DARKNESS = 63420, + + SPELL_CORRUPTED_RAGE = 68415, + SPELL_SHAMANTIC_RAGE = 30823, +}; + +enum eActions +{ + ACTION_VAPORS_SPAWN, + ACTION_VAPORS_DIE, + ACTION_ANIMUS_DIE, +}; + +enum eEvents +{ + EVENT_SHADOW_CRASH = 1, + EVENT_SEARING_FLAMES = 2, + EVENT_SURGE_OF_DARKNESS = 3, + EVENT_MARK_OF_THE_FACELESS = 4, + EVENT_SARONITE_VAPORS = 5, + EVENT_BERSERK = 6, +}; + +#define ACHIEVEMENT_SMELL_SARONITE RAID_MODE(3181, 3188) +#define ACHIEVEMENT_SHADOWDODGER RAID_MODE(2996, 2997) + +class boss_general_vezax : public CreatureScript +{ +public: + boss_general_vezax() : CreatureScript("boss_general_vezax") { } + + CreatureAI* GetAI(Creature* pCreature) const + { + return new boss_general_vezaxAI(pCreature); + } + + struct boss_general_vezaxAI : public BossAI + { + boss_general_vezaxAI(Creature *pCreature) : BossAI(pCreature, TYPE_VEZAX) + { + me->ApplySpellImmune(0, IMMUNITY_EFFECT, SPELL_EFFECT_KNOCK_BACK, true); + me->ApplySpellImmune(0, IMMUNITY_ID, 49560, true); // Death Grip jump effect + } + + bool bShadowDodger; + bool bSmellSaronite; /*HardMode*/ + bool bAnimusDead; /*Check against getting a HardMode achievement before killing Saronite Animus*/ + uint8 uiVaporCount; + + void Reset() + { + _Reset(); + + events.Reset(); + summons.DespawnAll(); + me->ResetLootMode(); + bShadowDodger = true; + bSmellSaronite = true; + bAnimusDead = false; + uiVaporCount = 0; + } + + void EnterCombat(Unit * pWho) + { + _EnterCombat(); + + DoScriptText(SAY_AGGRO, me); + DoCast(me, SPELL_AURA_OF_DESPAIR); + CheckShamanisticRage(); + + events.Reset(); + events.ScheduleEvent(EVENT_SHADOW_CRASH, urand(8000, 10000)); + events.ScheduleEvent(EVENT_SEARING_FLAMES, 12000); + events.ScheduleEvent(EVENT_MARK_OF_THE_FACELESS, urand(35000, 40000)); + events.ScheduleEvent(EVENT_SARONITE_VAPORS, 30000); + events.ScheduleEvent(EVENT_SURGE_OF_DARKNESS, 60000); + events.ScheduleEvent(EVENT_BERSERK, 600000); + } + + void UpdateAI(const uint32 uiDiff) + { + if (!UpdateVictim()) + return; + + events.Update(uiDiff); + + if (me->HasUnitState(UNIT_STAT_CASTING)) + return; + + while (uint32 uiEventId = events.ExecuteEvent()) + { + switch (uiEventId) + { + case EVENT_SHADOW_CRASH: + if (Unit * pTarget = GetPlayerAtMinimumRange(15.0f)) + DoCast(pTarget, SPELL_SHADOW_CRASH); + events.ScheduleEvent(EVENT_SHADOW_CRASH, urand(8000, 12000)); + break; + case EVENT_SEARING_FLAMES: + DoCastAOE(SPELL_SEARING_FLAMES); + events.ScheduleEvent(EVENT_SEARING_FLAMES, urand(14000, 17500)); + break; + case EVENT_MARK_OF_THE_FACELESS: + Unit* pTarget; + /* He will not cast this on players within 15 yards of him. + However, if there are not at least 9 people outside of 15 yards + he will start casting it on players inside 15 yards melee and tank included. + */ + if (!(pTarget = CheckPlayersInRange(RAID_MODE(4,9), 15.0f, 50.f))) + pTarget = SelectTarget(SELECT_TARGET_RANDOM); + DoCast(pTarget, SPELL_MARK_OF_THE_FACELESS); + events.ScheduleEvent(EVENT_MARK_OF_THE_FACELESS, urand(35000, 45000)); + break; + case EVENT_SURGE_OF_DARKNESS: + DoScriptText(EMOTE_SURGE_OF_DARKNESS, me); + DoScriptText(SAY_SURGE_OF_DARKNESS, me); + DoCast(me, SPELL_SURGE_OF_DARKNESS); + events.ScheduleEvent(EVENT_SURGE_OF_DARKNESS, urand(50000, 70000)); + break; + case EVENT_SARONITE_VAPORS: + DoCast(SPELL_SUMMON_SARONITE_VAPORS); + events.ScheduleEvent(EVENT_SARONITE_VAPORS, urand(30000, 35000)); + + if (++uiVaporCount == 6 && bSmellSaronite) + { + DoScriptText(SAY_HARDMODE, me); + DoScriptText(EMOTE_BARRIER, me); + summons.DespawnAll(); + DoCast(me, SPELL_SARONITE_BARRIER); + DoCast(SPELL_SUMMON_SARONITE_ANIMUS); + me->AddLootMode(LOOT_MODE_HARD_MODE_1); + events.CancelEvent(EVENT_SARONITE_VAPORS); + events.CancelEvent(EVENT_SEARING_FLAMES); + } + break; + case EVENT_BERSERK: + DoScriptText(SAY_BERSERK, me); + DoCast(me, SPELL_BERSERK); + break; + } + } + + DoMeleeAttackIfReady(); + } + + void SpellHitTarget(Unit * pWho, const SpellEntry * pSpell) + { + if (pWho && pWho->GetTypeId() == TYPEID_PLAYER && pSpell->Id == SPELL_SHADOW_CRASH_HIT) + bShadowDodger = false; + } + + void KilledUnit(Unit * pWho) + { + DoScriptText(RAND(SAY_SLAY_1, SAY_SLAY_2), me); + } + + void JustDied(Unit * pWho) + { + _JustDied(); + + DoScriptText(SAY_DEATH, me); + + if (instance) + { + if (bShadowDodger) + instance->DoCompleteAchievement(ACHIEVEMENT_SHADOWDODGER); + + if (bSmellSaronite && bAnimusDead) + instance->DoCompleteAchievement(ACHIEVEMENT_SMELL_SARONITE); + } + } + + void CheckShamanisticRage() + { + if (instance) + { + Map * pMap = me->GetMap(); + if (pMap && pMap->IsDungeon()) + { + /* If Shaman has Shamanistic Rage and use it during the fight, it will cast Corrupted Rage on him */ + Map::PlayerList const &Players = pMap->GetPlayers(); + for (Map::PlayerList::const_iterator itr = Players.begin(); itr != Players.end(); ++itr) + if (Player * pPlayer = itr->getSource()) + if (pPlayer->HasSpell(SPELL_SHAMANTIC_RAGE)) + pPlayer->CastSpell(pPlayer, SPELL_CORRUPTED_RAGE, false); + } + } + } + + void DoAction(const int32 uiAction) + { + switch (uiAction) + { + case ACTION_VAPORS_DIE: + bSmellSaronite = false; + break; + case ACTION_ANIMUS_DIE: + me->RemoveAurasDueToSpell(SPELL_SARONITE_BARRIER); + events.ScheduleEvent(EVENT_SEARING_FLAMES, urand(7000, 12000)); + bAnimusDead = true; + break; + } + } + + /* Player Range Check + Purpose: If there are uiPlayersMin people within uiRangeMin, uiRangeMax: return a random players in that range. + If not, return NULL and allow other target selection + */ + Unit * CheckPlayersInRange(uint32 uiPlayersMin, float uiRangeMin, float uiRangeMax) + { + Map * pMap = me->GetMap(); + if (pMap && pMap->IsDungeon()) + { + std::list<Player*> PlayerList; + Map::PlayerList const &Players = pMap->GetPlayers(); + for (Map::PlayerList::const_iterator itr = Players.begin(); itr != Players.end(); ++itr) + { + if (Player * pPlayer = itr->getSource()) + { + float uiDistance = pPlayer->GetDistance(me->GetPositionX(), me->GetPositionY(), me->GetPositionZ()); + if (uiRangeMin < uiDistance || uiDistance > uiRangeMax) + continue; + + PlayerList.push_back(pPlayer); + } + } + + if (PlayerList.empty()) + return NULL; + + size_t size = PlayerList.size(); + if (size < uiPlayersMin) + return NULL; + + std::list<Player*>::const_iterator itr = PlayerList.begin(); + std::advance(itr, urand(0, size - 1)); + return *itr; + } + else + return NULL; + } + }; +}; + +class boss_saronite_animus : public CreatureScript +{ +public: + boss_saronite_animus() : CreatureScript("npc_saronite_animus") { } + + CreatureAI* GetAI(Creature* pCreature) const + { + return new boss_saronite_animusAI(pCreature); + } + + struct boss_saronite_animusAI : public ScriptedAI + { + boss_saronite_animusAI(Creature *pCreature) : ScriptedAI(pCreature) + { + pInstance = pCreature->GetInstanceScript(); + me->ApplySpellImmune(0, IMMUNITY_EFFECT, SPELL_EFFECT_KNOCK_BACK, true); + me->ApplySpellImmune(0, IMMUNITY_ID, 49560, true); // Death Grip jump effect + DoScriptText(EMOTE_BARRIER, me); + } + + InstanceScript * pInstance; + + uint32 uiProfoundOfDarknessTimer; + + void Reset() + { + DoCast(me, SPELL_VISUAL_SARONITE_ANIMUS); + uiProfoundOfDarknessTimer = 3000; + } + + void JustDied(Unit * pWho) + { + if (Creature * pVezax = me->GetCreature(*me, pInstance ? pInstance->GetData64(TYPE_VEZAX) : 0)) + pVezax->AI()->DoAction(ACTION_ANIMUS_DIE); + } + + void UpdateAI(const uint32 uiDiff) + { + if (!UpdateVictim()) + return; + + if (uiProfoundOfDarknessTimer <= uiDiff) + { + DoCastAOE(SPELL_PROFOUND_DARKNESS); + uiProfoundOfDarknessTimer = 3000; + } + else + uiProfoundOfDarknessTimer -= uiDiff; + + DoMeleeAttackIfReady(); + } + }; +}; + +class npc_saronite_vapors : public CreatureScript +{ +public: + npc_saronite_vapors() : CreatureScript("npc_saronite_vapors") { } + + CreatureAI* GetAI(Creature* pCreature) const + { + return new npc_saronite_vaporsAI(pCreature); + } + + struct npc_saronite_vaporsAI : public ScriptedAI + { + npc_saronite_vaporsAI(Creature *pCreature) : ScriptedAI(pCreature) + { + DoScriptText(EMOTE_VAPORS, me); + pInstance = pCreature->GetInstanceScript(); + me->ApplySpellImmune(0, IMMUNITY_EFFECT, SPELL_EFFECT_KNOCK_BACK, true); + me->ApplySpellImmune(0, IMMUNITY_ID, 49560, true); // Death Grip jump effect + me->SetReactState(REACT_PASSIVE); + uiRandomMoveTimer = 1000; + } + + InstanceScript * pInstance; + + uint32 uiRandomMoveTimer; + + void UpdateAI(const uint32 uiDiff) + { + if (uiRandomMoveTimer <= uiDiff) + { + me->GetMotionMaster()->MoveRandom(30.0f); + uiRandomMoveTimer = urand(5000, 7500); + } + else + uiRandomMoveTimer -= uiDiff; + } + + void DamageTaken(Unit * pWho, uint32 &uiDamage) + { + // This can't be on JustDied. In 63322 dummy handler caster needs to be this NPC + // if caster == target then damage mods will increase the damage taken + if (uiDamage >= me->GetHealth()) + { + uiDamage = 0; + me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_DISABLE_MOVE); + me->SetStandState(UNIT_STAND_STATE_DEAD); + me->SetHealth(me->GetMaxHealth()); + me->RemoveAllAuras(); + DoCast(me, SPELL_SARONITE_VAPORS); + me->ForcedDespawn(30000); + + if (Creature * pVezax = me->GetCreature(*me, pInstance ? pInstance->GetData64(TYPE_VEZAX) : 0)) + pVezax->AI()->DoAction(ACTION_VAPORS_DIE); + } + } + }; +}; + +void AddSC_boss_general_vezax() +{ + new boss_general_vezax(); + new boss_saronite_animus(); + new npc_saronite_vapors(); +}
\ No newline at end of file diff --git a/src/server/scripts/Northrend/Ulduar/ulduar/instance_ulduar.cpp b/src/server/scripts/Northrend/Ulduar/ulduar/instance_ulduar.cpp index 69e6dbf0521..fb3371d9871 100644 --- a/src/server/scripts/Northrend/Ulduar/ulduar/instance_ulduar.cpp +++ b/src/server/scripts/Northrend/Ulduar/ulduar/instance_ulduar.cpp @@ -29,7 +29,8 @@ enum eGameObjects GO_FREYA_CHEST_HERO = 194325, GO_FREYA_CHEST = 194324, GO_LEVIATHAN_DOOR = 194905, - GO_LEVIATHAN_GATE = 194630 + GO_LEVIATHAN_GATE = 194630, + GO_VEZAX_DOOR = 194750, }; class instance_ulduar : public InstanceMapScript @@ -67,6 +68,7 @@ public: uint64 uiAlgalonGUID; uint64 uiLeviathanDoor[7]; uint64 uiLeviathanGateGUID; + uint64 uiVezaxDoorGUID; uint64 uiKologarnChestGUID; uint64 uiThorimChestGUID; @@ -94,6 +96,7 @@ public: uiHodirChestGUID = 0; uiFreyaChestGUID = 0; uiLeviathanGateGUID = 0; + uiVezaxDoorGUID = 0; flag = 0; memset(&uiEncounter, 0, sizeof(uiEncounter)); @@ -205,6 +208,10 @@ public: uiLeviathanGateGUID = go->GetGUID(); HandleGameObject(NULL, false, go); break; + case GO_VEZAX_DOOR: + uiVezaxDoorGUID = go->GetGUID(); + HandleGameObject(NULL, false, go); + break; } } @@ -253,6 +260,9 @@ public: case TYPE_AURIAYA: case TYPE_MIMIRON: case TYPE_VEZAX: + if (state == DONE) + HandleGameObject(uiVezaxDoorGUID, true); + break; case TYPE_YOGGSARON: break; case TYPE_KOLOGARN: |