A gun item class for a sniper that assigns two perks when a run starts and provides a description string. It adds a ZoomOut perk once and a BulletAccuracy perk twice, and sends a local chat message describing the granted perks.
public class GunSniper : Gun
{
public const string ItemId = "gun_sniper";
private const int AccuracyPerkLevel = 2;
private const int ZoomOutPerkLevel = 1;
public static string Description() => $"Start with {Perk.GetRichTextNameToken( typeof( PerkZoomOut ) )} {Perk.GetRichTextToken( nameof( PerkZoomOut ), level: ZoomOutPerkLevel )} and {Perk.GetRichTextNameToken( typeof( PerkBulletAccuracy ) )} {Perk.GetRichTextToken( nameof( PerkBulletAccuracy ), level: AccuracyPerkLevel )} Lvl {AccuracyPerkLevel}";
public override void OnRunStart()
{
base.OnRunStart();
Manager.Instance.Chat.AddLocalChatMessage( $"Got {Perk.GetRichTextNameToken( typeof( PerkZoomOut ) )} {Perk.GetRichTextToken( nameof( PerkZoomOut ), level: ZoomOutPerkLevel )} and {Perk.GetRichTextNameToken( typeof( PerkBulletAccuracy ) )} {Perk.GetRichTextToken( nameof( PerkBulletAccuracy ), level: AccuracyPerkLevel )} Lvl {AccuracyPerkLevel}", from: "" );
for( int i = 0; i < ZoomOutPerkLevel; i++ )
Player.AddPerk( TypeLibrary.GetType( typeof( PerkZoomOut ) ) );
for ( int i = 0; i < AccuracyPerkLevel; i++ )
Player.AddPerk( TypeLibrary.GetType( typeof( PerkBulletAccuracy ) ) );
}
}