UNPKG

binmat

Version:
88 lines (87 loc) 2.5 kB
export type State = { attackerStacks: [Card[], Card[], Card[], Card[], Card[], Card[]]; defenderStacks: [DefenderStack, DefenderStack, DefenderStack, DefenderStack, DefenderStack, DefenderStack]; laneDecks: [Card[], Card[], Card[], Card[], Card[], Card[]]; laneDiscardPiles: [Card[], Card[], Card[], Card[], Card[], Card[]]; attackerDeck: Card[]; attackerDiscardPile: Card[]; attackerHand: Card[]; defenderHand: Card[]; turn: number; turns: number; attackerPassedLastTurn: boolean; defenderPassedLastTurn: boolean; }; export type Card = `${CardValue}${CardSuit}`; export type CardValue = CardNumber | CardModifier; export type CardNumber = "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "a"; export declare const enum CardModifier { Trap = "@", Wild = "*", Bounce = "?", Break = ">" } export declare const enum CardSuit { Form = "&", Kin = "%", Data = "+", Chaos = "!", Void = "^", Choice = "#" } export type DefenderStack = { cards: Card[]; isFaceUp: boolean; }; export type Move = { kind: MoveKind.Draw; deck: Lane | AttackerDeck; } | { kind: MoveKind.Play | MoveKind.PlayFaceUp; card: Card | CardValue; lane: Lane; } | { kind: MoveKind.Combat; lane: Lane; } | { kind: MoveKind.Discard; card: Card | CardValue; discardPile: Lane | AttackerDiscardPile; } | { kind: MoveKind.Pass; }; export declare const enum MoveKind { Draw = 0, Play = 1, PlayFaceUp = 2, Combat = 3, Discard = 4, Pass = 5 } export type Lane = 0 | 2 | 1 | 3 | 4 | 5; export declare const AttackerDeck = 6; export type AttackerDeck = typeof AttackerDeck; export declare const AttackerDiscardPile = 6; export type AttackerDiscardPile = typeof AttackerDiscardPile; export declare const enum StatusCode { Ok = 0, DefenderWin = 1, AttackerWin = 2, MadeMoveOnFinishedGame = 3, DefenderDrewFromAttackerDeck = 4, AttackerDrewFromBlockedLane = 5, PlayedUnownedCard = 6, PlayedBreakToEmptyStack = 7, DefenderInitiatedCombat = 8, AttackerInitiatedCombatWithEmptyStack = 9, DiscardedToOpponentDiscardPile = 10, AttackerDiscardedToEmptyDiscardAndDeck = 11, AttackerDrewFromEmptyDiscardAndDeck = 12, PlayedCardFacedWrongWay = 13, DefenderPlayedFaceUpBreakToStackWithBreak = 14 } export declare const StatusCodeMessages: Record<StatusCode, string>; export declare const enum Role { Defender = 1, Attacker = 2 }