Include the current addon, terrain integrations, tools, regression tests and recorded development evidence.
92 lines
4.0 KiB
JSON
92 lines
4.0 KiB
JSON
{
|
|
"scope": "Read-only source-bound review of optional WORKBENCH refuel fixture reach; no native run or source changes.",
|
|
"sources": [
|
|
{
|
|
"path": "/tmp/erri-vanilla-stock/scripts/Game/generated/UserAction/ExtBaseInteractionHandlerComponent.c",
|
|
"sha256": "a44163366b35447bfa64d844d027ae10be98485fc288c44375abadc59bff38f5",
|
|
"references": [
|
|
{
|
|
"line": 113,
|
|
"text": "event protected bool DoIntersectCheck(IEntity controlledEntity);"
|
|
},
|
|
{
|
|
"line": 66,
|
|
"text": "proto external int GetNearbyAvailableContextList(out notnull array<UserActionContext> outContexts);"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"path": "/tmp/erri-vanilla-stock/scripts/Game/Interactions/SCR_InteractionHandlerComponent.c",
|
|
"sha256": "4273c266067eb965a3e4269d53be6e75cd20978ef8d1c0e7accc1d0be52bd354",
|
|
"references": [
|
|
{
|
|
"line": 330,
|
|
"text": "protected override event bool CanContextChange(UserActionContext currentContext, UserActionContext newContext)"
|
|
},
|
|
{
|
|
"line": 353,
|
|
"text": "float visRange = currentContext.GetVisibilityRange(GetVisibilityRange());"
|
|
},
|
|
{
|
|
"line": 357,
|
|
"text": "float sqDistance = vector.DistanceSq(currentContext.GetOrigin(), m_ControlledEntity.GetOrigin());"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"path": "/tmp/erri-vanilla-stock/scripts/Game/generated/UserAction/UserActionContext.c",
|
|
"sha256": "4ef4d0744d5f66f267dae34b5fbb5424d661c95a87cef02fb5c11828a962c4a4",
|
|
"references": [
|
|
{
|
|
"line": 39,
|
|
"text": "proto external float GetRadius();"
|
|
},
|
|
{
|
|
"line": 41,
|
|
"text": "proto external float GetHeight();"
|
|
},
|
|
{
|
|
"line": 43,
|
|
"text": "proto external bool IsCapsule();"
|
|
},
|
|
{
|
|
"line": 51,
|
|
"text": "proto external float GetVisibilityRange(float globalRange);"
|
|
},
|
|
{
|
|
"line": 57,
|
|
"text": "proto external bool IsInVisibilityAngle(vector position);"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"path": "/home/jakub/devel/escapistsrereintroduced/addons/core/Scripts/Game/ERR/40_Chat/ERR_NativeMaintenanceProbe.c",
|
|
"sha256": "2a4a06944034726b2dac5ae06ddb465d23f1541e986ce9cfeebffaf045b60a31",
|
|
"references": [
|
|
{
|
|
"line": 71,
|
|
"text": "vector ApproachPosition()"
|
|
},
|
|
{
|
|
"line": 144,
|
|
"text": "protected bool AtAction()"
|
|
},
|
|
{
|
|
"line": 148,
|
|
"text": "if (vector.Distance(m_Player.GetOrigin(), m_Context.GetOrigin()) > Math.Min(3, m_Context.GetRadius())) return false;"
|
|
},
|
|
{
|
|
"line": 78,
|
|
"text": "return ERR_Actors.Ground(point + direction * Math.Min(0.75, m_Context.GetRadius() * 0.5));"
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"finding": "Fixture AtAction uses distance from player entity origin to action context origin <= min(3, context.GetRadius()). SDK documents context radius as the ray/intersection selection shape (DoIntersectCheck); native CanContextChange uses context.GetVisibilityRange(handler.GetVisibilityRange()) for player-distance interaction retention. These are distinct bounds; this review does not establish the complete native admission algorithm.",
|
|
"geometric_consequence": "ApproachPosition grounds player feet below the context origin. If that vertical difference exceeds the context radius, its spherical AtAction check cannot pass at any horizontal offset. The fixture also ignores authored capsule height.",
|
|
"evidence_limit": "docs/evidence/native-2026-10-01-refuel-clock proves original finite can transfer callback/custody and held equip, then timeout before tank depletion/action. No context radius, player/context positions or IsInVisibilityAngle result were logged. Exact cause of that timeout remains unresolved; do not infer an ordinary player refuelling failure.",
|
|
"changes": [],
|
|
"native_runs": 0,
|
|
"ordinary_refuelling_failure_demonstrated": false
|
|
}
|