> ## 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.

# Override entity xp and level

> How to override level and XP for entities from a specific mod - ZoneLevelConfig and InstanceLevelConfig entity overrides.

# Override entity xp and level

You can override **level** and **XP** for specific NPCs (e.g. a mod’s boss or custom mob) so they don’t use the default zone/instance range. Use this when a mod adds entities that should be harder, give more XP, or ignore level scaling.

## Two places to override

| Where                    | Config file                                                           | Use when                                            |
| ------------------------ | --------------------------------------------------------------------- | --------------------------------------------------- |
| **Open world (zones)**   | `ZoneLevelConfig.json` → **EntityOverrides**                          | The mob appears in the normal world (zones/biomes). |
| **Instances / dungeons** | `InstanceLevelConfig.json` → **EntityOverrides** inside each instance | The mob appears only inside a dungeon/instance.     |

* **ZoneLevelConfig** overrides apply **everywhere** in the open world for that entity.
* **InstanceLevelConfig** overrides apply **only inside that instance** and take precedence over ZoneLevelConfig for mobs in that instance.

***

## 1. Find the entity id

You need the **entity type id** (e.g. `Bear_Grizzly`, `MyMod_Boss_Phase2`). Options:

* **Mod documentation** - Many mods list their NPC/entity ids.
* **Plugin logs** - With `Debug: true` in `RPGLevelingConfig.json`, the plugin may log entity ids when mobs spawn or when XP is awarded; check the server log for the id.
* **In-game** - Some mods or dev tools show entity type on hover or in a debug panel.
* **Trial** - If the mod follows Hytale naming, ids are often `ModName_EntityName` (e.g. `Yungs_Skeleton_King`). You can add an override with your guess and see if level/XP change for that mob.

The id is usually **PascalCase** or **Snake\_Case** and must match exactly (case-sensitive).

***

## 2. Override in the open world (ZoneLevelConfig)

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

Add or extend the top-level **`EntityOverrides`** array:

```json theme={null}
{
  "Version": "0.2.0",
  "Zones": [ ... ],
  "EntityOverrides": [
    {
      "EntityId": "Bear_Grizzly",
      "Level": 80,
      "DisableLevelScaling": false
    },
    {
      "EntityId": "SomeMod_Boss_Dragon",
      "Level": 100,
      "DisableLevelScaling": false,
      "XP": 5000.0
    }
  ]
}
```

| Field                     | Description                                                                                                                                                                       |
| ------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **`EntityId`**            | The entity type id from the mod (e.g. `SomeMod_Boss_Dragon`).                                                                                                                     |
| **`Level`**               | Fixed level for this entity (used for damage/HP scaling, gap penalties, and XP formula if you don’t set `XP`). Can be above the zone max (e.g. 100, 150).                         |
| **`DisableLevelScaling`** | `true` = this entity ignores level-based damage/HP and gap bonuses; XP uses HP-based formula only. `false` = normal level scaling using the overridden level.                     |
| **`XP`**                  | Optional. If set, killing this entity always gives this base XP (still multiplied by `RateExp` in main config). If omitted, XP is calculated from its level and level difference. |

Example: a mod adds a world boss **`CoolMod_Ancient_Golem`**. You want it always level 90 and to give 3000 XP per kill:

```json theme={null}
{
  "EntityId": "CoolMod_Ancient_Golem",
  "Level": 90,
  "DisableLevelScaling": false,
  "XP": 3000.0
}
```

***

## 3. Override inside a dungeon (InstanceLevelConfig)

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

For mobs that **only appear inside an instance** (e.g. a dungeon boss), add overrides in that instance’s **`EntityOverrides`**:

```json theme={null}
{
  "Id": "Yungs_HyDungeons_Skeleton_Dungeon",
  "LevelMin": 55,
  "LevelMax": 75,
  "EntityOverrides": [
    {
      "EntityId": "Yungs_Skeleton_King",
      "Level": 75,
      "DisableLevelScaling": false,
      "XP": 2500.0
    }
  ]
}
```

Same fields as in ZoneLevelConfig: **`EntityId`**, **`Level`**, **`DisableLevelScaling`**, **`XP`**. These apply only when the player/mob is in that instance; they override ZoneLevelConfig for that instance.

See [Dungeon mod setup](dungeon-mod-setup) for a full Skeleton Dungeon example.

***

## 4. Summary

| Goal                                                      | Config                                                                         | Where                                                         |
| --------------------------------------------------------- | ------------------------------------------------------------------------------ | ------------------------------------------------------------- |
| Override a **mod’s mob in the open world**                | ZoneLevelConfig.json → **EntityOverrides**                                     | Top-level array                                               |
| Override a **mod’s mob only in a dungeon**                | InstanceLevelConfig.json → **Instances** → that instance → **EntityOverrides** | Per-instance                                                  |
| Boss with **fixed level + fixed XP**                      | Either                                                                         | Set **Level** and **XP**; optional **DisableLevelScaling**    |
| Boss that **doesn’t scale with level** (HP-based XP only) | Either                                                                         | Set **Level** (for display) and **DisableLevelScaling: true** |

After editing, save the JSON file. The plugin reads config on load; restart the server or reload the plugin to apply changes.

For full field reference, see [Configuration](configuration) → Zone Level Config and Instance Level Config.
