Core/Players: Defined all avg item level slots

Port From (https://github.com/TrinityCore/TrinityCore/commit/3f85fa7470789dbaedac5f3d74d00e1095e24ad1)
This commit is contained in:
Hondacrx
2024-08-25 14:05:11 -04:00
parent d1c25fbf05
commit edb6934082
7 changed files with 42 additions and 15 deletions
+18 -4
View File
@@ -6551,7 +6551,7 @@ namespace Game.Entities
public void UpdateAverageItemLevelTotal()
{
(InventoryType inventoryType, uint itemLevel, ObjectGuid guid)[] bestItemLevels = new (InventoryType inventoryType, uint itemLevel, ObjectGuid guid)[EquipmentSlot.End];
var bestItemLevels = new (InventoryType inventoryType, uint itemLevel, ObjectGuid guid)[EquipmentSlot.End];
float sum = 0;
ForEachItem(ItemSearchLocation.Everywhere, item =>
@@ -6602,26 +6602,40 @@ namespace Game.Entities
sum += mainHand.itemLevel;
sum /= 16.0f;
SetAverageItemLevelTotal(sum);
SetAverageItemLevel(sum, AvgItemLevelCategory.Base);
}
public void UpdateAverageItemLevelEquipped()
{
float totalItemLevel = 0;
float totalItemLevelEffective = 0;
for (byte i = EquipmentSlot.Start; i < EquipmentSlot.End; i++)
{
Item item = GetItemByPos(InventorySlots.Bag0, i);
if (item != null)
{
uint itemLevel = item.GetItemLevel(this);
uint azeriteLevel = 0;
AzeriteItem azeriteItem = item.ToAzeriteItem();
if (azeriteItem != null)
azeriteLevel = azeriteItem.GetEffectiveLevel();
uint itemLevel = Item.GetItemLevel(item.GetTemplate(), item.GetBonus(), GetLevel(), item.GetModifier(ItemModifier.TimewalkerLevel), 0, 0, 0, false, azeriteLevel);
uint itemLevelEffective = Item.GetItemLevel(item.GetTemplate(), item.GetBonus(), GetEffectiveLevel(), item.GetModifier(ItemModifier.TimewalkerLevel), m_unitData.MinItemLevel,
m_unitData.MinItemLevelCutoff, IsUsingPvpItemLevels() && item.GetTemplate().HasFlag(ItemFlags3.IgnoreItemLevelCapInPvp) ? 0 : m_unitData.MaxItemLevel, IsUsingPvpItemLevels(), azeriteLevel);
totalItemLevel += itemLevel;
totalItemLevelEffective += itemLevelEffective;
if (!m_canTitanGrip && i == EquipmentSlot.MainHand && item.GetTemplate().GetInventoryType() == InventoryType.Weapon2Hand) // 2h weapon counts twice
{
totalItemLevel += itemLevel;
totalItemLevelEffective += itemLevelEffective;
}
}
}
totalItemLevel /= 16.0f;
SetAverageItemLevelEquipped(totalItemLevel);
totalItemLevelEffective /= 16.0f;
SetAverageItemLevel(totalItemLevel, AvgItemLevelCategory.EquippedBase);
SetAverageItemLevel(totalItemLevelEffective, AvgItemLevelCategory.EquippedEffective);
}
}
}
+1 -2
View File
@@ -7670,8 +7670,7 @@ namespace Game.Entities
public void RemovePlayerFlagEx(PlayerFlagsEx flags) { RemoveUpdateFieldFlagValue(m_values.ModifyValue(m_playerData).ModifyValue(m_playerData.PlayerFlagsEx), (uint)flags); }
public void ReplaceAllPlayerFlagsEx(PlayerFlagsEx flags) { SetUpdateFieldValue(m_values.ModifyValue(m_playerData).ModifyValue(m_playerData.PlayerFlagsEx), (uint)flags); }
public void SetAverageItemLevelTotal(float newItemLevel) { SetUpdateFieldValue(ref m_values.ModifyValue(m_playerData).ModifyValue(m_playerData.AvgItemLevel, 0), newItemLevel); }
public void SetAverageItemLevelEquipped(float newItemLevel) { SetUpdateFieldValue(ref m_values.ModifyValue(m_playerData).ModifyValue(m_playerData.AvgItemLevel, 1), newItemLevel); }
public void SetAverageItemLevel(float newItemLevel, AvgItemLevelCategory category) { SetUpdateFieldValue(ref m_values.ModifyValue(m_playerData).ModifyValue(m_playerData.AvgItemLevel, (int)category), newItemLevel); }
public uint GetCustomizationChoice(uint chrCustomizationOptionId)
{