Resolve direct advanced Sneak arrivals
Verify and publish checkpoint container / container (push) Canceled after 0s

This commit is contained in:
Quintine committed 2026-10-29 19:48:35 +11:00
1 parent 8a39f5a172
commit b79e448deb
8 files changed
+213 -8

No files matched your search

+8 -2
View File
@@ -27887,6 +27887,9 @@ function sneakAttackOptions(
let blocked: string | null = null;
try {
allowedEntry(g, owner, entry.territory, entry.sector);
if (g.advanced && (entry.resume === 'wormRide' || g.pendingArrivalOverlap?.resume === 'wormRide' ||
g.pendingAmbassador?.resume === 'wormRide'))
blocked = 'Sneak Attack during a worm ride needs its original ride continuation; send no forces or leave the token hidden.';
} catch (error) {
if (!(error instanceof RuleError)) throw error;
blocked = error.message;
@@ -28168,7 +28171,10 @@ function decideTerror(g: Game, p: Player, action: Action) {
const revivalArrival: RevivalEntryParent | undefined = amount > 0 && entry.revivalArrival
? {event:entry.revivalArrival.event,terror:{event:entry.entrySignature!,owner:p.id,
territory:entry.territory,sector:entry.sector,amount,elite:0}} : undefined;
const advancedNativeOverlap = g.advanced && bareAdvancedNativeArrivalOverlap(g) && !!g.pendingArrivalOverlap;
// Worm continuations can advance the phase synchronously; their child
// arrival needs a separate retained worm cursor before it can be queued.
const advancedNativeArrival = g.advanced && entry.resume !== 'wormRide' &&
g.pendingArrivalOverlap?.resume !== 'wormRide' && g.pendingAmbassador?.resume !== 'wormRide';
if (caladan) (g.homeworldVictoryReinforcement!.terrorArrivals ??= []).push(caladan.receipt);
finishTerrorEntry(g);
if (caladan) {
@@ -28185,7 +28191,7 @@ function decideTerror(g: Game, p: Player, action: Action) {
phase:g.phase,revivalArrival,revivalSneakAdvisor:true});
return;
}
if (amount > 0 && (advancedNativeOverlap || !g.advanced &&
if (amount > 0 && (advancedNativeArrival || !g.advanced &&
(g.pendingArrivalOverlap || g.pendingAmbassador || g.pendingTerrorEntry || g.response || g.decision))) {
// The child may have opened the original Terror decision. Let it finish
// before offering advisor reactions for this already-committed group.