diff --git a/Projects/TerraTech/TerraTech/Class1.cs b/Projects/TerraTech/TerraTech/Class1.cs index 9bd8121..388a5cb 100644 --- a/Projects/TerraTech/TerraTech/Class1.cs +++ b/Projects/TerraTech/TerraTech/Class1.cs @@ -32,6 +32,9 @@ namespace TerraTech { public static ConfigEntry wheelTorqueMultiplier; public static ConfigEntry wheelSpeedMultiplier; public static ConfigEntry jetThrustMultiplier; + public static ConfigEntry seekingProjectileVisionConeAngleMultiplier; + public static ConfigEntry seekingProjectileVisionRangeMultiplier; + public static ConfigEntry seekingProjectileTurningSpeedMultiplier; public void Awake() { xpMultiplier = Config.Bind("General", "XP Multiplier", 1f, new ConfigDescription("XP Multiplier", new AcceptableValueRange(1f, 32f))); @@ -43,9 +46,15 @@ namespace TerraTech { 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))); + new ConfigDescription("Shooting Speed Multiplier", new AcceptableValueRange(0.2f, 8f))); muzzleVelocityMultiplier = Config.Bind("Weapons", "Muzzle Velocity Multiplier", 1f, - new ConfigDescription("Muzzle Velocity Multiplier", new AcceptableValueRange(1f, 32f))); + new ConfigDescription("Muzzle Velocity Multiplier", new AcceptableValueRange(0.2f, 32f))); + seekingProjectileVisionConeAngleMultiplier = Config.Bind("Weapons", "Seeking Projectile Cone Vision Angle Multiplier", 1f, + new ConfigDescription("Seeking Projectile Cone Vision Angle Multiplier", new AcceptableValueRange(0.2f, 32f))); + seekingProjectileVisionRangeMultiplier = Config.Bind("Weapons", "Seeking Projectile Vision Range Multiplier", 1f, + new ConfigDescription("Seeking Projectile Vision Range Multiplier", new AcceptableValueRange(0.2f, 32f))); + seekingProjectileTurningSpeedMultiplier = Config.Bind("Weapons", "Seeking Projectile Turn Speed Multiplier", 1f, + new ConfigDescription("Seeking Projectile Turn Speed Multiplier", new AcceptableValueRange(0.2f, 32f))); magnetStrenghtMultiplier = Config.Bind("Attractors", "Magnet Strength Multiplier", 1f, new ConfigDescription("Magnet Strength Multiplier", new AcceptableValueRange(1f, 16f))); diff --git a/Projects/TerraTech/TerraTech/SeekingProjectileManager.cs b/Projects/TerraTech/TerraTech/SeekingProjectileManager.cs new file mode 100644 index 0000000..7a41c5a --- /dev/null +++ b/Projects/TerraTech/TerraTech/SeekingProjectileManager.cs @@ -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); + } + } +} \ No newline at end of file diff --git a/Projects/TerraTech/TerraTech/TerraTech.csproj b/Projects/TerraTech/TerraTech/TerraTech.csproj index d2697b7..313c26e 100644 --- a/Projects/TerraTech/TerraTech/TerraTech.csproj +++ b/Projects/TerraTech/TerraTech/TerraTech.csproj @@ -41,6 +41,7 @@ + diff --git a/Projects/TerraTech/TerraTech/bin/Debug/TerraTech.dll b/Projects/TerraTech/TerraTech/bin/Debug/TerraTech.dll index 32a4821..2364d5c 100644 Binary files a/Projects/TerraTech/TerraTech/bin/Debug/TerraTech.dll and b/Projects/TerraTech/TerraTech/bin/Debug/TerraTech.dll differ diff --git a/Projects/TerraTech/TerraTech/bin/Debug/TerraTech.pdb b/Projects/TerraTech/TerraTech/bin/Debug/TerraTech.pdb index 2d8d1e7..7230ea2 100644 Binary files a/Projects/TerraTech/TerraTech/bin/Debug/TerraTech.pdb and b/Projects/TerraTech/TerraTech/bin/Debug/TerraTech.pdb differ diff --git a/Projects/TerraTech/TerraTech/obj/Debug/TerraTech.dll b/Projects/TerraTech/TerraTech/obj/Debug/TerraTech.dll index 32a4821..2364d5c 100644 Binary files a/Projects/TerraTech/TerraTech/obj/Debug/TerraTech.dll and b/Projects/TerraTech/TerraTech/obj/Debug/TerraTech.dll differ diff --git a/Projects/TerraTech/TerraTech/obj/Debug/TerraTech.pdb b/Projects/TerraTech/TerraTech/obj/Debug/TerraTech.pdb index 2d8d1e7..7230ea2 100644 Binary files a/Projects/TerraTech/TerraTech/obj/Debug/TerraTech.pdb and b/Projects/TerraTech/TerraTech/obj/Debug/TerraTech.pdb differ