//-------- 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));
        }
Ejemplo n.º 2
0
 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);
         }
     }
 }
Ejemplo n.º 7
0
        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();
        }
Ejemplo n.º 8
0
 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());
                 }
             }
         }
     }
 }
Ejemplo n.º 9
0
 void Awake()
 {
     storage_list.Add(this);
     unique_id = GetComponent <UniqueID>();
 }