diff --git a/src/server/game/Entities/Creature/GossipDef.cpp b/src/server/game/Entities/Creature/GossipDef.cpp index 69e7b64611..8521cca8ae 100644 --- a/src/server/game/Entities/Creature/GossipDef.cpp +++ b/src/server/game/Entities/Creature/GossipDef.cpp @@ -758,10 +758,13 @@ void PlayerMenu::SendQuestGiverRequestItems(Quest const* quest, ObjectGuid npcGU packet.Currency.emplace_back(quest->RequiredCurrencyId[i], quest->RequiredCurrencyCount[i]); } - // incomplete: FD - // incomplete quest with item objective but item objective is complete DD - // To-do: validate this. 4.3.4 the packet parser reads this flag as 6 seperate values which seems a bit odd for a bitmask based flag - packet.StatusFlags = canComplete ? 0xFF : 0xFD; + // incomplete: 0 + // complete : 2 + packet.StatusFlags[0] = canComplete ? 0x2 : 0x0; + packet.StatusFlags[1] = 0x4; + packet.StatusFlags[2] = 0x8; + packet.StatusFlags[3] = 0x10; + packet.StatusFlags[4] = 0x40; _session->SendPacket(packet.Write()); TC_LOG_DEBUG("network", "WORLD: Sent SMSG_QUEST_GIVER_REQUEST_ITEMS NPC=%s, questid=%u", npcGUID.ToString().c_str(), quest->GetQuestId()); diff --git a/src/server/game/Server/Packets/QuestPackets.cpp b/src/server/game/Server/Packets/QuestPackets.cpp index 0a3bd17e69..7cb596d8a1 100644 --- a/src/server/game/Server/Packets/QuestPackets.cpp +++ b/src/server/game/Server/Packets/QuestPackets.cpp @@ -47,7 +47,8 @@ WorldPacket const* WorldPackets::Quest::QuestGiverRequestItems::Write() _worldPacket << uint32(cur.Amount); } - _worldPacket << uint32(StatusFlags); + for (uint8 i = 0; i < 5; i++) + _worldPacket << uint32(StatusFlags[i]); return &_worldPacket; } diff --git a/src/server/game/Server/Packets/QuestPackets.h b/src/server/game/Server/Packets/QuestPackets.h index 5c94cbe133..e0d6ee75ce 100644 --- a/src/server/game/Server/Packets/QuestPackets.h +++ b/src/server/game/Server/Packets/QuestPackets.h @@ -57,7 +57,7 @@ namespace WorldPackets uint32 MoneyToGet = 0; std::vector Collect; std::vector Currency; - uint32 StatusFlags = 0; + uint32 StatusFlags[5] = { }; uint32 QuestFlags = 0; std::string QuestTitle; std::string CompletionText;