Initial pass at Golden Pack.
This commit is contained in:
@@ -29,6 +29,9 @@ export interface PlayerView {
|
||||
isBot?: boolean
|
||||
deckSize: number
|
||||
petCount: number
|
||||
avocados?: number // set-aside Avocado tokens (Golden pack)
|
||||
firstBuyFree?: boolean // Manta Ray: next buy is free (self only)
|
||||
buysThisRound?: number // Blue-Ringed Octopus counter (self only)
|
||||
deck?: Card[]
|
||||
}
|
||||
|
||||
@@ -38,6 +41,23 @@ export interface PendingTrade {
|
||||
options: [Card, Card]
|
||||
}
|
||||
|
||||
// Cockatoo (Golden pack): the buyer must reveal one of their pets.
|
||||
export interface PendingReveal {
|
||||
playerId: string
|
||||
source: string
|
||||
options?: string[] // eligible pet card ids (buyer only)
|
||||
}
|
||||
|
||||
// Nurse Shark (Golden pack): a mid-battle Trumpet-spend choice.
|
||||
export interface PendingBattleDecision {
|
||||
seat: number
|
||||
kind: string
|
||||
petName: string
|
||||
min: number
|
||||
max: number
|
||||
trumpets: number
|
||||
}
|
||||
|
||||
export interface BattleEvent {
|
||||
type:
|
||||
| 'prep'
|
||||
@@ -53,6 +73,8 @@ export interface BattleEvent {
|
||||
| 'heal'
|
||||
| 'setaside'
|
||||
| 'release'
|
||||
| 'trumpet' // a side gains (+) or spends/loses (-) Trumpets (Golden pack)
|
||||
| 'prevent' // a Cone Snail shaves damage off a hit (Golden pack)
|
||||
seat?: number
|
||||
target?: number
|
||||
card?: Card
|
||||
@@ -117,6 +139,8 @@ export interface GameView {
|
||||
deckCounts: number[]
|
||||
players: PlayerView[]
|
||||
pending?: PendingTrade
|
||||
pendingReveal?: PendingReveal
|
||||
pendingBattle?: PendingBattleDecision
|
||||
battle?: BattleResult
|
||||
winnerSeat: number
|
||||
log?: LogEntry[]
|
||||
@@ -129,9 +153,12 @@ export type ClientMessage =
|
||||
| { type: 'removePlayer'; target: string }
|
||||
| { type: 'start' }
|
||||
| { type: 'buy'; row: number }
|
||||
| { type: 'buyAvocado'; row: number }
|
||||
| { type: 'sell'; cards: string[] }
|
||||
| { type: 'trade'; cards: string[] }
|
||||
| { type: 'tradeChoose'; pick: number }
|
||||
| { type: 'revealChoose'; card: string }
|
||||
| { type: 'battleChoose'; value: number }
|
||||
| { type: 'pass' }
|
||||
| { type: 'arrange'; order: string[] }
|
||||
| { type: 'ready' }
|
||||
|
||||
Reference in New Issue
Block a user