A Gun subclass for a sniper item that sets up default perks when a run starts. It defines item id and perk levels, exposes a Description string, announces the perks to local chat, and adds the PerkZoomOut and PerkBulletAccuracy perks to the player on run start.
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 ) ) );
}
}