Decompiled source of Peak Badge Handbook v1.0.2

plugins/peak-badge-handbook/peak-badge-handbook.dll

Decompiled a month ago
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using BepInEx;
using BepInEx.Configuration;
using BepInEx.Logging;
using HarmonyLib;
using Microsoft.CodeAnalysis;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using TMPro;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.Events;
using UnityEngine.InputSystem;
using UnityEngine.InputSystem.Controls;
using UnityEngine.InputSystem.UI;
using UnityEngine.UI;
using Zorro.Core;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")]
[assembly: AssemblyVersion("0.0.0.0")]
[module: RefSafetyRules(11)]
namespace Microsoft.CodeAnalysis
{
	[CompilerGenerated]
	[Embedded]
	internal sealed class EmbeddedAttribute : Attribute
	{
	}
}
namespace System.Runtime.CompilerServices
{
	[CompilerGenerated]
	[Embedded]
	[AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)]
	internal sealed class RefSafetyRulesAttribute : Attribute
	{
		public readonly int Version;

		public RefSafetyRulesAttribute(int P_0)
		{
			Version = P_0;
		}
	}
}
namespace PeakBadgeHandbook
{
	public class BadgeEntry
	{
		public int visualID;

		public string displayName;

		public string description;

		public string achievementType;

		public bool secret;

		public bool testLocked;

		public string iconFile;
	}
	public class CosmeticEntry
	{
		public string slot;

		public int index;

		public string textureFile;

		public string requiredAchievement;

		public string requiredSteamStat;

		public int requiredSteamStatValue;

		public bool requiresAscent;

		public int requiredAscent;

		public string customRequirement;

		public bool isBlank;

		public bool testLocked;
	}
	public class AchievementRequirementEntry
	{
		public string achievementType;

		public string kind;

		public string statType;

		public int requiredValue;
	}
	public class HandbookData
	{
		public List<BadgeEntry> badges = new List<BadgeEntry>();

		public List<CosmeticEntry> cosmetics = new List<CosmeticEntry>();

		public List<AchievementRequirementEntry> achievementRequirements = new List<AchievementRequirementEntry>();
	}
	public static class DataProvider
	{
		public static string DataDir;

		public static string TextureDir;

		public static ManualLogSource Log;

		private static HandbookData _data;

		private static readonly Dictionary<string, Texture2D> Textures = new Dictionary<string, Texture2D>();

		private static readonly Dictionary<string, CosmeticEntry> CosmeticIndex = new Dictionary<string, CosmeticEntry>();

		private static Dictionary<string, BadgeData> _badgeDataByAchievement;

		private static Dictionary<int, BadgeData> _badgeDataByVisual;

		private static Material _eyeMaterial;

		public static bool Ready { get; private set; }

