Implement seeker projectile patchers

This commit is contained in:
David Majdandžić
2023-04-11 23:53:07 +02:00
parent 3e5ada5aff
commit 15b35f7904
7 changed files with 36 additions and 2 deletions

View File

@@ -32,6 +32,9 @@ namespace TerraTech {
public static ConfigEntry<float> wheelTorqueMultiplier; public static ConfigEntry<float> wheelTorqueMultiplier;
public static ConfigEntry<float> wheelSpeedMultiplier; public static ConfigEntry<float> wheelSpeedMultiplier;
public static ConfigEntry<float> jetThrustMultiplier; public static ConfigEntry<float> jetThrustMultiplier;
public static ConfigEntry<float> seekingProjectileVisionConeAngleMultiplier;
public static ConfigEntry<float> seekingProjectileVisionRangeMultiplier;
public static ConfigEntry<float> seekingProjectileTurningSpeedMultiplier;
public void Awake() { public void Awake() {
xpMultiplier = Config.Bind("General", "XP Multiplier", 1f, new ConfigDescription("XP Multiplier", new AcceptableValueRange<float>(1f, 32f))); xpMultiplier = Config.Bind("General", "XP Multiplier", 1f, new ConfigDescription("XP Multiplier", new AcceptableValueRange<float>(1f, 32f)));
@@ -43,9 +46,15 @@ namespace TerraTech {
new ConfigDescription("Heartbeat Interval Multiplier", new AcceptableValueRange<float>(0.1f, 2f))); new ConfigDescription("Heartbeat Interval Multiplier", new AcceptableValueRange<float>(0.1f, 2f)));
shootingSpeedMultiplier = Config.Bind("Weapons", "Shooting Speed Multiplier", 1f, shootingSpeedMultiplier = Config.Bind("Weapons", "Shooting Speed Multiplier", 1f,
new ConfigDescription("Shooting Speed Multiplier", new AcceptableValueRange<float>(0.5f, 8f))); new ConfigDescription("Shooting Speed Multiplier", new AcceptableValueRange<float>(0.2f, 8f)));
muzzleVelocityMultiplier = Config.Bind("Weapons", "Muzzle Velocity Multiplier", 1f, muzzleVelocityMultiplier = Config.Bind("Weapons", "Muzzle Velocity Multiplier", 1f,
new ConfigDescription("Muzzle Velocity Multiplier", new AcceptableValueRange<float>(1f, 32f))); new ConfigDescription("Muzzle Velocity Multiplier", new AcceptableValueRange<float>(0.2f, 32f)));
seekingProjectileVisionConeAngleMultiplier = Config.Bind("Weapons", "Seeking Projectile Cone Vision Angle Multiplier", 1f,
new ConfigDescription("Seeking Projectile Cone Vision Angle Multiplier", new AcceptableValueRange<float>(0.2f, 32f)));
seekingProjectileVisionRangeMultiplier = Config.Bind("Weapons", "Seeking Projectile Vision Range Multiplier", 1f,
new ConfigDescription("Seeking Projectile Vision Range Multiplier", new AcceptableValueRange<float>(0.2f, 32f)));
seekingProjectileTurningSpeedMultiplier = Config.Bind("Weapons", "Seeking Projectile Turn Speed Multiplier", 1f,
new ConfigDescription("Seeking Projectile Turn Speed Multiplier", new AcceptableValueRange<float>(0.2f, 32f)));
magnetStrenghtMultiplier = Config.Bind("Attractors", "Magnet Strength Multiplier", 1f, magnetStrenghtMultiplier = Config.Bind("Attractors", "Magnet Strength Multiplier", 1f,
new ConfigDescription("Magnet Strength Multiplier", new AcceptableValueRange<float>(1f, 16f))); new ConfigDescription("Magnet Strength Multiplier", new AcceptableValueRange<float>(1f, 16f)));

View File

@@ -0,0 +1,24 @@
using System;
using HarmonyLib;
namespace TerraTech {
public class SeekingProjectileManager {
[HarmonyPatch(typeof(SeekingProjectile), "OnSpawn")]
class Patch {
static void Postfix(SeekingProjectile __instance) {
Console.WriteLine("SeekingProjectile created");
SetField(__instance, "m_VisionConeAngle", Main.seekingProjectileVisionConeAngleMultiplier.Value * GetField(__instance, "m_VisionConeAngle"));
SetField(__instance, "m_VisionRange", Main.seekingProjectileVisionRangeMultiplier.Value * GetField(__instance, "m_VisionRange"));
SetField(__instance, "m_TurnSpeed", Main.seekingProjectileTurningSpeedMultiplier.Value * GetField(__instance, "m_TurnSpeed"));
}
}
private static float GetField(SeekingProjectile seekingProjectile, string field) {
return Traverse.Create(seekingProjectile).Field(field).GetValue() as float? ?? 0f;
}
private static void SetField(SeekingProjectile seekingProjectile, string field, float value) {
Traverse.Create(seekingProjectile).Field(field).SetValue(value);
}
}
}

View File

@@ -41,6 +41,7 @@
<Compile Include="MinerPropertiesManager.cs" /> <Compile Include="MinerPropertiesManager.cs" />
<Compile Include="Patches.cs" /> <Compile Include="Patches.cs" />
<Compile Include="Properties\AssemblyInfo.cs" /> <Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="SeekingProjectileManager.cs" />
<Compile Include="ThrusterPropertiesManager.cs" /> <Compile Include="ThrusterPropertiesManager.cs" />
<Compile Include="WeaponPropertiesManager.cs" /> <Compile Include="WeaponPropertiesManager.cs" />
<Compile Include="WheelPropertiesManager.cs" /> <Compile Include="WheelPropertiesManager.cs" />