Files
EscapistsReintroduced/docs/infantry-resupply-access.md

7.0 KiB

Physical magazine access

Before the single native magazine move is submitted, the recipient must have an unobstructed ray from their native aiming position to an authored truck storage-action context within four metres. The existing donor-origin distance, stopped truck, exact driver/force/stock ownership, compatibility and native storage-capacity checks remain mandatory.

Anchors come from the donor's enabled native ActionsManager: only contexts containing a SCR_OpenVehicleStorageAction whose exact owner is the donor qualify. Native world transforms must be valid and finite. The bounded scan accepts at most 64 contexts with at most 16 actions each. No guessed chassis coordinate or unknown fallback is accepted; donors without a qualifying root-owned context are unavailable for this first slice.

The WORLD|ENTS trace uses the existing successor camera collision layer. Its filter excludes only the exact donor/recipient and their owned entity descendants, bounded by the existing 32-parent identity walk. This lets an interior-authored cargo context work without the donor's shell blocking itself, while retaining walls, terrain, unrelated vehicles, characters and other external geometry as obstructions. Only a native fraction exactly equal to one qualifies; invalid, incomplete and nonfinite results fail closed. This is physical access qualification, not proof of a door-opening animation or AI pathfinding to the truck. The direct native fixture must distinguish controlled actor placement from a tested autonomous rendezvous.

A failed access check submits nothing and terminates that transaction. After a native operation has been accepted, the existing callback/exact-inventory proof and quarantine semantics apply; a later obstruction cannot cancel the accepted native operation or authorize a retry.

Tests execute the actual anchor selector, filter and trace guard, including owned-hull exclusion followed by external wall obstruction, unrelated vehicle child obstruction, missing/wrong native actions, invalid transforms, size limits, range and nonfinite ray results. The actual transaction test proves the guard precedes submission, fails terminally, and cannot retry/retrace an accepted operation. Native unobstructed transfer now has the controlled proof below; a native obstructed negative case remains untested.

Vanilla API reference hashes (SHA-256; independent code, no original protected content):

  • scripts/Game/generated/UserAction/BaseActionsManagerComponent.c: 02506e6267190d6c5ad9bc98127b128f7ba37b4a2af60d9d5ba88adb2006143a.
  • scripts/Game/generated/UserAction/UserActionContext.c: 4ef4d0744d5f66f267dae34b5fbb5424d661c95a87cef02fb5c11828a962c4a4.
  • scripts/Game/generated/UserAction/BaseUserAction.c: b28a4a9301cb057b434520391cf83082611be1e436fd3d26ed34cf23976bbac8.
  • scripts/Game/UserActions/SCR_OpenVehicleStorageAction.c: 1fe0052cdb15be15db896c66f977695df8639f0cececbb60e856455610c07c30.
  • scripts/Game/Global/Functions.c, native filter return semantics: 1dfbad5b1d13595cc3ea4c4cee25e00bfad3f71f2797ca94e81235536f05c5f8.

Finite planning and fixture coverage

The stock/planning regression executes the actual coordinator, inventory deduplication and HQ reservation bodies. It covers duplicate/malformed enumeration, captured-stock limits, looted and late-added items, original/released recipients, failed reservations, report replay, cooldowns and exact-token cleanup. No production defect was found in those planning rules.

The explicit infantry-transfer Workbench fixture uses the automatically created convoy and its existing cargo. It reserves one original patrol, holds the original ammo truck, then positions one still-owned actor beside its authored storage access for a controlled transaction test. It creates no soldiers or ammunition. This fixture tests the native transfer boundary only; it must not be presented as automatic rendezvous or pathfinding proof. Cleanup restores the actor only while original identity, authority and the exact reservation are retained and no accepted native move remains unresolved. User/player conversions, transfers, stale mission state and foreign tokens prevent a restore.

Native diagnostics and compatibility

The initial refusal and Ural diagnostic retain the original 32-context implementation. The actual vanilla ammo Ural exposes 37 root contexts: 36 from its base prefab and one cargo context. The bound is now 64; executable regressions accept 37 and 64 with the qualifying action last, and reject 65. Native root-owned storage actions bind to the two door-handle contexts. No child-manager scan or ownership relaxation is needed.

The next refusal found both valid anchors but could not establish controlled actor reach. A pose diagnostic proved all four candidate body volumes clear: immediately after SetOrigin, however, native AimingPosition still described the original distant patrol position. The fixture now waits at least 250 milliseconds and a subsequent tick before checking access, with four candidates total. Every temporary move is tracked for identity-safe restoration, including interrupted placement; the production reach guard is unchanged.

Read-only vanilla prefab audit hashes (SHA-256):

  • Prefabs/Vehicles/Wheeled/Ural4320/Ural4320.et: 44ca060ee551ff1ba0b96afc6d65e20c264712bd9ef568b22df7b30f864e8f19.
  • Prefabs/Vehicles/Wheeled/Ural4320/Ural4320_ammo.et: 8255edc908a9a0cdd70e59e520fe14ed501f4a9341df75b0bb883148c014e9b9.
  • Prefabs/Vehicles/Core/Vehicle_AmmoBox_Base.et: a656e897024c26ba960a51010d71cf6929c0108ab6fcc1c9476b94db973c111a.
  • Prefabs/Vehicles/Core/Configs/Actions/OpenVehicleStorageAction.conf: 197fb0b9411661f9e932dae9a7745fa5ca530c8c670a0d71c4a47ee981171e49.

Successful controlled native transfer

The 091854 checkpoint completes 43 assertions and one scripted round, with no script/runtime failures. After the fixture waits for native pose update, the unchanged production access guard passes and the real native inventory callback plus exact destination parent/storage ownership confirm one transferred magazine. Donor count decreases by one, recipient count increases by one, ammunition count remains unchanged and the force ledger gains no entry. The original automatic convoy, original cargo and original patrol actor are used.

Launch-source and installed dependency fingerprints remain unchanged; private muted-session cleanup is confirmed. Four installed external localization errors retain failed strict qualification. The recipient is deliberately positioned, so this proves neither a complete HQ radio/rendezvous trip nor autonomous navigation, wall refusal inside the native engine, manual play, multiplayer or performance. Earlier refused runs remain archived.