using BepInEx; using BepInEx.Configuration; using BepInEx.Logging; using BepInEx.Unity.IL2CPP; using HarmonyLib; namespace BetterStuff; [BepInPlugin(PLUGIN_GUID, PLUGIN_NAME, PLUGIN_VERSION)] public class Plugin : BasePlugin { public const string PLUGIN_GUID = "de.mpburgmann.BetterStuff"; public const string PLUGIN_NAME = "Better Stuff"; public const string PLUGIN_VERSION = "1.1.0"; internal static new ManualLogSource Log; private static ConfigEntry scanTime; private static ConfigEntry finishDuration; private static ConfigEntry timeAfterScans; private static ConfigEntry restockerSpeed; private static ConfigEntry selfcheckoutCustomerSpeed; private static ConfigEntry selfcheckoutPlayerSpeed; private static ConfigEntry customerHelperScanningSpeed; private static ConfigEntry customerHelperSpeed; private static ConfigEntry securityGuardSpeed; private static ConfigEntry janitorSpeed; public override void Load() { // Plugin startup logic Log = base.Log; Log.LogInfo($"Plugin {MyPluginInfo.PLUGIN_GUID} is loaded!"); scanTime = Config.Bind("Cashier", "Scanning Speed", 0.7f, "Default vanilla value is 1.5."); finishDuration = Config.Bind("Cashier", "FinishingDuration", 1f, "Default vanilla value is 2."); timeAfterScans = Config.Bind("Cashier", "TimeAfterAllScans", 0.5f, "Default vanilla value is 1."); restockerSpeed = Config.Bind("Restocker", "Speed", 5f, "Default value is 2."); selfcheckoutCustomerSpeed = Config.Bind("Selfcheckout", "Customer Speed", 0.6f, "Default vanilla value is 1.8."); selfcheckoutPlayerSpeed = Config.Bind("Selfcheckout", "Player Speed", 0.3f, "Default vanilla value is 0.6."); customerHelperScanningSpeed = Config.Bind("Customer Helper", "Scanning Speed", 0.5f, "Default vanilla value is 1.5."); customerHelperSpeed = Config.Bind("Customer Helper", "Speed", 5f, "Default value is 2."); securityGuardSpeed = Config.Bind("Security Guard", "Speed", 5f, "Default value is 2."); janitorSpeed = Config.Bind("Janitor", "Speed", 5f, "Default value is 2."); Harmony harmony = new(PLUGIN_GUID); harmony.PatchAll(); } [HarmonyPatch(typeof(Cashier), "Start")] public static class Cashier_Start_Patch { [HarmonyPostfix] public static void Postfix(Cashier __instance) { __instance.ScanningInterval = scanTime.Value; } } [HarmonyPatch(typeof(Checkout), "FinishedScanning")] public static class Cashier_Checkout_Patch { [HarmonyPostfix] public static void Postfix(Checkout __instance) { if(!__instance.m_IsSelfCheckout) { __instance.m_AutomatedCheckout.m_FinishingPaymentDuration = finishDuration.Value; __instance.m_AutomatedCheckout.m_IntervalAfterScanningAll = timeAfterScans.Value; } } } [HarmonyPatch(typeof(Restocker), "Start")] public static class Restocker_Start_Patch { [HarmonyPostfix] public static void Postfix(Restocker __instance) { __instance.m_Agent.speed = restockerSpeed.Value; __instance.m_Agent.acceleration *= 200f; __instance.m_Agent.angularSpeed *= 200f; } } [HarmonyPatch(typeof(Checkout), "Start")] public static class Selfcheckout_Start_Patch { [HarmonyPostfix] public static void Postfix(Checkout __instance) { if (__instance.m_IsSelfCheckout) { __instance.m_SelfCheckout.m_CustomerScanningInterval = selfcheckoutCustomerSpeed.Value; __instance.m_SelfCheckout.m_PlayerScanningInterval = selfcheckoutPlayerSpeed.Value; } } } [HarmonyPatch(typeof(CustomerHelper), "Start")] public static class CustomerHelper_Start_Patch { [HarmonyPostfix] public static void Postfix(CustomerHelper __instance) { __instance.ScanningInterval = customerHelperScanningSpeed.Value; __instance.m_CustomerHelperScanIntervals = new Il2CppSystem.Collections.Generic.List(1); __instance.m_CustomerHelperScanIntervals.Add(customerHelperScanningSpeed.Value); __instance.m_Agent.speed = customerHelperSpeed.Value; __instance.m_Agent.acceleration *= 200f; __instance.m_Agent.angularSpeed *= 200f; } } [HarmonyPatch(typeof(SecurityGuard), "Start")] public static class SecurityGuard_Start_Patch { [HarmonyPostfix] public static void Postfix(SecurityGuard __instance) { __instance.m_AnimController.m_Agent.speed = securityGuardSpeed.Value; __instance.m_AnimController.m_Agent.acceleration *= 200f; __instance.m_AnimController.m_Agent.angularSpeed *= 200f; } } [HarmonyPatch(typeof(Janitor), "Start")] public static class Janitor_Start_Patch { [HarmonyPostfix] public static void Postfix(Janitor __instance) { __instance.m_Agent.speed = janitorSpeed.Value; __instance.m_Agent.acceleration *= 200f; __instance.m_Agent.angularSpeed *= 200f; } } }