Example #1
0
        private void ReplaceTreasures(IEnumerable <Item> items)
        {
            var treasures = new TreasureData(rom);

            treasures.LoadTable();

            var pool1 = GetLegendaryPool();
            var pool2 = ItemLists.RareWeaponTier.Concat(ItemLists.RareArmorTier).Where(i => !pool1.Contains(i)).ToList();
            var pool3 = ItemLists.CommonArmorTier.Concat(ItemLists.CommonWeaponTier).ToList();

            var hqPool = new HashSet <Item>(pool1.Concat(pool2));

            items = items.Where(i => hqPool.Contains(i)).ToArray();

            foreach (var i in items)
            {
                var indices = treasures.Data.Select((item, idx) => (item, idx)).Where(e => e.item == i).ToList();
                if (indices.Count > 0)
                {
                    var idx = indices.PickRandom(rng).idx;
                    treasures[idx] = ExtConsumables.ExtConsumableStartingEquipmentFix(pool3.PickRandom(rng), flags);
                }
            }

            treasures.StoreTable();
        }