aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Server
diff options
context:
space:
mode:
authorNoName <322016+Faq@users.noreply.github.com>2020-08-19 15:47:55 +0300
committerGitHub <noreply@github.com>2020-08-19 14:47:55 +0200
commit01c7663bdd771b54cbf65e9e3a158a2802ad12d2 (patch)
tree68864f3d7021907ca7d975de9132628968a13e7e /src/server/game/Server
parent515a34f64f200ea0fb9722914b76ab8abd358891 (diff)
Core/PacketIO: Update SMSG_QUESTGIVER_OFFER_REWARD (#25251)
Co-authored-by: Carbenium <carbenium@outlook.com>
Diffstat (limited to 'src/server/game/Server')
-rw-r--r--src/server/game/Server/Packets/QuestPackets.cpp60
-rw-r--r--src/server/game/Server/Packets/QuestPackets.h18
-rw-r--r--src/server/game/Server/Protocol/Opcodes.cpp2
-rw-r--r--src/server/game/Server/Protocol/Opcodes.h2
4 files changed, 80 insertions, 2 deletions
diff --git a/src/server/game/Server/Packets/QuestPackets.cpp b/src/server/game/Server/Packets/QuestPackets.cpp
index 9bad6dd5b7b..eb937f8052f 100644
--- a/src/server/game/Server/Packets/QuestPackets.cpp
+++ b/src/server/game/Server/Packets/QuestPackets.cpp
@@ -184,3 +184,63 @@ WorldPacket const* WorldPackets::Quest::QuestGiverQuestDetails::Write()
return &_worldPacket;
}
+
+WorldPacket const* WorldPackets::Quest::QuestGiverOfferRewardMessage::Write()
+{
+ _worldPacket << QuestGiverGUID;
+ _worldPacket << uint32(QuestID);
+
+ _worldPacket << Title;
+ _worldPacket << RewardText;
+
+ _worldPacket << uint8(AutoLaunched);
+ _worldPacket << uint32(Flags);
+ _worldPacket << uint32(SuggestedGroupNum);
+
+ _worldPacket << uint32(Emotes.size());
+ for (WorldPackets::Quest::QuestDescEmote const& emote : Emotes)
+ {
+ _worldPacket << uint32(emote.Delay);
+ _worldPacket << uint32(emote.Type);
+ }
+
+ _worldPacket << uint32(Rewards.UnfilteredChoiceItems.size());
+ for (WorldPackets::Quest::QuestChoiceItem const& item : Rewards.UnfilteredChoiceItems)
+ {
+ _worldPacket << uint32(item.ItemID);
+ _worldPacket << uint32(item.Quantity);
+ _worldPacket << uint32(item.DisplayID);
+ }
+
+ _worldPacket << uint32(Rewards.RewardItems.size());
+ for (WorldPackets::Quest::QuestChoiceItem const& item : Rewards.RewardItems)
+ {
+ _worldPacket << uint32(item.ItemID);
+ _worldPacket << uint32(item.Quantity);
+ _worldPacket << uint32(item.DisplayID);
+ }
+
+ _worldPacket << uint32(Rewards.RewardMoney);
+ _worldPacket << uint32(Rewards.RewardXPDifficulty);
+
+ _worldPacket << uint32(Rewards.RewardHonor);
+ _worldPacket << float(Rewards.RewardKillHonor);
+ _worldPacket << uint32(0); // Unknown value. Read in the packet handler but unused
+ _worldPacket << uint32(Rewards.RewardDisplaySpell);
+ _worldPacket << int32(Rewards.RewardSpell);
+ _worldPacket << uint32(Rewards.RewardTitleId);
+ _worldPacket << uint32(Rewards.RewardTalents);
+ _worldPacket << uint32(Rewards.RewardArenaPoints);
+ _worldPacket << uint32(Rewards.RewardFactionFlags);
+
+ for (uint32 factionId : Rewards.RewardFactionID)
+ _worldPacket << uint32(factionId);
+
+ for (uint32 value : Rewards.RewardFactionValue)
+ _worldPacket << int32(value);
+
+ for (uint32 valueOverride : Rewards.RewardFactionValueOverride)
+ _worldPacket << int32(valueOverride);
+
+ return &_worldPacket;
+}
diff --git a/src/server/game/Server/Packets/QuestPackets.h b/src/server/game/Server/Packets/QuestPackets.h
index 1d7248e7d82..073ff6138e6 100644
--- a/src/server/game/Server/Packets/QuestPackets.h
+++ b/src/server/game/Server/Packets/QuestPackets.h
@@ -166,6 +166,24 @@ namespace WorldPackets
QuestRewards Rewards;
std::vector<QuestDescEmote> DescEmotes;
};
+
+ class QuestGiverOfferRewardMessage final : public ServerPacket
+ {
+ public:
+ QuestGiverOfferRewardMessage() : ServerPacket(SMSG_QUEST_GIVER_OFFER_REWARD_MESSAGE, 600) { }
+
+ WorldPacket const* Write() override;
+
+ ObjectGuid QuestGiverGUID;
+ uint32 QuestID = 0;
+ std::string Title;
+ std::string RewardText;
+ bool AutoLaunched = false;
+ uint32 Flags = 0;
+ uint32 SuggestedGroupNum = 0;
+ std::vector<QuestDescEmote> Emotes;
+ QuestRewards Rewards;
+ };
}
}
diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp
index a10e2af8f03..33d7e334de1 100644
--- a/src/server/game/Server/Protocol/Opcodes.cpp
+++ b/src/server/game/Server/Protocol/Opcodes.cpp
@@ -525,7 +525,7 @@ void OpcodeTable::Initialize()
/*0x18A*/ DEFINE_HANDLER(CMSG_QUESTGIVER_COMPLETE_QUEST, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleQuestgiverCompleteQuest );
/*0x18B*/ DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUESTGIVER_REQUEST_ITEMS, STATUS_NEVER);
/*0x18C*/ DEFINE_HANDLER(CMSG_QUESTGIVER_REQUEST_REWARD, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleQuestgiverRequestRewardOpcode);
- /*0x18D*/ DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUESTGIVER_OFFER_REWARD, STATUS_NEVER);
+ /*0x18D*/ DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUEST_GIVER_OFFER_REWARD_MESSAGE, STATUS_NEVER);
/*0x18E*/ DEFINE_HANDLER(CMSG_QUESTGIVER_CHOOSE_REWARD, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleQuestgiverChooseRewardOpcode);
/*0x18F*/ DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUESTGIVER_QUEST_INVALID, STATUS_NEVER);
/*0x190*/ DEFINE_HANDLER(CMSG_QUESTGIVER_CANCEL, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleQuestgiverCancel );
diff --git a/src/server/game/Server/Protocol/Opcodes.h b/src/server/game/Server/Protocol/Opcodes.h
index f5fdcb6e091..61f6c89ea9d 100644
--- a/src/server/game/Server/Protocol/Opcodes.h
+++ b/src/server/game/Server/Protocol/Opcodes.h
@@ -423,7 +423,7 @@ enum Opcodes : uint16
CMSG_QUESTGIVER_COMPLETE_QUEST = 0x18A,
SMSG_QUESTGIVER_REQUEST_ITEMS = 0x18B,
CMSG_QUESTGIVER_REQUEST_REWARD = 0x18C,
- SMSG_QUESTGIVER_OFFER_REWARD = 0x18D,
+ SMSG_QUEST_GIVER_OFFER_REWARD_MESSAGE = 0x18D,
CMSG_QUESTGIVER_CHOOSE_REWARD = 0x18E,
SMSG_QUESTGIVER_QUEST_INVALID = 0x18F,
CMSG_QUESTGIVER_CANCEL = 0x190,