返回提交历史
Modified
XFEEDToolBox.Core/Navigation/NativeSystemFlightControlDriver.cs
+3
-1
Modified
research/NativeAcceptance/CgTradeLoop.cs
+2
-1
XFEstudio/XFEEDToolBox
Resume travel promptly after verified departure and scene changes
Finish station departure when the original launch duty has ended, a current undock is confirmed, and the native FSD is ready without mass lock. Remove the redundant 7.5 km wait. Keep the existing bounded health-read wait around transient independent witness publication after hyperspace. Every input still requires a fresh witness; process or ownership mismatches remain terminal. Validation: 8 travel preparation and 2 selection/recovery regressions passed; isolated CLI publish passed. This follow-up is staged for the next workflow restart while the current empty approach continues.
240f20c
代码差异
2 个文件
+5
-2
@@ -108,7 +108,9 @@ public sealed class NativeSystemFlightControlDriver(int processId,string gameHas
108
108
if(engaged&&!active&&!state.Docked&&state.Navigation.UndockedAt>=started.AddSeconds(-1))
109
109
{
110
110
ownsLaunch=false;
111
if(frame.Mode==LocalFlightMode.Normal&&frame.FsdReady&&frame.TargetDistance>=7500)break;
111
// The original launch duty has ended and the live FSD
112
// observation already confirms mass-lock release.
113
if(frame.Mode==LocalFlightMode.Normal&&frame.FsdReady)break;
112
114
if(frame.Mode==LocalFlightMode.Normal)
113
115
{
114
116
var outward=(frame.Position-frame.TargetPosition).Unit();var aligned=Vector3d.AngleDegrees(frame.Forward,outward)<=5;
@@ -50,7 +50,7 @@ internal static class CgTradeLoop
50
50
}
51
51
async Task Check(CancellationToken token)
52
52
{
53
token.ThrowIfCancellationRequested();guardian.RequireReady(pid);var current=journal.State;
53
token.ThrowIfCancellationRequested();var current=journal.State;
54
54
if(!current.InGame||current.CommanderId!=initial.CommanderId||current.CurrentShipId!=initial.CurrentShipId||current.LoadGameAt!=initial.LoadGameAt
55
55
||NavigationSafety.HasExternalThreat(current)||NavigationSafety.UnhealthyHull(current))
56
56
throw new InvalidOperationException("Automatic trade session, ship or safety state changed.");
@@ -62,6 +62,7 @@ internal static class CgTradeLoop
62
62
{
63
63
try
64
64
{
65
guardian.RequireReady(pid);
65
66
var health=await channel.CallAsync(new{op="health.read"},token);var ship=health.GetProperty("shipHealth");
66
67
if(!health.GetProperty("localPlayerShipVerified").GetBoolean()||!ship.GetProperty("verified").GetBoolean()
67
68
||ship.GetProperty("hullFraction").GetDouble()<.5)throw new InvalidDataException("Fresh healthy main ship required.");