Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 22 additions & 3 deletions TestFlightFailure_IgnitionFail.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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<uint, EngineRunData> engineRunData = new Dictionary<uint, EngineRunData>(8);

private static bool dynPressureReminderShown;
Expand Down Expand Up @@ -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;
Expand Down Expand Up @@ -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
}
}
}
Expand Down
Loading