Add movement speed patch

This commit is contained in:
2024-07-24 00:01:01 +02:00
parent c3120e0914
commit c204838602
2 changed files with 60 additions and 105 deletions

View File

@@ -1,96 +1,53 @@
using System.Linq; using System.Linq;
using BepInEx; using BepInEx;
using BepInEx.Configuration; using BepInEx.Configuration;
using HarmonyLib; using HarmonyLib;
using HarmonyLib.Tools; using HarmonyLib.Tools;
namespace Regiments { namespace Regiments {
[BepInPlugin(pluginGuid, pluginName, pluginVersion)] [BepInPlugin(pluginGuid, pluginName, pluginVersion)]
public class Main : BaseUnityPlugin { public class Main : BaseUnityPlugin {
private const string pluginGuid = "CykaMod"; private const string pluginGuid = "CykaMod";
private const string pluginName = "CykaMod"; private const string pluginName = "CykaMod";
private const string pluginVersion = "1.0.0"; private const string pluginVersion = "1.0.0";
public static ConfigEntry<float> SPMultiplier; public static ConfigEntry<float> SPMultiplier;
public static ConfigEntry<float> TPMultiplier; public static ConfigEntry<float> TPMultiplier;
public static ConfigEntry<float> SupplyAOEMultiplier; public static ConfigEntry<float> SupplyAOEMultiplier;
public static ConfigEntry<float> HQAOEMultiplier; public static ConfigEntry<float> HQAOEMultiplier;
public static ConfigEntry<float> SupplyAmountMultiplier; public static ConfigEntry<float> SupplyAmountMultiplier;
public static ConfigEntry<float> FireRateMultiplier; public static ConfigEntry<float> FireRateMultiplier;
public static ConfigEntry<float> AimIntervalMultiplier; public static ConfigEntry<float> AimIntervalMultiplier;
public static ConfigEntry<float> SupplyRateMultiplier; public static ConfigEntry<float> SupplyRateMultiplier;
// public static ConfigEntry<float> magnetRadiusMultiplier; public static ConfigEntry<float> MovementSpeedMultiplier;
// public static ConfigEntry<float> beamStrenghtMultiplier;
// public static ConfigEntry<float> beamRadiusMultiplier; public void Awake() {
// public static ConfigEntry<float> fuelTankRefillMultiplier; SPMultiplier = Config.Bind("General", "SP Multiplier", 1f,
// public static ConfigEntry<float> fuelTankCapacityMultiplier; new ConfigDescription("SP Multiplier", new AcceptableValueRange<float>(1f, 32f)));
// public static ConfigEntry<float> minerGroundArea; TPMultiplier = Config.Bind("General", "TP Multiplier", 1f,
// public static ConfigEntry<float> minerMiningSpeed; new ConfigDescription("TP Multiplier", new AcceptableValueRange<float>(1f, 32f)));
// public static ConfigEntry<float> wheelTorqueMultiplier; SupplyAOEMultiplier = Config.Bind("General", "Supply AOE Multiplier", 1f,
// public static ConfigEntry<float> wheelSpeedMultiplier; new ConfigDescription("Supply AOE Multiplier", new AcceptableValueRange<float>(1f, 32f)));
// public static ConfigEntry<float> jetThrustMultiplier; SupplyAmountMultiplier = Config.Bind("General", "Supply Point Amount Multiplier", 1f,
new ConfigDescription("Supply Point Amount Multiplier", new AcceptableValueRange<float>(1f, 32f)));
public void Awake() { SupplyRateMultiplier = Config.Bind("General", "The rate at which HP and ammo is resupplied", 1f,
SPMultiplier = Config.Bind("General", "SP Multiplier", 1f, new ConfigDescription("The rate at which HP and ammo is resupplied", new AcceptableValueRange<float>(1f, 16f)));
new ConfigDescription("SP Multiplier", new AcceptableValueRange<float>(1f, 32f))); HQAOEMultiplier = Config.Bind("General", "HQ AOE Multiplier", 1f,
TPMultiplier = Config.Bind("General", "TP Multiplier", 1f, new ConfigDescription("HQ AOE Multiplier", new AcceptableValueRange<float>(1f, 32f)));
new ConfigDescription("TP Multiplier", new AcceptableValueRange<float>(1f, 32f))); FireRateMultiplier = Config.Bind("General", "Fire Rate Multiplier", 1f,
SupplyAOEMultiplier = Config.Bind("General", "Supply AOE Multiplier", 1f, new ConfigDescription("Fire Rate Multiplier",
new ConfigDescription("Supply AOE Multiplier", new AcceptableValueRange<float>(1f, 32f))); new AcceptableValueRange<float>(0.1f, 32f)));
SupplyAmountMultiplier = Config.Bind("General", "Supply Point Amount Multiplier", 1f, AimIntervalMultiplier = Config.Bind("General", "Aiming Interval Multiplier", 1f,
new ConfigDescription("Supply Point Amount Multiplier", new AcceptableValueRange<float>(1f, 32f))); new ConfigDescription("Aiming Interval Multiplier", new AcceptableValueRange<float>(0.1f, 32f)));
SupplyRateMultiplier = Config.Bind("General", "The rate at which HP and ammo is resupplied", 1f, MovementSpeedMultiplier = Config.Bind("General", "Movement Speed Multiplier", 1f,
new ConfigDescription("The rate at which HP and ammo is resupplied", new AcceptableValueRange<float>(1f, 16f))); new ConfigDescription("Movement Speed Multiplier", new AcceptableValueRange<float>(0.1f, 32f)));
HQAOEMultiplier = Config.Bind("General", "HQ AOE Multiplier", 1f,
new ConfigDescription("HQ AOE Multiplier", new AcceptableValueRange<float>(1f, 32f))); Logger.LogInfo("Cyka mod loaded");
FireRateMultiplier = Config.Bind("General", "Fire Rate Multiplier", 1f, HarmonyFileLog.Enabled = true;
new ConfigDescription("Fire Rate Multiplier", Harmony harmony = new Harmony(pluginGuid);
new AcceptableValueRange<float>(0.1f, 32f))); harmony.PatchAll();
AimIntervalMultiplier = Config.Bind("General", "Aiming Interval Multiplier", 1f, var originalMethods = harmony.GetPatchedMethods();
new ConfigDescription("Aiming Interval Multiplier", new AcceptableValueRange<float>(0.1f, 32f))); Logger.LogInfo("Patched " + originalMethods.Count() + " methods");
// beamStrenghtMultiplier = Config.Bind("Attractors", "Beam Strength Multiplier", 1f, }
// new ConfigDescription("Beam Strength Multiplier", new AcceptableValueRange<float>(1f, 16f))); }
// beamRadiusMultiplier = Config.Bind("Attractors", "Beam Radius Multiplier", 1f, }
// new ConfigDescription("Beam Radius Multiplier", new AcceptableValueRange<float>(1f, 16f)));
//
// fuelTankRefillMultiplier = Config.Bind("Propulsion", "Fuel Tank Refill Rate Multiplier", 1f,
// new ConfigDescription("Fuel Tank Refill Rate Multiplier", new AcceptableValueRange<float>(1f, 32f)));
// fuelTankCapacityMultiplier = Config.Bind("Propulsion", "Fuel Tank Capacity Multiplier", 1f,
// new ConfigDescription("Fuel Tank Capacity Multiplier", new AcceptableValueRange<float>(1f, 32f)));
// wheelTorqueMultiplier = Config.Bind("Propulsion", "Wheel Torque Multiplier", 1f,
// new ConfigDescription("Wheel Torque Multiplier", new AcceptableValueRange<float>(1f, 32f)));
// wheelSpeedMultiplier = Config.Bind("Propulsion", "Wheel Max RPM Multiplier", 1f,
// new ConfigDescription("Wheel Max RPM Multiplier", new AcceptableValueRange<float>(1f, 32f)));
// jetThrustMultiplier = Config.Bind("Propulsion", "Jet Thrust Multiplier", 1f,
// new ConfigDescription("Jet Thrust Multiplier", new AcceptableValueRange<float>(1f, 32f)));
//
// minerGroundArea = Config.Bind("Production", "Miner Ground Deposit Scan Area", 1f,
// new ConfigDescription("Miner Ground Deposit Scan Area", new AcceptableValueRange<float>(1f, 32f)));
// minerMiningSpeed = Config.Bind("Production", "Miner Mining Speed", 1f,
// new ConfigDescription("Miner Mining Speed", new AcceptableValueRange<float>(1f, 32f)));
//
// allProjectilesHoming = Config.Bind("General", "Make All Projectiles Home", false);
// shootingSpeedMultiplier.SettingChanged += (sender, args) => WeaponPropertiesManager.DoPatch();
// energyGenMultiplier.SettingChanged += (sender, args) => GeneratorPropertiesManager.DoPatch();
// magnetStrenghtMultiplier.SettingChanged += (sender, args) => MagnetPropertiesManager.DoPatch();
// magnetRadiusMultiplier.SettingChanged += (sender, args) => MagnetPropertiesManager.DoPatch();
// beamStrenghtMultiplier.SettingChanged += (sender, args) => BeamPropertiesManager.DoPatch();
// beamRadiusMultiplier.SettingChanged += (sender, args) => BeamPropertiesManager.DoPatch();
// fuelTankRefillMultiplier.SettingChanged += (sender, args) => FuelPropertiesManager.DoPatch();
// fuelTankCapacityMultiplier.SettingChanged += (sender, args) => FuelPropertiesManager.DoPatch();
// wheelTorqueMultiplier.SettingChanged += (sender, args) => WheelPropertiesManager.DoPatch();
// wheelSpeedMultiplier.SettingChanged += (sender, args) => WheelPropertiesManager.DoPatch();
// jetThrustMultiplier.SettingChanged += (sender, args) => ThrusterPropertiesManager.DoPatch();
// minerGroundArea.SettingChanged += (sender, args) => MinerPropertiesManager.DoPatch();
// minerMiningSpeed.SettingChanged += (sender, args) => MinerPropertiesManager.DoPatch();
Logger.LogInfo("Cyka mod loaded");
HarmonyFileLog.Enabled = true;
Harmony harmony = new Harmony(pluginGuid);
harmony.PatchAll();
var originalMethods = harmony.GetPatchedMethods();
Logger.LogInfo("Patched " + originalMethods.Count() + " methods");
}
}
}

View File

@@ -1,22 +1,14 @@
using System; using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection.Emit;
using birdseye; using birdseye;
using birdseye.Regiments; using birdseye.Regiments;
using birdseye.Regiments.Commanders; using birdseye.Regiments.Commanders;
using birdseye.Regiments.GameModes;
using birdseye.Regiments.Menu.GUI;
using birdseye.Regiments.Platoons;
using birdseye.Regiments.Platoons.Modules; using birdseye.Regiments.Platoons.Modules;
using birdseye.Regiments.Units.Rigging;
using birdseye.Regiments.Units.WeaponSystems; using birdseye.Regiments.Units.WeaponSystems;
using birdseye.Regiments.Zones; using birdseye.Regiments.Zones;
using HarmonyLib; using HarmonyLib;
using UnityEngine; using UnityEngine;
// Patch maxSupPoints in PlatoonSupplyModule
// Patch Operational Authority point gain
namespace Regiments { namespace Regiments {
[HarmonyPatch] [HarmonyPatch]
public class Patches { public class Patches {
@@ -120,6 +112,12 @@ namespace Regiments {
Console.WriteLine("Patching refit step to: {0} {1}", hpVal, ammoVal); Console.WriteLine("Patching refit step to: {0} {1}", hpVal, ammoVal);
} }
[HarmonyPostfix]
[HarmonyPatch(typeof(UnitMovementRig), nameof(UnitMovementRig.maxSpeed), MethodType.Getter)]
static void MovementSpeedMultiplier(ref float __result) {
__result *= Main.MovementSpeedMultiplier.Value;
}
// [HarmonyPatch(typeof(AdvancedRulesData), "Validate")] // [HarmonyPatch(typeof(AdvancedRulesData), "Validate")]
// static IEnumerable<CodeInstruction> Transpiler(IEnumerable<CodeInstruction> instructions) { // static IEnumerable<CodeInstruction> Transpiler(IEnumerable<CodeInstruction> instructions) {
// var codes = new List<CodeInstruction>(instructions); // var codes = new List<CodeInstruction>(instructions);