open-index/open-npm huggingface dataset:
npm package: @game-action/bananalotto
Description: bananalotto to play grids
Author: Rémy BRUYERE
Latest version: 1.0.0

# GameAction/bananalotto

This repository created to play on bananalotto website and play grids

## 💻 Usage

Install the package as a dependency from [npm](https://www.npmjs.com/package/@game-action/bananalotto):

```bash
npm install --save-dev @game-action/bananalotto
```
or
```bash
yarn add -D @game-action/bananalotto
```

### TypeScript

```typescript
import { Bananalotto } from "@game-action/bananalotto";

// to connect
const king = await Bananalotto.init("email", "password");

// fetch summary information
const summary = await king.summary();
console.log(summary); // Summary { grid: 10, cash: 0.06, point: 6750 }

// play grid, max of 10 per day
const grid = await king.playGrid();
console.log(grid); // true or false
```

## 📄 License

- Code: [MIT](./LICENSE) © [Rémy BRUYERE](https://remy.ovh)

<p align="center">
  <sub>An open source project by <a href="https://remy.ovh">rem42</a></sub>
</p>
npm package: @game-action/config
Description: Common configuration files for GameAction projects
Author: Rémy BRUYERE
Latest version: 1.0.1

# 🛠️ GameAction config files

This repository contains the common configuration files for GameAction projects.

## 💻 Usage

Install the package as a dev dependency from [npm](https://www.npmjs.com/package/@game-action/config):

```bash
npm install --save-dev @game-action/config
```
or
```bash
yarn add -D @game-action/config
```

### Prettier

Our Prettier configuration keeps all defaults with the exception of print width, which is set at 120 characters rather than 80. To use this configuration, create a Prettier config file `.prettierrc.cjs` in the project root:

```js
module.exports = require("@game-action/config").prettier;
```

### Semantic Release

We use [Semantic Release](https://github.com/semantic-release/semantic-release) for automated deployments of our packages. Our configuration adds support for [Gitmoji](https://gitmoji.carloscuesta.me) commits, creating release notes with a `CHANGELOG.md`, and publishing to GitHub and npm.

Create a Semantic Release config file `release.config.js` in the project room. If you want to release the `master` or `production` branches, you can use the import directly:

```js
module.exports = require("@game-action/config").master;
```

Alternately, you can specify the branch you want to release:

```js
module.exports = require("@game-action/config").release("branch-name");
```

## 📄 License

- Code: [MIT](./LICENSE) © [Rémy BRUYERE](https://remy.ovh)

<p align="center">
  <sub>An open source project by <a href="https://remy.ovh">rem42</a></sub>
</p>
npm package: @game-action/kingoloto
Description: kingoloto to play grids
Author: Rémy BRUYERE
Latest version: 1.0.0

# GameAction/kingoloto

This repository created to play on kingoloto website and play grids

## 💻 Usage

### TypeScript

```typescript
import { Kingoloto } from "@game-action/kingoloto";

// to connect
const king = await Kingoloto.init("email", "password");

// fetch summary information
const summary = await king.summary();
console.log(summary); // Summary { grid: 10, cash: 0.06, point: 6750 }

// play grid, max of 10 per day
const grid = await king.playGrid();
console.log(grid); // true or false
```

## 📄 License

- Code: [MIT](./LICENSE) © [Rémy BRUYERE](https://remy.ovh)

<p align="center">
  <sub>An open source project by <a href="https://remy.ovh">rem42</a></sub>
</p>
npm package: @game-action/kingoloto-app
Description: kingoloto app to play grids from android app
Author: Rémy BRUYERE
Latest version: 1.0.0

# GameAction/kingoloto-app

This repository created to play on kingoloto website and play grids

## 💻 Usage

### TypeScript

```typescript
import { KingolotoApp } from "@game-action/kingoloto-app";

// to connect
const king = await KingolotoApp.init("email", "password");

// fetch summary information
const summary = await king.summary();
console.log(summary); // Summary { euros: 1.01, usedeuros: 0, points: 7800, usedpoints: 1950 }

// play grid, max of 10 per day
const grid = await king.playGrid();
console.log(grid); // true or false
```

## 📄 License

- Code: [MIT](./LICENSE) © [Rémy BRUYERE](https://remy.ovh)

<p align="center">
  <sub>An open source project by <a href="https://remy.ovh">rem42</a></sub>
</p>
npm package: @game-action/primolotto
Description: primolotto to play grids
Author: Rémy BRUYERE
Latest version: 1.0.0

# GameAction/primolotto

This repository created to play on primolotto website and play grids

## 💻 Usage

Install the package as a dependency from [npm](https://www.npmjs.com/package/@game-action/primolotto):

```bash
npm install @game-action/primolotto
```
or
```bash
yarn add @game-action/primolotto
```


### TypeScript

```typescript
import { Primolotto } from "@game-action/primolotto";

// to connect
const primolotto = await Primolotto.init("email", "password");

// fetch summary information
const summary = await primolotto.summary();
console.log(summary); // Summary { ticket: 187 }

// play grid, max of 10 per day
const grid = await primolotto.playGrid();
console.log(grid); // true or false
```

## 📄 License

- Code: [MIT](./LICENSE) © [Rémy BRUYERE](https://remy.ovh)

<p align="center">
  <sub>An open source project by <a href="https://remy.ovh">rem42</a></sub>
</p>
npm package: @game-claw/blackjack
Description: Blackjack (21) plugin for game-claw — real-player banker, split, double, insurance
Latest version: 0.0.1

[English](README.md) | **中文**

# @game-claw/blackjack

Game Claw 引擎的 21 点插件。庄家是真实玩家，不是虚拟庄。

## 概述

多人 21 点，支持 2-8 人。一名玩家担任庄家。支持所有标准操作：要牌、停牌、加倍、分牌、保险、等额赔付和投降。

## 规则

### 基本设置

- **人数**：2-8
- **牌组**：标准 52 张
- **庄家**：牌桌上的一名真实玩家，通过 `settings.bankerIndex` 指定
- **发牌**：庄家第一张明牌（所有人可见），第二张暗牌

### 手牌点数

| 牌 | 点数 |
|----|------|
| 2-10 | 面值 |
| J, Q, K | 10 |
| A | 11，总点数超过 21 时自动变为 1 |

- **天牌 21 点（Natural）**：恰好 2 张牌合计 21（A + 10 点牌）
- **软 17（Soft 17）**：含一张算作 11 的 A，总计 17

### 游戏阶段

```
下注 → 发牌 → [保险] → 玩家回合 → 庄家回合 → 结算
```

1. **下注**：普通玩家下注（最小/最大限制）
2. **发牌**：每人 2 张。庄家第一张明牌。
3. **保险**（可选）：庄家明牌为 A 且开启 `dealerPeek`
4. **玩家回合**：每位普通玩家依次操作
5. **庄家回合**：庄家按固定规则操作（<17 必须要牌，>=17 停牌）
6. **结算**：计算输赢

### 玩家操作

| 操作 | 可用时机 | 效果 |
|------|---------|------|
| `bet` | 下注阶段 | 下初始赌注 |
| `hit` | 玩家回合 | 要一张牌 |
| `stand` | 玩家回合 | 停牌 |
| `double-down` | 仅首次操作且手持 2 张牌 | 加倍赌注，再拿一张牌后自动停牌 |
| `split` | 仅首次操作且对子 | 分成两手，各拿一张新牌 |
| `insurance` | 庄家明牌为 A | 边注，最多为原注的一半。庄家天牌时赔 2:1。 |
| `decline-insurance` | 庄家明牌为 A | 拒绝保险 |
| `even-money` | 天牌 21 点 + 庄家明牌为 A | 保证 1:1 赔付，不冒被平的风险 |
| `surrender` | 仅首次操作 | 放弃一半赌注，保留另一半 |

### 赔率

| 结果 | 赔率 |
|------|------|
| 天牌 21 点（非分牌） | 3:2 |
| 普通赢 | 1:1 |
| 分牌后 21 点 | 1:1（不算天牌） |
| 保险（庄家天牌） | 2:1（保险注） |
| 等额赔付 | 1:1 保证 |
| 投降 | 输一半赌注 |
| 平局 | 退还赌注 |

### 庄家规则

庄家按固定规则操作，没有选择权：
- 16 或以下必须要牌
- 硬 17 或以上必须停牌
- **软 17**：可配置 `settings.softHit17`（默认：停牌）

### 窥牌规则（Dealer Peek）

启用 `settings.dealerPeek` 时：
- 庄家明牌为 A → 进入保险阶段
- 庄家明牌为 10 点牌 → 窥视暗牌。若为天牌，立即结束（玩家仅输原始赌注，不输加倍/分牌的额外注）。
- 无需窥牌 → 直接进入玩家回合

### 分牌规则

- 仅在对子（相同点值）且恰好 2 张牌时可用
- 每手分出的牌各拿一张新牌
- **分 A**：每手只拿一张牌，然后自动停牌
- **分牌后加倍**：可配置 `settings.doubleAfterSplit`
- **再次分牌**：上限 `settings.maxSplitHands`（默认：4）

## 配置

```typescript
const roomConfig = {
  gameType: 'blackjack',
  chipProvider: { type: 'http', url: 'http://127.0.0.1:3100', authToken: '<token>' },
  chipUnit: 'pts',
  minBet: 10,
  maxBet: 100,
  buyIn: 500,
  commission: 0,
  settings: {
    bankerIndex: 0,           // 哪位玩家是庄家
    softHit17: true,          // 庄家软 17 要牌
    doubleAfterSplit: true,   // 分牌后允许加倍
    dealerPeek: true,         // 庄家窥牌规则
    maxSplitHands: 4,         // 分牌上限
  },
};
```

## 使用

```typescript
import { BlackjackPlugin } from '@game-claw/blackjack';

const plugin = new BlackjackPlugin();
// plugin.meta = { name: 'blackjack', minPlayers: 2, maxPlayers: 8 }
```

## 文件结构

```
src/
  plugin.ts    游戏规则、所有操作、结算、窥牌逻辑
```
npm package: @game-claw/dou-di-zhu
Description: Dou Di Zhu (Fight the Landlord) plugin for game-claw — 3-player, bombs, spring
Latest version: 0.0.1

[English](README.md) | **中文**

# @game-claw/dou-di-zhu

Game Claw 引擎的斗地主插件。经典 3 人爬升类卡牌游戏，含叫地主、炸弹和翻倍系统。

## 概述

3 人卡牌游戏，使用 54 张牌（标准 52 张 + 大小王）。一名玩家成为地主并获得 3 张额外底牌，地主对抗两名农民。先出完手牌的一方获胜。

## 规则

### 基本设置

- **人数**：固定 3 人
- **牌组**：54 张（52 张标准牌 + 小王 + 大王）
- **发牌**：每人 17 张，3 张底牌留给地主

### 牌序

```
3 < 4 < 5 < 6 < 7 < 8 < 9 < 10 < J < Q < K < A < 2 < 小王 < 大王
```

### 游戏阶段

```
准备 → 叫地主 → 发底牌 → 加倍 → 出牌 → 结束
                │
                └→ (全部不叫) → 重新发牌
```

1. **准备阶段**：玩家示意准备好（可选择明牌翻倍）
2. **叫地主**：每人出价 0（不叫）或 1-3。出价最高者成为地主。全部不叫则重新发牌。
3. **发底牌**：3 张底牌归地主（共 20 张）
4. **加倍**：每人可选择翻倍个人倍数
5. **出牌**：地主先出。轮流出牌或过牌。

### 操作

| 操作 | 阶段 | 参数 |
|------|------|------|
| `ready` | 准备阶段 | — |
| `show-cards` | 准备阶段 | 明牌，翻倍个人乘数 |
| `bid` | 叫地主 | `{ bid: 0\|1\|2\|3 }`（0=不叫） |
| `double` | 加倍阶段 | 个人乘数翻倍 |
| `no-double` | 加倍阶段 | 保持当前乘数 |
| `play` | 出牌阶段 | `{ cards: Card[] }` |
| `pass` | 出牌阶段 | 过牌（非首出时） |

### 牌型

| 牌型 | 张数 | 示例 |
|------|------|------|
| 单张 | 1 | 5 |
| 对子 | 2 | 5-5 |
| 三条 | 3 | 5-5-5 |
| 三带一 | 4 | 5-5-5-3 |
| 三带一对 | 5 | 5-5-5-3-3 |
| 顺子 | 5 张以上连续单张 | 3-4-5-6-7（不含 2 和王） |
| 连对 | 3 对以上连续对子 | 3-3-4-4-5-5（不含 2 和王） |
| 飞机 | 2 组以上连续三条 | 5-5-5-6-6-6 |
| 飞机带单张 | 连续三条 + 每组一张单张 | 5-5-5-6-6-6-3-4 |
| 飞机带对子 | 连续三条 + 每组一个对子 | 5-5-5-6-6-6-3-3-4-4 |
| 四带二单 | 四条 + 2 张不同单张 | 5-5-5-5-3-4 |
| 四带二对 | 四条 + 2 个不同对子 | 5-5-5-5-3-3-4-4 |
| 炸弹 | 4 张同点 | 5-5-5-5 |
| 火箭 | 大小王 | 王-王 |

### 压牌规则

- 只能用**同牌型**且更大的牌压
- **炸弹**可以压任何非炸弹牌型
- **火箭**压一切（包括炸弹）
- 炸弹和火箭可以在任何时候出，不受当前牌型限制
- 四带二的张数必须匹配（6 张或 8 张）

### 飞机带牌规则

- 带的牌不能含王
- 带的牌不能构成炸弹（不能四张相同）
- 带单张：必须是不同点数（每组三条带一张）
- 带对子：必须是有效对子且不同点数

### 倍数系统

最终赔付计算：

```
赔付 = 10 × 基础倍数 × 地主个人倍数 × 农民个人倍数
```

基础倍数 = 以下各项相乘：

| 因素 | 值 |
|------|------|
| 叫牌分数 | 1、2 或 3 |
| 炸弹 | 每个炸弹 ×2 |
| 春天/反春天 | ×4 |
| 明牌 | 每位明牌玩家 ×2 |

个人倍数（来自加倍阶段）：

| 因素 | 值 |
|------|------|
| 加倍 | 该玩家 ×2 |
| 不加倍 | ×1 |

### 春天与反春天

- **春天**：地主获胜且两个农民一张牌都没出过（×4）
- **反春天**：农民获胜且地主只出了第一手牌（×4）

### 结算

每个农民与地主独立结算：

```
农民赔付 = 10 × 基础倍数 × 地主倍数 × 该农民倍数
```

- 地主赢：每个农民向地主支付 `赔付额`
- 农民赢：地主向每个农民支付 `赔付额`
- 始终零和：地主的收益/损失 = 两个农民的损失/收益之和

## 使用

```typescript
import { DouDiZhuPlugin } from '@game-claw/dou-di-zhu';

const plugin = new DouDiZhuPlugin();
// plugin.meta = { name: 'dou-di-zhu', minPlayers: 3, maxPlayers: 3 }
```

## 导出

```typescript
export class DouDiZhuPlugin implements GamePlugin { ... }

// 牌型工具：
export enum PatternType { Single, Pair, Triple, ... }
export interface CardPattern { type: PatternType; rank: number; length?: number; }
export function identifyPattern(cards: Card[]): CardPattern | null;  // 识别牌型
export function canBeat(play: CardPattern, lastPlay: CardPattern): boolean;  // 能否压过
export function getAllPlays(hand: Card[]): { cards: Card[]; pattern: CardPattern }[];  // 所有可出的牌
```

## 文件结构

```
src/
  plugin.ts          游戏规则、叫地主、出牌、计分
  card-patterns.ts   牌型识别、比较、可出牌枚举
```
npm package: @game-claw/texas-holdem
Description: Texas Hold'em No-Limit poker plugin for game-claw
Latest version: 0.0.1

[English](README.md) | **中文**

# @game-claw/texas-holdem

Game Claw 引擎的德州扑克（无限注）插件。

## 概述

标准无限注德州扑克，支持 2-10 人。实现了完整的 `GamePlugin` 接口，包括盲注、多轮下注、带废牌的公共牌发放、侧池计算和手牌评估。

## 规则

### 基本设置

- **人数**：2-10
- **牌组**：标准 52 张
- **位置**：庄家按钮每手轮转。小盲 = 按钮+1，大盲 = 按钮+2。
- **底牌**：每人 2 张，从小盲开始逐张发放

### 下注轮次

| 轮次 | 公共牌 | 先行动 |
|------|-------|--------|
| 翻牌前（Pre-flop） | 无 | UTG（按钮+3）。二人局：按钮先行动。 |
| 翻牌（Flop） | 3 张（废 1 发 3） | 小盲 |
| 转牌（Turn） | 1 张（废 1 发 1） | 小盲 |
| 河牌（River） | 1 张（废 1 发 1） | 小盲 |

### 操作

| 操作 | 参数 | 规则 |
|------|------|------|
| `fold` | — | 弃牌 |
| `check` | — | 仅在无需跟注时可用 |
| `call` | — | 跟注当前下注额 |
| `raise` | `{ amount }` | 加注的总下注额。必须 >= 当前注额 + 上次加注幅度。 |
| `all-in` | `{ amount }` | 全押剩余筹码。即使低于最小加注额也有效，但不会为已行动的玩家重新开放行动权。 |

### 加注规则

- 最小加注 = 当前注额 + 上次加注幅度（"两倍规则"）
- 示例：大盲=10，玩家加注到 30（加注幅度 20），下一个最小加注 = 30+20 = 50
- 低于最小加注的全押：允许，但不重新开放已行动玩家的行动权

### 侧池

当多个玩家以不同金额全押时，引擎自动计算侧池：

1. 按全押金额升序排列
2. 每个层级创建一个底池，包含所有有资格玩家的贡献
3. 每个底池奖励给其中最好的手牌
4. 零头给庄家按钮顺时针方向最近的赢家

### 手牌评估

从 7 张牌（2 底牌 + 5 公共牌）中选最佳 5 张：

| 等级 | 牌型 |
|------|------|
| 9 | 同花顺（含皇家同花顺） |
| 8 | 四条 |
| 7 | 葫芦 |
| 6 | 同花 |
| 5 | 顺子 |
| 4 | 三条 |
| 3 | 两对 |
| 2 | 一对 |
| 1 | 高牌 |

- A-2-3-4-5 最小顺子（"轮子"）有效
- 平局按踢脚牌降序比较

### 佣金

每手开局时按玩家人数收取固定费用，结束时打入荷官账户。不从底池中扣除。

## 使用

```typescript
import { TexasHoldemPlugin } from '@game-claw/texas-holdem';

const plugin = new TexasHoldemPlugin();
// plugin.meta = { name: 'texas-holdem', minPlayers: 2, maxPlayers: 10 }
```

## 文件结构

```
src/
  plugin.ts       游戏规则、下注、侧池、佣金
  hand-eval.ts    手牌排名与比较
```