Adds the Cities & Knights expansion as a second Katan rule set, chosen on the setup screen (Rules: Base game / Cities & Knights; Cities & Knights plays to 13 by default).
Rules (docs/RULES-catan-ck.md): commodities (cloth, coin, paper), the event die and barbarian track, knights (hire, wake, promote, move, chase the robber), city walls, three improvement tracks with metropolises, the 54 progress cards, the second setup piece as a city, no development cards or Largest Army, the robber asleep until the first attack. Checked against the in-game almanac of Catan Universe.
Engine: everything lives behind CatanState.ck (null in the base game), so the base game's state and rules are unchanged. Every multi-seat decision runs through one chore queue. Trading works as in the base game (open offers, counters) and may include commodities.
AI: CatanCkAi plays every phase legally.
Screen: knights, walls, metropolis pennants and the merchant on the board; barbarian strip, event die, commodity hand, Improve and Progress dialogs, a knight menu, and dialogs for every chore.
Verification: 796 unit tests (including 300 engine-vs-engine games with invariants checked and wire round-trips, and a test that every legal move in whole games has a UI control that produces it), debug build and Android lint pass locally. Not yet tried on a device.
Small base-game fix: three multi-part log lines were appended as two entries each.
Adds the Cities & Knights expansion as a second Katan rule set, chosen on the setup screen (Rules: Base game / Cities & Knights; Cities & Knights plays to 13 by default).
**Rules** (docs/RULES-catan-ck.md): commodities (cloth, coin, paper), the event die and barbarian track, knights (hire, wake, promote, move, chase the robber), city walls, three improvement tracks with metropolises, the 54 progress cards, the second setup piece as a city, no development cards or Largest Army, the robber asleep until the first attack. Checked against the in-game almanac of Catan Universe.
**Engine**: everything lives behind `CatanState.ck` (null in the base game), so the base game's state and rules are unchanged. Every multi-seat decision runs through one chore queue. Trading works as in the base game (open offers, counters) and may include commodities.
**AI**: `CatanCkAi` plays every phase legally.
**Screen**: knights, walls, metropolis pennants and the merchant on the board; barbarian strip, event die, commodity hand, Improve and Progress dialogs, a knight menu, and dialogs for every chore.
**Verification**: 796 unit tests (including 300 engine-vs-engine games with invariants checked and wire round-trips, and a test that every legal move in whole games has a UI control that produces it), debug build and Android lint pass locally. Not yet tried on a device.
Small base-game fix: three multi-part log lines were appended as two entries each.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
https://claude.ai/code/session_016eTor2tpxKb4dXbd8RqnvZ
A second rule set chosen at setup (CatanRuleSet): commodities, knights, walls,
barbarians and the event die, city improvements and metropolises, and the
54 progress cards. Everything lives behind CatanState.ck, so the base game's
state and rules are untouched. Multi-seat decisions run through one chore queue.
Also wraps three multi-part log lines so each event is one entry.
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_016eTor2tpxKb4dXbd8RqnvZ
The setup screen picks the rule set (base game or Cities & Knights, each with its
own point targets). The board draws knights, walls, metropolis pennants and the
merchant; the screen adds the barbarian strip, event die, commodity hand, improve
and progress dialogs, the knight menu, and dialogs for every chore.
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_016eTor2tpxKb4dXbd8RqnvZ
Brings in open trade offers and counter-offers. Cities & Knights gets the same
flow for goods: OfferGoods may be open to the table, CounterGoods answers an
offer, and AcceptCounter / DismissCounters are shared with the base game.
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_016eTor2tpxKb4dXbd8RqnvZ
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Adds the Cities & Knights expansion as a second Katan rule set, chosen on the setup screen (Rules: Base game / Cities & Knights; Cities & Knights plays to 13 by default).
Rules (docs/RULES-catan-ck.md): commodities (cloth, coin, paper), the event die and barbarian track, knights (hire, wake, promote, move, chase the robber), city walls, three improvement tracks with metropolises, the 54 progress cards, the second setup piece as a city, no development cards or Largest Army, the robber asleep until the first attack. Checked against the in-game almanac of Catan Universe.
Engine: everything lives behind
CatanState.ck(null in the base game), so the base game's state and rules are unchanged. Every multi-seat decision runs through one chore queue. Trading works as in the base game (open offers, counters) and may include commodities.AI:
CatanCkAiplays every phase legally.Screen: knights, walls, metropolis pennants and the merchant on the board; barbarian strip, event die, commodity hand, Improve and Progress dialogs, a knight menu, and dialogs for every chore.
Verification: 796 unit tests (including 300 engine-vs-engine games with invariants checked and wire round-trips, and a test that every legal move in whole games has a UI control that produces it), debug build and Android lint pass locally. Not yet tried on a device.
Small base-game fix: three multi-part log lines were appended as two entries each.
🤖 Generated with Claude Code
https://claude.ai/code/session_016eTor2tpxKb4dXbd8RqnvZ