AchievementDefs.cs

Static partial ProgressManager method that builds and returns an array of AchievementDef objects. It constructs a color and defines multiple achievement entries with name, display name, description, reward amount/icon and color.

using Sandbox;

public static partial class ProgressManager
{
	private static AchievementDef[] BuildAchievements()
	{
		var ac = new Color( 0.75f, 0.55f, 0.95f );
		return new AchievementDef[]
		{
			new AchievementDef
			{
				Name          = "first_run",
				DisplayName   = "First Steps",
				Description   = "Complete your first run.",
				RewardAmount  = 10,
				RewardIcon    = "/textures/ui/coin.png",
				Color         = ac,
			},

			new AchievementDef
			{
				Name          = "first_win",
				DisplayName   = "Winner",
				Description   = "Win a run for the first time.",
				RewardAmount  = 20,
				RewardIcon    = "/textures/ui/coin.png",
				Color         = ac,
			},

			new AchievementDef
			{
				Name          = "first_boss",
				DisplayName   = "Boss Slayer",
				Description   = "Defeat the final boss for the first time.",
				RewardAmount  = 25,
				RewardIcon    = "/textures/ui/coin.png",
				Color         = ac,
			},

			new AchievementDef
			{
				Name          = "victory_normal",
				DisplayName   = "Normal Survivor",
				Description   = "Win a run on Normal difficulty.",
				RewardAmount  = 15,
				RewardIcon    = "/textures/ui/coin.png",
				Color         = ac,
			},

			new AchievementDef
			{
				Name          = "victory_expert",
				DisplayName   = "Expert Survivor",
				Description   = "Win a run on Expert difficulty.",
				RewardAmount  = 30,
				RewardIcon    = "/textures/ui/coin.png",
				Color         = ac,
			},

			new AchievementDef
			{
				Name          = "victory_cursed",
				DisplayName   = "Cursed Survivor",
				Description   = "Win a run on Cursed difficulty.",
				RewardAmount  = 50,
				RewardIcon    = "/textures/ui/coin.png",
				Color         = ac,
			},

			new AchievementDef
			{
				Name          = "no_dashing",
				DisplayName   = "No Dashing",
				Description   = "Win a run without dashing.",
				RewardAmount  = 45,
				RewardIcon    = "/textures/ui/coin.png",
				Color         = ac,
			},

			new AchievementDef
			{
				Name          = "jack_of_all_trades",
				DisplayName   = "Jack of All Trades",
				Description   = "Win a run without leveling any perk above level 1.",
				RewardAmount  = 55,
				RewardIcon    = "/textures/ui/coin.png",
				Color         = ac,
			},

			new AchievementDef
			{
				Name          = "no_bullets_hit_ground",
				DisplayName   = "Bullet Discipline",
				Description   = "Win a run with zero bullets hitting the ground.",
				RewardAmount  = 65,
				RewardIcon    = "/textures/ui/coin.png",
				Color         = ac,
			},

			new AchievementDef
			{
				Name          = "no_hp_lost",
				DisplayName   = "Untouched",
				Description   = "Win a run without losing HP.",
				RewardAmount  = 65,
				RewardIcon    = "/textures/ui/coin.png",
				Color         = ac,
			},

			new AchievementDef
			{
				Name          = "no_items_collected",
				DisplayName   = "Empty Hands",
				Description   = "Win a run without collecting any items.",
				RewardAmount  = 65,
				RewardIcon    = "/textures/ui/coin.png",
				Color         = ac,
			},

			new AchievementDef
			{
				Name          = "limited_different_perks",
				DisplayName   = "Focused Build",
				Description   = "Win a run with 12 or fewer different perks.",
				RewardAmount  = 50,
				RewardIcon    = "/textures/ui/coin.png",
				Color         = ac,
			},

			new AchievementDef
			{
				Name          = "pacifist",
				DisplayName   = "Pacifist",
				Description   = "Die to the boss without killing any enemies.",
				RewardAmount  = 30,
				RewardIcon    = "/textures/ui/coin.png",
				Color         = ac,
			},

			new AchievementDef
			{
				Name          = "big_damage",
				DisplayName   = "Heavy Hitter",
				Description   = "Deal at least 500 damage in a single hit.",
				RewardAmount  = 35,
				RewardIcon    = "/textures/ui/coin.png",
				Color         = ac,
			},

			new AchievementDef
			{
				Name          = "sprinter",
				DisplayName   = "Sprinter",
				Description   = "Cross the arena width quickly.",
				RewardAmount  = 25,
				RewardIcon    = "/textures/ui/coin.png",
				Color         = ac,
			},

			new AchievementDef
			{
				Name          = "stand_your_ground",
				DisplayName   = "Stand Your Ground",
				Description   = "Avoid movement input for 10 minutes in a run.",
				RewardAmount  = 40,
				RewardIcon    = "/textures/ui/coin.png",
				Color         = ac,
			},
		};
	}
}