Scripts/Misc: Load gossip options from DB (#27892)

This commit is contained in:
lee
2022-04-08 09:43:57 +08:00
committed by GitHub
parent f02b70860f
commit 5a20861565
5 changed files with 75 additions and 56 deletions

View File

@@ -0,0 +1,32 @@
--
ALTER TABLE `gossip_menu_option` MODIFY `VerifiedBuild` int(11) NOT NULL DEFAULT '0';
-- Quest Chasing the Moonstone (11194)
DELETE FROM `gossip_menu_option` WHERE `MenuID` IN (57025) AND `OptionID` IN (0);
INSERT INTO `gossip_menu_option`(`MenuID`, `OptionID`, `OptionIcon`, `OptionText`, `OptionBroadcastTextID`, `OptionType`, `OptionNpcFlag`, `ActionMenuID`, `ActionPoiID`, `BoxCoded`, `BoxMoney`, `BoxText`, `BoxBroadcastTextID`, `VerifiedBuild`) VALUES
(57025, 0, 0, 'Hand over the Southfury moonstone and I\'ll let you go.', 20723, 1, 1, 0, 0, 0, 0, NULL, 0, 0);
-- Quest Cairne's Hoofprint (925), credit: vmangos
DELETE FROM `gossip_menu_option` WHERE `MenuID` IN (5851) AND `OptionID` IN (0);
INSERT INTO `gossip_menu_option`(`MenuID`, `OptionID`, `OptionIcon`, `OptionText`, `OptionBroadcastTextID`, `OptionType`, `OptionNpcFlag`, `ActionMenuID`, `ActionPoiID`, `BoxCoded`, `BoxMoney`, `BoxText`, `BoxBroadcastTextID`, `VerifiedBuild`) VALUES
(5851, 0, 0, 'Chief Bloodhoof, this may sound like an odd request... but I have a young ward who is quite shy. You are a hero to him, and he asked me to get your hoofprint.', 9670, 1, 1, 5852, 0, 0, 0, NULL, 0, 34219);
DELETE FROM `gossip_menu` WHERE `MenuID` = 5852 AND `TextID` = 7014;
INSERT INTO `gossip_menu` (`MenuID`, `TextID`, `VerifiedBuild`) VALUES
(5852,7014,34219);
-- ZulAman
DELETE FROM `gossip_menu_option` WHERE `MenuID` IN (8799,8874,8927,8881) AND `OptionID` IN (0);
INSERT INTO `gossip_menu_option`(`MenuID`, `OptionID`, `OptionIcon`, `OptionText`, `OptionBroadcastTextID`, `OptionType`, `OptionNpcFlag`, `ActionMenuID`, `ActionPoiID`, `BoxCoded`, `BoxMoney`, `BoxText`, `BoxBroadcastTextID`, `VerifiedBuild`) VALUES
(8799, 0, 0, "Nalorakk is dead, you're free to go.", 23015, 1, 1, 0, 0, 0, 0, NULL, 0, 12340),
(8874, 0, 0, "The coast is clear. You're free!", 22965, 1, 1, 0, 0, 0, 0, NULL, 0, 11723),
(8927, 0, 0, "It's safe, little gnome. You can come out now.", 23154, 1, 1, 0, 0, 0, 0, NULL, 0, 0),
(8881, 0, 0, "We've killed your captors. You're free to go.
", 23090, 1, 1, 0, 0, 0, 0, NULL, 0, 0);
-- MGT
UPDATE `gossip_menu_option` SET `ActionMenuID` = 9200 WHERE `MenuID` = 9199 AND `OptionID` = 0;
UPDATE `gossip_menu_option` SET `ActionMenuID` = 9297 WHERE `MenuID` = 9199 AND `OptionID` = 1;
UPDATE `gossip_menu_option` SET `ActionMenuID` = 9201 WHERE `MenuID` = 9200 AND `OptionID` = 0;
UPDATE `gossip_menu_option` SET `ActionMenuID` = 9295 WHERE `MenuID` = 9297 AND `OptionID` = 0;
UPDATE `gossip_menu_option` SET `ActionMenuID` = 9296 WHERE `MenuID` = 9297 AND `OptionID` = 1;

View File

@@ -56,12 +56,6 @@ enum EventIds
EVENT_KALECGOS_LANDING = 2
};
#define GOSSIP_ITEM_KAEL_1 "Who are you?"
#define GOSSIP_ITEM_KAEL_2 "What can we do to assist you?"
#define GOSSIP_ITEM_KAEL_3 "What brings you to the Sunwell?"
#define GOSSIP_ITEM_KAEL_4 "You're not alone here?"
#define GOSSIP_ITEM_KAEL_5 "What would Kil'jaeden want with a mortal woman?"
class npc_kalecgos : public CreatureScript
{
public:
@@ -107,47 +101,6 @@ public:
}
}
bool OnGossipSelect(Player* player, uint32 /*menuId*/, uint32 gossipListId) override
{
uint32 const action = player->PlayerTalkClass->GetGossipOptionAction(gossipListId);
ClearGossipMenuFor(player);
switch (action)
{
case GOSSIP_ACTION_INFO_DEF:
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_KAEL_2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
SendGossipMenuFor(player, 12500, me->GetGUID());
break;
case GOSSIP_ACTION_INFO_DEF + 1:
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_KAEL_3, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2);
SendGossipMenuFor(player, 12502, me->GetGUID());
break;
case GOSSIP_ACTION_INFO_DEF + 2:
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_KAEL_4, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3);
SendGossipMenuFor(player, 12606, me->GetGUID());
break;
case GOSSIP_ACTION_INFO_DEF + 3:
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_KAEL_5, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 4);
SendGossipMenuFor(player, 12607, me->GetGUID());
break;
case GOSSIP_ACTION_INFO_DEF + 4:
SendGossipMenuFor(player, 12608, me->GetGUID());
break;
}
return true;
}
bool OnGossipHello(Player* player) override
{
if (me->IsQuestGiver())
player->PrepareQuestMenu(me->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_KAEL_1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF);
SendGossipMenuFor(player, 12498, me->GetGUID());
return true;
}
private:
EventMap events;
};

