public void enforcePerkLegality(Player player) { int num = ConfigPerks.NUM_RANDOM_PERKS_PER_ITEM_RARITY[this.Rarity]; while (this.Perks.PerkInstances.Count > num) { this.Perks.PerkInstances.RemoveAt(this.Perks.PerkInstances.Count - 1); } while (this.Perks.PerkInstances.Count < num) { this.Perks.PerkInstances.Add(ConfigPerks.RollNewRandomItemPerkInstance(this.Item.Type, this.Perks, player)); } for (int i = 0; i < this.Perks.PerkInstances.Count; i++) { ItemType itemType = this.Item.Type; PerkType type = this.Perks.PerkInstances[i].Type; ConfigPerks.SharedData data = ConfigPerks.SHARED_DATA[type]; if (!ConfigPerks.ItemTypeSupportsPerk(itemType, type)) { this.Perks.PerkInstances[i] = ConfigPerks.RollNewRandomItemPerkInstance(itemType, this.Perks, player); } else if (!player.hasUnlockedSkill(data.LinkedToSkill)) { this.Perks.PerkInstances[i] = ConfigPerks.RollNewRandomItemPerkInstance(itemType, this.Perks, player); } else if (this.Perks.PerkInstances[i].Modifier < data.ModifierMin) { this.Perks.PerkInstances[i].Modifier = data.ModifierMin; } else if (this.Perks.PerkInstances[i].Modifier > data.ModifierMax) { this.Perks.PerkInstances[i].Modifier = data.ModifierMax; } } }