Core/Quests: Implemented quest popups
This commit is contained in:
1 parent
3dcba98482
commit
05250fe4ad
6 files changed
+26
-24
No files matched your search
@@ -332,17 +332,16 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u
|
|||||||
{
|
{
|
||||||
if (me && e.action.questOffer.directAdd == 0)
|
if (me && e.action.questOffer.directAdd == 0)
|
||||||
{
|
{
|
||||||
if (pTarget->CanTakeQuest(q, true))
|
if (pTarget->CanTakeQuest(q, true) && q->IsAutoAccept())
|
||||||
if (WorldSession* session = pTarget->GetSession())
|
{
|
||||||
{
|
pTarget->AddQuestAndCheckCompletion(q, nullptr);
|
||||||
PlayerMenu menu(session);
|
pTarget->PlayerTalkClass->SendQuestGiverQuestDetails(q, pTarget->GetGUID(), true, true);
|
||||||
menu.SendQuestGiverQuestDetails(q, me->GetGUID(), true);
|
TC_LOG_DEBUG("scripts.ai", "SmartScript::ProcessAction:: SMART_ACTION_OFFER_QUEST: Player guidLow %u - discovering quest %u", pTarget->GetGUID().GetCounter(), e.action.questOffer.questID);
|
||||||
TC_LOG_DEBUG("scripts.ai", "SmartScript::ProcessAction:: SMART_ACTION_OFFER_QUEST: Player guidLow %u - offering quest %u", pTarget->GetGUID().GetCounter(), e.action.questOffer.questID);
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
(*itr)->ToPlayer()->AddQuestAndCheckCompletion(q, nullptr);
|
pTarget->AddQuestAndCheckCompletion(q, nullptr);
|
||||||
TC_LOG_DEBUG("scripts.ai", "SmartScript::ProcessAction:: SMART_ACTION_OFFER_QUEST: Player guidLow %u - quest %u added",
|
TC_LOG_DEBUG("scripts.ai", "SmartScript::ProcessAction:: SMART_ACTION_OFFER_QUEST: Player guidLow %u - quest %u added",
|
||||||
pTarget->GetGUID().GetCounter(), e.action.questOffer.questID);
|
pTarget->GetGUID().GetCounter(), e.action.questOffer.questID);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -396,7 +396,7 @@ void PlayerMenu::SendQuestGiverStatus(uint32 questStatus, ObjectGuid npcGUID) co
|
|||||||
TC_LOG_DEBUG("network", "WORLD: Sent SMSG_QUESTGIVER_STATUS NPC=%s, status=%u", npcGUID.ToString().c_str(), questStatus);
|
TC_LOG_DEBUG("network", "WORLD: Sent SMSG_QUESTGIVER_STATUS NPC=%s, status=%u", npcGUID.ToString().c_str(), questStatus);
|
||||||
}
|
}
|
||||||
|
|
||||||
void PlayerMenu::SendQuestGiverQuestDetails(Quest const* quest, ObjectGuid npcGUID, bool activateAccept) const
|
void PlayerMenu::SendQuestGiverQuestDetails(Quest const* quest, ObjectGuid npcGUID, bool autoLaunched, bool displayPopup) const
|
||||||
{
|
{
|
||||||
std::string questTitle = quest->GetTitle();
|
std::string questTitle = quest->GetTitle();
|
||||||
std::string questDetails = quest->GetDetails();
|
std::string questDetails = quest->GetDetails();
|
||||||
@@ -439,11 +439,11 @@ void PlayerMenu::SendQuestGiverQuestDetails(Quest const* quest, ObjectGuid npcGU
|
|||||||
data << questTurnTargetName; // 4.x
|
data << questTurnTargetName; // 4.x
|
||||||
data << uint32(quest->GetQuestGiverPortrait()); // 4.x
|
data << uint32(quest->GetQuestGiverPortrait()); // 4.x
|
||||||
data << uint32(quest->GetQuestTurnInPortrait()); // 4.x
|
data << uint32(quest->GetQuestTurnInPortrait()); // 4.x
|
||||||
data << uint8(activateAccept ? 1 : 0); // auto finish
|
data << uint8(autoLaunched); // auto finish
|
||||||
data << uint32(quest->GetFlags() & (sWorld->getBoolConfig(CONFIG_QUEST_IGNORE_AUTO_ACCEPT) ? ~QUEST_FLAGS_AUTO_ACCEPT : ~0)); // 3.3.3 questFlags
|
data << uint32(quest->GetFlags() & (sWorld->getBoolConfig(CONFIG_QUEST_IGNORE_AUTO_ACCEPT) ? ~QUEST_FLAGS_AUTO_ACCEPT : ~0)); // 3.3.3 questFlags
|
||||||
data << uint32(quest->GetSuggestedPlayers());
|
data << uint32(quest->GetSuggestedPlayers());
|
||||||
data << uint8(0); // IsFinished? value is sent back to server in quest accept packet
|
data << uint8(0); // IsFinished? value is sent back to server in quest accept packet
|
||||||
data << uint8(quest->IsStartAtAreaTrigger() ? 1 : 0); // 4.x Starts at AreaTrigger?
|
data << uint8(displayPopup); // 4.x Starts at AreaTrigger?
|
||||||
data << uint32(quest->GetRequiredSpell()); // 4.x
|
data << uint32(quest->GetRequiredSpell()); // 4.x
|
||||||
|
|
||||||
quest->BuildExtraQuestInfo(data, _session->GetPlayer());
|
quest->BuildExtraQuestInfo(data, _session->GetPlayer());
|
||||||
@@ -630,7 +630,7 @@ void PlayerMenu::SendQuestQueryResponse(Quest const* quest) const
|
|||||||
TC_LOG_DEBUG("network", "WORLD: Sent SMSG_QUEST_QUERY_RESPONSE questid=%u", quest->GetQuestId());
|
TC_LOG_DEBUG("network", "WORLD: Sent SMSG_QUEST_QUERY_RESPONSE questid=%u", quest->GetQuestId());
|
||||||
}
|
}
|
||||||
|
|
||||||
void PlayerMenu::SendQuestGiverOfferReward(Quest const* quest, ObjectGuid npcGUID, bool enableNext) const
|
void PlayerMenu::SendQuestGiverOfferReward(Quest const* quest, ObjectGuid npcGUID, bool autoLaunched) const
|
||||||
{
|
{
|
||||||
std::string questTitle = quest->GetTitle();
|
std::string questTitle = quest->GetTitle();
|
||||||
std::string questOfferRewardText = quest->GetOfferRewardText();
|
std::string questOfferRewardText = quest->GetOfferRewardText();
|
||||||
@@ -669,7 +669,7 @@ void PlayerMenu::SendQuestGiverOfferReward(Quest const* quest, ObjectGuid npcGUI
|
|||||||
data << uint32(quest->GetQuestGiverPortrait());
|
data << uint32(quest->GetQuestGiverPortrait());
|
||||||
data << uint32(quest->GetQuestTurnInPortrait());
|
data << uint32(quest->GetQuestTurnInPortrait());
|
||||||
|
|
||||||
data << uint8(enableNext ? 1 : 0); // Auto Finish
|
data << uint8(autoLaunched); // Auto Finish
|
||||||
data << uint32(quest->GetFlags()); // 3.3.3 questFlags
|
data << uint32(quest->GetFlags()); // 3.3.3 questFlags
|
||||||
data << uint32(quest->GetSuggestedPlayers()); // SuggestedGroupNum
|
data << uint32(quest->GetSuggestedPlayers()); // SuggestedGroupNum
|
||||||
|
|
||||||
@@ -694,7 +694,7 @@ void PlayerMenu::SendQuestGiverOfferReward(Quest const* quest, ObjectGuid npcGUI
|
|||||||
TC_LOG_DEBUG("network", "WORLD: Sent SMSG_QUESTGIVER_OFFER_REWARD NPC=%s, questid=%u", npcGUID.ToString().c_str(), quest->GetQuestId());
|
TC_LOG_DEBUG("network", "WORLD: Sent SMSG_QUESTGIVER_OFFER_REWARD NPC=%s, questid=%u", npcGUID.ToString().c_str(), quest->GetQuestId());
|
||||||
}
|
}
|
||||||
|
|
||||||
void PlayerMenu::SendQuestGiverRequestItems(Quest const* quest, ObjectGuid npcGUID, bool canComplete, bool closeOnCancel) const
|
void PlayerMenu::SendQuestGiverRequestItems(Quest const* quest, ObjectGuid npcGUID, bool canComplete, bool autoLaunched) const
|
||||||
{
|
{
|
||||||
// We can always call to RequestItems, but this packet only goes out if there are actually
|
// We can always call to RequestItems, but this packet only goes out if there are actually
|
||||||
// items. Otherwise, we'll skip straight to the OfferReward
|
// items. Otherwise, we'll skip straight to the OfferReward
|
||||||
@@ -735,7 +735,7 @@ void PlayerMenu::SendQuestGiverRequestItems(Quest const* quest, ObjectGuid npcGU
|
|||||||
data << quest->GetIncompleteEmote();
|
data << quest->GetIncompleteEmote();
|
||||||
|
|
||||||
// Close Window after cancel
|
// Close Window after cancel
|
||||||
data << uint32(closeOnCancel);
|
data << uint32(autoLaunched);
|
||||||
|
|
||||||
data << uint32(quest->GetFlags()); // 3.3.3 questFlags
|
data << uint32(quest->GetFlags()); // 3.3.3 questFlags
|
||||||
data << uint32(quest->GetSuggestedPlayers()); // SuggestedGroupNum
|
data << uint32(quest->GetSuggestedPlayers()); // SuggestedGroupNum
|
||||||
|
|||||||
@@ -282,10 +282,10 @@ class TC_GAME_API PlayerMenu
|
|||||||
void SendQuestGiverQuestList(QEmote const& eEmote, const std::string& Title, ObjectGuid npcGUID);
|
void SendQuestGiverQuestList(QEmote const& eEmote, const std::string& Title, ObjectGuid npcGUID);
|
||||||
|
|
||||||
void SendQuestQueryResponse(Quest const* quest) const;
|
void SendQuestQueryResponse(Quest const* quest) const;
|
||||||
void SendQuestGiverQuestDetails(Quest const* quest, ObjectGuid npcGUID, bool activateAccept) const;
|
void SendQuestGiverQuestDetails(Quest const* quest, ObjectGuid npcGUID, bool autoLaunched, bool displayPopup) const;
|
||||||
|
|
||||||
void SendQuestGiverOfferReward(Quest const* quest, ObjectGuid npcGUID, bool enableNext) const;
|
void SendQuestGiverOfferReward(Quest const* quest, ObjectGuid npcGUID, bool autoLaunched) const;
|
||||||
void SendQuestGiverRequestItems(Quest const* quest, ObjectGuid npcGUID, bool canComplete, bool closeOnCancel) const;
|
void SendQuestGiverRequestItems(Quest const* quest, ObjectGuid npcGUID, bool canComplete, bool autoLaunched) const;
|
||||||
|
|
||||||
static void AddQuestLevelToTitle(std::string &title, int32 level);
|
static void AddQuestLevelToTitle(std::string &title, int32 level);
|
||||||
|
|
||||||
|
|||||||
@@ -14579,7 +14579,7 @@ void Player::SendPreparedQuest(ObjectGuid guid)
|
|||||||
if (quest->IsAutoComplete() && quest->IsRepeatable() && !quest->IsDailyOrWeekly())
|
if (quest->IsAutoComplete() && quest->IsRepeatable() && !quest->IsDailyOrWeekly())
|
||||||
PlayerTalkClass->SendQuestGiverRequestItems(quest, guid, CanCompleteRepeatableQuest(quest), true);
|
PlayerTalkClass->SendQuestGiverRequestItems(quest, guid, CanCompleteRepeatableQuest(quest), true);
|
||||||
else
|
else
|
||||||
PlayerTalkClass->SendQuestGiverQuestDetails(quest, guid, true);
|
PlayerTalkClass->SendQuestGiverQuestDetails(quest, guid, true, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -243,7 +243,7 @@ void WorldSession::HandleQuestgiverQueryQuestOpcode(WorldPacket& recvData)
|
|||||||
if (quest->IsAutoComplete())
|
if (quest->IsAutoComplete())
|
||||||
_player->PlayerTalkClass->SendQuestGiverRequestItems(quest, object->GetGUID(), _player->CanCompleteQuest(quest->GetQuestId()), true);
|
_player->PlayerTalkClass->SendQuestGiverRequestItems(quest, object->GetGUID(), _player->CanCompleteQuest(quest->GetQuestId()), true);
|
||||||
else
|
else
|
||||||
_player->PlayerTalkClass->SendQuestGiverQuestDetails(quest, object->GetGUID(), true);
|
_player->PlayerTalkClass->SendQuestGiverQuestDetails(quest, object->GetGUID(), true, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -321,7 +321,7 @@ void WorldSession::HandleQuestgiverChooseRewardOpcode(WorldPacket& recvData)
|
|||||||
if (nextQuest->IsAutoAccept() && _player->CanAddQuest(nextQuest, true))
|
if (nextQuest->IsAutoAccept() && _player->CanAddQuest(nextQuest, true))
|
||||||
_player->AddQuestAndCheckCompletion(nextQuest, object);
|
_player->AddQuestAndCheckCompletion(nextQuest, object);
|
||||||
|
|
||||||
_player->PlayerTalkClass->SendQuestGiverQuestDetails(nextQuest, guid, true);
|
_player->PlayerTalkClass->SendQuestGiverQuestDetails(nextQuest, guid, true, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -344,7 +344,7 @@ void WorldSession::HandleQuestgiverChooseRewardOpcode(WorldPacket& recvData)
|
|||||||
if (nextQuest->IsAutoAccept() && _player->CanAddQuest(nextQuest, true))
|
if (nextQuest->IsAutoAccept() && _player->CanAddQuest(nextQuest, true))
|
||||||
_player->AddQuestAndCheckCompletion(nextQuest, object);
|
_player->AddQuestAndCheckCompletion(nextQuest, object);
|
||||||
|
|
||||||
_player->PlayerTalkClass->SendQuestGiverQuestDetails(nextQuest, guid, true);
|
_player->PlayerTalkClass->SendQuestGiverQuestDetails(nextQuest, guid, true, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -637,7 +637,7 @@ void WorldSession::HandlePushQuestToParty(WorldPacket& recvPacket)
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
receiver->SetQuestSharingInfo(sender->GetGUID(), questId);
|
receiver->SetQuestSharingInfo(sender->GetGUID(), questId);
|
||||||
receiver->PlayerTalkClass->SendQuestGiverQuestDetails(quest, receiver->GetGUID(), true);
|
receiver->PlayerTalkClass->SendQuestGiverQuestDetails(quest, receiver->GetGUID(), true, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5179,9 +5179,12 @@ void Spell::EffectQuestStart(SpellEffIndex effIndex)
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
if (quest->IsAutoAccept() && player->CanAddQuest(quest, false))
|
if (quest->IsAutoAccept() && player->CanAddQuest(quest, false))
|
||||||
|
{
|
||||||
player->AddQuestAndCheckCompletion(quest, player);
|
player->AddQuestAndCheckCompletion(quest, player);
|
||||||
|
player->PlayerTalkClass->SendQuestGiverQuestDetails(quest, player->GetGUID(), true, true);
|
||||||
|
}
|
||||||
|
|
||||||
player->PlayerTalkClass->SendQuestGiverQuestDetails(quest, player->GetGUID(), true);
|
player->PlayerTalkClass->SendQuestGiverQuestDetails(quest, player->GetGUID(), true, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user