Good evening!
While translating my server further into my origin language I experienced the following behavior (beside the fact it almost drove me crazy finding out about where the script is hiding):
When talking to Prospector Anvilward while having the quest 'The Dwarven Spy' (ID 8483) uncompleted the script 'npc_prospector_anvilward' adds a gossip option to the usual gossip_hello.
Clicking on this gossip option shows another gossip text with another gossip option below (adds another gossip option). The error takes place when closing the dialogue in both situations.
first error: the second gossip option, which should only be shown after the first gossip option is clicked, is now also shown beside the first gossip option
second error: the first gossip option is added every time talking to the dwarf. Means the script adds the same gossip option over and over again every time talking to him.
When talking to another NPC (e. g. Ley-Keeper Caidanis beside him) the chat resets. The function of the script after clicking the second gossip option is working as intended to!
Hope it's clear what I'm trying to say. I attached some pictures and named them accordingly.
Affected NPC: Prospector Anvilward (Entry 15420 Guid 55371)
Script path: \src\modules\SD3\scripts\eastern_kingdoms\eversong_woods.cpp
Affected script name: npc_prospector_anvilward
Affected lines: 353 - 384
Affected code:
bool OnGossipHello(Player* pPlayer, Creature* pCreature) override
{
if (pPlayer->GetQuestStatus(QUEST_THE_DWARVEN_SPY) == QUEST_STATUS_INCOMPLETE)
{
pPlayer->ADD_GOSSIP_ITEM_ID(GOSSIP_ICON_CHAT, GOSSIP_ITEM_MOMENT, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
}
pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXT_ID_MOMENT, pCreature->GetObjectGuid());
return true;
}
bool OnGossipSelect(Player* pPlayer, Creature* pCreature, uint32 /*uiSender*/, uint32 uiAction) override
{
pPlayer->PlayerTalkClass->ClearMenus();
switch (uiAction)
{
case GOSSIP_ACTION_INFO_DEF + 1:
pPlayer->ADD_GOSSIP_ITEM_ID(GOSSIP_ICON_CHAT, GOSSIP_ITEM_SHOW, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2);
pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXT_ID_SHOW, pCreature->GetObjectGuid());
break;
case GOSSIP_ACTION_INFO_DEF + 2:
pPlayer->CLOSE_GOSSIP_MENU();
if (npc_prospector_anvilwardAI* pEscortAI = dynamic_cast<npc_prospector_anvilwardAI*>(pCreature->AI()))
{
pEscortAI->Start(false, pPlayer);
}
break;
}
return true;
}
I have absolute no idea how to fix that in an appropriate way since I only have basic understanding for this language.
Maybe it would already be sufficient to just add another "pPlayer->PlayerTalkClass->ClearMenus();" after the first query for checking the uncompleted quest?
I would appreciate it getting this fixed in any further release. Thank you!
Sorry for my bad english
Kind regards
Recommended Comments
There are no comments to display.
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now