static bool Prefix(AutoPilot __instance)
    {
        if (CheesesAITweaks.settings.controlNoiseEnabled)
        {
            if (CheesesAITweaks.apToHelper.ContainsKey(__instance))
            {
                CheeseAIHelper helper = CheesesAITweaks.apToHelper[__instance];

                Traverse apTraverse = new Traverse(__instance);
                helper.lastAimTarget  = __instance.targetPosition;
                helper.lastRollTarget = apTraverse.Field("overrideRollTarget").GetValue <Vector3>();
                if (helper.CanApplyNoise())
                {
                    Vector3 output = helper.GetControlNoise();
                    __instance.targetPosition += output * (__instance.targetPosition - __instance.referenceTransform.position).magnitude;
                    apTraverse.Field("overrideRollTarget").SetValue(helper.lastRollTarget + output * helper.lastRollTarget.magnitude);

                    float outputThrottle = apTraverse.Field("outputThrottle").GetValue <float>() + helper.GetThottleNoise();
                    if (__instance.controlThrottle)
                    {
                        foreach (ModuleEngine moduleEngine in __instance.engines)
                        {
                            moduleEngine.SetThrottle(outputThrottle);
                        }
                    }
                }
            }
        }
        return(true);
    }
 static void Postfix(AutoPilot __instance)
 {
     if (CheesesAITweaks.settings.controlNoiseEnabled)
     {
         if (CheesesAITweaks.apToHelper.ContainsKey(__instance))
         {
             CheeseAIHelper helper     = CheesesAITweaks.apToHelper[__instance];
             Traverse       apTraverse = new Traverse(__instance);
             __instance.targetPosition = helper.lastAimTarget;
             apTraverse.Field("overrideRollTarget").SetValue(helper.lastRollTarget);
         }
     }
 }
 static void Postfix(AIPilot __instance)
 {
     if (CheesesAITweaks.settings.rockWingsOnContact || CheesesAITweaks.settings.dropTankMode == CheesesAITweaks.DropTankMode.DropOnContact)
     {
         if (CheesesAITweaks.aiToHelper.ContainsKey(__instance))
         {
             CheeseAIHelper helper = CheesesAITweaks.aiToHelper[__instance];
             if (__instance.commandState == AIPilot.CommandStates.Combat && helper.lastInCombat == false)
             {
                 helper.BeginContact();
             }
         }
     }
 }