From eb931ce0fcf0253dc873844bb0331913cff80838 Mon Sep 17 00:00:00 2001 From: Kelsi Date: Sat, 14 Feb 2026 21:18:36 -0800 Subject: [PATCH] Fix missing taxi mount when node not found in DBC When the taxi node ID from the server isn't in TaxiNodes.dbc (custom server nodes, missing data), fall back to hardcoded gryphon/wyvern display IDs so the player still appears mounted during flight. --- src/game/game_handler.cpp | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/game/game_handler.cpp b/src/game/game_handler.cpp index 66050251..8489091f 100644 --- a/src/game/game_handler.cpp +++ b/src/game/game_handler.cpp @@ -8459,7 +8459,22 @@ void GameHandler::handleShowTaxiNodes(network::Packet& packet) { void GameHandler::applyTaxiMountForCurrentNode() { if (taxiMountActive_ || !mountCallback_) return; auto it = taxiNodes_.find(currentTaxiData_.nearestNode); - if (it == taxiNodes_.end()) return; + if (it == taxiNodes_.end()) { + // Node not in DBC (custom server nodes, missing data) — use hardcoded fallback. + bool isAlliance = true; + switch (playerRace_) { + case Race::ORC: case Race::UNDEAD: case Race::TAUREN: case Race::TROLL: + case Race::GOBLIN: case Race::BLOOD_ELF: + isAlliance = false; break; + default: break; + } + uint32_t mountId = isAlliance ? 1210u : 1310u; + taxiMountDisplayId_ = mountId; + taxiMountActive_ = true; + LOG_INFO("Taxi mount fallback (node ", currentTaxiData_.nearestNode, " not in DBC): displayId=", mountId); + mountCallback_(mountId); + return; + } bool isAlliance = true; switch (playerRace_) {