Add state for GM command completed quests. Thanks H0zen for assistance

This commit is contained in:
Antz 2017-11-22 18:57:03 +00:00 committed by Antz
parent 4500bdeae4
commit 973c07358b
4 changed files with 9 additions and 4 deletions

View file

@ -5646,7 +5646,7 @@ bool ChatHandler::HandleQuestCompleteCommand(char* args)
if (uint32 spell = pQuest->GetReqSpellLearned()) if (uint32 spell = pQuest->GetReqSpellLearned())
player->learnSpell(spell, false); player->learnSpell(spell, false);
player->CompleteQuest(entry); player->CompleteQuest(entry, QUEST_STATUS_FORCE_COMPLETE);
return true; return true;
} }

View file

@ -13742,11 +13742,11 @@ void Player::AddQuest(Quest const* pQuest, Object* questGiver)
UpdateForQuestWorldObjects(); UpdateForQuestWorldObjects();
} }
void Player::CompleteQuest(uint32 quest_id) void Player::CompleteQuest(uint32 quest_id, QuestStatus status)
{ {
if (quest_id) if (quest_id)
{ {
SetQuestStatus(quest_id, QUEST_STATUS_COMPLETE); SetQuestStatus(quest_id, status);
uint16 log_slot = FindQuestSlot(quest_id); uint16 log_slot = FindQuestSlot(quest_id);
if (log_slot < MAX_QUEST_LOG_SIZE) if (log_slot < MAX_QUEST_LOG_SIZE)
@ -14485,7 +14485,11 @@ QuestStatus Player::GetQuestStatus(uint32 quest_id) const
{ {
QuestStatusMap::const_iterator itr = mQuestStatus.find(quest_id); QuestStatusMap::const_iterator itr = mQuestStatus.find(quest_id);
if (itr != mQuestStatus.end()) if (itr != mQuestStatus.end())
{
if (itr->second.m_status == QUEST_STATUS_FORCE_COMPLETE)
return QUEST_STATUS_COMPLETE;
return itr->second.m_status; return itr->second.m_status;
}
} }
return QUEST_STATUS_NONE; return QUEST_STATUS_NONE;
} }

View file

@ -1463,7 +1463,7 @@ class Player : public Unit
bool CanRewardQuest(Quest const* pQuest, bool msg) const; bool CanRewardQuest(Quest const* pQuest, bool msg) const;
bool CanRewardQuest(Quest const* pQuest, uint32 reward, bool msg) const; bool CanRewardQuest(Quest const* pQuest, uint32 reward, bool msg) const;
void AddQuest(Quest const* pQuest, Object* questGiver); void AddQuest(Quest const* pQuest, Object* questGiver);
void CompleteQuest(uint32 quest_id); void CompleteQuest(uint32 quest_id, QuestStatus status = QUEST_STATUS_FORCE_COMPLETE);
void IncompleteQuest(uint32 quest_id); void IncompleteQuest(uint32 quest_id);
void RewardQuest(Quest const* pQuest, uint32 reward, Object* questGiver, bool announce = true); void RewardQuest(Quest const* pQuest, uint32 reward, Object* questGiver, bool announce = true);

View file

@ -109,6 +109,7 @@ enum QuestStatus
QUEST_STATUS_INCOMPLETE = 3, QUEST_STATUS_INCOMPLETE = 3,
QUEST_STATUS_AVAILABLE = 4, // unused in fact QUEST_STATUS_AVAILABLE = 4, // unused in fact
QUEST_STATUS_FAILED = 5, QUEST_STATUS_FAILED = 5,
QUEST_STATUS_FORCE_COMPLETE = 6,
MAX_QUEST_STATUS MAX_QUEST_STATUS
}; };