Support Basic allied No-Field transit
Verify and publish checkpoint container / container (push) Canceled after 0s

This commit is contained in:
Quintine committed 2026-10-28 22:44:26 +11:00
1 parent 50c6201d33
commit 8083598cef
9 files changed
+282 -14

No files matched your search

+11 -3
View File
@@ -1,4 +1,5 @@
import { liveMovementExpressionPromises } from './movement-expression-promises';
import { isAlliedShipmentVisit } from './allied-separation';
import { discoveryBotActions } from './discovery-options';
import { normalAuctionHandBlock } from './normal-auction';
import { atreidesFullPlanAction } from './atreides-full-plan';
@@ -3565,6 +3566,9 @@ function policyActions(g: GameView): Action[] {
to.t !== MOBILE_STRONGHOLD &&
!territoryEntryBlock(g.players, me.id, to.t),
);
const markerShipmentTargets = targets.filter(to => to.t !== MOBILE_STRONGHOLD &&
!territoryEntryBlock(g.players, me.id, to.t, false,
!g.advanced && isAlliedShipmentVisit(g, me, to.t)));
if (noField?.canShip && ownNoField && !deployed && !me.shipped) {
const tokens = ownNoField.tokens.filter(
(token) => token.id !== ownNoField.lastShipped,
@@ -3594,10 +3598,11 @@ function policyActions(g: GameView): Action[] {
}
}
if (selected)
for (const to of markerTargets.slice(0, 24)) {
for (const to of markerShipmentTargets.slice(0, 24)) {
const smuggler = !!quoteSmugglerNoField(g, me.id, to.t);
const companions = noField.homeworldForcesEnabled && me.reserves > (smuggler ? 1 : 0) ? [1, 0] : [0];
for (const amount of companions) {
if ((amount > 0 || smuggler) && isAlliedShipmentVisit(g, me, to.t)) continue;
const group = quoteRicheseHomeworldForces({ enabled: !!noField.homeworldForcesEnabled,
reserves: me.reserves, amount, smuggler });
if (Math.min(selected.value, me.reserves) + group.physical === 0 && to.enemy > 0) continue;
@@ -4505,10 +4510,13 @@ export function botActions(g: GameView): Action[] {
g.phase === 5 && g.active === me.id && me.shipped && me.moved === 0) {
// Depart from shared groups before unrelated moves; do not retain a
// sentinel that the ending alliance constraint would send to Tanks.
const departures = actions.filter(action => action.type === 'move' &&
const marker = g.richeseNoField?.private?.deployed;
const markerTerritory = marker && isBoardNoFieldLocation(marker.location) ? territory(marker.location.territory).name : null;
const departures = actions.filter(action => action.type === 'move' && (
typeof action.from === 'string' &&
(territory(splitLocation(action.from).territory).name === g.basicAlliedShipment?.territory ||
advancedDepartures?.includes(territory(splitLocation(action.from).territory).name)));
advancedDepartures?.includes(territory(splitLocation(action.from).territory).name)) ||
!!action.noField && !!g.basicAlliedShipment?.noField && markerTerritory === g.basicAlliedShipment.territory));
if (departures.length) return departures;
}
const ghola = standaloneGholaAction(g, actions);