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
17 changes: 17 additions & 0 deletions locales/en/apgames.json
Original file line number Diff line number Diff line change
Expand Up @@ -152,6 +152,7 @@
"pikemen": "A Looney pyramid game where the pyramids represents soldiers with long pikes. Pieces charge in the direction they're facing and can then change their orientation. Capture a certain number of enemy soldiers to win.\n\nWhile the game is technically playable by three and four players, this implementation only supports two players.",
"pilastri": "Outlast your opponent in this game of blocking and moving, as pieces are forced to climb higher and higher until they run out of moves.",
"pletore": "Territorial line-of-sight game. Intersections are controlled and pieces on them are flipped based on the number and direction of pieces that can see them. The winner is the player who occupies more of the board at the end.",
"plurality": "Territorial game where players place trominos to enclosure areas. The player with more stones on a given area's perimeter owns that area.",
"pods": "Natal Seas - Pods is a territorial game where the players take on the metaphorical role of competing whales vying for space to protect their young. Played on a hexagonal board, it uses an innovative mechanism of placements and movements.",
"pontedd": "Players build islands and attempt to connect as many of them as possible by bridge. Most points wins.",
"prudh": "Prudh (\"prew\") is a game of shared pieces where one player owns the light squares and the other owns the dark. Manipulate stacks of pieces to earn points. Highest score at the end of the game wins.",
Expand Down Expand Up @@ -1900,6 +1901,17 @@
"name": "Largest board (17x17)"
}
},
"plurality": {
"#board": {
"name": "13x13 board"
},
"size-15": {
"name": "15x15 board"
},
"size-19": {
"name": "19x19 board"
}
},
"pontedd": {
"size-8": {
"name": "8x8 board"
Expand Down Expand Up @@ -4912,6 +4924,11 @@
"KOMI_CHOICE": "Invoke pie to play first or accept playing as second player.",
"OPPONENT_CONTROL": "You cannot place onto the empty intersection {{cell}}. It is controlled by the opponent."
},
"plurality": {
"INITIAL_INSTRUCTIONS": "Place a group of three orthogonal stones on empty cells. It is invalid to make a 2x2 shape of stones of any color configuration. First place two friendly pieces, then one opponent piece.",
"TABOO": "Place a tromino (orthogonal group of three stones), without making an occupied 2x2 area. The next click will start a new tromino.",
"INCOMPLETE_TURN": "To complete the turn you need two friendly placements, then an opponent placement."
},
"pods": {
"INITIAL_INSTRUCTIONS": "Place a piece onto an empty space where you have more neighboring pieces, or select a piece to move around other pieces without passing through spaces controlled by the opponent.",
"FIRST_MOVE_INSTRUCTIONS": "Place a piece onto any empty space on the board.",
Expand Down
8 changes: 6 additions & 2 deletions src/games/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -224,6 +224,7 @@ import { RincalaGame, IRincalaState } from "./rincala";
import { WaldMeisterGame, IWaldMeisterState } from "./waldmeister";
import { WunchunkGame, IWunchunkState } from "./wunchunk";
import { BambooGame, IBambooState } from "./bamboo";
import { PluralityGame, IPluralityState } from "./plurality";

export {
APGamesInformation, GameBase, GameBaseSimultaneous, IAPGameState,
Expand Down Expand Up @@ -451,6 +452,7 @@ export {
WaldMeisterGame, IWaldMeisterState,
WunchunkGame, IWunchunkState,
BambooGame, IBambooState,
PluralityGame, IPluralityState,
};

const games = new Map<string, typeof AmazonsGame | typeof BlamGame | typeof CannonGame |
Expand Down Expand Up @@ -529,7 +531,7 @@ const games = new Map<string, typeof AmazonsGame | typeof BlamGame | typeof Cann
typeof EmergoGame | typeof FroggerGame | typeof ArimaaGame |
typeof RampartGame | typeof KrypteGame | typeof EnsoGame |
typeof RincalaGame | typeof WaldMeisterGame | typeof WunchunkGame |
typeof BambooGame
typeof BambooGame | typeof PluralityGame
>();
// Manually add each game to the following array
[
Expand Down Expand Up @@ -564,7 +566,7 @@ const games = new Map<string, typeof AmazonsGame | typeof BlamGame | typeof Cann
BloqueoGame, PilastriGame, TessellaGame, GorogoGame, BiscuitGame, QuincunxGame,
SiegeOfJGame, StairsGame, EmuGame, DeckfishGame, BluestoneGame, SunspotGame, StawvsGame,
LascaGame, EmergoGame, FroggerGame, ArimaaGame, RampartGame, KrypteGame, EnsoGame, RincalaGame,
WaldMeisterGame, WunchunkGame, BambooGame,
WaldMeisterGame, WunchunkGame, BambooGame, PluralityGame,
].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 @@ -1024,6 +1026,8 @@ export const GameFactory = (game: string, ...args: any[]): GameBase|GameBaseSimu
return new WunchunkGame(args[0], ...args.slice(1));
case "bamboo":
return new BambooGame(...args);
case "plurality":
return new PluralityGame(...args);
}
return;
}
Loading