Files
HolodoriCalc/src/lib/engine/awakening-requirements.ts
T
2026-08-20 18:07:26 +09:00

22 lines
686 B
TypeScript

export type CardAwakeningState = {
owned?: boolean;
awakening?: number;
};
function normalizeAwakening(value: unknown): number {
return Math.max(0, Math.min(5, Number.isFinite(value) ? Math.round(Number(value)) : 0));
}
/**
* 현재 보유 상태에서 목표 개화까지 필요한 횟수.
* 미보유 카드를 처음 획득하는 과정은 1회의 개화로 계산한다.
*/
export function additionalAwakeningsRequired(
state: CardAwakeningState | undefined,
targetAwakening: number
): number {
const target = normalizeAwakening(targetAwakening);
if (state?.owned !== true) return target + 1;
return Math.max(0, target - normalizeAwakening(state.awakening));
}