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
41 changes: 41 additions & 0 deletions locales/en/apgames.json
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,7 @@
"gyges": "A breakthrough game where nobody owns any pieces, and pieces rebound off of each other.",
"gyve": "Drawless unification game where you try to form fewer groups than your opponent. On each turn, you place two stones in sequence so that each one is adjacent to the same number of friendly groups at the moment of placement.",
"halma": "The original traversal game. Players need to be the first to move all their armies to the opponent's home base.",
"halmaclimbers": "An original scoring game inspired by Halma movement dynamics.",
"havannah": "A connection game where you vye to form either a ring, a bridge, or a fork. A ring is a chain around at least one cell. A bridge is a chain linking two corners. A fork is a chain linking three sides. Corners do not belong to either side.",
"hens": "Hens and Chicks is a draughts-style game with two types of pieces and a unique capturing mechanic. The winner is the first to land a piece in their opponent's home row or to eliminate all the opposing hens.",
"hex": "In Hex, two players attempt to connect opposite sides of a rhombus-shaped board made of hexagonal cells",
Expand Down Expand Up @@ -132,6 +133,7 @@
"meridians": "Meridians is a territorial game with the goal of annihilating the opponent's stones. Starting with an empty board, players alternate turns placing a stone on an empty point as in Go. Groups should be \"seen\" by other friendly stone through a straight path or they will be removed on your opponent's turn.",
"mimic": "A game where enemy pieces mimic your moves while you race to be the first player to reach the back row.",
"minefield": "Connect opposite sides of the board, but certain piece configurations are forbidden.",
"minimize": "The player with the largest smallest group wins the game.",
"mirador": "Mirador is a fast and exhilarating connection game played on a 27 x 27 square grid by placing 2 x 2 squares to represent watchtowers. It uses line-of-sight connections and equivalent goals (making it more of a race than a pure connection game).",
"mixtour": "Two players create towers with the goal of creating a tower at least five high with your colour at the top. The twist here is two-fold: (1) you can move opponent's pieces and (2) movement range is determined by the *target* stack height and not the moving stack height.",
"monkey": "You start with a single queen, composed of a stack of checkers. When you make noncapturing moves, the queen leaves a singleton behind. Queens and singletons move and capture like chess queens. To win, capture the opposing queen or leave them with no legal moves.",
Expand Down Expand Up @@ -273,6 +275,7 @@
"garden": "To make it very clear what happened on a previous turn, each move is displayed over four separate boards. The first board shows the game after the piece was first placed. The second board shows the state after adjacent pieces were flipped. The third board shows any harvests. The fourth board is the final game state and is where you make your moves.\n\nIn our implementation, black is always the \"tome\" or tie-breaker colour. The last player to harvest black will have a `0.1` after their score.",
"gyges": "The goal squares are adjacent to all the cells in the back row. The renderer cannot currently handle \"floating\" cells.",
"halma": "To prevent the [drawish nature](https://boardgamegeek.com/thread/3706389/unspoiling-halma-redux) of the game, the following rules apply: (a) a player wins if the opposite home-base is complete with at least one friendly stone (David Parlett's criteria); (b) Any piece in the player's home-base must make progress towards the enemy camp whenever this is possible by jumping over an enemy piece. (Zillions rule, to remove drawish strategies); (c) No stone can return to his home-base.\n\n[Halma](https://en.wikipedia.org/wiki/Halma) was one of the first commercial successes for an abstract game. The game was designed by [George Howard Monks](https://en.wikipedia.org/wiki/George_Howard_Monks) in 1883/4. It is said that Halma was inspired by an older British game called *Hoppity*. However, this game has no documentation or surviving boards, turning this lineal statement into a historical mystery. Halma was later adapted (c.1892/3) into an even bigger success: [Chinese Checkers](https://boardgamegeek.com/boardgame/2386/chinese-checkers) (which could easily be played by three or six players).\n\nSuper Halma is a more dynamic, uncredited variant, presented in the 1992's book **New Rules for Classic Games** by Wayne Schmittberger. This variant proposes long jumps, where the number of empty cells before and after the jumped stone must be equal. The base's move restrictions still apply in this implementation of Super Halma.",
"halmaclimbers": "Halma Climbers was designed by Alexander Brady in 2021.\n\nThis implementation allows players to move at will, rather than restricting them to moves that strictly increase the overall score (has mentioned in David Ploog's [ruleset](https://blackandwhite.develz.org/games/HalmaClimbers.pdf)). This design choice removes the burden of calculating every possible combination just to find out that no more moves exist that increase the overall score. This also prevents the software from having to compute an excessive number of permutations, which can be quite high given the two-action turn structure and complex jump sequences. The game ends when both players pass their turns consecutively.",
"homeworlds": "The win condition is what's called \"Sinister Homeworlds.\" You only win by defeating the opponent to your left. If someone else does that, the game continues, but your left-hand opponent now shifts clockwise. For example, in a four-player game, if I'm South, then I win if I eliminate West. But if the North player ends up eliminating West, the game continues, but now my left-hand opponent is North.",
"jacynth": "More information on the Decktet system can be found on the [official Decktet website](https://www.decktet.com). Cards in players' hands are hidden from observers and opponents.",
"konane": "Several competing opening protocols exist, but the most common ruleset is the Naihe Ruleset, used by tournaments at the Bishop Museum in Hawaii and described in the BGG reference. This is what is implemented here.",
Expand Down Expand Up @@ -1456,6 +1459,11 @@
"name": "Super Halma (allows long-jumps)"
}
},
"halmaclimbers": {
"#board": {
"name": "Hexagonal board (base-6)"
}
},
"havannah": {
"#board": {
"name": "Size-8 board"
Expand Down Expand Up @@ -1798,6 +1806,23 @@
"description": "Allows 2x4 switches but forbids rare 4x4 pinwheels (by Luis Bolaños Mures)"
}
},
"minimize": {
"size-4": {
"name": "Hexagonal board (base-4)"
},
"size-5": {
"name": "Hexagonal board (base-5)"
},
"#board": {
"name": "Hexagonal board (base-6)"
},
"size-7": {
"name": "Hexagonal board (base-7)"
},
"size-8": {
"name": "Hexagonal board (base-8)"
}
},
"mixtour": {
"five": {
"description": "The winner is the first to score three points.",
Expand Down Expand Up @@ -4992,6 +5017,14 @@
"FORCED_MOVES": "Pieces still at home-base are forced to forward-jump over enemy neighbors: pick {{forced}}.",
"BAD_MOVE": "This movement is illegal!"
},
"halmaclimbers": {
"INITIAL_INSTRUCTIONS": "Either move to an adjacent empty cell, or make a multiple short-jump over pieces of either color. The sequence of jumps must start inside the player's home-base.",
"INSTRUCTIONS": "An action is a movement to an adjacent empty cell, or a multiple short-jump over pieces of either color. The sequence of jumps must start inside the player's home-base. Each player makes two actions.",
"NONEXISTENT": "Trying to interact with a friendly piece that doesn't exist at {{where}}!",
"ILLEGAL_JUMP": "The sequence of jumps must start inside the player's home-base!",
"TOO_MANY_ACTIONS": "This number of actions is not allowed: only one action at the beggining, then two!",
"BAD_MOVE": "This movement is illegal!"
},
"havannah": {
"INITIAL_INSTRUCTIONS": "Select a point to place a piece."
},
Expand Down Expand Up @@ -5269,6 +5302,14 @@
"INITIAL_INSTRUCTIONS": "Select a point to place a piece.",
"FORBIDDEN": "You may not form forbidden glyphs."
},
"minimize": {
"INITIAL_INSTRUCTIONS": "At the start, place one stone of either color. Click current friendly stone to flip color, click again to empty hex.",
"INSTRUCTIONS": "Players place, on empty hexes, one or two stones of either color. Click current friendly stone to flip color, click again to empty hex.",
"INVALID_PLACEMENT": "Unable to interpret the move notation: {{move}}.",
"NORMALISE": "The move needs to be normalised. Try {{normalised}}.",
"TOO_MANY_MOVES": "Only one or two placements are allowed.",
"TOO_MANY_MOVES_START": "At the start, only one placement is allowed."
},
"mirador": {
"ALREADY_DECLARED": "Someone has already declared. You can not declare now.",
"BAD_PLACEMENT": "You can not play at {{where}}. It would be adjacent or overlapping with another mirador. The only adjacency allowed is diagonal to one of your own miradors.",
Expand Down
11 changes: 4 additions & 7 deletions src/games/halma.ts
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ export class HalmaGame extends GameBase {
{ uid: "#board", },
{ uid: "superhalma", group: "ruleset" },
],
categories: ["goal>evacuate", "other>traditional", "mechanic>move", "board>shape>rect", "components>simple>1per", "other>2+players"],
categories: ["goal>evacuate", "other>traditional", "mechanic>move", "board>shape>rect", "components>simple>1per"],
flags: ["no-moves", "experimental"]
};

Expand Down Expand Up @@ -579,9 +579,9 @@ export class HalmaGame extends GameBase {
};

// Add annotations
if (this.stack[this.stack.length - 1]._results.length > 0) {
rep.annotations = [];
for (const move of this.stack[this.stack.length - 1]._results) {
rep.annotations = [];
if (this.results.length > 0) {
for (const move of this.results) {
if (move.type === "move") {
const [fromX, fromY] = g.algebraic2coords(move.from);
const [toX, toY] = g.algebraic2coords(move.to);
Expand All @@ -594,9 +594,6 @@ export class HalmaGame extends GameBase {
}

if (this.dots.length > 0) {
if (!("annotations" in rep) || rep.annotations === undefined) {
rep.annotations = [];
}
rep.annotations.push({
type: "dots",
targets: this.dots.map(cell => {
Expand Down
Loading
Loading