From 9961b71f17381ae059e31444afcb8570b17ec48f Mon Sep 17 00:00:00 2001 From: hondacrx Date: Mon, 18 Jul 2022 22:07:17 -0400 Subject: [PATCH] Core/Players: Cleaned some old updatefield definitions and updated values for completed quests size Port From (https://github.com/TrinityCore/TrinityCore/commit/26d757946f4e26397930e2d8733c0b1c7f76d0a6) --- Source/Game/Entities/Object/Update/UpdateFields.cs | 5 +++++ Source/Game/Entities/Player/Player.Quest.cs | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/Source/Game/Entities/Object/Update/UpdateFields.cs b/Source/Game/Entities/Object/Update/UpdateFields.cs index ba32f4324..65240bfe0 100644 --- a/Source/Game/Entities/Object/Update/UpdateFields.cs +++ b/Source/Game/Entities/Object/Update/UpdateFields.cs @@ -3471,6 +3471,8 @@ namespace Game.Entities { public static int ExploredZonesSize; public static int ExploredZonesBits; + public static int QuestCompletedBitsSize; + public static int QuestCompletedBitsPerBlock; public UpdateField BackpackAutoSortDisabled = new(0, 1); public UpdateField BankAutoSortDisabled = new(0, 2); @@ -3602,6 +3604,9 @@ namespace Game.Entities { ExploredZonesSize = ExploredZones.GetSize(); ExploredZonesBits = sizeof(ulong) * 8; + + QuestCompletedBitsSize = QuestCompleted.GetSize(); + QuestCompletedBitsPerBlock = sizeof(ulong) * 8; } public void WriteCreate(WorldPacket data, UpdateFieldFlag fieldVisibilityFlags, Player owner, Player receiver) diff --git a/Source/Game/Entities/Player/Player.Quest.cs b/Source/Game/Entities/Player/Player.Quest.cs index 648dc9797..20948d6cb 100644 --- a/Source/Game/Entities/Player/Player.Quest.cs +++ b/Source/Game/Entities/Player/Player.Quest.cs @@ -2218,11 +2218,11 @@ namespace Game.Entities if (questBit == 0) return; - uint fieldOffset = (questBit - 1) >> 6; + uint fieldOffset = (questBit - 1) >> ActivePlayerData.QuestCompletedBitsPerBlock; if (fieldOffset >= PlayerConst.QuestsCompletedBitsSize) return; - ulong flag = 1ul << (((int)questBit - 1) & 63); + ulong flag = 1ul << (((int)questBit - 1) % ActivePlayerData.QuestCompletedBitsPerBlock); if (completed) SetUpdateFieldFlagValue(ref m_values.ModifyValue(m_activePlayerData).ModifyValue(m_activePlayerData.QuestCompleted, (int)fieldOffset), flag); else