From ce4238df1ad891902320d7a4f6060f42e9d657b3 Mon Sep 17 00:00:00 2001 From: siimav <1120038+siimav@users.noreply.github.com> Date: Thu, 14 May 2026 02:43:44 +0300 Subject: [PATCH] Award ignition DU upon leaving prelaunch --- TestFlightFailure_IgnitionFail.cs | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/TestFlightFailure_IgnitionFail.cs b/TestFlightFailure_IgnitionFail.cs index 76f381c..6f2cdfc 100644 --- a/TestFlightFailure_IgnitionFail.cs +++ b/TestFlightFailure_IgnitionFail.cs @@ -29,6 +29,9 @@ public class TestFlightFailure_IgnitionFail : TestFlightFailure_Engine [KSPField(isPersistant=true)] public int numIgnitions = 0; + [KSPField(isPersistant=true)] + private float pendingIgnitionDU = 0f; + private readonly Dictionary engineRunData = new Dictionary(8); private static bool dynPressureReminderShown; @@ -206,6 +209,14 @@ public override void OnUpdate() if (!TestFlightEnabled) return; + if (pendingIgnitionDU > 0f && vessel.situation != Vessel.Situations.PRELAUNCH) + { + if (verboseDebugging) + Log($"IgnitionFail: Awarding deferred ignition DU on liftoff: {pendingIgnitionDU:F4}"); + core.ModifyFlightData(pendingIgnitionDU, true); + pendingIgnitionDU = 0f; + } + Profiler.BeginSample("TestFlight.IgnitionFail"); double currentTime = Planetarium.GetUniversalTime(); double deltaTime = (float)(currentTime - previousTime) / 1d; @@ -655,11 +666,19 @@ private void OnIgnition() if (core.GetFlightData() == core.GetInitialFlightData() && (vessel.situation != Vessel.Situations.PRELAUNCH || awardDuInPreLaunch)) //Only award DU on the first ignition of each flight, and only when not attached to launch clamps. { float ignitionDU = Mathf.Max(duSucceed, core.GetMaximumData() / 40); - if (verboseDebugging) + if (vessel.situation == Vessel.Situations.PRELAUNCH) + { + // Defer the DU award until the vessel actually lifts off + pendingIgnitionDU = ignitionDU; + if (verboseDebugging) + Log($"IgnitionFail: Deferring successful ignition DU until liftoff: {ignitionDU:F4}"); + } + else { - Log($"IgnitionFail: Awarding successful ignition DU: {ignitionDU:F4}"); + if (verboseDebugging) + Log($"IgnitionFail: Awarding successful ignition DU: {ignitionDU:F4}"); + core.ModifyFlightData(ignitionDU, true); //Award DU for first successful ignition } - core.ModifyFlightData(ignitionDU, true); //Award DU for first successful ignition } } }