using System; using System.Linq; using BepInEx; using BepInEx.Configuration; using HarmonyLib; using HarmonyLib.Tools; using static TavernData; namespace BlacksmithMaster { [BepInPlugin(PluginGuid, PluginName, PluginVersion)] public class Main : BaseUnityPlugin { private const string PluginGuid = "Cykasmith"; private const string PluginName = "Cykasmith"; private const string PluginVersion = "1.0.0"; public static ConfigEntry debug; public static ConfigEntry xpMultiplier; public static ConfigEntry moneyMultiplier; public static ConfigEntry researchMultiplier; public static ConfigEntry salaryMultiplier; public static ConfigEntry alwaysEvenly; public void Awake() { debug = Config.Bind("General", "Debug", false); xpMultiplier = Config.Bind("General", "XP Multiplier", 1f, new ConfigDescription("XP Multiplier", new AcceptableValueRange(0.01f, 1024f))); moneyMultiplier = Config.Bind("General", "Money Multiplier", 1f, new ConfigDescription("Money Multiplier", new AcceptableValueRange(0.01f, 1024f))); researchMultiplier = Config.Bind( "General", "Research Multiplier", 1f, new ConfigDescription("Research Multiplier", new AcceptableValueRange(0.01f, 1024f))); salaryMultiplier = Config.Bind("General", "Salary Multiplier", 1f, new ConfigDescription("Salary Multiplier", new AcceptableValueRange(0.01f, 1024f))); alwaysEvenly = Config.Bind("General", "Always Evenly", false, new ConfigDescription("Always Evenly", new AcceptableValueRange(false, true))); Logger.LogInfo("Cykasmith loaded"); HarmonyFileLog.Enabled = true; Harmony harmony = new Harmony(PluginGuid); harmony.PatchAll(); var originalMethods = harmony.GetPatchedMethods(); Logger.LogInfo("Patched " + originalMethods.Count() + " methods"); } public static void LogDebug(string message) { if (Main.debug.Value) Console.WriteLine(message); } } [HarmonyPatch(typeof(StaffBase), "AddXp")] public class TavernData_AddXp { public static void Prefix(ref int amount) { Main.LogDebug("Original XP amount: " + amount); amount = (int)((float)amount * Main.xpMultiplier.Value); Main.LogDebug("Modified XP amount: " + amount); } } [HarmonyPatch(typeof(TavernModel), "ChangeMoney")] public class TavernModel_ChangeMoney { public static void Prefix(ref int value) { Main.LogDebug("Original money amount: " + value); if (value > 0) value = (int)((float)value * Main.moneyMultiplier.Value); Main.LogDebug("Modified money amount: " + value); } } [HarmonyPatch(typeof(ResourcesModel), "ChangeResearchPoints")] public class ResourcesModel_ChangeResearchPoints { public static void Prefix(ref int value) { Main.LogDebug("Original research amount: " + value); if (value > 0) value = (int)((float)value * Main.researchMultiplier.Value); Main.LogDebug("Modified research amount: " + value); } } [HarmonyPatch(typeof(StaffInfo), "Salary", MethodType.Getter)] public class StaffInfo_GetSalary { public static void Postfix(ref int __result) { Main.LogDebug("Original salary: " + __result); __result = (int)((float)__result * Main.salaryMultiplier.Value); Main.LogDebug("Modified salary: " + __result); } } [HarmonyPatch(typeof(StaffUtil), "FillBasicInfo")] public class StaffUtil_FillBasicInfo { public static void Postfix(TavernData.StaffType staffType, Random rnd, ref TavernData.StaffInfo newPerson) { Main.LogDebug("Setting skill assignment strategy to evenly"); newPerson.SkillAssignmentStrategy = TavernData.SkillAssignmentStrategyType.Balanced; } } }