		public static void Load(string dataDir, ManualLogSource log)
		{
			DataDir = dataDir;
			Log = log;
			Textures.Clear();
			CosmeticIndex.Clear();
			try
			{
				_data = new HandbookData();
				List<BadgeEntry> list = LoadPart<List<BadgeEntry>>(Path.Combine(DataDir, "badges.json"));
				List<BadgeEntry> list2 = JsonConvert.DeserializeObject<List<BadgeEntry>>("[\r\n  {\r\n    \"visualID\": 25,\r\n    \"displayName\": \"Participation\",\r\n    \"description\": \"Have a friend escape the island without you.\",\r\n    \"achievementType\": \"TriedYourBestBadge\",\r\n    \"secret\": false,\r\n    \"testLocked\": false,\r\n    \"iconFile\": \"badge_25.png\"\r\n  },\r\n  {\r\n    \"visualID\": 22,\r\n    \"displayName\": \"Endurance\",\r\n    \"description\": \"Climb 50m upwards without touching the ground.\",\r\n    \"achievementType\": \"EnduranceBadge\",\r\n    \"secret\": false,\r\n    \"testLocked\": false,\r\n    \"iconFile\": \"badge_22.png\"\r\n  },\r\n  {\r\n    \"visualID\": 32,\r\n    \"displayName\": \"Nomad\",\r\n    \"description\": \"Climb past the MESA.\",\r\n    \"achievementType\": \"NomadBadge\",\r\n    \"secret\": false,\r\n    \"testLocked\": false,\r\n    \"iconFile\": \"badge_32.png\"\r\n  },\r\n  {\r\n    \"visualID\": 38,\r\n    \"displayName\": \"Ultimate\",\r\n    \"description\": \"Catch a Flying Disc from 50m away.\",\r\n    \"achievementType\": \"UltimateBadge\",\r\n    \"secret\": false,\r\n    \"testLocked\": false,\r\n    \"iconFile\": \"badge_38.png\"\r\n  },\r\n  {\r\n    \"visualID\": 37,\r\n    \"displayName\": \"Cool Cucumber\",\r\n    \"description\": \"Climb past the MESA without ever having more than 10% Heat.\",\r\n    \"achievementType\": \"CoolCucumberBadge\",\r\n    \"secret\": false,\r\n    \"testLocked\": false,\r\n    \"iconFile\": \"badge_37.png\"\r\n  },\r\n  {\r\n    \"visualID\": 36,\r\n    \"displayName\": \"Needlepoint\",\r\n    \"description\": \"Have a lot of cactuses stuck to you.\",\r\n    \"achievementType\": \"NeedlepointBadge\",\r\n    \"secret\": false,\r\n    \"testLocked\": false,\r\n    \"iconFile\": \"badge_36.png\"\r\n  },\r\n  {\r\n    \"visualID\": 34,\r\n    \"displayName\": \"Aeronautics\",\r\n    \"description\": \"Achieve flight.\",\r\n    \"achievementType\": \"AeronauticsBadge\",\r\n    \"secret\": false,\r\n    \"testLocked\": false,\r\n    \"iconFile\": \"badge_34.png\"\r\n  },\r\n  {\r\n    \"visualID\": 33,\r\n    \"displayName\": \"24 Karat\",\r\n    \"description\": \"Offer The Kiln a worthy sacrifice.\",\r\n    \"achievementType\": \"TwentyFourKaratBadge\",\r\n    \"secret\": false,\r\n    \"testLocked\": false,\r\n    \"iconFile\": \"badge_33.png\"\r\n  },\r\n  {\r\n    \"visualID\": 40,\r\n    \"displayName\": \"Resourcefulness\",\r\n    \"description\": \"Give in to your hunger.\",\r\n    \"achievementType\": \"ResourcefulnessBadge\",\r\n    \"secret\": false,\r\n    \"testLocked\": false,\r\n    \"iconFile\": \"badge_40.png\"\r\n  },\r\n  {\r\n    \"visualID\": 41,\r\n    \"displayName\": \"Daredevil\",\r\n    \"description\": \"Shoot across the MESA canyon in a Scout Cannon.\",\r\n    \"achievementType\": \"DaredevilBadge\",\r\n    \"secret\": false,\r\n    \"testLocked\": false,\r\n    \"iconFile\": \"badge_41.png\"\r\n  },\r\n  {\r\n    \"visualID\": 35,\r\n    \"displayName\": \"Megaentomology\",\r\n    \"description\": \"Survive an Antlion attack.\",\r\n    \"achievementType\": \"MegaentomologyBadge\",\r\n    \"secret\": false,\r\n    \"testLocked\": false,\r\n    \"iconFile\": \"badge_35.png\"\r\n  },\r\n  {\r\n    \"visualID\": 39,\r\n    \"displayName\": \"Astronomy\",\r\n    \"description\": \"Look a little too closely at the blazing sun.\",\r\n    \"achievementType\": \"AstronomyBadge\",\r\n    \"secret\": false,\r\n    \"testLocked\": false,\r\n    \"iconFile\": \"badge_39.png\"\r\n  },\r\n  {\r\n    \"visualID\": 42,\r\n    \"displayName\": \"Bundled Up\",\r\n    \"description\": \"Climb past the ALPINE without ever having more than 20% Cold.\",\r\n    \"achievementType\": \"BundledUpBadge\",\r\n    \"secret\": false,\r\n    \"testLocked\": false,\r\n    \"iconFile\": \"badge_42.png\"\r\n  },\r\n  {\r\n    \"visualID\": 43,\r\n    \"displayName\": \"Forestry\",\r\n    \"description\": \"Climb past the ROOTS.\",\r\n    \"achievementType\": \"ForestryBadge\",\r\n    \"secret\": false,\r\n    \"testLocked\": false,\r\n    \"iconFile\": \"badge_43.png\"\r\n  },\r\n  {\r\n    \"visualID\": 44,\r\n    \"displayName\": \"Tread Lightly\",\r\n    \"description\": \"Climb past the ROOTS without ever having more than 25% spores.\",\r\n    \"achievementType\": \"TreadLightlyBadge\",\r\n    \"secret\": false,\r\n    \"testLocked\": false,\r\n    \"iconFile\": \"badge_44.png\"\r\n  },\r\n  {\r\n    \"visualID\": 45,\r\n    \"displayName\": \"Web Security\",\r\n    \"description\": \"Survive getting caught in a spider's web.\",\r\n    \"achievementType\": \"WebSecurityBadge\",\r\n    \"secret\": false,\r\n    \"testLocked\": false,\r\n    \"iconFile\": \"badge_45.png\"\r\n  },\r\n  {\r\n    \"visualID\": 46,\r\n    \"displayName\": \"Undead Encounter\",\r\n    \"description\": \"Cure yourself from a zombie bite.\",\r\n    \"achievementType\": \"UndeadEncounterBadge\",\r\n    \"secret\": false,\r\n    \"testLocked\": false,\r\n    \"iconFile\": \"badge_46.png\"\r\n  },\r\n  {\r\n    \"visualID\": 47,\r\n    \"displayName\": \"Advanced Mycology\",\r\n    \"description\": \"Try all 5 types of Shroomberry in a run.\",\r\n    \"achievementType\": \"AdvancedMycologyBadge\",\r\n    \"secret\": false,\r\n    \"testLocked\": false,\r\n    \"iconFile\": \"badge_47.png\"\r\n  },\r\n  {\r\n    \"visualID\": 48,\r\n    \"displayName\": \"Disaster Response\",\r\n    \"description\": \"Pull a passed out friend Xm with the Rescue Claw.\",\r\n    \"achievementType\": \"DisasterResponseBadge\",\r\n    \"secret\": false,\r\n    \"testLocked\": false,\r\n    \"iconFile\": \"badge_48.png\"\r\n  },\r\n  {\r\n    \"visualID\": 49,\r\n    \"displayName\": \"Calcium Intake\",\r\n    \"description\": \"Block 100 total damage with the Fortified Milk.\",\r\n    \"achievementType\": \"CalciumIntakeBadge\",\r\n    \"secret\": false,\r\n    \"testLocked\": false,\r\n    \"iconFile\": \"badge_49.png\"\r\n  },\r\n  {\r\n    \"visualID\": 50,\r\n    \"displayName\": \"Competitive Eating\",\r\n    \"description\": \"Eat 5 Hot Dogs.\",\r\n    \"achievementType\": \"CompetitiveEatingBadge\",\r\n    \"secret\": false,\r\n    \"testLocked\": false,\r\n    \"iconFile\": \"badge_50.png\"\r\n  },\r\n  {\r\n    \"visualID\": 51,\r\n    \"displayName\": \"Applied Esoterica\",\r\n    \"description\": \"Ressurect a friend using unholy means.\",\r\n    \"achievementType\": \"AppliedEsotericaBadge\",\r\n    \"secret\": false,\r\n    \"testLocked\": false,\r\n    \"iconFile\": \"badge_51.png\"\r\n  },\r\n  {\r\n    \"visualID\": 52,\r\n    \"displayName\": \"Mycoacrobatics\",\r\n    \"description\": \"Bounce up Xm off a mushroom.\",\r\n    \"achievementType\": \"MycoacrobaticsBadge\",\r\n    \"secret\": false,\r\n    \"testLocked\": false,\r\n    \"iconFile\": \"badge_52.png\"\r\n  },\r\n  {\r\n    \"visualID\": 53,\r\n    \"displayName\": \"Cryptogastronomy\",\r\n    \"description\": \"Cook and eat a Mandrake.\",\r\n    \"achievementType\": \"CryptogastronomyBadge\",\r\n    \"secret\": false,\r\n    \"testLocked\": false,\r\n    \"iconFile\": \"badge_53.png\"\r\n  },\r\n  {\r\n    \"visualID\": 54,\r\n    \"displayName\": \"Wanderer\",\r\n    \"description\": \"Climb past the GLOOM.\",\r\n    \"achievementType\": \"WandererBadge\",\r\n    \"secret\": false,\r\n    \"testLocked\": false,\r\n    \"iconFile\": \"badge_54.png\"\r\n  },\r\n  {\r\n    \"visualID\": 55,\r\n    \"displayName\": \"Bellringer\",\r\n    \"description\": \"Ring 5 Belltowers in the Gloom in a single run.\",\r\n    \"achievementType\": \"BellringerBadge\",\r\n    \"secret\": false,\r\n    \"testLocked\": false,\r\n    \"iconFile\": \"badge_55.png\"\r\n  },\r\n  {\r\n    \"visualID\": 56,\r\n    \"displayName\": \"Well Rested\",\r\n    \"description\": \"Consume The Early Worm.\",\r\n    \"achievementType\": \"WellRestedBadge\",\r\n    \"secret\": false,\r\n    \"testLocked\": false,\r\n    \"iconFile\": \"badge_56.png\"\r\n  },\r\n  {\r\n    \"visualID\": 57,\r\n    \"displayName\": \"Jester\",\r\n    \"description\": \"Open 3 Clown Luggage in one run.\",\r\n    \"achievementType\": \"JesterBadge\",\r\n    \"secret\": false,\r\n    \"testLocked\": false,\r\n    \"iconFile\": \"badge_57.png\"\r\n  },\r\n  {\r\n    \"visualID\": 58,\r\n    \"displayName\": \"Hang Gliding\",\r\n    \"description\": \"Fly 100m with the Glider without touching the ground.\",\r\n    \"achievementType\": \"HangGlidingBadge\",\r\n    \"secret\": false,\r\n    \"testLocked\": false,\r\n    \"iconFile\": \"badge_58.png\"\r\n  },\r\n  {\r\n    \"visualID\": 59,\r\n    \"displayName\": \"Medieval History\",\r\n    \"description\": \"Climb past THE CITADEL without being hit by any traps.\",\r\n    \"achievementType\": \"MedievalHistoryBadge\",\r\n    \"secret\": false,\r\n    \"testLocked\": false,\r\n    \"iconFile\": \"badge_59.png\"\r\n  },\r\n  {\r\n    \"visualID\": 60,\r\n    \"displayName\": \"Last Resort\",\r\n    \"description\": \"Heal over 75% damage at once by using the Ritual Dagger.\",\r\n    \"achievementType\": \"LastResortBadge\",\r\n    \"secret\": false,\r\n    \"testLocked\": false,\r\n    \"iconFile\": \"badge_60.png\"\r\n  },\r\n  {\r\n    \"visualID\": 61,\r\n    \"displayName\": \"Exorcist\",\r\n    \"description\": \"Burn up the Big Ghost in the GLOOM.\",\r\n    \"achievementType\": \"ExorcistBadge\",\r\n    \"secret\": false,\r\n    \"testLocked\": false,\r\n    \"iconFile\": \"badge_61.png\"\r\n  },\r\n  {\r\n    \"visualID\": 62,\r\n    \"displayName\": \"Archery\",\r\n    \"description\": \"Remove 10 arrows from yourself in one run.\",\r\n    \"achievementType\": \"ArcheryBadge\",\r\n    \"secret\": false,\r\n    \"testLocked\": false,\r\n    \"iconFile\": \"badge_62.png\"\r\n  },\r\n  {\r\n    \"visualID\": 63,\r\n    \"displayName\": \"Rule Zero\",\r\n    \"description\": \"Free the Scoutmaster's soul.\",\r\n    \"achievementType\": \"RuleZeroBadge\",\r\n    \"secret\": true,\r\n    \"testLocked\": false,\r\n    \"iconFile\": \"badge_63.png\"\r\n  },\r\n  {\r\n    \"visualID\": 3,\r\n    \"displayName\": \"Alpinist\",\r\n    \"description\": \"Climb past the ALPINE.\",\r\n    \"achievementType\": \"AlpinistBadge\",\r\n    \"secret\": false,\r\n    \"testLocked\": false,\r\n    \"iconFile\": \"badge_3.png\"\r\n  },\r\n  {\r\n    \"visualID\": 27,\r\n    \"displayName\": \"Animal Serenading\",\r\n    \"description\": \"Play the bugle for a capybara.\",\r\n    \"achievementType\": \"AnimalSerenadingBadge\",\r\n    \"secret\": false,\r\n    \"testLocked\": false,\r\n    \"iconFile\": \"badge_27.png\"\r\n  },\r\n  {\r\n    \"visualID\": 28,\r\n    \"displayName\": \"Arborist\",\r\n    \"description\": \"Reach the top of a really big tree.\",\r\n    \"achievementType\": \"ArboristBadge\",\r\n    \"secret\": false,\r\n    \"testLocked\": false,\r\n    \"iconFile\": \"badge_28.png\"\r\n  },\r\n  {\r\n    \"visualID\": 23,\r\n    \"displayName\": \"High Altitude\",\r\n    \"description\": \"Climb 5000m total.\",\r\n    \"achievementType\": \"AscenderBadge\",\r\n    \"secret\": false,\r\n    \"testLocked\": false,\r\n    \"iconFile\": \"badge_23.png\"\r\n  },\r\n  {\r\n    \"visualID\": 18,\r\n    \"displayName\": \"BalloonBadge\",\r\n    \"description\": \"Escape the island without taking fall damage.\",\r\n    \"achievementType\": \"BalloonBadge\",\r\n    \"secret\": false,\r\n    \"testLocked\": false,\r\n    \"iconFile\": \"badge_18.png\"\r\n  },\r\n  {\r\n    \"visualID\": 1,\r\n    \"displayName\": \"Beachcomber\",\r\n    \"description\": \"Climb past the SHORE.\",\r\n    \"achievementType\": \"BeachcomberBadge\",\r\n    \"secret\": false,\r\n    \"testLocked\": false,\r\n    \"iconFile\": \"badge_1.png\"\r\n  },\r\n  {\r\n    \"visualID\": 12,\r\n    \"displayName\": \"BingBongBadge\",\r\n    \"description\": \"Help Bing Bong escape the island.\",\r\n    \"achievementType\": \"BingBongBadge\",\r\n    \"secret\": false,\r\n    \"testLocked\": false,\r\n    \"iconFile\": \"badge_12.png\"\r\n  },\r\n  {\r\n    \"visualID\": 20,\r\n    \"displayName\": \"Bookworm\",\r\n    \"description\": \"Read all of Scoutmaster Myres's journal entries.\",\r\n    \"achievementType\": \"BookwormBadge\",\r\n    \"secret\": false,\r\n    \"testLocked\": false,\r\n    \"iconFile\": \"badge_20.png\"\r\n  },\r\n  {\r\n    \"visualID\": 24,\r\n    \"displayName\": \"Bouldering\",\r\n    \"description\": \"Place 10 pitons.\",\r\n    \"achievementType\": \"BoulderingBadge\",\r\n    \"secret\": false,\r\n    \"testLocked\": false,\r\n    \"iconFile\": \"badge_24.png\"\r\n  },\r\n  {\r\n    \"visualID\": 13,\r\n    \"displayName\": \"Clutch\",\r\n    \"description\": \"Resurrect 3 scouts in a single expedition. \",\r\n    \"achievementType\": \"ClutchBadge\",\r\n    \"secret\": false,\r\n    \"testLocked\": false,\r\n    \"iconFile\": \"badge_13.png\"\r\n  },\r\n  {\r\n    \"visualID\": 7,\r\n    \"displayName\": \"Cooking\",\r\n    \"description\": \"Cook 20 meals at campfires.\",\r\n    \"achievementType\": \"CookingBadge\",\r\n    \"secret\": false,\r\n    \"testLocked\": false,\r\n    \"iconFile\": \"badge_7.png\"\r\n  },\r\n  {\r\n    \"visualID\": 17,\r\n    \"displayName\": \"Emergency Preparedness\",\r\n    \"description\": \"Heal an unconscious friend with an item to save them from death.\",\r\n    \"achievementType\": \"EmergencyPreparednessBadge\",\r\n    \"secret\": false,\r\n    \"testLocked\": false,\r\n    \"iconFile\": \"badge_17.png\"\r\n  },\r\n  {\r\n    \"visualID\": 21,\r\n    \"displayName\": \"Esoterica\",\r\n    \"description\": \"Obtain a mystical item.\",\r\n    \"achievementType\": \"EsotericaBadge\",\r\n    \"secret\": false,\r\n    \"testLocked\": false,\r\n    \"iconFile\": \"badge_21.png\"\r\n  },\r\n  {\r\n    \"visualID\": 8,\r\n    \"displayName\": \"First Aid\",\r\n    \"description\": \"Heal your friends for 100 points of injury in a single expedition.\",\r\n    \"achievementType\": \"FirstAidBadge\",\r\n    \"secret\": false,\r\n    \"testLocked\": false,\r\n    \"iconFile\": \"badge_8.png\"\r\n  },\r\n  {\r\n    \"visualID\": 16,\r\n    \"displayName\": \"Foraging\",\r\n    \"description\": \"Eat 5 different berries in a single expedition.\",\r\n    \"achievementType\": \"ForagingBadge\",\r\n    \"secret\": false,\r\n    \"testLocked\": false,\r\n    \"iconFile\": \"badge_16.png\"\r\n  },\r\n  {\r\n    \"visualID\": 31,\r\n    \"displayName\": \"Gourmand\",\r\n    \"description\": \"Escape the island after cooking and eating a coconut half, a honeycomb, a yellow winterberry, and an egg.\",\r\n    \"achievementType\": \"GourmandBadge\",\r\n    \"secret\": false,\r\n    \"testLocked\": false,\r\n    \"iconFile\": \"badge_31.png\"\r\n  },\r\n  {\r\n    \"visualID\": 29,\r\n    \"displayName\": \"Happy Camper\",\r\n    \"description\": \"Receive 5 Morale Boosts from campfires.\",\r\n    \"achievementType\": \"HappyCamperBadge\",\r\n    \"secret\": false,\r\n    \"testLocked\": false,\r\n    \"iconFile\": \"badge_29.png\"\r\n  },\r\n  {\r\n    \"visualID\": 6,\r\n    \"displayName\": \"Knot Tying\",\r\n    \"description\": \"Place 100m of rope in a single expedition.\",\r\n    \"achievementType\": \"KnotTyingBadge\",\r\n    \"secret\": false,\r\n    \"testLocked\": false,\r\n    \"iconFile\": \"badge_6.png\"\r\n  },\r\n  {\r\n    \"visualID\": 11,\r\n    \"displayName\": \"Leave No Trace\",\r\n    \"description\": \"Escape the island without placing anything on the mountain.\",\r\n    \"achievementType\": \"LeaveNoTraceBadge\",\r\n    \"secret\": false,\r\n    \"testLocked\": false,\r\n    \"iconFile\": \"badge_11.png\"\r\n  },\r\n  {\r\n    \"visualID\": 26,\r\n    \"displayName\": \"Lone Wolf\",\r\n    \"description\": \"Escape the island in a solo expedition.\",\r\n    \"achievementType\": \"LoneWolfBadge\",\r\n    \"secret\": false,\r\n    \"testLocked\": false,\r\n    \"iconFile\": \"badge_26.png\"\r\n  },\r\n  {\r\n    \"visualID\": 10,\r\n    \"displayName\": \"Mentorship\",\r\n    \"description\": \"Have a 1-on-1 with the Scoutmaster.\",\r\n    \"achievementType\": \"MentorshipBadge\",\r\n    \"secret\": false,\r\n    \"testLocked\": false,\r\n    \"iconFile\": \"badge_10.png\"\r\n  },\r\n  {\r\n    \"visualID\": 9,\r\n    \"displayName\": \"Mycology\",\r\n    \"description\": \"Eat four different non-toxic mushrooms in a single expedition.\",\r\n    \"achievementType\": \"MycologyBadge\",\r\n    \"secret\": false,\r\n    \"testLocked\": false,\r\n    \"iconFile\": \"badge_9.png\"\r\n  },\r\n  {\r\n    \"visualID\": 30,\r\n    \"displayName\": \"Naturalist\",\r\n    \"description\": \"Escape the island without eating any packaged food.\",\r\n    \"achievementType\": \"NaturalistBadge\",\r\n    \"secret\": false,\r\n    \"testLocked\": false,\r\n    \"iconFile\": \"badge_30.png\"\r\n  },\r\n  {\r\n    \"visualID\": 0,\r\n    \"displayName\": \"Peakbadge\",\r\n    \"description\": \"Reach the PEAK.\",\r\n    \"achievementType\": \"PeakBadge\",\r\n    \"secret\": false,\r\n    \"testLocked\": true,\r\n    \"iconFile\": \"badge_0.png\"\r\n  },\r\n  {\r\n    \"visualID\": 19,\r\n    \"displayName\": \"Plunderer\",\r\n    \"description\": \"Open 15 luggages in a single expedition.\",\r\n    \"achievementType\": \"PlundererBadge\",\r\n    \"secret\": false,\r\n    \"testLocked\": false,\r\n    \"iconFile\": \"badge_19.png\"\r\n  },\r\n  {\r\n    \"visualID\": 15,\r\n    \"displayName\": \"Hasty\",\r\n    \"description\": \"Escape the island in under an hour.\",\r\n    \"achievementType\": \"SpeedClimberBadge\",\r\n    \"secret\": false,\r\n    \"testLocked\": false,\r\n    \"iconFile\": \"badge_15.png\"\r\n  },\r\n  {\r\n    \"visualID\": 5,\r\n    \"displayName\": \"Survivalist\",\r\n    \"description\": \"Escape the island without ever losing consciousness.\",\r\n    \"achievementType\": \"SurvivalistBadge\",\r\n    \"secret\": false,\r\n    \"testLocked\": false,\r\n    \"iconFile\": \"badge_5.png\"\r\n  },\r\n  {\r\n    \"visualID\": 14,\r\n    \"displayName\": \"Toxicology\",\r\n    \"description\": \"Restore 200 total poison by using items. \",\r\n    \"achievementType\": \"ToxicologyBadge\",\r\n    \"secret\": false,\r\n    \"testLocked\": false,\r\n    \"iconFile\": \"badge_14.png\"\r\n  },\r\n  {\r\n    \"visualID\": 2,\r\n    \"displayName\": \"Trailblazer\",\r\n    \"description\": \"Climb past the TROPICS.\",\r\n    \"achievementType\": \"TrailblazerBadge\",\r\n    \"secret\": false,\r\n    \"testLocked\": false,\r\n    \"iconFile\": \"badge_2.png\"\r\n  },\r\n  {\r\n    \"visualID\": 4,\r\n    \"displayName\": \"Volcanology\",\r\n    \"description\": \"Climb past the CALDERA.\",\r\n    \"achievementType\": \"VolcanologyBadge\",\r\n    \"secret\": false,\r\n    \"testLocked\": false,\r\n    \"iconFile\": \"badge_4.png\"\r\n  }\r\n]") ?? new List<BadgeEntry>();
				bool flag = list != null && list.Count >= list2.Count && HasAnyIcon(list);
				_data.badges = (flag ? list : list2);
				List<CosmeticEntry> list3 = LoadPart<List<CosmeticEntry>>(Path.Combine(DataDir, "cosmetics.json"));
				List<CosmeticEntry> list4 = JsonConvert.DeserializeObject<List<CosmeticEntry>>("[\r\n  {\r\n    \"slot\": \"skins\",\r\n    \"index\": 0,\r\n    \"textureFile\": \"skins_0.png\",\r\n    \"requiredAchievement\": \"NONE\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"skins\",\r\n    \"index\": 1,\r\n    \"textureFile\": \"skins_1.png\",\r\n    \"requiredAchievement\": \"NONE\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"skins\",\r\n    \"index\": 2,\r\n    \"textureFile\": \"skins_2.png\",\r\n    \"requiredAchievement\": \"NONE\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"skins\",\r\n    \"index\": 3,\r\n    \"textureFile\": \"skins_3.png\",\r\n    \"requiredAchievement\": \"NONE\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"skins\",\r\n    \"index\": 4,\r\n    \"textureFile\": \"skins_4.png\",\r\n    \"requiredAchievement\": \"NONE\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"skins\",\r\n    \"index\": 5,\r\n    \"textureFile\": \"skins_5.png\",\r\n    \"requiredAchievement\": \"NONE\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"skins\",\r\n    \"index\": 6,\r\n    \"textureFile\": \"skins_6.png\",\r\n    \"requiredAchievement\": \"NONE\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"skins\",\r\n    \"index\": 7,\r\n    \"textureFile\": \"skins_7.png\",\r\n    \"requiredAchievement\": \"NONE\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"skins\",\r\n    \"index\": 8,\r\n    \"textureFile\": \"skins_8.png\",\r\n    \"requiredAchievement\": \"NONE\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"eyes\",\r\n    \"index\": 0,\r\n    \"textureFile\": \"eyes_0.png\",\r\n    \"requiredAchievement\": \"NONE\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"eyes\",\r\n    \"index\": 1,\r\n    \"textureFile\": \"eyes_1.png\",\r\n    \"requiredAchievement\": \"NONE\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"eyes\",\r\n    \"index\": 2,\r\n    \"textureFile\": \"eyes_2.png\",\r\n    \"requiredAchievement\": \"NONE\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"eyes\",\r\n    \"index\": 3,\r\n    \"textureFile\": \"eyes_3.png\",\r\n    \"requiredAchievement\": \"NONE\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"eyes\",\r\n    \"index\": 4,\r\n    \"textureFile\": \"eyes_4.png\",\r\n    \"requiredAchievement\": \"NONE\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"eyes\",\r\n    \"index\": 5,\r\n    \"textureFile\": \"eyes_5.png\",\r\n    \"requiredAchievement\": \"NONE\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"eyes\",\r\n    \"index\": 6,\r\n    \"textureFile\": \"eyes_6.png\",\r\n    \"requiredAchievement\": \"NONE\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"eyes\",\r\n    \"index\": 7,\r\n    \"textureFile\": \"eyes_7.png\",\r\n    \"requiredAchievement\": \"NONE\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"eyes\",\r\n    \"index\": 8,\r\n    \"textureFile\": \"eyes_8.png\",\r\n    \"requiredAchievement\": \"NONE\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"eyes\",\r\n    \"index\": 9,\r\n    \"textureFile\": \"eyes_9.png\",\r\n    \"requiredAchievement\": \"NONE\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"eyes\",\r\n    \"index\": 10,\r\n    \"textureFile\": \"eyes_10.png\",\r\n    \"requiredAchievement\": \"NONE\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"eyes\",\r\n    \"index\": 11,\r\n    \"textureFile\": \"eyes_11.png\",\r\n    \"requiredAchievement\": \"NONE\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"eyes\",\r\n    \"index\": 12,\r\n    \"textureFile\": \"eyes_12.png\",\r\n    \"requiredAchievement\": \"NONE\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"eyes\",\r\n    \"index\": 13,\r\n    \"textureFile\": \"eyes_13.png\",\r\n    \"requiredAchievement\": \"NONE\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"eyes\",\r\n    \"index\": 14,\r\n    \"textureFile\": \"eyes_14.png\",\r\n    \"requiredAchievement\": \"BoulderingBadge\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"eyes\",\r\n    \"index\": 15,\r\n    \"textureFile\": \"eyes_15.png\",\r\n    \"requiredAchievement\": \"ArboristBadge\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"eyes\",\r\n    \"index\": 16,\r\n    \"textureFile\": \"eyes_16.png\",\r\n    \"requiredAchievement\": \"GourmandBadge\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"eyes\",\r\n    \"index\": 17,\r\n    \"textureFile\": \"eyes_17.png\",\r\n    \"requiredAchievement\": \"MentorshipBadge\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"mouths\",\r\n    \"index\": 0,\r\n    \"textureFile\": \"mouths_0.png\",\r\n    \"requiredAchievement\": \"NONE\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"mouths\",\r\n    \"index\": 1,\r\n    \"textureFile\": \"mouths_1.png\",\r\n    \"requiredAchievement\": \"NONE\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"mouths\",\r\n    \"index\": 2,\r\n    \"textureFile\": \"mouths_2.png\",\r\n    \"requiredAchievement\": \"NONE\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"mouths\",\r\n    \"index\": 3,\r\n    \"textureFile\": \"mouths_3.png\",\r\n    \"requiredAchievement\": \"NONE\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"mouths\",\r\n    \"index\": 4,\r\n    \"textureFile\": \"mouths_4.png\",\r\n    \"requiredAchievement\": \"NONE\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"mouths\",\r\n    \"index\": 5,\r\n    \"textureFile\": \"mouths_5.png\",\r\n    \"requiredAchievement\": \"NONE\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"mouths\",\r\n    \"index\": 6,\r\n    \"textureFile\": \"mouths_6.png\",\r\n    \"requiredAchievement\": \"NONE\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"mouths\",\r\n    \"index\": 7,\r\n    \"textureFile\": \"mouths_7.png\",\r\n    \"requiredAchievement\": \"NONE\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"mouths\",\r\n    \"index\": 8,\r\n    \"textureFile\": \"mouths_8.png\",\r\n    \"requiredAchievement\": \"NONE\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"mouths\",\r\n    \"index\": 9,\r\n    \"textureFile\": \"mouths_9.png\",\r\n    \"requiredAchievement\": \"NONE\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"mouths\",\r\n    \"index\": 10,\r\n    \"textureFile\": \"mouths_10.png\",\r\n    \"requiredAchievement\": \"NONE\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"mouths\",\r\n    \"index\": 11,\r\n    \"textureFile\": \"mouths_11.png\",\r\n    \"requiredAchievement\": \"NONE\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"mouths\",\r\n    \"index\": 12,\r\n    \"textureFile\": \"mouths_12.png\",\r\n    \"requiredAchievement\": \"NONE\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"mouths\",\r\n    \"index\": 13,\r\n    \"textureFile\": \"mouths_13.png\",\r\n    \"requiredAchievement\": \"NONE\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"mouths\",\r\n    \"index\": 14,\r\n    \"textureFile\": \"mouths_14.png\",\r\n    \"requiredAchievement\": \"NONE\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"mouths\",\r\n    \"index\": 15,\r\n    \"textureFile\": \"mouths_15.png\",\r\n    \"requiredAchievement\": \"ToxicologyBadge\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"mouths\",\r\n    \"index\": 16,\r\n    \"textureFile\": \"mouths_16.png\",\r\n    \"requiredAchievement\": \"GourmandBadge\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"mouths\",\r\n    \"index\": 17,\r\n    \"textureFile\": \"mouths_17.png\",\r\n    \"requiredAchievement\": \"ForagingBadge\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"mouths\",\r\n    \"index\": 18,\r\n    \"textureFile\": \"mouths_18.png\",\r\n    \"requiredAchievement\": \"ResourcefulnessBadge\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"accessories\",\r\n    \"index\": 0,\r\n    \"textureFile\": \"accessories_0.png\",\r\n    \"requiredAchievement\": \"NONE\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"accessories\",\r\n    \"index\": 1,\r\n    \"textureFile\": \"accessories_1.png\",\r\n    \"requiredAchievement\": \"NONE\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"accessories\",\r\n    \"index\": 2,\r\n    \"textureFile\": \"accessories_2.png\",\r\n    \"requiredAchievement\": \"NONE\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"accessories\",\r\n    \"index\": 3,\r\n    \"textureFile\": \"accessories_3.png\",\r\n    \"requiredAchievement\": \"NONE\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"accessories\",\r\n    \"index\": 4,\r\n    \"textureFile\": \"accessories_4.png\",\r\n    \"requiredAchievement\": \"NONE\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"accessories\",\r\n    \"index\": 5,\r\n    \"textureFile\": \"accessories_5.png\",\r\n    \"requiredAchievement\": \"NONE\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"accessories\",\r\n    \"index\": 6,\r\n    \"textureFile\": \"accessories_6.png\",\r\n    \"requiredAchievement\": \"NONE\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"accessories\",\r\n    \"index\": 7,\r\n    \"textureFile\": \"accessories_7.png\",\r\n    \"requiredAchievement\": \"NONE\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"accessories\",\r\n    \"index\": 8,\r\n    \"textureFile\": \"accessories_8.png\",\r\n    \"requiredAchievement\": \"NONE\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"accessories\",\r\n    \"index\": 9,\r\n    \"textureFile\": \"accessories_9.png\",\r\n    \"requiredAchievement\": \"NONE\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"accessories\",\r\n    \"index\": 10,\r\n    \"textureFile\": \"accessories_10.png\",\r\n    \"requiredAchievement\": \"NONE\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"accessories\",\r\n    \"index\": 11,\r\n    \"textureFile\": \"accessories_11.png\",\r\n    \"requiredAchievement\": \"NONE\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"accessories\",\r\n    \"index\": 12,\r\n    \"textureFile\": \"accessories_12.png\",\r\n    \"requiredAchievement\": \"NONE\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"accessories\",\r\n    \"index\": 13,\r\n    \"textureFile\": \"accessories_13.png\",\r\n    \"requiredAchievement\": \"NONE\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"accessories\",\r\n    \"index\": 14,\r\n    \"textureFile\": \"accessories_14.png\",\r\n    \"requiredAchievement\": \"KnotTyingBadge\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"accessories\",\r\n    \"index\": 15,\r\n    \"textureFile\": \"accessories_15.png\",\r\n    \"requiredAchievement\": \"PlundererBadge\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"accessories\",\r\n    \"index\": 16,\r\n    \"textureFile\": \"accessories_16.png\",\r\n    \"requiredAchievement\": \"BookwormBadge\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"accessories\",\r\n    \"index\": 17,\r\n    \"textureFile\": \"accessories_17.png\",\r\n    \"requiredAchievement\": \"LeaveNoTraceBadge\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"accessories\",\r\n    \"index\": 18,\r\n    \"textureFile\": \"accessories_18.png\",\r\n    \"requiredAchievement\": \"AstronomyBadge\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"accessories\",\r\n    \"index\": 19,\r\n    \"textureFile\": \"accessories_19.png\",\r\n    \"requiredAchievement\": \"MegaentomologyBadge\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"accessories\",\r\n    \"index\": 20,\r\n    \"textureFile\": \"accessories_20.png\",\r\n    \"requiredAchievement\": \"CalciumIntakeBadge\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"fits\",\r\n    \"index\": 0,\r\n    \"textureFile\": \"fits_0.png\",\r\n    \"requiredAchievement\": \"NONE\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"fits\",\r\n    \"index\": 1,\r\n    \"textureFile\": \"fits_1.png\",\r\n    \"requiredAchievement\": \"NONE\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"fits\",\r\n    \"index\": 2,\r\n    \"textureFile\": \"fits_2.png\",\r\n    \"requiredAchievement\": \"NONE\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"fits\",\r\n    \"index\": 3,\r\n    \"textureFile\": \"fits_3.png\",\r\n    \"requiredAchievement\": \"NONE\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"fits\",\r\n    \"index\": 4,\r\n    \"textureFile\": \"fits_4.png\",\r\n    \"requiredAchievement\": \"EmergencyPreparednessBadge\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"fits\",\r\n    \"index\": 5,\r\n    \"textureFile\": \"fits_5.png\",\r\n    \"requiredAchievement\": \"EmergencyPreparednessBadge\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"fits\",\r\n    \"index\": 6,\r\n    \"textureFile\": \"fits_6.png\",\r\n    \"requiredAchievement\": \"TriedYourBestBadge\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"fits\",\r\n    \"index\": 7,\r\n    \"textureFile\": \"fits_7.png\",\r\n    \"requiredAchievement\": \"TriedYourBestBadge\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"fits\",\r\n    \"index\": 8,\r\n    \"textureFile\": \"fits_8.png\",\r\n    \"requiredAchievement\": \"VolcanologyBadge\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"fits\",\r\n    \"index\": 9,\r\n    \"textureFile\": \"fits_9.png\",\r\n    \"requiredAchievement\": \"VolcanologyBadge\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"fits\",\r\n    \"index\": 10,\r\n    \"textureFile\": \"fits_10.png\",\r\n    \"requiredAchievement\": \"HappyCamperBadge\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"fits\",\r\n    \"index\": 11,\r\n    \"textureFile\": \"fits_11.png\",\r\n    \"requiredAchievement\": \"HappyCamperBadge\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"fits\",\r\n    \"index\": 12,\r\n    \"textureFile\": \"fits_12.png\",\r\n    \"requiredAchievement\": \"BalloonBadge\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"fits\",\r\n    \"index\": 13,\r\n    \"textureFile\": \"fits_13.png\",\r\n    \"requiredAchievement\": \"BalloonBadge\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"fits\",\r\n    \"index\": 14,\r\n    \"textureFile\": \"fits_14.png\",\r\n    \"requiredAchievement\": \"SurvivalistBadge\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"fits\",\r\n    \"index\": 15,\r\n    \"textureFile\": \"fits_15.png\",\r\n    \"requiredAchievement\": \"SurvivalistBadge\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"fits\",\r\n    \"index\": 16,\r\n    \"textureFile\": \"fits_16.png\",\r\n    \"requiredAchievement\": \"CoolCucumberBadge\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"fits\",\r\n    \"index\": 17,\r\n    \"textureFile\": \"fits_17.png\",\r\n    \"requiredAchievement\": \"AeronauticsBadge\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"fits\",\r\n    \"index\": 18,\r\n    \"textureFile\": \"fits_18.png\",\r\n    \"requiredAchievement\": \"AlpinistBadge\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"fits\",\r\n    \"index\": 19,\r\n    \"textureFile\": \"fits_19.png\",\r\n    \"requiredAchievement\": \"BundledUpBadge\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"fits\",\r\n    \"index\": 20,\r\n    \"textureFile\": \"fits_20.png\",\r\n    \"requiredAchievement\": \"BundledUpBadge\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"fits\",\r\n    \"index\": 21,\r\n    \"textureFile\": \"fits_21.png\",\r\n    \"requiredAchievement\": \"ForestryBadge\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"fits\",\r\n    \"index\": 22,\r\n    \"textureFile\": \"fits_22.png\",\r\n    \"requiredAchievement\": \"TreadLightlyBadge\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"fits\",\r\n    \"index\": 23,\r\n    \"textureFile\": \"fits_23.png\",\r\n    \"requiredAchievement\": \"WebSecurityBadge\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"fits\",\r\n    \"index\": 24,\r\n    \"textureFile\": \"fits_24.png\",\r\n    \"requiredAchievement\": \"DisasterResponseBadge\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"fits\",\r\n    \"index\": 25,\r\n    \"textureFile\": \"fits_25.png\",\r\n    \"requiredAchievement\": \"AppliedEsotericaBadge\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"fits\",\r\n    \"index\": 26,\r\n    \"textureFile\": \"fits_26.png\",\r\n    \"requiredAchievement\": \"MycoacrobaticsBadge\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"fits\",\r\n    \"index\": 27,\r\n    \"textureFile\": \"fits_27.png\",\r\n    \"requiredAchievement\": \"WellRestedBadge\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"fits\",\r\n    \"index\": 28,\r\n    \"textureFile\": \"fits_28.png\",\r\n    \"requiredAchievement\": \"MedievalHistoryBadge\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"fits\",\r\n    \"index\": 29,\r\n    \"textureFile\": \"fits_29.png\",\r\n    \"requiredAchievement\": \"JesterBadge\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"fits\",\r\n    \"index\": 30,\r\n    \"textureFile\": \"fits_30.png\",\r\n    \"requiredAchievement\": \"LastResortBadge\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"fits\",\r\n    \"index\": 31,\r\n    \"textureFile\": \"fits_31.png\",\r\n    \"requiredAchievement\": \"HangGlidingBadge\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"fits\",\r\n    \"index\": 32,\r\n    \"textureFile\": \"fits_32.png\",\r\n    \"requiredAchievement\": \"ExorcistBadge\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"fits\",\r\n    \"index\": 33,\r\n    \"textureFile\": \"fits_33.png\",\r\n    \"requiredAchievement\": \"RuleZeroBadge\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"hats\",\r\n    \"index\": 0,\r\n    \"textureFile\": \"hats_0.png\",\r\n    \"requiredAchievement\": \"NONE\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"hats\",\r\n    \"index\": 1,\r\n    \"textureFile\": \"hats_1.png\",\r\n    \"requiredAchievement\": \"NONE\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"hats\",\r\n    \"index\": 2,\r\n    \"textureFile\": \"hats_2.png\",\r\n    \"requiredAchievement\": \"TrailblazerBadge\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"hats\",\r\n    \"index\": 3,\r\n    \"textureFile\": \"hats_3.png\",\r\n    \"requiredAchievement\": \"BingBongBadge\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"hats\",\r\n    \"index\": 4,\r\n    \"textureFile\": \"hats_4.png\",\r\n    \"requiredAchievement\": \"BeachcomberBadge\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"hats\",\r\n    \"index\": 5,\r\n    \"textureFile\": \"hats_5.png\",\r\n    \"requiredAchievement\": \"AlpinistBadge\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"hats\",\r\n    \"index\": 6,\r\n    \"textureFile\": \"hats_6.png\",\r\n    \"requiredAchievement\": \"ClutchBadge\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"hats\",\r\n    \"index\": 7,\r\n    \"textureFile\": \"hats_7.png\",\r\n    \"requiredAchievement\": \"FirstAidBadge\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"hats\",\r\n    \"index\": 8,\r\n    \"textureFile\": \"hats_8.png\",\r\n    \"requiredAchievement\": \"NaturalistBadge\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"hats\",\r\n    \"index\": 9,\r\n    \"textureFile\": \"hats_9.png\",\r\n    \"requiredAchievement\": \"MycologyBadge\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"hats\",\r\n    \"index\": 10,\r\n    \"textureFile\": \"hats_10.png\",\r\n    \"requiredAchievement\": \"AnimalSerenadingBadge\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"hats\",\r\n    \"index\": 11,\r\n    \"textureFile\": \"hats_11.png\",\r\n    \"requiredAchievement\": \"SpeedClimberBadge\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"hats\",\r\n    \"index\": 12,\r\n    \"textureFile\": \"hats_12.png\",\r\n    \"requiredAchievement\": \"PeakBadge\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"hats\",\r\n    \"index\": 13,\r\n    \"textureFile\": \"hats_13.png\",\r\n    \"requiredAchievement\": \"AscenderBadge\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"hats\",\r\n    \"index\": 14,\r\n    \"textureFile\": \"hats_14.png\",\r\n    \"requiredAchievement\": \"EnduranceBadge\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"hats\",\r\n    \"index\": 15,\r\n    \"textureFile\": \"hats_15.png\",\r\n    \"requiredAchievement\": \"CookingBadge\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"hats\",\r\n    \"index\": 16,\r\n    \"textureFile\": \"hats_16.png\",\r\n    \"requiredAchievement\": \"EsotericaBadge\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"hats\",\r\n    \"index\": 17,\r\n    \"textureFile\": \"hats_17.png\",\r\n    \"requiredAchievement\": \"LoneWolfBadge\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"hats\",\r\n    \"index\": 18,\r\n    \"textureFile\": \"hats_18.png\",\r\n    \"requiredAchievement\": \"NONE\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"Crown\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"hats\",\r\n    \"index\": 19,\r\n    \"textureFile\": \"hats_19.png\",\r\n    \"requiredAchievement\": \"NONE\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"Goat\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"hats\",\r\n    \"index\": 20,\r\n    \"textureFile\": \"hats_20.png\",\r\n    \"requiredAchievement\": \"NomadBadge\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"hats\",\r\n    \"index\": 21,\r\n    \"textureFile\": \"hats_21.png\",\r\n    \"requiredAchievement\": \"UltimateBadge\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"hats\",\r\n    \"index\": 22,\r\n    \"textureFile\": \"hats_22.png\",\r\n    \"requiredAchievement\": \"NeedlepointBadge\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"hats\",\r\n    \"index\": 23,\r\n    \"textureFile\": \"hats_23.png\",\r\n    \"requiredAchievement\": \"CoolCucumberBadge\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"hats\",\r\n    \"index\": 24,\r\n    \"textureFile\": \"hats_24.png\",\r\n    \"requiredAchievement\": \"TwentyFourKaratBadge\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"hats\",\r\n    \"index\": 25,\r\n    \"textureFile\": \"hats_25.png\",\r\n    \"requiredAchievement\": \"DaredevilBadge\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"hats\",\r\n    \"index\": 26,\r\n    \"textureFile\": \"hats_26.png\",\r\n    \"requiredAchievement\": \"AeronauticsBadge\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"hats\",\r\n    \"index\": 27,\r\n    \"textureFile\": \"hats_27.png\",\r\n    \"requiredAchievement\": \"UndeadEncounterBadge\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"hats\",\r\n    \"index\": 28,\r\n    \"textureFile\": \"hats_28.png\",\r\n    \"requiredAchievement\": \"WebSecurityBadge\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"hats\",\r\n    \"index\": 29,\r\n    \"textureFile\": \"hats_29.png\",\r\n    \"requiredAchievement\": \"AdvancedMycologyBadge\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"hats\",\r\n    \"index\": 30,\r\n    \"textureFile\": \"hats_30.png\",\r\n    \"requiredAchievement\": \"ForestryBadge\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"hats\",\r\n    \"index\": 31,\r\n    \"textureFile\": \"hats_31.png\",\r\n    \"requiredAchievement\": \"TreadLightlyBadge\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"hats\",\r\n    \"index\": 32,\r\n    \"textureFile\": \"hats_32.png\",\r\n    \"requiredAchievement\": \"DisasterResponseBadge\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"hats\",\r\n    \"index\": 33,\r\n    \"textureFile\": \"hats_33.png\",\r\n    \"requiredAchievement\": \"CompetitiveEatingBadge\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"hats\",\r\n    \"index\": 34,\r\n    \"textureFile\": \"hats_34.png\",\r\n    \"requiredAchievement\": \"MycoacrobaticsBadge\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"hats\",\r\n    \"index\": 35,\r\n    \"textureFile\": \"hats_35.png\",\r\n    \"requiredAchievement\": \"CryptogastronomyBadge\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"hats\",\r\n    \"index\": 36,\r\n    \"textureFile\": \"hats_36.png\",\r\n    \"requiredAchievement\": \"WandererBadge\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"hats\",\r\n    \"index\": 37,\r\n    \"textureFile\": \"hats_37.png\",\r\n    \"requiredAchievement\": \"JesterBadge\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"hats\",\r\n    \"index\": 38,\r\n    \"textureFile\": \"hats_38.png\",\r\n    \"requiredAchievement\": \"WellRestedBadge\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"hats\",\r\n    \"index\": 39,\r\n    \"textureFile\": \"hats_39.png\",\r\n    \"requiredAchievement\": \"ArcheryBadge\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"hats\",\r\n    \"index\": 40,\r\n    \"textureFile\": \"hats_40.png\",\r\n    \"requiredAchievement\": \"LastResortBadge\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"hats\",\r\n    \"index\": 41,\r\n    \"textureFile\": \"hats_41.png\",\r\n    \"requiredAchievement\": \"MedievalHistoryBadge\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"hats\",\r\n    \"index\": 42,\r\n    \"textureFile\": \"hats_42.png\",\r\n    \"requiredAchievement\": \"BellringerBadge\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"hats\",\r\n    \"index\": 43,\r\n    \"textureFile\": \"hats_43.png\",\r\n    \"requiredAchievement\": \"ExorcistBadge\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"hats\",\r\n    \"index\": 44,\r\n    \"textureFile\": \"hats_44.png\",\r\n    \"requiredAchievement\": \"RuleZeroBadge\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"sashes\",\r\n    \"index\": 0,\r\n    \"textureFile\": \"sashes_0.png\",\r\n    \"requiredAchievement\": \"NONE\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"sashes\",\r\n    \"index\": 1,\r\n    \"textureFile\": \"sashes_1.png\",\r\n    \"requiredAchievement\": \"NONE\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": true,\r\n    \"requiredAscent\": 1,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"sashes\",\r\n    \"index\": 2,\r\n    \"textureFile\": \"sashes_2.png\",\r\n    \"requiredAchievement\": \"NONE\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": true,\r\n    \"requiredAscent\": 2,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"sashes\",\r\n    \"index\": 3,\r\n    \"textureFile\": \"sashes_3.png\",\r\n    \"requiredAchievement\": \"NONE\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": true,\r\n    \"requiredAscent\": 3,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"sashes\",\r\n    \"index\": 4,\r\n    \"textureFile\": \"sashes_4.png\",\r\n    \"requiredAchievement\": \"NONE\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": true,\r\n    \"requiredAscent\": 4,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"sashes\",\r\n    \"index\": 5,\r\n    \"textureFile\": \"sashes_5.png\",\r\n    \"requiredAchievement\": \"NONE\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": true,\r\n    \"requiredAscent\": 5,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"sashes\",\r\n    \"index\": 6,\r\n    \"textureFile\": \"sashes_6.png\",\r\n    \"requiredAchievement\": \"NONE\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": true,\r\n    \"requiredAscent\": 6,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"sashes\",\r\n    \"index\": 7,\r\n    \"textureFile\": \"sashes_7.png\",\r\n    \"requiredAchievement\": \"NONE\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": true,\r\n    \"requiredAscent\": 7,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"sashes\",\r\n    \"index\": 8,\r\n    \"textureFile\": \"sashes_8.png\",\r\n    \"requiredAchievement\": \"NONE\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": true,\r\n    \"requiredAscent\": 8,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"sashes\",\r\n    \"index\": 9,\r\n    \"textureFile\": \"sashes_9.png\",\r\n    \"requiredAchievement\": \"NONE\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": true,\r\n    \"requiredAscent\": 9,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"medals\",\r\n    \"index\": 0,\r\n    \"textureFile\": \"medals_0.png\",\r\n    \"requiredAchievement\": \"NONE\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"medals\",\r\n    \"index\": 1,\r\n    \"textureFile\": \"medals_1.png\",\r\n    \"requiredAchievement\": \"NONE\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"None\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"special\",\r\n    \"index\": 0,\r\n    \"textureFile\": \"special_0.png\",\r\n    \"requiredAchievement\": \"NONE\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"Goat\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  },\r\n  {\r\n    \"slot\": \"special\",\r\n    \"index\": 1,\r\n    \"textureFile\": \"special_1.png\",\r\n    \"requiredAchievement\": \"NONE\",\r\n    \"requiredSteamStat\": \"NONE\",\r\n    \"requiredSteamStatValue\": 1,\r\n    \"requiresAscent\": false,\r\n    \"requiredAscent\": 0,\r\n    \"customRequirement\": \"Crown\",\r\n    \"isBlank\": false,\r\n    \"testLocked\": false\r\n  }\r\n]") ?? new List<CosmeticEntry>();
				bool flag2 = list3 != null && list3.Count >= list4.Count && HasAnyTextureFile(list3);
				_data.cosmetics = (flag2 ? list3 : list4);
				List<AchievementRequirementEntry> list5 = LoadPart<List<AchievementRequirementEntry>>(Path.Combine(DataDir, "achievements.json"));
				List<AchievementRequirementEntry> list6 = JsonConvert.DeserializeObject<List<AchievementRequirementEntry>>("[\r\n  {\r\n    \"achievementType\": \"KnotTyingBadge\",\r\n    \"kind\": \"runbased\",\r\n    \"statType\": \"RopePlaced\",\r\n    \"requiredValue\": 100\r\n  },\r\n  {\r\n    \"achievementType\": \"ClutchBadge\",\r\n    \"kind\": \"runbased\",\r\n    \"statType\": \"ScoutsResurrected\",\r\n    \"requiredValue\": 3\r\n  },\r\n  {\r\n    \"achievementType\": \"PlundererBadge\",\r\n    \"kind\": \"runbased\",\r\n    \"statType\": \"LuggageOpened\",\r\n    \"requiredValue\": 15\r\n  },\r\n  {\r\n    \"achievementType\": \"FirstAidBadge\",\r\n    \"kind\": \"runbased\",\r\n    \"statType\": \"FriendsHealedAmount\",\r\n    \"requiredValue\": 20\r\n  },\r\n  {\r\n    \"achievementType\": \"JesterBadge\",\r\n    \"kind\": \"runbased\",\r\n    \"statType\": \"ClownLuggageOpened\",\r\n    \"requiredValue\": 2\r\n  },\r\n  {\r\n    \"achievementType\": \"ArcheryBadge\",\r\n    \"kind\": \"runbased\",\r\n    \"statType\": \"ArrowsRemoved\",\r\n    \"requiredValue\": 10\r\n  },\r\n  {\r\n    \"achievementType\": \"ForestryBadge\",\r\n    \"kind\": \"steamstat\",\r\n    \"statType\": \"GotBadge_Forestry\",\r\n    \"requiredValue\": 1\r\n  },\r\n  {\r\n    \"achievementType\": \"TreadLightlyBadge\",\r\n    \"kind\": \"steamstat\",\r\n    \"statType\": \"GotBadge_TreadLightly\",\r\n    \"requiredValue\": 1\r\n  },\r\n  {\r\n    \"achievementType\": \"WebSecurityBadge\",\r\n    \"kind\": \"steamstat\",\r\n    \"statType\": \"GotBadge_WebSecurity\",\r\n    \"requiredValue\": 1\r\n  },\r\n  {\r\n    \"achievementType\": \"UndeadEncounterBadge\",\r\n    \"kind\": \"steamstat\",\r\n    \"statType\": \"GotBadge_UndeadEncounter\",\r\n    \"requiredValue\": 1\r\n  },\r\n  {\r\n    \"achievementType\": \"AdvancedMycologyBadge\",\r\n    \"kind\": \"steamstat\",\r\n    \"statType\": \"GotBadge_AdvancedMycology\",\r\n    \"requiredValue\": 1\r\n  },\r\n  {\r\n    \"achievementType\": \"DisasterResponseBadge\",\r\n    \"kind\": \"steamstat\",\r\n    \"statType\": \"GotBadge_DisasterResponse\",\r\n    \"requiredValue\": 1\r\n  },\r\n  {\r\n    \"achievementType\": \"CalciumIntakeBadge\",\r\n    \"kind\": \"steamstat\",\r\n    \"statType\": \"DamageBlockedByMilk\",\r\n    \"requiredValue\": 100\r\n  },\r\n  {\r\n    \"achievementType\": \"CompetitiveEatingBadge\",\r\n    \"kind\": \"steamstat\",\r\n    \"statType\": \"GotBadge_CompetitiveEating\",\r\n    \"requiredValue\": 1\r\n  },\r\n  {\r\n    \"achievementType\": \"AppliedEsotericaBadge\",\r\n    \"kind\": \"steamstat\",\r\n    \"statType\": \"GotBadge_AppliedEsoterica\",\r\n    \"requiredValue\": 1\r\n  },\r\n  {\r\n    \"achievementType\": \"MycoacrobaticsBadge\",\r\n    \"kind\": \"steamstat\",\r\n    \"statType\": \"GotBadge_Mycoacrobatics\",\r\n    \"requiredValue\": 1\r\n  },\r\n  {\r\n    \"achievementType\": \"CryptogastronomyBadge\",\r\n    \"kind\": \"steamstat\",\r\n    \"statType\": \"GotBadge_Cryptogastronomy\",\r\n    \"requiredValue\": 1\r\n  },\r\n  {\r\n    \"achievementType\": \"WandererBadge\",\r\n    \"kind\": \"steamstat\",\r\n    \"statType\": \"GotBadge_Wanderer\",\r\n    \"requiredValue\": 1\r\n  },\r\n  {\r\n    \"achievementType\": \"BellringerBadge\",\r\n    \"kind\": \"steamstat\",\r\n    \"statType\": \"GotBadge_Bellringer\",\r\n    \"requiredValue\": 1\r\n  },\r\n  {\r\n    \"achievementType\": \"WellRestedBadge\",\r\n    \"kind\": \"steamstat\",\r\n    \"statType\": \"GotBadge_WellRested\",\r\n    \"requiredValue\": 1\r\n  },\r\n  {\r\n    \"achievementType\": \"JesterBadge\",\r\n    \"kind\": \"steamstat\",\r\n    \"statType\": \"GotBadge_Jester\",\r\n    \"requiredValue\": 1\r\n  },\r\n  {\r\n    \"achievementType\": \"HangGlidingBadge\",\r\n    \"kind\": \"steamstat\",\r\n    \"statType\": \"GotBadge_HangGliding\",\r\n    \"requiredValue\": 1\r\n  },\r\n  {\r\n    \"achievementType\": \"MedievalHistoryBadge\",\r\n    \"kind\": \"steamstat\",\r\n    \"statType\": \"GotBadge_MedievalHistory\",\r\n    \"requiredValue\": 1\r\n  },\r\n  {\r\n    \"achievementType\": \"LastResortBadge\",\r\n    \"kind\": \"steamstat\",\r\n    \"statType\": \"GotBadge_LastResort\",\r\n    \"requiredValue\": 1\r\n  },\r\n  {\r\n    \"achievementType\": \"ExorcistBadge\",\r\n    \"kind\": \"steamstat\",\r\n    \"statType\": \"GotBadge_Exorcist\",\r\n    \"requiredValue\": 1\r\n  },\r\n  {\r\n    \"achievementType\": \"ArcheryBadge\",\r\n    \"kind\": \"steamstat\",\r\n    \"statType\": \"GotBadge_Archery\",\r\n    \"requiredValue\": 1\r\n  },\r\n  {\r\n    \"achievementType\": \"RuleZeroBadge\",\r\n    \"kind\": \"steamstat\",\r\n    \"statType\": \"GotBadge_RuleZero\",\r\n    \"requiredValue\": 1\r\n  }\r\n]") ?? new List<AchievementRequirementEntry>();
				_data.achievementRequirements = ((list5 != null && list5.Count >= list6.Count) ? list5 : list6);
				string path = (string.IsNullOrEmpty(TextureDir) ? Path.Combine(DataDir, "textures") : TextureDir);
				foreach (CosmeticEntry cosmetic in _data.cosmetics)
				{
					CosmeticIndex[Key(cosmetic.slot, cosmetic.index)] = cosmetic;
					if (!string.IsNullOrEmpty(cosmetic.textureFile))
					{
						LoadTexture(Path.Combine(path, cosmetic.textureFile), cosmetic.textureFile);
					}
				}
				foreach (BadgeEntry badge in _data.badges)
				{
					if (!string.IsNullOrEmpty(badge.iconFile))
					{
						LoadTexture(Path.Combine(path, badge.iconFile), badge.iconFile);
					}
				}
				Ready = _data.badges.Count > 0 || _data.cosmetics.Count > 0;
				Log.LogInfo((object)$"[BadgeHandbook] 数据加载完成: {_data.badges.Count} 徽章 / {_data.cosmetics.Count} 外观");
			}
			catch (Exception ex)
			{
				Log.LogError((object)("[BadgeHandbook] 数据加载失败: " + ex));
			}
		}

