Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 30 additions & 2 deletions locales/en/apgames.json
Original file line number Diff line number Diff line change
Expand Up @@ -236,6 +236,7 @@
"terrace": "A royal capture/escape game played on a three-dimensional board with pieces of various sizes.",
"toguz": "A traditional mancala-style sowing game from central Asia where you attempt to capture the majority of the pieces.",
"trax": "A game of loops and lines. Place tiles adjacent to those already in play such that the colours of the tracks match. The objective is to get a loop or line of your colour while attempting to stop your opponent in their colour. What gives Trax its strategic depth is the forced play rule which allows (or even requires) multiple tiles to be played in a turn.",
"tricouleur": "A game where Ataxx meets Rock-Paper-Scissors.",
"trike": "Trike is a game on a triangular board. Players take turn moving a neutral pawn around the board (passing is not allowed). When a player moves the pawn, they place a checker of their own color, onto the destination point. When the pawn is trapped, the game is over. At the end of the game, each player gets a point for each checker of their own color adjacent to, or underneath, the pawn. The person with the highest score wins.",
"tritium": "Two players take turns creating and growing regions and claiming them. Once the board is full, the player who controls most tiles wins.",
"tumbleweed": "Tumbleweed is a game of line of sight. Towers are built, and cells are controlled by the player with the most towers that can see that cell. Compete to control the majority of the hexagonal board.",
Expand Down Expand Up @@ -331,6 +332,7 @@
"tbt": "When it's your turn, you will see the die you have to work with, but once your move is complete, the die will reroll. Exploration is not helpful because the die roll is not finalized until after the move is submitted. As you scroll back through the game history, the die you see is for the *next* turn. The die used to make the move you're seeing is displayed below the board.",
"terrace": "The Assassination variant is described in [this BGG thread](https://boardgamegeek.com/thread/551125/variant-for-more-aggressive-less-drawish-play), summarized below:\n\n- Up straight, you must be larger or a smallest-size piece can assassinate a largest-size piece.\n\n- Same level (orthogonally adjacent only), you must be at least the same size.\n\n- Down diagonal, you may be one rank smaller.",
"toguz": "Depicting state changes in sowing games is challenging. The initial chosen pit is marked, as is any capture. Small numbers appear to show the change in the number of stones in each pit. If you believe you have encountered a bug, please let us know in Discord.",
"tricouleur": "Tricouleur is a 2005 game designed by Bill Taylor. Each player has a army of three types of pieces that are able to capture the next type, in a cyclic way: think Rock-Paper-Scissors. The move sequence is 12* where a player must use different pieces (it is also possible to pass the entire turn). A piece may move to an empty neighboring cell, in which case it leaves an unmoved duplicate behind; or to an empty cell among the twelve 2nd-neighbours, regardless of what is in between.\n\nAny weaker opponent-pieces that the moved piece becomes adjacent to, are recolored as the moving piece. Any same-strength opponent-pieces that the moved piece becomes adjacent to, are removed from the board. When the board is full, or both pass consecutively, the game ends, and whoever has the most pieces of their own colours in total, wins.",
"tumbleweed": "A space is claimed by a player if they have a piece on it, or if they have the majority of the line of sights to it. The score is the number of territory own by each player. The game ends when both players pass in succession. If there is no change in score for 20 plies, the game also ends.",
"twinflames": "Twin Flames is a 2026 redesign of the 2013's Product, an original concept by Nick Bentley. The first player must initially place a friendly stone, preventing overly strong opening countermoves and thereby eliminating the need for a pie rule. The remaining moves use a 12* sequence, in which players may place stones of either colour. At the end of the game, a player who has formed a single connected group scores points equal to the size of that group. Another ludeme introduced was the use of walls, or blockers, which reduce overall connectivity and make groups more robust to enemy attacks. The blocker configuration is randomized, increasing game variability and making opening theory more difficult to develop.",
"twixt": "The notation is based on Hansel notation at <http://www.ibiblio.org/twixtpuzzles/>. Some modifications are that link removal specifically specifies the link direction, and commas separate the moves. To add/remove links, click on the pegs between them. You can also remove a link by clicking on the line itself.",
Expand Down Expand Up @@ -1996,13 +1998,13 @@
"size-6": {
"name": "5x6 board"
},
"#board": {
"size-8": {
"name": "7x8 board"
},
"size-10": {
"name": "9x10 board"
},
"size-12": {
"#board": {
"name": "11x12 board"
},
"size-14": {
Expand Down Expand Up @@ -3188,6 +3190,20 @@
"description": "The board is limited to 8x8. If all the tiles that can be played without a win being achieved have been played, the player who plays the last tile loses."
}
},
"tricouleur": {
"hex-7": {
"name": "Size 7 board"
},
"#board": {
"name": "Size 8 board"
},
"hex-9": {
"name": "Size 9 board"
},
"hex-10": {
"name": "Size 10 board"
}
},
"trike": {
"#board": {
"name": "Triangle (11 wide)",
Expand Down Expand Up @@ -6573,6 +6589,18 @@
"NO_EXPAND_X": "You may not expand the board beyond a width of {{size}}.",
"NO_EXPAND_Y": "You may not expand the board beyond a height of {{size}}."
},
"tricouleur": {
"INITIAL_INSTRUCTIONS": "Select a piece to duplicate or jump. Rocks are represented as cogs, Paper as squares, and Scissors as Xs.",
"INITIAL_INSTRUCTIONS_PASS": "You have no moves so you must pass.",
"INVALID_TO": "The piece at {{from}} cannot duplicate or jump to {{to}}.",
"MUST_PASS": "The only move available to you is to pass.",
"ILLEGAL_PASS": "You may only pass has a whole move.",
"SAME_PIECE": "The second move must be from a different piece than the ones moved or changed in the first.",
"NO_TOS": "The selected piece at {{from}} has no possible destinations to duplicate or jump to.",
"SELECT_TO": "Select a destination to duplicate or jump to.",
"SPLIT4JUMP": "You have indicated a duplicate when it's supposed to be a jump. Try {{move}}.",
"JUMP4SPLIT": "You have indicated a jump when it's supposed to be a duplicate. Try {{move}}."
},
"trike": {
"INITIAL_INSTRUCTIONS": "Select the cell to place the neutral piece on."
},
Expand Down
8 changes: 6 additions & 2 deletions src/games/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -258,6 +258,7 @@ import { PolluxGame, IPolluxState } from "./pollux";
import { PippinzipGame, IPippinzipState } from "./pippinzip";
import { NarrowsGame, INarrowsState } from "./narrows";
import { InvectorGame, IInvectorState } from "./invector";
import { TricouleurGame, ITricouleurState } from "./tricouleur";

export {
APGamesInformation, GameBase, GameBaseSimultaneous, IAPGameState,
Expand Down Expand Up @@ -519,6 +520,7 @@ export {
PippinzipGame, IPippinzipState,
NarrowsGame, INarrowsState,
InvectorGame, IInvectorState,
TricouleurGame, ITricouleurState,
};

const games = new Map<string, typeof AmazonsGame | typeof BlamGame | typeof CannonGame |
Expand Down Expand Up @@ -608,7 +610,7 @@ const games = new Map<string, typeof AmazonsGame | typeof BlamGame | typeof Cann
typeof MinimizeGame | typeof HalmaClimbersGame | typeof SynapseGame |
typeof AtariGoGame | typeof TanboGame | typeof UnaneGame |
typeof LinageGame | typeof PolluxGame | typeof PippinzipGame |
typeof NarrowsGame | typeof InvectorGame
typeof NarrowsGame | typeof InvectorGame | typeof TricouleurGame
>();
// Manually add each game to the following array
[
Expand Down Expand Up @@ -648,7 +650,7 @@ const games = new Map<string, typeof AmazonsGame | typeof BlamGame | typeof Cann
XanaGame, SporaGame, SquirmGame, PinchGame, DomineeringGame, TwinFlamesGame, YGame, ShapeChessGame,
SlimetrailGame, CatsDogsGame, SoccolotGame, CourtGame, HalmaGame, MinimizeGame, HalmaClimbersGame,
SynapseGame, AtariGoGame, TanboGame, UnaneGame, LinageGame, PolluxGame, PippinzipGame, NarrowsGame,
InvectorGame
InvectorGame, TricouleurGame
].forEach((g) => {
if (games.has(g.gameinfo.uid)) {
throw new Error("Another game with the UID '" + g.gameinfo.uid + "' has already been used. Duplicates are not allowed.");
Expand Down Expand Up @@ -1176,6 +1178,8 @@ export const GameFactory = (game: string, ...args: any[]): GameBase|GameBaseSimu
return new NarrowsGame(...args);
case "invector":
return new InvectorGame(...args);
case "tricouleur":
return new TricouleurGame(...args);
}
return;
}
12 changes: 6 additions & 6 deletions src/games/narrows.ts
Original file line number Diff line number Diff line change
Expand Up @@ -49,12 +49,12 @@ export class NarrowsGame extends GameBase {
],
categories: ["goal>unify", "mechanic>move", "mechanic>capture", "board>shape>rect", "board>connect>rect", "components>simple>1per"],
variants: [
{ uid: "size-6", group: "board" }, // 5x6
{ uid: "#board", }, // 7 rows x 8 cols
{ uid: "size-10", group: "board" }, // 9x10
{ uid: "size-12", group: "board" }, // 11x12
{ uid: "size-14", group: "board" }, // 13x14
{ uid: "size-16", group: "board" }, // 15x16
{ uid: "size-6", group: "board" }, // 5 rows x 6 cols
{ uid: "size-8", group: "board" }, // 7 x 8
{ uid: "size-10", group: "board" }, // 9 x 10
{ uid: "#board", }, // 11 x 12
{ uid: "size-14", group: "board" }, // 13 x 14
{ uid: "size-16", group: "board" }, // 15 x 16
],
flags: ["pie", "experimental"]
};
Expand Down
2 changes: 1 addition & 1 deletion src/games/pippinzip.ts
Original file line number Diff line number Diff line change
Expand Up @@ -527,7 +527,7 @@ export class PippinzipGame extends GameBase {
{ name: "Pip/Line", piece: "B" }
],
position: "left",
height: 0.5,
height: 0.45,
clickable: false,
}
],
Expand Down
Loading
Loading