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(); }