From c7b223c99315a7d729722393eb7db6719f76b16c Mon Sep 17 00:00:00 2001 From: Sakimori Date: Fri, 18 Apr 2025 02:54:24 -0400 Subject: [PATCH] working with rope storage and hazard res --- ExampleMod.sln => GlitchRestore.sln | 0 Source/ExampleMod.cs | 81 ---------------------------- Source/Patches.cs | 19 ------- Source/Plugin.cs | 50 +++++++++++++++++ thunderstore/README.md | 5 +- thunderstore/icon.png | Bin 19351 -> 13432 bytes 6 files changed, 52 insertions(+), 103 deletions(-) rename ExampleMod.sln => GlitchRestore.sln (100%) delete mode 100644 Source/ExampleMod.cs delete mode 100644 Source/Patches.cs create mode 100644 Source/Plugin.cs diff --git a/ExampleMod.sln b/GlitchRestore.sln similarity index 100% rename from ExampleMod.sln rename to GlitchRestore.sln diff --git a/Source/ExampleMod.cs b/Source/ExampleMod.cs deleted file mode 100644 index a2a3c64..0000000 --- a/Source/ExampleMod.cs +++ /dev/null @@ -1,81 +0,0 @@ -using BepInEx; -using BepInEx.Configuration; -using HarmonyLib; -using NineSolsAPI; -using System; -using UnityEngine; - -namespace GlitchRestore; - -[BepInPlugin(MyPluginInfo.PLUGIN_GUID, MyPluginInfo.PLUGIN_NAME, MyPluginInfo.PLUGIN_VERSION)] -public class ExampleMod : BaseUnityPlugin { - // https://docs.bepinex.dev/articles/dev_guide/plugin_tutorial/4_configuration.html - private ConfigEntry enableSomethingConfig = null!; - private ConfigEntry somethingKeyboardShortcut = null!; - - private Harmony harmony = null!; - - [HarmonyPatch(typeof(PlayerHurtState), nameof(PlayerHurtState.OnStateEnter))] - internal static class RopeRestore { - private static void Prefix(Player ___player, out ClimbableRope __state) { - __state = ___player.touchingRope; - } - - private static void Postfix(ClimbableRope __state, ref Player ___player) { - if (__state != null) { - ___player.touchingRope = __state; - } - } - } - - //[HarmonyPatch(typeof(EffectDealer), nameof(EffectDealer.HitEffectSensorExitCheck))] - //internal static class DamageRespawnRestore { - //I think it's in EffectDealer but I'm not sure - //} - - private void Awake() { - Log.Init(Logger); - RCGLifeCycle.DontDestroyForever(gameObject); - - // Load patches from any class annotated with @HarmonyPatch - harmony = Harmony.CreateAndPatchAll(typeof(ExampleMod).Assembly); - - enableSomethingConfig = Config.Bind("General.Something", "Enable", true, "Enable the thing"); - somethingKeyboardShortcut = Config.Bind("General.Something", "Shortcut", - new KeyboardShortcut(KeyCode.H, KeyCode.LeftControl), "Shortcut to execute"); - - // Usage of the modding API is entirely optional. - // It provides utilities like the KeybindManager, utilities for Instantiating objects including the - // NineSols lifecycle hooks, displaying toast messages and preloading objects from other scenes. - // If you do use the API make sure do have it installed when running your mod, and keep the dependency in the - // thunderstore.toml. - - KeybindManager.Add(this, TestMethod, () => somethingKeyboardShortcut.Value); - - Logger.LogInfo($"Plugin {MyPluginInfo.PLUGIN_GUID} is loaded!"); - } - - // Some fields are private and need to be accessed via reflection. - // You can do this with `typeof(Player).GetField("_hasHat", BindingFlags.Instance|BindingFlags.NonPublic).GetValue(Player.i)` - // or using harmony access tools: - private static readonly AccessTools.FieldRef - PlayerHasHat = AccessTools.FieldRefAccess("_hasHat"); - - private void TestMethod() { - if (!enableSomethingConfig.Value) return; - ToastManager.Toast("Shortcut activated"); - Log.Info("Log messages will only show up in the logging console and LogOutput.txt"); - - // Sometimes variables aren't set in the title screen. Make sure to check for null to prevent crashes. - if (Player.i == null) return; - - var hasHat = PlayerHasHat.Invoke(Player.i); - Player.i.SetHasHat(!hasHat); - } - - private void OnDestroy() { - // Make sure to clean up resources here to support hot reloading - - harmony.UnpatchSelf(); - } -} \ No newline at end of file diff --git a/Source/Patches.cs b/Source/Patches.cs deleted file mode 100644 index 2284fc2..0000000 --- a/Source/Patches.cs +++ /dev/null @@ -1,19 +0,0 @@ -using HarmonyLib; - -namespace ExampleMod; - -[HarmonyPatch] -public class Patches { - - // Patches are powerful. They can hook into other methods, prevent them from runnning, - // change parameters and inject custom code. - // Make sure to use them only when necessary and keep compatibility with other mods in mind. - // Documentation on how to patch can be found in the harmony docs: https://harmony.pardeike.net/articles/patching.html - [HarmonyPatch(typeof(Player), nameof(Player.SetStoryWalk))] - [HarmonyPrefix] - private static bool PatchStoryWalk(ref float walkModifier) { - walkModifier = 1.0f; - - return true; // the original method should be executed - } -} \ No newline at end of file diff --git a/Source/Plugin.cs b/Source/Plugin.cs new file mode 100644 index 0000000..89cf587 --- /dev/null +++ b/Source/Plugin.cs @@ -0,0 +1,50 @@ +using BepInEx; +using BepInEx.Configuration; +using HarmonyLib; + +namespace GlitchRestore; + +[BepInPlugin("com.kobold60.glitchrestore", "Glitch Restore", "0.1.0")] +public class Plugin : BaseUnityPlugin { + private Harmony harmony = null!; + + [HarmonyPatch(typeof(PlayerHurtState), nameof(PlayerHurtState.OnStateEnter))] + internal static class RopeRestore { + private static void Prefix(Player ___player, out ClimbableRope __state) { + __state = ___player.touchingRope; + } + + private static void Postfix(ClimbableRope __state, ref Player ___player) { + if (__state != null) { + ___player.touchingRope = __state; + } + } + } + + [HarmonyPatch(typeof(Player), "OnTakeInvincibleHit")] + internal static class DamageRespawnRestore { + private static bool Prefix(DamageDealer damageDealer, Player __instance) { + if (__instance.IsCurrentState(PlayerStateType.Roll) && !damageDealer.parriable) { + DamageType type = damageDealer.type; + } + return false; + } + } + + private void Awake() { + Log.Init(Logger); + RCGLifeCycle.DontDestroyForever(gameObject); + + // Load patches from any class annotated with @HarmonyPatch + harmony = Harmony.CreateAndPatchAll(typeof(Plugin).Assembly); + + Logger.LogInfo($"Plugin com.kobold60.glitchrestore is loaded!"); + } + + + private void OnDestroy() { + // Make sure to clean up resources here to support hot reloading + + harmony.UnpatchSelf(); + } +} \ No newline at end of file diff --git a/thunderstore/README.md b/thunderstore/README.md index ad947c6..986f3c5 100644 --- a/thunderstore/README.md +++ b/thunderstore/README.md @@ -1,4 +1,3 @@ -# Nine Sols Example Mod +# Glitch Restore -Write a description of your mod here, it will be displayed on thunderstore. -Remember to update the icon.png to something representing your mod. \ No newline at end of file +Re-implements rope storage and hazard respawn glitches from the speedrun patch. Piss skip currently doesn't work, but early city access does. \ No newline at end of file diff --git a/thunderstore/icon.png b/thunderstore/icon.png index 63cb4997f9f4262f9736b7fa2daf3ab8eea93dcb..d8842b3f8ede77a22671d8def2cbfa4ec1448001 100644 GIT binary patch literal 13432 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\)7vbV&^-d^;^@Y* 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 Fe*xTd7qkEX