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(); } } } }