mirror of
https://github.com/mangosfour/server.git
synced 2025-12-15 01:37:00 +00:00
[8506] Add check for IsAutoComplete() in SendPreparedQuest().
For cases where quest is repeatable but has Method!=0, QuestDetails must be sent instead of RequestItems. Some additional code cleanup. Signed-off-by: NoFantasy <nofantasy@nf.no>
This commit is contained in:
parent
744c6eaac0
commit
00cfea3b46
2 changed files with 19 additions and 17 deletions
|
|
@ -12131,34 +12131,36 @@ void Player::PrepareQuestMenu( uint64 guid )
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Player::SendPreparedQuest( uint64 guid )
|
void Player::SendPreparedQuest(uint64 guid)
|
||||||
{
|
{
|
||||||
QuestMenu& questMenu = PlayerTalkClass->GetQuestMenu();
|
QuestMenu& questMenu = PlayerTalkClass->GetQuestMenu();
|
||||||
if( questMenu.Empty() )
|
|
||||||
|
if (questMenu.Empty())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
QuestMenuItem const& qmi0 = questMenu.GetItem( 0 );
|
QuestMenuItem const& qmi0 = questMenu.GetItem(0);
|
||||||
|
|
||||||
uint32 status = qmi0.m_qIcon;
|
uint32 status = qmi0.m_qIcon;
|
||||||
|
|
||||||
// single element case
|
// single element case
|
||||||
if ( questMenu.MenuItemCount() == 1 )
|
if (questMenu.MenuItemCount() == 1)
|
||||||
{
|
{
|
||||||
// Auto open -- maybe also should verify there is no greeting
|
// Auto open -- maybe also should verify there is no greeting
|
||||||
uint32 quest_id = qmi0.m_qId;
|
uint32 quest_id = qmi0.m_qId;
|
||||||
Quest const* pQuest = objmgr.GetQuestTemplate(quest_id);
|
Quest const* pQuest = objmgr.GetQuestTemplate(quest_id);
|
||||||
|
|
||||||
if ( pQuest )
|
if (pQuest)
|
||||||
{
|
{
|
||||||
if( status == DIALOG_STATUS_UNK2 && !GetQuestRewardStatus( quest_id ) )
|
if (status == DIALOG_STATUS_UNK2 && !GetQuestRewardStatus(quest_id))
|
||||||
PlayerTalkClass->SendQuestGiverRequestItems( pQuest, guid, CanRewardQuest(pQuest, false), true );
|
PlayerTalkClass->SendQuestGiverRequestItems(pQuest, guid, CanRewardQuest(pQuest, false), true);
|
||||||
else if( status == DIALOG_STATUS_UNK2 )
|
else if (status == DIALOG_STATUS_UNK2)
|
||||||
PlayerTalkClass->SendQuestGiverRequestItems( pQuest, guid, CanRewardQuest(pQuest, false), true );
|
PlayerTalkClass->SendQuestGiverRequestItems(pQuest, guid, CanRewardQuest(pQuest, false), true);
|
||||||
// Send completable on repeatable quest if player don't have quest
|
// Send completable on repeatable and autoCompletable quest if player don't have quest
|
||||||
else if( pQuest->IsRepeatable() && !pQuest->IsDaily() )
|
// TODO: verify if check for !pQuest->IsDaily() is really correct (possibly not)
|
||||||
PlayerTalkClass->SendQuestGiverRequestItems( pQuest, guid, CanCompleteRepeatableQuest(pQuest), true );
|
else if (pQuest->IsAutoComplete() && pQuest->IsRepeatable() && !pQuest->IsDaily())
|
||||||
|
PlayerTalkClass->SendQuestGiverRequestItems(pQuest, guid, CanCompleteRepeatableQuest(pQuest), true);
|
||||||
else
|
else
|
||||||
PlayerTalkClass->SendQuestGiverQuestDetails( pQuest, guid, true );
|
PlayerTalkClass->SendQuestGiverQuestDetails(pQuest, guid, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// multiply entries
|
// multiply entries
|
||||||
|
|
@ -12171,11 +12173,11 @@ void Player::SendPreparedQuest( uint64 guid )
|
||||||
|
|
||||||
// need pet case for some quests
|
// need pet case for some quests
|
||||||
Creature *pCreature = ObjectAccessor::GetCreatureOrPetOrVehicle(*this,guid);
|
Creature *pCreature = ObjectAccessor::GetCreatureOrPetOrVehicle(*this,guid);
|
||||||
if( pCreature )
|
if (pCreature)
|
||||||
{
|
{
|
||||||
uint32 textid = pCreature->GetNpcTextId();
|
uint32 textid = pCreature->GetNpcTextId();
|
||||||
GossipText const* gossiptext = objmgr.GetGossipText(textid);
|
GossipText const* gossiptext = objmgr.GetGossipText(textid);
|
||||||
if( !gossiptext )
|
if (!gossiptext)
|
||||||
{
|
{
|
||||||
qe._Delay = 0; //TEXTEMOTE_MESSAGE; //zyg: player emote
|
qe._Delay = 0; //TEXTEMOTE_MESSAGE; //zyg: player emote
|
||||||
qe._Emote = 0; //TEXTEMOTE_HELLO; //zyg: NPC emote
|
qe._Emote = 0; //TEXTEMOTE_HELLO; //zyg: NPC emote
|
||||||
|
|
@ -12217,7 +12219,7 @@ void Player::SendPreparedQuest( uint64 guid )
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
PlayerTalkClass->SendQuestGiverQuestList( qe, title, guid );
|
PlayerTalkClass->SendQuestGiverQuestList(qe, title, guid);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
#ifndef __REVISION_NR_H__
|
#ifndef __REVISION_NR_H__
|
||||||
#define __REVISION_NR_H__
|
#define __REVISION_NR_H__
|
||||||
#define REVISION_NR "8505"
|
#define REVISION_NR "8506"
|
||||||
#endif // __REVISION_NR_H__
|
#endif // __REVISION_NR_H__
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue