Capture current mission, AI, map and administration development
Include the current addon, terrain integrations, tools, regression tests and recorded development evidence.
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
PROPOSAL ONLY; successor/reference untouched; no native launch.
|
||||
|
||||
Scope: at most TWO one-time PMN4 spawn attempts in each existing original admitted
|
||||
ammo truck. Quantity is a conservative successor allowance, not a copied convoy
|
||||
quantity. Owned EAI_Mines.STOCK is2 per soldier; original supply convoy only fills
|
||||
weapons/magazines, while original EAI_AmmoSupply.Fill dynamically fills requested
|
||||
mines (maximum96 spawned cargo items). Two spares support one original engineer's
|
||||
standard carried allowance without implementing recurring refill.
|
||||
|
||||
Files in fix.patch:
|
||||
- new ERR_ConvoyMineStock.c (task-owned optional initial batch and callback)
|
||||
- ERR_SupplyConvoyService.c (pin at IssueCargo, tick with existing original-owner guard)
|
||||
- ERR_SupplyConvoyTactics.c (task-owned ref, terminal Stop hook)
|
||||
- new tests/test_convoy_mine_stock.py
|
||||
Registration is a separate registration.patch because tools/check.py has prior edits.
|
||||
Copied ERR_HQ.c and ERR_MountedMagazineSeed.c are test inputs only, NOT patch files.
|
||||
|
||||
Primary weapon/magazine/mounted callbacks remain unchanged in task.Cargo. Optional
|
||||
mine requests wait until every primary callback is finished; no mine callback is
|
||||
inserted into that primary array. Normal InfantryResupply.Stock therefore never
|
||||
waits for optional mine operations. Mine requests use remaining actual128 inventory
|
||||
headroom and remaining128 combined primary+optional callback allowance. Magazine96
|
||||
limits and their priority remain unchanged. Refused submissions still consume an
|
||||
attempt; resource/capacity/ownership refusal never retries. One fixed90-second
|
||||
window begins on first tick; timeout/stop/capture/mode loss is terminal.
|
||||
|
||||
Native GetItem is valid for Spawn (SDK generated callback lines15-18). Vanilla
|
||||
SCR_AITakeItemFromArsenal_InventoryCallback lines12-15 resolves its RplId through
|
||||
Replication.FindItem/RplComponent.GetEntity. Only those exact successful native
|
||||
spawn identities can enter the final two-entry snapshot, after exact prefab,
|
||||
initial-item exclusion, reciprocal slot, original truck storage ownership, alive,
|
||||
collision handler and inactive pressure-trigger checks. No inventory-difference
|
||||
fallback. Duplicate callback items deduplicate. Missing/late/unsupported identities
|
||||
are omitted permanently. Physical uncertain items are preserved; callbacks remain
|
||||
retained by the task batch and cannot schedule new work or reopen its snapshot.
|
||||
|
||||
Count()/At() expose frozen INITIAL identities, not a validated current available
|
||||
stock count and not authority to transfer them. There is NO mine courier, no new
|
||||
spent ledger and no reservation claim in this slice. Future finite mine delivery
|
||||
must use these exact originals with the existing service's shared m_Spent and
|
||||
appropriate total-cap/mutual-exclusion checks. It cannot pass the magazine-only
|
||||
m_Stock to ERR_FiniteMagazineReservation and expect a mine to be accepted. Do not
|
||||
claim mine replenishment, physical delivery, native insertion or multiplayer proof.
|
||||
|
||||
Tests: four focused programs pass; logs and results.json alongside proposal.
|
||||
New actual-method harness covers the complete batch/callback methods, synchronous
|
||||
success with false return, missing/unknown primary callbacks, primary independence,
|
||||
128 item/callback limits, owner/mode/manager loss, fixed expiry then late callback,
|
||||
preexisting/foreign/armed/dead/non-PMN items, duplicate callback identity and freeze.
|
||||
Source hooks are checked directly; native Source/PAK validation remains future work.
|
||||
Reference in New Issue
Block a user