59 lines
3.2 KiB
Markdown
59 lines
3.2 KiB
Markdown
# Starting-rifle investigation — 2026-10-26
|
|
|
|
The native Kolobok starting backpack rejects the full-length vanilla M16A2
|
|
(`3E413771E1834D2F`). The shorter M16A2 carbine with M203
|
|
(`EF73725A81669E2C`) fits with the map and pistol used in this test. This is not a
|
|
blanket rifle-type ban.
|
|
|
|
Baseline R1 ran the existing site preparation and real inventory code in an
|
|
isolated Workbench profile. The required map entered the backpack; the M16 was
|
|
rejected on each inspection. After 60 quarter-second polls the code deleted the
|
|
optional rifle and returned READY. This reproduces a 15-second inventory wait
|
|
and lost selected weapon, not a permanent mission-start failure.
|
|
|
|
The fix retains the exact rejected starting item as loose loot, looking for dry,
|
|
clear, reachable ground near the backpack. It does not create replacement items
|
|
or pull an item out of a storage that already owns it. If no nearby clear spot
|
|
exists, the item remains at its original starting-container spawn position.
|
|
The shared map remains mandatory, accepted asynchronous inventory moves are not
|
|
resubmitted, and normal inventory failures at non-starting sites remain errors.
|
|
|
|
Native evidence:
|
|
|
|
- `baseline/` (R1): original behavior, one M16; required map remains after the
|
|
rifle is removed, preparation completes at poll 60.
|
|
- `stock-fix/` (R2): the same small stock fixture completes at poll 2 (0.5 s),
|
|
without removing the rifle.
|
|
- `full-mission/` (R5): full ordinary mission preparation and player admission,
|
|
with one full-length M16, one M16/M203 carbine, one pistol and the mandatory
|
|
field map. The loose M16 is approximately 1.21 m from the backpack and appears
|
|
in the server spawn-scene snapshot. The carbine, pistol and map remain inside.
|
|
A native inventory operation then moves the exact loose M16 into the admitted
|
|
player's inventory; replicated slot/storage visibility is verified.
|
|
|
|
R3 also passed a full mission with one M16 and pistol. R4 exposed an incorrect
|
|
fixture assumption that the shorter carbine would also be rejected; the mission
|
|
itself started, but the fixture failed its loose-item assertion. R5 corrects that
|
|
assumption and verifies both fitting and non-fitting weapons together.
|
|
|
|
All recorded final runs compiled native scripts, reached `smoke-completed`,
|
|
kept source/dependency inputs unchanged and confirmed private-process cleanup.
|
|
The strict engine reporter still lists installed world-resource unknown-property
|
|
errors; see the raw runner output. These are local Workbench integration tests,
|
|
not dedicated multiplayer or physical mouse-input certification.
|
|
|
|
`tests/test_start_stock_overflow.py` executes the actual stock loop with boundary
|
|
substitutes for rejected/accepted/delayed/missing custom items, idempotence,
|
|
required-map failure, timeout and preservation of insertion request counts.
|
|
The transport test executes the extracted helper when checking readiness order.
|
|
The complete repository suite passed after the change; see `repository-checks.log`.
|
|
|
|
Reproduce the mixed-loadout/full-start/pickup test with:
|
|
|
|
```
|
|
python3 docs/evidence/starting-rifles-2026-10-26/isolated-runner.py UNIQUEID --full --carbine
|
|
```
|
|
|
|
The runner copies sources into `/tmp`, uses the existing private Tools prefix and
|
|
a fresh disposable profile, and does not touch a live server or installed addon.
|