> For the complete documentation index, see [llms.txt](https://lethium.gitbook.io/lethium-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://lethium.gitbook.io/lethium-docs/gameplay/season-pass.md).

# Season Pass

The 100-level Season Pass: seasons, XP, free and premium tracks, and reward fields.

File: `plugins/ClickEmCore/modules/seasonpass.yml`. Module id: `seasonpass`. Commands: `/seasonpass`, `/season`, `/battlepass`, `/bp`, `/pass`.

The Season Pass is a **100-level track** with a **free** and a **premium** reward at each level. Premium is bought only with **Gems** from the [Gems Shop](/lethium-docs/gameplay/gems-shop.md) (the Coins purchase was removed).

### Seasons

```yaml
season-length-days: 14
xp-per-kill: 4
xp-per-currency-earned: 0
```

The current season number is worked out **from the real date** (days since 1970 divided by `season-length-days`), not stored anywhere. So **every player moves into a new season at the same moment**, when the date crosses a boundary. Progress restarts each season.

| Key                                                                          | Default | Meaning                                                                                     |
| ---------------------------------------------------------------------------- | ------- | ------------------------------------------------------------------------------------------- |
| `season-length-days`                                                         | 14      | Season length.                                                                              |
| `xp-per-kill`                                                                | 4       | Season XP per kill.                                                                         |
| `xp-per-currency-earned`                                                     | 0       | Season XP per Coin earned.                                                                  |
| `xp-per-kill-by-mob`, `xp-per-kill-by-zone`, `xp-per-currency-earned-by-mob` | `{}`    | Overrides. Mob beats zone beats the flat rate.                                              |
| `catch-up.multiplier`, `catch-up.days`                                       | 1.0, 0  | Late joiners earn `multiplier` x XP for their first `days` days. `0` or `1.0` turns it off. |

VIP ranks add `seasonpass-xp-bonus-percent`.

### Levels

XP to reach a level follows `50 x level x (level - 1)` (100, 300, 600, 1000, ...). Each level is an entry:

```yaml
levels:
  5:
    xp-required: 1000
    free-currency: 6
    premium-currency: 31
    free-keys: {starter: 1}
    premium-keys: {starter: 1}
    free-boost: currency_rush_1
    premium-boost: power_boost_1
```

Every field comes in a `free-` and `premium-` pair. The premium version can only be claimed by players who bought the pass.

| Field                                           | Meaning                                                                                                                                                         |
| ----------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `xp-required`                                   | Total season XP to reach the level.                                                                                                                             |
| `free-currency`, `premium-currency`             | Coins, **scaled** at the moment the level is reached.                                                                                                           |
| `free-currencies`, `premium-currencies`         | Other currencies, for example `{gems: 20, artifact_essence: 5}`.                                                                                                |
| `free-echoes`, `premium-echoes`                 | That many random Echoes. The rarity is capped by the zone the player is standing in when they claim.                                                            |
| `free-pet-box-rarity`, `premium-pet-box-rarity` | One guaranteed pet of that rarity (`legendary`, `mythical`...), no egg. The species comes from about the zone the player stands in.                             |
| `free-keys`, `premium-keys`                     | Crate keys `{key id: amount}`.                                                                                                                                  |
| `free-boost`, `premium-boost`                   | A boost id from `boosts.yml`, given free at its own duration. Skips requirements, cooldown and cost, so a level can preview a tier the player has not unlocked. |

The boost ladder climbs with the pass: tier I boosts on levels 3 to 15, tier II on 17 to 40, tier III on 45 to 100, cycling through all nine categories.

#### Key budget

A full season hands out at most **6 celestial and 9 grandcosmetic** keys. The rest of the lifetime limit of 10 and 15 is in `achievements.yml`. Keep that in mind before adding more.

### How to

* **Shorter or longer seasons:** `season-length-days`.
* **Faster levelling:** raise `xp-per-kill`, or lower the `xp-required` values.
* **Change premium price:** `seasonpass.premium-cost` in `gemsshop.yml`.
* **A reward only for premium:** add only the `premium-` field to that level.

### Staff commands

`/ceadmin seasonpass set <player> <xp>`, `addxp <player> <xp>`, `premium <player>` (grants the premium track), `reset <player>`.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://lethium.gitbook.io/lethium-docs/gameplay/season-pass.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
