Core/Players: Defined all avg item level slots
Port From (https://github.com/TrinityCore/TrinityCore/commit/3f85fa7470789dbaedac5f3d74d00e1095e24ad1)
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user