perks/PerkArmorRerollCost.cs

A Perk subclass named PerkArmorRerollCost that defines an 'Epic' rarity perk called "Recycled Armor". It sets UI metadata (name, icon, descriptions), visual highlight properties, and on Refresh applies a modifier to the player's ArmorRerollCost stat. It computes the cost value as 14 - level*2.

Reflection
using System;
using Sandbox;

[Perk( Rarity.Epic, includedAtStart: false, alwaysOfferDebug: false )]
public class PerkArmorRerollCost : Perk
{
	private enum Mod { ArmorCost };

	static PerkArmorRerollCost()
	{
		Register<PerkArmorRerollCost>(
			name: "Recycled Armor",
			imagePath: "textures/icons/vector/armor_reroll_cost.png",
			description: level => $"Rerolling costs {(int)GetValue( level, Mod.ArmorCost )} armor-item",
			upgradeDescription: level => $"Rerolling costs {(int)GetValue( level - 1, Mod.ArmorCost )}→{(int)GetValue( level, Mod.ArmorCost )} armor-item"
		);
	}

	public override void Start()
	{
		base.Start();

		HighlightColor = new Color( 0.8f, 1f, 1f );
		HighlightDuration = 0.4f;
		HighlightOpacity = 3f;
	}

	public override void Refresh()
	{
		base.Refresh();

		Player.Modify( this, PlayerStat.ArmorRerollCost, GetValue( Level, Mod.ArmorCost ), ModifierType.Add );
	}

	private static float GetValue( int level, Mod mod, bool isPercent = false )
	{
		switch ( mod )
		{
			case Mod.ArmorCost:
			default:
				return 14f - level * 2f;
		}
	}
}