diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Server/Packets/QuestPackets.cpp | 250 | ||||
-rw-r--r-- | src/server/game/Server/Packets/QuestPackets.h | 13 | ||||
-rw-r--r-- | src/server/game/Server/Protocol/Opcodes.cpp | 4 |
3 files changed, 142 insertions, 125 deletions
diff --git a/src/server/game/Server/Packets/QuestPackets.cpp b/src/server/game/Server/Packets/QuestPackets.cpp index bd4a171d0bc..803da693c95 100644 --- a/src/server/game/Server/Packets/QuestPackets.cpp +++ b/src/server/game/Server/Packets/QuestPackets.cpp @@ -25,7 +25,7 @@ void WorldPackets::Quest::QuestGiverStatusQuery::Read() WorldPacket const* WorldPackets::Quest::QuestGiverStatus::Write() { _worldPacket << QuestGiver.Guid; - _worldPacket << QuestGiver.Status; + _worldPacket << uint32(QuestGiver.Status); return &_worldPacket; } @@ -36,7 +36,7 @@ WorldPacket const* WorldPackets::Quest::QuestGiverStatusMultiple::Write() for (QuestGiverInfo const& questGiver : QuestGiver) { _worldPacket << questGiver.Guid; - _worldPacket << questGiver.Status; + _worldPacket << uint32(questGiver.Status); } return &_worldPacket; @@ -55,102 +55,102 @@ void WorldPackets::Quest::QueryQuestInfo::Read() WorldPacket const* WorldPackets::Quest::QueryQuestInfoResponse::Write() { - _worldPacket << QuestID; + _worldPacket << uint32(QuestID); _worldPacket.WriteBit(Allow); _worldPacket.FlushBits(); if (Allow) { - _worldPacket << Info.QuestID; - _worldPacket << Info.QuestType; - _worldPacket << Info.QuestLevel; - _worldPacket << Info.QuestPackageID; - _worldPacket << Info.QuestMinLevel; - _worldPacket << Info.QuestSortID; - _worldPacket << Info.QuestInfoID; - _worldPacket << Info.SuggestedGroupNum; - _worldPacket << Info.RewardNextQuest; - _worldPacket << Info.RewardXPDifficulty; - _worldPacket << Info.RewardXPMultiplier; - _worldPacket << Info.RewardMoney; - _worldPacket << Info.RewardMoneyDifficulty; - _worldPacket << Info.RewardMoneyMultiplier; - _worldPacket << Info.RewardBonusMoney; - _worldPacket << Info.RewardDisplaySpell; - _worldPacket << Info.RewardSpell; - _worldPacket << Info.RewardHonor; - _worldPacket << Info.RewardKillHonor; - _worldPacket << Info.StartItem; - _worldPacket << Info.Flags; - _worldPacket << Info.FlagsEx; + _worldPacket << int32(Info.QuestID); + _worldPacket << int32(Info.QuestType); + _worldPacket << int32(Info.QuestLevel); + _worldPacket << int32(Info.QuestPackageID); + _worldPacket << int32(Info.QuestMinLevel); + _worldPacket << int32(Info.QuestSortID); + _worldPacket << int32(Info.QuestInfoID); + _worldPacket << int32(Info.SuggestedGroupNum); + _worldPacket << int32(Info.RewardNextQuest); + _worldPacket << int32(Info.RewardXPDifficulty); + _worldPacket << float(Info.RewardXPMultiplier); + _worldPacket << int32(Info.RewardMoney); + _worldPacket << int32(Info.RewardMoneyDifficulty); + _worldPacket << float(Info.RewardMoneyMultiplier); + _worldPacket << int32(Info.RewardBonusMoney); + _worldPacket << int32(Info.RewardDisplaySpell); + _worldPacket << int32(Info.RewardSpell); + _worldPacket << int32(Info.RewardHonor); + _worldPacket << float(Info.RewardKillHonor); + _worldPacket << int32(Info.StartItem); + _worldPacket << uint32(Info.Flags); + _worldPacket << uint32(Info.FlagsEx); for (uint32 i = 0; i < QUEST_REWARD_ITEM_COUNT; ++i) { - _worldPacket << Info.RewardItems[i]; - _worldPacket << Info.RewardAmount[i]; - _worldPacket << Info.ItemDrop[i]; - _worldPacket << Info.ItemDropQuantity[i]; + _worldPacket << int32(Info.RewardItems[i]); + _worldPacket << int32(Info.RewardAmount[i]); + _worldPacket << int32(Info.ItemDrop[i]); + _worldPacket << int32(Info.ItemDropQuantity[i]); } for (uint32 i = 0; i < QUEST_REWARD_CHOICES_COUNT; ++i) { - _worldPacket << Info.UnfilteredChoiceItems[i].ItemID; - _worldPacket << Info.UnfilteredChoiceItems[i].Quantity; - _worldPacket << Info.UnfilteredChoiceItems[i].DisplayID; + _worldPacket << int32(Info.UnfilteredChoiceItems[i].ItemID); + _worldPacket << int32(Info.UnfilteredChoiceItems[i].Quantity); + _worldPacket << int32(Info.UnfilteredChoiceItems[i].DisplayID); } - _worldPacket << Info.POIContinent; - _worldPacket << Info.POIx; - _worldPacket << Info.POIy; - _worldPacket << Info.POIPriority; + _worldPacket << int32(Info.POIContinent); + _worldPacket << float(Info.POIx); + _worldPacket << float(Info.POIy); + _worldPacket << int32(Info.POIPriority); - _worldPacket << Info.RewardTitle; - _worldPacket << Info.RewardTalents; - _worldPacket << Info.RewardArenaPoints; - _worldPacket << Info.RewardSkillLineID; - _worldPacket << Info.RewardNumSkillUps; + _worldPacket << int32(Info.RewardTitle); + _worldPacket << int32(Info.RewardTalents); + _worldPacket << int32(Info.RewardArenaPoints); + _worldPacket << int32(Info.RewardSkillLineID); + _worldPacket << int32(Info.RewardNumSkillUps); - _worldPacket << Info.PortraitGiver; - _worldPacket << Info.PortraitTurnIn; + _worldPacket << int32(Info.PortraitGiver); + _worldPacket << int32(Info.PortraitTurnIn); for (uint32 i = 0; i < QUEST_REWARD_REPUTATIONS_COUNT; ++i) { - _worldPacket << Info.RewardFactionID[i]; - _worldPacket << Info.RewardFactionValue[i]; - _worldPacket << Info.RewardFactionOverride[i]; + _worldPacket << int32(Info.RewardFactionID[i]); + _worldPacket << int32(Info.RewardFactionValue[i]); + _worldPacket << int32(Info.RewardFactionOverride[i]); } - _worldPacket << Info.RewardFactionFlags; + _worldPacket << int32(Info.RewardFactionFlags); for (uint32 i = 0; i < QUEST_REWARD_CURRENCY_COUNT; ++i) { - _worldPacket << Info.RewardCurrencyID[i]; - _worldPacket << Info.RewardCurrencyQty[i]; + _worldPacket << int32(Info.RewardCurrencyID[i]); + _worldPacket << int32(Info.RewardCurrencyQty[i]); } - _worldPacket << Info.AcceptedSoundKitID; - _worldPacket << Info.CompleteSoundKitID; + _worldPacket << int32(Info.AcceptedSoundKitID); + _worldPacket << int32(Info.CompleteSoundKitID); - _worldPacket << Info.AreaGroupID; - _worldPacket << Info.TimeAllowed; + _worldPacket << int32(Info.AreaGroupID); + _worldPacket << int32(Info.TimeAllowed); _worldPacket << int32(Info.Objectives.size()); _worldPacket << int32(Info.AllowableRaces); for (QuestObjective const& questObjective : Info.Objectives) { - _worldPacket << questObjective.ID; - _worldPacket << questObjective.Type; - _worldPacket << questObjective.StorageIndex; - _worldPacket << questObjective.ObjectID; - _worldPacket << questObjective.Amount; - _worldPacket << questObjective.Flags; - _worldPacket << questObjective.UnkFloat; + _worldPacket << uint32(questObjective.ID); + _worldPacket << uint8(questObjective.Type); + _worldPacket << int8(questObjective.StorageIndex); + _worldPacket << int32(questObjective.ObjectID); + _worldPacket << int32(questObjective.Amount); + _worldPacket << uint32(questObjective.Flags); + _worldPacket << float(questObjective.UnkFloat); _worldPacket << int32(questObjective.VisualEffects.size()); for (int32 visualEffect : questObjective.VisualEffects) - _worldPacket << visualEffect; + _worldPacket << int32(visualEffect); _worldPacket.WriteBits(questObjective.Description.size(), 8); _worldPacket.FlushBits(); @@ -186,15 +186,23 @@ WorldPacket const* WorldPackets::Quest::QueryQuestInfoResponse::Write() WorldPacket const* WorldPackets::Quest::QuestUpdateAddCredit::Write() { _worldPacket << VictimGUID; - _worldPacket << QuestID; - _worldPacket << ObjectID; - _worldPacket << Count; - _worldPacket << Required; - _worldPacket << ObjectiveType; + _worldPacket << int32(QuestID); + _worldPacket << int32(ObjectID); + _worldPacket << uint16(Count); + _worldPacket << uint16(Required); + _worldPacket << uint8(ObjectiveType); return &_worldPacket; }; +WorldPacket const* WorldPackets::Quest::QuestUpdateAddPvPCredit::Write() +{ + _worldPacket << int32(QuestID); + _worldPacket << uint16(Count); + + return &_worldPacket; +} + ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Quest::QuestRewards const& questRewards) { data << questRewards.ChoiceItemCount; @@ -247,18 +255,18 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Quest::QuestRewards const ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Quest::QuestGiverOfferReward const& offer) { data << offer.QuestGiverGUID; - data << offer.QuestGiverCreatureID; - data << offer.QuestID; - data << offer.QuestFlags[0]; // Flags - data << offer.QuestFlags[1]; // FlagsEx - data << offer.SuggestedPartyMembers; + data << int32(offer.QuestGiverCreatureID); + data << int32(offer.QuestID); + data << int32(offer.QuestFlags[0]); // Flags + data << int32(offer.QuestFlags[1]); // FlagsEx + data << int32(offer.SuggestedPartyMembers); data << offer.Rewards; // WorldPackets::Quest::QuestRewards data << int32(offer.Emotes.size()); for (WorldPackets::Quest::QuestDescEmote const& emote : offer.Emotes) { - data << emote.Type; - data << emote.Delay; + data << int32(emote.Type); + data << uint32(emote.Delay); } data.WriteBit(offer.AutoLaunched); @@ -270,9 +278,9 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Quest::QuestGiverOfferRew WorldPacket const* WorldPackets::Quest::QuestGiverOfferRewardMessage::Write() { _worldPacket << QuestData; // WorldPackets::Quest::QuestGiverOfferReward - _worldPacket << PortraitTurnIn; - _worldPacket << PortraitGiver; - _worldPacket << QuestPackageID; + _worldPacket << int32(PortraitTurnIn); + _worldPacket << int32(PortraitGiver); + _worldPacket << int32(QuestPackageID); _worldPacket.WriteBits(QuestTitle.size(), 9); _worldPacket.WriteBits(RewardText.size(), 12); @@ -301,13 +309,13 @@ void WorldPackets::Quest::QuestGiverChooseReward::Read() WorldPacket const* WorldPackets::Quest::QuestGiverQuestComplete::Write() { - _worldPacket << QuestID; - _worldPacket << SkillLineIDReward; - _worldPacket << MoneyReward; - _worldPacket << NumSkillUpsReward; - _worldPacket << XPReward; - _worldPacket << TalentReward; - _worldPacket << ItemReward; // WorldPackets::Item::ItemInstance + _worldPacket << int32(QuestID); + _worldPacket << int32(SkillLineIDReward); + _worldPacket << int32(MoneyReward); + _worldPacket << int32(NumSkillUpsReward); + _worldPacket << int32(XPReward); + _worldPacket << int32(TalentReward); + _worldPacket << ItemReward; _worldPacket.WriteBit(UseQuestReward); _worldPacket.WriteBit(LaunchGossip); @@ -327,33 +335,33 @@ WorldPacket const* WorldPackets::Quest::QuestGiverQuestDetails::Write() { _worldPacket << QuestGiverGUID; _worldPacket << InformUnit; - _worldPacket << QuestID; - _worldPacket << QuestPackageID; - _worldPacket << PortraitGiver; - _worldPacket << SuggestedPartyMembers; - _worldPacket << QuestFlags[0]; // Flags - _worldPacket << QuestFlags[1]; // FlagsEx - _worldPacket << PortraitTurnIn; + _worldPacket << int32(QuestID); + _worldPacket << int32(QuestPackageID); + _worldPacket << int32(PortraitGiver); + _worldPacket << int32(SuggestedPartyMembers); + _worldPacket << uint32(QuestFlags[0]); // Flags + _worldPacket << uint32(QuestFlags[1]); // FlagsEx + _worldPacket << int32(PortraitTurnIn); _worldPacket << int32(LearnSpells.size()); _worldPacket << Rewards; // WorldPackets::Quest::QuestRewards _worldPacket << int32(DescEmotes.size()); _worldPacket << int32(Objectives.size()); for (int32 spell : LearnSpells) - _worldPacket << spell; + _worldPacket << int32(spell); for (WorldPackets::Quest::QuestDescEmote const& emote : DescEmotes) { - _worldPacket << emote.Type; - _worldPacket << emote.Delay; + _worldPacket << int32(emote.Type); + _worldPacket << uint32(emote.Delay); } for (WorldPackets::Quest::QuestObjectiveSimple const& obj : Objectives) { - _worldPacket << obj.ID; - _worldPacket << obj.ObjectID; - _worldPacket << obj.Amount; - _worldPacket << obj.Type; + _worldPacket << int32(obj.ID); + _worldPacket << int32(obj.ObjectID); + _worldPacket << int32(obj.Amount); + _worldPacket << uint8(obj.Type); } _worldPacket.WriteBits(QuestTitle.size(), 9); @@ -382,28 +390,28 @@ WorldPacket const* WorldPackets::Quest::QuestGiverQuestDetails::Write() WorldPacket const* WorldPackets::Quest::QuestGiverRequestItems::Write() { _worldPacket << QuestGiverGUID; - _worldPacket << QuestGiverCreatureID; - _worldPacket << QuestID; - _worldPacket << CompEmoteDelay; - _worldPacket << CompEmoteType; - _worldPacket << QuestFlags[0]; - _worldPacket << QuestFlags[1]; - _worldPacket << SuggestPartyMembers; - _worldPacket << MoneyToGet; + _worldPacket << int32(QuestGiverCreatureID); + _worldPacket << int32(QuestID); + _worldPacket << int32(CompEmoteDelay); + _worldPacket << int32(CompEmoteType); + _worldPacket << uint32(QuestFlags[0]); + _worldPacket << uint32(QuestFlags[1]); + _worldPacket << int32(SuggestPartyMembers); + _worldPacket << int32(MoneyToGet); _worldPacket << int32(Collect.size()); _worldPacket << int32(Currency.size()); - _worldPacket << StatusFlags; + _worldPacket << int32(StatusFlags); for (QuestObjectiveCollect const& obj : Collect) { - _worldPacket << obj.ObjectID; - _worldPacket << obj.Amount; + _worldPacket << int32(obj.ObjectID); + _worldPacket << int32(obj.Amount); } for (QuestCurrency const& cur : Currency) { - _worldPacket << cur.CurrencyID; - _worldPacket << cur.Amount; + _worldPacket << int32(cur.CurrencyID); + _worldPacket << int32(cur.Amount); } _worldPacket.WriteBit(AutoLaunched); @@ -447,16 +455,16 @@ void WorldPackets::Quest::QuestLogRemoveQuest::Read() WorldPacket const* WorldPackets::Quest::QuestGiverQuestList::Write() { _worldPacket << QuestGiverGUID; - _worldPacket << GreetEmoteDelay; - _worldPacket << GreetEmoteType; + _worldPacket << uint32(GreetEmoteDelay); + _worldPacket << uint32(GreetEmoteType); _worldPacket << uint32(GossipTexts.size()); for (GossipTextData const& gossip : GossipTexts) { - _worldPacket << gossip.QuestID; - _worldPacket << gossip.QuestType; - _worldPacket << gossip.QuestLevel; - _worldPacket << gossip.QuestFlags; - _worldPacket << gossip.QuestFlagsEx; + _worldPacket << uint32(gossip.QuestID); + _worldPacket << uint32(gossip.QuestType); + _worldPacket << uint32(gossip.QuestLevel); + _worldPacket << uint32(gossip.QuestFlags); + _worldPacket << uint32(gossip.QuestFlagsEx); _worldPacket.WriteBit(gossip.Repeatable); _worldPacket.WriteBits(gossip.QuestTitle.size(), 9); _worldPacket.FlushBits(); @@ -512,7 +520,7 @@ void WorldPackets::Quest::QuestPushResult::Read() WorldPacket const* WorldPackets::Quest::QuestGiverInvalidQuest::Write() { - _worldPacket << Reason; + _worldPacket << uint32(Reason); _worldPacket.WriteBit(SendErrorMessage); _worldPacket.WriteBits(ReasonText.length(), 9); @@ -526,15 +534,15 @@ WorldPacket const* WorldPackets::Quest::QuestGiverInvalidQuest::Write() WorldPacket const* WorldPackets::Quest::QuestUpdateFailedTimer::Write() { - _worldPacket << QuestID; + _worldPacket << uint32(QuestID); return &_worldPacket; } WorldPacket const* WorldPackets::Quest::QuestGiverQuestFailed::Write() { - _worldPacket << QuestID; - _worldPacket << Reason; + _worldPacket << uint32(QuestID); + _worldPacket << uint32(Reason); return &_worldPacket; } diff --git a/src/server/game/Server/Packets/QuestPackets.h b/src/server/game/Server/Packets/QuestPackets.h index c2a54bb8ddc..b321b4076a5 100644 --- a/src/server/game/Server/Packets/QuestPackets.h +++ b/src/server/game/Server/Packets/QuestPackets.h @@ -194,6 +194,17 @@ namespace WorldPackets uint8 ObjectiveType = 0; }; + class QuestUpdateAddPvPCredit final : public ServerPacket + { + public: + QuestUpdateAddPvPCredit() : ServerPacket(SMSG_QUEST_UPDATE_ADD_PVP_CREDIT, 4 + 2) { } + + WorldPacket const* Write() override; + + int32 QuestID = 0; + uint16 Count = 0; + }; + struct QuestChoiceItem { int32 ItemID = 0; @@ -288,8 +299,6 @@ namespace WorldPackets int32 QuestID = 0; int32 TalentReward = 0; bool LaunchGossip = 0; - - // Not in JAM struct WorldPackets::Item::ItemInstance ItemReward; }; diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp index e8f924ced63..5c446a29401 100644 --- a/src/server/game/Server/Protocol/Opcodes.cpp +++ b/src/server/game/Server/Protocol/Opcodes.cpp @@ -1491,8 +1491,8 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUEST_POI_QUERY_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUEST_PUSH_RESULT, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUEST_UPDATE_ADD_CREDIT, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUEST_UPDATE_ADD_CREDIT_SIMPLE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUEST_UPDATE_ADD_PVP_CREDIT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUEST_UPDATE_ADD_CREDIT_SIMPLE, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUEST_UPDATE_ADD_PVP_CREDIT, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUEST_UPDATE_COMPLETE, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUEST_UPDATE_FAILED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUEST_UPDATE_FAILED_TIMER, STATUS_NEVER, CONNECTION_TYPE_REALM); |