Files
Dune/game/choam-market.ts
T
2026-09-08 07:37:52 +10:00

46 lines
1.4 KiB
TypeScript

import type { Card } from './cards';
export type ChoamMarket = {
owner: string;
resume: 'phase' | 'storm';
blocked: string[];
tradeAttempted?: boolean;
sale?: { card: string; witness?: string; price: number };
trade?: { ally: string; offered: string; returned?: string };
};
/** A duplicate is an exact printed card name, not merely the same battle role. */
export function saleOptions(hand: Card[], blocked: string[] = []) {
return hand.flatMap((card) => {
if (blocked.includes(card.id)) return [];
const witness = hand.find(
(other) => other.id !== card.id && other.name === card.name,
);
return [
...(witness ? [{ card: card.id, witness: witness.id, price: 3 }] : []),
...(card.kind === 'worthless'
? [{ card: card.id, witness: undefined, price: 2 }]
: []),
];
});
}
export function quoteSale(
hand: Card[],
cardId: unknown,
witnessId: unknown,
blocked: string[] = [],
) {
const card = hand.find((c) => c.id === cardId && !blocked.includes(c.id));
if (!card) return undefined;
if (witnessId) {
const witness = hand.find(
(c) => c.id === witnessId && c.id !== card.id && c.name === card.name,
);
return witness
? { card: card.id, witness: witness.id, price: 3 }
: undefined;
}
return card.kind === 'worthless'
? { card: card.id, witness: undefined, price: 2 }
: undefined;
}