import { CARDS } from "./game.ts";
import type { ClassId } from "./heroes.ts";
export const PACK_COST = 35;
export const PACK_SIZE = 5;
export const MIN_DECK_SIZE = 10;
export const MAX_DECK_SIZE = 80;
export function baseCardId(id: string): string {
return id.startsWith("+") ? id.slice(1) : id;
}
export function isCardForClass(id: string, klass: ClassId): boolean {
const card = CARDS[baseCardId(id)];
return Boolean(card && (card.klass === "any" || card.klass === klass));
}
export function cardCounts(cards: string[]): Record<string, number> {
const counts: Record<string, number> = {};
for (const id of cards) counts[id] = (counts[id] ?? 0) + 1;
return counts;
}
function pick<T>(items: T[]): T {
return items[Math.floor(Math.random() * items.length)];
}
export function openPack(klass: ClassId): string[] {
const pool = Object.values(CARDS).filter((card) =>
card.klass === "any" || card.klass === klass
);
const common = pool.filter((card) => !card.rare);
const rare = pool.filter((card) => card.rare);
return [
...Array.from({ length: PACK_SIZE - 1 }, () => pick(common).id),
pick(rare).id,
];
}