> For the complete documentation index, see [llms.txt](https://docs.rainmad.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.rainmad.com/resources/mad-racing-system-racing-tablet/progression.md).

# Progression

### Rating and tiers

Every finish moves the player's ELO. Settings live in `cfg.elo`: starting rating, K-factor, and the minimum number of participants for a race to count at all — a solo lap does not move anyone's rating.

The rating maps to a tier from `cfg.tiers`:

| Tier    | From ELO     |
| ------- | ------------ |
| God     | granted only |
| Master  | 1850         |
| Creator | 1700         |
| Racer   | 0            |

Tiers are ranked by **position in the list**, not by name. The first entry is highest, the last is the default.

A tier granted manually overrides ELO — a player set to `Creator` keeps it even if their rating drops. Grant with:

```
createracinguser 5 Creator
```

Tiers gate capabilities through `cfg.permissions`. See cfg.lua Reference.

***

### Crews

Founded from the tablet with `createCrew` permission. A crew has a tag, an emblem from `cfg.crew.emblems`, a picture and a description.

| Join mode  | Behaviour                  |
| ---------- | -------------------------- |
| `open`     | Anyone joins instantly     |
| `approval` | Requests go to the founder |
| `closed`   | Invite only                |

The founder approves or rejects requests, kicks members, and can disband. Crew tag and emblem show next to the member's name in lobbies, results and on their 3D nameplate.

***

### Bounties

One active bounty at a time, rolled every `cfg.bounties.intervalMin` minutes on a random eligible track.

The target time is derived from the track's best lap:

```
target = best_ms * targetMult + random(extraMs)
```

If the track has no recorded time yet, it falls back to `checkpoints * fallbackMsPerCp`.

Beat the target on that track and the prize is paid. The bounty expires after `cfg.bounties.expireMin` minutes and re-rolls. `Master`+ can re-roll it early from the tablet or the admin tab.

Set `requireRank` to a tier name to gate claims, or leave it `false` for everyone.

***

### Pink slips

A 1v1 where the loser's vehicle transfers to the winner. Hidden entirely on the standalone framework, which has no vehicle ownership.

Enabling it on a lobby forces `maxPlayers = 2`, `isCompetition = false` and `buyIn = 0`.

Allowed formats come from `cfg.pinkSlips.allowedTypes` — sprint and circuit by default. Drift, elimination and time trial are excluded because they need a clean, unambiguous winner.

**How a wager resolves:**

1. Both players stake a plate. Ownership is verified on the server at lobby create **and** again at join.
2. The race runs.
3. The loser's plate becomes a **pending claim** for the winner.
4. The winner drives to a `cfg.pinkSlips.redeemLocations` entry and redeems it. Proximity is checked server-side.

`awardOnDnf` decides what happens when someone does not finish: `true` hands the win to the survivor, `false` requires both to finish.

{% hint style="warning" %}
The transfer is real. The vehicle leaves the loser's garage permanently.
{% endhint %}