		public static void Prewarm()
		{
			try
			{
				FindBadgeData(new BadgeEntry
				{
					achievementType = "NONE"
				});
			}
			catch
			{
			}
		}

		public static string Key(string slot, int index)
		{
			return slot + "_" + index;
		}

		public static CosmeticEntry FindCosmetic(string slot, int index)
		{
			if (!Ready)
			{
				return null;
			}
			CosmeticIndex.TryGetValue(Key(slot, index), out var value);
			return value;
		}

		public static Texture2D GetTexture(string file)
		{
			if (!Textures.TryGetValue(file, out var value))
			{
				return null;
			}
			return value;
		}

		public static Texture GetBadgeTexture(BadgeEntry b)
		{
			if (b == null)
			{
				return null;
			}
			BadgeData val = FindBadgeData(b);
			if ((Object)(object)val != (Object)null && (Object)(object)val.icon != (Object)null)
			{
				ForceMaxMipmap(val.icon);
			}
			if (!((Object)(object)val != (Object)null))
			{
				return null;
			}
			return val.icon;
		}

		public static Color GetCosmeticColor(CosmeticEntry c)
		{
			//IL_0003: Unknown result type (might be due to invalid IL or missing references)
			//IL_0018: Unknown result type (might be due to invalid IL or missing references)
			//IL_0184: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a3: Unknown result type (might be due to invalid IL or missing references)
			//IL_019c: Unknown result type (might be due to invalid IL or missing references)
			if (c == null)
			{
				return Color.white;
			}
			Customization instance = Singleton<Customization>.Instance;
			if ((Object)(object)instance == (Object)null)
			{
				return Color.white;
			}
			CustomizationOption[] array = null;
			switch (c.slot)
			{
			case "fits":
				array = instance.fits;
				break;
			case "hats":
				array = instance.hats;
				break;
			case "sashes":
				array = instance.sashes;
				break;
			case "medals":
				array = instance.medals;
				break;
			case "accessories":
				array = instance.accessories;
				break;
			case "skins":
				array = instance.skins;
				break;
			case "eyes":
				array = instance.eyes;
				break;
			case "mouths":
				array = instance.mouths;
				break;
			}
			if (array == null || c.index < 0 || c.index >= array.Length)
			{
				return Color.white;
			}
			CustomizationOption val = array[c.index];
			if (!((Object)(object)val != (Object)null))
			{
				return Color.white;
			}
			return val.color;
		}

