> 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/item/itemoptionnames.md).

# ItemOptionNames

This file overrides the display names for item option lines on tooltips. The server ships a built-in table of option display strings and sends them to every client at login, so no client edit is needed to rename an option. This file is server-only and optional. Entries you list override individual built-in strings; everything you leave out keeps its default. If the file is missing, all defaults are used.

## File Location

```
Data/Item/ItemOptionNames.xml
```

## Dependencies

| Related                                                     | Purpose                                                            |
| ----------------------------------------------------------- | ------------------------------------------------------------------ |
| [ItemOption.xml](/docs/data/item/itemoption.md)             | Defines the option bonuses whose names this file relabels (Type 0) |
| [SetItemOption.xml](/docs/data/item/setitemoption.md)       | Ancient set bonuses - named from Type 0, same pool as item options |
| [380ItemOption.xml](/docs/data/item/380itemoption.md)       | 380 option strings (Type 2), also editable there                   |
| [SocketItemOption.xml](/docs/data/item/socketitemoption.md) | Socket seed / bonus / package strings (Types 3-5)                  |

## Structure

```xml
<ItemOptionNames>
    <Option Type="0" Index="88" Text="Reflect Damage +%d%% [PVP]" />
</ItemOptionNames>
```

Each `<Option>` targets one entry in one option table and replaces its display string.

## Attributes

| Attribute  | Type   | Default | Effect                                                                                                        |
| ---------- | ------ | ------- | ------------------------------------------------------------------------------------------------------------- |
| `Type`     | int    | 0       | Which option table to override. See table below                                                               |
| `Index`    | int    | 0       | Option id inside that table                                                                                   |
| `Category` | int    | 0       | Only used for Socket Seed (Type 3) = element type 1-6. Leave 0 or omit otherwise                              |
| `Text`     | string | -       | The display format string, up to 63 characters. Required; an `<Option>` without a `Text` attribute is skipped |

### Type Values

| Type | Table          | Index range                                                  |
| ---- | -------------- | ------------------------------------------------------------ |
| 0    | Item Option    | 80-161 - covers per-item options **and** ancient set bonuses |
| 2    | 380 Option     | 1-8                                                          |
| 3    | Socket Seed    | Category = element type 1-6                                  |
| 4    | Socket Bonus   | socket bonus id                                              |
| 5    | Socket Package | socket package id                                            |

## Text Format Rules

The `Text` string is a display format that the client fills in with the option's numeric value.

* Keep the same single `%d` placeholder the default uses, for example `Damage +%d` or `Reflect Damage +%d%%`.
* Use `%%` for a literal percent sign.
* More than one `%d` is rejected and the built-in default is kept for that entry.
* Maximum length is 63 characters; longer text is truncated.

## Hiding a Line

Set `Text=""` (empty) to hide that option line on the tooltip. The client skips the line with no blank gap.

{% hint style="warning" %}
Blanking is honored for Item Options (Type 0) only, because that is the only render path guarded against an empty string. A blank `Text` on any other Type is ignored (the default name is kept) and logged as rejected. Do not rely on `Text=""` for Set, 380, or Socket entries.
{% endhint %}

## Important Behavior

* The file only overrides. An entry that matches a built-in option replaces its name; an entry that does not match a built-in slot is added as a new record.
* Overrides are applied at load and sent to clients at login. A player already logged in keeps the strings they received; changes take effect on their next login.
* An `<Option>` with no `Text` attribute is skipped. An empty `<ItemOptionNames>` root (the shipped default) applies no overrides.

## Examples

```xml
<?xml version="1.0" encoding="utf-8"?>
<ItemOptionNames>
    <!-- Tag reflect damage as PvP-relevant -->
    <Option Type="0" Index="88" Text="Reflect Damage +%d%% [PVP]" />

    <!-- Renaming index 136 changes it everywhere it appears - on items AND in set bonuses -->
    <Option Type="0" Index="136" Text="Strength +%d" />

    <!-- Hide an item-option line entirely (Type 0 only) -->
    <Option Type="0" Index="108" Text="" />
</ItemOptionNames>
```

## Common Issues

{% hint style="warning" %}
Override ignored: confirm `Text` is present, has at most one `%d`, and (for a blank line) that `Type` is 0. Blanks on other types are rejected.
{% endhint %}

{% hint style="warning" %}
Percent sign shows as a stray character: use `%%` for a literal percent, and keep exactly one `%d` for the numeric value.
{% endhint %}

{% hint style="info" %}
Change not visible in game: the new strings ship to clients at login. Re-log the character after editing and restarting the GameServer.
{% endhint %}
