mirror of
https://github.com/mod-playerbots/azerothcore-wotlk.git
synced 2026-01-13 01:08:35 +00:00
Merge branch 'master' of https://github.com/azerothcore/azerothcore-wotlk
This commit is contained in:
@@ -0,0 +1,6 @@
|
||||
INSERT INTO version_db_world (`sql_rev`) VALUES ('1503198096265931900');
|
||||
|
||||
-- make Franclorn Forgewright visible only for dead players
|
||||
UPDATE `creature_template` SET `npcflag`=32771, `AIName`='' WHERE `entry`=8888;
|
||||
DELETE FROM `smart_scripts` WHERE `entryorguid` = 8888 AND `source_type` = 0;
|
||||
UPDATE `creature_template_addon` SET `auras`=10848 WHERE `entry` IN (8888);
|
||||
@@ -0,0 +1,15 @@
|
||||
INSERT INTO version_db_world (`sql_rev`) VALUES ('1503204010790637500');
|
||||
|
||||
-- Pet Trainer
|
||||
UPDATE `creature_template` SET `gossip_menu_id`= 4783 WHERE `entry` IN (543, 3306, 3545, 3698, 4320, 16675, 40405);
|
||||
UPDATE `creature_template` SET `exp`= 0, `npcflag`= 17, `trainer_type`= 3, `flags_extra`= 2, `ScriptName`= 'npc_pet_trainer' WHERE `entry`= 40405;
|
||||
UPDATE `gossip_menu_option` SET `option_icon`= 0 WHERE `menu_id`= 6520 AND `id`= 0;
|
||||
|
||||
-- gossip menu conditions
|
||||
DELETE FROM `conditions` WHERE `SourceGroup`= 4783;
|
||||
INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`SourceId`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionTarget`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`NegativeCondition`,`ErrorType`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES
|
||||
(14,4783,5838,0,0,15,0,4,0,0,0,0,0,'','Show gossip menu 4783 text id 5838 if player is a Hunter.'),
|
||||
(14,4783,5839,0,0,15,0,4,0,0,1,0,0,'','Show gossip menu 4783 text id 5839 if player is not a Hunter.'),
|
||||
(15,4783, 0,0,0,15,0,4,0,0,0,0,0,'','Show gossip menu 4783 option id 0 if player is a Hunter.'),
|
||||
(15,4783, 1,0,0,15,0,4,0,0,0,0,0,'','Show gossip menu 4783 option id 1 if player is a Hunter.');
|
||||
|
||||
20
src/game/AI/ScriptedAI/ScriptedGossip.cpp
Normal file
20
src/game/AI/ScriptedAI/ScriptedGossip.cpp
Normal file
@@ -0,0 +1,20 @@
|
||||
/*
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU GPL v2 license: http://github.com/azerothcore/azerothcore-wotlk/LICENSE-GPL2
|
||||
* Copyright (C) 2008-2016 TrinityCore <http://www.trinitycore.org/>
|
||||
* Copyright (C) 2005-2009 MaNGOS <http://getmangos.com/>
|
||||
*/
|
||||
|
||||
#include "ScriptedGossip.h"
|
||||
#include "Player.h"
|
||||
#include "Creature.h"
|
||||
|
||||
void ClearGossipMenuFor(Player* player) { player->PlayerTalkClass->ClearMenus(); }
|
||||
// Using provided text, not from DB
|
||||
void AddGossipItemFor(Player* player, uint32 icon, const char* text, uint32 sender, uint32 action) { player->PlayerTalkClass->GetGossipMenu().AddMenuItem(-1, icon, text, sender, action, "", 0); }
|
||||
// Using provided texts, not from DB
|
||||
void AddGossipItemFor(Player* player, uint32 icon, const char* text, uint32 sender, uint32 action, const char* popupText, uint32 popupMoney, bool coded) { player->PlayerTalkClass->GetGossipMenu().AddMenuItem(-1, icon, text, sender, action, popupText, popupMoney, coded); }
|
||||
// Uses gossip item info from DB
|
||||
void AddGossipItemFor(Player* player, uint32 gossipMenuID, uint32 gossipMenuItemID, uint32 sender, uint32 action) { player->PlayerTalkClass->GetGossipMenu().AddMenuItem(gossipMenuID, gossipMenuItemID, sender, action); }
|
||||
void SendGossipMenuFor(Player* player, uint32 npcTextID, uint64 const& guid) { player->PlayerTalkClass->SendGossipMenu(npcTextID, guid); }
|
||||
void SendGossipMenuFor(Player* player, uint32 npcTextID, Creature const* creature) { if (creature) SendGossipMenuFor(player, npcTextID, creature->GetGUID()); }
|
||||
void CloseGossipMenuFor(Player* player) { player->PlayerTalkClass->SendCloseGossip(); }
|
||||
@@ -68,6 +68,18 @@ enum eTradeskill
|
||||
GOSSIP_SENDER_SEC_STABLEMASTER = 10
|
||||
};
|
||||
|
||||
class Creature;
|
||||
void ClearGossipMenuFor(Player* player);
|
||||
// Using provided text, not from DB
|
||||
void AddGossipItemFor(Player* player, uint32 icon, const char* text, uint32 sender, uint32 action);
|
||||
// Using provided texts, not from DB
|
||||
void AddGossipItemFor(Player* player, uint32 icon, const char* text, uint32 sender, uint32 action, const char* popupText, uint32 popupMoney, bool coded);
|
||||
// Uses gossip item info from DB
|
||||
void AddGossipItemFor(Player* player, uint32 gossipMenuID, uint32 gossipMenuItemID, uint32 sender, uint32 action);
|
||||
void SendGossipMenuFor(Player* player, uint32 npcTextID, uint64 const& guid);
|
||||
void SendGossipMenuFor(Player* player, uint32 npcTextID, Creature const* creature);
|
||||
void CloseGossipMenuFor(Player* player);
|
||||
|
||||
// Defined fuctions to use with player.
|
||||
|
||||
// This fuction add's a menu item,
|
||||
|
||||
@@ -1824,61 +1824,34 @@ class npc_wormhole : public CreatureScript
|
||||
|
||||
enum PetTrainer
|
||||
{
|
||||
TEXT_ISHUNTER = 5838,
|
||||
TEXT_NOTHUNTER = 5839,
|
||||
TEXT_PETINFO = 13474,
|
||||
TEXT_CONFIRM = 7722
|
||||
PET_UNLEARN = 6520,
|
||||
YES_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)
|
||||
struct npc_pet_trainerAI : public ScriptedAI
|
||||
{
|
||||
if (creature->IsQuestGiver())
|
||||
player->PrepareQuestMenu(creature->GetGUID());
|
||||
npc_pet_trainerAI(Creature* creature) : ScriptedAI(creature) { }
|
||||
|
||||
if (player->getClass() == CLASS_HUNTER)
|
||||
|
||||
void sGossipSelect(Player* player, uint32 menuId, uint32 gossipListId) override
|
||||
{
|
||||
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;
|
||||
if (menuId == PET_UNLEARN && gossipListId == YES_PLEASE_DO)
|
||||
{
|
||||
player->ResetPetTalents();
|
||||
player->PlayerTalkClass->SendCloseGossip();
|
||||
}
|
||||
}
|
||||
player->PlayerTalkClass->SendGossipMenu(TEXT_NOTHUNTER, creature->GetGUID());
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action)
|
||||
|
||||
CreatureAI* GetAI(Creature* creature) const override
|
||||
{
|
||||
player->PlayerTalkClass->ClearMenus();
|
||||
switch (action)
|
||||
{
|
||||
case GOSSIP_ACTION_INFO_DEF + 1:
|
||||
player->PlayerTalkClass->SendGossipMenu(TEXT_PETINFO, 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());
|
||||
}
|
||||
break;
|
||||
case GOSSIP_ACTION_INFO_DEF + 3:
|
||||
{
|
||||
player->ResetPetTalents();
|
||||
player->CLOSE_GOSSIP_MENU();
|
||||
}
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
return new npc_pet_trainerAI(creature);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user