		public static Material GetEyeMaterial()
		{
			if ((Object)(object)_eyeMaterial != (Object)null)
			{
				return _eyeMaterial;
			}
			try
			{
				PassportManager instance = PassportManager.instance;
				PassportButton[] buttons;
				if ((Object)(object)instance != (Object)null && instance.buttons != null)
				{
					buttons = instance.buttons;
					foreach (PassportButton val in buttons)
					{
						if ((Object)(object)val != (Object)null && (Object)(object)val.eyeMaterial != (Object)null)
						{
							_eyeMaterial = val.eyeMaterial;
							return _eyeMaterial;
						}
					}
				}
				buttons = Resources.FindObjectsOfTypeAll<PassportButton>();
				foreach (PassportButton val2 in buttons)
				{
					if ((Object)(object)val2 != (Object)null && (Object)(object)val2.eyeMaterial != (Object)null)
					{
						_eyeMaterial = val2.eyeMaterial;
						return _eyeMaterial;
					}
				}
			}
			catch
			{
			}
			return null;
		}

		public static Texture GetCosmeticTexture(CosmeticEntry c)
		{
			if (c == null)
			{
				return null;
			}
			Customization instance = Singleton<Customization>.Instance;
			if ((Object)(object)instance == (Object)null)
			{
				return null;
			}
			CustomizationOption[] array = null;
			switch (c.slot)
			{
			case "fits":
				array = instance.fits;
				break;
			case "hats":
				array = instance.hats;
				break;
			case "sashes":
				array = instance.sashes;
				break;
			case "medals":
				array = instance.medals;
				break;
			case "accessories":
				array = instance.accessories;
				break;
			case "skins":
				array = instance.skins;
				break;
			case "eyes":
				array = instance.eyes;
				break;
			case "mouths":
				array = instance.mouths;
				break;
			}
			if (array == null || c.index < 0 || c.index >= array.Length)
			{
				return null;
			}
			CustomizationOption val = array[c.index];
			if ((Object)(object)val != (Object)null && (Object)(object)val.texture != (Object)null)
			{
				ForceMaxMipmap(val.texture);
			}
			if (!((Object)(object)val != (Object)null))
			{
				return null;
			}
			return val.texture;
		}

