Support sector-specific Truthtrance shipments
This commit is contained in:
1 parent
8006e53580
commit
536d334543
27 files changed
+1121
-71
No files matched your search
@@ -117,7 +117,8 @@ const config: MixedActionConfig<TurnActionLeaf> = {
|
||||
Amal conditions count an actual accepted future printed play in this original phase opening.
|
||||
Earlier plays, disposal, other roles and recovery alone do not count. The condition closes with this opening.
|
||||
Amal halves available cash before ordinary payments become legal; preserve enough remaining cash for any payment condition.
|
||||
Shipment conditions concern the single future original reserve shipment after the answer.
|
||||
Shipment conditions concern the single future original reserve shipment after the answer. Choose any sector or one exact printed sector;
|
||||
a different sector in the same territory does not satisfy an exact-sector condition.
|
||||
Ground-movement conditions use the maximum physical forces in one actual future move to that destination; smaller moves never add together.
|
||||
Bid conditions close with their named ordinary lot; Revival conditions close with your native Revival opportunity.
|
||||
Shipment and movement close at your own Movement turn end, while payment conditions last until the actual turn ends.
|
||||
@@ -429,10 +430,34 @@ const config: MixedActionConfig<TurnActionLeaf> = {
|
||||
<label htmlFor={`${id}-territory`}>{value.kind === 'ship' ? 'Reserve-shipment destination' : 'Ground-movement destination'}</label>
|
||||
<select id={`${id}-territory`} value={TERRITORIES.some(destination => destination.id === value.territory) ? value.territory : ''}
|
||||
disabled={disabled} aria-invalid={!TERRITORIES.some(destination => destination.id === value.territory)}
|
||||
onChange={event => onChange({ ...value, territory: event.currentTarget.value })}>
|
||||
onChange={event => {
|
||||
const destination = event.currentTarget.value;
|
||||
// An exact sector belongs to its printed territory. Selecting a
|
||||
// different territory returns to the explicit any-sector choice.
|
||||
if (value.kind === 'ship') onChange({ kind: 'ship', territory: destination, minimum: value.minimum });
|
||||
else onChange({ ...value, territory: destination });
|
||||
}}>
|
||||
<option value="">Choose a printed Arrakis territory</option>
|
||||
{TERRITORIES.map(destination => <option key={destination.id} value={destination.id}>{destination.name}</option>)}
|
||||
</select>
|
||||
{value.kind === 'ship' && (() => {
|
||||
const printed = TERRITORIES.find(destination => destination.id === value.territory);
|
||||
return <>
|
||||
<label htmlFor={`${id}-sector`}>Shipment sector</label>
|
||||
<select id={`${id}-sector`} disabled={disabled} value={value.sector === undefined ? '' : String(value.sector)}
|
||||
aria-invalid={value.sector !== undefined && !printed?.sectors.includes(value.sector)} onChange={event => {
|
||||
const chosen = event.currentTarget.value;
|
||||
if (chosen === '') onChange({ kind: 'ship', territory: value.territory, minimum: value.minimum });
|
||||
else {
|
||||
const sector = Number(chosen);
|
||||
if (printed?.sectors.includes(sector)) onChange({ ...value, sector });
|
||||
}
|
||||
}}>
|
||||
<option value="">Any sector in this territory</option>
|
||||
{printed?.sectors.map(sector => <option key={sector} value={sector}>Sector {sector}</option>)}
|
||||
</select>
|
||||
</>;
|
||||
})()}
|
||||
</>}
|
||||
{'minimum' in value && <>
|
||||
<label htmlFor={`${id}-minimum`}>{value.kind === 'payment' ? 'Minimum future ordinary payments in spice'
|
||||
|
||||
Reference in new issue
Block a user