Allow Sapho first while preserving unspent Guild timing
At a clean unstarted non-Guild movement boundary, Sapho FIRST now reorders the remaining turn queue and reopens the native Advanced Guild choice. Guild may take its turn ahead or wait while all non-Guild turns retain their relative order. Protect an already granted current Guild turn, keep canceled timing locked and preserve completed turns, payments and last protection. Existing discard continuations and minimal policy options need no new state or signature format. Explain the provisional precedence in the controls and reference. Validation:7-file97/97, types/lint/build and six original-action/rendered-table programmes. Actual cache1 Sapho, original Guild wait/take, paid completed Richese prefix, Emperor2/Guild1 shipments and native phase completion. An actually dealt Karama cancels TAKE without its privilege being revived; a granted current turn cannot be displaced. Four profiles make eight legal holder/Guild proposals. Corrected an obsolete first exclusion and a fixture that mistook a later response pass for a repeated movement turn; exact failures and then the whole batch pass. This nonconflicting composition is provisional. Actual competing first, partly completed turns, other ordered actions, direct combined Semuta claim/capture, full modes, final assurance and browser/deployed acceptance remain open. No saved-room/database/reset/restart/deployment operation.
This commit is contained in:
1 parent
84200ebc74
commit
2d89ddb6e1
10 files changed
+469
-16
No files matched your search
+3
-3
@@ -19580,8 +19580,8 @@ function saphoOptions(g: Game, p: Player): SaphoOption[] {
|
||||
if (
|
||||
!queue.remaining.some((id) => saphoMovementStarted(g, getPlayer(g, id))) &&
|
||||
!(
|
||||
g.advanced &&
|
||||
queue.remaining.some((id) => getPlayer(g, id).faction === 'guild')
|
||||
g.advanced && !g.guildTimingLocked && g.guildTimingGranted &&
|
||||
getPlayer(g, queue.current!).faction === 'guild'
|
||||
) &&
|
||||
queue.current !== p.id
|
||||
)
|
||||
@@ -19749,7 +19749,7 @@ function playSapho(g: Game, p: Player, action: Action) {
|
||||
const used = discard(g, p, 'richese-juice-of-sapho');
|
||||
log(
|
||||
g,
|
||||
`${p.name} discarded Juice of Sapho to take the ${option.mode} remaining combined shipment and movement turn${option.mode === 'last' ? ', including after the Spacing Guild' : ''}. Completed turns and physical storm order are unchanged.`,
|
||||
`${p.name} discarded Juice of Sapho to take the ${option.mode} remaining combined shipment and movement turn${option.mode === 'last' ? ', including after the Spacing Guild' : ''}. Completed turns and physical storm order are unchanged.${option.mode === 'first' && g.advanced && g.movementRemaining.some(id => id !== p.id && getPlayer(g, id).faction === 'guild') ? ' The Guild retains its next legal timing choice and may still take its turn before this reordered turn.' : ''}`,
|
||||
{ faction: p.faction, name: 'Juice of Sapho' },
|
||||
);
|
||||
if (g.semutaPreview) {
|
||||
|
||||
Reference in new issue
Block a user