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()); } } } } }
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 TakeItem(InventoryData inventory, Item item) { if (item != null && !character.IsDoingAction() && inventory.CanTakeItem(item.data.id, item.quantity)) { character.FaceTorward(item.transform.position); if (onTakeItem != null) { onTakeItem.Invoke(item); } character.TriggerAction(0.4f, () => { //Make sure wasnt destroyed during the 0.4 sec if (item != null && inventory.CanTakeItem(item.data.id, item.quantity)) { PlayerData pdata = PlayerData.Get(); DroppedItemData dropped_item = pdata.GetDroppedItem(item.GetUID()); float durability = dropped_item != null ? dropped_item.durability : item.data.durability; int slot = inventory.AddItem(item.data.id, item.quantity, durability, item.GetUID()); //Add to inventory ItemTakeFX.DoTakeFX(item.transform.position, item.data, inventory.type, slot); item.TakeItem(); //Destroy item } }); } }
public override void DoAction(PlayerCharacter character, Selectable select) { PlayerData pdata = PlayerData.Get(); Construction construction = select.GetComponent <Construction>(); if (construction != null) { ItemData take_item = construction.data.take_item_data; InventoryData inv_data = character.Inventory.GetValidInventory(take_item, 1); if (take_item != null && inv_data != null) { BuiltConstructionData bdata = pdata.GetConstructed(construction.GetUID()); float durability = bdata != null ? bdata.durability : take_item.durability; inv_data.AddItem(take_item.id, 1, durability, select.GetUID()); select.Destroy(); } } Character acharacter = select.GetComponent <Character>(); if (acharacter != null) { ItemData take_item = acharacter.data.take_item_data; InventoryData inv_data = character.Inventory.GetValidInventory(take_item, 1); if (take_item != null && inv_data != null) { TrainedCharacterData cdata = pdata.GetCharacter(acharacter.GetUID()); inv_data.AddItem(take_item.id, 1, take_item.durability, select.GetUID()); select.Destroy(); } } }
//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 AutoTakeItem(InventoryData inventory, Item item) { if (item != null && !character.IsDoingAction() && inventory.CanTakeItem(item.data.id, item.quantity)) { PlayerData pdata = PlayerData.Get(); DroppedItemData dropped_item = pdata.GetDroppedItem(item.GetUID()); float durability = dropped_item != null ? dropped_item.durability : item.data.durability; int slot = inventory.AddItem(item.data.id, item.quantity, durability, item.GetUID()); //Add to inventory ItemTakeFX.DoTakeFX(item.transform.position, item.data, inventory.type, slot); item.TakeItem(); //Destroy item } }
public void UnequipItem(EquipSlot eslot) { InventoryItemData invdata = EquipData.GetEquippedItem(eslot); if (invdata != null && InventoryData.CanTakeItem(invdata.item_id, 1)) { EquipData.UnequipItem(eslot); InventoryData.AddItem(invdata.item_id, 1, invdata.durability, invdata.uid); } else if (invdata != null && BagData != null && BagData.CanTakeItem(invdata.item_id, 1)) { EquipData.UnequipItem(eslot); BagData.AddItem(invdata.item_id, 1, invdata.durability, invdata.uid); } }
private void Start() { bool has_inventory = PlayerData.Get().HasInventory(character.player_id); InventoryData.size = inventory_size; //This will also create the inventory EquipData.size = 99; //Create the inventory, size doesnt matter for equip //If new game, add starting items if (!has_inventory) { InventoryData invdata = InventoryData.Get(InventoryType.Inventory, character.player_id); foreach (ItemData item in starting_items) { invdata.AddItem(item.id, 1, item.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); } } }