Ejemplo n.º 1
0
        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");
            }
        }
Ejemplo n.º 2
0
        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");
                }
            }
        }
Ejemplo n.º 3
0
        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");
            }
        }