diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/server/scripts/World/npcs_special.cpp | 69 |
1 files changed, 24 insertions, 45 deletions
diff --git a/src/server/scripts/World/npcs_special.cpp b/src/server/scripts/World/npcs_special.cpp index 277bc9ac804..5e6407e361e 100644 --- a/src/server/scripts/World/npcs_special.cpp +++ b/src/server/scripts/World/npcs_special.cpp @@ -16,30 +16,6 @@ * with this program. If not, see <http://www.gnu.org/licenses/>. */ -/* ScriptData -SDName: Npcs_Special -SD%Complete: 100 -SDComment: To be used for special NPCs that are located globally. -SDCategory: NPCs -EndScriptData -*/ - -/* ContentData -npc_air_force_bots 80% support for misc (invisible) guard bots in areas where player allowed to fly. Summon guards after a preset time if tagged by spell -npc_lunaclaw_spirit 80% support for quests 6001/6002 (Body and Heart) -npc_chicken_cluck 100% support for quest 3861 (Cluck!) -npc_dancing_flames 100% midsummer event NPC -npc_guardian 100% guardianAI used to prevent players from accessing off-limits areas. Not in use by SD2 -npc_garments_of_quests 80% NPC's related to all Garments of-quests 5621, 5624, 5625, 5648, 565 -npc_injured_patient 100% patients for triage-quests (6622 and 6624) -npc_doctor 100% Gustaf Vanhowzen and Gregory Victor, quest 6622 and 6624 (Triage) -npc_sayge 100% Darkmoon event fortune teller, buff player based on answers given -npc_snake_trap_serpents 80% AI for snakes that summoned by Snake Trap -npc_shadowfiend 100% restore 5% of owner's mana when shadowfiend die from damage -npc_firework 100% NPC's summoned by rockets and rocket clusters, for making them cast visual -npc_train_wrecker 100% Wind-Up Train Wrecker that kills train set -EndContentData */ - #include "ScriptMgr.h" #include "ScriptedCreature.h" #include "ScriptedGossip.h" @@ -1805,51 +1781,54 @@ class npc_wormhole : public CreatureScript enum PetTrainer { - TEXT_ISHUNTER = 5838, - TEXT_NOTHUNTER = 5839, - TEXT_PETINFO = 13474, - TEXT_CONFIRM = 7722 + MENU_ID_PET_TRAINING = 4783, + MENU_ID_PET_UNLEARN = 6520, + NPC_TEXT_PET_FAMILIES = 13474, + NPC_TEXT_PET_TRAINING = 5838, + NPC_TEXT_UNLEARN = 7722, + OPTION_ID_HOW_DO_I_TRAIN = 0, + OPTION_ID_UNTRAIN_MY_PET = 1, + OPTION_ID_PLEASE_DO = 0, }; -#define GOSSIP_PET1 "How do I train my pet?" -#define GOSSIP_PET2 "I wish to untrain my pet." -#define GOSSIP_PET_CONFIRM "Yes, please do." - class npc_pet_trainer : public CreatureScript { public: npc_pet_trainer() : CreatureScript("npc_pet_trainer") { } - bool OnGossipHello(Player* player, Creature* creature) override + bool OnGossipHello(Player* player, Creature* creature) /*override*/ { + player->PlayerTalkClass->ClearMenus(); + if (creature->IsQuestGiver()) player->PrepareQuestMenu(creature->GetGUID()); - if (player->getClass() == CLASS_HUNTER) + if (player->GetPet() && player->GetPet()->getPetType() == HUNTER_PET) { - player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_PET1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1); - if (player->GetPet() && player->GetPet()->getPetType() == HUNTER_PET) - player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_PET2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2); - - player->PlayerTalkClass->SendGossipMenu(TEXT_ISHUNTER, creature->GetGUID()); - return true; + player->ADD_GOSSIP_ITEM_DB(MENU_ID_PET_TRAINING, OPTION_ID_HOW_DO_I_TRAIN, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1); + player->ADD_GOSSIP_ITEM_DB(MENU_ID_PET_TRAINING, OPTION_ID_UNTRAIN_MY_PET, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2); + player->SEND_GOSSIP_MENU(NPC_TEXT_PET_TRAINING, creature->GetGUID()); + } + else + { + player->ADD_GOSSIP_ITEM_DB(MENU_ID_PET_TRAINING, OPTION_ID_HOW_DO_I_TRAIN, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1); + player->SEND_GOSSIP_MENU(NPC_TEXT_PET_TRAINING, creature->GetGUID()); } - player->PlayerTalkClass->SendGossipMenu(TEXT_NOTHUNTER, creature->GetGUID()); return true; } - bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action) override + bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action) /*override*/ { player->PlayerTalkClass->ClearMenus(); switch (action) { case GOSSIP_ACTION_INFO_DEF + 1: - player->PlayerTalkClass->SendGossipMenu(TEXT_PETINFO, creature->GetGUID()); + player->SEND_GOSSIP_MENU(NPC_TEXT_PET_FAMILIES, creature->GetGUID()); break; case GOSSIP_ACTION_INFO_DEF + 2: { - player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_PET_CONFIRM, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3); - player->PlayerTalkClass->SendGossipMenu(TEXT_CONFIRM, creature->GetGUID()); + player->ADD_GOSSIP_ITEM_DB(MENU_ID_PET_UNLEARN, OPTION_ID_PLEASE_DO, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3); + player->SEND_GOSSIP_MENU(NPC_TEXT_UNLEARN, creature->GetGUID()); } break; case GOSSIP_ACTION_INFO_DEF + 3: |
