diff options
Diffstat (limited to 'go/game/kraken.go')
| -rw-r--r-- | go/game/kraken.go | 55 |
1 files changed, 27 insertions, 28 deletions
diff --git a/go/game/kraken.go b/go/game/kraken.go index 6ea22876..19adfd3c 100644 --- a/go/game/kraken.go +++ b/go/game/kraken.go @@ -10,23 +10,21 @@ const ( KRAKEN_NAME = "Kraken" ) -// var KrakenDecklist = `2 kraken/angry_squid -// 2 kraken/chachalot -// 2 kraken/clownfish -// 2 kraken/deja_vu! -// 2 kraken/devour_the_poor! -// 2 kraken/dolphin -// 2 kraken/flying_dutchmen -// 2 kraken/frost_pylon -// 2 kraken/gigantic_hail -// 2 kraken/sailfish -// 2 kraken/sold_out! -// 2 kraken/suprise! -// 2 kraken/tentacle_slap -// 2 kraken/tides_change! -// 2 kraken/unholy_cannonball` - -var KrakenDecklist = `2 kraken/clownfish` +var KrakenDecklist = `2 kraken/angry_squid +2 kraken/chachalot +2 kraken/clownfish +2 kraken/deja_vu! +2 kraken/devour_the_poor! +2 kraken/dolphin +2 kraken/flying_dutchmen +2 kraken/frost_pylon +2 kraken/gigantic_hail +2 kraken/sailfish +2 kraken/sold_out! +2 kraken/suprise! +2 kraken/tentacle_slap +2 kraken/tides_change! +2 kraken/unholy_cannonball` func NewKraken(id int, s *State) *Player { kraken := NewPlayer(id, KRAKEN_NAME, NewDeck(), s) @@ -88,6 +86,7 @@ func (ctrl *KrakenControl) krakenTurn() { log.Fatalf("Ai turn out of sync %d != %d", ctrl.turn, kraken.Turn) } +turn: for { drawn := kraken.Deck.Draw(1) if len(drawn) == 0 { @@ -107,23 +106,23 @@ func (ctrl *KrakenControl) krakenTurn() { return true } - // TODO: select targets - var targets interface{} - if c.IsPermanent() { - spawns := s.AvailableSpawnTiles(kraken, c) - if len(spawns) == 0 { - log.Println("No spawn available for", c.Name) + a := NewPlayAction(kraken, c, costFunc) + for a.Targets().RequireTargets() { + options := a.Targets().NextOptions() + if len(options) == 0 { + log.Println("No target available for", c.Name) kraken.DiscardPile.AddCard(c) - continue + continue turn } idx := 0 - if len(spawns) > 1 { - idx = s.Rand.Intn(len(spawns) - 1) + if len(options) > 1 { + idx = s.Rand.Intn(len(options) - 1) } - targets = spawns[idx].Position + a.Targets().AddTarget(options[idx]) } - ctrl.actions <- NewPlayActionWithSpecialCosts(kraken, c, targets, costFunc) + + ctrl.actions <- a ctrl.awaitGameStateSync() } |
