From 98dc10c58003525e53b9d67b3e833328f3906329 Mon Sep 17 00:00:00 2001 From: Aokromes Date: Sun, 16 Apr 2017 16:09:40 +0200 Subject: Core/Trainers: Fix Multiprofession Trainers By Malcrom, cherry pick from https://gitlab.com/trinitycore/TrinityCore_434/commit/6fef0d2eb2cf85a631be29885f6c3908038ba4f4 --- src/server/scripts/World/npc_professions.cpp | 89 ++++++++++++++++++++++++++++ 1 file changed, 89 insertions(+) (limited to 'src/server/scripts/World') diff --git a/src/server/scripts/World/npc_professions.cpp b/src/server/scripts/World/npc_professions.cpp index 16017d19b0b..bb174e3616f 100644 --- a/src/server/scripts/World/npc_professions.cpp +++ b/src/server/scripts/World/npc_professions.cpp @@ -1210,6 +1210,94 @@ public: } }; +/*### +# start menu multi profession trainer +###*/ + +class npc_multi_profession_trainer : public CreatureScript +{ +public: + npc_multi_profession_trainer() : CreatureScript("npc_multi_profession_trainer") { } + + struct npc_multi_profession_trainerAI : public ScriptedAI + { + npc_multi_profession_trainerAI(Creature* creature) : ScriptedAI(creature) { } + + void sGossipSelect(Player* player, uint32 menuId, uint32 gossipListId) + { + switch (gossipListId) + { + case GOSSIP_OPTION_ALCHEMY: + case GOSSIP_OPTION_BLACKSMITHING: + case GOSSIP_OPTION_ENCHANTING: + case GOSSIP_OPTION_ENGINEERING: + case GOSSIP_OPTION_HERBALISM: + case GOSSIP_OPTION_INSCRIPTION: + case GOSSIP_OPTION_JEWELCRAFTING: + case GOSSIP_OPTION_LEATHERWORKING: + case GOSSIP_OPTION_MINING: + case GOSSIP_OPTION_SKINNING: + case GOSSIP_OPTION_TAILORING: + SendTrainerList(player, gossipListId); + break; + case GOSSIP_OPTION_MULTI: + { + switch (menuId) + { + case GOSSIP_MENU_HERBALISM: + SendTrainerList(player, GOSSIP_OPTION_HERBALISM); + break; + case GOSSIP_MENU_MINING: + SendTrainerList(player, GOSSIP_OPTION_MINING); + break; + case GOSSIP_MENU_SKINNING: + SendTrainerList(player, GOSSIP_OPTION_SKINNING); + break; + case GOSSIP_MENU_ALCHEMY: + SendTrainerList(player, GOSSIP_OPTION_ALCHEMY); + break; + case GOSSIP_MENU_BLACKSMITHING: + SendTrainerList(player, GOSSIP_OPTION_BLACKSMITHING); + break; + case GOSSIP_MENU_ENCHANTING: + SendTrainerList(player, GOSSIP_OPTION_ENCHANTING); + break; + case GOSSIP_MENU_ENGINEERING: + SendTrainerList(player, GOSSIP_OPTION_ENGINEERING); + break; + case GOSSIP_MENU_INSCRIPTION: + SendTrainerList(player, GOSSIP_OPTION_INSCRIPTION); + break; + case GOSSIP_MENU_JEWELCRAFTING: + SendTrainerList(player, GOSSIP_OPTION_JEWELCRAFTING); + break; + case GOSSIP_MENU_LEATHERWORKING: + SendTrainerList(player, GOSSIP_OPTION_LEATHERWORKING); + break; + case GOSSIP_MENU_TAILORING: + SendTrainerList(player, GOSSIP_OPTION_TAILORING); + break; + default: + break; + } + } + default: + break; + } + } + + void SendTrainerList(Player* player, uint32 Index) + { + player->GetSession()->SendTrainerList(me->GetGUID(), Index + 1); + } + }; + + CreatureAI* GetAI(Creature* creature) const override + { + return new npc_multi_profession_trainerAI(creature); + } +}; + void AddSC_npc_professions() { new npc_prof_alchemy(); @@ -1217,4 +1305,5 @@ void AddSC_npc_professions() new npc_engineering_tele_trinket(); new npc_prof_leather(); new npc_prof_tailor(); + new npc_multi_profession_trainer(); } -- cgit v1.2.3