using System; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Configuration; using BepInEx.Logging; using HarmonyLib; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: TargetFramework(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("0.0.0.0")] [module: UnverifiableCode] namespace DSPAfterburner; [BepInPlugin("Appun.DSP.plugin.Afterburner", "DSPAfterburner", "0.0.5")] [HarmonyPatch] public class DSPAfterburner : BaseUnityPlugin { public class LogManager { public static ManualLogSource Logger; } public static ConfigEntry speedMultiplier; public static ConfigEntry maximumSpeed; public static ConfigEntry KeyConfig; public void Awake() { LogManager.Logger = ((BaseUnityPlugin)this).Logger; Harmony.CreateAndPatchAll(Assembly.GetExecutingAssembly(), (string)null); speedMultiplier = ((BaseUnityPlugin)this).Config.Bind("general", "speedMultiplier", 2.5f, "Speed Multiplier 速度の倍率"); maximumSpeed = ((BaseUnityPlugin)this).Config.Bind("general", "maximumSpeed", 100f, "Maximum Speed 最大速度"); KeyConfig = ((BaseUnityPlugin)this).Config.Bind("general", "KeyConfig", (KeyCode)304, "Key Setting キー設定"); } [HarmonyPrefix] [HarmonyPatch(typeof(PlayerMove_Fly), "GameTick")] public static bool PlayerMove_Fly_GameTick_Prefix(PlayerMove_Fly __instance) { //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0013: Invalid comparison between Unknown and I4 //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Unknown result type (might be due to invalid IL or missing references) //IL_0039: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Unknown result type (might be due to invalid IL or missing references) //IL_0042: Unknown result type (might be due to invalid IL or missing references) //IL_0047: Unknown result type (might be due to invalid IL or missing references) //IL_0048: Unknown result type (might be due to invalid IL or missing references) //IL_0049: Unknown result type (might be due to invalid IL or missing references) //IL_004a: Unknown result type (might be due to invalid IL or missing references) //IL_004f: Unknown result type (might be due to invalid IL or missing references) //IL_0053: Unknown result type (might be due to invalid IL or missing references) //IL_0058: Unknown result type (might be due to invalid IL or missing references) //IL_005a: Unknown result type (might be due to invalid IL or missing references) //IL_005c: Unknown result type (might be due to invalid IL or missing references) //IL_005d: Unknown result type (might be due to invalid IL or missing references) //IL_0062: Unknown result type (might be due to invalid IL or missing references) //IL_0063: Unknown result type (might be due to invalid IL or missing references) //IL_0074: Unknown result type (might be due to invalid IL or missing references) //IL_0079: Unknown result type (might be due to invalid IL or missing references) //IL_008b: Unknown result type (might be due to invalid IL or missing references) //IL_0090: Unknown result type (might be due to invalid IL or missing references) //IL_0095: Unknown result type (might be due to invalid IL or missing references) //IL_00a2: Unknown result type (might be due to invalid IL or missing references) //IL_00a8: Invalid comparison between Unknown and I4 //IL_00e0: Unknown result type (might be due to invalid IL or missing references) //IL_00e6: Invalid comparison between Unknown and I4 //IL_00cd: Unknown result type (might be due to invalid IL or missing references) //IL_00d2: Unknown result type (might be due to invalid IL or missing references) //IL_01a1: Unknown result type (might be due to invalid IL or missing references) //IL_01a7: Invalid comparison between Unknown and I4 //IL_0113: Unknown result type (might be due to invalid IL or missing references) //IL_0124: Unknown result type (might be due to invalid IL or missing references) //IL_0129: Unknown result type (might be due to invalid IL or missing references) //IL_012e: Unknown result type (might be due to invalid IL or missing references) //IL_0132: Unknown result type (might be due to invalid IL or missing references) //IL_0137: Unknown result type (might be due to invalid IL or missing references) //IL_0149: Unknown result type (might be due to invalid IL or missing references) //IL_014e: Unknown result type (might be due to invalid IL or missing references) //IL_014f: Unknown result type (might be due to invalid IL or missing references) //IL_0154: Unknown result type (might be due to invalid IL or missing references) //IL_0158: Unknown result type (might be due to invalid IL or missing references) //IL_015d: Unknown result type (might be due to invalid IL or missing references) //IL_015e: Unknown result type (might be due to invalid IL or missing references) //IL_016f: Unknown result type (might be due to invalid IL or missing references) //IL_0174: Unknown result type (might be due to invalid IL or missing references) //IL_0186: Unknown result type (might be due to invalid IL or missing references) //IL_018b: Unknown result type (might be due to invalid IL or missing references) //IL_0190: Unknown result type (might be due to invalid IL or missing references) //IL_0105: Unknown result type (might be due to invalid IL or missing references) //IL_010a: Unknown result type (might be due to invalid IL or missing references) //IL_01ec: Unknown result type (might be due to invalid IL or missing references) //IL_024c: Unknown result type (might be due to invalid IL or missing references) //IL_0252: Invalid comparison between Unknown and I4 //IL_0333: Unknown result type (might be due to invalid IL or missing references) //IL_0339: Invalid comparison between Unknown and I4 //IL_057a: Unknown result type (might be due to invalid IL or missing references) //IL_057f: Unknown result type (might be due to invalid IL or missing references) //IL_05a4: Unknown result type (might be due to invalid IL or missing references) //IL_05aa: Invalid comparison between Unknown and I4 //IL_0452: Unknown result type (might be due to invalid IL or missing references) //IL_0458: Invalid comparison between Unknown and I4 //IL_048c: Unknown result type (might be due to invalid IL or missing references) //IL_0528: Unknown result type (might be due to invalid IL or missing references) //IL_06b6: Unknown result type (might be due to invalid IL or missing references) //IL_06bc: Invalid comparison between Unknown and I4 //IL_0788: Unknown result type (might be due to invalid IL or missing references) //IL_0792: Unknown result type (might be due to invalid IL or missing references) //IL_0852: Unknown result type (might be due to invalid IL or missing references) //IL_0857: Unknown result type (might be due to invalid IL or missing references) //IL_0866: Unknown result type (might be due to invalid IL or missing references) //IL_086b: Unknown result type (might be due to invalid IL or missing references) //IL_07cd: Unknown result type (might be due to invalid IL or missing references) //IL_07d9: Unknown result type (might be due to invalid IL or missing references) //IL_07e4: Unknown result type (might be due to invalid IL or missing references) //IL_07e9: Unknown result type (might be due to invalid IL or missing references) //IL_07ed: Unknown result type (might be due to invalid IL or missing references) //IL_07f9: Unknown result type (might be due to invalid IL or missing references) //IL_07fe: Unknown result type (might be due to invalid IL or missing references) //IL_0803: Unknown result type (might be due to invalid IL or missing references) //IL_080e: Unknown result type (might be due to invalid IL or missing references) //IL_080f: Unknown result type (might be due to invalid IL or missing references) //IL_0811: Unknown result type (might be due to invalid IL or missing references) //IL_0816: Unknown result type (might be due to invalid IL or missing references) //IL_081a: Unknown result type (might be due to invalid IL or missing references) //IL_081f: Unknown result type (might be due to invalid IL or missing references) //IL_0820: Unknown result type (might be due to invalid IL or missing references) //IL_0825: Unknown result type (might be due to invalid IL or missing references) //IL_0829: Unknown result type (might be due to invalid IL or missing references) //IL_082e: Unknown result type (might be due to invalid IL or missing references) //IL_0832: Unknown result type (might be due to invalid IL or missing references) //IL_0837: Unknown result type (might be due to invalid IL or missing references) //IL_083b: Unknown result type (might be due to invalid IL or missing references) //IL_0842: Unknown result type (might be due to invalid IL or missing references) //IL_0847: Unknown result type (might be due to invalid IL or missing references) //IL_08a0: Unknown result type (might be due to invalid IL or missing references) //IL_08a5: Unknown result type (might be due to invalid IL or missing references) //IL_08a9: Unknown result type (might be due to invalid IL or missing references) //IL_08b0: Unknown result type (might be due to invalid IL or missing references) //IL_08b5: Unknown result type (might be due to invalid IL or missing references) //IL_08bc: Unknown result type (might be due to invalid IL or missing references) //IL_08c2: Unknown result type (might be due to invalid IL or missing references) //IL_08c7: Unknown result type (might be due to invalid IL or missing references) //IL_08cc: Unknown result type (might be due to invalid IL or missing references) //IL_0913: Unknown result type (might be due to invalid IL or missing references) //IL_0915: Unknown result type (might be due to invalid IL or missing references) //IL_091b: Unknown result type (might be due to invalid IL or missing references) //IL_091c: Unknown result type (might be due to invalid IL or missing references) //IL_0921: Unknown result type (might be due to invalid IL or missing references) //IL_0923: Unknown result type (might be due to invalid IL or missing references) //IL_0925: Unknown result type (might be due to invalid IL or missing references) //IL_0927: Unknown result type (might be due to invalid IL or missing references) //IL_092c: Unknown result type (might be due to invalid IL or missing references) //IL_08e3: Unknown result type (might be due to invalid IL or missing references) //IL_08e7: Unknown result type (might be due to invalid IL or missing references) //IL_08ec: Unknown result type (might be due to invalid IL or missing references) //IL_0a03: Unknown result type (might be due to invalid IL or missing references) //IL_0a04: Unknown result type (might be due to invalid IL or missing references) //IL_0a09: Unknown result type (might be due to invalid IL or missing references) //IL_0a0b: Unknown result type (might be due to invalid IL or missing references) //IL_0a31: Unknown result type (might be due to invalid IL or missing references) //IL_0a33: Unknown result type (might be due to invalid IL or missing references) //IL_0a35: Unknown result type (might be due to invalid IL or missing references) //IL_0aa2: Unknown result type (might be due to invalid IL or missing references) //IL_0aa7: Unknown result type (might be due to invalid IL or missing references) //IL_0ab8: Unknown result type (might be due to invalid IL or missing references) //IL_0ac2: Unknown result type (might be due to invalid IL or missing references) //IL_0ac7: Unknown result type (might be due to invalid IL or missing references) //IL_0ad8: Unknown result type (might be due to invalid IL or missing references) //IL_0add: Unknown result type (might be due to invalid IL or missing references) //IL_0aee: Unknown result type (might be due to invalid IL or missing references) //IL_0af8: Unknown result type (might be due to invalid IL or missing references) //IL_0afd: Unknown result type (might be due to invalid IL or missing references) //IL_0a80: Unknown result type (might be due to invalid IL or missing references) float num = 1f / 60f; if ((int)((PlayerAction)__instance).player.movementState == 2) { Vector3 forward = ((Component)((PlayerAction)__instance).controller.mainCamera).transform.forward; Vector3 val = ((PlayerAction)__instance).player.position; Vector3 normalized = ((Vector3)(ref val)).normalized; val = Vector3.Cross(normalized, forward); Vector3 normalized2 = ((Vector3)(ref val)).normalized; forward = Vector3.Cross(normalized2, normalized); Vector3 val2 = forward * ((PlayerAction)__instance).controller.input0.y + normalized2 * ((PlayerAction)__instance).controller.input0.x; if (((int)((PlayerAction)__instance).controller.cmd.type == 5 && !VFInput._godModeMechaMove && !PlayerController.operationWhenBuild) || __instance.navigation.navigating) { val2 = Vector3.zero; } bool flag = (int)((PlayerAction)__instance).controller.actionBuild.blueprintMode > 0; if (flag) { if (!VFInput._godModeMechaMove) { val2 = Vector3.zero; } else { val = Vector3.Cross(normalized, ((Component)((PlayerAction)__instance).controller.mainCamera).transform.up); normalized2 = ((Vector3)(ref val)).normalized; val = Vector3.Cross(((Component)((PlayerAction)__instance).controller.mainCamera).transform.right, normalized); forward = ((Vector3)(ref val)).normalized; val2 = forward * ((PlayerAction)__instance).controller.input0.y + normalized2 * ((PlayerAction)__instance).controller.input0.x; } } PlanetData localPlanet = GameMain.localPlanet; bool flag2 = localPlanet != null && (int)localPlanet.type != 5; float softLandingRecover = ((PlayerAction)__instance).controller.softLandingRecover; softLandingRecover *= softLandingRecover; float num2 = 0.022f * softLandingRecover; float num3 = ((PlayerAction)__instance).player.mecha.walkSpeed * 2.5f; if (Input.GetKey(KeyConfig.Value)) { num3 *= speedMultiplier.Value; if (num3 > maximumSpeed.Value) { num3 = maximumSpeed.Value; } } float num4 = ((PlayerAction)__instance).controller.input1.y; if (((int)((PlayerAction)__instance).controller.cmd.type == 5 && !VFInput._godModeMechaMove && !PlayerController.operationWhenBuild) || __instance.navigation.navigating) { num4 = 0f; } if (flag && !VFInput._godModeMechaMove) { num4 = 0f; } if (__instance.navigation.navigating) { bool flag3 = false; bool flag4 = false; __instance.navigation.DetermineHighOperation(num3, ref flag3, ref flag4); num4 = 0f; if (flag3) { num4 += 1f; } if (flag4 && __instance.targetAltitude > 15.01f + num * 20f) { num4 += -1f; } } __instance.targetAltitude += num4 * num * 20f; if ((int)((PlayerAction)__instance).controller.cmd.type == 5 && !PlayerController.operationWhenBuild && __instance.targetAltitude > 40f) { __instance.targetAltitude = 40f; } if (flag && !VFInput._godModeMechaMove && __instance.targetAltitude > 40f) { __instance.targetAltitude = 40f; } if (num4 == 0f && __instance.targetAltitude > 15f) { __instance.targetAltitude -= num * 20f * 0.3f; if (__instance.targetAltitude < 15f) { __instance.targetAltitude = 15f; } } else if (__instance.targetAltitude >= 50f) { if (__instance.currentAltitude > 49f && ((PlayerAction)__instance).controller.horzSpeed > 12.5f && __instance.mecha.thrusterLevel >= 2) { if ((int)((PlayerAction)__instance).controller.cmd.type == 5) { ((CommandState)(ref ((PlayerAction)__instance).controller.cmd)).SetNoneCommand(); ((PlayerAction)__instance).controller.actionBuild.blueprintMode = (EBlueprintMode)0; } ((PlayerAction)__instance).controller.movementStateInFrame = (EMovementState)3; ((PlayerAction)__instance).controller.actionSail.ResetSailState(); GameCamera.instance.SyncForSailMode(); GameMain.gameScenario.NotifyOnSailModeEnter(); } __instance.targetAltitude = 50f; } if (flag2) { if (__instance.targetAltitude < 14.5f) { if (num4 > 0f) { __instance.targetAltitude = 15f; } else { __instance.targetAltitude = 1f; } if (__instance.currentAltitude < 3f) { ((PlayerAction)__instance).controller.movementStateInFrame = (EMovementState)0; ((PlayerAction)__instance).controller.softLandingTime = 1.2f; } } } else if (__instance.targetAltitude < 20f) { __instance.targetAltitude = 20f; } float realRadius = ((PlayerAction)__instance).player.planetData.realRadius; val = ((PlayerAction)__instance).player.position; float num5 = Mathf.Max(((Vector3)(ref val)).magnitude, realRadius * 0.9f); __instance.currentAltitude = num5 - realRadius; if ((int)localPlanet.type == 5 && __instance.mecha.coreEnergy < 10000000.0 && __instance.currentAltitude < 10f) { __instance.targetAltitude = __instance.currentAltitude + 0.5f; } float num6 = __instance.targetAltitude - __instance.currentAltitude; float num7 = Mathf.Clamp(num / (Time.fixedDeltaTime + 1E-05f), 0.16f, 6f); if (__instance.targetAltitude > 17f || __instance.targetAltitude < 13f) { num7 = 1f / num7; num7 = Mathf.Sqrt(num7); } __instance.verticalThrusterForce = 0f; float num8 = Mathf.Clamp(num6 * 0.5f, -10f, 10f) * 100f * num7 + (float)((VectorLF3)(ref ((PlayerAction)__instance).controller.universalGravity)).magnitude; num8 = Mathf.Max(0f, num8); __instance.verticalThrusterForce += num8; float num9 = 1f; if ((int)localPlanet.type == 5 && __instance.mecha.coreEnergy < 120000000.0) { num9 = Mathf.Clamp01((float)(__instance.mecha.coreEnergy / 120000000.0 + 0.05)); } __instance.verticalThrusterForce *= num9; __instance.UseThrustEnergy(ref __instance.verticalThrusterForce, ((PlayerAction)__instance).controller.vertSpeed, (double)num); __instance.verticalThrusterForce /= num9; float num10 = (float)(Math.Sin(GlobalObject.timeSinceStart * 2.0) * 0.1 + 1.0); if (Mathf.Abs(__instance.verticalThrusterForce) > 0.001f) { ((PlayerAction)__instance).controller.AddLocalForce(normalized * (__instance.verticalThrusterForce * num10)); } OrderNode currentOrder = ((PlayerAction)__instance).player.currentOrder; if (currentOrder != null && !currentOrder.targetReached) { Vector3 val3 = ((Vector3)(ref currentOrder.target)).normalized * localPlanet.realRadius; val = ((PlayerAction)__instance).player.position; Vector3 val4 = val3 - ((Vector3)(ref val)).normalized * localPlanet.realRadius; float magnitude = ((Vector3)(ref val4)).magnitude; val = Vector3.Cross(normalized, val4); val = Vector3.Cross(((Vector3)(ref val)).normalized, normalized); val4 = ((Vector3)(ref val)).normalized; __instance.rtsVelocity = Vector3.Slerp(__instance.rtsVelocity, val4 * num3, num2); } else { __instance.rtsVelocity = Vector3.MoveTowards(__instance.rtsVelocity, Vector3.zero, num * 6f * num3); } if (__instance.navigation.navigating) { __instance.navigation.DetermineHighVelocity(num3, num2, ref __instance.moveVelocity, num); } else { __instance.moveVelocity = Vector3.Slerp(__instance.moveVelocity, val2 * num3, num2); } Vector3 val5 = __instance.moveVelocity + __instance.rtsVelocity; if ((double)softLandingRecover > 0.9) { val5 = Vector3.ClampMagnitude(val5, num3); } __instance.UseFlyEnergy(ref val5, __instance.mecha.walkPower * (double)num * (double)((PlayerAction)__instance).controller.softLandingRecover); Vector3 val6 = Vector3.Dot(val5, normalized) * normalized; val5 -= val6; float num11 = ((PlayerAction)__instance).controller.vertSpeed; if (num11 > 50f) { num11 = 50f; } float num12 = Mathf.Lerp(0.95f, 0.8f, Mathf.Abs(num6) * 0.3f); float num13 = num12; num12 = Mathf.Lerp(1f, num12, Mathf.Clamp01(__instance.verticalThrusterForce)); num13 = Mathf.Lerp(1f, num13, Mathf.Clamp01(__instance.verticalThrusterForce) * Mathf.Clamp01((float)(__instance.mecha.coreEnergy - 5000.0) * 0.0001f)); if (num11 > 0f) { num11 *= num12; } else if (num11 < 0f) { num11 *= num13; } ((PlayerAction)__instance).controller.velocity = num11 * normalized + val5; if (((Vector3)(ref val2)).sqrMagnitude > 0.25f) { ((PlayerAction)__instance).controller.turning_raw = Vector3.SignedAngle(val5, val2, normalized); } else { ((PlayerAction)__instance).controller.turning_raw = 0f; } if (flag2 && __instance.mecha.coreEnergy < 10000.0) { ((PlayerAction)__instance).controller.movementStateInFrame = (EMovementState)0; ((PlayerAction)__instance).controller.softLandingTime = 1.2f; } ((PlayerAction)__instance).controller.actionWalk.rtsVelocity = __instance.rtsVelocity; ((PlayerAction)__instance).controller.actionWalk.moveVelocity = __instance.moveVelocity * 0.5f; ((PlayerAction)__instance).controller.actionDrift.rtsVelocity = __instance.rtsVelocity; ((PlayerAction)__instance).controller.actionDrift.moveVelocity = __instance.moveVelocity * 0.5f; } return false; } }