Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
Decompiled source of RemoteOpAchievementFix v1.0.1
plugins/RemoteOpAchievementFix.dll
Decompiled 5 hours agousing System; using System.Collections.Generic; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Security.Permissions; using BepInEx; using On.RoR2.Achievements; using RoR2; using RoR2.Achievements; using RoR2.Achievements.Bandit2; using RoR2.Achievements.Captain; using RoR2.Achievements.Commando; using RoR2.Achievements.Croco; using RoR2.Achievements.Engi; using RoR2.Achievements.Huntress; using RoR2.Achievements.Loader; using RoR2.Achievements.Mage; using RoR2.Achievements.Merc; using RoR2.Achievements.Railgunner; using RoR2.Achievements.Toolbot; using RoR2.Achievements.Treebot; using RoR2.Achievements.VoidSurvivor; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("0.0.0.0")] namespace FluxSquido.RemoteOpAchievementFix; [BepInPlugin("FluxSquido.RemoteOpAchievementFix", "RemoteOpAchievementFix", "1.0.1")] public sealed class RemoteOpAchievementFixPlugin : BaseUnityPlugin { public const string PluginGuid = "FluxSquido.RemoteOpAchievementFix"; public const string PluginName = "RemoteOpAchievementFix"; public const string PluginVersion = "1.0.1"; private void Awake() { RemoteOpAchievements.Init(); } } internal static class RemoteOpAchievements { private static readonly Type[] runEventTypes = new Type[22] { typeof(BasePerSurvivorClearGameMonsoonAchievement), typeof(BasePerSurvivorBeatBrotherMaxKarmaAchievement), typeof(BasePerSurvivorClearGameHexesAchievement), typeof(BasePerSurvivorClearUltimaAchievement), typeof(BasePerSurvivorClearChampRushAchievement), typeof(BasePerSurvivorPurgeAchievement), typeof(BasePerSurvivorDecompileAchievement), typeof(CrocoClearGameRestackAchievement), typeof(ToolbotBeatArenaLaterAchievement), typeof(CommandoMeridianEventTriggerAchievement), typeof(HuntressMeridianEventTriggerAchievement), typeof(Bandit2MeridianEventTriggerAchievement), typeof(ToolbotMeridianEventTriggerAchievement), typeof(EngiMeridianEventTriggerAchievement), typeof(MageMeridianEventTriggerAchievement), typeof(MercMeridianEventTriggerAchievement), typeof(TreebotMeridianEventTriggerAchievement), typeof(LoaderMeridianEventTriggerAchievement), typeof(CrocoMeridianEventTriggerAchievement), typeof(CaptainMeridianEventTriggerAchievement), typeof(RailgunnerMeridianEventTriggerAchievement), typeof(VoidSurvivorMeridianEventTriggerAchievement) }; private static readonly Dictionary<Type, bool> runEventCache = new Dictionary<Type, bool>(); internal static void Init() { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Expected O, but got Unknown BaseAchievement.HandleBodyChangedForBodyRequirement += new hook_HandleBodyChangedForBodyRequirement(HandleBodyChanged); } private static void HandleBodyChanged(orig_HandleBodyChangedForBodyRequirement orig, BaseAchievement self) { if (!IsRemoteOpBody(self.localUser.cachedBody) || !IsRunEvent(((object)self).GetType())) { orig.Invoke(self); } } private static bool IsRemoteOpBody(CharacterBody body) { //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_0018: Invalid comparison between Unknown and I4 //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Unknown result type (might be due to invalid IL or missing references) if (!Object.op_Implicit((Object)(object)body)) { return false; } DroneIndex droneIndexFromBodyIndex = DroneCatalog.GetDroneIndexFromBodyIndex(body.bodyIndex); if ((int)droneIndexFromBodyIndex != -1) { return DroneCatalog.GetRemoteOpBodyIndexFromDroneIndex(droneIndexFromBodyIndex) == body.bodyIndex; } return false; } private static bool IsRunEvent(Type type) { if (!runEventCache.TryGetValue(type, out var value)) { value = (runEventCache[type] = Array.Exists(runEventTypes, (Type t) => t.IsAssignableFrom(type))); } return value; } }