144 lines
5.3 KiB
C#
144 lines
5.3 KiB
C#
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<float> scanTime;
|
|
private static ConfigEntry<float> finishDuration;
|
|
private static ConfigEntry<float> timeAfterScans;
|
|
private static ConfigEntry<float> restockerSpeed;
|
|
private static ConfigEntry<float> selfcheckoutCustomerSpeed;
|
|
private static ConfigEntry<float> selfcheckoutPlayerSpeed;
|
|
private static ConfigEntry<float> customerHelperScanningSpeed;
|
|
private static ConfigEntry<float> customerHelperSpeed;
|
|
private static ConfigEntry<float> securityGuardSpeed;
|
|
private static ConfigEntry<float> 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<float>(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;
|
|
}
|
|
}
|
|
} |