mirror of
https://github.com/liyunfan1223/azerothcore-wotlk.git
synced 2026-08-09 08:17:56 +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
|
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.
|
// Defined fuctions to use with player.
|
||||||
|
|
||||||
// This fuction add's a menu item,
|
// This fuction add's a menu item,
|
||||||
|
|||||||
@@ -1824,61 +1824,34 @@ class npc_wormhole : public CreatureScript
|
|||||||
|
|
||||||
enum PetTrainer
|
enum PetTrainer
|
||||||
{
|
{
|
||||||
TEXT_ISHUNTER = 5838,
|
PET_UNLEARN = 6520,
|
||||||
TEXT_NOTHUNTER = 5839,
|
YES_PLEASE_DO = 0
|
||||||
TEXT_PETINFO = 13474,
|
|
||||||
TEXT_CONFIRM = 7722
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#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
|
class npc_pet_trainer : public CreatureScript
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
npc_pet_trainer() : CreatureScript("npc_pet_trainer") { }
|
npc_pet_trainer() : CreatureScript("npc_pet_trainer") { }
|
||||||
|
|
||||||
bool OnGossipHello(Player* player, Creature* creature)
|
struct npc_pet_trainerAI : public ScriptedAI
|
||||||
{
|
{
|
||||||
if (creature->IsQuestGiver())
|
npc_pet_trainerAI(Creature* creature) : ScriptedAI(creature) { }
|
||||||
player->PrepareQuestMenu(creature->GetGUID());
|
|
||||||
|
|
||||||
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 (menuId == PET_UNLEARN && gossipListId == YES_PLEASE_DO)
|
||||||
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->ResetPetTalents();
|
||||||
|
player->PlayerTalkClass->SendCloseGossip();
|
||||||
player->PlayerTalkClass->SendGossipMenu(TEXT_ISHUNTER, creature->GetGUID());
|
}
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
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();
|
return new npc_pet_trainerAI(creature);
|
||||||
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;
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user