public void UnequipItem(ItemSlot source, sbyte destination)
{
Equip equip;
if (!EquippedItems.TryGetValue(source, out equip))
{
Log.WriteLine(LogLevel.Warn, "{0} unequipped non-existing item.", character.Name);
Handler12.FailedUnequip(this);
return;
}
if (InventoryItems.ContainsKey(destination))
{
if (!GetFreeInventorySlot(out destination))
{
Handler12.FailedUnequip(this);
return;
}
}
if (EquippedItems.Remove(source))
{
equip.Slot = destination;
InventoryItems.Add(destination, equip);
Handler12.ModifyEquipSlot(this, (byte)source, (byte)destination, null); //unequip
Handler12.ModifyInventorySlot(this, 0x20, (byte)destination, (byte)source, equip);
Save();
using (var broad = Handler7.Unequip(this, equip))
{
Broadcast(broad);
}
}
else return;
}