mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-24 02:46:33 +01:00
Core/Creatures: backported trainer update and skill initialization
This commit is contained in:
@@ -122,7 +122,6 @@ public:
|
||||
{ "mail_loot_template", rbac::RBAC_PERM_COMMAND_RELOAD_MAIL_LOOT_TEMPLATE, true, &HandleReloadLootTemplatesMailCommand, "" },
|
||||
{ "milling_loot_template", rbac::RBAC_PERM_COMMAND_RELOAD_MILLING_LOOT_TEMPLATE, true, &HandleReloadLootTemplatesMillingCommand, "" },
|
||||
{ "npc_spellclick_spells", rbac::RBAC_PERM_COMMAND_RELOAD_NPC_SPELLCLICK_SPELLS, true, &HandleReloadSpellClickSpellsCommand, "" },
|
||||
{ "npc_trainer", rbac::RBAC_PERM_COMMAND_RELOAD_NPC_TRAINER, true, &HandleReloadNpcTrainerCommand, "" },
|
||||
{ "npc_vendor", rbac::RBAC_PERM_COMMAND_RELOAD_NPC_VENDOR, true, &HandleReloadNpcVendorCommand, "" },
|
||||
{ "page_text", rbac::RBAC_PERM_COMMAND_RELOAD_PAGE_TEXT, true, &HandleReloadPageTextsCommand, "" },
|
||||
{ "pickpocketing_loot_template", rbac::RBAC_PERM_COMMAND_RELOAD_PICKPOCKETING_LOOT_TEMPLATE, true, &HandleReloadLootTemplatesPickpocketingCommand, "" },
|
||||
@@ -156,6 +155,7 @@ public:
|
||||
{ "spell_threats", rbac::RBAC_PERM_COMMAND_RELOAD_SPELL_THREATS, true, &HandleReloadSpellThreatsCommand, "" },
|
||||
{ "spell_group_stack_rules", rbac::RBAC_PERM_COMMAND_RELOAD_SPELL_GROUP_STACK_RULES, true, &HandleReloadSpellGroupStackRulesCommand, "" },
|
||||
{ "trinity_string", rbac::RBAC_PERM_COMMAND_RELOAD_TRINITY_STRING, true, &HandleReloadTrinityStringCommand, "" },
|
||||
{ "trainer", rbac::RBAC_PERM_COMMAND_RELOAD_TRAINER, true, &HandleReloadTrainerCommand, "" },
|
||||
{ "warden_action", rbac::RBAC_PERM_COMMAND_RELOAD_WARDEN_ACTION, true, &HandleReloadWardenactionCommand, "" },
|
||||
{ "waypoint_scripts", rbac::RBAC_PERM_COMMAND_RELOAD_WAYPOINT_SCRIPTS, true, &HandleReloadWpScriptsCommand, "" },
|
||||
{ "waypoint_data", rbac::RBAC_PERM_COMMAND_RELOAD_WAYPOINT_DATA, true, &HandleReloadWpCommand, "" },
|
||||
@@ -237,7 +237,7 @@ public:
|
||||
static bool HandleReloadAllNpcCommand(ChatHandler* handler, char const* args)
|
||||
{
|
||||
if (*args != 'a') // will be reloaded from all_gossips
|
||||
HandleReloadNpcTrainerCommand(handler, "a");
|
||||
HandleReloadTrainerCommand(handler, "a");
|
||||
HandleReloadNpcVendorCommand(handler, "a");
|
||||
HandleReloadPointsOfInterestCommand(handler, "a");
|
||||
HandleReloadSpellClickSpellsCommand(handler, "a");
|
||||
@@ -704,11 +704,15 @@ public:
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool HandleReloadNpcTrainerCommand(ChatHandler* handler, char const* /*args*/)
|
||||
static bool HandleReloadTrainerCommand(ChatHandler* handler, char const* /*args*/)
|
||||
{
|
||||
TC_LOG_INFO("misc", "Re-Loading `npc_trainer` Table!");
|
||||
sObjectMgr->LoadTrainerSpell();
|
||||
handler->SendGlobalGMSysMessage("DB table `npc_trainer` reloaded.");
|
||||
TC_LOG_INFO("misc", "Re-Loading `trainer` Table!");
|
||||
sObjectMgr->LoadTrainers();
|
||||
sObjectMgr->LoadCreatureDefaultTrainers();
|
||||
handler->SendGlobalGMSysMessage("DB table `trainer` reloaded.");
|
||||
handler->SendGlobalGMSysMessage("DB table `trainer_locale` reloaded.");
|
||||
handler->SendGlobalGMSysMessage("DB table `trainer_spell` reloaded.");
|
||||
handler->SendGlobalGMSysMessage("DB table `creature_default_trainer` reloaded.");
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -118,7 +118,8 @@ class npc_injured_goblin : public CreatureScript
|
||||
enum RoxiRamrocket
|
||||
{
|
||||
SPELL_MECHANO_HOG = 60866,
|
||||
SPELL_MEKGINEERS_CHOPPER = 60867
|
||||
SPELL_MEKGINEERS_CHOPPER = 60867,
|
||||
TRAINER_ID_ROXI_RAMROCKET = 102
|
||||
};
|
||||
|
||||
class npc_roxi_ramrocket : public CreatureScript
|
||||
@@ -156,7 +157,7 @@ class npc_roxi_ramrocket : public CreatureScript
|
||||
switch (action)
|
||||
{
|
||||
case GOSSIP_ACTION_TRAIN:
|
||||
player->GetSession()->SendTrainerList(me->GetGUID());
|
||||
player->GetSession()->SendTrainerList(me, TRAINER_ID_ROXI_RAMROCKET);
|
||||
break;
|
||||
case GOSSIP_ACTION_TRADE:
|
||||
player->GetSession()->SendListInventory(me->GetGUID());
|
||||
|
||||
@@ -169,6 +169,7 @@ enum SpecializationTrainers
|
||||
N_TRAINER_HAMMER = 11191, // Lilith the Lithe
|
||||
N_TRAINER_AXE = 11192, // Kilram
|
||||
N_TRAINER_SWORD = 11193, // Seril Scourgebane
|
||||
TRAINER_ID_BLACKSMITHING = 80,
|
||||
|
||||
/* Leatherworking */
|
||||
N_TRAINER_DRAGON1 = 7866, // Peter Galen
|
||||
@@ -177,11 +178,13 @@ enum SpecializationTrainers
|
||||
N_TRAINER_ELEMENTAL2 = 7869, // Brumn Winterhoof
|
||||
N_TRAINER_TRIBAL1 = 7870, // Caryssia Moonhunter
|
||||
N_TRAINER_TRIBAL2 = 7871, // Se'Jib
|
||||
TRAINER_ID_LEATHERWORKING = 103,
|
||||
|
||||
/* Tailoring */
|
||||
N_TRAINER_SPELLFIRE = 22213, // Gidge Spellweaver
|
||||
N_TRAINER_MOONCLOTH = 22208, // Nasmara Moonsong
|
||||
N_TRAINER_SHADOWEAVE = 22212, // Andrion Darkspinner
|
||||
TRAINER_ID_TAILORING = 117,
|
||||
};
|
||||
|
||||
/*###
|
||||
@@ -552,7 +555,7 @@ public:
|
||||
player->GetSession()->SendListInventory(me->GetGUID());
|
||||
break;
|
||||
case GOSSIP_ACTION_TRAIN:
|
||||
player->GetSession()->SendTrainerList(me->GetGUID());
|
||||
player->GetSession()->SendTrainerList(me, TRAINER_ID_BLACKSMITHING);
|
||||
break;
|
||||
//Learn Armor/Weapon
|
||||
case GOSSIP_ACTION_INFO_DEF + 1:
|
||||
@@ -826,7 +829,7 @@ class npc_prof_leather : public CreatureScript
|
||||
player->GetSession()->SendListInventory(creature->GetGUID());
|
||||
break;
|
||||
case GOSSIP_ACTION_TRAIN:
|
||||
player->GetSession()->SendTrainerList(creature->GetGUID());
|
||||
player->GetSession()->SendTrainerList(me, TRAINER_ID_LEATHERWORKING);
|
||||
break;
|
||||
//Unlearn Leather
|
||||
case GOSSIP_ACTION_INFO_DEF + 1:
|
||||
@@ -973,7 +976,7 @@ class npc_prof_tailor : public CreatureScript
|
||||
player->GetSession()->SendListInventory(me->GetGUID());
|
||||
break;
|
||||
case GOSSIP_ACTION_TRAIN:
|
||||
player->GetSession()->SendTrainerList(me->GetGUID());
|
||||
player->GetSession()->SendTrainerList(me, TRAINER_ID_TAILORING);
|
||||
break;
|
||||
//Learn Tailor
|
||||
case GOSSIP_ACTION_INFO_DEF + 1:
|
||||
@@ -1083,100 +1086,10 @@ enum MultiProfessionTrainer
|
||||
GOSSIP_MENU_TAILORING = 12199
|
||||
};
|
||||
|
||||
/*###
|
||||
# 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) { }
|
||||
|
||||
bool GossipSelect(Player* player, uint32 menuId, uint32 gossipListId) override
|
||||
{
|
||||
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;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
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_blacksmith();
|
||||
new npc_engineering_tele_trinket();
|
||||
new npc_prof_leather();
|
||||
new npc_prof_tailor();
|
||||
new npc_multi_profession_trainer();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user