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

# ItemImplicit

Always-on item bonuses granted by class, slot and item range

An **implicit** is a bonus an item grants simply by being worn. It is not rolled, not stored on the item, and cannot be lost — it is derived from *which* item it is, *who* is wearing it, and *where* it is equipped.

This replaces the old hardcoded `MagicDamageRate` column in [Item.xml](/docs/data/item/item.md), which could only express four fixed effects on four fixed item ranges.

{% hint style="info" %}
Because implicits are derived rather than stored, editing this file changes **every existing item** the moment the server reloads. Nothing needs regenerating, and a mistake is undone by editing the file back.
{% endhint %}

## File Location

```
GameServer/Data/Plugins/Items/ItemImplicit.xml
```

## Dependencies

| Depends On                                                        | Purpose                                                                                                                          |
| ----------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- |
| [Item.xml](/docs/data/item/item.md)                               | Item indexes, equipment slots, and the `DropLevel` used by the `Legacy` scale profiles                                           |
| [OptionIndex Reference](/docs/data/item/optionindex-reference.md) | Valid `OptionIndex` values (the shared the shared item option pool used by implicits, ancient set bonuses and item effects pool) |
| [ItemOptionNames.xml](/docs/data/item/itemoptionnames.md)         | Optional display-name overrides for implicit effects                                                                             |

## Configuration Structure

```xml
<ItemImplicitList Enabled="1">

    <!-- Wizardry damage — section 5 -->
    <Implicit OptionIndex="162" Value="94" Scale="Legacy" ChaosBonus="25"
              ScaleByDurability="1" Class="DW" Slot="0"
              Section="5" ItemMinIndex="7" ItemMaxIndex="7" />

    <!-- A new implicit: +30 defence on an armour range, +2 per item level -->
    <Implicit OptionIndex="83" Value="30" PerLevel="2" Scale="Linear"
              Class="DK" Slot="3"
              Section="8" ItemMinIndex="0" ItemMaxIndex="50" />

</ItemImplicitList>
```

## Attributes

| Attribute           | Required | Description                                                                                                                                              |
| ------------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `OptionIndex`       | yes      | Effect id from the shared option pool. See [OptionIndex Reference](/docs/data/item/optionindex-reference.md). Ids 162-165 are implicit-only (see below). |
| `Value`             | yes      | Base magnitude, before any scaling.                                                                                                                      |
| `Scale`             | yes      | `Flat`, `Linear`, `Legacy` or `LegacyBook`. See [Scale Profiles](#scale-profiles).                                                                       |
| `PerLevel`          | no       | `Linear` only — amount added per item level.                                                                                                             |
| `ChaosBonus`        | no       | `Legacy` only — flat bonus replacing the excellent term. Used by the Chaos Lightning Staff.                                                              |
| `ScaleByDurability` | no       | `1` multiplies the applied value by the item's durability state, so a worn item grants less. Default `0`.                                                |
| `Class`             | no       | A single class: `DW`, `DK`, `ELF`, `MG`, `DL`, `SUM`, `RF`. Omit or use `ANY` for every class.                                                           |
| `Slot`              | no       | Equipment slot the item must occupy. `0` = right hand, `1` = left hand, `2` = helm, and so on. `-1` (default) = any slot.                                |
| `Section`           | no       | When present, `ItemMinIndex`/`ItemMaxIndex` are read as offsets inside that section rather than absolute indexes.                                        |
| `ItemMinIndex`      | yes      | First item in the range.                                                                                                                                 |
| `ItemMaxIndex`      | yes      | Last item in the range. `Legacy` profiles require this to equal `ItemMinIndex`.                                                                          |
| `ItemLvlMin`        | no       | Only apply at or above this item level (0-15).                                                                                                           |
| `ItemLvlMax`        | no       | Only apply at or below this item level.                                                                                                                  |
| `Excellent`         | no       | `0` = only non-excellent items, `1` = only excellent items, `-1` (default) = either.                                                                     |
| `Ancient`           | no       | `0` = only non-ancient, `1`/`2` = only that ancient tier, `3` = any ancient tier, `-1` (default) = either.                                               |

Set `Enabled="0"` on the root node to switch the whole system off.

## The Three Rules

**One class per row.** `Class` takes a single value. An item usable by two classes therefore needs two rows — which is exactly what lets you give the same staff a different implicit strength for each class.

**First three matching rows win.** An item can carry at most three implicits. When more than three rows match, the first three **in file order** apply. Row order is a balance lever, so keep related rows together and be deliberate when inserting new ones.

**Both hands sum.** If a character holds two items that each grant the same implicit, the values add together.

## Scale Profiles

`Scale` decides how `Value` grows with item level.

| Profile      | Formula                                        |
| ------------ | ---------------------------------------------- |
| `Flat`       | `Value` — never changes                        |
| `Linear`     | `Value + PerLevel × itemLevel`                 |
| `Legacy`     | The original MU curve, then `÷2 + itemLevel×2` |
| `LegacyBook` | The original MU curve, then `÷6`               |

`Legacy` and `LegacyBook` exist to reproduce the pre-plugin behaviour exactly and are used by every row the migration generated. Their curve applies an excellent or ancient bonus derived from the item's `DropLevel`, adds `itemLevel × 3`, and adds a further triangular bonus from +10 upward.

{% hint style="info" %}
**`Value` is an input, not the number players see.** Under `Legacy` the result is roughly half of `Value`, because the original MU formula halves it. A Grand Viper Staff with `Value="130"` and `DropLevel 147` shows **78%** at +0 excellent:

```
130 + (130×25)/147 + 5 = 157      excellent term
157 / 2 + 0×2          = 78       stage B
```

That is the same number the pre-plugin server and client produced. If you want a row whose configured number is what players read, use `Linear` or `Flat`.
{% endhint %}

{% hint style="warning" %}
Because the `Legacy` profiles scale off one specific item's `DropLevel`, a `Legacy` row must target exactly one item — `ItemMinIndex` must equal `ItemMaxIndex`. Ranged `Legacy` rows are rejected at load with a warning in the GameServer log.

**Use `Linear` for anything new.** It is predictable, works across an index range, and does not inherit the original curve's quirks.
{% endhint %}

## Implicit-only Effects

Four effect ids exist only for implicits, because they are multiplicative rises applied during damage calculation rather than flat additions to a stat:

| OptionIndex | Effect                                                             |
| ----------- | ------------------------------------------------------------------ |
| 162         | Wizardry damage % — raises magic damage                            |
| 163         | Curse damage % — raises curse damage                               |
| 164         | Scepter pet damage % — raises Dark Spirit (raven) damage           |
| 165         | Book success rate — flat % added to Sleep, Innovation and Weakness |

Every other id in the [OptionIndex Reference](/docs/data/item/optionindex-reference.md) also works as an implicit, so an implicit can grant defence, HP, resistances, critical rate, or anything else the option pool already supports.

## Display

The client never calculates implicit values. The server resolves every possible value at load — each item level against each excellent/ancient combination — and sends the finished table to the client, which only looks it up and prints it.

Two consequences worth knowing:

* Tooltips show only the implicits that apply to **your** class, at full durability.
* The character and pet windows show the totals actually in effect, including durability loss and both hands.

Effects with no built-in wording are named from [ItemOptionNames.xml](/docs/data/item/itemoptionnames.md), the same table that names every other item option.

## Reloading

The file is re-read by the standard plugin reload. Values shown to already-connected players refresh on their next login, since the resolved tables are sent at login.
