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

@@ -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());