View File

@@ -40,11 +40,26 @@ EndContentData */
## npc_zulaman_hostage
######*/
#define GOSSIP_HOSTAGE1 "I am glad to help you."
static uint32 const HostageEntry[] = {23790, 23999, 24024, 24001};
static uint32 const ChestEntry[] = {186648, 187021, 186672, 186667};
enum Npcs
{
NPC_TANZAR = 23790,
NPC_HARKOR = 23999,
NPC_ASHLI = 24001,
NPC_KRAZ = 24024
};
enum Gossips
{
GOSSIP_MENU_TANZAR = 8799,
GOSSIP_MENU_HARKOR = 8874,
GOSSIP_MENU_ASHLI = 8927,
GOSSIP_MENU_KRAZ = 8881,
GOSSIP_OPTION_HOSTAGE = 0
};
class npc_zulaman_hostage : public CreatureScript
{
public:
@@ -58,7 +73,21 @@ class npc_zulaman_hostage : public CreatureScript
bool OnGossipHello(Player* player) override
{
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_HOSTAGE1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
switch (me->GetEntry())
{
case NPC_TANZAR:
AddGossipItemFor(player, GOSSIP_MENU_TANZAR, GOSSIP_OPTION_HOSTAGE, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
break;
case NPC_HARKOR:
AddGossipItemFor(player, GOSSIP_MENU_HARKOR, GOSSIP_OPTION_HOSTAGE, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
break;
case NPC_ASHLI:
AddGossipItemFor(player, GOSSIP_MENU_ASHLI, GOSSIP_OPTION_HOSTAGE, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
break;
case NPC_KRAZ:
AddGossipItemFor(player, GOSSIP_MENU_KRAZ, GOSSIP_OPTION_HOSTAGE, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
break;
}
SendGossipMenuFor(player, player->GetGossipTextId(me), me->GetGUID());
return true;
}

View File

@@ -43,11 +43,11 @@ enum RizzleSprysprocketData
SAY_RIZZLE_START = 0,
SAY_RIZZLE_GRENADE = 1,
SAY_RIZZLE_FINAL = 2,
MSG_ESCAPE_NOTICE = 3
MSG_ESCAPE_NOTICE = 3,
GOSSIP_MENU_GET_MOONSTONE = 57025,
GOSSIP_OPTION_GET_MOONSTONE = 0
};
#define GOSSIP_GET_MOONSTONE "Hand over the Southfury moonstone and I'll let you go."
Position const WPs[58] =
{
{3691.97f, -3962.41f, 35.9118f, 3.67f},
@@ -284,7 +284,7 @@ public:
{
if (player->GetQuestStatus(QUEST_CHASING_THE_MOONSTONE) != QUEST_STATUS_INCOMPLETE)
return true;
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_GET_MOONSTONE, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
AddGossipItemFor(player, GOSSIP_MENU_GET_MOONSTONE, GOSSIP_OPTION_GET_MOONSTONE, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
SendGossipMenuFor(player, 10811, me->GetGUID());
return true;
}

View File

@@ -45,7 +45,12 @@ enum Sounds
SOUND_AGGRO = 5884
};
#define GOSSIP_HCB "I know this is rather silly but a young ward who is a bit shy would like your hoofprint."
enum Gossips
{
GOSSIP_MENU_HCB = 5851,
GOSSIP_OPTION_HCB = 0
};
/// @todo verify abilities/timers
class npc_cairne_bloodhoof : public CreatureScript
{
@@ -141,7 +146,7 @@ public:
player->PrepareQuestMenu(me->GetGUID());
if (player->GetQuestStatus(925) == QUEST_STATUS_INCOMPLETE)
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_HCB, GOSSIP_SENDER_MAIN, GOSSIP_SENDER_INFO);
AddGossipItemFor(player, GOSSIP_MENU_HCB, GOSSIP_OPTION_HCB, GOSSIP_SENDER_MAIN, GOSSIP_SENDER_INFO);
SendGossipMenuFor(player, 7013, me->GetGUID());