		private static void ForceMaxMipmap(Texture tex)
		{
			Texture2D val = (Texture2D)(object)((tex is Texture2D) ? tex : null);
			if ((Object)(object)val == (Object)null)
			{
				return;
			}
			try
			{
				val.ignoreMipmapLimit = true;
				val.requestedMipmapLevel = 0;
			}
			catch
			{
			}
		}

		private static BadgeData FindBadgeData(BadgeEntry b)
		{
			if (_badgeDataByAchievement == null)
			{
				_badgeDataByAchievement = new Dictionary<string, BadgeData>();
				_badgeDataByVisual = new Dictionary<int, BadgeData>();
				BadgeData[] array = Resources.FindObjectsOfTypeAll<BadgeData>();
				foreach (BadgeData val in array)
				{
					if (!((Object)(object)val == (Object)null))
					{
						if (!_badgeDataByAchievement.ContainsKey(((object)Unsafe.As<ACHIEVEMENTTYPE, ACHIEVEMENTTYPE>(ref val.linkedAchievement)/*cast due to .constrained prefix*/).ToString()))
						{
							_badgeDataByAchievement[((object)Unsafe.As<ACHIEVEMENTTYPE, ACHIEVEMENTTYPE>(ref val.linkedAchievement)/*cast due to .constrained prefix*/).ToString()] = val;
						}
						if (!_badgeDataByVisual.ContainsKey(val.visualID))
						{
							_badgeDataByVisual[val.visualID] = val;
						}
					}
				}
			}
			if (!string.IsNullOrEmpty(b.achievementType) && _badgeDataByAchievement.TryGetValue(b.achievementType, out var value))
			{
				return value;
			}
			if (_badgeDataByVisual.TryGetValue(b.visualID, out var value2))
			{
				return value2;
			}
			return null;
		}

