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.
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;
}
}
}