Beispiel #1
0
        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;
                }
            }
        }