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

Work in progress

This commit is contained in:
2022-12-03 01:05:53 +08:00
parent d98f96fd94
commit cb85462a75

View File

@@ -1,5 +1,4 @@
using System; using BepInEx;
using BepInEx;
using BepInEx.Configuration; using BepInEx.Configuration;
using HarmonyLib; using HarmonyLib;
using UnityEngine; using UnityEngine;
@@ -58,71 +57,6 @@ public class Patch : BaseUnityPlugin
Harmony.CreateAndPatchAll(typeof(BeltFix)); Harmony.CreateAndPatchAll(typeof(BeltFix));
} }
private static void BoostSorter(int id)
{
var prefabDesc = LDB.items.Select(id).prefabDesc;
if (prefabDesc.isInserter)
{
prefabDesc.inserterSTT *= sorterSpeedMultiplier;
prefabDesc.idleEnergyPerTick *= sorterPowerConsumptionMultiplier;
prefabDesc.workEnergyPerTick *= sorterPowerConsumptionMultiplier;
}
}
private static void BoostAssembler(int id)
{
var prefabDesc = LDB.items.Select(id).prefabDesc;
if (prefabDesc.isAssembler)
{
prefabDesc.assemblerSpeed *= assembleSpeedMultiplier;
prefabDesc.idleEnergyPerTick *= assemblePowerConsumptionMultiplier;
prefabDesc.workEnergyPerTick *= assemblePowerConsumptionMultiplier;
}
}
private static void BoostMiner(int id)
{
var prefabDesc = LDB.items.Select(id).prefabDesc;
if (prefabDesc.minerType != EMinerType.None)
{
prefabDesc.minerPeriod /= minerSpeedMultiplier;
prefabDesc.idleEnergyPerTick *= minerPowerConsumptionMultiplier;
prefabDesc.workEnergyPerTick *= minerPowerConsumptionMultiplier;
}
}
private static void BoostPower(int id)
{
var prefabDesc = LDB.items.Select(id).prefabDesc;
if (prefabDesc.isPowerGen || prefabDesc.isPowerExchanger)
{
prefabDesc.genEnergyPerTick *= powerGenerationMultiplier;
prefabDesc.useFuelPerTick *= 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)
{
prefabDesc.maxAcuEnergy *= powerGenerationMultiplier;
prefabDesc.inputEnergyPerTick *= powerGenerationMultiplier;
prefabDesc.outputEnergyPerTick *= powerGenerationMultiplier;
}
}
}
[HarmonyPostfix, HarmonyPriority(Priority.Last), HarmonyPatch(typeof(VFPreload), "InvokeOnLoadWorkEnded")] [HarmonyPostfix, HarmonyPriority(Priority.Last), HarmonyPatch(typeof(VFPreload), "InvokeOnLoadWorkEnded")]
private static void VFPreload_InvokeOnLoadWorkEnded_Postfix() private static void VFPreload_InvokeOnLoadWorkEnded_Postfix()
{ {
@@ -131,50 +65,54 @@ public class Patch : BaseUnityPlugin
LDB.items.Select(2002).prefabDesc.beltSpeed = (int)beltSpeed[1]; LDB.items.Select(2002).prefabDesc.beltSpeed = (int)beltSpeed[1];
LDB.items.Select(2003).prefabDesc.beltSpeed = (int)beltSpeed[2]; LDB.items.Select(2003).prefabDesc.beltSpeed = (int)beltSpeed[2];
// Sorters foreach (var proto in LDB.items.dataArray)
BoostSorter(2011); {
BoostSorter(2012); var prefabDesc = proto.prefabDesc;
BoostSorter(2013); if (prefabDesc.isInserter)
{
// Smelters prefabDesc.inserterSTT *= sorterSpeedMultiplier;
BoostAssembler(2302); prefabDesc.idleEnergyPerTick *= sorterPowerConsumptionMultiplier;
BoostAssembler(2315); prefabDesc.workEnergyPerTick *= sorterPowerConsumptionMultiplier;
// Assemblers }
BoostAssembler(2303); if (prefabDesc.isAssembler)
BoostAssembler(2304); {
BoostAssembler(2305); prefabDesc.assemblerSpeed *= assembleSpeedMultiplier;
// Chemical Plants prefabDesc.idleEnergyPerTick *= assemblePowerConsumptionMultiplier;
BoostAssembler(2309); prefabDesc.workEnergyPerTick *= assemblePowerConsumptionMultiplier;
BoostAssembler(2317); }
// Refiner if (prefabDesc.minerType != EMinerType.None)
BoostAssembler(2308); {
// Collider prefabDesc.minerPeriod /= minerSpeedMultiplier;
BoostAssembler(2310); prefabDesc.idleEnergyPerTick *= minerPowerConsumptionMultiplier;
prefabDesc.workEnergyPerTick *= minerPowerConsumptionMultiplier;
// Mining Machine }
BoostMiner(2301); if (prefabDesc.isPowerGen || prefabDesc.isPowerExchanger || prefabDesc.isAccumulator)
// Advanced Mining Machine {
BoostMiner(2316); prefabDesc.genEnergyPerTick *= powerGenerationMultiplier;
// Water Pump prefabDesc.useFuelPerTick *= powerFuelConsumptionMultiplier;
BoostMiner(2306); if (prefabDesc.isPowerConsumer)
// Oil Extractor {
BoostMiner(2307); prefabDesc.idleEnergyPerTick *= powerGenerationMultiplier;
prefabDesc.workEnergyPerTick *= powerGenerationMultiplier;
// Thermal }
BoostPower(2204); if (prefabDesc.isPowerExchanger)
// Fusion {
BoostPower(2211); prefabDesc.exchangeEnergyPerTick *= powerFuelConsumptionMultiplier;
// Artificial Star }
BoostPower(2210); if (prefabDesc.isAccumulator)
// Wind Turbine {
BoostPower(2203); prefabDesc.maxAcuEnergy *= powerGenerationMultiplier;
// Solar Panel prefabDesc.inputEnergyPerTick *= powerGenerationMultiplier;
BoostPower(2205); prefabDesc.outputEnergyPerTick *= powerGenerationMultiplier;
// Geothermal }
BoostPower(2213); }
// Energy Exchanger if (prefabDesc.isPowerNode)
BoostPower(2209); {
// Ray Receiver prefabDesc.powerConnectDistance =
BoostPower(2208); Mathf.Floor(prefabDesc.powerConnectDistance) * prefabDesc.powerConnectDistance + 0.5f;
prefabDesc.powerCoverRadius =
Mathf.Floor(prefabDesc.powerCoverRadius) * prefabDesc.powerConnectDistance + 0.5f;
}
}
} }
} }