Some mods target the Mono version of the game, which is available by opting into the Steam beta branch "alternate"
Decompiled source of FasterMixing v1.1.1
FasterMixing.dll
Decompiled 10 months agousing System; using System.Diagnostics; using System.IO; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using FasterMixing; using HarmonyLib; using MelonLoader; using Newtonsoft.Json; using ScheduleOne.ObjectScripts; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: MelonInfo(typeof(MachineTime), "FasterMixing", "1.1.0", "Zlatan9798", null)] [assembly: MelonGame("TVGS", "Schedule I")] [assembly: AssemblyTitle("FasterMixing")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("FasterMixing")] [assembly: AssemblyCopyright("Copyright © 2025")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("39af96f2-e7fb-4838-8fa0-fb02b42da503")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")] [assembly: AssemblyVersion("1.0.0.0")] namespace FasterMixing; public class MachineTime : MelonMod { public class Settings { public int MixTimePerItem { get; set; } public bool InstantMixing { get; set; } public int MixTimeForAnything { get; set; } } [HarmonyPatch(typeof(MixingStation), "GetMixTimeForCurrentOperation")] private class Patching { private static void Postfix(ref int __result, MixingStation __instance) { if (__instance.CurrentMixOperation != null) { if (Modsettings.MixTimePerItem <= 0) { MelonLogger.Msg("Tried to put mixtime per item less or equal to 0, changing the value to instant mix"); Modsettings.MixTimePerItem = 1; Modsettings.InstantMixing = true; } if (Modsettings.InstantMixing) { __result = 1; } if (Modsettings.MixTimeForAnything > 0 && !Modsettings.InstantMixing) { __result = Modsettings.MixTimeForAnything; return; } __result = Modsettings.MixTimePerItem * __instance.CurrentMixOperation.Quantity; MelonLogger.Msg($"Changed mix time to {__result}."); } } } public static Settings Modsettings; public override void OnInitializeMelon() { //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Expected O, but got Unknown LoadSettings(); MelonLogger.Msg("Faster Mixing loaded!"); Harmony val = new Harmony("zlatan.FasterMixing"); val.PatchAll(); } private void LoadSettings() { try { string path = Path.Combine(Directory.modDirectory, "configFasterMixing.json"); if (!File.Exists(path)) { Settings settings = new Settings { MixTimePerItem = 1, InstantMixing = false, MixTimeForAnything = 0 }; File.WriteAllText(path, JsonConvert.SerializeObject((object)settings, (Formatting)1)); MelonLogger.Msg("No settings file found. Created one with default settings."); } string text = File.ReadAllText(path); Modsettings = JsonConvert.DeserializeObject<Settings>(text); } catch (Exception arg) { MelonLogger.Msg($"Error loading the settings from json: {arg}"); } } } public class Directory { public static string modDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); }