24 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			24 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| 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);
 | |
|         }
 | |
|     }
 | |
| } |