//-------- Dropped items -------- public DroppedItemData AddDroppedItem(string item_id, string scene, Vector3 pos, int quantity, float durability) { string uid = UniqueID.GenerateUniqueID(); return(AddDroppedItem(item_id, scene, pos, quantity, durability, uid)); }
void Awake() { unique_id = GetComponent <UniqueID>(); }
//Remove item in one inventory, keeping its container public void UseItem(InventoryData inventory, ItemData item, int quantity = 1) { if (item != null) { inventory.RemoveItem(item.id, quantity); if (item.container_data) { inventory.AddItem(item.container_data.id, quantity, item.container_data.durability, UniqueID.GenerateUniqueID()); } } }
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 EatItem(InventoryData inventory, int slot) { InventoryItemData idata = inventory.GetItem(slot); ItemData item = ItemData.Get(idata?.item_id); if (item != null && item.type == ItemType.Consumable) { if (inventory.IsItemIn(item.id, slot)) { inventory.RemoveItemAt(slot, 1); if (item.container_data) { inventory.AddItem(item.container_data.id, 1, item.container_data.durability, UniqueID.GenerateUniqueID()); } character.StopSleep(); character.Attributes.AddAttribute(AttributeType.Health, item.eat_hp); character.Attributes.AddAttribute(AttributeType.Hunger, item.eat_hunger); character.Attributes.AddAttribute(AttributeType.Thirst, item.eat_thirst); character.Attributes.AddAttribute(AttributeType.Happiness, item.eat_happiness); foreach (BonusEffectData bonus in item.eat_bonus) { character.Data.AddTimedBonus(bonus.type, bonus.value, item.eat_bonus_duration); } } } }
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); } } }
public void UpdateAllDurability(float game_speed) { List <int> remove_items = new List <int>(); foreach (KeyValuePair <int, InventoryItemData> pair in items) { InventoryItemData invdata = pair.Value; ItemData idata = ItemData.Get(invdata?.item_id); if (idata != null && invdata != null) { if (idata.durability_type == DurabilityType.Spoilage) { invdata.durability -= game_speed * Time.deltaTime; } if (idata.durability_type == DurabilityType.UsageTime && type == InventoryType.Equipment) { invdata.durability -= game_speed * Time.deltaTime; } } if (idata != null && invdata != null && idata.HasDurability() && invdata.durability <= 0f) { remove_items.Add(pair.Key); } } foreach (int slot in remove_items) { InventoryItemData invdata = GetItem(slot); ItemData idata = ItemData.Get(invdata?.item_id); RemoveItemAt(slot, invdata.quantity); if (idata.container_data) { AddItemAt(idata.container_data.id, slot, invdata.quantity, idata.container_data.durability, UniqueID.GenerateUniqueID()); } } remove_items.Clear(); }
private void Start() { //Add starting items if (!string.IsNullOrEmpty(unique_id.unique_id)) { bool has_inventory = InventoryData.Exists(unique_id.unique_id); if (!has_inventory) { InventoryData invdata = InventoryData.Get(InventoryType.Storage, unique_id.unique_id); foreach (ItemDataValue item in starting_items_quantity) { if (item.item != null) { invdata.AddItem(item.item.id, item.quantity, item.item.durability, UniqueID.GenerateUniqueID()); } } foreach (ItemData item in starting_items) { if (item != null) { invdata.AddItem(item.id, 1, item.durability, UniqueID.GenerateUniqueID()); } } foreach (CraftDataRandom item in starting_items_random) { if (item.item != null && Random.value < item.probability) { ItemData idata = (ItemData)item.item; invdata.AddItem(idata.id, 1, idata.durability, UniqueID.GenerateUniqueID()); } } } } }
void Awake() { storage_list.Add(this); unique_id = GetComponent <UniqueID>(); }