diff --git a/BepInEx5Plugins.Ash.Alisa.FatDollCollision/BepInEx5Plugins.Ash.Alisa.FatDollCollision.csproj b/BepInEx5Plugins.Ash.Alisa.FatDollCollision/BepInEx5Plugins.Ash.Alisa.FatDollCollision.csproj new file mode 100644 index 0000000..bc28d4b --- /dev/null +++ b/BepInEx5Plugins.Ash.Alisa.FatDollCollision/BepInEx5Plugins.Ash.Alisa.FatDollCollision.csproj @@ -0,0 +1,33 @@ + + + + net35 + BepInEx5Plugins.Ash.Alisa.FatDollCollision + FatDollCollision + 1.0.0 + true + 9.0 + + + + + + + + + + + + + + + + ..\lib\SteamRelease\Assembly-CSharp.dll + false + + + + + + + diff --git a/BepInEx5Plugins.Ash.Alisa.FatDollCollision/HarmonyPatches/BigDollBehaviour_FixedUpdate.cs b/BepInEx5Plugins.Ash.Alisa.FatDollCollision/HarmonyPatches/BigDollBehaviour_FixedUpdate.cs new file mode 100644 index 0000000..9e2b54b --- /dev/null +++ b/BepInEx5Plugins.Ash.Alisa.FatDollCollision/HarmonyPatches/BigDollBehaviour_FixedUpdate.cs @@ -0,0 +1,34 @@ +using HarmonyLib; +using UnityEngine; + +namespace BepInEx5Plugins.Ash.Alisa.FatDollCollision.HarmonyPatches +{ + [HarmonyPatch(typeof(BigDollBehaviour), "FixedUpdate")] + public class BigDollBehaviour_FixedUpdate + { + // Store dead state for postfix. + private static void Prefix(BigDollBehaviour __instance, out bool __state) + { + __state = __instance.enemyHealth <= 0f && !__instance.enemyIsDead; + } + + // Disable physical collider of fat dolls when they die. + private static void Postfix(BigDollBehaviour __instance, bool __state) + { + if (__state != (__instance.enemyHealth <= 0f && __instance.enemyIsDead)) + { + if (__instance.transform.Find("FatDoll")) + { + var collider = __instance.transform.Find("Armature/Root/TorsoBone")?.GetComponent(); + + if (collider) + { + collider.enabled = false; + } + } + + return; + } + } + } +} diff --git a/BepInEx5Plugins.Ash.Alisa.FatDollCollision/NuGet.Config b/BepInEx5Plugins.Ash.Alisa.FatDollCollision/NuGet.Config new file mode 100644 index 0000000..1864ded --- /dev/null +++ b/BepInEx5Plugins.Ash.Alisa.FatDollCollision/NuGet.Config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/BepInEx5Plugins.Ash.Alisa.FatDollCollision/Plugin.cs b/BepInEx5Plugins.Ash.Alisa.FatDollCollision/Plugin.cs new file mode 100644 index 0000000..d99a282 --- /dev/null +++ b/BepInEx5Plugins.Ash.Alisa.FatDollCollision/Plugin.cs @@ -0,0 +1,26 @@ +using BepInEx; +using HarmonyLib; +using System; + +namespace BepInEx5Plugins.Ash.Alisa.FatDollCollision +{ + [BepInPlugin(PluginInfo.PLUGIN_GUID, PluginInfo.PLUGIN_NAME, PluginInfo.PLUGIN_VERSION)] + public class Plugin : BaseUnityPlugin + { + private void Awake() + { + try + { + Logger.LogInfo($"Plugin {PluginInfo.PLUGIN_GUID} is loaded!"); + + var harmony = new Harmony(Info.Metadata.GUID); + + harmony.PatchAll(); + } + catch (Exception exception) + { + Console.WriteLine(exception); + } + } + } +}