ItemGroup Configuration
An item group is a list of pieces and the options it gives. When enough pieces of a group are worn, its options apply. Pieces use the same filters as ItemOption.xml, so the same items can form a +9 group and a +13 group with different options.
Groups work next to ancient sets. Nothing is stored on the item: editing the file changes every existing item on the next reload.
File Location#
GameServer/Data/Plugins/Items/ItemGroup.xml
Dependencies#
| Depends On | Purpose |
|---|---|
| Item.xml | Item indexes used by ItemMinIndex / ItemMaxIndex |
| OptionIndex Reference | Valid OptionIndex values (same pool as ItemOption.xml and SetItemOption.xml) |
| ItemOptionNames.xml | Text shown for each option in the tooltip |
Configuration Structure#
<ItemGroupList Enabled="1">
<Group Id="1" Name="Dragon +9" Pieces="*" Class="*">
<Member ItemMinIndex="3585" ItemMaxIndex="3585" ItemLvlMin="9"/>
<Member ItemMinIndex="4097" ItemMaxIndex="4097" ItemLvlMin="9"/>
...
<Option OptionIndex="91" Value="5"/>
</Group>
</ItemGroupList>
ItemGroupList#
| Attribute | Type | Range | Default | Effect |
|---|---|---|---|---|
| Enabled | int | 0-1 | 1 | 0 turns the whole feature off. The shipped file has Enabled="0". |
Group#
| Attribute | Type | Range | Default | Effect |
|---|---|---|---|---|
| Id | int | 1-65535 | - | Group number. Must be unique. A group without a valid Id is skipped. |
| Name | text | max 31 characters | empty | Shown in the item tooltip. |
| Pieces | int or * | 1 - member count | * | How many members must be worn. * = all members. |
| Class | list or * | DW, DK, ELF, MG, DL, SUM, RF | * | Classes that get the options, comma separated, e.g. DK,MG. An unknown name skips the group. |
| Replaces | id list | up to 8 ids | empty | Groups this group turns off while it is active, e.g. 1 or 1,2. |
Member#
One piece. Every filter uses * (or a missing attribute) for "don't check".
| Attribute | Type | Range | Effect |
|---|---|---|---|
| ItemMinIndex / ItemMaxIndex | int | 0-8191 | Item index range, Section*512 + Index. |
| Slot | int | 0-11 | Equip slot: 0 right hand, 1 left hand, 2 helm, 3 armor, 4 pants, 5 gloves, 6 boots, 7 wings, 8 helper, 9 pendant, 10 / 11 rings. |
| SkillSwitch | int | 0-1 | 1 = must have skill, 0 = must not. |
| LuckSwitch | int | 0-1 | 1 = must have luck, 0 = must not. |
| AditionalMin / AditionalMax | int | 0-15 | Jewel of Life option level. |
| Excellent | bitmask | 0-63 | 0 = must not be excellent. Otherwise the item needs any of the bits. |
| ItemLvlMin / ItemLvlMax | int | 0-15 | Item level (+0 to +15). |
| Ancient | int | 0-3 | 0 = not ancient, 1 = tier 1, 2 = tier 2, 3 = any ancient. |
Option#
| Attribute | Type | Range | Effect |
|---|---|---|---|
| OptionIndex | int | 80-165 | The effect. Same ids as ItemOption.xml. |
| Value | int | any | Amount, in the effect's own scale (flat or percent, see the OptionIndex reference). |
Limits: 255 groups, 16 members and 8 options per group.
Important Behavior#
- One worn item counts for one member only. Two members with the same ring range need two rings.
- An item counts only while its requirements are met and its durability is above 0.
- The options apply once per group, not once per piece.
Replaceschains: if +15 replaces +13 and +13 replaces +9, a full +15 set gets only the +15 options. A matched group turns off its targets even when it is itself turned off.- A Replaces loop (1 replaces 2, 2 replaces 1) is ignored for the groups in the loop, with a warning in the log.
- Options 100, 101 and 105 (wing options per item level) do not work in a group. They are skipped with a warning.
- Without
Replaces, every matched group applies. A full +13 set then gets both the +9 and the +13 options. - The vanilla +10 to +15 full armor bonus (extra defense for 5 pieces of one armor type) still applies on top of groups.
Tooltip#
Items in a group get a second tooltip box to the right of the item tooltip (left when there is no room on the right). The ancient set box stays on the left.
The box shows:
- Pieces - the members of the group, with the level of the worn piece. Blue = worn, green = the item you hover (not worn yet), gray = missing.
- One block per group the item belongs to, up to 3:
Name (worn/needed)and its options. The level filter is not checked for this list, so a +7 piece also shows the +9 and +13 groups it can grow into.
| Option color | Meaning |
|---|---|
| Blue | Group is active now |
| Green | Group becomes active if you equip this item |
| Gray | Group is not active (not enough pieces, wrong class, or replaced) |
The client does not check stat requirements, so a piece worn without enough stats can show a group as blue while the server does not apply it.
Examples#
Dragon set with three steps. The shipped file has this example.
<ItemGroupList Enabled="1">
<Group Id="1" Name="Dragon +9" Pieces="*">
<Member ItemMinIndex="3585" ItemMaxIndex="3585" ItemLvlMin="9"/> <!-- Helm -->
<Member ItemMinIndex="4097" ItemMaxIndex="4097" ItemLvlMin="9"/> <!-- Armor -->
<Member ItemMinIndex="4609" ItemMaxIndex="4609" ItemLvlMin="9"/> <!-- Pants -->
<Member ItemMinIndex="5121" ItemMaxIndex="5121" ItemLvlMin="9"/> <!-- Gloves -->
<Member ItemMinIndex="5633" ItemMaxIndex="5633" ItemLvlMin="9"/> <!-- Boots -->
<Option OptionIndex="91" Value="5"/> <!-- Max HP +5% -->
<Option OptionIndex="127" Value="5"/> <!-- Defense +5% -->
</Group>
<Group Id="2" Name="Dragon +13" Pieces="*" Replaces="1">
<!-- same 5 members with ItemLvlMin="13" -->
<Option OptionIndex="91" Value="10"/>
<Option OptionIndex="127" Value="10"/>
<Option OptionIndex="94" Value="5"/>
</Group>
<Group Id="3" Name="Dragon +15" Pieces="*" Replaces="2">
<!-- same 5 members with ItemLvlMin="15" -->
<Option OptionIndex="91" Value="15"/>
<Option OptionIndex="127" Value="15"/>
<Option OptionIndex="94" Value="10"/>
<Option OptionIndex="102" Value="5"/>
</Group>
</ItemGroupList>
| Worn | Active group |
|---|---|
| full set +9 to +12 | Dragon +9 |
| full set +13 to +14 | Dragon +13 |
| full set +15 | Dragon +15 |
| 4 pieces only | none |
Partial set: Pieces="3" on a 5-member group gives the options for any 3 of the 5 pieces.
Reloading#
The file is re-read by the standard plugin reload. Online players get the new stats right away. The tooltip text refreshes on their next login.
Common Issues#
| Symptom | Cause | Fix |
|---|---|---|
| Group never activates | A piece is broken (0 durability) or its stat requirements are not met | Repair the item, meet the requirements |
| Both +9 and +13 options apply | The +13 group has no Replaces | Add Replaces="<+9 group id>" |
| Option line missing in tooltip | No display name for that OptionIndex | Add a Type 0 entry in ItemOptionNames.xml |
| Group missing after reload | Bad Id, unknown Class name or no valid members | Check the GameServer log for ItemGroup warnings |