> ## Documentation Index
> Fetch the complete documentation index at: https://docs.rpg-leveling.zuxaw.com/llms.txt
> Use this file to discover all available pages before exploring further.

# XP Curve Overrides Config

> XPCurveOverridesConfig.json - per-range XP earned and level-up cost multipliers.

# XP Curve Overrides Config

**File:** `mods/Zuxaw_RPGLeveling/XPCurveOverridesConfig.json`

Per **player level range**, scale **XP earned** (kills / block break) and/or **XP needed to reach the next level**. Use it to tune progression in parts of the curve without changing global `LevelBaseXP` or `RateExp`.

On upgrade from **0.3.6**, existing `Multiplier` keys are renamed automatically to `XpRateMultiplier` (config migration **0.3.7**).

***

## Configuration Structure

PascalCase keys (same convention as [Zone Level Config](config-zones)).

| Option      | Type   | Description                                                   |
| ----------- | ------ | ------------------------------------------------------------- |
| `Version`   | String | Plugin version (auto-updated on load).                        |
| `Overrides` | Array  | List of override entries. **Empty** (default) = no overrides. |

## Override Entry

| Option                | Type    | Description                                                                                                                                              |
| --------------------- | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `From`                | Integer | First **player level** covered, inclusive. Must be `>= 1`.                                                                                               |
| `To`                  | Integer | Last **player level** covered, inclusive. Must be `>= From`.                                                                                             |
| `XpRateMultiplier`    | Double  | Multiplier on XP **earned** per kill / block break while current level is in `[From, To]`. `1.0` = unchanged, `2.0` = double. Omitted or `<= 0` → `1.0`. |
| `LevelCostMultiplier` | Double  | Multiplier on XP **needed for next level** while current level is in `[From, To]`. `1.0` = unchanged, `0.5` = half the grind. Omitted or `<= 0` → `1.0`. |

Rules:

* Outside every range, both multipliers are `1.0`.
* On overlap, the **first matching** entry wins.
* Invalid `From` / `To` entries are skipped at load.

***

## Example

```json theme={null}
{
  "Version": "0.3.7",
  "Overrides": [
    { "From": 50, "To": 79,  "XpRateMultiplier": 2.0, "LevelCostMultiplier": 0.5 },
    { "From": 80, "To": 100, "XpRateMultiplier": 3.0 }
  ]
}
```

* Level **50–79**: **2×** XP per kill/block, **half** XP to level up.
* Level **80–100**: **3×** XP earned; level cost unchanged (`LevelCostMultiplier` defaults to `1.0`).

***

## How it composes

**XP earned** (multiplicative on top of `RateExp` / `ZoneRateExp`):

```
XP per kill         = baseXP × levelDiffMultiplier × RateExp × XpRateMultiplier
XP per block break  = baseBlockXP × playerScale × zoneMultiplier × RateExp × ZoneRateExp × XpRateMultiplier
```

**XP to next level** (HUD, `/lvl info`, leveling logic):

```
XP needed = baseDelta × LevelCostMultiplier
```

`baseDelta` is the standard step from `LevelBaseXP × level^2.5 + LevelOffset`. Total XP to reach a level sums scaled deltas across all prior steps.

***

## File Location and Reload

* **Path:** `mods/Zuxaw_RPGLeveling/XPCurveOverridesConfig.json`
* The plugin creates a default empty file on first run.
* Edit the file and run **`/lvl reload`** (`rpgleveling.command.reload`) to apply changes without restarting.

***

## Related

* [Configuration Overview](config-overview) - All config files.
* [Main Plugin Config](config-main) - `LevelBaseXP`, `LevelOffset`, `RateExp`, etc.
* [Formulas](formulas) - XP per kill, level-difference multiplier, zones.
* [Config migrations](config-migrations) - `Multiplier` → `XpRateMultiplier` rename.
