From 0cc1fb0ea951ddb955e1bf19c24dd30b5adaae53 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Majdand=C5=BEi=C4=87?= Date: Mon, 10 Apr 2023 22:49:53 +0200 Subject: [PATCH] Major refactoring --- .../TerraTech/BeamPropertiesManager.cs | 79 ++++ Projects/TerraTech/TerraTech/Class1.cs | 440 +----------------- .../TerraTech/FuelPropertiesManager.cs | 55 +++ .../TerraTech/GeneratorPropertiesManager.cs | 58 +++ .../HomingAndVelocityProjectilePatch.cs | 22 + .../TerraTech/MagnetPropertiesManager.cs | 81 ++++ .../TerraTech/MinerPropertiesManager.cs | 86 ++++ Projects/TerraTech/TerraTech/Patches.cs | 24 + Projects/TerraTech/TerraTech/TerraTech.csproj | 10 + .../TerraTech/ThrusterPropertiesManager.cs | 89 ++++ .../TerraTech/WeaponPropertiesManager.cs | 51 ++ .../TerraTech/WheelPropertiesManager.cs | 63 +++ .../TerraTech/bin/Debug/TerraTech.dll | Bin 18432 -> 29696 bytes .../TerraTech/bin/Debug/TerraTech.pdb | Bin 40448 -> 69120 bytes .../TerraTech/obj/Debug/TerraTech.dll | Bin 18432 -> 29696 bytes .../TerraTech/obj/Debug/TerraTech.pdb | Bin 40448 -> 69120 bytes 16 files changed, 643 insertions(+), 415 deletions(-) create mode 100644 Projects/TerraTech/TerraTech/BeamPropertiesManager.cs create mode 100644 Projects/TerraTech/TerraTech/FuelPropertiesManager.cs create mode 100644 Projects/TerraTech/TerraTech/GeneratorPropertiesManager.cs create mode 100644 Projects/TerraTech/TerraTech/HomingAndVelocityProjectilePatch.cs create mode 100644 Projects/TerraTech/TerraTech/MagnetPropertiesManager.cs create mode 100644 Projects/TerraTech/TerraTech/MinerPropertiesManager.cs create mode 100644 Projects/TerraTech/TerraTech/Patches.cs create mode 100644 Projects/TerraTech/TerraTech/ThrusterPropertiesManager.cs create mode 100644 Projects/TerraTech/TerraTech/WeaponPropertiesManager.cs create mode 100644 Projects/TerraTech/TerraTech/WheelPropertiesManager.cs diff --git a/Projects/TerraTech/TerraTech/BeamPropertiesManager.cs b/Projects/TerraTech/TerraTech/BeamPropertiesManager.cs new file mode 100644 index 0000000..d4041e3 --- /dev/null +++ b/Projects/TerraTech/TerraTech/BeamPropertiesManager.cs @@ -0,0 +1,79 @@ +using System; +using System.Collections.Generic; +using HarmonyLib; + +namespace TerraTech { + [HarmonyPatch] + public class BeamPropertiesManager { + private static Dictionary strenghts = new Dictionary(); + private static Dictionary radii = new Dictionary(); + + [HarmonyPrefix] + [HarmonyPatch(typeof(ModuleItemHolderBeam), "OnAttached")] + static void PostfixCreate(ModuleItemHolderBeam __instance) { + Console.WriteLine("ModuleItemHolderBeam.OnAttached"); + if (!strenghts.ContainsKey(__instance)) { + strenghts.Add(__instance, GetStrength(__instance)); + radii.Add(__instance, GetRadius(__instance)); + Console.WriteLine("Patching {0}; m_BeamStrength: {1}; m_Pickup.m_PickupRange: {2}", __instance.name, GetStrength(__instance), GetRadius(__instance)); + DoPatchSingle(__instance); + Console.WriteLine("Patched {0}; m_BeamStrength: {1}; m_Pickup.m_PickupRange: {2}", __instance.name, GetStrength(__instance), GetRadius(__instance)); + } + } + + [HarmonyPrefix] + [HarmonyPatch(typeof(ModuleItemHolderBeam), "OnDetaching")] + static void PostfixDestroy(ModuleItemHolderBeam __instance) { + Console.WriteLine("ModuleItemHolderBeam.OnDetaching"); + Console.WriteLine("Restoring {0}; m_BeamStrength: {1}; m_Pickup.m_PickupRange: {2}", __instance.name, GetStrength(__instance), GetRadius(__instance)); + DoRestoreSingle(__instance); + Console.WriteLine("Restored {0}; m_BeamStrength: {1}; m_Pickup.m_PickupRange: {2}", __instance.name, GetStrength(__instance), GetRadius(__instance)); + strenghts.Remove(__instance); + radii.Remove(__instance); + } + + public static void DoPatch() { + Console.WriteLine("Modifying {0} ModuleItemHolderBeam", strenghts.Count); + foreach (KeyValuePair keyValuePair in strenghts) { + DoRestoreSingle(keyValuePair.Key); + DoPatchSingle(keyValuePair.Key); + } + } + + static void DoPatchSingle(ModuleItemHolderBeam moduleItemHolderBeam) { + SetStrength(moduleItemHolderBeam, strenghts[moduleItemHolderBeam] * Main.beamStrenghtMultiplier.Value); + SetRadius(moduleItemHolderBeam, radii[moduleItemHolderBeam] * Main.beamRadiusMultiplier.Value); + } + + static void DoRestoreSingle(ModuleItemHolderBeam moduleItemHolderBeam) { + if (strenghts.ContainsKey(moduleItemHolderBeam)) { + SetStrength(moduleItemHolderBeam, strenghts[moduleItemHolderBeam]); + SetRadius(moduleItemHolderBeam, radii[moduleItemHolderBeam]); + } + } + + private static float GetStrength(ModuleItemHolderBeam moduleItemHolderBeam) { + return Traverse.Create(moduleItemHolderBeam).Field("m_BeamStrength").GetValue() as float? ?? 0f; + } + + private static void SetStrength(ModuleItemHolderBeam moduleItemHolderBeam, float value) { + Traverse.Create(moduleItemHolderBeam).Field("m_BeamStrength").SetValue(value); + } + + private static float GetRadius(ModuleItemHolderBeam moduleItemHolderBeam) { + ModuleItemPickup moduleItemPickup = Traverse.Create(moduleItemHolderBeam).Field("m_Pickup").GetValue() as ModuleItemPickup; + if (moduleItemPickup) { + float radius = Traverse.Create(moduleItemPickup).Field("m_PickupRange").GetValue() as float? ?? 0f; + return radius; + } + return 0f; + } + + private static void SetRadius(ModuleItemHolderBeam moduleItemHolderBeam, float value) { + ModuleItemPickup moduleItemPickup = Traverse.Create(moduleItemHolderBeam).Field("m_Pickup").GetValue() as ModuleItemPickup; + if (moduleItemPickup) { + Traverse.Create(moduleItemPickup).Field("m_PickupRange").SetValue(value); + } + } + } +} \ No newline at end of file diff --git a/Projects/TerraTech/TerraTech/Class1.cs b/Projects/TerraTech/TerraTech/Class1.cs index fbc80a2..f63ce86 100644 --- a/Projects/TerraTech/TerraTech/Class1.cs +++ b/Projects/TerraTech/TerraTech/Class1.cs @@ -1,15 +1,16 @@ -using System; -using System.Collections.Generic; -using System.Linq; +using System.Linq; using BepInEx; using BepInEx.Configuration; using HarmonyLib; using HarmonyLib.Tools; -using UnityEngine; // TODO: Make battery bigger // TODO: Make shield and repair bigger // TODO: Make fuel tanks bigger +// TODO: Fix fuel tank refill +// TODO: Add loggers +// TODO: See about faster wheel maybe +// TODO: See about more better thruster maybe namespace TerraTech { [BepInPlugin(pluginGuid, pluginName, pluginVersion)] @@ -30,8 +31,12 @@ namespace TerraTech { public static ConfigEntry beamStrenghtMultiplier; public static ConfigEntry beamRadiusMultiplier; public static ConfigEntry fuelTankRefillMultiplier; + public static ConfigEntry fuelTankCapacityMultiplier; public static ConfigEntry minerGroundArea; public static ConfigEntry minerMiningSpeed; + public static ConfigEntry wheelTorqueMultiplier; + public static ConfigEntry wheelSpeedMultiplier; + public static ConfigEntry jetThrustMultiplier; public void Awake() { xpMultiplier = Config.Bind("General", "XP Multiplier", 1f, new ConfigDescription("XP Multiplier", new AcceptableValueRange(1f, 32f))); @@ -41,10 +46,12 @@ namespace TerraTech { new ConfigDescription("Energy Generation Multiplier", new AcceptableValueRange(1f, 64f))); heartbeatIntervalMultiplier = Config.Bind("General", "Heartbeat Interval Multiplier", 1f, new ConfigDescription("Heartbeat Interval Multiplier", new AcceptableValueRange(0.1f, 2f))); + shootingSpeedMultiplier = Config.Bind("Weapons", "Shooting Speed Multiplier", 1f, new ConfigDescription("Shooting Speed Multiplier", new AcceptableValueRange(0.5f, 8f))); muzzleVelocityMultiplier = Config.Bind("Weapons", "Muzzle Velocity Multiplier", 1f, new ConfigDescription("Muzzle Velocity Multiplier", new AcceptableValueRange(1f, 32f))); + magnetStrenghtMultiplier = Config.Bind("Attractors", "Magnet Strength Multiplier", 1f, new ConfigDescription("Magnet Strength Multiplier", new AcceptableValueRange(1f, 16f))); magnetRadiusMultiplier = Config.Bind("Attractors", "Magnet Radius Multiplier", 1f, @@ -53,8 +60,18 @@ namespace TerraTech { new ConfigDescription("Beam Strength Multiplier", new AcceptableValueRange(1f, 16f))); beamRadiusMultiplier = Config.Bind("Attractors", "Beam Radius Multiplier", 1f, new ConfigDescription("Beam Radius Multiplier", new AcceptableValueRange(1f, 16f))); + fuelTankRefillMultiplier = Config.Bind("Propulsion", "Fuel Tank Refill Rate Multiplier", 1f, new ConfigDescription("Fuel Tank Refill Rate Multiplier", new AcceptableValueRange(1f, 32f))); + fuelTankCapacityMultiplier = Config.Bind("Propulsion", "Fuel Tank Capacity Multiplier", 1f, + new ConfigDescription("Fuel Tank Capacity Multiplier", new AcceptableValueRange(1f, 32f))); + wheelTorqueMultiplier = Config.Bind("Propulsion", "Wheel Torque Multiplier", 1f, + new ConfigDescription("Wheel Torque Multiplier", new AcceptableValueRange(1f, 32f))); + wheelSpeedMultiplier = Config.Bind("Propulsion", "Wheel Max RPM Multiplier", 1f, + new ConfigDescription("Wheel Max RPM Multiplier", new AcceptableValueRange(1f, 32f))); + jetThrustMultiplier = Config.Bind("Propulsion", "Jet Thrust Multiplier", 1f, + new ConfigDescription("Jet Thrust Multiplier", new AcceptableValueRange(1f, 32f))); + minerGroundArea = Config.Bind("Production", "Miner Ground Deposit Scan Area", 1f, new ConfigDescription("Miner Ground Deposit Scan Area", new AcceptableValueRange(1f, 32f))); minerMiningSpeed = Config.Bind("Production", "Miner Mining Speed", 1f, @@ -69,6 +86,10 @@ namespace TerraTech { 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(); @@ -80,415 +101,4 @@ namespace TerraTech { Logger.LogInfo("Patched " + originalMethods.Count() + " methods"); } } - - [HarmonyPatch] - public class Patches { - [HarmonyPrefix] - [HarmonyPatch(typeof(ManLicenses), "AddXP")] - static void XPMulti(FactionSubTypes corporation, ref int xp, bool showUI = true) { - xp = (int)(xp * Main.xpMultiplier.Value); - } - - [HarmonyPrefix] - [HarmonyPatch(typeof(ManPlayer), "AddMoney")] - static void MoneyMulti(ref int amount) { - amount = (int)(amount * Main.moneyMultiplier.Value); - } - - [HarmonyPrefix] - [HarmonyPatch(typeof(TechHolders), "SetHeartbeatInterval")] - static void HeartbeatMulti(ref float interval) { - interval *= Main.heartbeatIntervalMultiplier.Value; - } - } - - [HarmonyPatch(typeof(Projectile), "Fire")] - public class HomingProjectilePatch { - private static Dictionary patchedObjects = new Dictionary(); - - static void Prefix(Vector3 fireDirection, ref FireData fireData, ref ModuleWeaponGun weapon, Tank shooter, ref bool seekingRounds, bool replayRounds) { - if (Main.allProjectilesHoming.Value) { - seekingRounds = true; - } - if (Main.muzzleVelocityMultiplier.Value != -1f && !patchedObjects.ContainsKey(fireData)) { - fireData.m_MuzzleVelocity *= Main.muzzleVelocityMultiplier.Value; - patchedObjects.Add(fireData, true); - } - } - } - - [HarmonyPatch] - public class WeaponPropertiesManager { - private static Dictionary weapons = new Dictionary(); - - [HarmonyPostfix] - [HarmonyPatch(typeof(ModuleWeaponGun), "OnAttached")] - static void PostfixCreate(ModuleWeaponGun __instance) { - if (!weapons.ContainsKey(__instance)) { - weapons.Add(__instance, __instance.m_ShotCooldown); - DoPatchSingle(__instance); - } - } - - [HarmonyPostfix] - [HarmonyPatch(typeof(ModuleWeaponGun), "OnDetaching")] - static void PostfixDestroy(ModuleWeaponGun __instance) { - DoRestoreSingle(__instance); - weapons.Remove(__instance); - } - - public static void DoPatch() { - // Console.WriteLine("Modifying " + weapons.Count + " weapons"); - foreach (KeyValuePair keyValuePair in weapons) { - DoRestoreSingle(keyValuePair.Key); - DoPatchSingle(keyValuePair.Key); - } - } - - static void DoPatchSingle(ModuleWeaponGun weapon) { - // Console.WriteLine("Patching " + weapon.name); - // Console.WriteLine("Old value " + weapon.m_ShotCooldown); - weapon.m_ShotCooldown /= Main.shootingSpeedMultiplier.Value; - // Console.WriteLine("New value " + weapon.m_ShotCooldown); - } - - static void DoRestoreSingle(ModuleWeaponGun weapon) { - if (weapons.ContainsKey(weapon)) { - weapon.m_ShotCooldown = weapons[weapon]; - } - } - } - - [HarmonyPatch] - public class GeneratorPropertiesManager { - private static Dictionary generators = new Dictionary(); - - [HarmonyPostfix] - [HarmonyPatch(typeof(ModuleEnergy), "OnAttached")] - static void PostfixCreate(ModuleEnergy __instance) { - if (!generators.ContainsKey(__instance)) { - generators.Add(__instance, GetValue(__instance)); - DoPatchSingle(__instance); - } - } - - [HarmonyPostfix] - [HarmonyPatch(typeof(ModuleEnergy), "OnDetaching")] - static void PostfixDestroy(ModuleEnergy __instance) { - DoRestoreSingle(__instance); - generators.Remove(__instance); - } - - public static void DoPatch() { - // Console.WriteLine("Modifying " + generators.Count + " generators"); - // Console.WriteLine("Should patch: " + ShouldPatch()); - foreach (KeyValuePair keyValuePair in generators) { - DoRestoreSingle(keyValuePair.Key); - DoPatchSingle(keyValuePair.Key); - } - } - - static void DoPatchSingle(ModuleEnergy moduleEnergy) { - // Console.WriteLine("Patching " + moduleEnergy.name); - // Console.WriteLine("Old value " + GetValue(moduleEnergy)); - SetValue(moduleEnergy, GetValue(moduleEnergy) * Main.energyGenMultiplier.Value); - // Console.WriteLine("New value " + GetValue(moduleEnergy)); - } - - static void DoRestoreSingle(ModuleEnergy moduleEnergy) { - if (generators.ContainsKey(moduleEnergy)) { - SetValue(moduleEnergy, generators[moduleEnergy]); - } - } - - private static float GetValue(ModuleEnergy moduleEnergy) { - return Traverse.Create(moduleEnergy).Field("m_OutputPerSecond").GetValue() as float? ?? 0f; - } - - private static void SetValue(ModuleEnergy moduleEnergy, float value) { - Traverse.Create(moduleEnergy).Field("m_OutputPerSecond").SetValue(value); - } - } - - [HarmonyPatch] - public class FuelPropertiesManager { - private static Dictionary tanks = new Dictionary(); - - [HarmonyPostfix] - [HarmonyPatch(typeof(ModuleFuelTank), "OnAttached")] - static void PostfixCreate(ModuleFuelTank __instance) { - if (!tanks.ContainsKey(__instance)) { - tanks.Add(__instance, GetValue(__instance)); - DoPatchSingle(__instance); - } - } - - [HarmonyPostfix] - [HarmonyPatch(typeof(ModuleFuelTank), "OnDetaching")] - static void PostfixDestroy(ModuleFuelTank __instance) { - DoRestoreSingle(__instance); - tanks.Remove(__instance); - } - - public static void DoPatch() { - // Console.WriteLine("Modifying " + generators.Count + " generators"); - // Console.WriteLine("Should patch: " + ShouldPatch()); - foreach (KeyValuePair keyValuePair in tanks) { - DoRestoreSingle(keyValuePair.Key); - DoPatchSingle(keyValuePair.Key); - } - } - - static void DoPatchSingle(ModuleFuelTank moduleFuelTank) { - // Console.WriteLine("Patching " + moduleEnergy.name); - // Console.WriteLine("Old value " + GetValue(moduleEnergy)); - SetValue(moduleFuelTank, GetValue(moduleFuelTank) * Main.energyGenMultiplier.Value); - // Console.WriteLine("New value " + GetValue(moduleEnergy)); - } - - static void DoRestoreSingle(ModuleFuelTank moduleFuelTank) { - if (tanks.ContainsKey(moduleFuelTank)) { - SetValue(moduleFuelTank, tanks[moduleFuelTank]); - } - } - - private static float GetValue(ModuleFuelTank moduleFuelTank) { - return moduleFuelTank.m_RefillRate; - } - - private static void SetValue(ModuleFuelTank moduleFuelTank, float value) { - moduleFuelTank.m_RefillRate = value; - } - } - - [HarmonyPatch] - public class MagnetPropertiesManager { - private static Dictionary strenghts = new Dictionary(); - private static Dictionary radii = new Dictionary(); - - [HarmonyPostfix] - [HarmonyPatch(typeof(ModuleItemHolderMagnet), "OnAttached")] - static void PostfixCreate(ModuleItemHolderMagnet __instance) { - if (!strenghts.ContainsKey(__instance)) { - strenghts.Add(__instance, GetStrength(__instance)); - radii.Add(__instance, GetRadius(__instance)); - DoPatchSingle(__instance); - } - } - - [HarmonyPostfix] - [HarmonyPatch(typeof(ModuleItemHolderMagnet), "OnDetaching")] - static void PostfixDestroy(ModuleItemHolderMagnet __instance) { - DoRestoreSingle(__instance); - strenghts.Remove(__instance); - radii.Remove(__instance); - } - - public static void DoPatch() { - // Console.WriteLine("Modifying " + generators.Count + " generators"); - // Console.WriteLine("Should patch: " + ShouldPatch()); - foreach (KeyValuePair keyValuePair in strenghts) { - DoRestoreSingle(keyValuePair.Key); - DoPatchSingle(keyValuePair.Key); - } - } - - static void DoPatchSingle(ModuleItemHolderMagnet moduleItemHolderMagnet) { - // Console.WriteLine("Patching " + moduleEnergy.name); - // Console.WriteLine("Old value " + GetValue(moduleEnergy)); - SetStrength(moduleItemHolderMagnet, GetStrength(moduleItemHolderMagnet) * Main.magnetStrenghtMultiplier.Value); - SetRadius(moduleItemHolderMagnet, GetRadius(moduleItemHolderMagnet) * Main.magnetRadiusMultiplier.Value); - // Console.WriteLine("New value " + GetValue(moduleEnergy)); - } - - static void DoRestoreSingle(ModuleItemHolderMagnet moduleItemHolderMagnet) { - if (strenghts.ContainsKey(moduleItemHolderMagnet)) { - SetStrength(moduleItemHolderMagnet, strenghts[moduleItemHolderMagnet]); - } - if (radii.ContainsKey(moduleItemHolderMagnet)) { - SetRadius(moduleItemHolderMagnet, radii[moduleItemHolderMagnet]); - } - } - - private static float GetStrength(ModuleItemHolderMagnet moduleItemHolderMagnet) { - return Traverse.Create(moduleItemHolderMagnet).Field("m_Strength").GetValue() as float? ?? 0f; - } - - private static void SetStrength(ModuleItemHolderMagnet moduleItemHolderMagnet, float value) { - Traverse.Create(moduleItemHolderMagnet).Field("m_Strength").SetValue(value); - } - - private static float GetRadius(ModuleItemHolderMagnet moduleItemHolderMagnet) { - ModuleItemPickup moduleItemPickup = Traverse.Create(moduleItemHolderMagnet).Field("m_Pickup").GetValue() as ModuleItemPickup; - if (moduleItemPickup) { - float radius = Traverse.Create(moduleItemPickup).Field("m_PickupRange").GetValue() as float? ?? 0f; - return radius; - } - return 0f; - } - - private static void SetRadius(ModuleItemHolderMagnet moduleItemHolderMagnet, float value) { - ModuleItemPickup moduleItemPickup = Traverse.Create(moduleItemHolderMagnet).Field("m_Pickup").GetValue() as ModuleItemPickup; - if (moduleItemPickup) { - Traverse.Create(moduleItemPickup).Field("m_PickupRange").SetValue(value); - } - } - } - - [HarmonyPatch] - public class BeamPropertiesManager { - private static Dictionary strenghts = new Dictionary(); - private static Dictionary radii = new Dictionary(); - - [HarmonyPostfix] - [HarmonyPatch(typeof(ModuleItemHolderBeam), "OnAttached")] - static void PostfixCreate(ModuleItemHolderBeam __instance) { - if (!strenghts.ContainsKey(__instance)) { - strenghts.Add(__instance, GetStrength(__instance)); - radii.Add(__instance, GetRadius(__instance)); - DoPatchSingle(__instance); - } - } - - [HarmonyPostfix] - [HarmonyPatch(typeof(ModuleItemHolderBeam), "OnDetaching")] - static void PostfixDestroy(ModuleItemHolderBeam __instance) { - DoRestoreSingle(__instance); - strenghts.Remove(__instance); - radii.Remove(__instance); - } - - public static void DoPatch() { - // Console.WriteLine("Modifying " + generators.Count + " generators"); - // Console.WriteLine("Should patch: " + ShouldPatch()); - foreach (KeyValuePair keyValuePair in strenghts) { - DoRestoreSingle(keyValuePair.Key); - DoPatchSingle(keyValuePair.Key); - } - } - - static void DoPatchSingle(ModuleItemHolderBeam moduleItemHolderBeam) { - // Console.WriteLine("Patching " + moduleEnergy.name); - // Console.WriteLine("Old value " + GetValue(moduleEnergy)); - SetStrength(moduleItemHolderBeam, GetStrength(moduleItemHolderBeam) * Main.beamStrenghtMultiplier.Value); - SetRadius(moduleItemHolderBeam, GetRadius(moduleItemHolderBeam) * Main.beamRadiusMultiplier.Value); - // Console.WriteLine("New value " + GetValue(moduleEnergy)); - } - - static void DoRestoreSingle(ModuleItemHolderBeam moduleItemHolderBeam) { - if (strenghts.ContainsKey(moduleItemHolderBeam)) { - SetStrength(moduleItemHolderBeam, strenghts[moduleItemHolderBeam]); - } - if (radii.ContainsKey(moduleItemHolderBeam)) { - SetRadius(moduleItemHolderBeam, radii[moduleItemHolderBeam]); - } - } - - private static float GetStrength(ModuleItemHolderBeam moduleItemHolderBeam) { - return Traverse.Create(moduleItemHolderBeam).Field("m_Strength").GetValue() as float? ?? 0f; - } - - private static void SetStrength(ModuleItemHolderBeam moduleItemHolderBeam, float value) { - Traverse.Create(moduleItemHolderBeam).Field("m_Strength").SetValue(value); - } - - private static float GetRadius(ModuleItemHolderBeam moduleItemHolderBeam) { - ModuleItemPickup moduleItemPickup = Traverse.Create(moduleItemHolderBeam).Field("m_Pickup").GetValue() as ModuleItemPickup; - if (moduleItemPickup) { - float radius = Traverse.Create(moduleItemPickup).Field("m_PickupRange").GetValue() as float? ?? 0f; - return radius; - } - return 0f; - } - - private static void SetRadius(ModuleItemHolderBeam moduleItemHolderBeam, float value) { - ModuleItemPickup moduleItemPickup = Traverse.Create(moduleItemHolderBeam).Field("m_Pickup").GetValue() as ModuleItemPickup; - if (moduleItemPickup) { - Traverse.Create(moduleItemPickup).Field("m_PickupRange").SetValue(value); - } - } - } - - [HarmonyPatch] - public class MinerPropertiesManager { - private static Dictionary area = new Dictionary(); - private static Dictionary speed = new Dictionary(); - - [HarmonyPostfix] - [HarmonyPatch(typeof(ModuleItemProducer), "GetClosestResourceReservoirInRange")] - static void PostfixCreate(ModuleItemProducer __instance) { - // Console.WriteLine("ModuleItemProducer OnPool"); - if (!area.ContainsKey(__instance)) { - // Console.WriteLine("Is new ModuleItemProducer"); - area.Add(__instance, GetArea(__instance)); - speed.Add(__instance, GetSpeed(__instance)); - DoPatchSingle(__instance); - } else { - if (GetArea(__instance) == area[__instance]) { - DoPatchSingle(__instance); - } - if (GetSpeed(__instance) == speed[__instance]) { - DoPatchSingle(__instance); - } - } - } - - [HarmonyPostfix] - [HarmonyPatch(typeof(ModuleItemProducer), "OnRecycle")] - static void PostfixDestroy(ModuleItemProducer __instance) { - // Console.WriteLine("ModuleItemProducer OnRecycle"); - DoRestoreSingle(__instance); - area.Remove(__instance); - speed.Remove(__instance); - } - - public static void DoPatch() { - // Console.WriteLine("Modifying " + generators.Count + " generators"); - // Console.WriteLine("Should patch: " + ShouldPatch()); - foreach (KeyValuePair keyValuePair in area) { - DoRestoreSingle(keyValuePair.Key); - DoPatchSingle(keyValuePair.Key); - } - } - - static void DoPatchSingle(ModuleItemProducer moduleItemProducer) { - // Console.WriteLine("Patching " + moduleItemProducer.name); - // Console.WriteLine("Old value " + GetArea(moduleItemProducer)); - // Console.WriteLine("Multiplier " + Main.minerGroundArea.Value); - SetArea(moduleItemProducer, area[moduleItemProducer] * Main.minerGroundArea.Value); - SetSpeed(moduleItemProducer, speed[moduleItemProducer] / Main.minerMiningSpeed.Value); - // Console.WriteLine("New value " + GetArea(moduleItemProducer)); - } - - [HarmonyPrefix] - [HarmonyPatch(typeof(ModuleItemProducer), "GetClosestResourceReservoirInRange")] - static void Test(ModuleItemProducer __instance) { - Console.WriteLine("" + GetArea(__instance)); - } - - static void DoRestoreSingle(ModuleItemProducer moduleItemProducer) { - if (area.ContainsKey(moduleItemProducer)) { - SetArea(moduleItemProducer, area[moduleItemProducer]); - } - if (speed.ContainsKey(moduleItemProducer)) { - SetSpeed(moduleItemProducer, speed[moduleItemProducer]); - } - } - - private static float GetArea(ModuleItemProducer moduleItemProducer) { - return Traverse.Create(moduleItemProducer).Field("m_ResourceGroundRadius").GetValue() as float? ?? 0f; - } - - private static void SetArea(ModuleItemProducer moduleItemProducer, float value) { - Traverse.Create(moduleItemProducer).Field("m_ResourceGroundRadius").SetValue(value); - } - - private static float GetSpeed(ModuleItemProducer moduleItemProducer) { - return Traverse.Create(moduleItemProducer).Field("m_SecPerItemProduced").GetValue() as float? ?? 0f; - } - - private static void SetSpeed(ModuleItemProducer moduleItemProducer, float value) { - Traverse.Create(moduleItemProducer).Field("m_SecPerItemProduced").SetValue(value); - } - } } \ No newline at end of file diff --git a/Projects/TerraTech/TerraTech/FuelPropertiesManager.cs b/Projects/TerraTech/TerraTech/FuelPropertiesManager.cs new file mode 100644 index 0000000..c858f16 --- /dev/null +++ b/Projects/TerraTech/TerraTech/FuelPropertiesManager.cs @@ -0,0 +1,55 @@ +using System; +using System.Collections.Generic; +using HarmonyLib; + +namespace TerraTech { + [HarmonyPatch] + public class FuelPropertiesManager { + private static Dictionary refillRate = new Dictionary(); + private static Dictionary capacity = new Dictionary(); + + [HarmonyPrefix] + [HarmonyPatch(typeof(ModuleFuelTank), "OnAttached")] + static void PostfixCreate(ModuleFuelTank __instance) { + Console.WriteLine("ModuleFuelTank.OnAttached"); + if (!refillRate.ContainsKey(__instance)) { + refillRate.Add(__instance, __instance.m_RefillRate); + capacity.Add(__instance, __instance.m_Capacity); + Console.WriteLine("Patching {0}; m_RefillRate: {1}; m_Capacity: {2}", __instance.name, __instance.m_RefillRate, __instance.m_Capacity); + DoPatchSingle(__instance); + Console.WriteLine("Patched {0}; m_RefillRate: {1}; m_Capacity: {2}", __instance.name, __instance.m_RefillRate, __instance.m_Capacity); + } + } + + [HarmonyPrefix] + [HarmonyPatch(typeof(ModuleFuelTank), "OnDetaching")] + static void PostfixDestroy(ModuleFuelTank __instance) { + Console.WriteLine("ModuleFuelTank.OnAttached"); + Console.WriteLine("Restoring {0}; m_RefillRate: {1}; m_Capacity: {2}", __instance.name, __instance.m_RefillRate, __instance.m_Capacity); + DoRestoreSingle(__instance); + Console.WriteLine("Restored {0}; m_RefillRate: {1}; m_Capacity: {2}", __instance.name, __instance.m_RefillRate, __instance.m_Capacity); + refillRate.Remove(__instance); + capacity.Remove(__instance); + } + + public static void DoPatch() { + Console.WriteLine("Modifying {0} ModuleFuelTank", refillRate.Count); + foreach (KeyValuePair keyValuePair in refillRate) { + DoRestoreSingle(keyValuePair.Key); + DoPatchSingle(keyValuePair.Key); + } + } + + static void DoPatchSingle(ModuleFuelTank moduleFuelTank) { + moduleFuelTank.m_RefillRate = refillRate[moduleFuelTank] * Main.fuelTankRefillMultiplier.Value; + moduleFuelTank.m_Capacity = capacity[moduleFuelTank] * Main.fuelTankCapacityMultiplier.Value; + } + + static void DoRestoreSingle(ModuleFuelTank moduleFuelTank) { + if (refillRate.ContainsKey(moduleFuelTank)) { + moduleFuelTank.m_RefillRate = refillRate[moduleFuelTank]; + moduleFuelTank.m_Capacity = capacity[moduleFuelTank]; + } + } + } +} \ No newline at end of file diff --git a/Projects/TerraTech/TerraTech/GeneratorPropertiesManager.cs b/Projects/TerraTech/TerraTech/GeneratorPropertiesManager.cs new file mode 100644 index 0000000..f74762d --- /dev/null +++ b/Projects/TerraTech/TerraTech/GeneratorPropertiesManager.cs @@ -0,0 +1,58 @@ +using System; +using System.Collections.Generic; +using HarmonyLib; + +namespace TerraTech { + [HarmonyPatch] + public class GeneratorPropertiesManager { + private static Dictionary generators = new Dictionary(); + + [HarmonyPrefix] + [HarmonyPatch(typeof(ModuleEnergy), "OnAttached")] + static void PostfixCreate(ModuleEnergy __instance) { + Console.WriteLine("ModuleEnergy.OnAttached"); + if (!generators.ContainsKey(__instance)) { + generators.Add(__instance, GetValue(__instance)); + Console.WriteLine("Patching {0}; m_OutputPerSecond: {1}", __instance.name, GetValue(__instance)); + DoPatchSingle(__instance); + Console.WriteLine("Patched {0}; m_OutputPerSecond: {1}", __instance.name, GetValue(__instance)); + } + } + + [HarmonyPrefix] + [HarmonyPatch(typeof(ModuleEnergy), "OnDetaching")] + static void PostfixDestroy(ModuleEnergy __instance) { + Console.WriteLine("ModuleEnergy.OnDetaching"); + Console.WriteLine("Restoring {0}; m_OutputPerSecond: {1}", __instance.name, GetValue(__instance)); + DoRestoreSingle(__instance); + Console.WriteLine("Restored {0}; m_OutputPerSecond: {1}", __instance.name, GetValue(__instance)); + generators.Remove(__instance); + } + + public static void DoPatch() { + Console.WriteLine("Modifying {0} ModuleEnergy", generators.Count); + foreach (KeyValuePair keyValuePair in generators) { + DoRestoreSingle(keyValuePair.Key); + DoPatchSingle(keyValuePair.Key); + } + } + + static void DoPatchSingle(ModuleEnergy moduleEnergy) { + SetValue(moduleEnergy, generators[moduleEnergy] * Main.energyGenMultiplier.Value); + } + + static void DoRestoreSingle(ModuleEnergy moduleEnergy) { + if (generators.ContainsKey(moduleEnergy)) { + SetValue(moduleEnergy, generators[moduleEnergy]); + } + } + + private static float GetValue(ModuleEnergy moduleEnergy) { + return Traverse.Create(moduleEnergy).Field("m_OutputPerSecond").GetValue() as float? ?? 0f; + } + + private static void SetValue(ModuleEnergy moduleEnergy, float value) { + Traverse.Create(moduleEnergy).Field("m_OutputPerSecond").SetValue(value); + } + } +} \ No newline at end of file diff --git a/Projects/TerraTech/TerraTech/HomingAndVelocityProjectilePatch.cs b/Projects/TerraTech/TerraTech/HomingAndVelocityProjectilePatch.cs new file mode 100644 index 0000000..b88dca9 --- /dev/null +++ b/Projects/TerraTech/TerraTech/HomingAndVelocityProjectilePatch.cs @@ -0,0 +1,22 @@ +using System.Collections.Generic; +using HarmonyLib; +using UnityEngine; + +namespace TerraTech { + [HarmonyPatch(typeof(Projectile), "Fire")] + public class HomingAndVelocityProjectilePatch { + private static Dictionary velocities = new Dictionary(); + + static void Prefix(Vector3 fireDirection, ref FireData fireData, ref ModuleWeaponGun weapon, Tank shooter, ref bool seekingRounds, bool replayRounds) { + if (Main.allProjectilesHoming.Value) { + seekingRounds = true; + } + if (!velocities.ContainsKey(fireData)) { + velocities.Add(fireData, fireData.m_MuzzleVelocity); + fireData.m_MuzzleVelocity *= Main.muzzleVelocityMultiplier.Value; + } else if (velocities[fireData] != fireData.m_MuzzleVelocity * Main.muzzleVelocityMultiplier.Value) { + fireData.m_MuzzleVelocity = velocities[fireData] * Main.muzzleVelocityMultiplier.Value; + } + } + } +} \ No newline at end of file diff --git a/Projects/TerraTech/TerraTech/MagnetPropertiesManager.cs b/Projects/TerraTech/TerraTech/MagnetPropertiesManager.cs new file mode 100644 index 0000000..6cfc3c4 --- /dev/null +++ b/Projects/TerraTech/TerraTech/MagnetPropertiesManager.cs @@ -0,0 +1,81 @@ +using System; +using System.Collections.Generic; +using HarmonyLib; + +namespace TerraTech { + [HarmonyPatch] + public class MagnetPropertiesManager { + private static Dictionary strenghts = new Dictionary(); + private static Dictionary radii = new Dictionary(); + + [HarmonyPrefix] + [HarmonyPatch(typeof(ModuleItemHolderMagnet), "OnAttached")] + static void PostfixCreate(ModuleItemHolderMagnet __instance) { + Console.WriteLine("ModuleItemHolderMagnet.OnAttached"); + if (!strenghts.ContainsKey(__instance)) { + strenghts.Add(__instance, GetStrength(__instance)); + radii.Add(__instance, GetRadius(__instance)); + Console.WriteLine("Patching {0}; m_Strength: {1}; m_Pickup.m_PickupRange: {2}", __instance.name, GetStrength(__instance), GetRadius(__instance)); + DoPatchSingle(__instance); + Console.WriteLine("Patched {0}; m_Strength: {1}; m_Pickup.m_PickupRange: {2}", __instance.name, GetStrength(__instance), GetRadius(__instance)); + } + } + + [HarmonyPrefix] + [HarmonyPatch(typeof(ModuleItemHolderMagnet), "OnDetaching")] + static void PostfixDestroy(ModuleItemHolderMagnet __instance) { + Console.WriteLine("ModuleItemHolderMagnet.OnDetaching"); + Console.WriteLine("Restoring {0}; m_Strength: {1}; m_Pickup.m_PickupRange: {2}", __instance.name, GetStrength(__instance), GetRadius(__instance)); + DoRestoreSingle(__instance); + Console.WriteLine("Restored {0}; m_Strength: {1}; m_Pickup.m_PickupRange: {2}", __instance.name, GetStrength(__instance), GetRadius(__instance)); + strenghts.Remove(__instance); + radii.Remove(__instance); + } + + public static void DoPatch() { + Console.WriteLine("Modifying {0} ModuleItemHolderMagnet", strenghts.Count); + foreach (KeyValuePair keyValuePair in strenghts) { + DoRestoreSingle(keyValuePair.Key); + DoPatchSingle(keyValuePair.Key); + } + } + + static void DoPatchSingle(ModuleItemHolderMagnet moduleItemHolderMagnet) { + SetStrength(moduleItemHolderMagnet, strenghts[moduleItemHolderMagnet] * Main.magnetStrenghtMultiplier.Value); + SetRadius(moduleItemHolderMagnet, radii[moduleItemHolderMagnet] * Main.magnetRadiusMultiplier.Value); + } + + static void DoRestoreSingle(ModuleItemHolderMagnet moduleItemHolderMagnet) { + if (strenghts.ContainsKey(moduleItemHolderMagnet)) { + SetStrength(moduleItemHolderMagnet, strenghts[moduleItemHolderMagnet]); + } + if (radii.ContainsKey(moduleItemHolderMagnet)) { + SetRadius(moduleItemHolderMagnet, radii[moduleItemHolderMagnet]); + } + } + + private static float GetStrength(ModuleItemHolderMagnet moduleItemHolderMagnet) { + return Traverse.Create(moduleItemHolderMagnet).Field("m_Strength").GetValue() as float? ?? 0f; + } + + private static void SetStrength(ModuleItemHolderMagnet moduleItemHolderMagnet, float value) { + Traverse.Create(moduleItemHolderMagnet).Field("m_Strength").SetValue(value); + } + + private static float GetRadius(ModuleItemHolderMagnet moduleItemHolderMagnet) { + ModuleItemPickup moduleItemPickup = Traverse.Create(moduleItemHolderMagnet).Field("m_Pickup").GetValue() as ModuleItemPickup; + if (moduleItemPickup) { + float radius = Traverse.Create(moduleItemPickup).Field("m_PickupRange").GetValue() as float? ?? 0f; + return radius; + } + return 0f; + } + + private static void SetRadius(ModuleItemHolderMagnet moduleItemHolderMagnet, float value) { + ModuleItemPickup moduleItemPickup = Traverse.Create(moduleItemHolderMagnet).Field("m_Pickup").GetValue() as ModuleItemPickup; + if (moduleItemPickup) { + Traverse.Create(moduleItemPickup).Field("m_PickupRange").SetValue(value); + } + } + } +} \ No newline at end of file diff --git a/Projects/TerraTech/TerraTech/MinerPropertiesManager.cs b/Projects/TerraTech/TerraTech/MinerPropertiesManager.cs new file mode 100644 index 0000000..d63ee01 --- /dev/null +++ b/Projects/TerraTech/TerraTech/MinerPropertiesManager.cs @@ -0,0 +1,86 @@ +using System; +using System.Collections.Generic; +using HarmonyLib; + +namespace TerraTech { + [HarmonyPatch] + public class MinerPropertiesManager { + private static Dictionary area = new Dictionary(); + private static Dictionary speed = new Dictionary(); + + [HarmonyPrefix] + [HarmonyPatch(typeof(ModuleItemProducer), "GetClosestResourceReservoirInRange")] + static void PostfixCreate(ModuleItemProducer __instance) { + Console.WriteLine("ModuleItemProducer.GetClosestResourceReservoirInRange"); + if (!area.ContainsKey(__instance)) { + area.Add(__instance, GetArea(__instance)); + speed.Add(__instance, GetSpeed(__instance)); + Console.WriteLine("Patching {0}; m_ResourceGroundRadius: {1}; m_SecPerItemProduced: {2}", __instance.name, GetArea(__instance), + GetSpeed(__instance)); + DoPatchSingle(__instance); + Console.WriteLine("Patched {0}; m_ResourceGroundRadius: {1}; m_SecPerItemProduced: {2}", __instance.name, GetArea(__instance), + GetSpeed(__instance)); + } else { + if (GetArea(__instance) == area[__instance]) { + Console.WriteLine("{0} area reset, patching again... m_ResourceGroundRadius: {1}; m_SecPerItemProduced: {2}", __instance.name, + GetArea(__instance), GetSpeed(__instance)); + DoPatchSingle(__instance); + Console.WriteLine("Patched {0}; m_ResourceGroundRadius: {1}; m_SecPerItemProduced: {2}", __instance.name, GetArea(__instance), + GetSpeed(__instance)); + } + if (GetSpeed(__instance) == speed[__instance]) { + Console.WriteLine("{0} speed reset, patching again... m_ResourceGroundRadius: {1}; m_SecPerItemProduced: {2}", __instance.name, + GetArea(__instance), GetSpeed(__instance)); + DoPatchSingle(__instance); + Console.WriteLine("Patched {0}; m_ResourceGroundRadius: {1}; m_SecPerItemProduced: {2}", __instance.name, GetArea(__instance), + GetSpeed(__instance)); + } + } + } + + [HarmonyPostfix] + [HarmonyPatch(typeof(ModuleItemProducer), "OnDetaching")] + static void PostfixDestroy(ModuleItemProducer __instance) { + Console.WriteLine("ModuleItemProducer.OnRecycle"); + DoRestoreSingle(__instance); + area.Remove(__instance); + speed.Remove(__instance); + } + + public static void DoPatch() { + Console.WriteLine("Modifying {0} ModuleItemProducer", area.Count); + foreach (KeyValuePair keyValuePair in area) { + DoRestoreSingle(keyValuePair.Key); + DoPatchSingle(keyValuePair.Key); + } + } + + static void DoPatchSingle(ModuleItemProducer moduleItemProducer) { + SetArea(moduleItemProducer, area[moduleItemProducer] * Main.minerGroundArea.Value); + SetSpeed(moduleItemProducer, speed[moduleItemProducer] / Main.minerMiningSpeed.Value); + } + + static void DoRestoreSingle(ModuleItemProducer moduleItemProducer) { + if (area.ContainsKey(moduleItemProducer)) { + SetArea(moduleItemProducer, area[moduleItemProducer]); + SetSpeed(moduleItemProducer, speed[moduleItemProducer]); + } + } + + private static float GetArea(ModuleItemProducer moduleItemProducer) { + return Traverse.Create(moduleItemProducer).Field("m_ResourceGroundRadius").GetValue() as float? ?? 0f; + } + + private static void SetArea(ModuleItemProducer moduleItemProducer, float value) { + Traverse.Create(moduleItemProducer).Field("m_ResourceGroundRadius").SetValue(value); + } + + private static float GetSpeed(ModuleItemProducer moduleItemProducer) { + return Traverse.Create(moduleItemProducer).Field("m_SecPerItemProduced").GetValue() as float? ?? 0f; + } + + private static void SetSpeed(ModuleItemProducer moduleItemProducer, float value) { + Traverse.Create(moduleItemProducer).Field("m_SecPerItemProduced").SetValue(value); + } + } +} \ No newline at end of file diff --git a/Projects/TerraTech/TerraTech/Patches.cs b/Projects/TerraTech/TerraTech/Patches.cs new file mode 100644 index 0000000..5582502 --- /dev/null +++ b/Projects/TerraTech/TerraTech/Patches.cs @@ -0,0 +1,24 @@ +using HarmonyLib; + +namespace TerraTech { + [HarmonyPatch] + public class Patches { + [HarmonyPrefix] + [HarmonyPatch(typeof(ManLicenses), "AddXP")] + static void XPMulti(FactionSubTypes corporation, ref int xp, bool showUI = true) { + xp = (int)(xp * Main.xpMultiplier.Value); + } + + [HarmonyPrefix] + [HarmonyPatch(typeof(ManPlayer), "AddMoney")] + static void MoneyMulti(ref int amount) { + amount = (int)(amount * Main.moneyMultiplier.Value); + } + + [HarmonyPrefix] + [HarmonyPatch(typeof(TechHolders), "SetHeartbeatInterval")] + static void HeartbeatMulti(ref float interval) { + interval *= Main.heartbeatIntervalMultiplier.Value; + } + } +} \ No newline at end of file diff --git a/Projects/TerraTech/TerraTech/TerraTech.csproj b/Projects/TerraTech/TerraTech/TerraTech.csproj index 7512c30..d2697b7 100644 --- a/Projects/TerraTech/TerraTech/TerraTech.csproj +++ b/Projects/TerraTech/TerraTech/TerraTech.csproj @@ -32,8 +32,18 @@ 4 + + + + + + + + + + diff --git a/Projects/TerraTech/TerraTech/ThrusterPropertiesManager.cs b/Projects/TerraTech/TerraTech/ThrusterPropertiesManager.cs new file mode 100644 index 0000000..ebbcf37 --- /dev/null +++ b/Projects/TerraTech/TerraTech/ThrusterPropertiesManager.cs @@ -0,0 +1,89 @@ +using System; +using System.Collections.Generic; +using HarmonyLib; + +namespace TerraTech { + [HarmonyPatch] + public class ThrusterPropertiesManager { + private static Dictionary> boosters = new Dictionary>(); + + [HarmonyPrefix] + [HarmonyPatch(typeof(ModuleBooster), "OnAttached")] + static void PostfixCreate(ModuleBooster __instance) { + Console.WriteLine("ModuleBooster.OnAttached"); + if (!boosters.ContainsKey(__instance)) { + boosters.Add(__instance, Map(__instance)); + Console.WriteLine("Patching {0}; force: {1}", __instance.name, GetForceAsString(__instance)); + DoPatchSingle(__instance); + Console.WriteLine("Patched {0}; force: {1}", __instance.name, GetForceAsString(__instance)); + } + } + + [HarmonyPrefix] + [HarmonyPatch(typeof(ModuleBooster), "OnDetaching")] + static void PostfixDestroy(ModuleBooster __instance) { + Console.WriteLine("ModuleBooster.OnDetaching"); + Console.WriteLine("Restoring {0}; force: {1}", __instance.name, GetForceAsString(__instance)); + DoRestoreSingle(__instance); + Console.WriteLine("Restored {0}; force: {1}", __instance.name, GetForceAsString(__instance)); + boosters.Remove(__instance); + } + + public static void DoPatch() { + Console.WriteLine("Modifying {0} ModuleBooster", boosters.Count); + foreach (KeyValuePair> keyValuePair in boosters) { + DoRestoreSingle(keyValuePair.Key); + DoPatchSingle(keyValuePair.Key); + } + } + + static void DoPatchSingle(ModuleBooster moduleBooster) { + List jets = GetValue(moduleBooster); + for (var i = 0; i < jets.Count; i++) { + boosters[moduleBooster][jets[i]] = GetValue(jets[i]); + SetValue(jets[i], GetValue(jets[i]) * Main.jetThrustMultiplier.Value); + } + SetValue(moduleBooster, jets); + } + + static void DoRestoreSingle(ModuleBooster moduleBooster) { + if (boosters.ContainsKey(moduleBooster)) { + foreach (BoosterJet boosterJet in GetValue(moduleBooster)) { + SetValue(boosterJet, boosters[moduleBooster][boosterJet]); + } + } + } + + private static Dictionary Map(ModuleBooster moduleBooster) { + Dictionary jets = new Dictionary(); + foreach (BoosterJet boosterJet in GetValue(moduleBooster)) { + jets.Add(boosterJet, GetValue(boosterJet)); + } + return jets; + } + + private static List GetValue(ModuleBooster moduleBooster) { + return Traverse.Create(moduleBooster).Field("jets").GetValue() as List; + } + + private static void SetValue(ModuleBooster moduleBooster, List value) { + Traverse.Create(moduleBooster).Field("jets").SetValue(value); + } + + private static float GetValue(BoosterJet boosterJet) { + return Traverse.Create(boosterJet).Field("m_Force").GetValue() as float? ?? 0f; + } + + private static void SetValue(BoosterJet boosterJet, float value) { + Traverse.Create(boosterJet).Field("m_Force").SetValue(value); + } + + private static string GetForceAsString(ModuleBooster moduleBooster) { + string result = ""; + foreach (BoosterJet boosterJet in GetValue(moduleBooster)) { + result += GetValue(boosterJet) + ", "; + } + return result; + } + } +} \ No newline at end of file diff --git a/Projects/TerraTech/TerraTech/WeaponPropertiesManager.cs b/Projects/TerraTech/TerraTech/WeaponPropertiesManager.cs new file mode 100644 index 0000000..6c51a02 --- /dev/null +++ b/Projects/TerraTech/TerraTech/WeaponPropertiesManager.cs @@ -0,0 +1,51 @@ +using System; +using System.Collections.Generic; +using BepInEx.Configuration; +using HarmonyLib; + +namespace TerraTech { + [HarmonyPatch] + public class WeaponPropertiesManager { + private static Dictionary shotCooldown = new Dictionary(); + + [HarmonyPrefix] + [HarmonyPatch(typeof(ModuleWeaponGun), "OnAttached")] + static void PostfixCreate(ModuleWeaponGun __instance) { + Console.WriteLine("ModuleWeaponGun.OnAttached"); + if (!shotCooldown.ContainsKey(__instance)) { + shotCooldown.Add(__instance, __instance.m_ShotCooldown); + Console.WriteLine("Patching {0}; m_ShotCooldown: {1}", __instance.name, __instance.m_ShotCooldown); + DoPatchSingle(__instance); + Console.WriteLine("Patched {0}; m_ShotCooldown: {1}", __instance.name, __instance.m_ShotCooldown); + } + } + + [HarmonyPrefix] + [HarmonyPatch(typeof(ModuleWeaponGun), "OnDetaching")] + static void PostfixDestroy(ModuleWeaponGun __instance) { + Console.WriteLine("ModuleWeaponGun.OnDetaching"); + Console.WriteLine("Restoring {0}; m_ShotCooldown: {1}", __instance.name, __instance.m_ShotCooldown); + DoRestoreSingle(__instance); + Console.WriteLine("Restored {0}; m_ShotCooldown: {1}", __instance.name, __instance.m_ShotCooldown); + shotCooldown.Remove(__instance); + } + + public static void DoPatch() { + Console.WriteLine("Modifying {0} ModuleWeaponGun", shotCooldown.Count); + foreach (KeyValuePair keyValuePair in shotCooldown) { + DoRestoreSingle(keyValuePair.Key); + DoPatchSingle(keyValuePair.Key); + } + } + + static void DoPatchSingle(ModuleWeaponGun moduleWeaponGun) { + moduleWeaponGun.m_ShotCooldown = shotCooldown[moduleWeaponGun] / Main.shootingSpeedMultiplier.Value; + } + + static void DoRestoreSingle(ModuleWeaponGun moduleWeaponGun) { + if (shotCooldown.ContainsKey(moduleWeaponGun)) { + moduleWeaponGun.m_ShotCooldown = shotCooldown[moduleWeaponGun]; + } + } + } +} \ No newline at end of file diff --git a/Projects/TerraTech/TerraTech/WheelPropertiesManager.cs b/Projects/TerraTech/TerraTech/WheelPropertiesManager.cs new file mode 100644 index 0000000..84e2025 --- /dev/null +++ b/Projects/TerraTech/TerraTech/WheelPropertiesManager.cs @@ -0,0 +1,63 @@ +using System; +using System.Collections.Generic; +using HarmonyLib; + +namespace TerraTech { + [HarmonyPatch] + public class WheelPropertiesManager { + private static Dictionary torques = new Dictionary(); + private static Dictionary maxRpm = new Dictionary(); + + [HarmonyPrefix] + [HarmonyPatch(typeof(ModuleWheels), "OnAttached")] + static void PostfixCreate(ModuleWheels __instance) { + Console.WriteLine("ModuleWheels.OnAttached"); + if (!torques.ContainsKey(__instance)) { + torques.Add(__instance, __instance.m_TorqueParams.torqueCurveMaxTorque); + maxRpm.Add(__instance, __instance.m_TorqueParams.torqueCurveMaxRpm); + Console.WriteLine("Patching {0}; m_TorqueParams.torqueCurveMaxTorque: {1}; m_TorqueParams.torqueCurveMaxRpm: {2}", __instance.name, + __instance.m_TorqueParams.torqueCurveMaxTorque, + __instance.m_TorqueParams.torqueCurveMaxRpm); + DoPatchSingle(__instance); + Console.WriteLine("Patched {0}; m_TorqueParams.torqueCurveMaxTorque: {1}; m_TorqueParams.torqueCurveMaxRpm: {2}", __instance.name, + __instance.m_TorqueParams.torqueCurveMaxTorque, + __instance.m_TorqueParams.torqueCurveMaxRpm); + } + } + + [HarmonyPrefix] + [HarmonyPatch(typeof(ModuleWheels), "OnDetaching")] + static void PostfixDestroy(ModuleWheels __instance) { + Console.WriteLine("ModuleWheels.OnDetaching"); + Console.WriteLine("Restoring {0}; m_TorqueParams.torqueCurveMaxTorque: {1}; m_TorqueParams.torqueCurveMaxRpm: {2}", __instance.name, + __instance.m_TorqueParams.torqueCurveMaxTorque, + __instance.m_TorqueParams.torqueCurveMaxRpm); + DoRestoreSingle(__instance); + Console.WriteLine("Restored {0}; m_TorqueParams.torqueCurveMaxTorque: {1}; m_TorqueParams.torqueCurveMaxRpm: {2}", __instance.name, + __instance.m_TorqueParams.torqueCurveMaxTorque, + __instance.m_TorqueParams.torqueCurveMaxRpm); + torques.Remove(__instance); + maxRpm.Remove(__instance); + } + + public static void DoPatch() { + Console.WriteLine("Modifying {0} ModuleWheels", torques.Count); + foreach (KeyValuePair keyValuePair in torques) { + DoRestoreSingle(keyValuePair.Key); + DoPatchSingle(keyValuePair.Key); + } + } + + static void DoPatchSingle(ModuleWheels moduleWheels) { + moduleWheels.m_TorqueParams.torqueCurveMaxRpm = maxRpm[moduleWheels] * Main.wheelSpeedMultiplier.Value; + moduleWheels.m_TorqueParams.torqueCurveMaxTorque = torques[moduleWheels] * Main.wheelTorqueMultiplier.Value; + } + + static void DoRestoreSingle(ModuleWheels moduleWheels) { + if (torques.ContainsKey(moduleWheels)) { + moduleWheels.m_TorqueParams.torqueCurveMaxTorque = torques[moduleWheels]; + moduleWheels.m_TorqueParams.torqueCurveMaxRpm = maxRpm[moduleWheels]; + } + } + } +} \ No newline at end of file diff --git a/Projects/TerraTech/TerraTech/bin/Debug/TerraTech.dll b/Projects/TerraTech/TerraTech/bin/Debug/TerraTech.dll index 9f1d5d4f24a36446fdfe8366b75ba32bd2b1b32b..32a4821465ebf7b5f79e91cf3ab6ebd775d86434 100644 GIT binary patch literal 29696 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 literal 18432 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 diff --git a/Projects/TerraTech/TerraTech/bin/Debug/TerraTech.pdb b/Projects/TerraTech/TerraTech/bin/Debug/TerraTech.pdb index 8e79d6c4e7a6d22e42d003deea46db6ab1adf70f..2d8d1e78e64e7ffa6ebe6b8104814defabcab319 100644 GIT binary patch literal 69120 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 w{$BR#2ffK(VVdds>uv=F|2QL0Xzdt`%zvQl8 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 Xy;^!-;e8tD(?FjF`ZVx<)xiG;;2-ZR diff --git a/Projects/TerraTech/TerraTech/obj/Debug/TerraTech.dll b/Projects/TerraTech/TerraTech/obj/Debug/TerraTech.dll index 9f1d5d4f24a36446fdfe8366b75ba32bd2b1b32b..32a4821465ebf7b5f79e91cf3ab6ebd775d86434 100644 GIT binary patch literal 29696 zcmeHw33y!9k#61FtyZhmYFjPac&CjQT9Pd!?* z&bi&UwIKrLOD3<4>Yl1oRi{p!I_K2A_jI%K#&?sCi2V3_`DLQVaOKY?ffIuqsw0m&wZ-HCMC&c+T|F=r?pOQvJZyE|e7c8^t8Q4w0C zRkyVe?J#^a`}UPRZfh6GTu^S56Qw{2DC+!o;2Oi$=cU}RhAJpNdhgFnw_6VYZ5 zs*3DaeAqUVO6Y-2M9*y{GMM-We5&gG^ghTzzLFfk!T2lh2mt|E0Om8@1(eO$7jLPCBxE1Tgo*=bLvg%haI58S0_vw6lQxic<)8M5ud~T zQ@*kheWCK&MNuO@52X-ADLx;CxESLi;t2xJ<){h=mwof;DN*C48E9dS9RrCjp#KKu zgGpD?iW_MPyWu~`)K)G4%P?qu`wEn9jF)mpO>MSRLe#A+<4TxGRrNl)8dnT)rFWob zykuakmlSCqtuiipSWy-Hu?c!G4J$FK3t@uu1iWG|LdjkXFoe#|`6z>O^l=F&%SvG> zQEeIUD}nd-Q>c~#HMfmY;FFNC<6v4+BW>~ggTwM|{jj*Ldh{q1h$H4g=t)J{vPKFh zqkdh?m^Z4*AN7y0%I{iLUK*|qiml;V3f6F6dCoz0a_yIwE}K89eQ%$rW^V>g4COEk zepND2s+n)bYeBA=AKxbfHa`w`V&LY-(ZQlC{4ThAMVtxlUT@a8d)=<_Yl^Nsj-~V& zp4h5yb!gqG@X??%4*)L6Z7h`7Bbzf3oSz8K-S5LPgT=$xBP=>rXzpf!p3Rw&jRuSNfX}be_pe>k@5b>Bh08LnEZ8 z`(3Z)OB3`P+os$0br5tCdFgzK`#nzE6(gkImzU0$CXkMdkp5a;I$xSVn%5mY-eURh z^V0d!1k$`PY3b?`^m`)!vu`YvfQ}byl_R8Y&r9b^6G%r#NI#yJ&X*>T#-3PY`TxmF z=SvevWA7}IzC7UeJ71bW8hfiNeH{dyL|!^ynn1d0g!BjV()rQ^(#Q+kwq1?wyHQ0NSc#L;N*+u ze9@d7RKp8gP6UbOWD+>}qB%K$hB3&hb&QPWWD+>}qB%KOhOwtBP7I0WWD+>} zqB%J*hOtR0P7I0WWD+>}qBza?N({gA0s_Zg#er~Hd^KO3S*0|XS%YFIV6SCLz+Q(- zxfZBKb!i;iT&<*8&NaZ}*u_Fh3vZe0fnhhrUgphbcQPZ)L&zv6r5aph!M2+;H0>9 z#~abBCBxE1Tgq^jo6lnFMLt_rhJ2R2Vs8d-Q9diwCQwyA+l-Rrvn?oa<{IGSRuJ(7 z=d)W-Rmf*C-zUgte~yfkn=tLIkQ(Nxr1IHQJUXVfTIzW6=sF%J&I^5nh|#&M(!ztR za@j>inn$TS#X2|-LuMDsv9Kz!oAP;>%9m}o4W|iy(lK=<_)NPM!icF38W!B-3^HJE zXVp#y%OSR3eJmMszWjtJRQx}80m(5duO0>ZG8z7!zQwr9PTu-lr=XC7jHVd(TBV^Qi zD!3WP{vNPzV!MX1!tnC}EcBY<^h4Z@S!Pu0sc;mnrwu&Z&NGwZ9<`qC3A;8rXHc9> zd&{N0s*1^Q537zJKo^&&F4|J|tfyr%kM4##VYc4{-lBQLD(ss$%uEqc(4DozXY2v_Bqsz}13){c2U+>GzUz}bVKlJh+ zf9wpXYF=RNSMy>B1=S$tg&@)&o)V~Y%gW|Y_N(vGx` zLRX;FK32HIkqigy;~>x&6~lZpt~X!g$r$p|%l4O-2JG7)@RA>9ebfxZk!53A&4GV0 zhp0m4lnk5>~g2!9*z9L$$y z%=Yx1YScT21=P^4-Z^ml9cUlsP;Hdh@rhH%Ga`Ymsb_d{h2UW-W?o9=ZhJ9?rVcF^Ns1n zdP<<@)xD$0D=3=Rh*KXS7v$HMxQ|+lR(R@gn8>hH)GqM&NL(aasBTrGPlFiISz{aBEUHuCc0h&mT?PMs?6-lc)`YjCBzxuED8!{rtOfy#`&=@ffZJ)giGq23D%&R2V3Rgtua5bnh8g=mg>^TUZa_RG6|*;AeW zjsEKKyh_INosd9YcR%}lSV-o{zX0vTy8!HW1JH0ib87N^d9ria^!%U{L{yrmaON$_ z^>Dv}k^0W7l%pDcj|-#J$9dNbw-3$}DC&rtqzMPbgxqDXPEL8o{%`2e66Fq6_UtiH ziKh)S5l`$!`!BiksL#LK73yhFRXn{1C5fl^q7WCe5Kn@Ln>e1{hpIw6T|Qwv@!VVbKgS;I=SKFEH@X%QF)^&(raz7&%x}{METl6f~S-u~7|6 zYy6}P5f;iZw<>W=<%4u{$M($zw}cP&NIJ5zuD)(X{fdTlOev8g6Wie6h1hr=#r3fW z${krJneN4=jUyEch_W+5+tWc8A%k_47H-|s%Kms3xS#nqr})NIJ|?=gZ=M+}3j+P! z;uQq%aO+#}$L+&7VqX4(-FzQNH{cIVQw)F1i=2vcK72yj@&H|K%rrt&XDl%Sbc1oN z5uqbs4bgUUr5Pc-62va(hq4IO0Y=I4-vHAFgmOyY-2%@FyeKe=T_!>?zyPf+VV!T1 z@&kc80s;DJ;4^?v3;eyn*`-WbA#jJlUV(QA{9Ngo(f~ar@Pbf&BXDsr8oZO%!5;zY z3vLSr=6HvLm@Ci?XQz$kipgFiqeWlWg|IE5A>qYTjcvTH%<17!xi ztL&4|^HG!|^bOR8=s(NYGcSwOf)LB@32h68=;`oEGepk`EU)15Jiyt+JR!QFqP1cM zy|dyZ;KwW2lFwFLYs{vvR(vKfpI)qZwjv-DcmtFGRYbV;=Ex_5Tg9pf^<(@mGll^9 z!=uNL|4pTtREG$2v9-X;Fs@;#+aPs|X^vnWf?Y{h2$mKsPPKx)OR#D{*7=}dwX{yK zzZYy7W+&HuMPu6pyC_&4?GfyG!LC9sP)YZo=auvx!0U5U%{st20+#^Jp#A1`fR?}^ zfp-i1sKCbse%EXV&o89x_c8w*fy)JM6?jnK34!+rd_dr*1%4HKQjeQK*EUMAi4}i^~~h+yu_M41 z&~}aeHL!&glRmJo57A=!lE%&fTS7aQa{rXCucYq?#=bs;Q%6&gSF-1y0v4xR1XDh% zrcPBSKC7mz<~(EEO4anN#?Aq&q0YKO3$=7XFmB;is-+h-_7t$CRFB<-+neh@O3Ub^ z#uoceVOBjTm}4ngo&vUx&TH&x;}bYd6<(n@e{MWN*U(ap{T6i_=pl`f z`3PN0GgdOEvTPHPV9K&h6jK;1`yy?kPp(or&jD+s3xX-jHdD`PRd*hBo9QDOdkR<+ z{ZeCp@BbQBtF>zs=U4pSpcdM%v8PbCl|G`e@1brReP1wT*>?J(suQ1Wr)Mtxn>#@J}wL?6-EIba7Uh=+LYTzM0{TQH8~ zjmDekVU0Zn>}L9vV9FC+^kY>g{_LXXHRl;)m(fLEz@t@e?;Nm$w0~ovg#=v`j9b`c zB&dFq;(Q9&Av!IXYN4BkRh_iZ4K{<0Bgb&zT~ZziO}c*s-K9*&y}Lcv=y~c+Go)h>ffu9xlgut%}{HDO~3w#FfCgW#P{U{ZDW1aD%;J+DR`epDx0iO@PU^E&p1`U(xC1#kyWlXOsd$UmP1f{O*ZgU!4SM~vO zF6}FO1m&)>$IPUWEvrEuc(Uvtu^GPw^jnShm;Ec?2g`l}IM@FRb16Lx&ZYFY)Gqdu zuhF`0hvf9^WEbU2z|F z`((xYecv>)6(8_@-*}+n!@g%wyVrQec(|g5o-w{v@p0b^Mrq^`U!^%M@@38r(8_x0 zZv)MVwEEXeuNx>XW$y2K>F;{!X|wcnhxD{rdb(cvxL)*hik?oVAJ$qLU&sXZz5lcN8m=szj??-Kp@ivGJq z|4ETODYBG(0349uf@?iPS?P^^izC zDpFq%sYgZXA!+4HfRBfsq>ji7#+QWuOW^-*=sVzl#C%eCz9alkN-Ixl{cPI>Y4LhG z0B>9n`UPqCg6O#*?fyjC{iU?~6VY=)bY2i`&xwZn=#I$gaD#at^gJhe8qAMLnMe6K z(e|8Zdr`Fc4UXp*McZ?t?K#mFL0mWBu5zltX~-B%YA`yD7@eWxfPYCTqmDB4?TR|w z`wRp2(^mlRq@MzwpbLQIv>338Y`}%WgA-dQuMo;LbQj7^Lc#eKly9O3DmFoXrMXG; zH_<(4rJK5qTHl>g{;%vm7byY(oLn; z_@E8tr%Q7|rsslZXfSwI%4bpjM({k~Rb}UeLS@WDWoPKG%3^?(p_ow4hR#sD{A@^C zMEU*Y=cSx0KSNiBbLC7wtKk{CKU`sc!ThZm@y+u+>HCWRD<#*K9tgfS^uI#?9{Npa zYWb}4s&Hk+FO2t?e{Fux{FQlwuhIXg|8f7ul1ED(FIf}V5O_4Ov~*SJcT2YiJA%H@ zvC!K>e;4{<=wj&I6xy9Cuw= z`mC{RAINmuPAYkbI*vo%0PQ}+=D{0-t?8Cyv^kNn_N3YF)KD)Rpt$Oq>{N<-VW%^7 z()(mLH7A9TaE>2bj+65lYv54o__C&szJxPK%IB?UVVj-mu^jd`WwMTy?(NHF$Vv1h zlhkHsvWJt$nj9;UwOp*(0vq0_HQUNz`q}}vrYum~QExkz#9kJq}NKXnj_~$sR&iThkcGBZ-u!F4Je*S@f`D(6V|w^nsz< zZcABiEO{ytDUM4WSs4{|G$661{Lz>7aH|UC1`ip=42;3eHc=>a5CjJ z-K}U!3??|>J^C>fEN81@52bq=F~%e~0^RK>9pxD9w4GarERUE_M|$EGE34*!hq3W! zqTkY?#xs@eBS#Eu=ZNaoCTW%y85HVuXK#iOC3_R8A&Y}V6}BWDt2vQP&=EC%u{4m( zhn6&^gN2B2EEU^cGVR6Wu$>jUAvGnp4y8#fYGad*jhYf_CGe0jpglv~h^7QPE5o6{ z7K-a&pjnJmH_4Q{cWZmThaNWs7nLN(iDV^Z5k({6ux7&8P9U?4LH!(;7(1Ju=( zOlPu*bhm}+!7Ywh4KM@Xc~zAkJ%#F#I?RKCKj|O|#zS*dRy;Pu<_=^ms~?87bC_Xe zu?AC#;~E*+u6B8WoOd}E#X(!o^J9ao`{`XYl@GribYaO+n{>Cg^d}s)f>xx*1^|G5^U^|o9lvQAK*Ilfd z-A;0l*QwE!Ma$S&)dPcx^zqRZ$~)Q76;1ZwaVLqDd~{W(ljyMq65h_ZHa20s9CAFy zyS>zok#*4??7-rf>_!|l*#mo%ndBjFe|g;=-Kciy=!z}acSlv~W}A~(E-?p^-5F}O z4h{A8CW@L;Gz`;Dd_x-hi0qej?kK{zK`3{;)`B2AMZ1+s9FtO}V3HPOIaD1=rm$8P zYU{Tp9Bd-TNndwhht@^44Z4V0OL(gDew4AXC+>5SS!)MYC#GbPwq&lej#Fb#50<)Y zSDLpsy<4_h1NIS1$W0R2aQTYm)RG<=PzeoBcMk?VvMjbGk`6X`R@XG-V7tvqnVZ=O zg}eBh)2+?P%%GiNA0jp2qH2g|y>P1q7V&WeyDV%~yZ)A>mFl5gL#Y%?V!`1?wk0x( z8|Fx1x6^DLP9T2tio;6VlHL77gJchOwGLnx#@<79-Ll0?GNTiimLssX(do_5df6_n zJ=E1zk2NEWqy!5s=)$ork?z50Qd7sG_1CWJ>S{`K_gOuSX$%S0fXq%S+h_MQTPdp- z8%qy|ri{MM1i_h~x`k#MCa2BvShjp}B8NR9D<&t>Q16jhIZ2rYkIbq`$}IQDte&LI z3Xja1Ny@DB$gG{D%qow}x=G5c_Q)hADYM2Sb7+z>YdtdElaxUpBtzw8PR&k1sj<7; z8qD&9lG)RqNcZy8Qp}#MVk9GH|Fk)o?x93aPZv@Q&Pkj4SiC2n6z{NmkqY%9Nk|VR zQouUwAtVUWKG$Iu;nJEuY`ZHM7PGoeqzoCC!1jU%(=glBl4d)5+$xggt`RqAt$HC+ z%YvGLVjva;VM3-X(=xv{b8_ac(^wC0br&{hK;L;M*EtLv(Vf7q-KDZwNfrk%=T!y^ z`p%-f+qF&KuZY>QtPON^6lFt+wA^)NNaeI`3GD31hq{VTl_p^wJ!0)l98*;~cXElG zKGDXVIN#MnLpW7oQ7dHu2k;KZ2Ht}*GB-dZ)p%>R8$UqN2#zf9Zt4TQhv-xru&m%o z)b~;hPlW2}6y9FNAk~$Z?*Nwr8Rp4C`fA~9@Nl+K5_?Xaw+C6_~z zP83>aYu?bd8(*F0nqj%?IpryOb316rXyI)KeSgEfcgoxT8}7dr<-a5yrsE@eAH&gri3Bnh@Z&htiVn;* z8~?aX6=5CdhlPJUU&id)DyH6sf4nBdXfI$28oHq&JAQwstF?iB*9|_7X|xYr33z}# z#l0B03XEexL$MT(Q4d-lg2wSA+;wWwZ7eHDOhW(kHuT4a=QtKJdiJn;vI@KHv&U~0d&X(2!OPDcJ|_0H zAqvKksNJr|trIOd;(s2+F{4I%i1!j6e-+`hVJAvF`VQo_iVuf?bL{bo$Z^WvRI$+w zn|M|QiW z-aAJ|jN*_zva8U-SZn-i*5Azzfa~lb78<(UP>(to2@@_P8T_0qnIsm&7TRd+HV^3QPn#S_Ur1fC6EyV5U9*mK>T<0B+*Vv0z zuddhB59~GEk5?W;Zy#wPX9N@bikiG08Y@fo?pNcC`%q!D#`f6Ay|FOTZZ7T3hbNgK zX9}&3<=acrrq1lfzo!`OtubQks5dU&K#vW1+kL}));ihPeWmE5=^W1^$CdiWieR-% zsvVoxnL5c*vv^a_dtpYe>&hQCRwW0kkR|yI*KsClW41YxoATbI?$0Q9cOmG;9=MSz zy@`Q085=zX)KaLHMb{O@-Efyk+5B>EE0{9YSiW(Fd`fNWF}TTr^EmO~D?2iad`t+b419&62DUbwSmyy2m0HBZ@wiNl$S_UFye&2v-T3y!nbG!&wK z^aMN%c{P&@(~GVuNQ|5(WAYc}x?|Zi#)`f|`DVQ59b>kGFOC+n%SlAQQIry%pnNY|$dkPH*;_H%{0$I}s!>nKnhKsBJr*hk_zr?sT^?C} z?q<_bX!49sV?oDAA52n%_KKPpPEatmVqM(EOoo>l`0Ico8EbAC$F;|i}Qf@ zp=j>21>?u^^&i%ZSL%|PUbNDU9;Y$lGxxYRwEpzQ>hoUn|HMXX()U~5k;ECh2hIHt z&U^W~d#?Q9&B1Mvk5ll!-*#Z{td$q<4hE)2E6iwR7~jt@qLnyVXP^|0R^rz}fQNlC z{0?*=5-EN*6KcS$tCzn36ihe5>SAhjvy{478l9)md7^oqXr33=bqm5%DPUACo*G>+ zHCi2AHq~^MG$^SCk!ldB23Km8s#_&>IB5@CSA~P*Gb-0j4Vs`DQ-cD-5!JyB(#=LC zwxOI1jYl`&+oRK?Ek?943NrM7lQGfUD4Ino65XIJu2xE_HQK7sR>Sbe3?st83;Xj}<^~Yk(cFh3r6tka z6XCF_D@#Fq0y=$0BodizP-)Zg{sczNy_PiafbchvO=E5}_cebYn)`Z5jH0=JLa^n& zZ-jZc(IqNl9nst~^X5*iH~ehfe2PTogY#c~AtQ`GvjnVjXL7(qb3YX&KjW~O%Y$cz z;GSsiH>i4{d@5pTdh~V!DoR2|^!Abf`FQv$*xX-B4Tv~JcF!D)aID|$HJ-l zKd;dLdAk4e!sY>k+6xCrU$5T#`S>KhWW^C|srsAhDEPfW`@JD-=I$`)#)3E8^M|jOC$7NRh^7>dUS+a4CoShPaK(W- zJL$BhQQOfny~*aQrWgKD=IDDZyE| z{cS{D23-&JZ8#umIj@)UAe75lTO#a^9sK#hZGk+Qm;^dF;x`)S!u$=5sk)#i# zzFs{lnoboGEN)taZR66kSsX19wNAUOGK!VlMK5=Ec9&4hZDMnk%nX}71y!&&hC>h% za?mW}Wa9Qp)RxLM+88eNMH{iLgBWd`U5fP!xo%@P+NcY<#tfF~91y8MB-#kOL;~M( zqh`|1(EC>1`_{18YS8SuT`isYW86#KlpH^gvle@PWLmz855{8k;jf%T zStgdRiGeqQFM)NsUsA$0%6A0#Jrs)O&s)d-$GKQ+dHwPgMAZf@YH3;3vSss{Ez25L zHa9I>xpGVWvURK1Y+klyO+!mlV)MCc zs^^#8_QfyH2T%9a2lims$sB0x!FN9JMFO0xx19s+NgTS>Sx4poPU+&z^05PXLcZ$< z3MKo{EeGTvc7awm*mH;-^GE)97C$-Wej@KcDdu7$u3T62>B2e2W_-tnzknuR*Rm}6 z#u_udycl|>7P0?-br&WasRJgQs4397WkvC@*@?%{P^>zWd@uVVy?aN zuyqSwi>VWk^WjMGL7&lzfc{(h^6GD;w#Can}434oce9MnEVFLpQj7{oO}KM0Hl_ejsO4v literal 18432 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 diff --git a/Projects/TerraTech/TerraTech/obj/Debug/TerraTech.pdb b/Projects/TerraTech/TerraTech/obj/Debug/TerraTech.pdb index 8e79d6c4e7a6d22e42d003deea46db6ab1adf70f..2d8d1e78e64e7ffa6ebe6b8104814defabcab319 100644 GIT binary patch literal 69120 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 w{$BR#2ffK(VVdds>uv=F|2QL0Xzdt`%zvQl8 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 Xy;^!-;e8tD(?FjF`ZVx<)xiG;;2-ZR