Support typed Advanced Truthtrance shipment commitments
Extend the existing reserve-shipment promise pipeline to base Advanced games without Guild or optional modules. Share scope between parser, save validation and UI. Reuse canonical Ghola normal/elite revival eligibility and retain live BG conversion responses while proving conditional private feasibility. Hide future-price guidance until pending responses finish. Show exact Sardaukar/Fedaykin allocation in private executable steps. Validation: types, lint and all 4,192 offline tests pass; production build and all 40 HTTP tests pass. 41 focused shipment tests include 15 new cases covering genuine Advanced setup, all five non-Guild factions and four bot profiles, typed Ghola quota, BG allowance/cancellation/alternatives, private views, saved continuations and production SQLite duplicate races. Independent review found and resolved optional-module scope and pending price-guidance issues. Browser rooms EUZZ8D4M and GWNCVCAP verified an AI No route and human Yes with four-force/one-Sardaukar Ghola then six-force shipment. Phone settlement controls and refresh passed. Both existing browser room hashes/versions preserved through HTTP tests; 30 rooms added. Full source-bound report: 20260913-advanced-shipment-final; fingerprint 6c2f29d9b3e61bf6b9544ee3a95c47538abfb05e1c3b2ae9d0a603ef0cef38dd Broad checks ran once after focused fixes/review. No full-game AI study or complete Advanced mode acceptance is claimed; all existing release gates and pending Guild settlement questions remain intact.
This commit is contained in:
1 parent
6e26ba5daa
commit
32791ed5e2
14 files changed
+902
-38
No files matched your search
+3
-3
@@ -1,5 +1,6 @@
|
||||
import { shipmentAvailable } from './shipment-opportunity';
|
||||
import type { ShipmentClaim } from './shipment-promises';
|
||||
import { shipmentPromiseModeSupported } from './shipment-promises';
|
||||
import { TERRITORIES } from './board';
|
||||
import {
|
||||
parseCardCountFact,
|
||||
@@ -141,8 +142,7 @@ function parseQuestion(g: Game, asker: string, value: unknown): TruthQuestion {
|
||||
);
|
||||
if (v.kind === 'shipment') {
|
||||
check(
|
||||
!g.advanced &&
|
||||
!g.expansions.length &&
|
||||
shipmentPromiseModeSupported(g) &&
|
||||
g.status === 'playing' &&
|
||||
g.phase === 5 &&
|
||||
g.active === v.target &&
|
||||
@@ -151,7 +151,7 @@ function parseQuestion(g: Game, asker: string, value: unknown): TruthQuestion {
|
||||
!g.decision &&
|
||||
!g.phaseOpening &&
|
||||
!g.pendingShipment,
|
||||
'Automatic shipment promises currently support the active unused shipment in the Basic game without expansions. Finish any pending decision first.',
|
||||
'Structured shipment promises currently support base Basic games and base Advanced games without Guild or optional modules, during the active unused shipment. Finish any pending decision first.',
|
||||
);
|
||||
check(
|
||||
typeof v.territory === 'string' &&
|
||||
|
||||
Reference in new issue
Block a user