The BepInEx console will not appear when launching like it does for other games on Thunderstore (you can turn it back on in your BepInEx.cfg file). If your PEAK crashes on startup, add -dx12 to your launch parameters.
Decompiled source of Badges For Bobas Hats v0.1.2
BadgesForBobasHats.dll
Decompiled a day agousing System; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using Badges_for_Bobas_Hats.Patches; using BepInEx; using BepInEx.Logging; using HarmonyLib; using Microsoft.CodeAnalysis; using MoreBadges; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: IgnoresAccessChecksTo("Assembly-CSharp")] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyCompany("BadgesForBobasHats")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("0.1.0.0")] [assembly: AssemblyInformationalVersion("0.1.0+663763ccd91a647453daff747580c446df2da96f")] [assembly: AssemblyProduct("BadgesForBobasHats")] [assembly: AssemblyTitle("Badges_for_Bobas_Hats")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("0.1.0.0")] [module: UnverifiableCode] [module: RefSafetyRules(11)] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)] internal sealed class NullableAttribute : Attribute { public readonly byte[] NullableFlags; public NullableAttribute(byte P_0) { NullableFlags = new byte[1] { P_0 }; } public NullableAttribute(byte[] P_0) { NullableFlags = P_0; } } [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Method | AttributeTargets.Interface | AttributeTargets.Delegate, AllowMultiple = false, Inherited = false)] internal sealed class NullableContextAttribute : Attribute { public readonly byte Flag; public NullableContextAttribute(byte P_0) { Flag = P_0; } } [CompilerGenerated] [Microsoft.CodeAnalysis.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 BepInEx { [AttributeUsage(AttributeTargets.Class, Inherited = false, AllowMultiple = false)] [Conditional("CodeGeneration")] internal sealed class BepInAutoPluginAttribute : Attribute { public BepInAutoPluginAttribute(string? id = null, string? name = null, string? version = null) { } } } namespace BepInEx.Preloader.Core.Patching { [AttributeUsage(AttributeTargets.Class, Inherited = false, AllowMultiple = false)] [Conditional("CodeGeneration")] internal sealed class PatcherAutoPluginAttribute : Attribute { public PatcherAutoPluginAttribute(string? id = null, string? name = null, string? version = null) { } } } namespace Badges_for_Bobas_Hats { public class AchievementFlagManager { public static bool HasConsumedRed; public static bool HasConsumedOrange; public static bool HasConsumedYellow; public static bool HasConsumedGreen; public static bool HasConsumedBlue; public static bool HasConsumedPurple; public static bool HasConsumedPink; public static bool HasConsumedNaturalFood; public static bool HasHealedThisGame; static AchievementFlagManager() { HasConsumedRed = false; HasConsumedOrange = false; HasConsumedYellow = false; HasConsumedGreen = false; HasConsumedBlue = false; HasConsumedPurple = false; HasConsumedPink = false; HasConsumedNaturalFood = false; HasHealedThisGame = false; GlobalEvents.OnSomeoneWonRun = (Action)Delegate.Combine(GlobalEvents.OnSomeoneWonRun, new Action(UnlockWinBasedAchievements)); GlobalEvents.OnRunEnded = (Action)Delegate.Combine(GlobalEvents.OnRunEnded, new Action(ResetAchievementFlags)); } private static void ResetAchievementFlags() { FieldInfo[] fields = typeof(AchievementFlagManager).GetFields(BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic); foreach (FieldInfo fieldInfo in fields) { if (fieldInfo.FieldType == typeof(bool)) { fieldInfo.SetValue(null, false); } } } private static void UnlockWinBasedAchievements() { if (!HasConsumedNaturalFood) { MoreBadgesPlugin.AddProgress("Badge_Badges_For_Bobas_Hats_Mustard", 1); } } } public static class BadgeNames { public const string BadgePrefix = "Badge_Badges_For_Bobas_Hats_"; public const string BoingBadge = "Badge_Badges_For_Bobas_Hats_Boing"; public const string BoingBadge2 = "Badge_Badges_For_Bobas_Hats_Boing_2"; public const string BoingBadge3 = "Badge_Badges_For_Bobas_Hats_Boing_3"; public const string BoingBadge4 = "Badge_Badges_For_Bobas_Hats_Boing_4"; public const string BoingBadge5 = "Badge_Badges_For_Bobas_Hats_Boing_5"; public const string BoingBadge6 = "Badge_Badges_For_Bobas_Hats_Boing_6"; public const string BoingBadge7 = "Badge_Badges_For_Bobas_Hats_Boing_7"; public const string BoingBadge8 = "Badge_Badges_For_Bobas_Hats_Boing_8"; public const string BoingBadge9 = "Badge_Badges_For_Bobas_Hats_Boing_9"; public const string ToastBadge = "Badge_Badges_For_Bobas_Hats_Toast"; public const string MagicBeanVineBadge = "Badge_Badges_For_Bobas_Hats_Magic_Bean_Vine"; public const string BearBadge = "Badge_Badges_For_Bobas_Hats_Bear"; public const string DiscoBadge = "Badge_Badges_For_Bobas_Hats_Disco"; public const string JamiroBadge = "Badge_Badges_For_Bobas_Hats_Jamiro"; public const string RainbowBadge = "Badge_Badges_For_Bobas_Hats_Rainbow"; public const string MustardBadge = "Badge_Badges_For_Bobas_Hats_Mustard"; public const string PenguinBadge = "Badge_Badges_For_Bobas_Hats_Penguin"; public const string ChairBadge = "Badge_Badges_For_Bobas_Hats_Chair"; public const string BowBadge = "Badge_Badges_For_Bobas_Hats_Bow"; } public static class BadgeRegistry { private static readonly Texture2D PlaceholderBadgeIcon = Texture2D.whiteTexture; private static Dictionary<string, Texture2D> _badgeIcons = new Dictionary<string, Texture2D>(); public static void Init() { LoadBadgeResources(); RegisterBadges(); } private static List<string> CreateFakeLocalisations(string badgeInfo) { int num = 13; List<string> list = new List<string>(); for (int i = 0; i < num; i++) { list.Add(badgeInfo); } return list; } private static void RegisterBadges() { //IL_0040: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Expected O, but got Unknown //IL_008b: Unknown result type (might be due to invalid IL or missing references) //IL_0091: Expected O, but got Unknown //IL_00d6: Unknown result type (might be due to invalid IL or missing references) //IL_00dc: Expected O, but got Unknown //IL_0121: Unknown result type (might be due to invalid IL or missing references) //IL_0127: Expected O, but got Unknown //IL_016c: Unknown result type (might be due to invalid IL or missing references) //IL_0173: Expected O, but got Unknown //IL_01b9: Unknown result type (might be due to invalid IL or missing references) //IL_01c0: Expected O, but got Unknown //IL_0206: Unknown result type (might be due to invalid IL or missing references) //IL_020d: Expected O, but got Unknown //IL_0253: Unknown result type (might be due to invalid IL or missing references) //IL_025a: Expected O, but got Unknown //IL_02a0: Unknown result type (might be due to invalid IL or missing references) //IL_02a7: Expected O, but got Unknown //IL_02ed: Unknown result type (might be due to invalid IL or missing references) //IL_02f4: Expected O, but got Unknown RegisterLabubuBadges(); Texture2D val = _badgeIcons["Badge_Badges_For_Bobas_Hats_Toast"]; CustomBadge val2 = new CustomBadge("Badge_Badges_For_Bobas_Hats_Toast", "YOU'RE TOAST!", "Singed to the absolute max.", CreateFakeLocalisations("YOU'RE TOAST!"), CreateFakeLocalisations("Singed to the absolute max."), val, 1, true, false); MoreBadgesPlugin.RegisterBadge(val2, "Boba_toast"); val = _badgeIcons["Badge_Badges_For_Bobas_Hats_Magic_Bean_Vine"]; CustomBadge val3 = new CustomBadge("Badge_Badges_For_Bobas_Hats_Magic_Bean_Vine", "GREEN THUMB!", "Grow a magical vine.", CreateFakeLocalisations("GREEN THUMB!"), CreateFakeLocalisations("You traded the family cow for what??"), val, 1, true, false); MoreBadgesPlugin.RegisterBadge(val3, "Boba_sprout"); val = _badgeIcons["Badge_Badges_For_Bobas_Hats_Bear"]; CustomBadge val4 = new CustomBadge("Badge_Badges_For_Bobas_Hats_Bear", "MMM HONEY!", "Consume the nectar of the gods.", CreateFakeLocalisations("MMM HONEY!"), CreateFakeLocalisations("Consume the nectar of the gods."), val, 1, true, false); MoreBadgesPlugin.RegisterBadge(val4, "Boba_bear"); val = _badgeIcons["Badge_Badges_For_Bobas_Hats_Disco"]; CustomBadge val5 = new CustomBadge("Badge_Badges_For_Bobas_Hats_Disco", "SCOUT RAVE!", "Dance at an epic performance.", CreateFakeLocalisations("SCOUT RAVE!"), CreateFakeLocalisations("Dance at an epic performance."), val, 1, true, false); MoreBadgesPlugin.RegisterBadge(val5, "Boba_disco"); val = _badgeIcons["Badge_Badges_For_Bobas_Hats_Jamiro"]; CustomBadge val6 = new CustomBadge("Badge_Badges_For_Bobas_Hats_Jamiro", "VIRTUAL INSANITY!", "Move like magic with your arm out.", CreateFakeLocalisations("VIRTUAL INSANITY!"), CreateFakeLocalisations("Move like magic with your arm out."), val, 1, true, false); MoreBadgesPlugin.RegisterBadge(val6, "Boba_jamiro_hat"); val = _badgeIcons["Badge_Badges_For_Bobas_Hats_Rainbow"]; CustomBadge val7 = new CustomBadge("Badge_Badges_For_Bobas_Hats_Rainbow", "TASTE THE RAINBOW!", "Eat a rainbow of fruit.", CreateFakeLocalisations("TASTE THE RAINBOW!"), CreateFakeLocalisations("Eat a rainbow of fruit."), val, 1, true, false); MoreBadgesPlugin.RegisterBadge(val7, "Boba_knit_rainbow"); val = _badgeIcons["Badge_Badges_For_Bobas_Hats_Mustard"]; CustomBadge val8 = new CustomBadge("Badge_Badges_For_Bobas_Hats_Mustard", "HEALTH ADVERSE!", "Fruit and veg? Over your dead body.", CreateFakeLocalisations("HEALTH ADVERSE!"), CreateFakeLocalisations("Fruit and veg? Over your dead body."), val, 1, true, false); MoreBadgesPlugin.RegisterBadge(val8, "Boba_mustard"); val = _badgeIcons["Badge_Badges_For_Bobas_Hats_Penguin"]; CustomBadge val9 = new CustomBadge("Badge_Badges_For_Bobas_Hats_Penguin", "CHILLY!", "It's a bit nippy out isn't it?", CreateFakeLocalisations("CHILLY!"), CreateFakeLocalisations("It's a bit nippy out isn't it?"), val, 1, true, false); MoreBadgesPlugin.RegisterBadge(val9, "Boba_penguin"); val = _badgeIcons["Badge_Badges_For_Bobas_Hats_Chair"]; CustomBadge val10 = new CustomBadge("Badge_Badges_For_Bobas_Hats_Chair", "ETERNAL SIT!", "Be carried into the afterlife.", CreateFakeLocalisations("ETERNAL SIT!"), CreateFakeLocalisations("Be carried into the afterlife."), val, 1, true, false); MoreBadgesPlugin.RegisterBadge(val10, "Boba_chair_hat"); val = _badgeIcons["Badge_Badges_For_Bobas_Hats_Bow"]; CustomBadge val11 = new CustomBadge("Badge_Badges_For_Bobas_Hats_Bow", "SUCH A CUTIE!", "Give the bestest boys some pets.", CreateFakeLocalisations("SUCH A CUTIE!"), CreateFakeLocalisations("Give the bestest furballs some pets."), val, 1, true, false); MoreBadgesPlugin.RegisterBadge(val11, "Boba_bow"); } private static void LoadBadgeResources() { //IL_00d1: Unknown result type (might be due to invalid IL or missing references) //IL_00d8: Expected O, but got Unknown Assembly executingAssembly = Assembly.GetExecutingAssembly(); string[] manifestResourceNames = executingAssembly.GetManifestResourceNames(); string[] array = manifestResourceNames; foreach (string text in array) { Plugin.Logger.LogInfo((object)("Trying to load resource: " + text)); if (!text.EndsWith(".png") || !text.Contains(".Resources.")) { continue; } using Stream stream = executingAssembly.GetManifestResourceStream(text); if (stream == null) { Plugin.Logger.LogError((object)("Failed to load resource: " + text)); continue; } byte[] array2 = new byte[stream.Length]; stream.Read(array2, 0, array2.Length); string text2 = "Badge_Badges_For_Bobas_Hats_" + text.Split('.')[^2]; Texture2D val = new Texture2D(2, 2, (TextureFormat)4, false); ImageConversion.LoadImage(val, array2); _badgeIcons[text2] = val; Plugin.Logger.LogInfo((object)$"Loaded embedded badge texture {text2} ({((Texture)val).width}x{((Texture)val).height})"); } } private static void RegisterLabubuBadges() { //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_0041: Expected O, but got Unknown //IL_008a: Unknown result type (might be due to invalid IL or missing references) //IL_0090: Expected O, but got Unknown //IL_00d9: Unknown result type (might be due to invalid IL or missing references) //IL_00df: Expected O, but got Unknown //IL_0128: Unknown result type (might be due to invalid IL or missing references) //IL_012e: Expected O, but got Unknown //IL_0177: Unknown result type (might be due to invalid IL or missing references) //IL_017e: Expected O, but got Unknown //IL_01c8: Unknown result type (might be due to invalid IL or missing references) //IL_01cf: Expected O, but got Unknown //IL_0219: Unknown result type (might be due to invalid IL or missing references) //IL_0220: Expected O, but got Unknown //IL_026a: Unknown result type (might be due to invalid IL or missing references) //IL_0271: Expected O, but got Unknown //IL_02bb: Unknown result type (might be due to invalid IL or missing references) //IL_02c2: Expected O, but got Unknown Texture2D val = _badgeIcons["Badge_Badges_For_Bobas_Hats_Boing"]; CustomBadge val2 = new CustomBadge("Badge_Badges_For_Bobas_Hats_Boing", "BOING!", "Jump 50 times.", CreateFakeLocalisations("BOING!"), CreateFakeLocalisations("Jump 50 times."), val, 50, false, false); MoreBadgesPlugin.RegisterBadge(val2, "Boba_labubu"); val = _badgeIcons["Badge_Badges_For_Bobas_Hats_Boing_2"]; CustomBadge val3 = new CustomBadge("Badge_Badges_For_Bobas_Hats_Boing_2", "BOING... AGAIN?!", "Jump 250 times.", CreateFakeLocalisations("BOING... AGAIN?!"), CreateFakeLocalisations("Jump 250 times."), val, 250, false, false); MoreBadgesPlugin.RegisterBadge(val3, "Boba_labubu_blue"); val = _badgeIcons["Badge_Badges_For_Bobas_Hats_Boing_3"]; CustomBadge val4 = new CustomBadge("Badge_Badges_For_Bobas_Hats_Boing_3", "BOING... AGAIN AGAIN?!", "Jump 500 times.", CreateFakeLocalisations("BOING... AGAIN AGAIN?!"), CreateFakeLocalisations("Jump 500 times."), val, 500, false, false); MoreBadgesPlugin.RegisterBadge(val4, "Boba_labubu_cyan"); val = _badgeIcons["Badge_Badges_For_Bobas_Hats_Boing_4"]; CustomBadge val5 = new CustomBadge("Badge_Badges_For_Bobas_Hats_Boing_4", "BOING... AGAIN AGAIN AGAIN?!", "Jump 1000 times.", CreateFakeLocalisations("BOING... AGAIN AGAIN AGAIN?!"), CreateFakeLocalisations("Jump 1000 times."), val, 1000, false, false); MoreBadgesPlugin.RegisterBadge(val5, "Boba_labubu_green"); val = _badgeIcons["Badge_Badges_For_Bobas_Hats_Boing_5"]; CustomBadge val6 = new CustomBadge("Badge_Badges_For_Bobas_Hats_Boing_5", "BOING... DON'T YOU GET TIRED?!", "Jump 2000 times.", CreateFakeLocalisations("BOING... DON'T YOU GET TIRED?!"), CreateFakeLocalisations("Jump 2000 times."), val, 2000, false, false); MoreBadgesPlugin.RegisterBadge(val6, "Boba_labubu_orange"); val = _badgeIcons["Badge_Badges_For_Bobas_Hats_Boing_6"]; CustomBadge val7 = new CustomBadge("Badge_Badges_For_Bobas_Hats_Boing_6", "BOING... YOU REALLY LIKE JUMPING!", "Jump 3000 times.", CreateFakeLocalisations("BOING... YOU REALLY LIKE JUMPING!"), CreateFakeLocalisations("Jump 3000 times."), val, 3000, false, false); MoreBadgesPlugin.RegisterBadge(val7, "Boba_labubu_pink"); val = _badgeIcons["Badge_Badges_For_Bobas_Hats_Boing_7"]; CustomBadge val8 = new CustomBadge("Badge_Badges_For_Bobas_Hats_Boing_7", "BOING.. WOW YOU DON'T STOP!", "Jump 5000 times.", CreateFakeLocalisations("BOING.. WOW YOU DON'T STOP!"), CreateFakeLocalisations("Jump 5000 times."), val, 5000, false, false); MoreBadgesPlugin.RegisterBadge(val8, "Boba_labubu_purple"); val = _badgeIcons["Badge_Badges_For_Bobas_Hats_Boing_8"]; CustomBadge val9 = new CustomBadge("Badge_Badges_For_Bobas_Hats_Boing_8", "BOING... BASICALLY A RABIT!", "Jump 7500 times.", CreateFakeLocalisations("BOING... BASICALLY A RABIT!"), CreateFakeLocalisations("Jump 7500 times."), val, 7500, false, false); MoreBadgesPlugin.RegisterBadge(val9, "Boba_labubu_red"); val = _badgeIcons["Badge_Badges_For_Bobas_Hats_Boing_9"]; CustomBadge val10 = new CustomBadge("Badge_Badges_For_Bobas_Hats_Boing_9", "BOING... YOU'VE JUMPED HOW MANY TIMES?!", "Jump 10000 times.", CreateFakeLocalisations("BOING... YOU'VE JUMPED HOW MANY TIMES?!"), CreateFakeLocalisations("Jump 10000 times."), val, 10000, false, false); MoreBadgesPlugin.RegisterBadge(val10, "Boba_labubu_yellow"); } } [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInPlugin("BadgesForBobasHats", "Badges_for_Bobas_Hats", "0.1.0")] public class Plugin : BaseUnityPlugin { internal static ManualLogSource Logger; private readonly Harmony _harmony = new Harmony("BadgesForBobasHats"); public const string Id = "BadgesForBobasHats"; public static string Name => "Badges_for_Bobas_Hats"; public static string Version => "0.1.0"; private void Awake() { Logger = ((BaseUnityPlugin)this).Logger; Logger.LogInfo((object)("Plugin " + Name + " is loaded!")); BadgeRegistry.Init(); Logger.LogInfo((object)"Badges for Bobas Hats are loaded!"); _harmony.PatchAll(typeof(CharacterOnJumpPatch)); _harmony.PatchAll(typeof(CharacterAfflictionsAddStatusPatch)); _harmony.PatchAll(typeof(MagicBeanGrowVineRPCPatch)); _harmony.PatchAll(typeof(ActionRestoreHungerRunActionPatch)); _harmony.PatchAll(typeof(CharacterAnimationsRPCAPlayRemove)); _harmony.PatchAll(typeof(BugleSFXRPCStartTootPatch)); _harmony.PatchAll(typeof(BugleSFXRPCEndTootPatch)); _harmony.PatchAll(typeof(PlayerMoveZoneAddForceToCharacterPatch)); _harmony.PatchAll(typeof(BodypartOnCollisionEnterPatch)); _harmony.PatchAll(typeof(CharacterRPCADiePatch)); } } } namespace Badges_for_Bobas_Hats.Patches { public class ActionRestoreHungerRunActionPatch { private const int HoneycombItemID = 38; [HarmonyPatch(typeof(Action_RestoreHunger), "RunAction")] [HarmonyPostfix] private static void Postfix(Action_RestoreHunger __instance) { if (((ItemActionBase)__instance).item.itemID == 38) { MoreBadgesPlugin.AddProgress("Badge_Badges_For_Bobas_Hats_Bear", 1); } if (!MoreBadgesPlugin.GetCustomBadgeStatus("Badge_Badges_For_Bobas_Hats_Rainbow").isUnlocked) { if (((Object)((ItemActionBase)__instance).item).name.ToLower().Contains("red")) { AchievementFlagManager.HasConsumedRed = true; } if (((Object)((ItemActionBase)__instance).item).name.ToLower().Contains("orange")) { AchievementFlagManager.HasConsumedOrange = true; } if (((Object)((ItemActionBase)__instance).item).name.ToLower().Contains("yellow")) { AchievementFlagManager.HasConsumedYellow = true; } if (((Object)((ItemActionBase)__instance).item).name.ToLower().Contains("green")) { AchievementFlagManager.HasConsumedGreen = true; } if (((Object)((ItemActionBase)__instance).item).name.ToLower().Contains("blue")) { AchievementFlagManager.HasConsumedBlue = true; } if (((Object)((ItemActionBase)__instance).item).name.ToLower().Contains("purple")) { AchievementFlagManager.HasConsumedPurple = true; } if (((Object)((ItemActionBase)__instance).item).name.ToLower().Contains("pink")) { AchievementFlagManager.HasConsumedPink = true; } Plugin.Logger.LogInfo((object)($"Red {AchievementFlagManager.HasConsumedRed} Orange {AchievementFlagManager.HasConsumedOrange} Yellow {AchievementFlagManager.HasConsumedYellow}" + $"Green {AchievementFlagManager.HasConsumedGreen} Blue {AchievementFlagManager.HasConsumedBlue} Purple {AchievementFlagManager.HasConsumedPurple}" + $"Pink {AchievementFlagManager.HasConsumedPink}")); if (AchievementFlagManager.HasConsumedRed && AchievementFlagManager.HasConsumedOrange && AchievementFlagManager.HasConsumedYellow && AchievementFlagManager.HasConsumedGreen && AchievementFlagManager.HasConsumedBlue && AchievementFlagManager.HasConsumedPurple && AchievementFlagManager.HasConsumedPink) { MoreBadgesPlugin.AddProgress("Badge_Badges_For_Bobas_Hats_Rainbow", 1); } } if (!MoreBadgesPlugin.GetCustomBadgeStatus("Badge_Badges_For_Bobas_Hats_Mustard").isUnlocked) { if (((Object)((ItemActionBase)__instance).item).name.ToLower().Contains("coconut")) { AchievementFlagManager.HasConsumedNaturalFood = true; } if (((Object)((ItemActionBase)__instance).item).name.ToLower().Contains("berry")) { AchievementFlagManager.HasConsumedNaturalFood = true; } if (((Object)((ItemActionBase)__instance).item).name.ToLower().Contains("root")) { AchievementFlagManager.HasConsumedNaturalFood = true; } if (((Object)((ItemActionBase)__instance).item).name.ToLower().Contains("shroom")) { AchievementFlagManager.HasConsumedNaturalFood = true; } Plugin.Logger.LogInfo((object)$"Anti-naturalist: {AchievementFlagManager.HasConsumedNaturalFood}"); } } } public class BodypartOnCollisionEnterPatch { [HarmonyPatch(typeof(Bodypart), "OnCollisionEnter")] [HarmonyPostfix] private static void Postfix(Bodypart __instance, Collision collision) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Invalid comparison between Unknown and I4 if ((int)__instance.partType != 8 || !__instance.character.input.useSecondaryIsPressed) { return; } Transform val = ((Component)collision.collider).transform; while ((Object)(object)val != (Object)null) { if (((Object)val).name.StartsWith("Capybara")) { MoreBadgesPlugin.AddProgress("Badge_Badges_For_Bobas_Hats_Bow", 1); break; } val = val.parent; } } } public class BugleSFXRPCEndTootPatch { [HarmonyPatch(typeof(BugleSFX), "RPC_EndToot")] [HarmonyPostfix] private static void Postfix(BugleSFX __instance) { BugleSFXRPCStartTootPatch.BuglesPlaying--; } } public class BugleSFXRPCStartTootPatch { public static int BuglesPlaying; [HarmonyPatch(typeof(BugleSFX), "RPC_StartToot")] [HarmonyPostfix] private static void Postfix(BugleSFX __instance) { BuglesPlaying++; Plugin.Logger.LogInfo((object)$"Toot happened at: {Time.time} Dance time: {CharacterAnimationsRPCAPlayRemove.EmoteTime}"); if (CharacterAnimationsRPCAPlayRemove.EmoteTime + 3f >= Time.time) { MoreBadgesPlugin.AddProgress("Badge_Badges_For_Bobas_Hats_Disco", 1); } } } public class CharacterAfflictionsAddStatusPatch { [HarmonyPatch(typeof(CharacterAfflictions), "AddStatus")] [HarmonyPostfix] private static void Postfix(CharacterAfflictions __instance, STATUSTYPE statusType) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0003: Expected I4, but got Unknown //IL_0003: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Invalid comparison between Unknown and I4 //IL_0033: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Invalid comparison between Unknown and I4 int num = (int)statusType; if ((int)statusType == 8) { if (__instance.currentStatuses[num] >= 1f) { MoreBadgesPlugin.AddProgress("Badge_Badges_For_Bobas_Hats_Toast", 1); } } else if ((int)statusType == 2 && __instance.currentStatuses[num] >= 1f) { MoreBadgesPlugin.AddProgress("Badge_Badges_For_Bobas_Hats_Penguin", 1); } } } public class CharacterAnimationsRPCAPlayRemove { public static float EmoteTime; [HarmonyPatch(typeof(CharacterAnimations), "RPCA_PlayRemove")] [HarmonyPostfix] private static void Postfix(BugleSFX __instance, string emoteName) { EmoteTime = Time.time; Plugin.Logger.LogInfo((object)$"Dance happened at: {EmoteTime}"); if (BugleSFXRPCStartTootPatch.BuglesPlaying > 0 && emoteName.Equals("A_Scout_Emote_Dance1")) { MoreBadgesPlugin.AddProgress("Badge_Badges_For_Bobas_Hats_Disco", 1); } } } public class CharacterOnJumpPatch { [HarmonyPatch(typeof(Character), "OnJump")] [HarmonyPostfix] private static void Postfix(Character __instance) { MoreBadgesPlugin.AddProgress("Badge_Badges_For_Bobas_Hats_Boing", 1); MoreBadgesPlugin.AddProgress("Badge_Badges_For_Bobas_Hats_Boing_2", 1); MoreBadgesPlugin.AddProgress("Badge_Badges_For_Bobas_Hats_Boing_3", 1); MoreBadgesPlugin.AddProgress("Badge_Badges_For_Bobas_Hats_Boing_4", 1); MoreBadgesPlugin.AddProgress("Badge_Badges_For_Bobas_Hats_Boing_5", 1); MoreBadgesPlugin.AddProgress("Badge_Badges_For_Bobas_Hats_Boing_6", 1); MoreBadgesPlugin.AddProgress("Badge_Badges_For_Bobas_Hats_Boing_7", 1); MoreBadgesPlugin.AddProgress("Badge_Badges_For_Bobas_Hats_Boing_8", 1); MoreBadgesPlugin.AddProgress("Badge_Badges_For_Bobas_Hats_Boing_9", 1); } } public class CharacterRPCADiePatch { [HarmonyPatch(typeof(Character), "RPCA_Die")] [HarmonyPrefix] private static void Prefix(Character __instance) { if (__instance.data.isCarried) { MoreBadgesPlugin.AddProgress("Badge_Badges_For_Bobas_Hats_Chair", 1); } } } public class MagicBeanGrowVineRPCPatch { [HarmonyPatch(typeof(MagicBean), "GrowVineRPC")] [HarmonyPostfix] private static void Postfix() { MoreBadgesPlugin.AddProgress("Badge_Badges_For_Bobas_Hats_Magic_Bean_Vine", 1); } } public class PlayerMoveZoneAddForceToCharacterPatch { private static float _startTime = 0f; private static float _lastTime = 0f; private static readonly float DurationRequired = 5f; [HarmonyPatch(typeof(PlayerMoveZone), "AddForceToCharacter")] [HarmonyPostfix] private static void Postfix(PlayerMoveZone __instance) { if (Time.time - _lastTime > 1f) { _startTime = Time.time; } if (Character.localCharacter.input.useSecondaryIsPressed) { _lastTime = Time.time; } if (_lastTime - _startTime > DurationRequired) { MoreBadgesPlugin.AddProgress("Badge_Badges_For_Bobas_Hats_Jamiro", 1); } } } } namespace System.Runtime.CompilerServices { [AttributeUsage(AttributeTargets.Assembly, AllowMultiple = true)] internal sealed class IgnoresAccessChecksToAttribute : Attribute { public IgnoresAccessChecksToAttribute(string assemblyName) { } } }