mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-16 15:40:45 +01:00
Scripts/Ulduar:
* Added script for Freya encounter * Cleaned up instance script * Cleaned up teleporter script * Fixed typo in Hodir script Signed-off-by: Lopin <Lopin@TwinStar.cz>
This commit is contained in:
@@ -1600,6 +1600,21 @@ UPDATE `creature_template` SET `ScriptName`='npc_icicle' WHERE `entry` IN (33169
|
||||
UPDATE `creature_template` SET `ScriptName`='npc_snowpacked_icicle' WHERE `entry`=33174;
|
||||
UPDATE `creature_template` SET `ScriptName`='npc_ice_block' WHERE `entry`=32938;
|
||||
UPDATE `creature_template` SET `ScriptName`='boss_hodir' WHERE `entry`=32845;
|
||||
UPDATE `creature_template` SET `ScriptName`='boss_freya' WHERE `entry`=32906;
|
||||
UPDATE `creature_template` SET `ScriptName`='boss_elder_brightleaf' WHERE `entry`=32915;
|
||||
UPDATE `creature_template` SET `ScriptName`='boss_elder_ironbranch' WHERE `entry`=32913;
|
||||
UPDATE `creature_template` SET `ScriptName`='boss_elder_stonebark' WHERE `entry`=32914;
|
||||
UPDATE `creature_template` SET `ScriptName`='npc_ancient_conservator' WHERE `entry`=33203;
|
||||
UPDATE `creature_template` SET `ScriptName`='npc_snaplasher' WHERE `entry`=32916;
|
||||
UPDATE `creature_template` SET `ScriptName`='npc_storm_lasher' WHERE `entry`=32919;
|
||||
UPDATE `creature_template` SET `ScriptName`='npc_ancient_water_spirit' WHERE `entry`=33202;
|
||||
UPDATE `creature_template` SET `ScriptName`='npc_detonating_lasher' WHERE `entry`=32918;
|
||||
UPDATE `creature_template` SET `ScriptName`='npc_sun_beam' WHERE `entry`=33170;
|
||||
UPDATE `creature_template` SET `ScriptName`='npc_nature_bomb' WHERE `entry`=34129;
|
||||
UPDATE `creature_template` SET `ScriptName`='npc_eonars_gift' WHERE `entry`=33228;
|
||||
UPDATE `creature_template` SET `ScriptName`='npc_healthy_spore' WHERE `entry`=33215;
|
||||
UPDATE `creature_template` SET `ScriptName`='npc_unstable_sun_beam' WHERE `entry`=33050;
|
||||
UPDATE `creature_template` SET `ScriptName`='npc_iron_roots' WHERE `entry` IN (33088,33168);
|
||||
|
||||
|
||||
/* UN'GORO CRATER */
|
||||
|
||||
9
sql/updates/world/2011_05_21_01_world_conditions.sql
Normal file
9
sql/updates/world/2011_05_21_01_world_conditions.sql
Normal file
@@ -0,0 +1,9 @@
|
||||
DELETE FROM `conditions` WHERE `SourceEntry` IN (62385,62386,62387,62521,62525,62524);
|
||||
INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`ErrorTextId`,`ScriptName`,`Comment`)
|
||||
VALUES
|
||||
(13,0,62385,0,18,1,32906,0,0,'','Brightleaf\'s Essence'),
|
||||
(13,0,62386,0,18,1,32906,0,0,'','Stonebarks\'s Essence'),
|
||||
(13,0,62387,0,18,1,32906,0,0,'','Ironbranch\'s Essence'),
|
||||
(13,0,62521,0,18,1,32906,0,0,'','Attuned to Nature 25 Dose Reduction'),
|
||||
(13,0,62524,0,18,1,32906,0,0,'','Attuned to Nature 2 Dose Reduction'),
|
||||
(13,0,62525,0,18,1,32906,0,0,'','Attuned to Nature 10 Dose Reduction');
|
||||
24
sql/updates/world/2011_05_21_01_world_instance_misc.sql
Normal file
24
sql/updates/world/2011_05_21_01_world_instance_misc.sql
Normal file
@@ -0,0 +1,24 @@
|
||||
-- Trigger flag
|
||||
UPDATE `creature_template` SET `flags_extra`=`flags_extra`|128 WHERE `entry`=34129;
|
||||
|
||||
-- Delete NPC which is not supposed to be here
|
||||
DELETE FROM `creature` WHERE `guid`=136607;
|
||||
|
||||
-- Immunity
|
||||
UPDATE `creature_template` SET `mechanic_immune_mask`=650854239 WHERE `entry`=32906;
|
||||
|
||||
-- Spell Difficulties
|
||||
DELETE FROM `spelldifficulty_dbc` WHERE `id` BETWEEN 3240 AND 3250;
|
||||
INSERT INTO `spelldifficulty_dbc` (`id`,`spellid0`,`spellid1`,`spellid2`,`spellid3`)
|
||||
VALUES
|
||||
(3240,63169,63549,0,0), -- Ulduar: Corrupted Servitor - Petrify Joints
|
||||
(3241,63082,63559,0,0), -- Ulduar: Misguided Nymph - Bind Life
|
||||
(3242,63111,63562,0,0), -- Ulduar: Misguided Nymph - Frost Spear
|
||||
(3243,63136,63564,0,0), -- Ulduar: Misguided Nymph - Winter's Embrace
|
||||
(3244,63047,63550,0,0), -- Ulduar: Guardian Lasher - Guardian's Lash
|
||||
(3245,63242,63556,0,0), -- Ulduar: Mangrove Ent - Nourish
|
||||
(3246,63241,63554,0,0), -- Ulduar: Mangrove Ent - Tranquility
|
||||
(3247,63240,63553,0,0), -- Ulduar: Ironroot Lasher - Ironroot Thorns
|
||||
(3248,63247,63568,0,0), -- Ulduar: Nature's Blade - Living Tsunami
|
||||
(3249,63226,63551,0,0), -- Ulduar: Guardian of Life - Poison Breath
|
||||
(3250,64587,34650,0,0); -- Ulduar: Nature Bomb - Nature Bomb
|
||||
15
sql/updates/world/2011_05_21_01_world_scriptname.sql
Normal file
15
sql/updates/world/2011_05_21_01_world_scriptname.sql
Normal file
@@ -0,0 +1,15 @@
|
||||
UPDATE `creature_template` SET `ScriptName`='boss_freya' WHERE `entry`=32906;
|
||||
UPDATE `creature_template` SET `ScriptName`='boss_elder_brightleaf' WHERE `entry`=32915;
|
||||
UPDATE `creature_template` SET `ScriptName`='boss_elder_ironbranch' WHERE `entry`=32913;
|
||||
UPDATE `creature_template` SET `ScriptName`='boss_elder_stonebark' WHERE `entry`=32914;
|
||||
UPDATE `creature_template` SET `ScriptName`='npc_ancient_conservator' WHERE `entry`=33203;
|
||||
UPDATE `creature_template` SET `ScriptName`='npc_snaplasher' WHERE `entry`=32916;
|
||||
UPDATE `creature_template` SET `ScriptName`='npc_storm_lasher' WHERE `entry`=32919;
|
||||
UPDATE `creature_template` SET `ScriptName`='npc_ancient_water_spirit' WHERE `entry`=33202;
|
||||
UPDATE `creature_template` SET `ScriptName`='npc_detonating_lasher' WHERE `entry`=32918;
|
||||
UPDATE `creature_template` SET `ScriptName`='npc_sun_beam' WHERE `entry`=33170;
|
||||
UPDATE `creature_template` SET `ScriptName`='npc_nature_bomb' WHERE `entry`=34129;
|
||||
UPDATE `creature_template` SET `ScriptName`='npc_eonars_gift' WHERE `entry`=33228;
|
||||
UPDATE `creature_template` SET `ScriptName`='npc_healthy_spore' WHERE `entry`=33215;
|
||||
UPDATE `creature_template` SET `ScriptName`='npc_unstable_sun_beam' WHERE `entry`=33050;
|
||||
UPDATE `creature_template` SET `ScriptName`='npc_iron_roots' WHERE `entry` IN (33088,33168);
|
||||
@@ -0,0 +1,6 @@
|
||||
DELETE FROM `spell_script_names` WHERE `spell_id` IN (62519,65158,65160);
|
||||
INSERT INTO `spell_script_names`
|
||||
VALUES
|
||||
(62519, 'spell_freya_attuned_to_nature'),
|
||||
(65158, 'spell_freya_iron_roots'),
|
||||
(65160, 'spell_freya_iron_roots');
|
||||
@@ -425,6 +425,7 @@ void AddSC_boss_general_vezax();
|
||||
void AddSC_ulduar_teleporter();
|
||||
void AddSC_boss_mimiron();
|
||||
void AddSC_boss_hodir();
|
||||
void AddSC_boss_freya();
|
||||
void AddSC_instance_ulduar();
|
||||
void AddSC_boss_keleseth(); //Utgarde Keep
|
||||
void AddSC_boss_skarvald_dalronn();
|
||||
@@ -1121,6 +1122,7 @@ void AddNorthrendScripts()
|
||||
AddSC_ulduar_teleporter();
|
||||
AddSC_boss_mimiron();
|
||||
AddSC_boss_hodir();
|
||||
AddSC_boss_freya();
|
||||
AddSC_instance_ulduar();
|
||||
AddSC_boss_keleseth(); //Utgarde Keep
|
||||
AddSC_boss_skarvald_dalronn();
|
||||
|
||||
@@ -3946,11 +3946,6 @@ void SpellMgr::LoadSpellCustomAttr()
|
||||
mSpellCustomAttr[i] |= SPELL_ATTR0_CU_IGNORE_ARMOR;
|
||||
++count;
|
||||
break;
|
||||
// Strength of the Pack
|
||||
case 64381:
|
||||
spellInfo->StackAmount = 4;
|
||||
++count;
|
||||
break;
|
||||
case 63675: // Improved Devouring Plague
|
||||
spellInfo->AttributesEx3 |= SPELL_ATTR3_NO_DONE_BONUS;
|
||||
++count;
|
||||
@@ -4011,6 +4006,15 @@ void SpellMgr::LoadSpellCustomAttr()
|
||||
spellInfo->MaxAffectedTargets = 1;
|
||||
++count;
|
||||
break;
|
||||
case 62716: // Growth of Nature
|
||||
case 65584: // Growth of Nature
|
||||
spellInfo->AttributesEx3 |= SPELL_ATTR3_STACK_FOR_DIFF_CASTERS;
|
||||
++count;
|
||||
break;
|
||||
case 64381: // Strength of the Pack
|
||||
spellInfo->StackAmount = 4;
|
||||
++count;
|
||||
break;
|
||||
// ENDOF ULDUAR SPELLS
|
||||
//
|
||||
// ICECROWN CITADEL SPELLS
|
||||
|
||||
@@ -123,7 +123,7 @@ public:
|
||||
}
|
||||
|
||||
if (pInstance)
|
||||
pInstance->SetData(TYPE_ALGALON, IN_PROGRESS);
|
||||
pInstance->SetData(BOSS_ALGALON, IN_PROGRESS);
|
||||
}
|
||||
|
||||
void KilledUnit(Unit * /*victim*/)
|
||||
@@ -137,7 +137,7 @@ public:
|
||||
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
if (pInstance)
|
||||
pInstance->SetData(TYPE_ALGALON, NOT_STARTED);
|
||||
pInstance->SetData(BOSS_ALGALON, NOT_STARTED);
|
||||
|
||||
BlackHoleGUID = 0;
|
||||
|
||||
@@ -218,7 +218,7 @@ public:
|
||||
me->DisappearAndDie();
|
||||
|
||||
if (pInstance)
|
||||
pInstance->SetData(TYPE_ALGALON, DONE);
|
||||
pInstance->SetData(BOSS_ALGALON, DONE);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -130,7 +130,7 @@ bool IsEncounterComplete(InstanceScript* pInstance, Creature* me)
|
||||
|
||||
for (uint8 i = 0; i < 3; ++i)
|
||||
{
|
||||
uint64 guid = pInstance->GetData64(DATA_STEELBREAKER+i);
|
||||
uint64 guid = pInstance->GetData64(BOSS_STEELBREAKER+i);
|
||||
if (!guid)
|
||||
return false;
|
||||
|
||||
@@ -149,7 +149,7 @@ void RespawnEncounter(InstanceScript* pInstance, Creature* me)
|
||||
{
|
||||
for (uint8 i = 0; i < 3; ++i)
|
||||
{
|
||||
uint64 guid = pInstance->GetData64(DATA_STEELBREAKER+i);
|
||||
uint64 guid = pInstance->GetData64(BOSS_STEELBREAKER+i);
|
||||
if (!guid)
|
||||
continue;
|
||||
|
||||
@@ -166,14 +166,14 @@ void RespawnEncounter(InstanceScript* pInstance, Creature* me)
|
||||
|
||||
void StartEncounter(InstanceScript* pInstance, Creature* me, Unit* /*target*/)
|
||||
{
|
||||
if (pInstance->GetBossState(TYPE_ASSEMBLY) == IN_PROGRESS)
|
||||
if (pInstance->GetBossState(BOSS_ASSEMBLY_OF_IRON) == IN_PROGRESS)
|
||||
return; // Prevent recursive calls
|
||||
|
||||
pInstance->SetBossState(TYPE_ASSEMBLY, IN_PROGRESS);
|
||||
pInstance->SetBossState(BOSS_ASSEMBLY_OF_IRON, IN_PROGRESS);
|
||||
|
||||
for (uint8 i = 0; i < 3; ++i)
|
||||
{
|
||||
uint64 guid = pInstance->GetData64(DATA_STEELBREAKER+i);
|
||||
uint64 guid = pInstance->GetData64(BOSS_STEELBREAKER+i);
|
||||
if (!guid)
|
||||
continue;
|
||||
|
||||
@@ -221,7 +221,7 @@ public:
|
||||
me->RemoveAllAuras();
|
||||
if (pInstance)
|
||||
{
|
||||
pInstance->SetBossState(TYPE_ASSEMBLY, NOT_STARTED);
|
||||
pInstance->SetBossState(BOSS_ASSEMBLY_OF_IRON, NOT_STARTED);
|
||||
RespawnEncounter(pInstance, me);
|
||||
}
|
||||
}
|
||||
@@ -261,7 +261,7 @@ public:
|
||||
{
|
||||
bool has_supercharge = false;
|
||||
|
||||
if (Creature* Brundir = Unit::GetCreature(*me, pInstance ? pInstance->GetData64(DATA_BRUNDIR) : 0))
|
||||
if (Creature* Brundir = Unit::GetCreature(*me, pInstance ? pInstance->GetData64(BOSS_BRUNDIR) : 0))
|
||||
{
|
||||
if (Brundir->isAlive())
|
||||
{
|
||||
@@ -270,7 +270,7 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
if (Creature* Molgeim = Unit::GetCreature(*me, pInstance ? pInstance->GetData64(DATA_MOLGEIM) : 0))
|
||||
if (Creature* Molgeim = Unit::GetCreature(*me, pInstance ? pInstance->GetData64(BOSS_MOLGEIM) : 0))
|
||||
{
|
||||
if (Molgeim->isAlive())
|
||||
{
|
||||
@@ -288,7 +288,7 @@ public:
|
||||
{
|
||||
DoScriptText(RAND(SAY_STEELBREAKER_DEATH_1, SAY_STEELBREAKER_DEATH_2), me);
|
||||
if (IsEncounterComplete(pInstance, me) && pInstance)
|
||||
pInstance->SetData(TYPE_ASSEMBLY, DONE);
|
||||
pInstance->SetData(BOSS_ASSEMBLY_OF_IRON, DONE);
|
||||
}
|
||||
|
||||
void KilledUnit(Unit * /*who*/)
|
||||
@@ -364,7 +364,7 @@ public:
|
||||
{
|
||||
if (pInstance)
|
||||
{
|
||||
pInstance->SetData(TYPE_ASSEMBLY, NOT_STARTED);
|
||||
pInstance->SetData(BOSS_ASSEMBLY_OF_IRON, NOT_STARTED);
|
||||
RespawnEncounter(pInstance, me);
|
||||
}
|
||||
|
||||
@@ -408,7 +408,7 @@ public:
|
||||
{
|
||||
bool has_supercharge = false;
|
||||
|
||||
if (Creature* Steelbreaker = Unit::GetCreature(*me, pInstance ? pInstance->GetData64(DATA_STEELBREAKER) : 0))
|
||||
if (Creature* Steelbreaker = Unit::GetCreature(*me, pInstance ? pInstance->GetData64(BOSS_STEELBREAKER) : 0))
|
||||
{
|
||||
if (Steelbreaker->isAlive())
|
||||
{
|
||||
@@ -417,7 +417,7 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
if (Creature* Brundir = Unit::GetCreature((*me), pInstance ? pInstance->GetData64(DATA_BRUNDIR) : 0))
|
||||
if (Creature* Brundir = Unit::GetCreature((*me), pInstance ? pInstance->GetData64(BOSS_BRUNDIR) : 0))
|
||||
{
|
||||
if (Brundir->isAlive())
|
||||
{
|
||||
@@ -435,7 +435,7 @@ public:
|
||||
{
|
||||
DoScriptText(RAND(SAY_MOLGEIM_DEATH_1, SAY_MOLGEIM_DEATH_2), me);
|
||||
if (IsEncounterComplete(pInstance, me) && pInstance)
|
||||
pInstance->SetData(TYPE_ASSEMBLY, DONE);
|
||||
pInstance->SetData(BOSS_ASSEMBLY_OF_IRON, DONE);
|
||||
}
|
||||
|
||||
void KilledUnit(Unit * /*who*/)
|
||||
@@ -605,7 +605,7 @@ public:
|
||||
{
|
||||
if (pInstance)
|
||||
{
|
||||
pInstance->SetData(TYPE_ASSEMBLY, NOT_STARTED);
|
||||
pInstance->SetData(BOSS_ASSEMBLY_OF_IRON, NOT_STARTED);
|
||||
RespawnEncounter(pInstance, me);
|
||||
}
|
||||
|
||||
@@ -653,7 +653,7 @@ public:
|
||||
{
|
||||
bool has_supercharge = false;
|
||||
|
||||
if (Creature* Steelbreaker = Unit::GetCreature(*me, pInstance ? pInstance->GetData64(DATA_STEELBREAKER) : 0))
|
||||
if (Creature* Steelbreaker = Unit::GetCreature(*me, pInstance ? pInstance->GetData64(BOSS_STEELBREAKER) : 0))
|
||||
{
|
||||
if (Steelbreaker->isAlive())
|
||||
{
|
||||
@@ -662,7 +662,7 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
if (Creature* Molgeim = Unit::GetCreature(*me, pInstance ? pInstance->GetData64(DATA_MOLGEIM) : 0))
|
||||
if (Creature* Molgeim = Unit::GetCreature(*me, pInstance ? pInstance->GetData64(BOSS_MOLGEIM) : 0))
|
||||
{
|
||||
if (Molgeim->isAlive())
|
||||
{
|
||||
@@ -680,7 +680,7 @@ public:
|
||||
{
|
||||
DoScriptText(RAND(SAY_BRUNDIR_DEATH_1, SAY_BRUNDIR_DEATH_2), me);
|
||||
if (IsEncounterComplete(pInstance, me) && pInstance)
|
||||
pInstance->SetData(TYPE_ASSEMBLY, DONE);
|
||||
pInstance->SetData(BOSS_ASSEMBLY_OF_IRON, DONE);
|
||||
}
|
||||
|
||||
void KilledUnit(Unit * /*who*/)
|
||||
|
||||
@@ -46,7 +46,7 @@ public:
|
||||
|
||||
struct boss_auriaya_AI : public BossAI
|
||||
{
|
||||
boss_auriaya_AI(Creature *pCreature) : BossAI(pCreature, TYPE_AURIAYA)
|
||||
boss_auriaya_AI(Creature *pCreature) : BossAI(pCreature, BOSS_AURIAYA)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
@@ -219,7 +219,7 @@ class boss_flame_leviathan : public CreatureScript
|
||||
|
||||
struct boss_flame_leviathanAI : public BossAI
|
||||
{
|
||||
boss_flame_leviathanAI(Creature* creature) : BossAI(creature, TYPE_LEVIATHAN), vehicle(creature->GetVehicleKit())
|
||||
boss_flame_leviathanAI(Creature* creature) : BossAI(creature, BOSS_LEVIATHAN), vehicle(creature->GetVehicleKit())
|
||||
{
|
||||
}
|
||||
|
||||
@@ -1185,7 +1185,7 @@ class npc_lorekeeper : public CreatureScript
|
||||
if (player)
|
||||
player->CLOSE_GOSSIP_MENU();
|
||||
|
||||
if (Creature* leviathan = instance->instance->GetCreature(instance->GetData64(TYPE_LEVIATHAN)))
|
||||
if (Creature* leviathan = instance->instance->GetCreature(instance->GetData64(BOSS_LEVIATHAN)))
|
||||
{
|
||||
CAST_AI(boss_flame_leviathan::boss_flame_leviathanAI, (leviathan->AI()))->DoAction(0); //enable hard mode activating the 4 additional events spawning additional vehicles
|
||||
creature->SetVisible(false);
|
||||
@@ -1208,7 +1208,7 @@ class npc_lorekeeper : public CreatureScript
|
||||
bool OnGossipHello(Player* player, Creature* creature)
|
||||
{
|
||||
InstanceScript* instance = creature->GetInstanceScript();
|
||||
if (instance && instance->GetData(TYPE_LEVIATHAN) !=DONE && player)
|
||||
if (instance && instance->GetData(BOSS_LEVIATHAN) !=DONE && player)
|
||||
{
|
||||
player->PrepareGossipMenu(creature);
|
||||
|
||||
@@ -1261,7 +1261,7 @@ public:
|
||||
//bool OnGossipHello(Player* pPlayer, Creature* creature)
|
||||
//{
|
||||
// InstanceScript* instance = creature->GetInstanceScript();
|
||||
// if (instance && instance->GetData(TYPE_LEVIATHAN) !=DONE)
|
||||
// if (instance && instance->GetData(BOSS_LEVIATHAN) !=DONE)
|
||||
// {
|
||||
// pPlayer->PrepareGossipMenu(creature);
|
||||
//
|
||||
@@ -1321,7 +1321,7 @@ class at_RX_214_repair_o_matic_station : public AreaTriggerScript
|
||||
{
|
||||
player->MonsterTextEmote(EMOTE_REPAIR, player->GetGUID(), true);
|
||||
player->CastSpell(vehicle, SPELL_AUTO_REPAIR, true);
|
||||
if (Creature* leviathan = ObjectAccessor::GetCreature(*player, instance ? instance->GetData64(TYPE_LEVIATHAN) : 0))
|
||||
if (Creature* leviathan = ObjectAccessor::GetCreature(*player, instance ? instance->GetData64(BOSS_LEVIATHAN) : 0))
|
||||
leviathan->AI()->SetData(DATA_UNBROKEN, 0); // set bool to false thats checked in leviathan getdata
|
||||
}
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -95,7 +95,7 @@ public:
|
||||
|
||||
struct boss_general_vezaxAI : public BossAI
|
||||
{
|
||||
boss_general_vezaxAI(Creature *pCreature) : BossAI(pCreature, TYPE_VEZAX)
|
||||
boss_general_vezaxAI(Creature *pCreature) : BossAI(pCreature, BOSS_VEZAX)
|
||||
{
|
||||
me->ApplySpellImmune(0, IMMUNITY_EFFECT, SPELL_EFFECT_KNOCK_BACK, true);
|
||||
me->ApplySpellImmune(0, IMMUNITY_ID, 49560, true); // Death Grip jump effect
|
||||
@@ -332,7 +332,7 @@ public:
|
||||
|
||||
void JustDied(Unit * /*pWho*/)
|
||||
{
|
||||
if (Creature * pVezax = me->GetCreature(*me, pInstance ? pInstance->GetData64(TYPE_VEZAX) : 0))
|
||||
if (Creature * pVezax = me->GetCreature(*me, pInstance ? pInstance->GetData64(BOSS_VEZAX) : 0))
|
||||
pVezax->AI()->DoAction(ACTION_ANIMUS_DIE);
|
||||
}
|
||||
|
||||
@@ -405,7 +405,7 @@ public:
|
||||
DoCast(me, SPELL_SARONITE_VAPORS);
|
||||
me->DespawnOrUnsummon(30000);
|
||||
|
||||
if (Creature * pVezax = me->GetCreature(*me, pInstance ? pInstance->GetData64(TYPE_VEZAX) : 0))
|
||||
if (Creature * pVezax = me->GetCreature(*me, pInstance ? pInstance->GetData64(BOSS_VEZAX) : 0))
|
||||
pVezax->AI()->DoAction(ACTION_VAPORS_DIE);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -207,7 +207,7 @@ class npc_flash_freeze : public CreatureScript
|
||||
// Prevents to have Ice Block on other place than target is
|
||||
me->NearTeleportTo(target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(), target->GetOrientation());
|
||||
if (target->GetTypeId() == TYPEID_PLAYER)
|
||||
if (Creature* Hodir = ObjectAccessor::GetCreature(*me, instance ? instance->GetData64(TYPE_HODIR) : 0))
|
||||
if (Creature* Hodir = ObjectAccessor::GetCreature(*me, instance ? instance->GetData64(BOSS_HODIR) : 0))
|
||||
Hodir->AI()->DoAction(ACTION_CHEESE_THE_FREEZE);
|
||||
}
|
||||
}
|
||||
@@ -259,7 +259,7 @@ class npc_ice_block : public CreatureScript
|
||||
{
|
||||
Helper->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISABLE_MOVE | UNIT_FLAG_STUNNED | UNIT_FLAG_PACIFIED);
|
||||
|
||||
if (Creature* Hodir = ObjectAccessor::GetCreature(*me, instance ? instance->GetData64(TYPE_HODIR) : 0))
|
||||
if (Creature* Hodir = ObjectAccessor::GetCreature(*me, instance ? instance->GetData64(BOSS_HODIR) : 0))
|
||||
{
|
||||
if (!Hodir->isInCombat())
|
||||
{
|
||||
@@ -287,7 +287,7 @@ class boss_hodir : public CreatureScript
|
||||
|
||||
struct boss_hodirAI : public BossAI
|
||||
{
|
||||
boss_hodirAI(Creature* creature) : BossAI(creature, TYPE_HODIR)
|
||||
boss_hodirAI(Creature* creature) : BossAI(creature, BOSS_HODIR)
|
||||
{
|
||||
me->SetReactState(REACT_PASSIVE);
|
||||
}
|
||||
@@ -457,7 +457,7 @@ class boss_hodir : public CreatureScript
|
||||
void FlashFreeze()
|
||||
{
|
||||
std::list<Unit*> TargetList;
|
||||
Trinity::AnyUnfriendlyUnitInObjectRangeCheck checker(me, me, 150.0f);
|
||||
Trinity::AnyUnfriendlyUnitInObjectRangeCheck checker(me, me, 100.0f);
|
||||
Trinity::UnitListSearcher<Trinity::AnyUnfriendlyUnitInObjectRangeCheck> searcher(me, TargetList, checker);
|
||||
me->VisitNearbyObject(100.0f, searcher);
|
||||
for (std::list<Unit*>::iterator itr = TargetList.begin(); itr != TargetList.end(); ++itr)
|
||||
@@ -633,7 +633,7 @@ class npc_hodir_priest : public CreatureScript
|
||||
|
||||
void JustDied(Unit* who)
|
||||
{
|
||||
if (Creature* Hodir = ObjectAccessor::GetCreature(*me, instance ? instance->GetData64(TYPE_HODIR) : 0))
|
||||
if (Creature* Hodir = ObjectAccessor::GetCreature(*me, instance ? instance->GetData64(BOSS_HODIR) : 0))
|
||||
Hodir->AI()->DoAction(ACTION_I_HAVE_THE_COOLEST_FRIENDS);
|
||||
}
|
||||
|
||||
@@ -695,7 +695,7 @@ class npc_hodir_shaman : public CreatureScript
|
||||
|
||||
void JustDied(Unit* who)
|
||||
{
|
||||
if (Creature* Hodir = ObjectAccessor::GetCreature(*me, instance ? instance->GetData64(TYPE_HODIR) : 0))
|
||||
if (Creature* Hodir = ObjectAccessor::GetCreature(*me, instance ? instance->GetData64(BOSS_HODIR) : 0))
|
||||
Hodir->AI()->DoAction(ACTION_I_HAVE_THE_COOLEST_FRIENDS);
|
||||
}
|
||||
|
||||
@@ -756,7 +756,7 @@ class npc_hodir_druid : public CreatureScript
|
||||
|
||||
void JustDied(Unit* who)
|
||||
{
|
||||
if (Creature* Hodir = ObjectAccessor::GetCreature(*me, instance ? instance->GetData64(TYPE_HODIR) : 0))
|
||||
if (Creature* Hodir = ObjectAccessor::GetCreature(*me, instance ? instance->GetData64(BOSS_HODIR) : 0))
|
||||
Hodir->AI()->DoAction(ACTION_I_HAVE_THE_COOLEST_FRIENDS);
|
||||
}
|
||||
|
||||
@@ -821,7 +821,7 @@ class npc_hodir_mage : public CreatureScript
|
||||
|
||||
void JustDied(Unit* who)
|
||||
{
|
||||
if (Creature* Hodir = ObjectAccessor::GetCreature(*me, instance ? instance->GetData64(TYPE_HODIR) : 0))
|
||||
if (Creature* Hodir = ObjectAccessor::GetCreature(*me, instance ? instance->GetData64(BOSS_HODIR) : 0))
|
||||
Hodir->AI()->DoAction(ACTION_I_HAVE_THE_COOLEST_FRIENDS);
|
||||
}
|
||||
|
||||
|
||||
@@ -123,7 +123,7 @@ public:
|
||||
|
||||
struct boss_ignis_AI : public BossAI
|
||||
{
|
||||
boss_ignis_AI(Creature *pCreature) : BossAI(pCreature, TYPE_IGNIS), vehicle(me->GetVehicleKit())
|
||||
boss_ignis_AI(Creature *pCreature) : BossAI(pCreature, BOSS_IGNIS), vehicle(me->GetVehicleKit())
|
||||
{
|
||||
assert(vehicle);
|
||||
me->ApplySpellImmune(0, IMMUNITY_EFFECT, SPELL_EFFECT_KNOCK_BACK, true);
|
||||
@@ -328,7 +328,7 @@ public:
|
||||
if (me->HasAura(SPELL_BRITTLE) && damage >= 5000)
|
||||
{
|
||||
DoCast(SPELL_SHATTER);
|
||||
if (Creature *pIgnis = me->GetCreature(*me, instance->GetData64(TYPE_IGNIS)))
|
||||
if (Creature *pIgnis = me->GetCreature(*me, instance->GetData64(BOSS_IGNIS)))
|
||||
if (pIgnis->AI())
|
||||
pIgnis->AI()->DoAction(ACTION_REMOVE_BUFF);
|
||||
|
||||
|
||||
@@ -102,7 +102,7 @@ class boss_kologarn : public CreatureScript
|
||||
|
||||
struct boss_kologarnAI : public BossAI
|
||||
{
|
||||
boss_kologarnAI(Creature *pCreature) : BossAI(pCreature, TYPE_KOLOGARN), vehicle(pCreature->GetVehicleKit()),
|
||||
boss_kologarnAI(Creature *pCreature) : BossAI(pCreature, BOSS_KOLOGARN), vehicle(pCreature->GetVehicleKit()),
|
||||
left(false), right(false)
|
||||
{
|
||||
ASSERT(vehicle);
|
||||
@@ -160,7 +160,7 @@ class boss_kologarn : public CreatureScript
|
||||
|
||||
void PassengerBoarded(Unit* who, int8 /*seatId*/, bool apply)
|
||||
{
|
||||
bool isEncounterInProgress = instance->GetBossState(TYPE_KOLOGARN) == IN_PROGRESS;
|
||||
bool isEncounterInProgress = instance->GetBossState(BOSS_KOLOGARN) == IN_PROGRESS;
|
||||
if (who->GetEntry() == NPC_LEFT_ARM)
|
||||
{
|
||||
left = apply;
|
||||
@@ -354,7 +354,7 @@ class spell_ulduar_rubble_summon : public SpellScriptLoader
|
||||
if (!caster)
|
||||
return;
|
||||
|
||||
uint64 originalCaster = caster->GetInstanceScript() ? caster->GetInstanceScript()->GetData64(TYPE_KOLOGARN) : 0;
|
||||
uint64 originalCaster = caster->GetInstanceScript() ? caster->GetInstanceScript()->GetData64(BOSS_KOLOGARN) : 0;
|
||||
uint32 spellId = GetEffectValue();
|
||||
for (uint8 i = 0; i < 5; ++i)
|
||||
caster->CastSpell(caster, spellId, true, NULL, NULL, originalCaster);
|
||||
|
||||
@@ -216,7 +216,7 @@ class boss_razorscale_controller : public CreatureScript
|
||||
|
||||
void DoAction(int32 const action)
|
||||
{
|
||||
if (instance->GetBossState(TYPE_RAZORSCALE) != IN_PROGRESS)
|
||||
if (instance->GetBossState(BOSS_RAZORSCALE) != IN_PROGRESS)
|
||||
return;
|
||||
|
||||
switch (action)
|
||||
@@ -298,7 +298,7 @@ class go_razorscale_harpoon : public GameObjectScript
|
||||
bool OnGossipHello(Player* /*player*/, GameObject* go)
|
||||
{
|
||||
InstanceScript* instance = go->GetInstanceScript();
|
||||
if (ObjectAccessor::GetCreature(*go, instance ? instance->GetData64(TYPE_RAZORSCALE) : 0))
|
||||
if (ObjectAccessor::GetCreature(*go, instance ? instance->GetData64(BOSS_RAZORSCALE) : 0))
|
||||
go->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_UNK1);
|
||||
return false;
|
||||
}
|
||||
@@ -311,7 +311,7 @@ class boss_razorscale : public CreatureScript
|
||||
|
||||
struct boss_razorscaleAI : public BossAI
|
||||
{
|
||||
boss_razorscaleAI(Creature* creature) : BossAI(creature, TYPE_RAZORSCALE)
|
||||
boss_razorscaleAI(Creature* creature) : BossAI(creature, BOSS_RAZORSCALE)
|
||||
{
|
||||
// Do not let Razorscale be affected by Battle Shout buff
|
||||
me->ApplySpellImmune(0, IMMUNITY_ID, (SPELL_BATTLE_SHOUT), true);
|
||||
@@ -335,7 +335,7 @@ class boss_razorscale : public CreatureScript
|
||||
me->SetReactState(REACT_PASSIVE);
|
||||
PermaGround = false;
|
||||
HarpoonCounter = 0;
|
||||
if (Creature* commander = ObjectAccessor::GetCreature(*me, instance ? instance->GetData64(DATA_EXP_COMMANDER) : 0))
|
||||
if (Creature* commander = ObjectAccessor::GetCreature(*me, instance ? instance->GetData64(DATA_EXPEDITION_COMMANDER) : 0))
|
||||
commander->AI()->DoAction(ACTION_COMMANDER_RESET);
|
||||
}
|
||||
|
||||
@@ -433,7 +433,7 @@ class boss_razorscale : public CreatureScript
|
||||
me->SetFlying(false);
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_STUNNED | UNIT_FLAG_PACIFIED);
|
||||
if (Creature* commander = ObjectAccessor::GetCreature(*me, instance ? instance->GetData64(DATA_EXP_COMMANDER) : 0))
|
||||
if (Creature* commander = ObjectAccessor::GetCreature(*me, instance ? instance->GetData64(DATA_EXPEDITION_COMMANDER) : 0))
|
||||
commander->AI()->DoAction(ACTION_GROUND_PHASE);
|
||||
events.ScheduleEvent(EVENT_BREATH, 30000, 0, PHASE_GROUND);
|
||||
events.ScheduleEvent(EVENT_BUFFET, 33000, 0, PHASE_GROUND);
|
||||
@@ -638,7 +638,7 @@ class npc_expedition_commander : public CreatureScript
|
||||
switch (Phase)
|
||||
{
|
||||
case 1:
|
||||
instance->SetBossState(TYPE_RAZORSCALE, IN_PROGRESS);
|
||||
instance->SetBossState(BOSS_RAZORSCALE, IN_PROGRESS);
|
||||
summons.clear();
|
||||
AttackStartTimer = 1000;
|
||||
Phase = 2;
|
||||
@@ -676,7 +676,7 @@ class npc_expedition_commander : public CreatureScript
|
||||
Phase = 5;
|
||||
break;
|
||||
case 5:
|
||||
if (Creature* Razorscale = ObjectAccessor::GetCreature(*me, instance ? instance->GetData64(TYPE_RAZORSCALE) : 0))
|
||||
if (Creature* Razorscale = ObjectAccessor::GetCreature(*me, instance ? instance->GetData64(BOSS_RAZORSCALE) : 0))
|
||||
{
|
||||
Razorscale->AI()->DoAction(ACTION_EVENT_START);
|
||||
me->SetInCombatWith(Razorscale);
|
||||
@@ -707,7 +707,7 @@ class npc_expedition_commander : public CreatureScript
|
||||
bool OnGossipHello(Player* player, Creature* creature)
|
||||
{
|
||||
InstanceScript* instance = creature->GetInstanceScript();
|
||||
if (instance && instance->GetBossState(TYPE_RAZORSCALE) == NOT_STARTED)
|
||||
if (instance && instance->GetBossState(BOSS_RAZORSCALE) == NOT_STARTED)
|
||||
{
|
||||
player->PrepareGossipMenu(creature);
|
||||
|
||||
|
||||
@@ -53,7 +53,7 @@ public:
|
||||
|
||||
struct boss_thorimAI : public BossAI
|
||||
{
|
||||
boss_thorimAI(Creature* pCreature) : BossAI(pCreature, TYPE_THORIM)
|
||||
boss_thorimAI(Creature* pCreature) : BossAI(pCreature, BOSS_THORIM)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
@@ -176,7 +176,7 @@ public:
|
||||
|
||||
struct boss_xt002_AI : public BossAI
|
||||
{
|
||||
boss_xt002_AI(Creature *pCreature) : BossAI(pCreature, TYPE_XT002)
|
||||
boss_xt002_AI(Creature *pCreature) : BossAI(pCreature, BOSS_XT002)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -547,7 +547,7 @@ public:
|
||||
void JustDied(Unit * /*victim*/)
|
||||
{
|
||||
if (m_pInstance)
|
||||
if (Creature* pXT002 = me->GetCreature(*me, m_pInstance->GetData64(TYPE_XT002)))
|
||||
if (Creature* pXT002 = me->GetCreature(*me, m_pInstance->GetData64(BOSS_XT002)))
|
||||
if (pXT002->AI())
|
||||
pXT002->AI()->DoAction(ACTION_ENTER_HARD_MODE);
|
||||
|
||||
@@ -557,7 +557,7 @@ public:
|
||||
|
||||
void DamageTaken(Unit * /*pDone*/, uint32 &damage)
|
||||
{
|
||||
if (Creature* pXT002 = me->GetCreature(*me, m_pInstance->GetData64(TYPE_XT002)))
|
||||
if (Creature* pXT002 = me->GetCreature(*me, m_pInstance->GetData64(BOSS_XT002)))
|
||||
if (pXT002->AI())
|
||||
{
|
||||
uint32 health = me->GetHealth();
|
||||
@@ -600,13 +600,13 @@ public:
|
||||
{
|
||||
me->SetReactState(REACT_PASSIVE);
|
||||
|
||||
if (Creature* pXT002 = me->GetCreature(*me, m_pInstance->GetData64(TYPE_XT002)))
|
||||
if (Creature* pXT002 = me->GetCreature(*me, m_pInstance->GetData64(BOSS_XT002)))
|
||||
me->GetMotionMaster()->MoveChase(pXT002);
|
||||
}
|
||||
|
||||
void UpdateAI(const uint32 /*diff*/)
|
||||
{
|
||||
if (Creature* pXT002 = me->GetCreature(*me, m_pInstance->GetData64(TYPE_XT002)))
|
||||
if (Creature* pXT002 = me->GetCreature(*me, m_pInstance->GetData64(BOSS_XT002)))
|
||||
{
|
||||
if (me->GetDistance2d(pXT002) <= 0.5)
|
||||
{
|
||||
@@ -718,7 +718,7 @@ public:
|
||||
{
|
||||
me->SetReactState(REACT_PASSIVE);
|
||||
|
||||
if (Creature* pXT002 = me->GetCreature(*me, m_pInstance->GetData64(TYPE_XT002)))
|
||||
if (Creature* pXT002 = me->GetCreature(*me, m_pInstance->GetData64(BOSS_XT002)))
|
||||
me->GetMotionMaster()->MoveChase(pXT002);
|
||||
}
|
||||
|
||||
@@ -729,7 +729,7 @@ public:
|
||||
|
||||
void UpdateAI(const uint32 /*diff*/)
|
||||
{
|
||||
if (Creature* pXT002 = me->GetCreature(*me, m_pInstance->GetData64(TYPE_XT002)))
|
||||
if (Creature* pXT002 = me->GetCreature(*me, m_pInstance->GetData64(BOSS_XT002)))
|
||||
{
|
||||
if (me->GetDistance2d(pXT002) <= 0.5)
|
||||
{
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
|
||||
static const DoorData doorData[] =
|
||||
{
|
||||
{GO_LEVIATHAN_DOOR, TYPE_LEVIATHAN, DOOR_TYPE_ROOM, BOUNDARY_S},
|
||||
{0, 0, DOOR_TYPE_ROOM, BOUNDARY_NONE}
|
||||
{ GO_LEVIATHAN_DOOR, BOSS_LEVIATHAN, DOOR_TYPE_ROOM, BOUNDARY_S },
|
||||
{ 0, 0, DOOR_TYPE_ROOM, BOUNDARY_NONE },
|
||||
};
|
||||
|
||||
class instance_ulduar : public InstanceMapScript
|
||||
@@ -32,46 +32,47 @@ class instance_ulduar : public InstanceMapScript
|
||||
public:
|
||||
instance_ulduar() : InstanceMapScript("instance_ulduar", 603) { }
|
||||
|
||||
InstanceScript* GetInstanceScript(InstanceMap* pMap) const
|
||||
InstanceScript* GetInstanceScript(InstanceMap* map) const
|
||||
{
|
||||
return new instance_ulduar_InstanceMapScript(pMap);
|
||||
return new instance_ulduar_InstanceMapScript(map);
|
||||
}
|
||||
|
||||
struct instance_ulduar_InstanceMapScript : public InstanceScript
|
||||
{
|
||||
instance_ulduar_InstanceMapScript(InstanceMap* map) : InstanceScript(map) { }
|
||||
|
||||
uint32 uiEncounter[MAX_ENCOUNTER];
|
||||
uint32 Encounter[MAX_ENCOUNTER];
|
||||
std::string m_strInstData;
|
||||
|
||||
uint64 uiLeviathanGUID;
|
||||
uint64 uiIgnisGUID;
|
||||
uint64 uiRazorscaleGUID;
|
||||
uint64 uiRazorscaleController;
|
||||
uint64 uiRazorHarpoonGUIDs[4];
|
||||
uint64 uiExpCommanderGUID;
|
||||
uint64 uiXT002GUID;
|
||||
uint64 uiAssemblyGUIDs[3];
|
||||
uint64 uiKologarnGUID;
|
||||
uint64 uiLeftArmGUID;
|
||||
uint64 uiRightArmGUID;
|
||||
uint64 uiAuriayaGUID;
|
||||
uint64 uiMimironGUID;
|
||||
uint64 uiHodirGUID;
|
||||
uint64 uiThorimGUID;
|
||||
uint64 uiFreyaGUID;
|
||||
uint64 uiVezaxGUID;
|
||||
uint64 uiYoggSaronGUID;
|
||||
uint64 uiAlgalonGUID;
|
||||
uint64 uiLeviathanGateGUID;
|
||||
uint64 uiVezaxDoorGUID;
|
||||
uint64 LeviathanGUID;
|
||||
uint64 IgnisGUID;
|
||||
uint64 RazorscaleGUID;
|
||||
uint64 RazorscaleController;
|
||||
uint64 RazorHarpoonGUIDs[4];
|
||||
uint64 ExpeditionCommanderGUID;
|
||||
uint64 XT002GUID;
|
||||
uint64 AssemblyGUIDs[3];
|
||||
uint64 KologarnGUID;
|
||||
uint64 LeftArmGUID;
|
||||
uint64 RightArmGUID;
|
||||
uint64 AuriayaGUID;
|
||||
uint64 MimironGUID;
|
||||
uint64 HodirGUID;
|
||||
uint64 ThorimGUID;
|
||||
uint64 FreyaGUID;
|
||||
uint64 KeeperGUIDs[3];
|
||||
uint64 VezaxGUID;
|
||||
uint64 YoggSaronGUID;
|
||||
uint64 AlgalonGUID;
|
||||
uint64 LeviathanGateGUID;
|
||||
uint64 VezaxDoorGUID;
|
||||
|
||||
uint64 uiKologarnChestGUID;
|
||||
uint64 uiKologarnBridgeGUID;
|
||||
uint64 uiKologarnDoorGUID;
|
||||
uint64 uiThorimChestGUID;
|
||||
uint64 uiHodirChestGUID;
|
||||
uint64 uiFreyaChestGUID;
|
||||
uint64 KologarnChestGUID;
|
||||
uint64 KologarnBridgeGUID;
|
||||
uint64 KologarnDoorGUID;
|
||||
uint64 ThorimChestGUID;
|
||||
uint64 HodirChestGUID;
|
||||
uint64 FreyaChestGUID;
|
||||
|
||||
uint32 TeamInInstance;
|
||||
|
||||
@@ -81,42 +82,43 @@ public:
|
||||
{
|
||||
SetBossNumber(MAX_ENCOUNTER);
|
||||
LoadDoorData(doorData);
|
||||
uiIgnisGUID = 0;
|
||||
uiRazorscaleGUID = 0;
|
||||
uiRazorscaleController = 0;
|
||||
uiExpCommanderGUID = 0;
|
||||
uiXT002GUID = 0;
|
||||
uiKologarnGUID = 0;
|
||||
uiLeftArmGUID = 0;
|
||||
uiRightArmGUID = 0;
|
||||
uiAuriayaGUID = 0;
|
||||
uiMimironGUID = 0;
|
||||
uiHodirGUID = 0;
|
||||
uiThorimGUID = 0;
|
||||
uiFreyaGUID = 0;
|
||||
uiVezaxGUID = 0;
|
||||
uiYoggSaronGUID = 0;
|
||||
uiAlgalonGUID = 0;
|
||||
uiKologarnChestGUID = 0;
|
||||
uiKologarnBridgeGUID = 0;
|
||||
uiKologarnChestGUID = 0;
|
||||
uiThorimChestGUID = 0;
|
||||
uiHodirChestGUID = 0;
|
||||
uiFreyaChestGUID = 0;
|
||||
uiLeviathanGateGUID = 0;
|
||||
uiVezaxDoorGUID = 0;
|
||||
TeamInInstance = 0;
|
||||
IgnisGUID = 0;
|
||||
RazorscaleGUID = 0;
|
||||
RazorscaleController = 0;
|
||||
ExpeditionCommanderGUID = 0;
|
||||
XT002GUID = 0;
|
||||
KologarnGUID = 0;
|
||||
LeftArmGUID = 0;
|
||||
RightArmGUID = 0;
|
||||
AuriayaGUID = 0;
|
||||
MimironGUID = 0;
|
||||
HodirGUID = 0;
|
||||
ThorimGUID = 0;
|
||||
FreyaGUID = 0;
|
||||
VezaxGUID = 0;
|
||||
YoggSaronGUID = 0;
|
||||
AlgalonGUID = 0;
|
||||
KologarnChestGUID = 0;
|
||||
KologarnBridgeGUID = 0;
|
||||
KologarnChestGUID = 0;
|
||||
ThorimChestGUID = 0;
|
||||
HodirChestGUID = 0;
|
||||
FreyaChestGUID = 0;
|
||||
LeviathanGateGUID = 0;
|
||||
VezaxDoorGUID = 0;
|
||||
TeamInInstance = 0;
|
||||
|
||||
memset(uiEncounter, 0, sizeof(uiEncounter));
|
||||
memset(uiAssemblyGUIDs, 0, sizeof(uiAssemblyGUIDs));
|
||||
memset(uiRazorHarpoonGUIDs, 0, sizeof(uiRazorHarpoonGUIDs));
|
||||
memset(Encounter, 0, sizeof(Encounter));
|
||||
memset(AssemblyGUIDs, 0, sizeof(AssemblyGUIDs));
|
||||
memset(RazorHarpoonGUIDs, 0, sizeof(RazorHarpoonGUIDs));
|
||||
memset(KeeperGUIDs, 0, sizeof(KeeperGUIDs));
|
||||
}
|
||||
|
||||
bool IsEncounterInProgress() const
|
||||
{
|
||||
for (uint8 i = 0; i < MAX_ENCOUNTER; ++i)
|
||||
{
|
||||
if (uiEncounter[i] == IN_PROGRESS)
|
||||
if (Encounter[i] == IN_PROGRESS)
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -142,42 +144,59 @@ public:
|
||||
switch (creature->GetEntry())
|
||||
{
|
||||
case NPC_LEVIATHAN:
|
||||
uiLeviathanGUID = creature->GetGUID();
|
||||
LeviathanGUID = creature->GetGUID();
|
||||
break;
|
||||
case NPC_IGNIS:
|
||||
uiIgnisGUID = creature->GetGUID();
|
||||
IgnisGUID = creature->GetGUID();
|
||||
break;
|
||||
case NPC_RAZORSCALE:
|
||||
uiRazorscaleGUID = creature->GetGUID();
|
||||
RazorscaleGUID = creature->GetGUID();
|
||||
break;
|
||||
case NPC_RAZORSCALE_CONTROLLER:
|
||||
uiRazorscaleController = creature->GetGUID();
|
||||
RazorscaleController = creature->GetGUID();
|
||||
break;
|
||||
case NPC_EXPEDITION_COMMANDER:
|
||||
uiExpCommanderGUID = creature->GetGUID();
|
||||
return;
|
||||
ExpeditionCommanderGUID = creature->GetGUID();
|
||||
break;
|
||||
case NPC_XT002:
|
||||
uiXT002GUID = creature->GetGUID();
|
||||
XT002GUID = creature->GetGUID();
|
||||
break;
|
||||
|
||||
// Assembly of Iron
|
||||
case NPC_STEELBREAKER:
|
||||
uiAssemblyGUIDs[0] = creature->GetGUID();
|
||||
AssemblyGUIDs[0] = creature->GetGUID();
|
||||
break;
|
||||
case NPC_MOLGEIM:
|
||||
uiAssemblyGUIDs[1] = creature->GetGUID();
|
||||
AssemblyGUIDs[1] = creature->GetGUID();
|
||||
break;
|
||||
case NPC_BRUNDIR:
|
||||
uiAssemblyGUIDs[2] = creature->GetGUID();
|
||||
AssemblyGUIDs[2] = creature->GetGUID();
|
||||
break;
|
||||
|
||||
// Freya's Keeper
|
||||
case NPC_IRONBRANCH:
|
||||
KeeperGUIDs[0] = creature->GetGUID();
|
||||
if (GetBossState(BOSS_FREYA) == DONE)
|
||||
creature->DespawnOrUnsummon();
|
||||
break;
|
||||
case NPC_BRIGHTLEAF:
|
||||
KeeperGUIDs[1] = creature->GetGUID();
|
||||
if (GetBossState(BOSS_FREYA) == DONE)
|
||||
creature->DespawnOrUnsummon();
|
||||
break;
|
||||
case NPC_STONEBARK:
|
||||
KeeperGUIDs[2] = creature->GetGUID();
|
||||
if (GetBossState(BOSS_FREYA) == DONE)
|
||||
creature->DespawnOrUnsummon();
|
||||
break;
|
||||
|
||||
// Kologarn
|
||||
case NPC_KOLOGARN:
|
||||
uiKologarnGUID = creature->GetGUID();
|
||||
KologarnGUID = creature->GetGUID();
|
||||
break;
|
||||
case NPC_KOLOGARN_BRIDGE:
|
||||
// The below hacks are courtesy of the grid/visibilitysystem
|
||||
if (GetBossState(TYPE_KOLOGARN) == DONE)
|
||||
if (GetBossState(BOSS_KOLOGARN) == DONE)
|
||||
{
|
||||
creature->SetDeadByDefault(true);
|
||||
creature->setDeathState(CORPSE);
|
||||
@@ -193,29 +212,30 @@ public:
|
||||
break;
|
||||
|
||||
case NPC_AURIAYA:
|
||||
uiAuriayaGUID = creature->GetGUID();
|
||||
AuriayaGUID = creature->GetGUID();
|
||||
break;
|
||||
case NPC_MIMIRON:
|
||||
uiMimironGUID = creature->GetGUID();
|
||||
MimironGUID = creature->GetGUID();
|
||||
break;
|
||||
case NPC_HODIR:
|
||||
uiHodirGUID = creature->GetGUID();
|
||||
HodirGUID = creature->GetGUID();
|
||||
break;
|
||||
case NPC_THORIM:
|
||||
uiThorimGUID = creature->GetGUID();
|
||||
ThorimGUID = creature->GetGUID();
|
||||
break;
|
||||
case NPC_FREYA:
|
||||
uiFreyaGUID = creature->GetGUID();
|
||||
FreyaGUID = creature->GetGUID();
|
||||
break;
|
||||
case NPC_VEZAX:
|
||||
uiVezaxGUID = creature->GetGUID();
|
||||
VezaxGUID = creature->GetGUID();
|
||||
break;
|
||||
case NPC_YOGGSARON:
|
||||
uiYoggSaronGUID = creature->GetGUID();
|
||||
YoggSaronGUID = creature->GetGUID();
|
||||
break;
|
||||
case NPC_ALGALON:
|
||||
uiAlgalonGUID = creature->GetGUID();
|
||||
AlgalonGUID = creature->GetGUID();
|
||||
break;
|
||||
|
||||
// Hodir's Helper NPCs
|
||||
case NPC_EIVI_NIGHTFEATHER:
|
||||
if (TeamInInstance == HORDE)
|
||||
@@ -253,70 +273,70 @@ public:
|
||||
|
||||
}
|
||||
|
||||
void OnGameObjectCreate(GameObject* go)
|
||||
void OnGameObjectCreate(GameObject* gameObject)
|
||||
{
|
||||
switch (go->GetEntry())
|
||||
switch (gameObject->GetEntry())
|
||||
{
|
||||
case GO_KOLOGARN_CHEST_HERO:
|
||||
case GO_KOLOGARN_CHEST:
|
||||
uiKologarnChestGUID = go->GetGUID();
|
||||
KologarnChestGUID = gameObject->GetGUID();
|
||||
break;
|
||||
case GO_KOLOGARN_BRIDGE:
|
||||
uiKologarnBridgeGUID = go->GetGUID();
|
||||
if (GetBossState(TYPE_KOLOGARN) == DONE)
|
||||
HandleGameObject(0, false, go);
|
||||
KologarnBridgeGUID = gameObject->GetGUID();
|
||||
if (GetBossState(BOSS_KOLOGARN) == DONE)
|
||||
HandleGameObject(0, false, gameObject);
|
||||
break;
|
||||
case GO_KOLOGARN_DOOR:
|
||||
uiKologarnDoorGUID = go->GetGUID();
|
||||
KologarnDoorGUID = gameObject->GetGUID();
|
||||
break;
|
||||
case GO_THORIM_CHEST_HERO:
|
||||
case GO_THORIM_CHEST:
|
||||
uiThorimChestGUID = go->GetGUID();
|
||||
ThorimChestGUID = gameObject->GetGUID();
|
||||
break;
|
||||
case GO_HODIR_CHEST_HERO:
|
||||
case GO_HODIR_CHEST:
|
||||
uiHodirChestGUID = go->GetGUID();
|
||||
HodirChestGUID = gameObject->GetGUID();
|
||||
break;
|
||||
case GO_FREYA_CHEST_HERO:
|
||||
case GO_FREYA_CHEST:
|
||||
uiFreyaChestGUID = go->GetGUID();
|
||||
FreyaChestGUID = gameObject->GetGUID();
|
||||
break;
|
||||
case GO_LEVIATHAN_DOOR:
|
||||
AddDoor(go, true);
|
||||
AddDoor(gameObject, true);
|
||||
break;
|
||||
case GO_LEVIATHAN_GATE:
|
||||
uiLeviathanGateGUID = go->GetGUID();
|
||||
if (GetBossState(TYPE_LEVIATHAN) == DONE)
|
||||
go->SetGoState(GO_STATE_ACTIVE_ALTERNATIVE);
|
||||
LeviathanGateGUID = gameObject->GetGUID();
|
||||
if (GetBossState(BOSS_LEVIATHAN) == DONE)
|
||||
gameObject->SetGoState(GO_STATE_ACTIVE_ALTERNATIVE);
|
||||
break;
|
||||
case GO_VEZAX_DOOR:
|
||||
uiVezaxDoorGUID = go->GetGUID();
|
||||
HandleGameObject(0, false, go);
|
||||
VezaxDoorGUID = gameObject->GetGUID();
|
||||
HandleGameObject(0, false, gameObject);
|
||||
break;
|
||||
case GO_RAZOR_HARPOON_1:
|
||||
uiRazorHarpoonGUIDs[0] = go->GetGUID();
|
||||
RazorHarpoonGUIDs[0] = gameObject->GetGUID();
|
||||
break;
|
||||
case GO_RAZOR_HARPOON_2:
|
||||
uiRazorHarpoonGUIDs[1] = go->GetGUID();
|
||||
RazorHarpoonGUIDs[1] = gameObject->GetGUID();
|
||||
break;
|
||||
case GO_RAZOR_HARPOON_3:
|
||||
uiRazorHarpoonGUIDs[2] = go->GetGUID();
|
||||
RazorHarpoonGUIDs[2] = gameObject->GetGUID();
|
||||
break;
|
||||
case GO_RAZOR_HARPOON_4:
|
||||
uiRazorHarpoonGUIDs[3] = go->GetGUID();
|
||||
RazorHarpoonGUIDs[3] = gameObject->GetGUID();
|
||||
break;
|
||||
case GO_MOLE_MACHINE:
|
||||
if (GetBossState(TYPE_RAZORSCALE) == IN_PROGRESS)
|
||||
go->SetGoState(GO_STATE_ACTIVE);
|
||||
if (GetBossState(BOSS_RAZORSCALE) == IN_PROGRESS)
|
||||
gameObject->SetGoState(GO_STATE_ACTIVE);
|
||||
}
|
||||
}
|
||||
|
||||
void OnGameObjectRemove(GameObject* go)
|
||||
void OnGameObjectRemove(GameObject* gameObject)
|
||||
{
|
||||
switch (go->GetEntry())
|
||||
switch (gameObject->GetEntry())
|
||||
{
|
||||
case GO_LEVIATHAN_DOOR:
|
||||
AddDoor(go, false);
|
||||
AddDoor(gameObject, false);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
@@ -326,7 +346,7 @@ public:
|
||||
void ProcessEvent(GameObject* /*go*/, uint32 eventId)
|
||||
{
|
||||
// Flame Leviathan's Tower Event triggers
|
||||
Creature* FlameLeviathan = instance->GetCreature(uiLeviathanGUID);
|
||||
Creature* FlameLeviathan = instance->GetCreature(LeviathanGUID);
|
||||
|
||||
if (FlameLeviathan && FlameLeviathan->isAlive()) //No leviathan, no event triggering ;)
|
||||
switch (eventId)
|
||||
@@ -357,63 +377,63 @@ public:
|
||||
|
||||
switch (type)
|
||||
{
|
||||
case TYPE_LEVIATHAN:
|
||||
case TYPE_IGNIS:
|
||||
case TYPE_RAZORSCALE:
|
||||
case TYPE_XT002:
|
||||
case TYPE_ASSEMBLY:
|
||||
case TYPE_AURIAYA:
|
||||
case TYPE_MIMIRON:
|
||||
case TYPE_VEZAX:
|
||||
case BOSS_LEVIATHAN:
|
||||
case BOSS_IGNIS:
|
||||
case BOSS_RAZORSCALE:
|
||||
case BOSS_XT002:
|
||||
case BOSS_ASSEMBLY_OF_IRON:
|
||||
case BOSS_AURIAYA:
|
||||
case BOSS_MIMIRON:
|
||||
case BOSS_VEZAX:
|
||||
if (state == DONE)
|
||||
HandleGameObject(uiVezaxDoorGUID, true);
|
||||
HandleGameObject(VezaxDoorGUID, true);
|
||||
break;
|
||||
case TYPE_YOGGSARON:
|
||||
case BOSS_YOGGSARON:
|
||||
break;
|
||||
case TYPE_KOLOGARN:
|
||||
case BOSS_KOLOGARN:
|
||||
if (state == DONE)
|
||||
{
|
||||
if (GameObject* go = instance->GetGameObject(uiKologarnChestGUID))
|
||||
go->SetRespawnTime(go->GetRespawnDelay());
|
||||
HandleGameObject(uiKologarnBridgeGUID, false);
|
||||
if (GameObject* gameObject = instance->GetGameObject(KologarnChestGUID))
|
||||
gameObject->SetRespawnTime(gameObject->GetRespawnDelay());
|
||||
HandleGameObject(KologarnBridgeGUID, false);
|
||||
}
|
||||
if (state == IN_PROGRESS)
|
||||
HandleGameObject(uiKologarnDoorGUID, false);
|
||||
HandleGameObject(KologarnDoorGUID, false);
|
||||
else
|
||||
HandleGameObject(uiKologarnDoorGUID, true);
|
||||
HandleGameObject(KologarnDoorGUID, true);
|
||||
break;
|
||||
case TYPE_HODIR:
|
||||
case BOSS_HODIR:
|
||||
if (state == DONE)
|
||||
if (GameObject* go = instance->GetGameObject(uiHodirChestGUID))
|
||||
go->SetRespawnTime(go->GetRespawnDelay());
|
||||
if (GameObject* gameObject = instance->GetGameObject(HodirChestGUID))
|
||||
gameObject->SetRespawnTime(gameObject->GetRespawnDelay());
|
||||
break;
|
||||
case TYPE_THORIM:
|
||||
case BOSS_THORIM:
|
||||
if (state == DONE)
|
||||
if (GameObject* go = instance->GetGameObject(uiThorimChestGUID))
|
||||
go->SetRespawnTime(go->GetRespawnDelay());
|
||||
if (GameObject* gameObject = instance->GetGameObject(ThorimChestGUID))
|
||||
gameObject->SetRespawnTime(gameObject->GetRespawnDelay());
|
||||
break;
|
||||
case TYPE_FREYA:
|
||||
case BOSS_FREYA:
|
||||
if (state == DONE)
|
||||
if (GameObject* go = instance->GetGameObject(uiFreyaChestGUID))
|
||||
go->SetRespawnTime(go->GetRespawnDelay());
|
||||
if (GameObject* gameObject = instance->GetGameObject(FreyaChestGUID))
|
||||
gameObject->SetRespawnTime(gameObject->GetRespawnDelay());
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
return true;
|
||||
}
|
||||
|
||||
void SetData(uint32 type, uint32 data)
|
||||
{
|
||||
switch(type)
|
||||
switch (type)
|
||||
{
|
||||
case TYPE_COLOSSUS:
|
||||
uiEncounter[TYPE_COLOSSUS] = data;
|
||||
Encounter[TYPE_COLOSSUS] = data;
|
||||
if (data == 2)
|
||||
{
|
||||
if (Creature* pBoss = instance->GetCreature(uiLeviathanGUID))
|
||||
pBoss->AI()->DoAction(10);
|
||||
if (GameObject* pGate = instance->GetGameObject(uiLeviathanGateGUID))
|
||||
pGate->SetGoState(GO_STATE_ACTIVE_ALTERNATIVE);
|
||||
if (Creature* Leviathan = instance->GetCreature(LeviathanGUID))
|
||||
Leviathan->AI()->DoAction(10);
|
||||
if (GameObject* gameObject = instance->GetGameObject(LeviathanGateGUID))
|
||||
gameObject->SetGoState(GO_STATE_ACTIVE_ALTERNATIVE);
|
||||
SaveToDB();
|
||||
}
|
||||
break;
|
||||
@@ -427,45 +447,78 @@ public:
|
||||
switch (type)
|
||||
{
|
||||
case DATA_LEFT_ARM:
|
||||
uiLeftArmGUID = data;
|
||||
LeftArmGUID = data;
|
||||
break;
|
||||
case DATA_RIGHT_ARM:
|
||||
uiRightArmGUID = data;
|
||||
RightArmGUID = data;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
uint64 GetData64(uint32 data)
|
||||
{
|
||||
switch(data)
|
||||
switch (data)
|
||||
{
|
||||
case TYPE_LEVIATHAN: return uiLeviathanGUID;
|
||||
case TYPE_IGNIS: return uiIgnisGUID;
|
||||
case TYPE_RAZORSCALE: return uiRazorscaleGUID;
|
||||
case DATA_RAZORSCALE_CONTROL: return uiRazorscaleController;
|
||||
case TYPE_XT002: return uiXT002GUID;
|
||||
case TYPE_KOLOGARN: return uiKologarnGUID;
|
||||
case DATA_LEFT_ARM: return uiLeftArmGUID;
|
||||
case DATA_RIGHT_ARM: return uiRightArmGUID;
|
||||
case TYPE_AURIAYA: return uiAuriayaGUID;
|
||||
case TYPE_MIMIRON: return uiMimironGUID;
|
||||
case TYPE_HODIR: return uiHodirGUID;
|
||||
case TYPE_THORIM: return uiThorimGUID;
|
||||
case TYPE_FREYA: return uiFreyaGUID;
|
||||
case TYPE_VEZAX: return uiVezaxGUID;
|
||||
case TYPE_YOGGSARON: return uiYoggSaronGUID;
|
||||
case TYPE_ALGALON: return uiAlgalonGUID;
|
||||
case BOSS_LEVIATHAN:
|
||||
return LeviathanGUID;
|
||||
case BOSS_IGNIS:
|
||||
return IgnisGUID;
|
||||
case BOSS_RAZORSCALE:
|
||||
return RazorscaleGUID;
|
||||
case DATA_RAZORSCALE_CONTROL:
|
||||
return RazorscaleController;
|
||||
case BOSS_XT002:
|
||||
return XT002GUID;
|
||||
case BOSS_KOLOGARN:
|
||||
return KologarnGUID;
|
||||
case DATA_LEFT_ARM:
|
||||
return LeftArmGUID;
|
||||
case DATA_RIGHT_ARM:
|
||||
return RightArmGUID;
|
||||
case BOSS_AURIAYA:
|
||||
return AuriayaGUID;
|
||||
case BOSS_MIMIRON:
|
||||
return MimironGUID;
|
||||
case BOSS_HODIR:
|
||||
return HodirGUID;
|
||||
case BOSS_THORIM:
|
||||
return ThorimGUID;
|
||||
case BOSS_FREYA:
|
||||
return FreyaGUID;
|
||||
case BOSS_VEZAX:
|
||||
return VezaxGUID;
|
||||
case BOSS_YOGGSARON:
|
||||
return YoggSaronGUID;
|
||||
case BOSS_ALGALON:
|
||||
return AlgalonGUID;
|
||||
|
||||
// razorscale expedition commander
|
||||
case DATA_EXP_COMMANDER: return uiExpCommanderGUID;
|
||||
case GO_RAZOR_HARPOON_1: return uiRazorHarpoonGUIDs[0];
|
||||
case GO_RAZOR_HARPOON_2: return uiRazorHarpoonGUIDs[1];
|
||||
case GO_RAZOR_HARPOON_3: return uiRazorHarpoonGUIDs[2];
|
||||
case GO_RAZOR_HARPOON_4: return uiRazorHarpoonGUIDs[3];
|
||||
// Razorscale expedition commander
|
||||
case DATA_EXPEDITION_COMMANDER:
|
||||
return ExpeditionCommanderGUID;
|
||||
case GO_RAZOR_HARPOON_1:
|
||||
return RazorHarpoonGUIDs[0];
|
||||
case GO_RAZOR_HARPOON_2:
|
||||
return RazorHarpoonGUIDs[1];
|
||||
case GO_RAZOR_HARPOON_3:
|
||||
return RazorHarpoonGUIDs[2];
|
||||
case GO_RAZOR_HARPOON_4:
|
||||
return RazorHarpoonGUIDs[3];
|
||||
|
||||
// Assembly of Iron
|
||||
case DATA_STEELBREAKER: return uiAssemblyGUIDs[0];
|
||||
case DATA_MOLGEIM: return uiAssemblyGUIDs[1];
|
||||
case DATA_BRUNDIR: return uiAssemblyGUIDs[2];
|
||||
case BOSS_STEELBREAKER:
|
||||
return AssemblyGUIDs[0];
|
||||
case BOSS_MOLGEIM:
|
||||
return AssemblyGUIDs[1];
|
||||
case BOSS_BRUNDIR:
|
||||
return AssemblyGUIDs[2];
|
||||
|
||||
// Freya's Keepers
|
||||
case BOSS_BRIGHTLEAF:
|
||||
return KeeperGUIDs[0];
|
||||
case BOSS_IRONBRANCH:
|
||||
return KeeperGUIDs[1];
|
||||
case BOSS_STONEBARK:
|
||||
return KeeperGUIDs[2];
|
||||
}
|
||||
|
||||
return 0;
|
||||
@@ -473,10 +526,10 @@ public:
|
||||
|
||||
uint32 GetData(uint32 type)
|
||||
{
|
||||
switch(type)
|
||||
switch (type)
|
||||
{
|
||||
case TYPE_COLOSSUS:
|
||||
return uiEncounter[type];
|
||||
return Encounter[type];
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
||||
@@ -18,118 +18,125 @@
|
||||
#ifndef DEF_ULDUAR_H
|
||||
#define DEF_ULDUAR_H
|
||||
|
||||
enum UlduarTypes
|
||||
enum UlduarBosses
|
||||
{
|
||||
MAX_ENCOUNTER = 15,
|
||||
MAX_ENCOUNTER = 20,
|
||||
|
||||
TYPE_LEVIATHAN = 0,
|
||||
TYPE_IGNIS = 1,
|
||||
TYPE_RAZORSCALE = 2,
|
||||
TYPE_XT002 = 3,
|
||||
TYPE_ASSEMBLY = 4,
|
||||
TYPE_KOLOGARN = 5,
|
||||
TYPE_AURIAYA = 6,
|
||||
TYPE_MIMIRON = 7,
|
||||
TYPE_HODIR = 8,
|
||||
TYPE_THORIM = 9,
|
||||
TYPE_FREYA = 10,
|
||||
TYPE_VEZAX = 11,
|
||||
TYPE_YOGGSARON = 12,
|
||||
TYPE_ALGALON = 13,
|
||||
TYPE_COLOSSUS = 14,
|
||||
BOSS_LEVIATHAN = 0,
|
||||
BOSS_IGNIS = 1,
|
||||
BOSS_RAZORSCALE = 2,
|
||||
BOSS_XT002 = 3,
|
||||
BOSS_ASSEMBLY_OF_IRON = 4,
|
||||
BOSS_STEELBREAKER = 5,
|
||||
BOSS_MOLGEIM = 6,
|
||||
BOSS_BRUNDIR = 7,
|
||||
BOSS_KOLOGARN = 8,
|
||||
BOSS_AURIAYA = 9,
|
||||
BOSS_MIMIRON = 10,
|
||||
BOSS_HODIR = 11,
|
||||
BOSS_THORIM = 12,
|
||||
BOSS_FREYA = 13,
|
||||
BOSS_BRIGHTLEAF = 14,
|
||||
BOSS_IRONBRANCH = 15,
|
||||
BOSS_STONEBARK = 16,
|
||||
BOSS_VEZAX = 17,
|
||||
BOSS_YOGGSARON = 18,
|
||||
BOSS_ALGALON = 19,
|
||||
TYPE_COLOSSUS = 20,
|
||||
|
||||
// Assembly of Iorn
|
||||
DATA_STEELBREAKER,
|
||||
DATA_MOLGEIM,
|
||||
DATA_BRUNDIR,
|
||||
|
||||
DATA_EXP_COMMANDER,
|
||||
// Razorscale
|
||||
DATA_EXPEDITION_COMMANDER,
|
||||
DATA_RAZORSCALE_CONTROL,
|
||||
|
||||
// Kologarn:
|
||||
// Kologarn
|
||||
DATA_LEFT_ARM,
|
||||
DATA_RIGHT_ARM,
|
||||
};
|
||||
|
||||
enum UlduarNPCs
|
||||
{
|
||||
NPC_LEVIATHAN = 33113,
|
||||
NPC_IGNIS = 33118,
|
||||
NPC_RAZORSCALE = 33186,
|
||||
NPC_RAZORSCALE_CONTROLLER = 33233,
|
||||
NPC_STEELFORGED_DEFFENDER = 33236,
|
||||
NPC_EXPEDITION_COMMANDER = 33210,
|
||||
NPC_XT002 = 33293,
|
||||
NPC_STEELBREAKER = 32867,
|
||||
NPC_MOLGEIM = 32927,
|
||||
NPC_BRUNDIR = 32857,
|
||||
NPC_KOLOGARN = 32930,
|
||||
NPC_KOLOGARN_BRIDGE = 34297,
|
||||
NPC_FOCUSED_EYEBEAM = 33632,
|
||||
NPC_FOCUSED_EYEBEAM_RIGHT = 33802,
|
||||
NPC_LEFT_ARM = 32933,
|
||||
NPC_RIGHT_ARM = 32934,
|
||||
NPC_RUBBLE = 33768,
|
||||
NPC_AURIAYA = 33515,
|
||||
NPC_MIMIRON = 33350,
|
||||
NPC_HODIR = 32845,
|
||||
NPC_THORIM = 32865,
|
||||
NPC_FREYA = 32906,
|
||||
NPC_VEZAX = 33271,
|
||||
NPC_YOGGSARON = 33288,
|
||||
NPC_ALGALON = 32871,
|
||||
NPC_LEVIATHAN_MKII = 33432,
|
||||
NPC_VX_001 = 33651,
|
||||
NPC_AERIAL_COMMAND_UNIT = 33670,
|
||||
NPC_LEVIATHAN = 33113,
|
||||
NPC_IGNIS = 33118,
|
||||
NPC_RAZORSCALE = 33186,
|
||||
NPC_RAZORSCALE_CONTROLLER = 33233,
|
||||
NPC_STEELFORGED_DEFFENDER = 33236,
|
||||
NPC_EXPEDITION_COMMANDER = 33210,
|
||||
NPC_XT002 = 33293,
|
||||
NPC_STEELBREAKER = 32867,
|
||||
NPC_MOLGEIM = 32927,
|
||||
NPC_BRUNDIR = 32857,
|
||||
NPC_KOLOGARN = 32930,
|
||||
NPC_KOLOGARN_BRIDGE = 34297,
|
||||
NPC_FOCUSED_EYEBEAM = 33632,
|
||||
NPC_FOCUSED_EYEBEAM_RIGHT = 33802,
|
||||
NPC_LEFT_ARM = 32933,
|
||||
NPC_RIGHT_ARM = 32934,
|
||||
NPC_RUBBLE = 33768,
|
||||
NPC_AURIAYA = 33515,
|
||||
NPC_MIMIRON = 33350,
|
||||
NPC_HODIR = 32845,
|
||||
NPC_THORIM = 32865,
|
||||
NPC_FREYA = 32906,
|
||||
NPC_VEZAX = 33271,
|
||||
NPC_YOGGSARON = 33288,
|
||||
NPC_ALGALON = 32871,
|
||||
NPC_LEVIATHAN_MKII = 33432,
|
||||
NPC_VX_001 = 33651,
|
||||
NPC_AERIAL_COMMAND_UNIT = 33670,
|
||||
|
||||
// Freya's Keepers
|
||||
NPC_IRONBRANCH = 32913,
|
||||
NPC_BRIGHTLEAF = 32915,
|
||||
NPC_STONEBARK = 32914,
|
||||
|
||||
// Hodir's Helper NPCs
|
||||
NPC_TOR_GREYCLOUD = 32941,
|
||||
NPC_KAR_GREYCLOUD = 33333,
|
||||
NPC_EIVI_NIGHTFEATHER = 33325,
|
||||
NPC_ELLIE_NIGHTFEATHER = 32901,
|
||||
NPC_SPIRITWALKER_TARA = 33332,
|
||||
NPC_SPIRITWALKER_YONA = 32950,
|
||||
NPC_ELEMENTALIST_MAHFUUN = 33328,
|
||||
NPC_ELEMENTALIST_AVUUN = 32900,
|
||||
NPC_AMIRA_BLAZEWEAVER = 33331,
|
||||
NPC_VEESHA_BLAZEWEAVER = 32946,
|
||||
NPC_MISSY_FLAMECUFFS = 32893,
|
||||
NPC_SISSY_FLAMECUFFS = 33327,
|
||||
NPC_BATTLE_PRIEST_ELIZA = 32948,
|
||||
NPC_BATTLE_PRIEST_GINA = 33330,
|
||||
NPC_FIELD_MEDIC_PENNY = 32897,
|
||||
NPC_FIELD_MEDIC_JESSI = 33326,
|
||||
NPC_TOR_GREYCLOUD = 32941,
|
||||
NPC_KAR_GREYCLOUD = 33333,
|
||||
NPC_EIVI_NIGHTFEATHER = 33325,
|
||||
NPC_ELLIE_NIGHTFEATHER = 32901,
|
||||
NPC_SPIRITWALKER_TARA = 33332,
|
||||
NPC_SPIRITWALKER_YONA = 32950,
|
||||
NPC_ELEMENTALIST_MAHFUUN = 33328,
|
||||
NPC_ELEMENTALIST_AVUUN = 32900,
|
||||
NPC_AMIRA_BLAZEWEAVER = 33331,
|
||||
NPC_VEESHA_BLAZEWEAVER = 32946,
|
||||
NPC_MISSY_FLAMECUFFS = 32893,
|
||||
NPC_SISSY_FLAMECUFFS = 33327,
|
||||
NPC_BATTLE_PRIEST_ELIZA = 32948,
|
||||
NPC_BATTLE_PRIEST_GINA = 33330,
|
||||
NPC_FIELD_MEDIC_PENNY = 32897,
|
||||
NPC_FIELD_MEDIC_JESSI = 33326,
|
||||
};
|
||||
|
||||
enum UlduarGameObjects
|
||||
{
|
||||
GO_KOLOGARN_CHEST_HERO = 195047,
|
||||
GO_KOLOGARN_CHEST = 195046,
|
||||
GO_KOLOGARN_BRIDGE = 194232,
|
||||
GO_KOLOGARN_DOOR = 194553,
|
||||
GO_THORIM_CHEST_HERO = 194315,
|
||||
GO_THORIM_CHEST = 194314,
|
||||
GO_HODIR_CHEST_HERO = 194308,
|
||||
GO_HODIR_CHEST = 194307,
|
||||
GO_FREYA_CHEST_HERO = 194325,
|
||||
GO_FREYA_CHEST = 194324,
|
||||
GO_LEVIATHAN_DOOR = 194905,
|
||||
GO_LEVIATHAN_GATE = 194630,
|
||||
GO_VEZAX_DOOR = 194750,
|
||||
GO_MOLE_MACHINE = 194316,
|
||||
GO_RAZOR_HARPOON_1 = 194542,
|
||||
GO_RAZOR_HARPOON_2 = 194541,
|
||||
GO_RAZOR_HARPOON_3 = 194543,
|
||||
GO_RAZOR_HARPOON_4 = 194519,
|
||||
GO_RAZOR_BROKEN_HARPOON = 194565,
|
||||
GO_KOLOGARN_CHEST_HERO = 195047,
|
||||
GO_KOLOGARN_CHEST = 195046,
|
||||
GO_KOLOGARN_BRIDGE = 194232,
|
||||
GO_KOLOGARN_DOOR = 194553,
|
||||
GO_THORIM_CHEST_HERO = 194315,
|
||||
GO_THORIM_CHEST = 194314,
|
||||
GO_HODIR_CHEST_HERO = 194308,
|
||||
GO_HODIR_CHEST = 194307,
|
||||
GO_FREYA_CHEST_HERO = 194325,
|
||||
GO_FREYA_CHEST = 194324,
|
||||
GO_LEVIATHAN_DOOR = 194905,
|
||||
GO_LEVIATHAN_GATE = 194630,
|
||||
GO_VEZAX_DOOR = 194750,
|
||||
GO_MOLE_MACHINE = 194316,
|
||||
GO_RAZOR_HARPOON_1 = 194542,
|
||||
GO_RAZOR_HARPOON_2 = 194541,
|
||||
GO_RAZOR_HARPOON_3 = 194543,
|
||||
GO_RAZOR_HARPOON_4 = 194519,
|
||||
GO_RAZOR_BROKEN_HARPOON = 194565,
|
||||
};
|
||||
|
||||
enum UlduarTowerEvents
|
||||
{
|
||||
EVENT_TOWER_OF_STORM_DESTROYED = 21031,
|
||||
EVENT_TOWER_OF_FROST_DESTROYED = 21032,
|
||||
EVENT_TOWER_OF_FLAMES_DESTROYED = 21033,
|
||||
EVENT_TOWER_OF_LIFE_DESTROYED = 21030
|
||||
EVENT_TOWER_OF_STORM_DESTROYED = 21031,
|
||||
EVENT_TOWER_OF_FROST_DESTROYED = 21032,
|
||||
EVENT_TOWER_OF_FLAMES_DESTROYED = 21033,
|
||||
EVENT_TOWER_OF_LIFE_DESTROYED = 21030,
|
||||
};
|
||||
|
||||
enum UlduarAchievementCriteria
|
||||
|
||||
@@ -33,85 +33,88 @@ The teleporter appears to be active and stable.
|
||||
- Conservatory of Life
|
||||
*/
|
||||
|
||||
#define BASE_CAMP 200
|
||||
#define GROUNDS 201
|
||||
#define FORGE 202
|
||||
#define SCRAPYARD 203
|
||||
#define ANTECHAMBER 204
|
||||
#define WALKWAY 205
|
||||
#define CONSERVATORY 206
|
||||
enum UlduarTeleporter
|
||||
{
|
||||
BASE_CAMP = 200,
|
||||
GROUNDS = 201,
|
||||
FORGE = 202,
|
||||
SCRAPYARD = 203,
|
||||
ANTECHAMBER = 204,
|
||||
WALKWAY = 205,
|
||||
CONSERVATORY = 206,
|
||||
};
|
||||
|
||||
class ulduar_teleporter : public GameObjectScript
|
||||
{
|
||||
public:
|
||||
ulduar_teleporter() : GameObjectScript("ulduar_teleporter") { }
|
||||
public:
|
||||
ulduar_teleporter() : GameObjectScript("ulduar_teleporter") { }
|
||||
|
||||
bool OnGossipSelect(Player *pPlayer, GameObject * /*pGO*/, uint32 sender, uint32 action)
|
||||
{
|
||||
pPlayer->PlayerTalkClass->ClearMenus();
|
||||
if (sender != GOSSIP_SENDER_MAIN)
|
||||
return false;
|
||||
if (!pPlayer->getAttackers().empty())
|
||||
return false;
|
||||
|
||||
switch(action)
|
||||
bool OnGossipSelect(Player* player, GameObject* /*gameObject*/, uint32 sender, uint32 action)
|
||||
{
|
||||
case BASE_CAMP:
|
||||
pPlayer->TeleportTo(603, -706.122f, -92.6024f, 429.876f, 0.0f);
|
||||
pPlayer->CLOSE_GOSSIP_MENU();
|
||||
break;
|
||||
case GROUNDS:
|
||||
pPlayer->TeleportTo(603, 131.248f, -35.3802f, 409.804f, 0.0f);
|
||||
pPlayer->CLOSE_GOSSIP_MENU();
|
||||
break;
|
||||
case FORGE:
|
||||
pPlayer->TeleportTo(603, 553.233f, -12.3247f, 409.679f, 0.0f);
|
||||
pPlayer->CLOSE_GOSSIP_MENU();
|
||||
break;
|
||||
case SCRAPYARD:
|
||||
pPlayer->TeleportTo(603, 926.292f, -11.4635f, 418.595f, 0.0f);
|
||||
pPlayer->CLOSE_GOSSIP_MENU();
|
||||
break;
|
||||
case ANTECHAMBER:
|
||||
pPlayer->TeleportTo(603, 1498.09f, -24.246f, 420.967f, 0.0f);
|
||||
pPlayer->CLOSE_GOSSIP_MENU();
|
||||
break;
|
||||
case WALKWAY:
|
||||
pPlayer->TeleportTo(603, 1859.45f, -24.1f, 448.9f, 0.0f);
|
||||
pPlayer->CLOSE_GOSSIP_MENU();
|
||||
break;
|
||||
case CONSERVATORY:
|
||||
pPlayer->TeleportTo(603, 2086.27f, -24.3134f, 421.239f, 0.0f);
|
||||
pPlayer->CLOSE_GOSSIP_MENU();
|
||||
break;
|
||||
}
|
||||
player->PlayerTalkClass->ClearMenus();
|
||||
if (sender != GOSSIP_SENDER_MAIN)
|
||||
return false;
|
||||
if (!player->getAttackers().empty())
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool OnGossipHello(Player *pPlayer, GameObject *pGO)
|
||||
{
|
||||
pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Teleport to the Expedition Base Camp", GOSSIP_SENDER_MAIN, BASE_CAMP);
|
||||
if (InstanceScript* pInstance = pGO->GetInstanceScript())
|
||||
{
|
||||
if (pInstance->GetData(TYPE_COLOSSUS) == 2) //count of 2 collossus death
|
||||
pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Teleport to the Formation Grounds", GOSSIP_SENDER_MAIN, GROUNDS);
|
||||
if (pInstance->GetBossState(TYPE_LEVIATHAN) == DONE)
|
||||
pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Teleport to the Colossal Forge", GOSSIP_SENDER_MAIN, FORGE);
|
||||
if (pInstance->GetBossState(TYPE_XT002) == DONE)
|
||||
switch (action)
|
||||
{
|
||||
pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Teleport to the Scrapyard", GOSSIP_SENDER_MAIN, SCRAPYARD);
|
||||
pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Teleport to the Antechamber of Ulduar", GOSSIP_SENDER_MAIN, ANTECHAMBER);
|
||||
case BASE_CAMP:
|
||||
player->TeleportTo(603, -706.122f, -92.6024f, 429.876f, 0.0f);
|
||||
player->CLOSE_GOSSIP_MENU();
|
||||
break;
|
||||
case GROUNDS:
|
||||
player->TeleportTo(603, 131.248f, -35.3802f, 409.804f, 0.0f);
|
||||
player->CLOSE_GOSSIP_MENU();
|
||||
break;
|
||||
case FORGE:
|
||||
player->TeleportTo(603, 553.233f, -12.3247f, 409.679f, 0.0f);
|
||||
player->CLOSE_GOSSIP_MENU();
|
||||
break;
|
||||
case SCRAPYARD:
|
||||
player->TeleportTo(603, 926.292f, -11.4635f, 418.595f, 0.0f);
|
||||
player->CLOSE_GOSSIP_MENU();
|
||||
break;
|
||||
case ANTECHAMBER:
|
||||
player->TeleportTo(603, 1498.09f, -24.246f, 420.967f, 0.0f);
|
||||
player->CLOSE_GOSSIP_MENU();
|
||||
break;
|
||||
case WALKWAY:
|
||||
player->TeleportTo(603, 1859.45f, -24.1f, 448.9f, 0.0f);
|
||||
player->CLOSE_GOSSIP_MENU();
|
||||
break;
|
||||
case CONSERVATORY:
|
||||
player->TeleportTo(603, 2086.27f, -24.3134f, 421.239f, 0.0f);
|
||||
player->CLOSE_GOSSIP_MENU();
|
||||
break;
|
||||
}
|
||||
if (pInstance->GetBossState(TYPE_KOLOGARN) == DONE)
|
||||
pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Teleport to the Shattered Walkway", GOSSIP_SENDER_MAIN, WALKWAY);
|
||||
if (pInstance->GetBossState(TYPE_AURIAYA) == DONE)
|
||||
pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Teleport to the Conservatory of Life", GOSSIP_SENDER_MAIN, CONSERVATORY);
|
||||
}
|
||||
pPlayer->SEND_GOSSIP_MENU(pGO->GetGOInfo()->GetGossipMenuId(), pGO->GetGUID());
|
||||
return true;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool OnGossipHello(Player* player, GameObject* gameObject)
|
||||
{
|
||||
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Teleport to the Expedition Base Camp", GOSSIP_SENDER_MAIN, BASE_CAMP);
|
||||
if (InstanceScript* instance = gameObject->GetInstanceScript())
|
||||
{
|
||||
if (instance->GetData(TYPE_COLOSSUS) == 2) //count of 2 collossus death
|
||||
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Teleport to the Formation Grounds", GOSSIP_SENDER_MAIN, GROUNDS);
|
||||
if (instance->GetBossState(BOSS_LEVIATHAN) == DONE)
|
||||
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Teleport to the Colossal Forge", GOSSIP_SENDER_MAIN, FORGE);
|
||||
if (instance->GetBossState(BOSS_XT002) == DONE)
|
||||
{
|
||||
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Teleport to the Scrapyard", GOSSIP_SENDER_MAIN, SCRAPYARD);
|
||||
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Teleport to the Antechamber of Ulduar", GOSSIP_SENDER_MAIN, ANTECHAMBER);
|
||||
}
|
||||
if (instance->GetBossState(BOSS_KOLOGARN) == DONE)
|
||||
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Teleport to the Shattered Walkway", GOSSIP_SENDER_MAIN, WALKWAY);
|
||||
if (instance->GetBossState(BOSS_AURIAYA) == DONE)
|
||||
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Teleport to the Conservatory of Life", GOSSIP_SENDER_MAIN, CONSERVATORY);
|
||||
}
|
||||
|
||||
player->SEND_GOSSIP_MENU(gameObject->GetGOInfo()->GetGossipMenuId(), gameObject->GetGUID());
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
void AddSC_ulduar_teleporter()
|
||||
|
||||
Reference in New Issue
Block a user