perks/PerkFearBomb.cs

A Perk class named PerkFearBomb that registers a rare perk called "Martyrdom" which increases the chance that scared enemies you kill drop a bomb. It registers metadata (name, image, descriptions) and on Refresh it modifies the player's FearDropGrenadeChance stat by an amount based on perk level.

Networking
using System;
using Sandbox;

[Perk( Rarity.Rare, includedAtStart: false, locked: true, alwaysOfferDebug: false, IncludedCategories = new[] { PerkCategory.Aoe, PerkCategory.Explosion })]
public class PerkFearBomb : Perk
{
	private enum Mod { BombChance };


	static PerkFearBomb()
	{
		Register<PerkFearBomb>(
			name: "Martyrdom",
			imagePath: "textures/icons/vector/fear_drop_grenade.png",
			description: level => $"{GetValue( level, Mod.BombChance, true )}% chance for scared enemies\nyou kill to drop a bomb",
			upgradeDescription: level => $"{GetValue( level - 1, Mod.BombChance, true )}→{GetValue( level, Mod.BombChance, true )}% chance for scared enemies\nyou kill to drop a bomb"
		);
	}

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

	}

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

		Player.Modify( this, PlayerStat.FearDropGrenadeChance, GetValue( Level, Mod.BombChance ), ModifierType.Add );
	}

	private static float GetValue( int level, Mod mod, bool isPercent = false )
	{
		switch ( mod )
		{
			case Mod.BombChance:
			default:
				return isPercent
					? 15 * level
					: 0.15f * level;
		}
	}
}