Respect storm sector for rides into mobile stronghold
Verify and publish checkpoint container / container (push) Failing after 10m28s

This commit is contained in:
Quintine committed 2026-10-29 07:33:59 +11:00
1 parent 0d55333d5d
commit ac1f32c859
11 files changed
+324 -3

No files matched your search

+10 -1
View File
@@ -665,6 +665,7 @@ import { choamGholaEvent, choamGholaSkillOfferEvent, choamGholaSkillSignature, c
import { quoteAdvisorPreparationWindow, quoteAdvisorPreparation, validateAdvisorPreparation, projectAdvisorPreparationWindow, AdvisorPreparationError, type AdvisorPreparationWindow, type AdvisorPreparationSource } from './advisor-preparation-window';
import { quoteFremenRevivalGrant, validateFremenRevivalGrant, projectFremenRevivalGrant, projectFremenGroupRevivalGrant, FremenRevivalGrantError, type FremenRevivalGrantSource } from './fremen-revival-grant';
import { richeseRevealInterruptSupported } from './richese-reveal-interruption';
import { wormRideDestinationBlock } from './worm-ride-destination';
import { splitOrdinaryPayments, type OrdinaryPayment } from './ordinary-payment-plan';
import {
charityAmount,
@@ -14655,7 +14656,11 @@ function greatMakerRideOptions(g: Game, owner: string) {
if (frame?.stage !== 'ride' || p.faction !== 'fremen' ||
p.fremenNexusWormBlockedTurn === g.turn) return null;
const destinations = gameTerritories(g).flatMap(t => t.sectors.flatMap(sector => {
try { allowedEntry(g,p,t.id,sector); return [{territory:t.id,name:t.name,sector}]; }
try {
allowedEntry(g,p,t.id,sector);
if (wormRideDestinationBlock(g,t.id,sector)) return [];
return [{territory:t.id,name:t.name,sector}];
}
catch (error) { if (error instanceof RuleError) return []; throw error; }
}));
return {max:p.reserves,eliteMax:p.elites?.reserves ?? 0,destinations};
@@ -14758,6 +14763,8 @@ function decideGreatMakerRide(g: Game, p: Player, action: Action) {
const amount = integer(action.amount,1,p.reserves,'Riding forces');
const elite = eliteChoice(amount,p.reserves,p.elites?.reserves ?? 0,action.elite);
allowedEntry(g,p,to,sector);
const stormBlock = wormRideDestinationBlock(g,to,sector);
requireRule(!stormBlock, stormBlock ?? 'That worm-ride destination is in storm.');
withdrawNativeReserves(g,p,amount,elite);
place(p,to,sector,amount,elite);
frame.arrival = {territory:to,sector,amount,elite};
@@ -45334,6 +45341,8 @@ function applyActionInner(
'Choose another destination territory.',
);
allowedEntry(g, p, to, sector);
const stormBlock = wormRideDestinationBlock(g, to, sector);
requireRule(!stormBlock, stormBlock ?? 'That worm-ride destination is in storm.');
const sandmaster = action.sandmasterCollect
? sandmasterWormCollection(g, p.id, to, sector, decision, action.sandmasterPile as string | undefined) : null;
if (action.sandmasterCollect) {