Exemplo n.º 1
0
 private void FillWithType(int weight, ItemDropTypes type)
 {
     for (int i = 0; i < weight; i++)
     {
         ItemDropQueue.Add(type);
     }
 }
Exemplo n.º 2
0
    /// <summary>
    /// Generate items drops - varies level and choose an amount based on a range
    /// </summary>
    public List <ItemSave> GenerateItemDrops(int level, Vector2Int dropRange)
    {
        List <ItemSave> items = new List <ItemSave>();

        List <int> chestSlots = new List <int>();

        for (int i = 0; i < ChestInventory.instance.chestSlots.Count; i++)
        {
            chestSlots.Add(i);
        }

        int amount = Random.Range(dropRange.x, dropRange.y + 1);

        for (int i = 0; i < amount; i++)
        {
            int           index    = Random.Range(0, ItemDropQueue.Count);
            ItemDropTypes itemType = ItemDropQueue[index];
            ItemDropQueue.Remove(itemType);
            int randomLevel = Mathf.Clamp(level + Random.Range(-1, 2), 1, 30);
            int randomSlot  = chestSlots[Random.Range(0, chestSlots.Count)];
            chestSlots.Remove(randomSlot);
            ItemSave item;
            switch (itemType)
            {
            case ItemDropTypes.RareArtifact:
                item = new ItemSave(new ItemStack(GetRandomItemByLevel(randomLevel + 5, artifacts), 1), randomSlot);
                break;

            case ItemDropTypes.Equipment:
                item = new ItemSave(new ItemStack(GetRandomItemByLevel(randomLevel, equipment), 1), randomSlot);
                break;

            default:
                item = new ItemSave(new ItemStack(GetRandomItemByLevel(randomLevel, artifacts), 1), randomSlot);
                break;
            }

            items.Add(item);

            if (ItemDropQueue.Count == 0)
            {
                FillItemDropQueue();
            }
        }

        return(items);
    }