Complete concealed No-Field allied separation endings

This commit is contained in:
Quintine committed 2026-10-27 12:11:45 +11:00
1 parent 57a59c1663
commit e41abdaf2e
17 files changed
+569 -30

No files matched your search

+15 -4
View File
@@ -1,12 +1,23 @@
import type { GameView } from '@/game/engine';
/** The engine quote carries public locations only, never concealed force values. */
export function AdvancedAllySeparation({ quote }: {
export function AdvancedAllySeparation({ quote, basic = false }: {
quote: GameView['advancedAllySeparation'];
basic?: boolean;
}) {
if (!quote?.territories.length) return null;
return <output id="advanced-ally-separation" className="notice block">
Finishing now sends your forces in{' '}
{quote.territories.join(', ')} to Tanks under the Advanced alliance rule.
return <output id={basic ? 'basic-ally-separation' : 'advanced-ally-separation'} className="notice block">
{basic ? <>
Your ally’s Shipment and Movement turn is finished. Ending your turn now sends your forces in{' '}
{quote.territories.join(', ')} to Tanks under the Basic alliance rule.
</> : <>
Finishing now sends your forces in{' '}
{quote.territories.join(', ')} to Tanks under the Advanced alliance rule.
</>}
{quote.noField && <span className="mt-2 block">
Provisional No-Field consequence: at this ending deadline, reveal your marker and place its forces
using only available reserves, then send the actual revealed forces to Tanks. A zero marker creates
no counter. Your ally’s forces stay unchanged.
</span>}
</output>;
}
+3 -2
View File
@@ -5196,7 +5196,7 @@ export function GameTable({
{' '}and {g.basicAlliedShipment.elite} special visiting forces to Tanks, not your ally’s forces.
</p>
)}
<AdvancedAllySeparation quote={g.advancedAllySeparation} />
<AdvancedAllySeparation quote={g.advancedAllySeparation ?? g.basicAllySeparation} basic={!g.advanced} />
{g.nexusGuildCunning?.offer && (
<section className="notice">
<p>Guild Cunning ends your ordinary shipment and movement, then offers one second shipment at normal Guild prices. Only an unused Hajr move can follow it. Provisional card combination: Ornithopter can replace that unused Hajr movement; declaring Cunning abandons any unfinished current card group.</p>
@@ -5215,7 +5215,8 @@ export function GameTable({
!nexusGuildSkipShipmentAction(g, guildCunning.event))}
{actionButton(guildCunning?.stage === 'secondShipment' ? 'Decline second shipment and finish' :
guildCunning ? 'Finish Guild turn' : 'Finish shipment & movement', {type: 'endMovement'}, false,
g.advancedAllySeparation?.territories.length ? 'advanced-ally-separation' : undefined)}
g.advancedAllySeparation?.territories.length ? 'advanced-ally-separation' :
g.basicAllySeparation?.territories.length ? 'basic-ally-separation' : undefined)}
</>
) : (
<p className="muted">