Connect group allied transit custody
Verify and publish checkpoint container / container (push) Successful in 10m27s
Verify and publish checkpoint container / container (push) Successful in 10m27s
This commit is contained in:
1 parent
ea3b21f92c
commit
4798a3579b
5 files changed
+152
-23
No files matched your search
@@ -101,14 +101,14 @@ export function makeBasicAlliedShipment(
|
||||
...(allies.length > 1 ? { allies: witnesses } : {}) };
|
||||
}
|
||||
|
||||
/** Quote physical visitors remaining alongside a current ally; territory is an ID. */
|
||||
export function quoteBasicAlliedShipment(
|
||||
/** A live witness is also needed for a concealed zero-force marker. */
|
||||
export function basicAlliedShipmentHasWitness(
|
||||
context: ShipmentContext & Readonly<{ turn: number }>, player: ShipmentPlayer,
|
||||
visit: BasicAlliedShipment | null | undefined,
|
||||
): { territory: string; normal: number; elite: number } | null {
|
||||
): boolean {
|
||||
const allies = currentShipmentAllies(context, player);
|
||||
if (!visit || context.advanced || context.phase !== 5 || visit.player !== player.id ||
|
||||
visit.turn !== context.turn) return null;
|
||||
visit.turn !== context.turn) return false;
|
||||
if (visit.allies !== undefined) {
|
||||
if (context.coalitionState === undefined || !Array.isArray(visit.allies) || !visit.allies.length ||
|
||||
visit.allies.some(id => typeof id !== 'string' || !id || id === player.id) ||
|
||||
@@ -119,7 +119,15 @@ export function quoteBasicAlliedShipment(
|
||||
// For group receipts the original witnesses may leave while another current
|
||||
// ally remains, so consider the complete current membership instead.
|
||||
const candidates = visit.allies === undefined ? allies.filter(id => id === visit.ally) : allies;
|
||||
if (!presentShipmentAllies(context, player, visit.territory, candidates).length) return null;
|
||||
return presentShipmentAllies(context, player, visit.territory, candidates).length > 0;
|
||||
}
|
||||
|
||||
/** Quote physical visitors remaining alongside a current ally; territory is an ID. */
|
||||
export function quoteBasicAlliedShipment(
|
||||
context: ShipmentContext & Readonly<{ turn: number }>, player: ShipmentPlayer,
|
||||
visit: BasicAlliedShipment | null | undefined,
|
||||
): { territory: string; normal: number; elite: number } | null {
|
||||
if (!visit || !basicAlliedShipmentHasWitness(context, player, visit)) return null;
|
||||
const pool = alliedShipmentPhysicalPool(player, visit.territory);
|
||||
const normal = Math.max(0, pool.normal - visit.baseline.normal);
|
||||
const elite = Math.max(0, pool.elite - visit.baseline.elite);
|
||||
|
||||
Reference in new issue
Block a user