diff options
| author | NoName <322016+Faq@users.noreply.github.com> | 2020-08-19 15:47:55 +0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-08-19 14:47:55 +0200 |
| commit | 01c7663bdd771b54cbf65e9e3a158a2802ad12d2 (patch) | |
| tree | 68864f3d7021907ca7d975de9132628968a13e7e /src/server/game/Server/Packets | |
| parent | 515a34f64f200ea0fb9722914b76ab8abd358891 (diff) | |
Core/PacketIO: Update SMSG_QUESTGIVER_OFFER_REWARD (#25251)
Co-authored-by: Carbenium <carbenium@outlook.com>
Diffstat (limited to 'src/server/game/Server/Packets')
| -rw-r--r-- | src/server/game/Server/Packets/QuestPackets.cpp | 60 | ||||
| -rw-r--r-- | src/server/game/Server/Packets/QuestPackets.h | 18 |
2 files changed, 78 insertions, 0 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; + }; } } |
