Please disclose if your mod was created primarily 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 ThorsLeap v1.0.2
ThorsLeap/ThorsLeap.dll
Decompiled 2 years agousing System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Configuration; using HarmonyLib; using JetBrains.Annotations; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: AssemblyTitle("NoMovementPenalty")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("NoMovementPenalty")] [assembly: AssemblyCopyright("Copyright © 2024")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("05078777-8b4c-43fd-98ec-887e0f886aae")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: TargetFramework(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] namespace ThorsLeap { [BepInPlugin("posixone_ThorsLeap", "Thor's Leap", "1.0.2")] public class Main : BaseUnityPlugin { public const string MODNAME = "Thor's Leap"; public const string AUTHOR = "posixone"; public const string GUID = "posixone_ThorsLeap"; public const string VERSION = "1.0.2"; public const string utilityItem = ""; public static bool isOnGround; public static ConfigEntry<bool> modEnable; private void Awake() { //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_002c: Expected O, but got Unknown //IL_002c: Expected O, but got Unknown //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_003c: Expected O, but got Unknown modEnable = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("Global", "modEnable"), true, new ConfigDescription("Set this to true to enable and false to disable this mod.", (AcceptableValueBase)null, Array.Empty<object>())); Harmony val = new Harmony("posixone_ThorsLeap"); Assembly executingAssembly = Assembly.GetExecutingAssembly(); if (modEnable.Value) { val.PatchAll(executingAssembly); } } } } namespace ThorsLeap.FeatherFall { [HarmonyPatch(typeof(Humanoid), "UpdateEquipmentStatusEffects")] public class FeatherFall_Humanoid_UpdateEquipmentStatusEffects_Patch { [UsedImplicitly] public static void Postfix(Humanoid __instance) { Player val = (Player)(object)((__instance is Player) ? __instance : null); if (val == null) { return; } StatusEffect statusEffect = ObjectDB.instance.GetStatusEffect("SlowFall".GetHashCode()); if (!((Object)(object)statusEffect == (Object)null)) { bool flag = ((Humanoid)val).m_equipmentStatusEffects.Contains(statusEffect); ((Humanoid)val).m_equipmentStatusEffects.Add(statusEffect); ((Character)val).m_seman.AddStatusEffect(statusEffect, false, 0, 0f); string text = string.Join(", ", ((Humanoid)val).m_equipmentStatusEffects.Select((StatusEffect x) => ((Object)x).name)); } } } } namespace ThorsLeap.TLDoubleJump { [HarmonyPatch] public static class TLDoubleJump { [HarmonyPatch(typeof(Character), "Jump")] public static class Character_Jump_Patch { public static bool Prefix(Character __instance) { if (__instance.IsPlayer()) { TLIsJumping = true; TLIsDoubleJumping = false; TLFirstCallToIsOnGround = false; } return true; } public static void Postfix(Character __instance) { if (__instance.IsPlayer()) { TLIsJumping = false; TLIsDoubleJumping = false; } } } [HarmonyPatch(typeof(Character), "IsOnGround")] public static class Character_IsOnGround_Patch { public static void Postfix(Character __instance, ref bool __result) { if (!TLFirstCallToIsOnGround && __instance.IsPlayer() && !__result && TLIsJumping && HasDoubleJumpCharge(__instance)) { TLFirstCallToIsOnGround = true; __result = true; TLIsDoubleJumping = true; } } } [HarmonyPatch(typeof(Player), "OnJump")] public static class Player_OnJump_Patch { public static void Postfix(Player __instance) { if (TLIsJumping && TLIsDoubleJumping) { UseDoubleJumpCharge((Character)(object)__instance); } } } [HarmonyPatch(typeof(Character), "ResetGroundContact")] public static class Character_ResetGroundContact_Patch { public static bool Prefix(Character __instance) { if (!__instance.IsPlayer()) { return true; } TLGroundContactTracker.TryGetValue(__instance, out var value); if (__instance.m_groundContact && value != __instance.m_groundContact) { ResetDoubleJumpCharges(__instance); } TLGroundContactTracker[__instance] = __instance.m_groundContact; return true; } } [HarmonyPatch(typeof(Humanoid), "EquipItem")] public static class Humanoid_EquipItem_Patch { public static void Postfix(Humanoid __instance) { ResetDoubleJumpCharges((Character)(object)__instance); } } [HarmonyPatch(typeof(Humanoid), "UnequipItem")] public static class Humanoid_UnequipItem_Patch { public static void Postfix(Humanoid __instance) { ResetDoubleJumpCharges((Character)(object)__instance); } } public const string TLDoubleJumpChargeKey = "TLDoubleJump"; public static bool TLIsJumping; public static bool TLIsDoubleJumping; public static bool TLFirstCallToIsOnGround; public static readonly Dictionary<Character, bool> TLGroundContactTracker = new Dictionary<Character, bool>(); public static bool HasDoubleJumpCharge(Character TLcharacter) { int @int = TLcharacter.m_nview.GetZDO().GetInt("TLDoubleJump", 0); return @int > 0; } public static void UseDoubleJumpCharge(Character TLcharacter) { int @int = TLcharacter.m_nview.GetZDO().GetInt("TLDoubleJump", 0); TLcharacter.m_nview.GetZDO().Set("TLDoubleJump", @int - 1); } public static void ResetDoubleJumpCharges(Character TLcharacter) { if ((Object)(object)TLcharacter == (Object)null || (Object)(object)TLcharacter.m_nview == (Object)null || !TLcharacter.m_nview.IsValid()) { return; } Player val = (Player)(object)(TLcharacter.IsPlayer() ? ((TLcharacter is Player) ? TLcharacter : null) : null); bool flag = false; if (!((Object)(object)val != (Object)null)) { return; } SEMan sEMan = ((Character)Player.m_localPlayer).GetSEMan(); foreach (StatusEffect statusEffect in sEMan.GetStatusEffects()) { if (((Object)statusEffect).name.StartsWith("GP_Moder")) { flag = true; } } if (flag) { TLcharacter.m_nview.GetZDO().Set("TLDoubleJump", 2); } else { TLcharacter.m_nview.GetZDO().Set("TLDoubleJump", 1); } } } }