diff --git a/Projects/BanquetForFools/BanquetForCyka/BanquetForCyka.csproj b/Projects/BanquetForFools/BanquetForCyka/BanquetForCyka.csproj index 4d5d3c7..5fae056 100644 --- a/Projects/BanquetForFools/BanquetForCyka/BanquetForCyka.csproj +++ b/Projects/BanquetForFools/BanquetForCyka/BanquetForCyka.csproj @@ -74,6 +74,9 @@ $(GAME_MANAGED)/UnityEngine.dll + + $(GAME_MANAGED)/UnityEngine.UI.dll + $(GAME_MANAGED)/UnityEngine.CoreModule.dll diff --git a/Projects/BanquetForFools/BanquetForCyka/Class1.cs b/Projects/BanquetForFools/BanquetForCyka/Class1.cs index 6886f2f..801b020 100644 --- a/Projects/BanquetForFools/BanquetForCyka/Class1.cs +++ b/Projects/BanquetForFools/BanquetForCyka/Class1.cs @@ -5,6 +5,8 @@ using BepInEx; using BepInEx.Configuration; using HarmonyLib; using HarmonyLib.Tools; +using UnityEngine; +using UnityEngine.UI; namespace BanquetForCyka { [BepInPlugin(PluginGuid, PluginName, PluginVersion)] @@ -82,56 +84,56 @@ namespace BanquetForCyka { [HarmonyPatch(typeof(LevelUp), "ClickedStat")] public class Actions_ClickedStat { - private static float originalStr; - private static float originalAgi; - private static float originalDex; - private static float originalPag; - private static float originalSen; + public static bool Prefix(ref LevelUp __instance, GameObject go) { + if (__instance.levelUpSkills || !__instance.open) { + return true; // Let original method handle this case + } - public static void Prefix(ref LevelUp __instance) { - Main.LogDebug("Original Str: " + __instance.character.stats.strength, Main.debugStatEntry); - Main.LogDebug("Original Agi: " + __instance.character.stats.agility, Main.debugStatEntry); - Main.LogDebug("Original Dex: " + __instance.character.stats.dexterity, Main.debugStatEntry); - Main.LogDebug("Original Pag: " + __instance.character.stats.pagan, Main.debugStatEntry); - Main.LogDebug("Original Sen: " + __instance.character.stats.sensory, Main.debugStatEntry); + string name = go.name; + if (__instance.statChosen1 != "" || name == __instance.statChosen1) { + return true; // Let original method handle this case + } - originalStr = __instance.character.stats.strength; - originalAgi = __instance.character.stats.agility; - originalDex = __instance.character.stats.dexterity; - originalPag = __instance.character.stats.pagan; - originalSen = __instance.character.stats.sensory; - } + float num = 0f; + if (name == "Strength") { + num = __instance.savedStr; + } + if (name == "Agility") { + num = __instance.savedAgl; + } + if (name == "Dexterity") { + num = __instance.savedDex; + } + if (name == "Aura") { + num = __instance.savedAur; + } + if (name == "Pagan") { + num = __instance.savedPag; + } + if (name == "Sensory") { + num = __instance.savedSen; + } - public static void Postfix(ref LevelUp __instance) { - float deltaStr = __instance.character.stats.strength - originalStr; - float deltaAgi = __instance.character.stats.agility - originalAgi; - float deltaDex = __instance.character.stats.dexterity - originalDex; - float deltaPag = __instance.character.stats.pagan - originalPag; - float deltaSen = __instance.character.stats.sensory - originalSen; + Main.LogDebug("Original stat value: " + num, Main.debugStatEntry); + float result = Main.levelUpStatEntry.Evaluate(1f); // Evaluate the increase amount + Main.LogDebug("Modified increase amount: " + result, Main.debugStatEntry); - Main.LogDebug("Delta Str: " + deltaStr, Main.debugStatEntry); - Main.LogDebug("Delta Agi: " + deltaAgi, Main.debugStatEntry); - Main.LogDebug("Delta Dex: " + deltaDex, Main.debugStatEntry); - Main.LogDebug("Delta Pag: " + deltaPag, Main.debugStatEntry); - Main.LogDebug("Delta Sen: " + deltaSen, Main.debugStatEntry); + // Set the stat with the modified increase + __instance.character.stats.SetStat(name, num + result); + Links.x.characterSheet.GetStatNums(); + Links.x.characterSheet.GetOutput(); - float resultStr = Main.levelUpStatEntry.Evaluate(deltaStr); - float resultAgi = Main.levelUpStatEntry.Evaluate(deltaAgi); - float resultDex = Main.levelUpStatEntry.Evaluate(deltaDex); - float resultPag = Main.levelUpStatEntry.Evaluate(deltaPag); - float resultSen = Main.levelUpStatEntry.Evaluate(deltaSen); + // Update UI elements like the original method would + __instance.statTokenUse1.enabled = true; + __instance.statTokenCounter1.enabled = false; + __instance.statTokenUse1RT.anchoredPosition = + __instance.skillTrs[__instance.GetTransformIndex(name, true)].anchoredPosition; + __instance.statChosen1 = name; + __instance.dragIndicator.SetActive(false); + __instance.draggingToken = false; + __instance.dragToken = null; - Main.LogDebug("Result Str: " + resultStr, Main.debugStatEntry); - Main.LogDebug("Result Agi: " + resultAgi, Main.debugStatEntry); - Main.LogDebug("Result Dex: " + resultDex, Main.debugStatEntry); - Main.LogDebug("Result Pag: " + resultPag, Main.debugStatEntry); - Main.LogDebug("Result Sen: " + resultSen, Main.debugStatEntry); - - __instance.character.stats.strength = resultStr; - __instance.character.stats.agility = resultAgi; - __instance.character.stats.dexterity = resultDex; - __instance.character.stats.pagan = resultPag; - __instance.character.stats.sensory = resultSen; + return false; // Skip original method } } @@ -144,4 +146,4 @@ namespace BanquetForCyka { Main.LogDebug("Modified amount: " + __result, Main.debugLevelUpEntry); } } -} +} \ No newline at end of file