From 223aa43cea341d960bf5a90a5dfeafd69901407a Mon Sep 17 00:00:00 2001 From: Ovahlord Date: Wed, 7 Nov 2018 00:21:32 +0100 Subject: [PATCH] Core/Taxi: * added Valiance Keep, Warsong Hold to default discovered taxi nodes and enable Dalaran's taxi node when the character has level 68 or higher by default. * send taxi menu to the player when he attempts to request a gossip from a flight master who has a empty gossip and quest menu --- .../game/Entities/Player/PlayerTaxi.cpp | 57 ++++++++++++++----- src/server/game/Handlers/NPCHandler.cpp | 12 ++++ 2 files changed, 55 insertions(+), 14 deletions(-) diff --git a/src/server/game/Entities/Player/PlayerTaxi.cpp b/src/server/game/Entities/Player/PlayerTaxi.cpp index 9193b961327..a5429a00c99 100644 --- a/src/server/game/Entities/Player/PlayerTaxi.cpp +++ b/src/server/game/Entities/Player/PlayerTaxi.cpp @@ -37,28 +37,57 @@ void PlayerTaxi::InitTaxiNodesForLevel(uint32 race, uint32 chrClass, uint8 level // race specific initial known nodes: capital and taxi hub masks switch (race) { - case RACE_HUMAN: SetTaximaskNode(2); break; // Human - case RACE_ORC: SetTaximaskNode(23); break; // Orc - case RACE_DWARF: SetTaximaskNode(6); break; // Dwarf - case RACE_NIGHTELF: SetTaximaskNode(26); - SetTaximaskNode(27); break; // Night Elf - case RACE_UNDEAD_PLAYER: SetTaximaskNode(11); break;// Undead - case RACE_TAUREN: SetTaximaskNode(22); break; // Tauren - case RACE_GNOME: SetTaximaskNode(6); break; // Gnome - case RACE_TROLL: SetTaximaskNode(23); break; // Troll - case RACE_BLOODELF: SetTaximaskNode(82); break; // Blood Elf - case RACE_DRAENEI: SetTaximaskNode(94); break; // Draenei + case RACE_HUMAN: + SetTaximaskNode(2); + break; + case RACE_ORC: + SetTaximaskNode(23); + break; + case RACE_DWARF: + SetTaximaskNode(6); + break; + case RACE_NIGHTELF: + SetTaximaskNode(26); + SetTaximaskNode(27); + break; + case RACE_UNDEAD_PLAYER: + SetTaximaskNode(11); + break; + case RACE_TAUREN: + SetTaximaskNode(22); + break; + case RACE_GNOME: + SetTaximaskNode(6); + break; + case RACE_TROLL: + SetTaximaskNode(23); + break; + case RACE_BLOODELF: + SetTaximaskNode(82); + break; + case RACE_DRAENEI: + SetTaximaskNode(94); + break; } // new continent starting masks (It will be accessible only at new map) switch (Player::TeamForRace(race)) { - case ALLIANCE: SetTaximaskNode(100); break; - case HORDE: SetTaximaskNode(99); break; + case ALLIANCE: + SetTaximaskNode(100); // Honor Hold + SetTaximaskNode(245); // Valiance Keep + break; + case HORDE: + SetTaximaskNode(99); // Thrallmar + SetTaximaskNode(257); // Warsong Hold + break; } // level dependent taxi hubs if (level >= 68) - SetTaximaskNode(213); //Shattered Sun Staging Area + SetTaximaskNode(213); // Shattered Sun Staging Area + + if (level >= 78) + SetTaximaskNode(310); // Dalaran } void PlayerTaxi::LoadTaxiMask(std::string const &data) diff --git a/src/server/game/Handlers/NPCHandler.cpp b/src/server/game/Handlers/NPCHandler.cpp index 708827b6181..0e6c998b3e8 100644 --- a/src/server/game/Handlers/NPCHandler.cpp +++ b/src/server/game/Handlers/NPCHandler.cpp @@ -358,11 +358,23 @@ void WorldSession::HandleGossipHelloOpcode(WorldPacket& recvData) } } + _player->PlayerTalkClass->ClearMenus(); if (!unit->AI()->GossipHello(_player)) { // _player->TalkedToCreature(unit->GetEntry(), unit->GetGUID()); _player->PrepareGossipMenu(unit, unit->GetCreatureTemplate()->GossipMenuId, true); + + // If npc is a flightmaster who is a quest giver do not send the gossip if there is no quest + if (unit->IsTaxi() && (unit->IsQuestGiver() || unit->IsGossip())) + { + if (_player->PlayerTalkClass->GetQuestMenu().Empty() && _player->PlayerTalkClass->GetGossipMenu().Empty()) + { + SendTaxiMenu(unit); + return; + } + } + _player->SendPreparedGossip(unit); } }