Expand Semuta and Richese Homeworld shipments
Verify and publish checkpoint container / container (push) Successful in 10m7s
Verify and publish checkpoint container / container (push) Successful in 10m7s
This commit is contained in:
1 parent
1ba942138d
commit
4d769af8c7
15 files changed
+626
-39
No files matched your search
+10
-7
@@ -2605,7 +2605,7 @@ export type Game = {
|
||||
moritaniAssassinatePreview?: true;
|
||||
/** Explicit development-only neutral Semuta reaction profile. */
|
||||
semutaPreview?: true;
|
||||
/** Fresh Basic independent-card preview for Semuta after Recruits only. */
|
||||
/** Fresh Basic independent-card Semuta preview; scoped per discard source. */
|
||||
semutaRecruitsPreview?: true;
|
||||
moritaniAssassinate?: MoritaniAssassinateState;
|
||||
moritaniAssassinateCallEvents?: string[];
|
||||
@@ -9520,7 +9520,10 @@ function semutaOfferSupported(
|
||||
if (continuation.kind === 'thumperDiscard' &&
|
||||
(g.summonedBeforeBlow || g.summonedWorm || g.wormRides.length > 0 ||
|
||||
g.pendingFremenMove || g.pendingIxMove || g.pendingChoamMove)) return false;
|
||||
return g.semutaPreview === true && g.status === 'playing' &&
|
||||
return (g.semutaPreview === true || g.semutaRecruitsPreview === true &&
|
||||
basicIndependentSemutaProfile(g) && continuation.kind === 'ordinaryCardDiscard' &&
|
||||
['hajr', 'ghola', 'harvester', 'weather', 'atomics'].includes(continuation.effect)) &&
|
||||
g.status === 'playing' &&
|
||||
g.players.some(p => p.faction === 'richese') &&
|
||||
entries.length > 0 &&
|
||||
(ambassadorDiscard || continuation.kind === 'kaitainDiscard' || continuation.kind === 'tupileCleanupDiscard' ||
|
||||
@@ -37304,15 +37307,15 @@ function homeworldShipmentQuote(g: Game, intent: HomeworldShipmentIntent & {rout
|
||||
'Homeworld No-Field shipment currently supports native Homeworld play without optional modules.');
|
||||
requireRule(!intent.route && !intent.guildSecretEvent && intent.sources && typeof intent.sources === 'object' &&
|
||||
!Array.isArray(intent.sources) &&
|
||||
(intent.noField.from === undefined ? Object.keys(intent.sources).length === 0 :
|
||||
Object.keys(intent.sources).every(source => source === intent.noField!.from)) &&
|
||||
Object.keys(intent.sources).every(source =>
|
||||
source === (intent.noField!.from ?? 'homeworld:richese')) &&
|
||||
p.noField && p.noFieldEvent === intent.noField.event &&
|
||||
(intent.noField.from !== undefined || p.noFieldBlockedTurn !== g.turn),
|
||||
'The original concealed Homeworld shipment is no longer available.');
|
||||
const marker = intent.noField.from === undefined
|
||||
? {...homeworldRule(() => quoteRicheseHomeworldMarkerShipment(context, g.homeworlds!.custody!,
|
||||
{player:intent.player,destination:intent.destination,tokenId:intent.noField!.tokenId},p.noField!)),
|
||||
state:g.homeworlds.custody, players:context.players, sources:[]}
|
||||
? homeworldRule(() => quoteRicheseHomeworldMarkerShipment(context, g.homeworlds!.custody!,
|
||||
{player:intent.player,destination:intent.destination,tokenId:intent.noField!.tokenId,
|
||||
...(Object.hasOwn(intent.sources, 'homeworld:richese') ? {forces:intent.sources['homeworld:richese']} : {})},p.noField!))
|
||||
: homeworldRule(() => quoteRicheseHomeworldMarkerTransfer(context, g.homeworlds!.custody!,
|
||||
{player:intent.player,destination:intent.destination,tokenId:intent.noField!.tokenId,source:intent.noField!.from!,
|
||||
...(Object.hasOwn(intent.sources, intent.noField!.from!) ? {forces:intent.sources[intent.noField!.from!]} : {})},p.noField!));
|
||||
|
||||
Reference in new issue
Block a user