Enable finite automatic convoy startup and scoped gunner skill
This commit is contained in:
@@ -52,3 +52,23 @@ An accepted pending request blocks all other group radio requests. Explicit fail
|
||||
Mortar groups explicitly opt out when HQ registers them: their existing readiness service owns gunner handsets and requires a dedicated physical RTO manpack. This prevents competing startup grants. Normal authored site/convoy radios are preserved by actual inventory inspection. HQ networking continues to derive capability solely from living physical carriers and inventories; fitting never declares a delivered report or invents a route.
|
||||
|
||||
Journal outcomes distinguish an already equipped group with zero requests, recorded native callback completion, physical capability observed after a request without proven insertion provenance, and unresolved pending timeout. `tests/test_enemy_radio.py` executes the actual radio service and equipment coordinator against native API doubles, including cross-group pending-carrier transfer, no selection reroll, existing equipment/loss, malformed inventory/roster, explicit failure, success after removal, callback ordering, deadline and mortar opt-out. `tests/test_enemy_equipment.py` retains its separate equipment lifecycle regressions. The [native call/memory run](evidence/native-2026-09-20-062203-radio-call-memory/report.json) compiles this service and completes 59 assertions, with all six site groups reporting existing radios and zero new requests. Actual physical routes and interruption are exercised. New compatible insertion and ordinary/multiplayer loss/capture behavior remain pending. Four external localization errors remain; there are no script/runtime failures in this run.
|
||||
|
||||
### Scoped convoy gunner skill
|
||||
|
||||
The existing mission-local combat binding already applies the owned extension's Expert (80) minimum to explicitly registered original military enemy actors, preserves higher settings, handles native reset and restores the pre-binding setting on release. The missing specialization now requests Cylon (100) only for a living original convoy turret occupant whose canonical task, consumed receipt, physical CONVOY ledger record, original member/seat pair and current native turret occupancy all agree. Driver and cargo occupants keep the ordinary minimum. Captured convoy groups are ineligible for equipment updates; cleanup restores our previous binding through the existing release path.
|
||||
|
||||
The owned original forces a sticky convoy-gunner flag to exactly 100. This adaptation deliberately checks present physical ownership instead: leaving that original turret returns the actor to their underlying requested skill (with the ordinary 80 minimum); re-entering the same original turret restores 100. Higher underlying settings survive both transitions. Replacement actors, replacement seats, released or stopped tasks, transferred actors and player occupants cannot gain this specialization. The original server-wide mutation hook is not imported.
|
||||
|
||||
Integration uses the existing equipment tick every three seconds, with no new scheduler. Native SetAISkill/ResetAISkill revalidate immediately. Native vehicle/capture state can therefore change between ticks; no continuous-frame guarantee is claimed. Existing release behavior removes the mission's previous contribution. No perception, aiming dispersion, target selection, force creation or equipment resources change.
|
||||
|
||||
Policy tests execute the actual helper, scoped combat binding and equipment coordinator against native doubles: 25 individual authority/identity/seat failures, capture, floor/reset, 90/100 preservation, dismount/reboard, restoration and tick cadence. The [current native automatic-convoy run](evidence/native-2026-09-20-081658-automatic-convoy/report.json) compiles all changes, observes all nineteen original seated crew at Expert or higher and five actual turret occupants at Cylon, and completes93 assertions/one round. Zero script/runtime failures; four external localization errors remain. Native dismount/reset/capture transitions and multiplayer remain untested.
|
||||
|
||||
Provenance (SHA-256; original inputs read-only):
|
||||
|
||||
- Owner `EAI_AIResponseSystem.c`, skill setters/reset/init only: `b3e1263e986837744a70fbaedaa6e57afae7f2981a21211d3a2066e2c63ac84d`.
|
||||
- Owner `EAI_SupplyConvoys.c`, original turret designation in FillSeats only: `a896fdacfd9c0f2db52e588642623545a3a5d6e8041fb72000a68e720fc2b7a5`.
|
||||
- Vanilla `scripts/Game/AI/Components/SCR_AICombatComponent.c`, Expert=80/Cylon=100 and native setter/reset semantics: `79919aaf106d2d79caa83c948586cf6c3d284bd4a1f8db2e92179a1921f25cee`.
|
||||
- Vanilla `scripts/GameCode/Vehicle/BaseCompartmentSlot.c`, native slot-to-root-vehicle lookup: `c08cca13bb083a211c3a04019bb9a05a7f07ef4d4ce1dbd7112fcce6e8924f4c`.
|
||||
- Vanilla `scripts/Game/generated/Vehicle/TurretCompartmentSlot.c`, exact native turret type: `f6916f771f4ba51c677093fc5e4d91fec42bbb2ec28947985670b57617b96543`.
|
||||
|
||||
No protected group lookup, original Escapists or ScrtCore implementation was read or reused.
|
||||
|
||||
Reference in New Issue
Block a user