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