private void UnwearItem(WornSlot wslot, byte islot) { DB_Item item; InventoryItem witem; var index = wslot.Index; if (m_wears.TryGetValue(index, out witem)) { if (DataMgr.Select(witem.Id, out item)) { int itemSlot = islot; if (!GetInventorySlot(islot).IsEmpty) { itemSlot = GetFreeSlot(); } if (itemSlot != -1) { if (SetSlot(itemSlot, item, witem, 1) == 0) { m_wears.Remove(index); m_wearSlotsUsed &= ~wslot.Position; m_view.UnwearItem(wslot.Value, m_wearSlotsUsed); if ((item.Flags & ItemFlags.Stats) > 0) { _mPlayer.Stats.UpdateStats(); } } else { _player.SystemMsg($"Couldn't unwear item {item.Name}"); m_view.WearItem(witem, wslot.Value, m_wearSlotsUsed); } } else { _player.SystemMsg($"You inventory is full"); m_view.WearItem(witem, wslot.Value, m_wearSlotsUsed); } } else { _player.SystemMsg($"Item {witem.Id} not found"); m_view.WearItem(witem, wslot.Value, m_wearSlotsUsed); } } else { _player.SystemMsg($"Wear slot {wslot.Position} is empty"); } }
private void WearItem(WornSlot wslot, byte islot) { DB_Item item; InventoryItem witem; var itemSlot = GetSlot(islot); if (itemSlot?.IsEmpty ?? true) { _player.SystemMsg($"Inventory slot {islot} is empty"); } else { if (DataMgr.Select(itemSlot.Item.Id, out item)) { var wPosition = wslot.Position; if ((item.Slot & wPosition) == wPosition) { var flags = item.Flags; var index = wslot.Index; m_items.Remove(islot); m_view.UpdateSlot(itemSlot.Delete(), islot); if (m_wears.TryGetValue(index, out witem)) { item = DataMgr.SelectItem(witem.Id); SetSlot(islot, item, witem, 1); flags |= item.Flags; } m_wearSlotsUsed |= wPosition; m_wears[index] = itemSlot.Item; m_view.WearItem(itemSlot.Item, wslot.Value, m_wearSlotsUsed); if ((flags & ItemFlags.Stats) > 0) { _mPlayer.Stats.UpdateStats(); } } else { _player.SystemMsg($"You can't wear {item.Name} in {wPosition}"); } } else { _player.SystemMsg($"Item {itemSlot.Item.Id} not found"); } } }
private void UnwearItem(WornSlot wslot, byte islot) { var index = wslot.Index; if (m_wears.TryGetValue(index, out var witem)) { if (DataMgr.Select(witem.Id, out DB_Item item)) { if (m_items.TryGetValue(islot, out var slot)) { var itemSlot = GetFreeSlot(); if (itemSlot != -1) { SetSlot(itemSlot, witem, 1); m_wears.Remove(index); m_wearSlotsUsed &= ~wslot.Position; m_view.UnwearItem(wslot.Value, m_wearSlotsUsed); if ((item.Flags & ItemFlags.Stats) > 0) { _mPlayer.Stats.UpdateStats(); } } else { _player.SystemMsg($"You inventory is full"); m_view.WearItem(witem, wslot.Value, m_wearSlotsUsed); } } else { SetSlot(islot, witem, 1); } } else { _player.SystemMsg($"Item {witem.Id} not found"); m_view.WearItem(witem, wslot.Value, m_wearSlotsUsed); } } else { _player.SystemMsg($"Wear slot {wslot.Position} is empty"); } }