		public static List<CosmeticEntry> AllCosmetics()
		{
			return _data?.cosmetics ?? new List<CosmeticEntry>();
		}

		public static List<BadgeEntry> AllBadges()
		{
			return _data?.badges ?? new List<BadgeEntry>();
		}

		public static string BadgeName(string achievementType)
		{
			return Translations.BadgeName(achievementType);
		}

		public static string BadgeDesc(string achievementType)
		{
			return Translations.BadgeDesc(achievementType);
		}

		public static bool IsDefaultUnlock(CosmeticEntry c)
		{
			if (c == null)
			{
				return true;
			}
			if ((c.requiredAchievement == null || c.requiredAchievement == "NONE") && (c.requiredSteamStat == null || c.requiredSteamStat == "NONE") && !c.requiresAscent)
			{
				if (c.customRequirement != null)
				{
					return c.customRequirement == "None";
				}
				return true;
			}
			return false;
		}

		public static bool IsBadgeUnlocked(string achievementType)
		{
			//IL_0028: Unknown result type (might be due to invalid IL or missing references)
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			//IL_003e: Unknown result type (might be due to invalid IL or missing references)
			if (string.IsNullOrEmpty(achievementType) || achievementType == "NONE")
			{
				return false;
			}
			try
			{
				ACHIEVEMENTTYPE val = (ACHIEVEMENTTYPE)Enum.Parse(typeof(ACHIEVEMENTTYPE), achievementType);
				AchievementManager instance = Singleton<AchievementManager>.Instance;
				return (Object)(object)instance != (Object)null && instance.IsAchievementUnlocked(val);
			}
			catch
			{
				return false;
			}
		}

