# Trictrac Rules — Quick Reference

This document summarises the rules of grand trictrac based on the 2013 Malfilâtre edition ([full text](refs/laws_and_rules_of_trictrac.md)).

French terms follow the mapping in [vocabulary.md](refs/vocabulary.md).

---

## 1. Board and Starting Position

- 24 triangular fields (_flèches_ / _cases_), numbered 1–24 from each player's perspective.
- 4 quarters of 6 fields: **small jan** (1–6), **big jan** (7–12), **opponent's big jan** (13–18), **return jan** (19–24, exit zone).
- Field 12 (White) / 13 (Black) is the **rest corner** (_coin de repos_).
- Each player starts with all 15 checkers in a stack (_talon_) on field 1.
- Checkers always move in the same direction (White: 1→24; Black: mirror of that).

## 2. Dice and Movement

- Both dice are rolled together; both must be played if possible.
- If only one can be played and there is a choice, the higher number must be played.
- A single checker may play both dice successively — a **chained move** (_tout d'une_) — stopping on an intermediate resting field (_repos_) between the two dice.
- **Fields are single-color**: a checker may only land on an empty field or one already occupied by own checkers.
- Landing on a field with ≥ 1 opponent checker is **forbidden** (blocked field).
- An unplayed number is a **helpless man** (_jan-qui-ne-peut_): 2 points penalty per unplayed die, credited to the opponent.

## 3. The Rest Corner (Field 12 / 13)

- Must be entered **simultaneously** (_d'emblée_): exactly 2 checkers must enter together.
- Must be vacated simultaneously: exactly 2 checkers must leave together.
- Always holds ≥ 2 checkers while occupied; a single checker there is forbidden.
- Three ways to take the corner:
  - **By effect** (_par effet_): normal die values land exactly on it.
  - **By puissance** (_par puissance_): the opponent's corner is empty; the player could take both corners simultaneously, but by privilege takes their own instead (as if stepping back one field).
  - **By chance** (_par effet_): general case when it results from the dice.
- If both by-effect and by-puissance are possible, by-effect takes priority.
- An empty corner may serve as a resting field during a chained move (not a landing).
- Placing checkers on the **opponent's** corner is always forbidden.

## 4. Scoring: Points and Holes

- Points are tracked with tokens (0–11); **12 points = 1 hole** (_trou_).
- A **hole won bredouille** (_bredouille_) counts as **2 holes**: the active player scored 12 consecutive points from zero without the opponent scoring anything in between. The second player to start marking takes a double token (the _pavillon_ / flag) and can also win bredouille.
- The ordinary game ends when one player reaches **12 holes**.

## 5. Scoring Events (Jans)

All point values: normal roll / double.

### 5a. Opening Jans (first rolls of a setting only)

| Jan                   | Condition                                                                                | Points                               |
| --------------------- | ---------------------------------------------------------------------------------------- | ------------------------------------ |
| **Two tables jan**    | First 2 checkers deployed; roll covers both rest corners; opponent's corner is empty     | 4 / 6 (to player)                    |
| **Contre two tables** | Same, but opponent has already taken their corner                                        | 4 / 6 (to opponent, as false hit)    |
| **Mezeas jan**        | Corner just taken (2 checkers); next roll shows one or two aces; opponent's corner empty | 4 per ace / 6 for double (to player) |
| **Contre mezeas**     | Same, but opponent's corner is occupied                                                  | 4 / 6 (to opponent)                  |
| **Six tables jan**    | After 2 rolls a checker is on 4 of the first 6 fields; 3rd roll could complete all 6     | 4 (always; not possible on a double) |

### 5b. Jan Filling and Conserving

A jan is **full** (_plein_) when all 6 of its fields hold ≥ 2 own checkers.

- **Filling**: the last checker is brought in to complete the jan.
  - Up to 3 ways: each direct die value covering the last field, or the combined sum (chained move).
  - Each way: **4 / 6** points.
  - Doubles allow at most 2 ways.
  - "Filling in passing" (player must break the jan to play the other die) scores nothing.
- **Conserving**: both dice can be played without disturbing any of the 12 checkers of the full jan.
  - Worth **4 / 6** points (at most one way).
  - Conservation by helplessness (_par impuissance_): only die value 6 triggers this (smaller values can always be played within the jan by breaking it).
  - The full return jan may be conserved by exiting one or more checkers.
- After marking points for filling, the player **must** actually fill the jan with the appropriate checker(s) — failure is a false move and a school.

### 5c. Hitting (_Jan de Récompense_)

Hitting is **always fictitious**: a checker is "hit" when a die value could cover an opponent checker on a half-field (_demi-case_), but **no actual checker moves**. The opponent's checker stays.

**True hit**: a die (direct or combined sum) fictitiously covers the opponent checker.

- In the **small jan table** (fields 1–12): **4 / 6** points per way.
- In the **big jan table** (fields 13–24): **2 / 4** points per way.

Ways to hit:

- **1 way**: only one direct die, or only the combined sum, covers the checker.
- **2 ways**: both direct dice cover it, or one die + the combined sum.
- **3 ways**: both dice + the combined sum (requires a normal roll; doubles max at 2 ways).

**Combined-sum hit** requires a free **resting field** between the two dice stops: the field must be empty, own, or a single opponent checker (which is then also hit).

**False hit** (_à faux_): the combined sum could hit but no valid resting field exists (all intermediate options are full opponent fields). The opponent gains the points the player would have scored.

- True-hit points are always marked before false-hit points.
- A checker already hit truly cannot also be hit falsely in the same move.
- Multiple checkers may be hit simultaneously (some true, some false).

**Corner hit**: player holds their own corner; opponent's corner is empty; the dice could simultaneously take the opponent's corner. Worth **4 / 6** points. Never false.

### 5d. Exit

- When all 15 checkers are in the return jan (fields 19–24), the player may exit.
- The exit rail counts as one additional field value.
- **Exact exit**: die value brings the checker directly to the exit rail — allowed.
- **Overflow** (_nombre excédant_): die value would carry the farthest checker past the rail — must exit.
- **Failing number** (_nombre défaillant_): die cannot reach or overflow — must play within the jan.
- A player may choose not to use an exact exit value and play within the jan instead — but overflow must always exit.
- It is forbidden to deliberately play a die within the jan to force the second die to be played as an overflow (using a checker closer to the exit).
- When the last checker exits: **4 points** on a normal roll, **6 points** on a double.
- After exit: checkers reset; the player who exited keeps first-move privilege for the new setting.

## 6. Forbidden Jans

A player **may not** place a checker in the opponent's small jan or big jan as long as the opponent can still materially complete a full jan there (i.e., enough of their own checkers remain to fill it).

Exception: during a chained move, an empty field in the opponent's big jan (including their empty corner) may serve as a resting field to pass a checker into the return jan.

## 7. Sequence of Play

Each turn follows this order:

1. Mark opponent's helpless man points or contre-jans from the **previous** move.
2. Mark opponent's schools; rectify false moves if any.
3. **Roll dice.** Opponent may mark schools for steps 1–2.
4. Mark own points: opening jans, hits, fills, conserves, exit.
5. Decide to **stay** (_tenir_) or **leave** (_s'en aller_) if a hole was won on own roll.
6. If exiting: reset checkers, keep token positions, roll again.
7. Play both dice.

Points and holes must always be marked **before** touching checkers for the next move.

## 8. Staying or Leaving

After winning one or more holes on **own dice roll**, the player chooses:

- **Stay** (_tenir_): mark holes, reset opponent token to zero, mark remainder points, continue.
- **Leave** (_s'en aller_): announce it; opponent agrees or raises a fault. All checkers and tokens reset to zero; only holes remain. Player who left has first-move privilege in the new setting. Remainder points are forfeited; opponent scores nothing for that move.

If the winning points come from the **opponent's** roll (helpless man, schools), the player **must** stay — leaving is not an option.

---

## 9. Schools (Marking Penalties) — _Not Yet Implemented_

Schools are penalties for marking errors. They are worth exactly the number of points over- or under-marked on the faulty move. They are marked last in the turn sequence.

Key rules:

- A school is committed once dice are rolled or a token has been advanced too far and released.
- The opponent is never obliged to mark a school — but if they do, it must be marked in full.
- **False school**: incorrectly claiming a school — itself becomes a school for the opponent.
- **School escalation** (_augmentation d'école_): dispute over a school that escalates back and forth.
- No "school of school" exists (marking a school is never itself penalised).
- No school of holes for marking a bredouille hole as simple; a school of points applies for forgetting holes due to earned points.

---

## 10. The Scored Game (_Partie à Écrire_) — _Not Yet Implemented_

The scored game is played for an agreed number of **rounds** (_marqués_) and supports 2, 3, or 4 players (the 3/4-player format is called _chouette_).

### Goal of a Round

- A player must score at least **6 holes** and then **leave** to win the round.
- If both players are tied at ≥ 6 holes when one leaves, the round is **drawn** (_refait_) and replayed immediately.
- Winner of a round = player with the most holes after a leave.

### Bredouille in the Scored Game

- **Small bredouille** (_petite bredouille_): ≥ 6 consecutive holes → round counts **double**.
- **Big bredouille** (_grande bredouille_): ≥ 12 consecutive holes → round counts **quadruple**.
- The second player to score holes takes the flag (_pavillon_) at their peg. If the first player scores again, they take back the flag, cancelling both bredouilles.

### Payments

Each round is settled in tokens:

- Winner receives (winner's holes − loser's holes) tokens, plus **consolation** of 2 tokens.
- Small bredouille: each winner hole worth 2 tokens; consolation = 4.
- Big bredouille: each winner hole worth 4 tokens; consolation = 8.
- Loser holes always deducted at 1 token each.
- In 3-player games, the non-playing player also receives consolation from the loser.
- Replays double the consolation price each time.

A **queue** accumulates tokens from each defeat and is paid at game end to the player with the most tokens.

**Bets** (_paris_): rounds played beyond each player's average (the _contingent_). The first double-bet is the **postillon** (28 tokens, including 20 from the queue); each subsequent bet costs 8 tokens.

### Multi-Player Rotation (3 or 4 Players)

- 3 players: after each round, the winner is replaced by the third player; first-move privilege stays with the player who remained.
- 4 players: two teams of two; each player plays two rounds in a row then gives way to their partner.
- Non-active players may advise (opponents in 3-player, teammates in 4-player) but may not touch game components.

---

## 11. Implementation Status Summary

| Feature                                         | Status                         |
| ----------------------------------------------- | ------------------------------ |
| Board state, movement, rest corner              | Implemented                    |
| Helpless man                                    | Implemented                    |
| True / false hits (small jan, big jan, corner)  | Implemented                    |
| Jan filling and conserving (small, big, return) | Implemented                    |
| Opening jans (two tables, mezeas, six tables)   | Implemented                    |
| Exit and exit points                            | Implemented                    |
| Bredouille (hole bredouille)                    | Implemented (`can_bredouille`) |
| Forbidden jans                                  | Implemented                    |
| Stay / leave (_s'en aller_)                     | Implemented (`Go` event)       |
| Big bredouille (`can_big_bredouille`)           | Field exists, not used         |
| Schools                                         | Not implemented                |
| Scored game / rounds                            | Not implemented                |
| Misery pile (_pile de misère_)                  | Not implemented                |
