From efc8b90b56ac3658e91f01666d9ebea996d29c42 Mon Sep 17 00:00:00 2001 From: ManlyMarco <39247311+ManlyMarco@users.noreply.github.com> Date: Sat, 3 Feb 2024 14:36:59 +0100 Subject: [PATCH 1/5] Refactoring --- AI_CheatTools/AI_CheatTools.csproj | 3 +- AI_CheatTools/CheatToolsPlugin.cs | 44 ------------------- ...ToolsWindow.cs => CheatToolsWindowInit.cs} | 37 ++++++++++++++-- HC_CheatTools/CheatToolsPlugin.cs | 4 +- HC_CheatTools/CheatToolsWindowInit.cs | 4 +- HC_CheatTools/HC_CheatTools.csproj | 2 +- HS2_CheatTools/CheatToolsPlugin.cs | 20 --------- ...ToolsWindow.cs => CheatToolsWindowInit.cs} | 14 +++--- HS2_CheatTools/HS2_CheatTools.csproj | 3 +- KKLB_CheatTools/CheatToolsPlugin.cs | 12 ----- KKLB_CheatTools/CheatToolsWindow.cs | 33 ++------------ KKLB_CheatTools/Hooks.cs | 36 +++++++++++++++ KKLB_CheatTools/KKLB_CheatTools.csproj | 2 +- KKS_CheatTools/CheatToolsPlugin.cs | 23 ---------- ...ToolsWindow.cs => CheatToolsWindowInit.cs} | 12 ++++- KKS_CheatTools/KKS_CheatTools.csproj | 3 +- KK_CheatTools/CheatToolsPlugin.cs | 41 ----------------- ...ToolsWindow.cs => CheatToolsWindowInit.cs} | 32 +++++++++++++- KK_CheatTools/KK_CheatTools.csproj | 3 +- Shared/CheatToolsPlugin.cs | 28 ++++++++++-- 20 files changed, 155 insertions(+), 201 deletions(-) delete mode 100644 AI_CheatTools/CheatToolsPlugin.cs rename AI_CheatTools/{CheatToolsWindow.cs => CheatToolsWindowInit.cs} (91%) delete mode 100644 HS2_CheatTools/CheatToolsPlugin.cs rename HS2_CheatTools/{CheatToolsWindow.cs => CheatToolsWindowInit.cs} (95%) delete mode 100644 KKLB_CheatTools/CheatToolsPlugin.cs create mode 100644 KKLB_CheatTools/Hooks.cs delete mode 100644 KKS_CheatTools/CheatToolsPlugin.cs rename KKS_CheatTools/{CheatToolsWindow.cs => CheatToolsWindowInit.cs} (98%) delete mode 100644 KK_CheatTools/CheatToolsPlugin.cs rename KK_CheatTools/{CheatToolsWindow.cs => CheatToolsWindowInit.cs} (94%) diff --git a/AI_CheatTools/AI_CheatTools.csproj b/AI_CheatTools/AI_CheatTools.csproj index 30e1dac..69548d6 100644 --- a/AI_CheatTools/AI_CheatTools.csproj +++ b/AI_CheatTools/AI_CheatTools.csproj @@ -122,8 +122,7 @@ - - + diff --git a/AI_CheatTools/CheatToolsPlugin.cs b/AI_CheatTools/CheatToolsPlugin.cs deleted file mode 100644 index 86b9bf4..0000000 --- a/AI_CheatTools/CheatToolsPlugin.cs +++ /dev/null @@ -1,44 +0,0 @@ -using AIChara; -using AIProject; -using AIProject.SaveData; -using BepInEx; -using BepInEx.Configuration; -using Manager; -using RuntimeUnityEditor.Core.Inspector; -using UnityEngine.AI; - -namespace CheatTools -{ - [BepInDependency(KKAPI.KoikatuAPI.GUID, KKAPI.KoikatuAPI.VersionConst)] - public partial class CheatToolsPlugin : BaseUnityPlugin - { - internal static ConfigEntry BuildAnywhere; - internal static ConfigEntry BuildOverlap; - - private void Awake() - { - BuildAnywhere = Config.Bind("Cheats", "Allow building anywhere", false); - BuildAnywhere.SettingChanged += (sender, args) => BuildAnywhereHooks.Enabled = BuildAnywhere.Value; - BuildAnywhereHooks.Enabled = BuildAnywhere.Value; - - BuildOverlap = Config.Bind("Cheats", "Allow building overlap", false); - BuildOverlap.SettingChanged += (sender, args) => BuildOverlapHooks.Enabled = BuildOverlap.Value; - BuildOverlapHooks.Enabled = BuildOverlap.Value; - - NoclipFeature.InitializeNoclip(this, () => - { - if (!Map.IsInstance()) return null; - if (Map.Instance.Player == null) return null; - if (Map.Instance.Player.Controller == null) return null; - return Map.Instance.Player.Controller.GetComponent(); - }); - - ToStringConverter.AddConverter(heroine => !string.IsNullOrEmpty(heroine.CharaName) ? heroine.CharaName : heroine.name); - ToStringConverter.AddConverter(d => $"AgentData - {d.CharaFileName} | {d.NowCoordinateFileName}"); - ToStringConverter.AddConverter(d => $"ChaFile - {d.charaFileName ?? "Unknown"} ({d.parameter?.fullname ?? "Unknown"})"); - ToStringConverter.AddConverter(d => $"{d} - {d.chaFile?.parameter?.fullname ?? d.chaFile?.charaFileName ?? "Unknown"}"); - - CheatToolsWindowInit.Initialize(); - } - } -} diff --git a/AI_CheatTools/CheatToolsWindow.cs b/AI_CheatTools/CheatToolsWindowInit.cs similarity index 91% rename from AI_CheatTools/CheatToolsWindow.cs rename to AI_CheatTools/CheatToolsWindowInit.cs index 206de16..974ad42 100644 --- a/AI_CheatTools/CheatToolsWindow.cs +++ b/AI_CheatTools/CheatToolsWindowInit.cs @@ -1,15 +1,18 @@ using System; using System.Collections.Generic; using System.Linq; +using AIChara; using AIProject; using AIProject.Definitions; using AIProject.SaveData; +using BepInEx.Configuration; using Manager; using RuntimeUnityEditor.Core.Inspector; using RuntimeUnityEditor.Core.Inspector.Entries; using RuntimeUnityEditor.Core.ObjectTree; using RuntimeUnityEditor.Core.Utils; using UnityEngine; +using UnityEngine.AI; using Map = Manager.Map; using Resources = Manager.Resources; @@ -30,8 +33,34 @@ public static class CheatToolsWindowInit private static KeyValuePair[] _openInInspectorButtons; private static bool _expandDesires, _expandSkills; - public static void Initialize() + internal static ConfigEntry BuildAnywhere; + internal static ConfigEntry BuildOverlap; + + public static void Initialize(CheatToolsPlugin instance) { + var config = instance.Config; + + BuildAnywhere = config.Bind("Cheats", "Allow building anywhere", false); + BuildAnywhere.SettingChanged += (sender, args) => BuildAnywhereHooks.Enabled = BuildAnywhere.Value; + BuildAnywhereHooks.Enabled = BuildAnywhere.Value; + + BuildOverlap = config.Bind("Cheats", "Allow building overlap", false); + BuildOverlap.SettingChanged += (sender, args) => BuildOverlapHooks.Enabled = BuildOverlap.Value; + BuildOverlapHooks.Enabled = BuildOverlap.Value; + + NoclipFeature.InitializeNoclip(instance, () => + { + if (!Map.IsInstance()) return null; + if (Map.Instance.Player == null) return null; + if (Map.Instance.Player.Controller == null) return null; + return Map.Instance.Player.Controller.GetComponent(); + }); + + ToStringConverter.AddConverter(heroine => !string.IsNullOrEmpty(heroine.CharaName) ? heroine.CharaName : heroine.name); + ToStringConverter.AddConverter(d => $"AgentData - {d.CharaFileName} | {d.NowCoordinateFileName}"); + ToStringConverter.AddConverter(d => $"ChaFile - {d.charaFileName ?? "Unknown"} ({d.parameter?.fullname ?? "Unknown"})"); + ToStringConverter.AddConverter(d => $"{d} - {d.chaFile?.parameter?.fullname ?? d.chaFile?.charaFileName ?? "Unknown"}"); + CheatToolsWindow.OnShown += _ => { _studioInstance = Studio.Studio.IsInstance() ? Studio.Studio.Instance : null; @@ -51,7 +80,7 @@ public static void Initialize() new KeyValuePair(AnimalManager.IsInstance() ? AnimalManager.Instance : null, "Manager.AnimalManager.Instance"), new KeyValuePair(_map, "Manager.Map.Instance"), new KeyValuePair(Character.IsInstance() ? Character.Instance : null, "Manager.Character.Instance"), - new KeyValuePair(Config.IsInstance() ? Config.Instance : null, "Manager.Config.Instance"), + new KeyValuePair(Manager.Config.IsInstance() ? Manager.Config.Instance : null, "Manager.Config.Instance"), new KeyValuePair(_gameMgr, "Manager.Game.Instance"), new KeyValuePair(Manager.Housing.IsInstance() ? Manager.Housing.Instance : null, "Manager.Housing.Instance"), new KeyValuePair(_sceneInstance, "Manager.Scene.Instance"), @@ -104,8 +133,8 @@ private static void DrawPlayerCheats(CheatToolsWindow cheatToolsWindow) UnlockCraftingHooks.Enabled = GUILayout.Toggle(UnlockCraftingHooks.Enabled, "Enable free crafting"); NoclipFeature.NoclipMode = GUILayout.Toggle(NoclipFeature.NoclipMode, "Enable player noclip"); - CheatToolsPlugin.BuildAnywhere.Value = GUILayout.Toggle(CheatToolsPlugin.BuildAnywhere.Value, "Allow building anywhere"); - CheatToolsPlugin.BuildOverlap.Value = GUILayout.Toggle(CheatToolsPlugin.BuildOverlap.Value, "Allow building items to overlap"); + BuildAnywhere.Value = GUILayout.Toggle(BuildAnywhere.Value, "Allow building anywhere"); + BuildOverlap.Value = GUILayout.Toggle(BuildOverlap.Value, "Allow building items to overlap"); if (_resources != null) { diff --git a/HC_CheatTools/CheatToolsPlugin.cs b/HC_CheatTools/CheatToolsPlugin.cs index f5fdb24..016ebe6 100644 --- a/HC_CheatTools/CheatToolsPlugin.cs +++ b/HC_CheatTools/CheatToolsPlugin.cs @@ -22,6 +22,8 @@ public CheatToolsPlugin() public override void Load() { + CheatToolsWindowInit.Initialize(this); + var runtimeUnityEditorCore = RuntimeUnityEditorCore.Instance; if (runtimeUnityEditorCore == null) { @@ -29,8 +31,6 @@ public override void Load() return; } - CheatToolsWindowInit.InitializeCheats(); - runtimeUnityEditorCore.AddFeature(new CheatToolsWindow(runtimeUnityEditorCore)); } } diff --git a/HC_CheatTools/CheatToolsWindowInit.cs b/HC_CheatTools/CheatToolsWindowInit.cs index 66eec7e..a88e71b 100644 --- a/HC_CheatTools/CheatToolsWindowInit.cs +++ b/HC_CheatTools/CheatToolsWindowInit.cs @@ -13,8 +13,8 @@ public static class CheatToolsWindowInit { private static KeyValuePair[] _openInInspectorButtons; private static Human _currentVisibleGirl; - - public static void InitializeCheats() + + public static void Initialize(CheatToolsPlugin instance) { CheatToolsWindow.OnShown += _ => { diff --git a/HC_CheatTools/HC_CheatTools.csproj b/HC_CheatTools/HC_CheatTools.csproj index 5535817..baef66d 100644 --- a/HC_CheatTools/HC_CheatTools.csproj +++ b/HC_CheatTools/HC_CheatTools.csproj @@ -13,7 +13,7 @@ embedded 9999 - $(DefineConstants);EC;IL2CPP + $(DefineConstants);HC;IL2CPP diff --git a/HS2_CheatTools/CheatToolsPlugin.cs b/HS2_CheatTools/CheatToolsPlugin.cs deleted file mode 100644 index a6e61fc..0000000 --- a/HS2_CheatTools/CheatToolsPlugin.cs +++ /dev/null @@ -1,20 +0,0 @@ -using Actor; -using AIChara; -using BepInEx; -using RuntimeUnityEditor.Core.Inspector; - -namespace CheatTools -{ - [BepInDependency(KKAPI.KoikatuAPI.GUID, KKAPI.KoikatuAPI.VersionConst)] - public partial class CheatToolsPlugin : BaseUnityPlugin - { - private void Awake() - { - ToStringConverter.AddConverter(CheatToolsWindowInit.GetHeroineName); - ToStringConverter.AddConverter(d => $"ChaFile - {d.charaFileName ?? "Unknown"} ({d.parameter?.fullname ?? "Unknown"})"); - ToStringConverter.AddConverter(d => $"{d} - {d.chaFile?.parameter?.fullname ?? d.chaFile?.charaFileName ?? "Unknown"}"); - - CheatToolsWindowInit.InitializeCheats(); - } - } -} diff --git a/HS2_CheatTools/CheatToolsWindow.cs b/HS2_CheatTools/CheatToolsWindowInit.cs similarity index 95% rename from HS2_CheatTools/CheatToolsWindow.cs rename to HS2_CheatTools/CheatToolsWindowInit.cs index 8d777b3..f2af4db 100644 --- a/HS2_CheatTools/CheatToolsWindow.cs +++ b/HS2_CheatTools/CheatToolsWindowInit.cs @@ -15,8 +15,8 @@ namespace CheatTools { public static partial class CheatToolsWindowInit { - internal static Heroine _currentVisibleGirl; - internal static Action _onGirlStatsChanged; + private static Heroine _currentVisibleGirl; + private static Action _onGirlStatsChanged; private static Studio.Studio _studioInstance; private static Manager.Sound _soundInstance; @@ -26,13 +26,17 @@ public static partial class CheatToolsWindowInit private static HSceneFlagCtrl _hScene; private static KeyValuePair[] _openInInspectorButtons; - internal static string GetHeroineName(Heroine heroine) + private static string GetHeroineName(Heroine heroine) { return !string.IsNullOrEmpty(heroine.Name) ? heroine.Name : heroine.ChaName; } - - public static void InitializeCheats() + + public static void Initialize(CheatToolsPlugin instance) { + ToStringConverter.AddConverter(GetHeroineName); + ToStringConverter.AddConverter(d => $"ChaFile - {d.charaFileName ?? "Unknown"} ({d.parameter?.fullname ?? "Unknown"})"); + ToStringConverter.AddConverter(d => $"{d} - {d.chaFile?.parameter?.fullname ?? d.chaFile?.charaFileName ?? "Unknown"}"); + CheatToolsWindow.OnShown += _ => { _studioInstance = Studio.Studio.IsInstance() ? Studio.Studio.Instance : null; diff --git a/HS2_CheatTools/HS2_CheatTools.csproj b/HS2_CheatTools/HS2_CheatTools.csproj index 2932047..12d47f0 100644 --- a/HS2_CheatTools/HS2_CheatTools.csproj +++ b/HS2_CheatTools/HS2_CheatTools.csproj @@ -128,8 +128,7 @@ - - + diff --git a/KKLB_CheatTools/CheatToolsPlugin.cs b/KKLB_CheatTools/CheatToolsPlugin.cs deleted file mode 100644 index d1fcff0..0000000 --- a/KKLB_CheatTools/CheatToolsPlugin.cs +++ /dev/null @@ -1,12 +0,0 @@ -using BepInEx; - -namespace CheatTools -{ - public partial class CheatToolsPlugin : BaseUnityPlugin - { - private void Awake() - { - CheatToolsWindowInit.InitializeCheats(); - } - } -} diff --git a/KKLB_CheatTools/CheatToolsWindow.cs b/KKLB_CheatTools/CheatToolsWindow.cs index 8c960a1..79b93b1 100644 --- a/KKLB_CheatTools/CheatToolsWindow.cs +++ b/KKLB_CheatTools/CheatToolsWindow.cs @@ -9,15 +9,15 @@ namespace CheatTools { - public static class CheatToolsWindowInit + public static partial class CheatToolsWindowInit { private static KeyValuePair[] _openInInspectorButtons; private static bool _teleportUnlock; private static bool _posTweakForce; private static bool _posTweakUnlimited; private static float _posTweakDistance = 0.1f; - - public static void InitializeCheats() + + public static void Initialize(CheatToolsPlugin instance) { CheatToolsWindow.OnShown += _ => { @@ -120,32 +120,5 @@ void EnsureNonzeroCount(List list) gameStatus.SetSystemFlag(ID_SFlag.SFlag_End, true); } } - - private static class Hooks - { - [HarmonyPrefix] - [HarmonyPatch(typeof(LocomotionTeleport), "AimCollisionTest")] - private static void AimHook(ref Vector3 end) - { - if (_teleportUnlock) - end = Vector3.positiveInfinity; - } - - [HarmonyPrefix] - [HarmonyPatch(typeof(CameraPosTweak), nameof(CameraPosTweak.Update))] - private static void PosTweakHook(CameraPosTweak __instance) - { - if (_posTweakForce) - __instance.canPosTweak = true; - - if (_posTweakUnlimited) - { - __instance.sayuuNum = 0; - __instance.zengoNum = 0; - } - - __instance.distance = _posTweakDistance; - } - } } } diff --git a/KKLB_CheatTools/Hooks.cs b/KKLB_CheatTools/Hooks.cs new file mode 100644 index 0000000..c570198 --- /dev/null +++ b/KKLB_CheatTools/Hooks.cs @@ -0,0 +1,36 @@ +using HarmonyLib; +using sv08; +using UnityEngine; + +namespace CheatTools +{ + public static partial class CheatToolsWindowInit + { + private static class Hooks + { + [HarmonyPrefix] + [HarmonyPatch(typeof(LocomotionTeleport), "AimCollisionTest")] + private static void AimHook(ref Vector3 end) + { + if (_teleportUnlock) + end = Vector3.positiveInfinity; + } + + [HarmonyPrefix] + [HarmonyPatch(typeof(CameraPosTweak), nameof(CameraPosTweak.Update))] + private static void PosTweakHook(CameraPosTweak __instance) + { + if (_posTweakForce) + __instance.canPosTweak = true; + + if (_posTweakUnlimited) + { + __instance.sayuuNum = 0; + __instance.zengoNum = 0; + } + + __instance.distance = _posTweakDistance; + } + } + } +} diff --git a/KKLB_CheatTools/KKLB_CheatTools.csproj b/KKLB_CheatTools/KKLB_CheatTools.csproj index 57bd6d3..274b74c 100644 --- a/KKLB_CheatTools/KKLB_CheatTools.csproj +++ b/KKLB_CheatTools/KKLB_CheatTools.csproj @@ -90,8 +90,8 @@ - + diff --git a/KKS_CheatTools/CheatToolsPlugin.cs b/KKS_CheatTools/CheatToolsPlugin.cs deleted file mode 100644 index 5985c8e..0000000 --- a/KKS_CheatTools/CheatToolsPlugin.cs +++ /dev/null @@ -1,23 +0,0 @@ -using BepInEx; -using BepInEx.Configuration; -using Manager; -using UnityEngine.AI; - -namespace CheatTools -{ - [BepInDependency(KKAPI.KoikatuAPI.GUID, KKAPI.KoikatuAPI.VersionConst)] - public partial class CheatToolsPlugin : BaseUnityPlugin - { - private void Awake() - { - NoclipFeature.InitializeNoclip(this, () => - { - if (Game.Player == null) return null; - if (Game.Player.transform == null) return null; - return Game.Player.transform.GetComponent(); - }); - - CheatToolsWindowInit.InitializeCheats(); - } - } -} diff --git a/KKS_CheatTools/CheatToolsWindow.cs b/KKS_CheatTools/CheatToolsWindowInit.cs similarity index 98% rename from KKS_CheatTools/CheatToolsWindow.cs rename to KKS_CheatTools/CheatToolsWindowInit.cs index a80cfc8..15205b3 100644 --- a/KKS_CheatTools/CheatToolsWindow.cs +++ b/KKS_CheatTools/CheatToolsWindowInit.cs @@ -12,6 +12,7 @@ using RuntimeUnityEditor.Core.Utils; using SaveData; using UnityEngine; +using UnityEngine.AI; using LogLevel = BepInEx.Logging.LogLevel; using Object = UnityEngine.Object; @@ -71,9 +72,16 @@ public static class CheatToolsWindowInit "Lover", "Bonded", }; - - public static void InitializeCheats() + + public static void Initialize(CheatToolsPlugin instance) { + NoclipFeature.InitializeNoclip(instance, () => + { + if (Game.Player == null) return null; + if (Game.Player.transform == null) return null; + return Game.Player.transform.GetComponent(); + }); + CheatToolsWindow.OnShown += _ => { _hFlag = Object.FindObjectOfType(); diff --git a/KKS_CheatTools/KKS_CheatTools.csproj b/KKS_CheatTools/KKS_CheatTools.csproj index e1c111d..3be74ab 100644 --- a/KKS_CheatTools/KKS_CheatTools.csproj +++ b/KKS_CheatTools/KKS_CheatTools.csproj @@ -162,8 +162,7 @@ - - + diff --git a/KK_CheatTools/CheatToolsPlugin.cs b/KK_CheatTools/CheatToolsPlugin.cs deleted file mode 100644 index 6432d3c..0000000 --- a/KK_CheatTools/CheatToolsPlugin.cs +++ /dev/null @@ -1,41 +0,0 @@ -using BepInEx; -using BepInEx.Configuration; -using Manager; -using RuntimeUnityEditor.Core.Inspector; -using UnityEngine.AI; - -namespace CheatTools -{ - [BepInDependency(KKAPI.KoikatuAPI.GUID, KKAPI.KoikatuAPI.VersionConst)] - public partial class CheatToolsPlugin : BaseUnityPlugin - { - internal static ConfigEntry UnlockAllPositions; - internal static ConfigEntry UnlockAllPositionsIndiscriminately; - - private void Awake() - { - UnlockAllPositions = Config.Bind("Cheats", "Unlock all H positions", false, "Reload the H scene to see changes."); - UnlockAllPositions.SettingChanged += (sender, args) => UnlockPositionsHooks.Enabled = UnlockAllPositions.Value; - UnlockPositionsHooks.Enabled = UnlockAllPositions.Value; - - UnlockAllPositionsIndiscriminately = Config.Bind("Cheats", "Unlock invalid H positions as well", false, "This will unlock all positions even if they should not be possible.\nWARNING: Can result in bugs and even game crashes in some cases.\nReload the H scene to see changes."); - UnlockAllPositionsIndiscriminately.SettingChanged += (sender, args) => UnlockPositionsHooks.UnlockAll = UnlockAllPositionsIndiscriminately.Value; - UnlockPositionsHooks.UnlockAll = UnlockAllPositionsIndiscriminately.Value; - - ToStringConverter.AddConverter(heroine => !string.IsNullOrEmpty(heroine.Name) ? heroine.Name : heroine.nickname); - ToStringConverter.AddConverter(d => $"[{d.key} | {d.value}]"); - - NoclipFeature.InitializeNoclip(this, () => - { - if (!Game.IsInstance()) return null; - var player = Game.Instance.Player; - if (player == null) return null; - var playerTransform = player.transform; - if (playerTransform == null) return null; - return playerTransform.GetComponent(); - }); - - CheatToolsWindowInit.InitializeCheats(); - } - } -} diff --git a/KK_CheatTools/CheatToolsWindow.cs b/KK_CheatTools/CheatToolsWindowInit.cs similarity index 94% rename from KK_CheatTools/CheatToolsWindow.cs rename to KK_CheatTools/CheatToolsWindowInit.cs index 36ff953..84f2148 100644 --- a/KK_CheatTools/CheatToolsWindow.cs +++ b/KK_CheatTools/CheatToolsWindowInit.cs @@ -4,6 +4,7 @@ using System.Reflection; using ActionGame; using ActionGame.Chara; +using BepInEx.Configuration; using Illusion.Component; using Illusion.Game; using Manager; @@ -12,6 +13,7 @@ using RuntimeUnityEditor.Core.ObjectTree; using RuntimeUnityEditor.Core.Utils; using UnityEngine; +using UnityEngine.AI; using LogLevel = BepInEx.Logging.LogLevel; using Object = UnityEngine.Object; @@ -36,8 +38,34 @@ public static class CheatToolsWindowInit private static string _setdesireValue; private static KeyValuePair[] _openInInspectorButtons; - public static void InitializeCheats() + internal static ConfigEntry UnlockAllPositions; + internal static ConfigEntry UnlockAllPositionsIndiscriminately; + + public static void Initialize(CheatToolsPlugin instance) { + var config = instance.Config; + + UnlockAllPositions = config.Bind("Cheats", "Unlock all H positions", false, "Reload the H scene to see changes."); + UnlockAllPositions.SettingChanged += (sender, args) => UnlockPositionsHooks.Enabled = UnlockAllPositions.Value; + UnlockPositionsHooks.Enabled = UnlockAllPositions.Value; + + UnlockAllPositionsIndiscriminately = config.Bind("Cheats", "Unlock invalid H positions as well", false, "This will unlock all positions even if they should not be possible.\nWARNING: Can result in bugs and even game crashes in some cases.\nReload the H scene to see changes."); + UnlockAllPositionsIndiscriminately.SettingChanged += (sender, args) => UnlockPositionsHooks.UnlockAll = UnlockAllPositionsIndiscriminately.Value; + UnlockPositionsHooks.UnlockAll = UnlockAllPositionsIndiscriminately.Value; + + ToStringConverter.AddConverter(heroine => !string.IsNullOrEmpty(heroine.Name) ? heroine.Name : heroine.nickname); + ToStringConverter.AddConverter(d => $"[{d.key} | {d.value}]"); + + NoclipFeature.InitializeNoclip(instance, () => + { + if (!Game.IsInstance()) return null; + var player = Game.Instance.Player; + if (player == null) return null; + var playerTransform = player.transform; + if (playerTransform == null) return null; + return playerTransform.GetComponent(); + }); + CheatToolsWindow.OnShown += _ => { _hFlag = Object.FindObjectOfType(); @@ -76,7 +104,7 @@ private static void DrawGlobalUnlocks(CheatToolsWindow window) { GUILayout.Label("Global unlocks (might need a reload)"); - CheatToolsPlugin.UnlockAllPositions.Value = GUILayout.Toggle(CheatToolsPlugin.UnlockAllPositions.Value, "Unlock all H positions"); + UnlockAllPositions.Value = GUILayout.Toggle(UnlockAllPositions.Value, "Unlock all H positions"); if (GUILayout.Button("Obtain all H positions")) { diff --git a/KK_CheatTools/KK_CheatTools.csproj b/KK_CheatTools/KK_CheatTools.csproj index 36bf14c..467d4c5 100644 --- a/KK_CheatTools/KK_CheatTools.csproj +++ b/KK_CheatTools/KK_CheatTools.csproj @@ -106,8 +106,7 @@ - - + diff --git a/Shared/CheatToolsPlugin.cs b/Shared/CheatToolsPlugin.cs index 362d531..83251ee 100644 --- a/Shared/CheatToolsPlugin.cs +++ b/Shared/CheatToolsPlugin.cs @@ -1,4 +1,5 @@ -#if !IL2CPP +#if !HC //!IL2CPP +using System; using BepInEx; using BepInEx.Logging; using RuntimeUnityEditor.Core; @@ -7,21 +8,40 @@ namespace CheatTools { - [BepInPlugin(Metadata.GUID, "Cheat Tools", Version)] + [BepInPlugin(GUID, "Cheat Tools", Version)] [BepInDependency(RuntimeUnityEditorCore.GUID, RuntimeUnityEditorCore.Version)] - public partial class CheatToolsPlugin : BaseUnityPlugin +#if !KKLB + [BepInDependency(KKAPI.KoikatuAPI.GUID, KKAPI.KoikatuAPI.VersionConst)] +#endif + public sealed class CheatToolsPlugin : BaseUnityPlugin { + public const string GUID = Metadata.GUID; public const string Version = Metadata.Version; internal static new ManualLogSource Logger; - public CheatToolsPlugin() + private bool _initialized; + + private void Awake() { Logger = base.Logger; + + try + { + CheatToolsWindowInit.Initialize(this); + _initialized = true; + } + catch (Exception e) + { + Logger.LogError("Failed to initialize: " + e); + enabled = false; + } } private void Start() { + if(!_initialized) return; + var runtimeUnityEditorCore = RuntimeUnityEditorCore.Instance; if (runtimeUnityEditorCore == null) { From 0d91aa1d036786a1f56516574ccff35e0cdfc765 Mon Sep 17 00:00:00 2001 From: ManlyMarco <39247311+ManlyMarco@users.noreply.github.com> Date: Sat, 3 Feb 2024 14:44:39 +0100 Subject: [PATCH 2/5] Unique file names; Standardize stuff; Remove duplicate code --- AI_CheatTools/AI_CheatTools.csproj | 7 ++++--- ...ndowInit.cs => CheatToolsWindowInit.AI.cs} | 0 AI_CheatTools/Properties/AssemblyInfo.cs | 4 ---- HC_CheatTools/CheatToolsPlugin.cs | 4 +++- ...ndowInit.cs => CheatToolsWindowInit.HC.cs} | 0 ...dowInit.cs => CheatToolsWindowInit.HS2.cs} | 0 HS2_CheatTools/HS2_CheatTools.csproj | 7 ++++--- HS2_CheatTools/Properties/AssemblyInfo.cs | 4 ---- ...Window.cs => CheatToolsWindowInit.KKLB.cs} | 0 KKLB_CheatTools/KKLB_CheatTools.csproj | 7 ++++--- KKLB_CheatTools/Properties/AssemblyInfo.cs | 4 ---- ...dowInit.cs => CheatToolsWindowInit.KKS.cs} | 0 KKS_CheatTools/KKS_CheatTools.csproj | 6 ++++-- KKS_CheatTools/Properties/AssemblyInfo.cs | 4 ---- ...ndowInit.cs => CheatToolsWindowInit.KK.cs} | 0 KK_CheatTools/KK_CheatTools.csproj | 6 ++++-- KK_CheatTools/Properties/AssemblyInfo.cs | 4 ---- Shared/AssemblyInfo.cs | 21 ++----------------- Shared/CheatToolsPlugin.cs | 3 ++- Shared/Metadata.cs | 1 + 20 files changed, 28 insertions(+), 54 deletions(-) rename AI_CheatTools/{CheatToolsWindowInit.cs => CheatToolsWindowInit.AI.cs} (100%) delete mode 100644 AI_CheatTools/Properties/AssemblyInfo.cs rename HC_CheatTools/{CheatToolsWindowInit.cs => CheatToolsWindowInit.HC.cs} (100%) rename HS2_CheatTools/{CheatToolsWindowInit.cs => CheatToolsWindowInit.HS2.cs} (100%) delete mode 100644 HS2_CheatTools/Properties/AssemblyInfo.cs rename KKLB_CheatTools/{CheatToolsWindow.cs => CheatToolsWindowInit.KKLB.cs} (100%) delete mode 100644 KKLB_CheatTools/Properties/AssemblyInfo.cs rename KKS_CheatTools/{CheatToolsWindowInit.cs => CheatToolsWindowInit.KKS.cs} (100%) delete mode 100644 KKS_CheatTools/Properties/AssemblyInfo.cs rename KK_CheatTools/{CheatToolsWindowInit.cs => CheatToolsWindowInit.KK.cs} (100%) delete mode 100644 KK_CheatTools/Properties/AssemblyInfo.cs diff --git a/AI_CheatTools/AI_CheatTools.csproj b/AI_CheatTools/AI_CheatTools.csproj index 69548d6..f835a47 100644 --- a/AI_CheatTools/AI_CheatTools.csproj +++ b/AI_CheatTools/AI_CheatTools.csproj @@ -122,17 +122,18 @@ - + - - + + + diff --git a/AI_CheatTools/CheatToolsWindowInit.cs b/AI_CheatTools/CheatToolsWindowInit.AI.cs similarity index 100% rename from AI_CheatTools/CheatToolsWindowInit.cs rename to AI_CheatTools/CheatToolsWindowInit.AI.cs diff --git a/AI_CheatTools/Properties/AssemblyInfo.cs b/AI_CheatTools/Properties/AssemblyInfo.cs deleted file mode 100644 index 9e95ba5..0000000 --- a/AI_CheatTools/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,4 +0,0 @@ -using System.Reflection; - -[assembly: AssemblyTitle("AI_CheatTools")] -[assembly: AssemblyProduct("AI_CheatTools")] \ No newline at end of file diff --git a/HC_CheatTools/CheatToolsPlugin.cs b/HC_CheatTools/CheatToolsPlugin.cs index 016ebe6..4781812 100644 --- a/HC_CheatTools/CheatToolsPlugin.cs +++ b/HC_CheatTools/CheatToolsPlugin.cs @@ -6,11 +6,13 @@ namespace CheatTools { - [BepInPlugin(Metadata.GUID, "Cheat Tools", Version)] + [BepInPlugin(GUID, DisplayName, Version)] [BepInDependency(RuntimeUnityEditorCore.GUID, RuntimeUnityEditorCore.Version)] [BepInProcess("HoneyCome")] public class CheatToolsPlugin : BasePlugin { + public const string DisplayName = Metadata.DisplayName; + public const string GUID = Metadata.GUID; public const string Version = Metadata.Version; internal static new ManualLogSource Logger; diff --git a/HC_CheatTools/CheatToolsWindowInit.cs b/HC_CheatTools/CheatToolsWindowInit.HC.cs similarity index 100% rename from HC_CheatTools/CheatToolsWindowInit.cs rename to HC_CheatTools/CheatToolsWindowInit.HC.cs diff --git a/HS2_CheatTools/CheatToolsWindowInit.cs b/HS2_CheatTools/CheatToolsWindowInit.HS2.cs similarity index 100% rename from HS2_CheatTools/CheatToolsWindowInit.cs rename to HS2_CheatTools/CheatToolsWindowInit.HS2.cs diff --git a/HS2_CheatTools/HS2_CheatTools.csproj b/HS2_CheatTools/HS2_CheatTools.csproj index 12d47f0..709a36c 100644 --- a/HS2_CheatTools/HS2_CheatTools.csproj +++ b/HS2_CheatTools/HS2_CheatTools.csproj @@ -128,14 +128,15 @@ - + - - + + + diff --git a/HS2_CheatTools/Properties/AssemblyInfo.cs b/HS2_CheatTools/Properties/AssemblyInfo.cs deleted file mode 100644 index 1a0eb45..0000000 --- a/HS2_CheatTools/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,4 +0,0 @@ -using System.Reflection; - -[assembly: AssemblyTitle("HS2_CheatTools")] -[assembly: AssemblyProduct("HS2_CheatTools")] \ No newline at end of file diff --git a/KKLB_CheatTools/CheatToolsWindow.cs b/KKLB_CheatTools/CheatToolsWindowInit.KKLB.cs similarity index 100% rename from KKLB_CheatTools/CheatToolsWindow.cs rename to KKLB_CheatTools/CheatToolsWindowInit.KKLB.cs diff --git a/KKLB_CheatTools/KKLB_CheatTools.csproj b/KKLB_CheatTools/KKLB_CheatTools.csproj index 274b74c..721fb03 100644 --- a/KKLB_CheatTools/KKLB_CheatTools.csproj +++ b/KKLB_CheatTools/KKLB_CheatTools.csproj @@ -90,14 +90,15 @@ - + - - + + + diff --git a/KKLB_CheatTools/Properties/AssemblyInfo.cs b/KKLB_CheatTools/Properties/AssemblyInfo.cs deleted file mode 100644 index 85b07ce..0000000 --- a/KKLB_CheatTools/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,4 +0,0 @@ -using System.Reflection; - -[assembly: AssemblyTitle("KKLB_CheatTools")] -[assembly: AssemblyProduct("KKLB_CheatTools")] \ No newline at end of file diff --git a/KKS_CheatTools/CheatToolsWindowInit.cs b/KKS_CheatTools/CheatToolsWindowInit.KKS.cs similarity index 100% rename from KKS_CheatTools/CheatToolsWindowInit.cs rename to KKS_CheatTools/CheatToolsWindowInit.KKS.cs diff --git a/KKS_CheatTools/KKS_CheatTools.csproj b/KKS_CheatTools/KKS_CheatTools.csproj index 3be74ab..3bb8b22 100644 --- a/KKS_CheatTools/KKS_CheatTools.csproj +++ b/KKS_CheatTools/KKS_CheatTools.csproj @@ -162,14 +162,16 @@ - + - + + + diff --git a/KKS_CheatTools/Properties/AssemblyInfo.cs b/KKS_CheatTools/Properties/AssemblyInfo.cs deleted file mode 100644 index bbc843c..0000000 --- a/KKS_CheatTools/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,4 +0,0 @@ -using System.Reflection; - -[assembly: AssemblyTitle("KKS_CheatTools")] -[assembly: AssemblyProduct("KKS_CheatTools")] \ No newline at end of file diff --git a/KK_CheatTools/CheatToolsWindowInit.cs b/KK_CheatTools/CheatToolsWindowInit.KK.cs similarity index 100% rename from KK_CheatTools/CheatToolsWindowInit.cs rename to KK_CheatTools/CheatToolsWindowInit.KK.cs diff --git a/KK_CheatTools/KK_CheatTools.csproj b/KK_CheatTools/KK_CheatTools.csproj index 467d4c5..6c2ec67 100644 --- a/KK_CheatTools/KK_CheatTools.csproj +++ b/KK_CheatTools/KK_CheatTools.csproj @@ -106,11 +106,10 @@ - + - @@ -118,6 +117,9 @@ + + + diff --git a/KK_CheatTools/Properties/AssemblyInfo.cs b/KK_CheatTools/Properties/AssemblyInfo.cs deleted file mode 100644 index 783a25e..0000000 --- a/KK_CheatTools/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,4 +0,0 @@ -using System.Reflection; - -[assembly: AssemblyTitle("KK_CheatTools")] -[assembly: AssemblyProduct("KK_CheatTools")] \ No newline at end of file diff --git a/Shared/AssemblyInfo.cs b/Shared/AssemblyInfo.cs index 51bdba0..5e1c33b 100644 --- a/Shared/AssemblyInfo.cs +++ b/Shared/AssemblyInfo.cs @@ -2,29 +2,12 @@ using System.Runtime.InteropServices; using Shared; -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. +[assembly: AssemblyProduct("CheatTools")] +[assembly: AssemblyTitle("CheatTools")] [assembly: AssemblyDescription("In-game trainer/debugging plugin")] -[assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("https://github.com/ManlyMarco/IllusionCheatTools")] [assembly: AssemblyCopyright("Copyright © 2020")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. [assembly: ComVisible(false)] -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] [assembly: AssemblyVersion(Metadata.Version)] diff --git a/Shared/CheatToolsPlugin.cs b/Shared/CheatToolsPlugin.cs index 83251ee..4cf8622 100644 --- a/Shared/CheatToolsPlugin.cs +++ b/Shared/CheatToolsPlugin.cs @@ -8,13 +8,14 @@ namespace CheatTools { - [BepInPlugin(GUID, "Cheat Tools", Version)] + [BepInPlugin(GUID, DisplayName, Version)] [BepInDependency(RuntimeUnityEditorCore.GUID, RuntimeUnityEditorCore.Version)] #if !KKLB [BepInDependency(KKAPI.KoikatuAPI.GUID, KKAPI.KoikatuAPI.VersionConst)] #endif public sealed class CheatToolsPlugin : BaseUnityPlugin { + public const string DisplayName = Metadata.DisplayName; public const string GUID = Metadata.GUID; public const string Version = Metadata.Version; diff --git a/Shared/Metadata.cs b/Shared/Metadata.cs index 3f3fa75..9616544 100644 --- a/Shared/Metadata.cs +++ b/Shared/Metadata.cs @@ -2,6 +2,7 @@ { internal static class Metadata { + public const string DisplayName = "Cheat Tools"; public const string GUID = "CheatTools"; public const string Version = "3.3"; } From 8ac6df283a2589b195fc9b8baa3b5d4e8821b28e Mon Sep 17 00:00:00 2001 From: ManlyMarco <39247311+ManlyMarco@users.noreply.github.com> Date: Sat, 3 Feb 2024 14:47:51 +0100 Subject: [PATCH 3/5] Remove properties folders --- AI_CheatTools/AI_CheatTools.csproj | 3 --- HS2_CheatTools/HS2_CheatTools.csproj | 3 --- KKLB_CheatTools/KKLB_CheatTools.csproj | 3 --- KKS_CheatTools/KKS_CheatTools.csproj | 3 --- KK_CheatTools/KK_CheatTools.csproj | 3 --- 5 files changed, 15 deletions(-) diff --git a/AI_CheatTools/AI_CheatTools.csproj b/AI_CheatTools/AI_CheatTools.csproj index f835a47..4fa6ceb 100644 --- a/AI_CheatTools/AI_CheatTools.csproj +++ b/AI_CheatTools/AI_CheatTools.csproj @@ -131,9 +131,6 @@ - - - diff --git a/HS2_CheatTools/HS2_CheatTools.csproj b/HS2_CheatTools/HS2_CheatTools.csproj index 709a36c..dcef920 100644 --- a/HS2_CheatTools/HS2_CheatTools.csproj +++ b/HS2_CheatTools/HS2_CheatTools.csproj @@ -134,9 +134,6 @@ - - - diff --git a/KKLB_CheatTools/KKLB_CheatTools.csproj b/KKLB_CheatTools/KKLB_CheatTools.csproj index 721fb03..d8a2703 100644 --- a/KKLB_CheatTools/KKLB_CheatTools.csproj +++ b/KKLB_CheatTools/KKLB_CheatTools.csproj @@ -96,9 +96,6 @@ - - - diff --git a/KKS_CheatTools/KKS_CheatTools.csproj b/KKS_CheatTools/KKS_CheatTools.csproj index 3bb8b22..6a80fac 100644 --- a/KKS_CheatTools/KKS_CheatTools.csproj +++ b/KKS_CheatTools/KKS_CheatTools.csproj @@ -169,9 +169,6 @@ - - - diff --git a/KK_CheatTools/KK_CheatTools.csproj b/KK_CheatTools/KK_CheatTools.csproj index 6c2ec67..510e56a 100644 --- a/KK_CheatTools/KK_CheatTools.csproj +++ b/KK_CheatTools/KK_CheatTools.csproj @@ -117,9 +117,6 @@ - - - From c313a7dc850c0294c9e4ab3b3781afbf23593555 Mon Sep 17 00:00:00 2001 From: ManlyMarco <39247311+ManlyMarco@users.noreply.github.com> Date: Sat, 3 Feb 2024 15:01:26 +0100 Subject: [PATCH 4/5] Clean up packages --- AI_CheatTools/AI_CheatTools.csproj | 2 +- AI_CheatTools/packages.config | 24 ++++++++-------- HC_CheatTools/CheatToolsPlugin.cs | 2 +- HS2_CheatTools/HS2_CheatTools.csproj | 18 +----------- HS2_CheatTools/packages.config | 24 ++++++++-------- KKLB_CheatTools/packages.config | 14 +++++----- KKS_CheatTools/KKS_CheatTools.csproj | 7 ++--- KKS_CheatTools/packages.config | 42 ++++++++++++++-------------- KK_CheatTools/KK_CheatTools.csproj | 2 +- KK_CheatTools/packages.config | 16 +++++------ 10 files changed, 66 insertions(+), 85 deletions(-) diff --git a/AI_CheatTools/AI_CheatTools.csproj b/AI_CheatTools/AI_CheatTools.csproj index 4fa6ceb..1da68ac 100644 --- a/AI_CheatTools/AI_CheatTools.csproj +++ b/AI_CheatTools/AI_CheatTools.csproj @@ -47,7 +47,7 @@ False - ..\packages\ExtensibleSaveFormat.AIGirl.16.4.0\lib\net46\AI_ExtensibleSaveFormat.dll + ..\packages\ExtensibleSaveFormat.AIGirl.18.2.0\lib\net46\AI_ExtensibleSaveFormat.dll False diff --git a/AI_CheatTools/packages.config b/AI_CheatTools/packages.config index 6e86501..ce0facb 100644 --- a/AI_CheatTools/packages.config +++ b/AI_CheatTools/packages.config @@ -1,21 +1,21 @@  - - - - + + + + - - + + - - - - - + + + + + - + \ No newline at end of file diff --git a/HC_CheatTools/CheatToolsPlugin.cs b/HC_CheatTools/CheatToolsPlugin.cs index 4781812..cbbd51f 100644 --- a/HC_CheatTools/CheatToolsPlugin.cs +++ b/HC_CheatTools/CheatToolsPlugin.cs @@ -8,7 +8,7 @@ namespace CheatTools { [BepInPlugin(GUID, DisplayName, Version)] [BepInDependency(RuntimeUnityEditorCore.GUID, RuntimeUnityEditorCore.Version)] - [BepInProcess("HoneyCome")] + [BepInProcess("HoneyCome")] // Studio is missing some important classes, so we can't run in it public class CheatToolsPlugin : BasePlugin { public const string DisplayName = Metadata.DisplayName; diff --git a/HS2_CheatTools/HS2_CheatTools.csproj b/HS2_CheatTools/HS2_CheatTools.csproj index dcef920..62c49ff 100644 --- a/HS2_CheatTools/HS2_CheatTools.csproj +++ b/HS2_CheatTools/HS2_CheatTools.csproj @@ -44,10 +44,6 @@ ..\packages\IllusionLibs.HoneySelect2.Assembly-CSharp.2020.5.29.4\lib\net46\Assembly-CSharp.dll False - - ..\packages\IllusionLibs.HoneySelect2.Assembly-CSharp-firstpass.2020.5.29.4\lib\net46\Assembly-CSharp-firstpass.dll - False - ..\packages\IllusionLibs.BepInEx.5.4.20\lib\net35\BepInEx.dll False @@ -57,7 +53,7 @@ False - ..\packages\ExtensibleSaveFormat.HoneySelect2.16.4.0\lib\net46\HS2_ExtensibleSaveFormat.dll + ..\packages\ExtensibleSaveFormat.HoneySelect2.18.2.0\lib\net46\HS2_ExtensibleSaveFormat.dll False @@ -118,14 +114,6 @@ ..\packages\IllusionLibs.HoneySelect2.UnityEngine.IMGUIModule.2018.4.11.4\lib\net46\UnityEngine.IMGUIModule.dll False - - ..\packages\IllusionLibs.HoneySelect2.UnityEngine.UI.2018.4.11.4\lib\net46\UnityEngine.UI.dll - False - - - ..\packages\IllusionLibs.HoneySelect2.UnityEngine.UIModule.2018.4.11.4\lib\net46\UnityEngine.UIModule.dll - False - @@ -148,8 +136,6 @@ - - @@ -159,8 +145,6 @@ - - \ No newline at end of file diff --git a/HS2_CheatTools/packages.config b/HS2_CheatTools/packages.config index 19d796c..f51e2db 100644 --- a/HS2_CheatTools/packages.config +++ b/HS2_CheatTools/packages.config @@ -1,23 +1,21 @@  - - + + - + - + - - + + - - - - - - + + + + - + \ No newline at end of file diff --git a/KKLB_CheatTools/packages.config b/KKLB_CheatTools/packages.config index ab72e3f..47375c1 100644 --- a/KKLB_CheatTools/packages.config +++ b/KKLB_CheatTools/packages.config @@ -1,11 +1,11 @@  - - - - - - - + + + + + + + \ No newline at end of file diff --git a/KKS_CheatTools/KKS_CheatTools.csproj b/KKS_CheatTools/KKS_CheatTools.csproj index 6a80fac..0b0b88e 100644 --- a/KKS_CheatTools/KKS_CheatTools.csproj +++ b/KKS_CheatTools/KKS_CheatTools.csproj @@ -57,7 +57,7 @@ False - ..\packages\ExtensibleSaveFormat.KoikatsuSunshine.16.8.0\lib\net46\KKS_ExtensibleSaveFormat.dll + ..\packages\ExtensibleSaveFormat.KoikatsuSunshine.18.2.0\lib\net46\KKS_ExtensibleSaveFormat.dll False @@ -98,7 +98,6 @@ - ..\packages\IllusionLibs.KoikatsuSunshine.UniRx.2021.9.17\lib\net46\UniRx.dll @@ -182,13 +181,13 @@ - + @@ -196,11 +195,11 @@ - + \ No newline at end of file diff --git a/KKS_CheatTools/packages.config b/KKS_CheatTools/packages.config index 7e5efed..9e5adce 100644 --- a/KKS_CheatTools/packages.config +++ b/KKS_CheatTools/packages.config @@ -1,25 +1,25 @@  - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - + \ No newline at end of file diff --git a/KK_CheatTools/KK_CheatTools.csproj b/KK_CheatTools/KK_CheatTools.csproj index 510e56a..fdf10a3 100644 --- a/KK_CheatTools/KK_CheatTools.csproj +++ b/KK_CheatTools/KK_CheatTools.csproj @@ -55,7 +55,7 @@ False - ..\packages\ExtensibleSaveFormat.Koikatu.16.4.0\lib\net35\ExtensibleSaveFormat.dll + ..\packages\ExtensibleSaveFormat.Koikatu.18.2.0\lib\net35\ExtensibleSaveFormat.dll False diff --git a/KK_CheatTools/packages.config b/KK_CheatTools/packages.config index d0c5ffb..45ea751 100644 --- a/KK_CheatTools/packages.config +++ b/KK_CheatTools/packages.config @@ -1,19 +1,19 @@  - - + + - + - + - - - + + + - + \ No newline at end of file From 2f3554d2d545004a4b5ea08ccb583d208eda7109 Mon Sep 17 00:00:00 2001 From: ManlyMarco <39247311+ManlyMarco@users.noreply.github.com> Date: Sat, 3 Feb 2024 15:21:32 +0100 Subject: [PATCH 5/5] Minor code cleanup; Use nameof --- AI_CheatTools/Hooks/BuildAnywhereHooks.cs | 10 ++-- AI_CheatTools/Hooks/BuildOverlapHooks.cs | 12 +++-- AI_CheatTools/Hooks/FishingHackHooks.cs | 8 +-- AI_CheatTools/Hooks/UnlockCraftingHooks.cs | 13 ++--- AI_CheatTools/packages.config | 24 ++++----- HC_CheatTools/CheatToolsPlugin.cs | 2 +- HC_CheatTools/CheatToolsWindowInit.HC.cs | 15 ++++-- HC_CheatTools/HC_CheatTools.csproj | 52 +++++++++--------- HS2_CheatTools/CheatToolsWindowInit.HS2.cs | 15 +++--- HS2_CheatTools/Hooks.cs | 9 ++-- KKLB_CheatTools/CheatToolsWindowInit.KKLB.cs | 14 ++--- KKS_CheatTools/CheatToolsWindowInit.KKS.cs | 18 ++++--- KKS_CheatTools/DesireEng.cs | 5 +- KKS_CheatTools/HExperienceKindEng.cs | 4 +- KK_CheatTools/CheatToolsWindowInit.KK.cs | 57 ++++++++++---------- KK_CheatTools/DesireEng.cs | 2 +- KK_CheatTools/HExperienceKindEng.cs | 4 +- KK_CheatTools/UnlockPositionsHooks.cs | 10 ++-- Shared_Noclip/NoclipFeature.cs | 4 +- 19 files changed, 148 insertions(+), 130 deletions(-) diff --git a/AI_CheatTools/Hooks/BuildAnywhereHooks.cs b/AI_CheatTools/Hooks/BuildAnywhereHooks.cs index 48a8837..73d97fc 100644 --- a/AI_CheatTools/Hooks/BuildAnywhereHooks.cs +++ b/AI_CheatTools/Hooks/BuildAnywhereHooks.cs @@ -20,7 +20,9 @@ public static bool Enabled if (value != Enabled) { if (value) + { _hInstance = Harmony.CreateAndPatchAll(typeof(BuildAnywhereHooks)); + } else { _hInstance.UnpatchSelf(); @@ -30,7 +32,7 @@ public static bool Enabled } } - [HarmonyPatch(typeof(GuideManager), "GridArea", MethodType.Getter)] + [HarmonyPatch(typeof(GuideManager), nameof(GuideManager.GridArea), MethodType.Getter)] [HarmonyPrefix] public static bool GetGridArea(ref Vector3 __result) { @@ -38,7 +40,7 @@ public static bool GetGridArea(ref Vector3 __result) return false; } - [HarmonyPatch(typeof(VirtualCameraController), "Update")] + [HarmonyPatch(typeof(VirtualCameraController), nameof(VirtualCameraController.Update))] [HarmonyPrefix] public static bool GetUpdate(ref VirtualCameraController __instance) { @@ -47,7 +49,7 @@ public static bool GetUpdate(ref VirtualCameraController __instance) return false; } - [HarmonyPatch(typeof(GuideRotation), "Round")] + [HarmonyPatch(typeof(GuideRotation), nameof(GuideRotation.Round))] [HarmonyPrefix] public static bool CustomRot(ref float __result, float _value) { @@ -56,4 +58,4 @@ public static bool CustomRot(ref float __result, float _value) return false; } } -} \ No newline at end of file +} diff --git a/AI_CheatTools/Hooks/BuildOverlapHooks.cs b/AI_CheatTools/Hooks/BuildOverlapHooks.cs index 3623204..111389c 100644 --- a/AI_CheatTools/Hooks/BuildOverlapHooks.cs +++ b/AI_CheatTools/Hooks/BuildOverlapHooks.cs @@ -18,7 +18,9 @@ public static bool Enabled if (value != Enabled) { if (value) + { _hInstance = Harmony.CreateAndPatchAll(typeof(BuildOverlapHooks)); + } else { _hInstance.UnpatchSelf(); @@ -29,14 +31,14 @@ public static bool Enabled } [HarmonyPrefix] - [HarmonyPatch(typeof(CraftInfo), "IsOverlapNow", MethodType.Getter)] - [HarmonyPatch(typeof(OCItem), "IsOverlapNow", MethodType.Getter)] - [HarmonyPatch(typeof(OCFolder), "IsOverlapNow", MethodType.Getter)] - [HarmonyPatch(typeof(ObjectCtrl), "IsOverlapNow", MethodType.Getter)] + [HarmonyPatch(typeof(CraftInfo), nameof(CraftInfo.IsOverlapNow), MethodType.Getter)] + [HarmonyPatch(typeof(OCItem), nameof(OCItem.IsOverlapNow), MethodType.Getter)] + [HarmonyPatch(typeof(OCFolder), nameof(OCFolder.IsOverlapNow), MethodType.Getter)] + [HarmonyPatch(typeof(ObjectCtrl), nameof(ObjectCtrl.IsOverlapNow), MethodType.Getter)] public static bool GetIsOverlapNow(ref bool __result) { __result = false; return false; } } -} \ No newline at end of file +} diff --git a/AI_CheatTools/Hooks/FishingHackHooks.cs b/AI_CheatTools/Hooks/FishingHackHooks.cs index 0289dfb..0d7d334 100644 --- a/AI_CheatTools/Hooks/FishingHackHooks.cs +++ b/AI_CheatTools/Hooks/FishingHackHooks.cs @@ -18,7 +18,9 @@ public static bool Enabled if (value != Enabled) { if (value) + { _hInstance = Harmony.CreateAndPatchAll(typeof(FishingHackHooks)); + } else { _hInstance.UnpatchSelf(); @@ -29,13 +31,13 @@ public static bool Enabled } [HarmonyPrefix] - [HarmonyPatch(typeof(FishingManager), "CheckArrowInCircle")] + [HarmonyPatch(typeof(FishingManager), nameof(FishingManager.CheckArrowInCircle))] public static bool CheckPossible(FishingManager __instance, ref float ___fishHeartPoint) { ___fishHeartPoint = 0f; __instance.scene = FishingManager.FishingScene.Success; - AccessTools.Method(typeof(FishingManager), "SceneToSuccess").Invoke(__instance, null); + AccessTools.Method(typeof(FishingManager), nameof(FishingManager.SceneToSuccess)).Invoke(__instance, null); return false; } } -} \ No newline at end of file +} diff --git a/AI_CheatTools/Hooks/UnlockCraftingHooks.cs b/AI_CheatTools/Hooks/UnlockCraftingHooks.cs index 2d27bfd..4db6e89 100644 --- a/AI_CheatTools/Hooks/UnlockCraftingHooks.cs +++ b/AI_CheatTools/Hooks/UnlockCraftingHooks.cs @@ -1,4 +1,5 @@ -using System.Collections.Generic; +using System; +using System.Collections.Generic; using AIProject; using AIProject.UI; using AIProject.UI.Viewer; @@ -37,7 +38,7 @@ public static bool Enabled } [HarmonyPrefix] - [HarmonyPatch(typeof(CraftUI), "Possible")] + [HarmonyPatch(typeof(CraftUI), nameof(CraftUI.Possible))] public static bool CheckPossible(ref RecipeDataInfo[] __result, RecipeDataInfo[] info) { __result = info; @@ -45,7 +46,7 @@ public static bool CheckPossible(ref RecipeDataInfo[] __result, RecipeDataInfo[] } [HarmonyPrefix] - [HarmonyPatch(typeof(CraftViewer), "Possible")] + [HarmonyPatch(typeof(CraftViewer), nameof(CraftViewer.Possible))] public static bool CheckPossible(ref CraftItemNodeUI.Possible __result) { __result = new CraftItemNodeUI.Possible(false, true); @@ -54,7 +55,7 @@ public static bool CheckPossible(ref CraftItemNodeUI.Possible __result) // How many of required items are available [HarmonyPrefix] - [HarmonyPatch(typeof(RecipeItemNodeUI), "ItemCount", MethodType.Getter)] + [HarmonyPatch(typeof(RecipeItemNodeUI), nameof(RecipeItemNodeUI.ItemCount), MethodType.Getter)] public static bool GetCraftItemUIItemCount(ref int __result) { __result = 9999; @@ -63,7 +64,7 @@ public static bool GetCraftItemUIItemCount(ref int __result) private static void LoadInfoCtor(Manager.Housing.LoadInfo __instance) { - __instance.requiredMaterials = new Manager.Housing.RequiredMaterial[0]; + __instance.requiredMaterials = Array.Empty(); } } -} \ No newline at end of file +} diff --git a/AI_CheatTools/packages.config b/AI_CheatTools/packages.config index ce0facb..28e56f0 100644 --- a/AI_CheatTools/packages.config +++ b/AI_CheatTools/packages.config @@ -1,21 +1,21 @@  - - + + - + - - - - - - - - - + + + + + + + + + \ No newline at end of file diff --git a/HC_CheatTools/CheatToolsPlugin.cs b/HC_CheatTools/CheatToolsPlugin.cs index cbbd51f..51317eb 100644 --- a/HC_CheatTools/CheatToolsPlugin.cs +++ b/HC_CheatTools/CheatToolsPlugin.cs @@ -36,4 +36,4 @@ public override void Load() runtimeUnityEditorCore.AddFeature(new CheatToolsWindow(runtimeUnityEditorCore)); } } -} \ No newline at end of file +} diff --git a/HC_CheatTools/CheatToolsWindowInit.HC.cs b/HC_CheatTools/CheatToolsWindowInit.HC.cs index a88e71b..a35bbcc 100644 --- a/HC_CheatTools/CheatToolsWindowInit.HC.cs +++ b/HC_CheatTools/CheatToolsWindowInit.HC.cs @@ -13,7 +13,7 @@ public static class CheatToolsWindowInit { private static KeyValuePair[] _openInInspectorButtons; private static Human _currentVisibleGirl; - + public static void Initialize(CheatToolsPlugin instance) { CheatToolsWindow.OnShown += _ => @@ -29,7 +29,7 @@ public static void Initialize(CheatToolsPlugin instance) new KeyValuePair((object)Manager.Scene._instance ?? typeof(Manager.Scene), "Manager.Scene"), new KeyValuePair((object)Manager.Sound._instance ?? typeof(Manager.Sound), "Manager.Sound"), new KeyValuePair(typeof(Manager.GameSystem), "Manager.GameSystem"), - new KeyValuePair(typeof(Manager.Map), "Manager.Map"), + new KeyValuePair(typeof(Manager.Map), "Manager.Map") }; }; @@ -54,6 +54,7 @@ private static void DrawGlobalUnlocks(CheatToolsWindow obj) foreach (var achievementKey in achievementKeys) HC.SaveData.SaveData.UnlockAchievement(achievementKey); } + if (GUILayout.Button("Unlock all perks", GUILayout.ExpandWidth(true))) { var achievementKeys = new List(); @@ -102,10 +103,12 @@ private static void DrawHSceneCheats(CheatToolsWindow cheatToolsWindow) if (GUILayout.Button("Open HScene Flags in inspector")) Inspector.Instance.Push(new InstanceStackEntry(hScene, "HSceneFlagCtrl"), true); } + internal static string GetHeroineName(Human heroine) { return !string.IsNullOrEmpty(heroine.fileParam?.fullname) ? heroine.fileParam.fullname : heroine.name; } + private static void DrawGirlCheatMenu(CheatToolsWindow cheatToolsWindow) { GUILayout.Label("Character status editor"); @@ -132,7 +135,7 @@ private static void DrawSingleGirlCheats(Human currentAdvGirl) { GUILayout.BeginVertical(GUI.skin.box); { - GUILayout.Label("Selected heroine name: " + (GetHeroineName(currentAdvGirl))); + GUILayout.Label("Selected heroine name: " + GetHeroineName(currentAdvGirl)); GUILayout.Space(6); var gi = currentAdvGirl.fileGameInfo; @@ -144,7 +147,9 @@ void DrawSingleStateBtn(ChaFileDefine.State state) { if (GUILayout.Button(state.ToString())) { - gi.nowState = state; gi.calcState = state; gi.nowDrawState = state; + gi.nowState = state; + gi.calcState = state; + gi.nowDrawState = state; gi.Favor = state == ChaFileDefine.State.Favor ? 100 : Mathf.Min(gi.Favor, 90); gi.Enjoyment = state == ChaFileDefine.State.Enjoyment ? 100 : Mathf.Min(gi.Enjoyment, 90); gi.Aversion = state == ChaFileDefine.State.Aversion ? 100 : Mathf.Min(gi.Aversion, 90); @@ -154,6 +159,7 @@ void DrawSingleStateBtn(ChaFileDefine.State state) anyChanges = true; } } + GUILayout.BeginHorizontal(); { GUILayout.Label("Current state: " + gi.nowState); @@ -195,6 +201,7 @@ void ShowSingleSlider(string name, Action set, Func get) } GUILayout.EndHorizontal(); } + void ShowSingleTextfield(string name, Action set, Func get) { GUILayout.BeginHorizontal(); diff --git a/HC_CheatTools/HC_CheatTools.csproj b/HC_CheatTools/HC_CheatTools.csproj index baef66d..c1dfa93 100644 --- a/HC_CheatTools/HC_CheatTools.csproj +++ b/HC_CheatTools/HC_CheatTools.csproj @@ -1,37 +1,37 @@  - - net6.0 - CheatTools - warnings + + net6.0 + CheatTools + warnings - ..\bin - false + ..\bin + false - False + False - embedded - 9999 + embedded + 9999 - $(DefineConstants);HC;IL2CPP - + $(DefineConstants);HC;IL2CPP + - - - - + + + + - - - + + + - - - ..\..\RuntimeUnityEditor\bin\IL2CPP\RuntimeUnityEditor.Core.IL2CPP.dll - False - - + + + ..\..\RuntimeUnityEditor\bin\IL2CPP\RuntimeUnityEditor.Core.IL2CPP.dll + False + + - + - + \ No newline at end of file diff --git a/HS2_CheatTools/CheatToolsWindowInit.HS2.cs b/HS2_CheatTools/CheatToolsWindowInit.HS2.cs index f2af4db..f889b1a 100644 --- a/HS2_CheatTools/CheatToolsWindowInit.HS2.cs +++ b/HS2_CheatTools/CheatToolsWindowInit.HS2.cs @@ -30,7 +30,7 @@ private static string GetHeroineName(Heroine heroine) { return !string.IsNullOrEmpty(heroine.Name) ? heroine.Name : heroine.ChaName; } - + public static void Initialize(CheatToolsPlugin instance) { ToStringConverter.AddConverter(GetHeroineName); @@ -80,6 +80,7 @@ private static void DrawGlobalUnlocks(CheatToolsWindow obj) foreach (var achievementKey in _gameMgr.saveData.achievement.Keys.ToList()) SaveData.SetAchievementAchieve(achievementKey); } + if (GUILayout.Button("Unlock all perks", GUILayout.ExpandWidth(true))) { foreach (var achievementKey in _gameMgr.saveData.achievementExchange.Keys.ToList()) @@ -144,7 +145,7 @@ private static void DrawSingleGirlCheats(Heroine currentAdvGirl) { GUILayout.BeginVertical(GUI.skin.box); { - GUILayout.Label("Selected heroine name: " + (GetHeroineName(currentAdvGirl))); + GUILayout.Label("Selected heroine name: " + GetHeroineName(currentAdvGirl)); GUILayout.Space(6); if (currentAdvGirl.chaCtrl != null && currentAdvGirl.chaCtrl.fileGameInfo2 != null) @@ -156,7 +157,9 @@ void DrawSingleStateBtn(ChaFileDefine.State state) { if (GUILayout.Button(state.ToString())) { - gi2.nowState = state; gi2.calcState = state; gi2.nowDrawState = state; + gi2.nowState = state; + gi2.calcState = state; + gi2.nowDrawState = state; gi2.Favor = state == ChaFileDefine.State.Favor ? 100 : Mathf.Min(gi2.Favor, 90); gi2.Enjoyment = state == ChaFileDefine.State.Enjoyment ? 100 : Mathf.Min(gi2.Enjoyment, 90); gi2.Aversion = state == ChaFileDefine.State.Aversion ? 100 : Mathf.Min(gi2.Aversion, 90); @@ -166,6 +169,7 @@ void DrawSingleStateBtn(ChaFileDefine.State state) anyChanges = true; } } + GUILayout.BeginHorizontal(); { GUILayout.Label("Current state: " + gi2.nowState); @@ -207,6 +211,7 @@ void ShowSingleSlider(string name, Action set, Func get) } GUILayout.EndHorizontal(); } + void ShowSingleTextfield(string name, Action set, Func get) { GUILayout.BeginHorizontal(); @@ -236,7 +241,7 @@ void ShowSingleTextfield(string name, Action set, Func get) ShowSingleSlider(nameof(gi2.Tiredness), i => gi2.Tiredness = i, () => gi2.Tiredness); ShowSingleSlider(nameof(gi2.Toilet), i => gi2.Toilet = i, () => gi2.Toilet); ShowSingleSlider(nameof(gi2.Libido), i => gi2.Libido = i, () => gi2.Libido); - + ShowSingleTextfield(nameof(gi2.hCount), i => { gi2.hCount = i; if (i == 0) gi2.firstHFlag = true; }, () => gi2.hCount); if (anyChanges) @@ -260,9 +265,7 @@ void ShowSingleTextfield(string name, Action set, Func get) Inspector.Instance.Push(new InstanceStackEntry(currentAdvGirl, "Heroine " + GetHeroineName(currentAdvGirl)), true); if (GUILayout.Button("Inspect extended data")) - { Inspector.Instance.Push(new InstanceStackEntry(ExtensibleSaveFormat.ExtendedSave.GetAllExtendedData(currentAdvGirl.chaFile), "ExtData for " + currentAdvGirl.Name), true); - } } GUILayout.EndVertical(); } diff --git a/HS2_CheatTools/Hooks.cs b/HS2_CheatTools/Hooks.cs index ac51787..9cf7220 100644 --- a/HS2_CheatTools/Hooks.cs +++ b/HS2_CheatTools/Hooks.cs @@ -17,8 +17,8 @@ private static class Hooks private static Timer _cardSaveTimer; private static int _lastEntryNo; - [HarmonyPatch(typeof(LobbyParameterUI), "SetParameter", typeof(ChaFileControl), typeof(int), typeof(int))] [HarmonyPostfix] + [HarmonyPatch(typeof(LobbyParameterUI), nameof(LobbyParameterUI.SetParameter), typeof(ChaFileControl), typeof(int), typeof(int))] public static void CharSelected(int _entryNo) { _cardSaveTimer?.Stop(); @@ -49,7 +49,7 @@ public static void CharSelected(int _entryNo) } else { - Console.WriteLine("wtf " + new StackTrace()); + CheatToolsPlugin.Logger.LogWarning("wtf " + new StackTrace()); } }; } @@ -74,13 +74,12 @@ private static void ApplyParameters(int charaEntryNo) } } - [HarmonyPatch(typeof(LobbyParameterUI), "SetParameter", typeof(GameCharaFileInfo), typeof(int), - typeof(int))] [HarmonyPostfix] + [HarmonyPatch(typeof(LobbyParameterUI), nameof(LobbyParameterUI.SetParameter), typeof(GameCharaFileInfo), typeof(int), typeof(int))] public static void CharSelected2(int _entryNo) { CharSelected(_entryNo); } } } -} \ No newline at end of file +} diff --git a/KKLB_CheatTools/CheatToolsWindowInit.KKLB.cs b/KKLB_CheatTools/CheatToolsWindowInit.KKLB.cs index 79b93b1..06be7c1 100644 --- a/KKLB_CheatTools/CheatToolsWindowInit.KKLB.cs +++ b/KKLB_CheatTools/CheatToolsWindowInit.KKLB.cs @@ -16,14 +16,14 @@ public static partial class CheatToolsWindowInit private static bool _posTweakForce; private static bool _posTweakUnlimited; private static float _posTweakDistance = 0.1f; - + public static void Initialize(CheatToolsPlugin instance) { CheatToolsWindow.OnShown += _ => { _openInInspectorButtons = new[] { - new KeyValuePair((Func)(() => Game.Instance) , "Game.Instance"), + new KeyValuePair((Func)(() => Game.Instance), "Game.Instance"), new KeyValuePair((Func)EditorUtilities.GetRootGoScanner, "Root Objects") }; }; @@ -71,9 +71,7 @@ private static void DrawPlayerUnlocks(CheatToolsWindow window) GUILayout.EndHorizontal(); if (GUILayout.Button("Open advanced options")) - { Inspector.Instance.Push(new InstanceStackEntry(playerStatus, "PlayerStatus"), true); - } } private static void DrawGlobalUnlocks(CheatToolsWindow window) @@ -85,7 +83,7 @@ private static void DrawGlobalUnlocks(CheatToolsWindow window) if (GUILayout.Button("Unlock all chapters")) { var chapterClear = gameStatus.Chapter_Clear; - for (int i = 0; i < chapterClear.Length; i++) + for (var i = 0; i < chapterClear.Length; i++) chapterClear[i] = true; } @@ -93,22 +91,24 @@ private static void DrawGlobalUnlocks(CheatToolsWindow window) { var partsUnlock = gameStatus.Parts_Unlock; var partsNew = gameStatus.Parts_New; - for (int i = 0; i < partsUnlock.Length; i++) + for (var i = 0; i < partsUnlock.Length; i++) { partsNew[i] = !partsUnlock[i]; partsUnlock[i] = true; } } + if (GUILayout.Button("Mark all endings and games as seen")) { void EnsureNonzeroCount(List list) { - for (int i = 0; i < list.Count; i++) + for (var i = 0; i < list.Count; i++) { if (list[i] == 0) list[i] = 1; } } + EnsureNonzeroCount(gameStatus.listEndingCount); EnsureNonzeroCount(gameStatus.listMiniGameClearCount); diff --git a/KKS_CheatTools/CheatToolsWindowInit.KKS.cs b/KKS_CheatTools/CheatToolsWindowInit.KKS.cs index 15205b3..7120390 100644 --- a/KKS_CheatTools/CheatToolsWindowInit.KKS.cs +++ b/KKS_CheatTools/CheatToolsWindowInit.KKS.cs @@ -36,7 +36,8 @@ public static class CheatToolsWindowInit private static string _setdesireValue; private static KeyValuePair[] _openInInspectorButtons; - private static readonly string[] _prayerNames = { + private static readonly string[] _prayerNames = + { "Nothing", "Topic drop bonus", "Find more topics?", @@ -51,7 +52,8 @@ public static class CheatToolsWindowInit "Ask for sex bonus", }; - private static readonly int[] _prayerIds = { + private static readonly int[] _prayerIds = + { 0, 1, 2, @@ -66,13 +68,14 @@ public static class CheatToolsWindowInit 1003, }; - private static readonly string[] _relationNames = { + private static readonly string[] _relationNames = + { "Casual", "Friend", "Lover", "Bonded", }; - + public static void Initialize(CheatToolsPlugin instance) { NoclipFeature.InitializeNoclip(instance, () => @@ -123,7 +126,7 @@ private static void DrawGlobalUnlocks(CheatToolsWindow window) { // Vanilla positions don't seem to go above 60, modded positions are above 1000 usually // 8 buckets might change in the future if game is updated with more h modes, check HSceneProc.lstAnimInfo for how many are needed - for (int i = 0; i < 10; i++) Game.globalData.playHList[i] = new HashSet(Enumerable.Range(0, 9999)); + for (var i = 0; i < 10; i++) Game.globalData.playHList[i] = new HashSet(Enumerable.Range(0, 9999)); } } @@ -253,7 +256,7 @@ private static void DrawGirlCheatMenu(CheatToolsWindow cheatToolsWindow) { foreach (var h in Game.HeroineList) { - for (int i = 0; i < 31; i++) + for (var i = 0; i < 31; i++) ActionScene.instance.actCtrl.SetDesire(i, h, 0); } } @@ -385,7 +388,8 @@ private static void DrawHeroineCheats(Heroine currentAdvGirl) if (GUILayout.Button("Clear all desires")) { - for (int i = 0; i < 31; i++) actCtrl.SetDesire(i, currentAdvGirl, 0); + for (var i = 0; i < 31; i++) + actCtrl.SetDesire(i, currentAdvGirl, 0); } GUILayout.BeginHorizontal(); diff --git a/KKS_CheatTools/DesireEng.cs b/KKS_CheatTools/DesireEng.cs index 53f7fe9..0828737 100644 --- a/KKS_CheatTools/DesireEng.cs +++ b/KKS_CheatTools/DesireEng.cs @@ -33,6 +33,7 @@ internal enum DesireEng AskPlayerToTalk = 28, AskPlayerForH = 29, FidgetingWaiting = 30, + // New in KKS TakeBath = 31, TakeBreak = 32, @@ -49,6 +50,6 @@ internal enum DesireEng SplashingWaterPartner = 43, Vacation = 44, Outdoors = 45, - Curiosity = 46, + Curiosity = 46 } -} \ No newline at end of file +} diff --git a/KKS_CheatTools/HExperienceKindEng.cs b/KKS_CheatTools/HExperienceKindEng.cs index a624908..0468e5c 100644 --- a/KKS_CheatTools/HExperienceKindEng.cs +++ b/KKS_CheatTools/HExperienceKindEng.cs @@ -5,6 +5,6 @@ internal enum HExperienceKindEng FirstTime = 0, Inexperienced = 1, Experienced = 2, - Perverted = 3, + Perverted = 3 }; -} \ No newline at end of file +} diff --git a/KK_CheatTools/CheatToolsWindowInit.KK.cs b/KK_CheatTools/CheatToolsWindowInit.KK.cs index 84f2148..c3422b0 100644 --- a/KK_CheatTools/CheatToolsWindowInit.KK.cs +++ b/KK_CheatTools/CheatToolsWindowInit.KK.cs @@ -110,12 +110,14 @@ private static void DrawGlobalUnlocks(CheatToolsWindow window) { // Vanilla positions don't seem to go above 60, modded positions are above 1000 usually // 8 buckets might change in the future if game is updated with more h modes, check HSceneProc.lstAnimInfo for how many are needed - for (int i = 0; i < 10; i++) _gameMgr.glSaveData.playHList[i] = new HashSet(Enumerable.Range(0, 9999)); + for (var i = 0; i < 10; i++) + _gameMgr.glSaveData.playHList[i] = new HashSet(Enumerable.Range(0, 9999)); } if (GUILayout.Button("Unlock all wedding personalities")) { - foreach (var personalityId in Singleton.Instance.voiceInfoList.Select(x => x.No).Where(x => x >= 0)) _gameMgr.weddingData.personality.Add(personalityId); + foreach (var personalityId in Singleton.Instance.voiceInfoList.Select(x => x.No).Where(x => x >= 0)) + _gameMgr.weddingData.personality.Add(personalityId); } /* Doesn't work, need a list of items to put into glSaveData.clubContents from somewhere @@ -148,15 +150,12 @@ private static void DrawHSceneCheats(CheatToolsWindow cheatToolsWindow) GUILayout.EndHorizontal(); - if (_hSprite != null) + if (_hSprite != null && GUILayout.Button("Force quit H scene")) { - if (GUILayout.Button("Force quit H scene")) - { - Utils.Sound.Play(SystemSE.cancel); - _hSprite.flags.click = HFlag.ClickKind.end; - _hSprite.flags.isHSceneEnd = true; - _hSprite.flags.numEnd = 0; - } + Utils.Sound.Play(SystemSE.cancel); + _hSprite.flags.click = HFlag.ClickKind.end; + _hSprite.flags.isHSceneEnd = true; + _hSprite.flags.numEnd = 0; } } @@ -206,6 +205,7 @@ private static void DrawGirlCheatMenu(CheatToolsWindow cheatToolsWindow) h.isAnger = false; } } + if (GUILayout.Button("Make everyone lovers")) { foreach (var h in Game.Instance.HeroineList) @@ -219,47 +219,53 @@ private static void DrawGirlCheatMenu(CheatToolsWindow cheatToolsWindow) h.confessed = true; } } + if (GUILayout.Button("Make everyone club members")) - { foreach (var h in Game.Instance.HeroineList) { if (!h.isTeacher) h.isStaff = true; } - } + if (GUILayout.Button("Make everyone virgins")) { foreach (var h in Game.Instance.HeroineList) MakeVirgin(h); } + if (GUILayout.Button("Make everyone inexperienced")) { foreach (var h in Game.Instance.HeroineList) MakeInexperienced(h); } + if (GUILayout.Button("Make everyone experienced")) { foreach (var h in Game.Instance.HeroineList) MakeExperienced(h); } + if (GUILayout.Button("Make everyone perverted")) { foreach (var h in Game.Instance.HeroineList) MakeHorny(h); } + if (GUILayout.Button("Clear everyone's desires")) { foreach (var h in Game.Instance.HeroineList) { - for (int i = 0; i < 31; i++) + for (var i = 0; i < 31; i++) Game.Instance.actScene.actCtrl.SetDesire(i, h, 0); } } + if (GUILayout.Button("Everyone desires masturbation")) { foreach (var h in Game.Instance.HeroineList) Game.Instance.actScene.actCtrl.SetDesire(4, h, 100); } + if (GUILayout.Button("Everyone desires lesbian")) { foreach (var h in Game.Instance.HeroineList) @@ -370,10 +376,10 @@ private static void DrawHeroineCheats(SaveData.Heroine currentAdvGirl) if (actCtrl != null) { var sortedDesires = Enum.GetValues(typeof(DesireEng)).Cast() - .Select(i => new { id = i, value = actCtrl.GetDesire((int)i, currentAdvGirl) }) - .Where(x => x.value > 5) - .OrderByDescending(x => x.value) - .Take(8); + .Select(i => new { id = i, value = actCtrl.GetDesire((int)i, currentAdvGirl) }) + .Where(x => x.value > 5) + .OrderByDescending(x => x.value) + .Take(8); var any = false; foreach (var desire in sortedDesires) @@ -383,6 +389,7 @@ private static void DrawHeroineCheats(SaveData.Heroine currentAdvGirl) GUILayout.Label("Desires (and their strengths):\n"); any = true; } + GUILayout.BeginHorizontal(); { GUILayout.Label((int)desire.id + " " + desire.id); @@ -393,11 +400,13 @@ private static void DrawHeroineCheats(SaveData.Heroine currentAdvGirl) } GUILayout.EndHorizontal(); } + if (!any) GUILayout.Label("Has no desires"); if (GUILayout.Button("Clear all desires")) { - for (int i = 0; i < 31; i++) actCtrl.SetDesire(i, currentAdvGirl, 0); + for (var i = 0; i < 31; i++) + actCtrl.SetDesire(i, currentAdvGirl, 0); } GUILayout.BeginHorizontal(); @@ -484,13 +493,9 @@ private static void DrawHeroineCheats(SaveData.Heroine currentAdvGirl) if (GUI.changed) { if (newVal) - { currentAdvGirl.talkEvent.Add(2); - } else - { currentAdvGirl.talkEvent.Remove(2); - } } currentAdvGirl.isGirlfriend = GUILayout.Toggle(currentAdvGirl.isGirlfriend, "Is a girlfriend"); @@ -518,14 +523,10 @@ private static void DrawHeroineCheats(SaveData.Heroine currentAdvGirl) } if (GUILayout.Button("Open Heroine in inspector")) - { Inspector.Instance.Push(new InstanceStackEntry(currentAdvGirl, "Heroine " + currentAdvGirl.Name), true); - } if (GUILayout.Button("Inspect extended data")) - { Inspector.Instance.Push(new InstanceStackEntry(ExtensibleSaveFormat.ExtendedSave.GetAllExtendedData(currentAdvGirl.charFile), "ExtData for " + currentAdvGirl.Name), true); - } } GUILayout.EndVertical(); } @@ -653,7 +654,7 @@ private static void DrawPlayerCheats(CheatToolsWindow cheatToolsWindow) { param.isWarning = false; CheatToolsPlugin.Logger.Log(LogLevel.Message, - "Disabling shame reactions on map: " + param.MapName); + "Disabling shame reactions on map: " + param.MapName); } } } @@ -675,9 +676,7 @@ private static void DrawPlayerCheats(CheatToolsWindow cheatToolsWindow) NoclipFeature.NoclipMode = GUILayout.Toggle(NoclipFeature.NoclipMode, "Enable player noclip"); if (GUILayout.Button("Open player data in inspector")) - { Inspector.Instance.Push(new InstanceStackEntry(_gameMgr.saveData.player, "Player data"), true); - } } private static SaveData.Heroine[] GetCurrentVisibleGirls() diff --git a/KK_CheatTools/DesireEng.cs b/KK_CheatTools/DesireEng.cs index 7c80ed6..a3da2df 100644 --- a/KK_CheatTools/DesireEng.cs +++ b/KK_CheatTools/DesireEng.cs @@ -34,4 +34,4 @@ internal enum DesireEng AskPlayerForH = 29, FidgetingWaiting = 30 } -} \ No newline at end of file +} diff --git a/KK_CheatTools/HExperienceKindEng.cs b/KK_CheatTools/HExperienceKindEng.cs index a624908..0468e5c 100644 --- a/KK_CheatTools/HExperienceKindEng.cs +++ b/KK_CheatTools/HExperienceKindEng.cs @@ -5,6 +5,6 @@ internal enum HExperienceKindEng FirstTime = 0, Inexperienced = 1, Experienced = 2, - Perverted = 3, + Perverted = 3 }; -} \ No newline at end of file +} diff --git a/KK_CheatTools/UnlockPositionsHooks.cs b/KK_CheatTools/UnlockPositionsHooks.cs index 258eab4..5d540d8 100644 --- a/KK_CheatTools/UnlockPositionsHooks.cs +++ b/KK_CheatTools/UnlockPositionsHooks.cs @@ -67,12 +67,11 @@ private static bool CreateListAnimationFileNameUnlockPatch(object __instance, re var categorys = traverse.Field>("categorys").Value; - for (int i = 0; i < lstAnimInfo.Length; i++) + for (var i = 0; i < lstAnimInfo.Length; i++) { lstUseAnimInfo[i] = new List(); if (_list == -1 || i == _list) - { - for (int j = 0; j < lstAnimInfo[i].Count; j++) + for (var j = 0; j < lstAnimInfo[i].Count; j++) { if ((UnlockAll && oneFem && !peeping) || lstAnimInfo[i][j].lstCategory.Any(c => categorys.Contains(c.category))) { @@ -80,13 +79,14 @@ private static bool CreateListAnimationFileNameUnlockPatch(object __instance, re lstUseAnimInfo[i].Add(lstAnimInfo[i][j]); } } - } } return false; } - [HarmonyPostfix, HarmonyPatch(typeof(HSprite), "CreateMotionList"), HarmonyWrapSafe] + [HarmonyPostfix] + [HarmonyWrapSafe] + [HarmonyPatch(typeof(HSprite), nameof(HSprite.CreateMotionList))] public static void CreateMotionListUnlockPatch(HSprite __instance, ref int _kind) { // todo move this list size fix to a fix plugin diff --git a/Shared_Noclip/NoclipFeature.cs b/Shared_Noclip/NoclipFeature.cs index d8dfaa6..b9b8d1d 100644 --- a/Shared_Noclip/NoclipFeature.cs +++ b/Shared_Noclip/NoclipFeature.cs @@ -16,7 +16,7 @@ internal static class NoclipFeature public static void InitializeNoclip(CheatToolsPlugin instance, Func getPlayerNavMeshAgent) { if (StudioAPI.InsideStudio) return; - + _getPlayerNavMeshAgent = getPlayerNavMeshAgent ?? throw new ArgumentNullException(nameof(getPlayerNavMeshAgent)); _noclip = instance.Config.Bind("Hotkeys", "Toggle player noclip", KeyboardShortcut.Empty); @@ -30,9 +30,7 @@ private static IEnumerator NoclipCo() yield return null; if (_noclip.Value.IsDown()) - { NoclipMode = !NoclipMode; - } if (NoclipMode) {