		public static bool IsCosmeticUnlocked(CosmeticEntry c)
		{
			if (c == null)
			{
				return false;
			}
			if (IsDefaultUnlock(c))
			{
				return true;
			}
			Customization instance = Singleton<Customization>.Instance;
			if ((Object)(object)instance == (Object)null)
			{
				return false;
			}
			CustomizationOption[] array = null;
			switch (c.slot)
			{
			case "fits":
				array = instance.fits;
				break;
			case "hats":
				array = instance.hats;
				break;
			case "sashes":
				array = instance.sashes;
				break;
			case "medals":
				array = instance.medals;
				break;
			case "accessories":
				array = instance.accessories;
				break;
			case "skins":
				array = instance.skins;
				break;
			case "eyes":
				array = instance.eyes;
				break;
			case "mouths":
				array = instance.mouths;
				break;
			}
			if (array == null || c.index < 0 || c.index >= array.Length)
			{
				return false;
			}
			CustomizationOption val = array[c.index];
			if ((Object)(object)val != (Object)null)
			{
				return !val.IsLocked;
			}
			return false;
		}

		public static string UnlockText(CosmeticEntry c)
		{
			if (c == null)
			{
				return "";
			}
			if (c.isBlank)
			{
				return Translations.T("(空白占位,无实际外观)", "(Blank placeholder, no actual appearance)");
			}
			if (c.testLocked)
			{
				return Translations.T("(测试锁定物品)", "(Test-locked item)");
			}
			List<string> list = new List<string>();
			if (c.requiredAchievement != null && c.requiredAchievement != "NONE")
			{
				list.Add(Translations.T("◆ 需要徽章:「", "- Requires badge: ") + Translations.BadgeName(c.requiredAchievement) + Translations.T("」", ""));
				string text = Translations.BadgeDesc(c.requiredAchievement);
				if (!string.IsNullOrEmpty(text))
				{
					list.Add(Translations.T("   徽章条件: ", "   Badge condition: ") + text);
				}
			}
			if (c.requiredSteamStat != null && c.requiredSteamStat != "NONE")
			{
				list.Add(Translations.T("◆ Steam统计: ", "- Steam stat: ") + Translations.StatName(c.requiredSteamStat) + Translations.T(" 达到 ", " reach ") + c.requiredSteamStatValue);
			}
			if (c.requiresAscent)
			{
				list.Add(Translations.T("◆ 攀登次数: ", "- Ascents: ") + c.requiredAscent);
			}
			if (c.customRequirement != null && c.customRequirement != "None")
			{
				if (c.customRequirement == "Goat")
				{
					list.Add(Translations.T("◆ 特殊条件: 最大攀登次数达到8(山羊帽)", "- Special: Reach max ascent 8 (Goat hat)"));
				}
				else if (c.customRequirement == "Crown")
				{
					list.Add(Translations.T("◆ 特殊条件: 完成全部基础徽章(皇冠帽)", "- Special: Unlock all base badges (Crown hat)"));
				}
				else
				{
					list.Add(Translations.T("◆ 特殊条件: ", "- Special: ") + c.customRequirement);
				}
			}
			if (list.Count == 0)
			{
				return Translations.T("默认解锁(无需任何条件)", "Unlocked by default (no requirements)");
			}
			return string.Join("\n", list);
		}

		private static bool HasAnyIcon(List<BadgeEntry> list)
		{
			if (list == null)
			{
				return false;
			}
			foreach (BadgeEntry item in list)
			{
				if (item != null && !string.IsNullOrEmpty(item.iconFile))
				{
					return true;
				}
			}
			re