aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Entities/Player/Player.cpp32
-rw-r--r--src/server/game/Entities/Player/Player.h2
-rw-r--r--src/server/game/Server/Packets/QuestPackets.cpp12
-rw-r--r--src/server/game/Server/Packets/QuestPackets.h12
-rw-r--r--src/server/game/Server/Protocol/Opcodes.cpp2
5 files changed, 43 insertions, 17 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index 6cbd3a22e3f..3a904a395d9 100644
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -16257,25 +16257,27 @@ void Player::SendCanTakeQuestResponse(QuestFailedReason msg) const
TC_LOG_DEBUG("network", "WORLD: Sent SMSG_QUESTGIVER_QUEST_INVALID");
}
-void Player::SendQuestConfirmAccept(const Quest* quest, Player* pReceiver)
+void Player::SendQuestConfirmAccept(Quest const* quest, Player* receiver)
{
- if (pReceiver)
- {
- std::string strTitle = quest->GetLogTitle();
+ if (!receiver)
+ return;
- LocaleConstant localeConstant = pReceiver->GetSession()->GetSessionDbLocaleIndex();
- if (localeConstant >= 0)
- if (QuestTemplateLocale const* questTemplateLocale = sObjectMgr->GetQuestLocale(quest->GetQuestId()))
- ObjectMgr::GetLocaleString(questTemplateLocale->LogTitle, localeConstant, strTitle);
+ std::string questTitle = quest->GetLogTitle();
+ uint32 questID = quest->GetQuestId();
- WorldPacket data(SMSG_QUEST_CONFIRM_ACCEPT, (4 + strTitle.size() + 8));
- data << uint32(quest->GetQuestId());
- data << strTitle;
- data << GetGUID();
- pReceiver->GetSession()->SendPacket(&data);
+ LocaleConstant localeConstant = receiver->GetSession()->GetSessionDbLocaleIndex();
+ if (localeConstant >= LOCALE_enUS)
+ if (QuestTemplateLocale const* questTemplateLocale = sObjectMgr->GetQuestLocale(questID))
+ ObjectMgr::GetLocaleString(questTemplateLocale->LogTitle, localeConstant, questTitle);
- TC_LOG_DEBUG("network", "WORLD: Sent SMSG_QUEST_CONFIRM_ACCEPT");
- }
+ WorldPackets::Quest::QuestConfirmAccept packet;
+ packet.QuestID = questID;
+ packet.InitiatedBy = GetGUID();
+ packet.QuestTitle = questTitle;
+
+ receiver->GetSession()->SendPacket(packet.Write());
+
+ TC_LOG_DEBUG("network", "WORLD: Sent SMSG_QUEST_CONFIRM_ACCEPT");
}
void Player::SendPushToPartyResponse(Player* player, uint8 msg)
diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h
index 1a650c509d6..1f7b2743705 100644
--- a/src/server/game/Entities/Player/Player.h
+++ b/src/server/game/Entities/Player/Player.h
@@ -1714,7 +1714,7 @@ class Player : public Unit, public GridObject<Player>
void SendQuestFailed(uint32 questId, InventoryResult reason = EQUIP_ERR_OK);
void SendQuestTimerFailed(uint32 questId);
void SendCanTakeQuestResponse(QuestFailedReason msg) const;
- void SendQuestConfirmAccept(Quest const* quest, Player* pReceiver);
+ void SendQuestConfirmAccept(Quest const* quest, Player* receiver);
void SendPushToPartyResponse(Player* player, uint8 msg);
void SendQuestUpdateAddCredit(Quest const* quest, ObjectGuid guid, QuestObjective const& obj, uint16 count);
void SendQuestUpdateAddPlayer(Quest const* quest, uint16 newCount, uint32 required);
diff --git a/src/server/game/Server/Packets/QuestPackets.cpp b/src/server/game/Server/Packets/QuestPackets.cpp
index 577099be70b..14546c54d8c 100644
--- a/src/server/game/Server/Packets/QuestPackets.cpp
+++ b/src/server/game/Server/Packets/QuestPackets.cpp
@@ -469,3 +469,15 @@ WorldPacket const* WorldPackets::Quest::QuestUpdateComplete::Write()
return &_worldPacket;
}
+
+WorldPacket const* WorldPackets::Quest::QuestConfirmAccept::Write()
+{
+ _worldPacket << uint32(QuestID);
+ _worldPacket << InitiatedBy;
+
+ _worldPacket.FlushBits();
+ _worldPacket.WriteBits(QuestTitle.size(), 10);
+ _worldPacket.WriteString(QuestTitle);
+
+ return &_worldPacket;
+}
diff --git a/src/server/game/Server/Packets/QuestPackets.h b/src/server/game/Server/Packets/QuestPackets.h
index 1409dc993f9..0943c482158 100644
--- a/src/server/game/Server/Packets/QuestPackets.h
+++ b/src/server/game/Server/Packets/QuestPackets.h
@@ -464,6 +464,18 @@ namespace WorldPackets
int32 QuestID = 0;
};
+
+ class QuestConfirmAccept final : public ServerPacket
+ {
+ public:
+ QuestConfirmAccept() : ServerPacket(SMSG_QUEST_CONFIRM_ACCEPT, 21) { }
+
+ WorldPacket const* Write() override;
+
+ ObjectGuid InitiatedBy;
+ int32 QuestID = 0;
+ std::string QuestTitle;
+ };
}
}
diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp
index 0d3abbb5436..48cce355d0e 100644
--- a/src/server/game/Server/Protocol/Opcodes.cpp
+++ b/src/server/game/Server/Protocol/Opcodes.cpp
@@ -1512,7 +1512,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_QUEST_INFO_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_TIME_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUEST_COMPLETION_NPC_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUEST_CONFIRM_ACCEPT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUEST_CONFIRM_ACCEPT, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUEST_FORCE_REMOVED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUEST_GIVER_INVALID_QUEST, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUEST_GIVER_OFFER_REWARD_MESSAGE, STATUS_NEVER, CONNECTION_TYPE_REALM);