Files
BepInEx/Projects/BlacksmithMaster/BlacksmithMaster/Class1.cs

103 lines
4.2 KiB
C#

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<bool> debug;
public static ConfigEntry<float> xpMultiplier;
public static ConfigEntry<float> moneyMultiplier;
public static ConfigEntry<float> researchMultiplier;
public static ConfigEntry<float> salaryMultiplier;
public static ConfigEntry<bool> alwaysEvenly;
public void Awake() {
debug = Config.Bind("General", "Debug", false);
xpMultiplier =
Config.Bind("General", "XP Multiplier", 1f,
new ConfigDescription("XP Multiplier", new AcceptableValueRange<float>(0.01f, 1024f)));
moneyMultiplier =
Config.Bind("General", "Money Multiplier", 1f,
new ConfigDescription("Money Multiplier", new AcceptableValueRange<float>(0.01f, 1024f)));
researchMultiplier = Config.Bind(
"General", "Research Multiplier", 1f,
new ConfigDescription("Research Multiplier", new AcceptableValueRange<float>(0.01f, 1024f)));
salaryMultiplier =
Config.Bind("General", "Salary Multiplier", 1f,
new ConfigDescription("Salary Multiplier", new AcceptableValueRange<float>(0.01f, 1024f)));
alwaysEvenly =
Config.Bind("General", "Always Evenly", false,
new ConfigDescription("Always Evenly", new AcceptableValueRange<bool>(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;
}
}
}