fix(Ulduar/Tram): add rocket booster, turnaround visuals, button logic (#18900)
fix(Ulduar/Tram): add rocket booster, disable logic, activate turnaround gobjects remove go_call_tram GameObjectScript add tram gobjects to header add tram logic renames update position of boosters
This commit is contained in:
@@ -0,0 +1,19 @@
|
|||||||
|
--
|
||||||
|
-- Rocket Booster
|
||||||
|
UPDATE `gameobject` SET `position_x`=2307.000003, `position_y`=265.6011, `position_z`=424.287993 WHERE (`id` = 194904) AND (`guid` IN (35524));
|
||||||
|
-- Delete 2nd Activate Tram gameobject
|
||||||
|
DELETE FROM `gameobject` WHERE `id` = 194438;
|
||||||
|
UPDATE `gameobject_template` SET `ScriptName` = '' WHERE `entry` = 194438;
|
||||||
|
-- Call Tram objects start as non-selectable
|
||||||
|
UPDATE `gameobject_template_addon` SET `flags` = `flags` | 16 WHERE `entry` IN (194912, 194914);
|
||||||
|
-- Buttons
|
||||||
|
UPDATE `gameobject_template` SET `AIName` = 'SmartGameObjectAI', `ScriptName` = '' WHERE `entry` IN (194437,194912,194914);
|
||||||
|
DELETE FROM `smart_scripts` WHERE (`entryorguid` IN (194437,194912,194914)) AND (`source_type` = 1);
|
||||||
|
INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `event_param5`, `event_param6`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
|
||||||
|
(194437, 1, 0, 0, 11, 0, 100, 0, 0, 0, 0, 0, 0, 0, 22, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Activate Tram - On Respawn - Set Event Phase 1'),
|
||||||
|
(194437, 1, 1, 2, 64, 1, 100, 0, 0, 0, 0, 0, 0, 0, 34, 710, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 'Activate Tram - On Gossip Hello - Set Instance Data 710 to 1 (Phase 1)'),
|
||||||
|
(194437, 1, 2, 0, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 22, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Activate Tram - On Gossip Hello - Set Event Phase 2 (Phase 1)'),
|
||||||
|
(194437, 1, 3, 4, 64, 2, 100, 0, 0, 0, 0, 0, 0, 0, 34, 710, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 'Activate Tram - On Gossip Hello - Set Instance Data 710 to 0 (Phase 2)'),
|
||||||
|
(194437, 1, 4, 0, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 22, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Activate Tram - On Gossip Hello - Set Event Phase 1 (Phase 2)'),
|
||||||
|
(194912, 1, 0, 0, 64, 0, 100, 0, 0, 0, 0, 0, 0, 0, 34, 710, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 'Call Tram - On Gossip Hello - Set Instance Data 710 to 1'),
|
||||||
|
(194914, 1, 0, 0, 64, 0, 100, 0, 0, 0, 0, 0, 0, 0, 34, 710, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 'Call Tram - On Gossip Hello - Set Instance Data 710 to 0');
|
||||||
@@ -100,6 +100,15 @@ public:
|
|||||||
Position normalChestPosition = { 1967.152588f, -204.188461f, 432.686951f, 5.50957f };
|
Position normalChestPosition = { 1967.152588f, -204.188461f, 432.686951f, 5.50957f };
|
||||||
Position hardChestPosition = { 2035.94600f, -202.084885f, 432.686859f, 3.164077f };
|
Position hardChestPosition = { 2035.94600f, -202.084885f, 432.686859f, 3.164077f };
|
||||||
|
|
||||||
|
// Mimiron Tram
|
||||||
|
ObjectGuid m_mimironTramGUID;
|
||||||
|
ObjectGuid m_mimironActivateTramGUID;
|
||||||
|
ObjectGuid m_mimironTramRocketBoosterGUID;
|
||||||
|
ObjectGuid m_mimironTramTurnaround1GUID;
|
||||||
|
ObjectGuid m_mimironTramTurnaround2GUID;
|
||||||
|
ObjectGuid m_mimironCallTramCenterGUID;
|
||||||
|
ObjectGuid m_mimironCallTramMimironGUID;
|
||||||
|
|
||||||
// Mimiron
|
// Mimiron
|
||||||
ObjectGuid m_MimironDoor[3];
|
ObjectGuid m_MimironDoor[3];
|
||||||
ObjectGuid m_MimironLeviathanMKIIguid;
|
ObjectGuid m_MimironLeviathanMKIIguid;
|
||||||
@@ -130,7 +139,6 @@ public:
|
|||||||
// Shared
|
// Shared
|
||||||
EventMap _events;
|
EventMap _events;
|
||||||
bool m_mimironTramUsed;
|
bool m_mimironTramUsed;
|
||||||
ObjectGuid m_mimironTramGUID;
|
|
||||||
ObjectGuid m_keepersgateGUID;
|
ObjectGuid m_keepersgateGUID;
|
||||||
ObjectGuid m_keepersGossipGUID[4];
|
ObjectGuid m_keepersGossipGUID[4];
|
||||||
|
|
||||||
@@ -173,7 +181,18 @@ public:
|
|||||||
// mimiron tram:
|
// mimiron tram:
|
||||||
instance->LoadGrid(2307.0f, 284.632f);
|
instance->LoadGrid(2307.0f, 284.632f);
|
||||||
if (GameObject* MimironTram = instance->GetGameObject(m_mimironTramGUID))
|
if (GameObject* MimironTram = instance->GetGameObject(m_mimironTramGUID))
|
||||||
|
{
|
||||||
player->UpdateVisibilityOf(MimironTram);
|
player->UpdateVisibilityOf(MimironTram);
|
||||||
|
if (StaticTransport* t = MimironTram->ToStaticTransport())
|
||||||
|
{
|
||||||
|
if (GameObject* go = instance->GetGameObject(m_mimironTramRocketBoosterGUID))
|
||||||
|
if (!go->GetTransport())
|
||||||
|
t->AddPassenger(go, true);
|
||||||
|
if (GameObject* go = instance->GetGameObject(m_mimironActivateTramGUID))
|
||||||
|
if (!go->GetTransport())
|
||||||
|
t->AddPassenger(go, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (!m_uiAlgalonGUID && m_algalonTimer && (m_algalonTimer <= 60 || m_algalonTimer == TIMER_ALGALON_TO_SUMMON))
|
if (!m_uiAlgalonGUID && m_algalonTimer && (m_algalonTimer <= 60 || m_algalonTimer == TIMER_ALGALON_TO_SUMMON))
|
||||||
{
|
{
|
||||||
@@ -556,11 +575,30 @@ public:
|
|||||||
case GO_SNOW_MOUND:
|
case GO_SNOW_MOUND:
|
||||||
gameObject->EnableCollision(false);
|
gameObject->EnableCollision(false);
|
||||||
break;
|
break;
|
||||||
|
// Mimiron Tram
|
||||||
case GO_MIMIRON_TRAM:
|
case GO_MIMIRON_TRAM:
|
||||||
if (GetData(TYPE_MIMIRON) == DONE)
|
if (GetData(TYPE_MIMIRON) == DONE)
|
||||||
m_mimironTramUsed = true;
|
m_mimironTramUsed = true;
|
||||||
m_mimironTramGUID = gameObject->GetGUID();
|
m_mimironTramGUID = gameObject->GetGUID();
|
||||||
break;
|
break;
|
||||||
|
case GO_MIMIRON_TRAM_ROCKET_BOOSTER:
|
||||||
|
m_mimironTramRocketBoosterGUID = gameObject->GetGUID();
|
||||||
|
break;
|
||||||
|
case GO_MIMIRON_ACTIVATE_TRAM:
|
||||||
|
m_mimironActivateTramGUID = gameObject->GetGUID();
|
||||||
|
break;
|
||||||
|
case GO_MIMIRON_CALL_TRAM_CENTER:
|
||||||
|
m_mimironCallTramCenterGUID = gameObject->GetGUID();
|
||||||
|
break;
|
||||||
|
case GO_MIMIRON_CALL_TRAM_MIMIRON:
|
||||||
|
m_mimironCallTramMimironGUID = gameObject->GetGUID();
|
||||||
|
break;
|
||||||
|
case GO_DOODAD_UL_TRAIN_TURNAROUND01:
|
||||||
|
m_mimironTramTurnaround1GUID = gameObject->GetGUID();
|
||||||
|
break;
|
||||||
|
case GO_DOODAD_UL_TRAIN_TURNAROUND02:
|
||||||
|
m_mimironTramTurnaround2GUID = gameObject->GetGUID();
|
||||||
|
break;
|
||||||
// Algalon the Observer
|
// Algalon the Observer
|
||||||
case GO_CELESTIAL_PLANETARIUM_ACCESS_10:
|
case GO_CELESTIAL_PLANETARIUM_ACCESS_10:
|
||||||
case GO_CELESTIAL_PLANETARIUM_ACCESS_25:
|
case GO_CELESTIAL_PLANETARIUM_ACCESS_25:
|
||||||
@@ -797,9 +835,51 @@ public:
|
|||||||
if (StaticTransport* t = MimironTram->ToStaticTransport())
|
if (StaticTransport* t = MimironTram->ToStaticTransport())
|
||||||
{
|
{
|
||||||
if (data == 0 && t->GetGoState() == GO_STATE_ACTIVE && t->GetPathProgress() == t->GetPauseTime())
|
if (data == 0 && t->GetGoState() == GO_STATE_ACTIVE && t->GetPathProgress() == t->GetPauseTime())
|
||||||
|
{
|
||||||
MimironTram->SetGoState(GO_STATE_READY);
|
MimironTram->SetGoState(GO_STATE_READY);
|
||||||
|
if (GameObject* rocketBooster = instance->GetGameObject(m_mimironTramRocketBoosterGUID))
|
||||||
|
rocketBooster->SetGoState(GO_STATE_ACTIVE);
|
||||||
|
if (GameObject* activateTramButton = instance->GetGameObject(m_mimironActivateTramGUID))
|
||||||
|
activateTramButton->SetGameObjectFlag(GO_FLAG_NOT_SELECTABLE);
|
||||||
|
if (GameObject* callTramCenterButton = instance->GetGameObject(m_mimironCallTramCenterGUID))
|
||||||
|
callTramCenterButton->SetGameObjectFlag(GO_FLAG_NOT_SELECTABLE);
|
||||||
|
scheduler.Schedule(30s, [this](TaskContext /*context*/)
|
||||||
|
{
|
||||||
|
if (GameObject* turnaround1 = instance->GetGameObject(m_mimironTramTurnaround1GUID))
|
||||||
|
turnaround1->UseDoorOrButton();
|
||||||
|
if (GameObject* rocketBooster = instance->GetGameObject(m_mimironTramRocketBoosterGUID))
|
||||||
|
rocketBooster->SetGoState(GO_STATE_READY);
|
||||||
|
}).Schedule(60s, [this](TaskContext /*context*/)
|
||||||
|
{
|
||||||
|
if (GameObject* activateTramButton = instance->GetGameObject(m_mimironActivateTramGUID))
|
||||||
|
activateTramButton->RemoveGameObjectFlag(GO_FLAG_NOT_SELECTABLE);
|
||||||
|
if (GameObject* callTramMimironButton = instance->GetGameObject(m_mimironCallTramMimironGUID))
|
||||||
|
callTramMimironButton->RemoveGameObjectFlag(GO_FLAG_NOT_SELECTABLE);
|
||||||
|
});
|
||||||
|
}
|
||||||
if (data == 1 && t->GetGoState() == GO_STATE_READY && t->GetPathProgress() == 0)
|
if (data == 1 && t->GetGoState() == GO_STATE_READY && t->GetPathProgress() == 0)
|
||||||
|
{
|
||||||
MimironTram->SetGoState(GO_STATE_ACTIVE);
|
MimironTram->SetGoState(GO_STATE_ACTIVE);
|
||||||
|
if (GameObject* rocketBooster = instance->GetGameObject(m_mimironTramRocketBoosterGUID))
|
||||||
|
rocketBooster->SetGoState(GO_STATE_ACTIVE);
|
||||||
|
if (GameObject* activateTramButton = instance->GetGameObject(m_mimironActivateTramGUID))
|
||||||
|
activateTramButton->SetGameObjectFlag(GO_FLAG_NOT_SELECTABLE);
|
||||||
|
if (GameObject* callTramMimironButton = instance->GetGameObject(m_mimironCallTramMimironGUID))
|
||||||
|
callTramMimironButton->SetGameObjectFlag(GO_FLAG_NOT_SELECTABLE);
|
||||||
|
scheduler.Schedule(33s, [this](TaskContext /*context*/)
|
||||||
|
{
|
||||||
|
if (GameObject* turnaround2 = instance->GetGameObject(m_mimironTramTurnaround2GUID))
|
||||||
|
turnaround2->UseDoorOrButton();
|
||||||
|
if (GameObject* rocketBooster = instance->GetGameObject(m_mimironTramRocketBoosterGUID))
|
||||||
|
rocketBooster->SetGoState(GO_STATE_READY);
|
||||||
|
}).Schedule(63s, [this](TaskContext /*context*/)
|
||||||
|
{
|
||||||
|
if (GameObject* activateTramButton = instance->GetGameObject(m_mimironActivateTramGUID))
|
||||||
|
activateTramButton->RemoveGameObjectFlag(GO_FLAG_NOT_SELECTABLE);
|
||||||
|
if (GameObject* callTramCenterButton = instance->GetGameObject(m_mimironCallTramCenterGUID))
|
||||||
|
callTramCenterButton->RemoveGameObjectFlag(GO_FLAG_NOT_SELECTABLE);
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case DATA_BRANN_MEMOTESAY:
|
case DATA_BRANN_MEMOTESAY:
|
||||||
|
|||||||
@@ -545,33 +545,6 @@ public:
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
class go_call_tram : public GameObjectScript
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
go_call_tram() : GameObjectScript("go_call_tram") { }
|
|
||||||
|
|
||||||
bool OnGossipHello(Player* /*player*/, GameObject* go) override
|
|
||||||
{
|
|
||||||
InstanceScript* pInstance = go->GetInstanceScript();
|
|
||||||
|
|
||||||
if (!pInstance)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
switch(go->GetEntry())
|
|
||||||
{
|
|
||||||
case 194914:
|
|
||||||
case 194438:
|
|
||||||
pInstance->SetData(DATA_CALL_TRAM, 0);
|
|
||||||
break;
|
|
||||||
case 194912:
|
|
||||||
case 194437:
|
|
||||||
pInstance->SetData(DATA_CALL_TRAM, 1);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
struct npc_salvaged_siege_engine : public VehicleAI
|
struct npc_salvaged_siege_engine : public VehicleAI
|
||||||
{
|
{
|
||||||
npc_salvaged_siege_engine(Creature* creature) : VehicleAI(creature) { }
|
npc_salvaged_siege_engine(Creature* creature) : VehicleAI(creature) { }
|
||||||
@@ -609,7 +582,5 @@ void AddSC_ulduar()
|
|||||||
new npc_ulduar_arachnopod_destroyer();
|
new npc_ulduar_arachnopod_destroyer();
|
||||||
new spell_ulduar_arachnopod_damaged();
|
new spell_ulduar_arachnopod_damaged();
|
||||||
new AreaTrigger_at_celestial_planetarium_enterance();
|
new AreaTrigger_at_celestial_planetarium_enterance();
|
||||||
new go_call_tram();
|
|
||||||
|
|
||||||
RegisterCreatureAI(npc_salvaged_siege_engine);
|
RegisterCreatureAI(npc_salvaged_siege_engine);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -215,7 +215,15 @@ enum UlduarGameObjects
|
|||||||
GO_KOLOGARN_DOORS = 194553,
|
GO_KOLOGARN_DOORS = 194553,
|
||||||
GO_KEEPERS_GATE = 194255,
|
GO_KEEPERS_GATE = 194255,
|
||||||
GO_XT002_DOORS = 194631,
|
GO_XT002_DOORS = 194631,
|
||||||
|
|
||||||
|
// Tram
|
||||||
GO_MIMIRON_TRAM = 194675,
|
GO_MIMIRON_TRAM = 194675,
|
||||||
|
GO_MIMIRON_ACTIVATE_TRAM = 194437,
|
||||||
|
GO_MIMIRON_CALL_TRAM_CENTER = 194914,
|
||||||
|
GO_MIMIRON_CALL_TRAM_MIMIRON = 194912,
|
||||||
|
GO_MIMIRON_TRAM_ROCKET_BOOSTER = 194904,
|
||||||
|
GO_DOODAD_UL_TRAIN_TURNAROUND01 = 194915, // center
|
||||||
|
GO_DOODAD_UL_TRAIN_TURNAROUND02 = 194913, // mimiron
|
||||||
|
|
||||||
// Mimiron, Hodir, Vezax
|
// Mimiron, Hodir, Vezax
|
||||||
GO_MIMIRON_ELEVATOR = 194749,
|
GO_MIMIRON_ELEVATOR = 194749,
|
||||||
|
|||||||
Reference in New Issue
Block a user