Core: Updated to 11.0.7

Port From (https://github.com/TrinityCore/TrinityCore/commit/4f7079f471401d5cf7885351baabc027813f60f5)
This commit is contained in:
Hondacrx
2025-05-18 19:05:48 -04:00
parent 2448c07600
commit 5b992859d0
32 changed files with 1669 additions and 1429 deletions
+4 -4
View File
@@ -2576,10 +2576,10 @@ namespace Game.Entities
public void SetItemFlag(ItemFieldFlags flags) { SetUpdateFieldFlagValue(m_values.ModifyValue(m_itemData).ModifyValue(m_itemData.DynamicFlags), (uint)flags); }
public void RemoveItemFlag(ItemFieldFlags flags) { RemoveUpdateFieldFlagValue(m_values.ModifyValue(m_itemData).ModifyValue(m_itemData.DynamicFlags), (uint)flags); }
public void ReplaceAllItemFlags(ItemFieldFlags flags) { SetUpdateFieldValue(m_values.ModifyValue(m_itemData).ModifyValue(m_itemData.DynamicFlags), (uint)flags); }
public bool HasItemFlag2(ItemFieldFlags2 flag) { return (m_itemData.DynamicFlags2 & (uint)flag) != 0; }
public void SetItemFlag2(ItemFieldFlags2 flags) { SetUpdateFieldFlagValue(m_values.ModifyValue(m_itemData).ModifyValue(m_itemData.DynamicFlags2), (uint)flags); }
public void RemoveItemFlag2(ItemFieldFlags2 flags) { RemoveUpdateFieldFlagValue(m_values.ModifyValue(m_itemData).ModifyValue(m_itemData.DynamicFlags2), (uint)flags); }
public void ReplaceAllItemFlags2(ItemFieldFlags2 flags) { SetUpdateFieldValue(m_values.ModifyValue(m_itemData).ModifyValue(m_itemData.DynamicFlags2), (uint)flags); }
public bool HasItemZoneFlag(ItemZoneFlags flag) { return (m_itemData.ZoneFlags & (uint)flag) != 0; }
public void SetItemZoneFlag(ItemZoneFlags flags) { SetUpdateFieldFlagValue(m_values.ModifyValue(m_itemData).ModifyValue(m_itemData.ZoneFlags), (uint)flags); }
public void RemoveItemZoneFlag(ItemZoneFlags flags) { RemoveUpdateFieldFlagValue(m_values.ModifyValue(m_itemData).ModifyValue(m_itemData.ZoneFlags), (uint)flags); }
public void ReplaceAllItemZoneFlags(ItemZoneFlags flags) { SetUpdateFieldValue(m_values.ModifyValue(m_itemData).ModifyValue(m_itemData.ZoneFlags), (uint)flags); }
public Bag ToBag() { return IsBag() ? this as Bag : null; }
public AzeriteItem ToAzeriteItem() { return IsAzeriteItem() ? this as AzeriteItem : null; }
@@ -396,7 +396,7 @@ namespace Game.Entities
public UpdateField<ulong> ArtifactXP = new(0, 15);
public UpdateField<byte> ItemAppearanceModID = new(0, 16);
public UpdateField<ItemModList> Modifiers = new(0, 17);
public UpdateField<uint> DynamicFlags2 = new(0, 18);
public UpdateField<uint> ZoneFlags = new(0, 18);
public UpdateField<ItemBonusKey> ItemBonusKey = new(0, 19);
public UpdateField<ushort> DEBUGItemLevel = new(0, 20);
public UpdateFieldArray<int> SpellCharges = new(5, 21, 22);
@@ -441,7 +441,7 @@ namespace Game.Entities
data.WriteInt32(Gems.Size());
if (fieldVisibilityFlags.HasFlag(UpdateFieldFlag.Owner))
{
data.WriteUInt32(DynamicFlags2);
data.WriteUInt32(ZoneFlags);
}
ItemBonusKey.GetValue().Write(data);
if (fieldVisibilityFlags.HasFlag(UpdateFieldFlag.Owner))
@@ -584,7 +584,7 @@ namespace Game.Entities
}
if (changesMask[18])
{
data.WriteUInt32(DynamicFlags2);
data.WriteUInt32(ZoneFlags);
}
if (changesMask[19])
{
@@ -640,7 +640,7 @@ namespace Game.Entities
ClearChangesMask(ArtifactXP);
ClearChangesMask(ItemAppearanceModID);
ClearChangesMask(Modifiers);
ClearChangesMask(DynamicFlags2);
ClearChangesMask(ZoneFlags);
ClearChangesMask(ItemBonusKey);
ClearChangesMask(DEBUGItemLevel);
ClearChangesMask(SpellCharges);
@@ -4208,17 +4208,14 @@ namespace Game.Entities
public class QuestSession : HasChangesMask
{
public UpdateField<ObjectGuid> Owner = new(0, 1);
public UpdateFieldArray<ulong> QuestCompleted = new(1000, 2, 3);
public UpdateField<BitVector> QuestCompleted = new(0, 2);
public QuestSession() : base(1003) { }
public QuestSession() : base(3) { }
public void WriteCreate(WorldPacket data, Player owner, Player receiver)
{
data.WritePackedGuid(Owner);
for (int i = 0; i < 1000; ++i)
{
data.WriteUInt64(QuestCompleted[i]);
}
QuestCompleted.GetValue().WriteCreate(data, owner, receiver);
}
public void WriteUpdate(WorldPacket data, bool ignoreChangesMask, Player owner, Player receiver)
@@ -4227,10 +4224,7 @@ namespace Game.Entities
if (ignoreChangesMask)
changesMask.SetAll();
data.WriteBits(changesMask.GetBlocksMask(0), 32);
for (uint i = 0; i < 32; ++i)
if (changesMask.GetBlock(i) != 0)
data.WriteBits(changesMask.GetBlock(i), 32);
data.WriteBits(changesMask.GetBlock(0), 3);
data.FlushBits();
if (changesMask[0])
@@ -4239,15 +4233,10 @@ namespace Game.Entities
{
data.WritePackedGuid(Owner);
}
}
if (changesMask[2])
{
for (int i = 0; i < 1000; ++i)
if (changesMask[2])
{
if (changesMask[3 + i])
{
data.WriteUInt64(QuestCompleted[i]);
}
QuestCompleted.GetValue().WriteUpdate(data, ignoreChangesMask, owner, receiver);
}
}
}
+3 -3
View File
@@ -1508,7 +1508,7 @@ namespace Game.Entities
}
}
pItem.SetItemFlag2(ItemFieldFlags2.Equipped);
pItem.SetItemZoneFlag(ItemZoneFlags.Equipped);
if (IsInWorld && update)
{
@@ -1681,7 +1681,7 @@ namespace Game.Entities
byte slot = (byte)(pos & 255);
VisualizeItem(slot, pItem);
pItem.SetItemFlag2(ItemFieldFlags2.Equipped);
pItem.SetItemZoneFlag(ItemZoneFlags.Equipped);
if (IsInWorld)
{
@@ -1792,7 +1792,7 @@ namespace Game.Entities
_ApplyItemMods(pItem, slot, false, update);
pItem.RemoveItemFlag2(ItemFieldFlags2.Equipped);
pItem.RemoveItemZoneFlag(ItemZoneFlags.Equipped);
// remove item dependent auras and casts (only weapon and armor slots)
if (slot < ProfessionSlots.End)
+17 -8
View File
@@ -2420,15 +2420,22 @@ namespace Game.Entities
if (questBit == 0)
return;
uint fieldOffset = (uint)((questBit - 1) / ActivePlayerData.QuestCompletedBitsPerBlock);
if (fieldOffset >= ActivePlayerData.QuestCompletedBitsSize)
return;
int fieldOffset = (int)((questBit - 1) / ActivePlayerData.QuestCompletedBitsPerBlock);
ulong flag = 1ul << (((int)questBit - 1) % ActivePlayerData.QuestCompletedBitsPerBlock);
if (fieldOffset < ActivePlayerData.QuestCompletedBitsSize)
{
if (completed)
SetUpdateFieldFlagValue(ref m_values.ModifyValue(m_activePlayerData).ModifyValue(m_activePlayerData.QuestCompleted,fieldOffset), flag);
else
RemoveUpdateFieldFlagValue(ref m_values.ModifyValue(m_activePlayerData).ModifyValue(m_activePlayerData.QuestCompleted, fieldOffset), flag);
}
BitVectors bitVectors = m_values.ModifyValue(m_activePlayerData).ModifyValue(m_activePlayerData.BitVectors);
BitVector bitVector = bitVectors.ModifyValue(bitVectors.Values, (int)PlayerDataFlag.CharacterQuestCompletedIndex);
if (completed)
SetUpdateFieldFlagValue(ref m_values.ModifyValue(m_activePlayerData).ModifyValue(m_activePlayerData.QuestCompleted, (int)fieldOffset), flag);
SetUpdateFieldFlagValue(bitVector.ModifyValue(bitVector.Values, fieldOffset), flag);
else
RemoveUpdateFieldFlagValue(ref m_values.ModifyValue(m_activePlayerData).ModifyValue(m_activePlayerData.QuestCompleted, (int)fieldOffset), flag);
RemoveUpdateFieldFlagValue(bitVector.ModifyValue(bitVector.Values, fieldOffset), flag);
}
public void AreaExploredOrEventHappens(uint questId)
@@ -2857,7 +2864,8 @@ namespace Game.Entities
return objective;
}
return null;
};
}
;
QuestObjective objective = findObjectiveForItem((int)itemId);
if (objective != null)
@@ -2892,7 +2900,8 @@ namespace Game.Entities
return true;
return false;
};
}
;
bool hasObjectiveTypeForCurrency(QuestObjectiveType type) => m_questObjectiveStatus.LookupByKey((type, currencyId)).Any(isCompletableObjective);
if (hasObjectiveTypeForCurrency(QuestObjectiveType.Currency))
+13
View File
@@ -21,6 +21,11 @@ namespace Game.Entities
}
}
public static void UpdateHealth(VignetteData vignette, Unit owner)
{
vignette.HealthPercent = (float)(owner.GetHealth()) / (float)(owner.GetMaxHealth()); // converted to percentage in lua
}
public static void SendVignetteUpdate(VignetteData vignette, WorldObject owner)
{
if (!owner.IsInWorld)
@@ -72,6 +77,9 @@ namespace Game.Entities
vignette.Data = vignetteData;
vignette.ZoneID = owner.GetZoneId(); // not updateable
UpdatePosition(vignette, owner);
Unit unitOwner = owner.ToUnit();
if (unitOwner != null)
UpdateHealth(vignette, unitOwner);
if (vignetteData.IsInfiniteAOI())
owner.GetMap().AddInfiniteAOIVignette(vignette);
@@ -84,6 +92,9 @@ namespace Game.Entities
public static void Update(VignetteData vignette, WorldObject owner)
{
UpdatePosition(vignette, owner);
Unit unitOwner = owner.ToUnit();
if (unitOwner != null)
UpdateHealth(vignette, unitOwner);
if (vignette.Data.IsInfiniteAOI())
vignette.NeedUpdate = true;
@@ -129,6 +140,7 @@ namespace Game.Entities
public uint ZoneID;
public uint WMOGroupID;
public uint WMODoodadPlacementID;
public float HealthPercent = 1.0f;
public bool NeedUpdate;
public void FillPacket(VignetteDataSet dataSet)
@@ -142,6 +154,7 @@ namespace Game.Entities
data.ZoneID = ZoneID;
data.WMOGroupID = WMOGroupID;
data.WMODoodadPlacementID = WMODoodadPlacementID;
data.HealthPercent = HealthPercent;
dataSet.Data.Add(data);
}