import { controllerStrongholdTarget, physicalControllerCount, type TwoPlayerControllers, } from './two-player-controllers'; /** GF9's optional two-member alliance / three-stronghold variant. The * two-person four-stronghold rule still applies, as do ordinary solo targets. * Callers add any separately agreed increase after this base target. */ export function allianceVictoryTarget( seats: readonly string[], controllers: TwoPlayerControllers | null | undefined, allied: boolean, shortAlliance?: boolean, ): 3 | 4 { if (shortAlliance !== undefined && typeof shortAlliance !== 'boolean') throw new TypeError('Choose whether the shorter alliance victory option is enabled.'); const target = controllerStrongholdTarget(seats, controllers, allied); if (shortAlliance === true && allied && physicalControllerCount(seats, controllers) >= 3) return 3; return target; }