Decompiled source of Peak Badge Handbook v1.0.2
plugins/peak-badge-handbook/peak-badge-handbook.dll
Decompiled a month ago
The result has been truncated due to the large size, download it to view full contents!
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