Skip to content

Commit

Permalink
fix(Ulduar/Tram): add rocket booster, turnaround visuals, button logic (
Browse files Browse the repository at this point in the history
azerothcore#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
  • Loading branch information
sogladev authored May 28, 2024
1 parent a45ab5b commit 733fbf8
Show file tree
Hide file tree
Showing 4 changed files with 108 additions and 30 deletions.
19 changes: 19 additions & 0 deletions data/sql/updates/pending_db_world/rev_1715708681053405822.sql
Original file line number Diff line number Diff line change
@@ -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');
82 changes: 81 additions & 1 deletion src/server/scripts/Northrend/Ulduar/Ulduar/instance_ulduar.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,15 @@ class instance_ulduar : public InstanceMapScript
Position normalChestPosition = { 1967.152588f, -204.188461f, 432.686951f, 5.50957f };
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
ObjectGuid m_MimironDoor[3];
ObjectGuid m_MimironLeviathanMKIIguid;
Expand Down Expand Up @@ -130,7 +139,6 @@ class instance_ulduar : public InstanceMapScript
// Shared
EventMap _events;
bool m_mimironTramUsed;
ObjectGuid m_mimironTramGUID;
ObjectGuid m_keepersgateGUID;
ObjectGuid m_keepersGossipGUID[4];

Expand Down Expand Up @@ -173,7 +181,18 @@ class instance_ulduar : public InstanceMapScript
// mimiron tram:
instance->LoadGrid(2307.0f, 284.632f);
if (GameObject* MimironTram = instance->GetGameObject(m_mimironTramGUID))
{
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))
{
Expand Down Expand Up @@ -556,11 +575,30 @@ class instance_ulduar : public InstanceMapScript
case GO_SNOW_MOUND:
gameObject->EnableCollision(false);
break;
// Mimiron Tram
case GO_MIMIRON_TRAM:
if (GetData(TYPE_MIMIRON) == DONE)
m_mimironTramUsed = true;
m_mimironTramGUID = gameObject->GetGUID();
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
case GO_CELESTIAL_PLANETARIUM_ACCESS_10:
case GO_CELESTIAL_PLANETARIUM_ACCESS_25:
Expand Down Expand Up @@ -797,9 +835,51 @@ class instance_ulduar : public InstanceMapScript
if (StaticTransport* t = MimironTram->ToStaticTransport())
{
if (data == 0 && t->GetGoState() == GO_STATE_ACTIVE && t->GetPathProgress() == t->GetPauseTime())
{
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)
{
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;
case DATA_BRANN_MEMOTESAY:
Expand Down
29 changes: 0 additions & 29 deletions src/server/scripts/Northrend/Ulduar/Ulduar/ulduar.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -545,33 +545,6 @@ class AreaTrigger_at_celestial_planetarium_enterance : public AreaTriggerScript
}
};

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
{
npc_salvaged_siege_engine(Creature* creature) : VehicleAI(creature) { }
Expand Down Expand Up @@ -609,7 +582,5 @@ void AddSC_ulduar()
new npc_ulduar_arachnopod_destroyer();
new spell_ulduar_arachnopod_damaged();
new AreaTrigger_at_celestial_planetarium_enterance();
new go_call_tram();

RegisterCreatureAI(npc_salvaged_siege_engine);
}
8 changes: 8 additions & 0 deletions src/server/scripts/Northrend/Ulduar/Ulduar/ulduar.h
Original file line number Diff line number Diff line change
Expand Up @@ -215,7 +215,15 @@ enum UlduarGameObjects
GO_KOLOGARN_DOORS = 194553,
GO_KEEPERS_GATE = 194255,
GO_XT002_DOORS = 194631,

// Tram
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
GO_MIMIRON_ELEVATOR = 194749,
Expand Down

0 comments on commit 733fbf8

Please sign in to comment.