binmat
Version:
binmat simulator
14 lines (13 loc) • 703 B
JavaScript
import { doCombat } from "./doCombat.js"
import { StatusCode, Role } from "./shared.js"
import "@samual/lib/shuffle"
function doMoveCombat(state, lane) {
if (state.turn >= state.turns) return { status: StatusCode.MadeMoveOnFinishedGame }
if ((state.turn % 2) + 1 == Role.Defender) return { status: StatusCode.DefenderInitiatedCombat }
if (!state.attackerStacks[lane].length) return { status: StatusCode.AttackerInitiatedCombatWithEmptyStack }
const combatResult = doCombat(state, lane)
return combatResult.status == StatusCode.AttackerWin ?
combatResult
: (state.turn++, state.turn == state.turns ? { ...combatResult, status: StatusCode.DefenderWin } : combatResult)
}
export { doMoveCombat }