public void UnequipItemTo(InventoryData inventory, EquipSlot eslot, int islot) { InventoryItemData invt_slot = inventory.GetItem(islot); InventoryItemData invt_equip = EquipData.GetEquippedItem(eslot); ItemData idata = ItemData.Get(invt_slot?.item_id); ItemData edata = ItemData.Get(invt_equip?.item_id); if (edata != null && inventory != EquipData && inventory.uid != invt_equip.uid) { bool same_item = idata != null && invt_slot != null && invt_slot.quantity > 0 && idata.id == edata.id && invt_slot.quantity < idata.inventory_max; bool slot_empty = invt_slot == null || invt_slot.quantity <= 0; if (same_item || slot_empty) { //Unequip EquipData.UnequipItem(eslot); inventory.AddItemAt(edata.id, islot, 1, invt_equip.durability, invt_equip.uid); } else if (idata != null && invt_slot != null && !same_item && idata.type == ItemType.Equipment && idata.equip_slot == edata.equip_slot && invt_slot.quantity == 1) { //swap inventory.RemoveItemAt(islot, 1); EquipData.UnequipItem(eslot); EquipData.EquipItem(eslot, idata.id, invt_slot.durability, invt_slot.uid); inventory.AddItemAt(edata.id, islot, 1, invt_equip.durability, invt_equip.uid); } } }
public void EquipItemTo(InventoryData inventory, int islot, EquipSlot eslot) { InventoryItemData invt_slot = inventory.GetItem(islot); InventoryItemData invt_equip = EquipData.GetEquippedItem(eslot); ItemData idata = ItemData.Get(invt_slot?.item_id); ItemData edata = ItemData.Get(invt_equip?.item_id); if (invt_slot != null && inventory != EquipData && invt_slot.quantity > 0 && idata != null && eslot > 0) { if (edata == null) { //Equip only EquipData.EquipItem(eslot, idata.id, invt_slot.durability, invt_slot.uid); inventory.RemoveItemAt(islot, 1); } else if (invt_slot.quantity == 1 && idata.type == ItemType.Equipment) { //Swap inventory.RemoveItemAt(islot, 1); EquipData.UnequipItem(eslot); EquipData.EquipItem(eslot, idata.id, invt_slot.durability, invt_slot.uid); inventory.AddItemAt(edata.id, islot, 1, invt_equip.durability, invt_equip.uid); } } }
public void RemoveEquipItem(EquipSlot eslot) { InventoryItemData invtem = EquipData.GetEquippedItem(eslot); ItemData idata = ItemData.Get(invtem?.item_id); if (idata != null) { EquipData.UnequipItem(eslot); if (idata.container_data) { EquipData.EquipItem(eslot, idata.container_data.id, idata.container_data.durability, UniqueID.GenerateUniqueID()); } } }
public void GainItem(InventoryData inventory, ItemData item, int quantity, Vector3 source_pos) { if (item != null) { if (inventory.CanTakeItem(item.id, quantity)) { if (inventory.type == InventoryType.Equipment) { EquipData.EquipItem(item.equip_slot, item.id, item.durability, UniqueID.GenerateUniqueID()); ItemTakeFX.DoTakeFX(source_pos, item, inventory.type, (int)item.equip_slot); } else { int islot = inventory.AddItem(item.id, quantity, item.durability, UniqueID.GenerateUniqueID()); ItemTakeFX.DoTakeFX(source_pos, item, inventory.type, islot); } } else { Item.Create(item, character.GetPosition(), quantity); } } }