Item Level Curve
Replaces the fixed vanilla +level bonus with your own table. Each curve lists the bonus at +1 through +15 for one stat, and you assign it to item ranges. Items no curve covers keep the vanilla bonus.
File Location#
Data/Plugins/Items/ItemLevelCurve.xml
Loaded together with the item data (Item.xml), before shops and bags create items.
Dependencies#
| Depends On | Purpose |
|---|---|
| Item.xml | Item groups and numbers used in <Range>; the item's base damage / defense |
| ItemTiers | BaseMul is applied after the level bonus |
| ItemImplicit | Wizardry and curse damage scale there, not here |
| Client | Receives the curves at login (game data sync type 41) and uses the same math in tooltips |
Root#
<ItemLevelCurve Enable="1">
| Attribute | Type | Default | Effect |
|---|---|---|---|
Enable | 0/1 | 1 | 0 = vanilla bonus for every item. Use 1/0, not true/false (true reads as 0) |
Curve#
<Curve Name="Weapons" Stat="Damage"
Flat ="2 4 6 8 10 12 17 22 27 35 45 57 71 88 110"
Percent="0 0 0 0 0 0 2 4 6 10 15 21 28 36 45">
<Range Section="0"/>
</Curve>
| Attribute | Type | Default | Effect |
|---|---|---|---|
Name | string (31 chars) | "" | Label for log lines |
Stat | Damage / Defense / DefenseRate / MagicDefense | - | Which stat this curve owns. Unknown = curve skipped |
Flat | 15 numbers | all 0 | Flat bonus at +1 .. +15 |
Percent | 15 numbers | all 0 | % of the item's +0 value added at +1 .. +15. One decimal allowed (2.5) |
Bonus at +L = Flat[L] + (+0 value x Percent[L] / 100)
- Numbers are totals at that level, not steps. +13 uses the 13th number only.
- Separate with spaces or commas.
- Fewer than 15 numbers: the last one repeats (logged as a warning).
- Negative numbers become 0. Flat is rounded to a whole number, Percent to one decimal.
- A curve needs at least one of
Flat/Percent, or it is skipped. - A curve whose numbers go down at some level still loads, with a warning.
- Items above +15 use the +15 value.
| Stat | Changes |
|---|---|
Damage | Weapon min and max damage (each uses its own +0 value) |
Defense | Defense of armor, shields, wings, anything with defense |
DefenseRate | Shield block rate (defense success rate) |
MagicDefense | Magic defense |
"+0 value" is the item's stat before the level bonus, after the excellent / ancient base boost. So excellent and ancient items get a bigger percent part.
Range#
| Attribute | Type | Default | Effect |
|---|---|---|---|
Section | 0-15 | none | Item group. Alone = the whole group (items 0-511) |
Min | int | 0 with Section | First item. With Section: item number in the group. Without: absolute number (Group x 512 + Index), required |
Max | int | 511 with Section | Last item. Same rules as Min |
An invalid range (Max below Min, out of bounds, or missing Min/Max without Section) is skipped. A curve with no valid range is skipped.
Shipped Values vs Vanilla#
Bonus to max damage on a weapon with 100 max damage at +0 (armor defense uses the same shipped curve):
| Level | Vanilla | Shipped |
|---|---|---|
| +1 | 3 | 2 |
| +3 | 9 | 6 |
| +6 | 18 | 12 |
| +7 | 21 | 17 + 2 = 19 |
| +9 | 27 | 27 + 6 = 33 |
| +10 | 31 | 35 + 10 = 45 |
| +11 | 36 | 45 + 15 = 60 |
| +12 | 42 | 57 + 21 = 78 |
| +13 | 49 | 71 + 28 = 99 |
| +14 | 57 | 88 + 36 = 124 |
| +15 | 66 | 110 + 45 = 155 |
Vanilla = +3 per level, plus a small extra from +10 (2nd/3rd wings and some others use their own per-level step). On a 200-damage weapon the shipped +15 bonus is 110 + 90 = 200.
Important Behavior#
- First curve wins, per stat. Curves are checked in file order. Put special curves above general ones. A
Damagecurve and aDefensecurve on the same item do not conflict. - Uncovered items keep vanilla, stat by stat. Shields, wings, block rate and magic defense are vanilla in the shipped file.
- Shields: the shield
Defensecurve replaces vanilla's +1 per level. The ancient shield bonus is added after it. - Reload:
/reload itemre-reads this file with the item data and refreshes the client table. Items already in memory keep their old bonus, so players relog to see new values on items they carry.
Examples#
<ItemLevelCurve Enable="0">
</ItemLevelCurve>
Weapons only. +5 per level, +10 per level from +10.
<ItemLevelCurve Enable="1">
<Curve Name="Weapons" Stat="Damage"
Flat="5 10 15 20 25 30 35 40 45 55 65 75 85 95 105">
<Range Section="0"/> <Range Section="1"/> <Range Section="2"/>
<Range Section="3"/> <Range Section="4"/> <Range Section="5"/>
</Curve>
</ItemLevelCurve>
Swords 0,20-0,30 get a steeper curve. All other swords use the second curve.
<ItemLevelCurve Enable="1">
<Curve Name="Top swords" Stat="Damage"
Flat="3 6 9 12 15 18 24 30 36 46 58 72 88 106 130"
Percent="0 0 0 0 0 0 3 6 9 13 18 24 31 39 50">
<Range Section="0" Min="20" Max="30"/>
</Curve>
<Curve Name="Swords" Stat="Damage"
Flat="2 4 6 8 10 12 17 22 27 35 45 57 71 88 110"
Percent="0 0 0 0 0 0 2 4 6 10 15 21 28 36 45">
<Range Section="0"/>
</Curve>
</ItemLevelCurve>
<Curve Name="Shields" Stat="Defense"
Flat="1 2 3 4 5 6 8 10 12 16 20 25 31 38 46"
Percent="0 0 0 0 0 0 2 4 6 10 15 21 28 36 45">
<Range Section="6"/>
</Curve>