commit 5b2a0e93611ef519b7e1994f4dc5bd2a2533c9c7 Author: PhatPhuckDave Date: Fri Sep 27 20:32:46 2024 +0200 Initial commit diff --git a/MelonTemplate.sln b/MelonTemplate.sln new file mode 100644 index 0000000..fcb577f --- /dev/null +++ b/MelonTemplate.sln @@ -0,0 +1,16 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MelonTemplate", "MelonTemplate\MelonTemplate.csproj", "{DA9D274E-486F-4F82-84FF-CD9388CB0B09}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {DA9D274E-486F-4F82-84FF-CD9388CB0B09}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {DA9D274E-486F-4F82-84FF-CD9388CB0B09}.Debug|Any CPU.Build.0 = Debug|Any CPU + {DA9D274E-486F-4F82-84FF-CD9388CB0B09}.Release|Any CPU.ActiveCfg = Release|Any CPU + {DA9D274E-486F-4F82-84FF-CD9388CB0B09}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal diff --git a/MelonTemplate/.editorconfig b/MelonTemplate/.editorconfig new file mode 100644 index 0000000..7e98c67 --- /dev/null +++ b/MelonTemplate/.editorconfig @@ -0,0 +1,6 @@ +# CSharp formatting rules: +[*.cs] +csharp_new_line_before_open_brace = none +csharp_new_line_before_else = false +csharp_new_line_before_catch = false +csharp_new_line_before_finally = false \ No newline at end of file diff --git a/MelonTemplate/MelonTemplate.cs b/MelonTemplate/MelonTemplate.cs new file mode 100644 index 0000000..cce2b8d --- /dev/null +++ b/MelonTemplate/MelonTemplate.cs @@ -0,0 +1,103 @@ +using System; +using System.Linq; +using BepInEx; +using BepInEx.Configuration; +using HarmonyLib; +using HarmonyLib.Tools; + +namespace TavernDave { + [BepInPlugin(pluginGuid, pluginName, pluginVersion)] + public class Main : BaseUnityPlugin { + private const string pluginGuid = "TavernDave"; + private const string pluginName = "TavernDave"; + private const string pluginVersion = "1.0.0"; + + public static ConfigEntry debug; + + public static ConfigEntry moneyMultiplier; + public static ConfigEntry fastSpeed; + public static ConfigEntry staffXpMultiplier; + public static ConfigEntry peoplePerMinuteMultiplier; + public static ConfigEntry peoplePerMinuteOffset; + public static ConfigEntry prestigeMultiplier; + + public void Awake() { + debug = Config.Bind("General", "Debug", false); + + moneyMultiplier = Config.Bind("General", "MoneyMultiplier", 1f); + fastSpeed = Config.Bind("General", "FastSpeed", 1); + staffXpMultiplier = Config.Bind("General", "StaffXpMultiplier", 1f); + peoplePerMinuteMultiplier = Config.Bind("General", "PeoplePerMinuteMultiplier", 1f); + peoplePerMinuteOffset = Config.Bind("General", "PeoplePerMinuteOffset", 0f); + prestigeMultiplier = Config.Bind("General", "PrestigeMultiplier", 1f); + + Logger.LogInfo("Cyka mod loaded"); + HarmonyFileLog.Enabled = true; + Harmony harmony = new Harmony(pluginGuid); + harmony.PatchAll(); + var originalMethods = harmony.GetPatchedMethods(); + Logger.LogInfo("Patched " + originalMethods.Count() + " methods"); + foreach (var method in originalMethods) { + Logger.LogInfo("Patched " + method.Name); + } + } + } + + [HarmonyPatch] + public class Patches { + [HarmonyPrefix] + [HarmonyPatch(typeof(TavernModel), "ChangeMoney")] + public static void PrefixMoney(ref int value) { + if (Main.debug.Value) + Console.WriteLine($"Money is {value}"); + if (value > 0) { + value = (int)(value * Main.moneyMultiplier.Value); + if (Main.debug.Value) + Console.WriteLine($"Money modified to {value}"); + } + } + + [HarmonyPrefix] + [HarmonyPatch(typeof(UiController), "ChangeGameSpeed")] + public static void PrefixSpeed(ref int gameSpeed) { + if (Main.debug.Value) + Console.WriteLine($"Game speed is {gameSpeed}"); + if (gameSpeed > 1) { + gameSpeed = Main.fastSpeed.Value; + if (Main.debug.Value) + Console.WriteLine($"Game speed modified to {gameSpeed}"); + } + } + + [HarmonyPrefix] + [HarmonyPatch(typeof(StaffModel), "UpdateXp")] + public static void PrefixXp(ref int id, ref int amount) { + if (Main.debug.Value) + Console.WriteLine($"Staff xp is {amount}"); + if (amount > 0) { + amount = (int)(amount * Main.staffXpMultiplier.Value); + if (Main.debug.Value) + Console.WriteLine($"Staff xp modified to {amount}"); + } + } + + [HarmonyPostfix] + [HarmonyPatch(typeof(TechTreeModel), nameof(TechTreeModel.GetBonusPeoplePerMinute))] + public static void PostfixPeoplePerMinute(ref float __result) { + __result *= Main.peoplePerMinuteMultiplier.Value; + __result += Main.peoplePerMinuteOffset.Value; + } + + [HarmonyPostfix] + [HarmonyPatch(typeof(TavernModel), nameof(TavernModel.GetQuality))] + public static void PostfixQuality(ref int __result) { + if (Main.debug.Value) + Console.WriteLine($"Quality is {__result}"); + if (__result > 0) { + __result = (int)(__result * Main.prestigeMultiplier.Value); + if (Main.debug.Value) + Console.WriteLine($"Quality modified to {__result}"); + } + } + } +} \ No newline at end of file diff --git a/MelonTemplate/MelonTemplate.csproj b/MelonTemplate/MelonTemplate.csproj new file mode 100644 index 0000000..46d5d7a --- /dev/null +++ b/MelonTemplate/MelonTemplate.csproj @@ -0,0 +1,62 @@ + + + + + {foo/bar} + $(GAME_DIR)/{foo/bar}/Managed + $(GAME_DIR)/BepInEx + Debug + AnyCPU + {DA9D274E-486F-4F82-84FF-CD9388CB0B09} + Library + Properties + MelonTemplate + MelonTemplate + v4.8.1 + 512 + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + $(GAME_BEPINEX)/core/0Harmony.dll + + + $(GAME_BEPINEX)/core/BepInEx.dll + + + $(GAME_BEPINEX)/plugins/ConfigurationManager/ConfigurationManager.dll + + + $(GAME_MANAGED)/Assembly-CSharp.dll + + + $(GAME_MANAGED)/UnityEngine.dll + + + $(GAME_MANAGED)/UnityEngine.CoreModule.dll + + + + diff --git a/MelonTemplate/Properties/AssemblyInfo.cs b/MelonTemplate/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..7b22a2f --- /dev/null +++ b/MelonTemplate/Properties/AssemblyInfo.cs @@ -0,0 +1,35 @@ +using System.Reflection; +using System.Runtime.InteropServices; + +// 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: AssemblyTitle("DaveCEO")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("DaveCEO")] +[assembly: AssemblyCopyright("Copyright © 2023")] +[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)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("DA9D274E-486F-4F82-84FF-CD9388CB0B09")] + +// 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("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] \ No newline at end of file