Add Hard Mode support to Flame Leviathan. more code cleanup.
Big Thanks to all who participated. --HG-- branch : trunk
This commit is contained in:
@@ -0,0 +1,3 @@
|
||||
INSERT INTO areatrigger_scripts VALUES
|
||||
(5369,'at_RX_214_repair_o_matic_station'),
|
||||
(5423,'at_RX_214_repair_o_matic_station');
|
||||
@@ -0,0 +1,8 @@
|
||||
-- waypoint for mimron inferno
|
||||
INSERT INTO `script_waypoint` (`entry`, `pointid`, `location_x`, `location_y`, `location_z`, `waittime`, `point_comment`) VALUES
|
||||
(33370, 1, 331.674, -68.6878, 409.804, 0, '0'),
|
||||
(33370, 2, 274.578, -92.1829, 409.804, 0, '0'),
|
||||
(33370, 3, 226.433, -66.6652, 409.793, 0, '0'),
|
||||
(33370, 4, 206.092, -34.7447, 409.801, 0, '0'),
|
||||
(33370, 5, 240.208, 1.10346, 409.802, 0, '0'),
|
||||
(33370, 6, 337.199, 11.7051, 409.802, 0, '0');
|
||||
@@ -0,0 +1,12 @@
|
||||
UPDATE `creature_template` SET `ScriptName` = 'npc_thorims_hammer' WHERE `entry` =33365;
|
||||
UPDATE `creature_template` SET `MovementType` =2, `ScriptName` = 'npc_mimirons_inferno' WHERE `entry` =33370;
|
||||
UPDATE `creature_template` SET `ScriptName` = 'npc_hodirs_fury' WHERE `entry` =33312;
|
||||
UPDATE `creature_template` SET `ScriptName` = 'npc_freyas_ward' WHERE `entry` =33367;
|
||||
UPDATE `creature_template` SET `ScriptName` = 'npc_lorekeeper' WHERE `entry` =33686;
|
||||
UPDATE `creature_template` SET `ScriptName` = 'npc_brann_bronzebeard' WHERE `entry` =33579;
|
||||
UPDATE `creature_template` SET `ScriptName` = 'npc_freya_ward_summon' WHERE `entry` =34275;
|
||||
UPDATE `creature_template` SET `ScriptName` = 'npc_mechanolift' WHERE `entry` =33214;
|
||||
UPDATE `gameobject_template` SET `ScriptName` = 'go_ulduar_tower' WHERE `entry` =194375;
|
||||
UPDATE `gameobject_template` SET `ScriptName` = 'go_ulduar_tower' WHERE `entry` =194371;
|
||||
UPDATE `gameobject_template` SET `ScriptName` = 'go_ulduar_tower' WHERE `entry` =194370;
|
||||
UPDATE `gameobject_template` SET `ScriptName` = 'go_ulduar_tower' WHERE `entry` =194377;
|
||||
File diff suppressed because it is too large
Load Diff
@@ -16,6 +16,7 @@
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
#include "ScriptedEscortAI.h"
|
||||
#include "ScriptPCH.h"
|
||||
#include "ulduar.h"
|
||||
|
||||
@@ -64,8 +65,7 @@ struct instance_ulduar : public ScriptedInstance
|
||||
uint64 uiFreyaChestGUID;
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
uiLeviathanGUID = 0;
|
||||
{
|
||||
uiIgnisGUID = 0;
|
||||
uiRazorscaleGUID = 0;
|
||||
uiXT002GUID = 0;
|
||||
@@ -106,7 +106,7 @@ struct instance_ulduar : public ScriptedInstance
|
||||
switch(pCreature->GetEntry())
|
||||
{
|
||||
case NPC_LEVIATHAN:
|
||||
uiLeviathanGUID = pCreature->GetGUID();
|
||||
uiLeviathanGUID = pCreature->GetGUID();
|
||||
break;
|
||||
case NPC_IGNIS:
|
||||
uiIgnisGUID = pCreature->GetGUID();
|
||||
@@ -187,22 +187,24 @@ struct instance_ulduar : public ScriptedInstance
|
||||
if (flag == 7)
|
||||
flag =0;
|
||||
break;
|
||||
case GO_LEVIATHAN_GATE:
|
||||
uiLeviathanGateGUID = pGO->GetGUID();
|
||||
HandleGameObject(NULL, false, pGO);
|
||||
break;
|
||||
case GO_LEVIATHAN_GATE:
|
||||
uiLeviathanGateGUID = add ? pGO->GetGUID() : NULL;
|
||||
HandleGameObject(NULL, false, pGO);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void ProcessEvent(GameObject* pGO, uint32 uiEventId)
|
||||
{
|
||||
// Flame Leviathan's Tower Event triggers
|
||||
Creature* pFlameLeviathan = instance->GetCreature(NPC_LEVIATHAN);
|
||||
Creature* pFlameLeviathan = instance->GetCreature(uiLeviathanGUID);
|
||||
|
||||
if (pFlameLeviathan && pFlameLeviathan->isAlive()) //No leviathan, no event triggering ;)
|
||||
switch(uiEventId)
|
||||
{
|
||||
case EVENT_TOWER_OF_STORM_DESTROYED:
|
||||
pFlameLeviathan->AI()->DoAction(1);
|
||||
//pGO->GetInstanceData()->SetData(DATA_TOWER_STORMS,DESTROYED);
|
||||
pFlameLeviathan->AI()->DoAction(1);
|
||||
break;
|
||||
case EVENT_TOWER_OF_FROST_DESTROYED:
|
||||
pFlameLeviathan->AI()->DoAction(2);
|
||||
@@ -210,7 +212,7 @@ struct instance_ulduar : public ScriptedInstance
|
||||
case EVENT_TOWER_OF_FLAMES_DESTROYED:
|
||||
pFlameLeviathan->AI()->DoAction(3);
|
||||
break;
|
||||
case EVENT_TOWER_OF_NATURE_DESTROYED:
|
||||
case EVENT_TOWER_OF_LIFE_DESTROYED:
|
||||
pFlameLeviathan->AI()->DoAction(4);
|
||||
break;
|
||||
}
|
||||
@@ -218,9 +220,6 @@ struct instance_ulduar : public ScriptedInstance
|
||||
|
||||
void SetData(uint32 type, uint32 data)
|
||||
{
|
||||
if (type != TYPE_COLOSSUS)
|
||||
uiEncounter[type] = data;
|
||||
|
||||
switch(type)
|
||||
{
|
||||
/*case TYPE_IGNIS:
|
||||
@@ -235,12 +234,12 @@ struct instance_ulduar : public ScriptedInstance
|
||||
case TYPE_LEVIATHAN:
|
||||
if (data == IN_PROGRESS)
|
||||
{
|
||||
for (uint8 uiI = 0; uiI < 7; uiI++)
|
||||
for (uint8 uiI = 0; uiI < 7; ++uiI)
|
||||
HandleGameObject(uiLeviathanDoor[uiI],false);
|
||||
}
|
||||
else
|
||||
{
|
||||
for (uint8 uiI = 0; uiI < 7; uiI++)
|
||||
for (uint8 uiI = 0; uiI < 7; ++uiI)
|
||||
HandleGameObject(uiLeviathanDoor[uiI],true);
|
||||
}
|
||||
break;
|
||||
@@ -265,14 +264,15 @@ struct instance_ulduar : public ScriptedInstance
|
||||
pGO->SetRespawnTime(pGO->GetRespawnDelay());
|
||||
break;
|
||||
case TYPE_COLOSSUS:
|
||||
uiEncounter[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);
|
||||
pGate->SetGoState(GO_STATE_ACTIVE_ALTERNATIVE);
|
||||
}
|
||||
break;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user