1
0
mirror of https://github.com/soarqin/DSP_Mods.git synced 2025-12-09 00:13:36 +08:00

Work in progress

This commit is contained in:
2022-12-02 21:25:04 +08:00
parent 7259dc758f
commit d98f96fd94

View File

@@ -1,6 +1,8 @@
using BepInEx; using System;
using BepInEx;
using BepInEx.Configuration; using BepInEx.Configuration;
using HarmonyLib; using HarmonyLib;
using UnityEngine;
namespace OverclockEverything; namespace OverclockEverything;
@@ -22,6 +24,7 @@ public class Patch : BaseUnityPlugin
private static int minerPowerConsumptionMultiplier = 2; private static int minerPowerConsumptionMultiplier = 2;
private static long powerGenerationMultiplier = 4; private static long powerGenerationMultiplier = 4;
private static long powerFuelConsumptionMultiplier = 1; private static long powerFuelConsumptionMultiplier = 1;
private static long powerSupplyAreaMultiplier = 2;
private void Awake() private void Awake()
{ {
@@ -49,6 +52,8 @@ public class Patch : BaseUnityPlugin
new ConfigDescription("Power generation multiplier for all power providers", new AcceptableValueRange<long>(1, 10))).Value; new ConfigDescription("Power generation multiplier for all power providers", new AcceptableValueRange<long>(1, 10))).Value;
powerFuelConsumptionMultiplier = Config.Bind("Power", "FuelConsumptionMultiplier", powerFuelConsumptionMultiplier, powerFuelConsumptionMultiplier = Config.Bind("Power", "FuelConsumptionMultiplier", powerFuelConsumptionMultiplier,
new ConfigDescription("Fuel consumption multiplier for all fuel-consuming power providers", new AcceptableValueRange<long>(1, 10))).Value; new ConfigDescription("Fuel consumption multiplier for all fuel-consuming power providers", new AcceptableValueRange<long>(1, 10))).Value;
powerSupplyAreaMultiplier = Config.Bind("Power", "SupplyAreaMultiplier", powerSupplyAreaMultiplier,
new ConfigDescription("Connection length and supply area radius multiplier for power providers", new AcceptableValueRange<long>(1, 10))).Value;
Harmony.CreateAndPatchAll(typeof(Patch)); Harmony.CreateAndPatchAll(typeof(Patch));
Harmony.CreateAndPatchAll(typeof(BeltFix)); Harmony.CreateAndPatchAll(typeof(BeltFix));
} }
@@ -56,33 +61,59 @@ public class Patch : BaseUnityPlugin
private static void BoostSorter(int id) private static void BoostSorter(int id)
{ {
var prefabDesc = LDB.items.Select(id).prefabDesc; var prefabDesc = LDB.items.Select(id).prefabDesc;
if (prefabDesc.isInserter)
{
prefabDesc.inserterSTT *= sorterSpeedMultiplier; prefabDesc.inserterSTT *= sorterSpeedMultiplier;
prefabDesc.idleEnergyPerTick *= sorterPowerConsumptionMultiplier; prefabDesc.idleEnergyPerTick *= sorterPowerConsumptionMultiplier;
prefabDesc.workEnergyPerTick *= sorterPowerConsumptionMultiplier; prefabDesc.workEnergyPerTick *= sorterPowerConsumptionMultiplier;
} }
}
private static void BoostAssembler(int id) private static void BoostAssembler(int id)
{ {
var prefabDesc = LDB.items.Select(id).prefabDesc; var prefabDesc = LDB.items.Select(id).prefabDesc;
if (prefabDesc.isAssembler)
{
prefabDesc.assemblerSpeed *= assembleSpeedMultiplier; prefabDesc.assemblerSpeed *= assembleSpeedMultiplier;
prefabDesc.idleEnergyPerTick *= assemblePowerConsumptionMultiplier; prefabDesc.idleEnergyPerTick *= assemblePowerConsumptionMultiplier;
prefabDesc.workEnergyPerTick *= assemblePowerConsumptionMultiplier; prefabDesc.workEnergyPerTick *= assemblePowerConsumptionMultiplier;
} }
}
private static void BoostMiner(int id) private static void BoostMiner(int id)
{ {
var prefabDesc = LDB.items.Select(id).prefabDesc; var prefabDesc = LDB.items.Select(id).prefabDesc;
if (prefabDesc.minerType != EMinerType.None)
{
prefabDesc.minerPeriod /= minerSpeedMultiplier; prefabDesc.minerPeriod /= minerSpeedMultiplier;
prefabDesc.idleEnergyPerTick *= minerPowerConsumptionMultiplier; prefabDesc.idleEnergyPerTick *= minerPowerConsumptionMultiplier;
prefabDesc.workEnergyPerTick *= minerPowerConsumptionMultiplier; prefabDesc.workEnergyPerTick *= minerPowerConsumptionMultiplier;
} }
}
private static void BoostPower(int id) private static void BoostPower(int id)
{ {
var prefabDesc = LDB.items.Select(id).prefabDesc; var prefabDesc = LDB.items.Select(id).prefabDesc;
if (prefabDesc.isPowerGen || prefabDesc.isPowerExchanger)
{
prefabDesc.genEnergyPerTick *= powerGenerationMultiplier; prefabDesc.genEnergyPerTick *= powerGenerationMultiplier;
prefabDesc.useFuelPerTick *= powerFuelConsumptionMultiplier; prefabDesc.useFuelPerTick *= powerFuelConsumptionMultiplier;
if (prefabDesc.isPowerExchanger) prefabDesc.exchangeEnergyPerTick *= powerFuelConsumptionMultiplier; if (prefabDesc.isPowerConsumer)
{
prefabDesc.idleEnergyPerTick *= powerGenerationMultiplier;
prefabDesc.workEnergyPerTick *= powerGenerationMultiplier;
}
if (prefabDesc.isPowerNode)
{
prefabDesc.powerConnectDistance =
Mathf.Floor(prefabDesc.powerConnectDistance) * prefabDesc.powerConnectDistance + 0.5f;
prefabDesc.powerCoverRadius =
Mathf.Floor(prefabDesc.powerCoverRadius) * prefabDesc.powerConnectDistance + 0.5f;
}
if (prefabDesc.isPowerExchanger)
{
prefabDesc.exchangeEnergyPerTick *= powerFuelConsumptionMultiplier;
}
if (prefabDesc.isAccumulator) if (prefabDesc.isAccumulator)
{ {
prefabDesc.maxAcuEnergy *= powerGenerationMultiplier; prefabDesc.maxAcuEnergy *= powerGenerationMultiplier;
@@ -90,8 +121,9 @@ public class Patch : BaseUnityPlugin
prefabDesc.outputEnergyPerTick *= powerGenerationMultiplier; prefabDesc.outputEnergyPerTick *= powerGenerationMultiplier;
} }
} }
}
[HarmonyPostfix, HarmonyPatch(typeof(VFPreload), "InvokeOnLoadWorkEnded")] [HarmonyPostfix, HarmonyPriority(Priority.Last), HarmonyPatch(typeof(VFPreload), "InvokeOnLoadWorkEnded")]
private static void VFPreload_InvokeOnLoadWorkEnded_Postfix() private static void VFPreload_InvokeOnLoadWorkEnded_Postfix()
{ {
// Belts // Belts