private void EquipmentDecay()
{
var equipment = this.Inventory.GetMainEquipment(a => a.Durability > 0);
var update = new List<Item>();
foreach (var item in equipment)
{
// Dura loss
// Going by the name "no_abrasion", I assume items with this
// tag don't lose durability regularly.
if (!ChannelServer.Instance.Conf.World.NoDurabilityLoss && !item.HasTag("/no_abrasion/"))
{
var loss = 0;
switch (item.Info.Pocket)
{
case Pocket.Head: loss = 3; break;
case Pocket.Armor: loss = 16; break; // 6
case Pocket.Shoe: loss = 14; break; // 13
case Pocket.Glove: loss = 10; break; // 9
case Pocket.Robe: loss = 10; break;
case Pocket.RightHand1:
case Pocket.RightHand2:
loss = 3;
break;
case Pocket.LeftHand1:
case Pocket.LeftHand2:
loss = 6;
break;
}
if (loss != 0)
{
// Half dura loss if blessed
if (item.IsBlessed)
loss = Math.Max(1, loss / 2);
item.Durability -= loss;
update.Add(item);
}
}
// Armor prof
if (item.Durability != 0 && item.Info.Pocket.IsMainArmor())
{
var amount = Item.GetProficiencyGain(this.Age, ProficiencyGainType.Time);
this.Inventory.AddProficiency(item, amount);
}
}
if (update.Count != 0)
Send.ItemDurabilityUpdate(this, update);
}