Equipment Upgrade system (classic/legacy)

1. General Information
The upgrade system allows players to improve their equipment by exchanging an item with a certain enhancement level, materials, and adena for a new item. Upgrades can be configured in two places:

  • NPC: Head Blacksmith Ferris (30847)
  • On the server: Via the data/equipment_upgrade.xml file.
  • In the client: Via the GameClient/system_ru/UpgradeSystem_Classic.dat file, which determines how upgrades are displayed in the game.
Each upgrade includes:
  • Unique ID (upgrade_id).
  • Required item with a sharpening level (upgrade_item).
  • List of materials and their quantities (material_items).
  • Cost in Aden (commission).
  • Percentage chance of success.
  • The resulting item with a sharpening level (result_item).
  • Countries where the upgrade is available (applycountry). You can specify anything; it doesn't matter, only the value specified in the client is important.
2.Server configuration (equipment_upgrade.xml)
The file data/equipment_upgrade.xml.

XML format
Each upgrade is described by the <upgradesystem_begin> tag inside the root tag. Example:
XML:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE upgrades SYSTEM "equipment_upgrade.dtd">
<upgrades>
    <upgradesystem_begin
        upgrade_id="1"
        upgrade_item="91244;5"
        material_items="1459;200"
        chance="100"
        commission="2000000"
        result_item="91245;0"
        applycountry="all" />
</upgrades>

Field descriptions
  • upgrade_id: Unique upgrade number (e.g., 1, 10041). Do not repeat the ID!
  • upgrade_item: The item to be upgraded. Format: item_id;enchant_level. For example, 91244;5 - item with ID 91244 and +5 enchantment.
  • material_items: List of materials. Format: item_id;count. For example, 1459;200 - 200 units of item with ID 1459. If there are no materials, specify an empty string: material_items="".
  • chance: Upgrade success chance in percent (0–100). For example, 100 — always success, 20 - 20% chance. If not specified, defaults to 100.
  • commission: Upgrade cost in adena. For example, 2000000 - 2 million adena.
  • result_item: Resulting item. Format: item_id;enchant_level. For example, 91245;0 - item with ID 91245 without enchantment.
  • applycountry: Countries where the upgrade is available. Specify all for all countries or country codes separated by semicolons, for example, kr;j (for Korea and Japan). If not specified, defaults to all.
3. Client-side settings (UpgradeSystem_Classic.dat)

The file GameClient/system_ru/UpgradeSystem_Classic.dat is responsible for displaying upgrades in the game client. Its format differs from the server-side XML, but the data must match.

File format
Each upgrade is described in a block between upgradesystem_begin and upgradesystem_end. Example:

Code:
upgradesystem_begin    upgrade_id=10041    upgrade_item={70295;9}    material_items={{71752;70}}    commission=10000    result_item={71746;0}    applycountry={all}    upgradesystem_end

Field description
  • upgrade_id: The same ID as in equipment_upgrade.xml. Must match!
  • upgrade_item: Item to upgrade. Format: {item_id;enchant_level}. For example, {70295;9} — item ID 70295 with +9 enchantment.
  • material_items: Materials. Format: {{item_id;count}}. For example, {{71752;70}} — 70 units of item ID 71752. For multiple materials: {{71752;70}{71753;10}}. If there are no materials, specify {}.
  • commission: Cost in adena. For example, 10000. Must match the server.
  • result_item: Resulting item. Format: {item_id;enchant_level}. For example, {71746;0}.
  • applycountry: Countries. Format: {all} or {kr;j}. Must match the server.
  • chance: Not specified in the client file, as the chance is processed on the server.
How it looks in the game:
 
Last edited:
You are trying to remove 2 items that are not stackable, it doesn't work like that, you can't do that! Because 2 items cannot physically exist outside of a stack.
material_items="151;1,151;1"
Perfect Thanks, it works like that <3

Two more questions please to make it clear

1) The showing of chance is hardcoded in client side ? i saw video by you with 50% chance, but no matter what i put, it shows 100%
2) Fail items can be added somehow, or its supported only for legacy ? not the Classic one ?
 
Perfect Thanks, it works like that <3

Two more questions please to make it clear

1) The showing of chance is hardcoded in client side ? i saw video by you with 50% chance, but no matter what i put, it shows 100%
2) Fail items can be added somehow, or its supported only for legacy ? not the Classic one ?
There are two bypasses, here in the second is the list with chances.
 
1. General Information
The upgrade system allows players to improve their equipment by exchanging an item with a certain enhancement level, materials, and adena for a new item. Upgrades can be configured in two places:

  • NPC: Head Blacksmith Ferris (30847)
  • On the server: Via the data/equipment_upgrade.xml file.
  • In the client: Via the GameClient/system_ru/UpgradeSystem_Classic.dat file, which determines how upgrades are displayed in the game.
Each upgrade includes:
  • Unique ID (upgrade_id).
  • Required item with a sharpening level (upgrade_item).
  • List of materials and their quantities (material_items).
  • Cost in Aden (commission).
  • Percentage chance of success.
  • The resulting item with a sharpening level (result_item).
  • Countries where the upgrade is available (applycountry). You can specify anything; it doesn't matter, only the value specified in the client is important.
2.Server configuration (equipment_upgrade.xml)
The file data/equipment_upgrade.xml.

XML format
Each upgrade is described by the <upgradesystem_begin> tag inside the root tag. Example:
XML:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE upgrades SYSTEM "equipment_upgrade.dtd">
<upgrades>
    <upgradesystem_begin
        upgrade_id="1"
        upgrade_item="91244;5"
        material_items="1459;200"
        chance="100"
        commission="2000000"
        result_item="91245;0"
        applycountry="all" />
</upgrades>

Field descriptions
  • upgrade_id: Unique upgrade number (e.g., 1, 10041). Do not repeat the ID!
  • upgrade_item: The item to be upgraded. Format: item_id;enchant_level. For example, 91244;5 - item with ID 91244 and +5 enchantment.
  • material_items: List of materials. Format: item_id;count. For example, 1459;200 - 200 units of item with ID 1459. If there are no materials, specify an empty string: material_items="".
  • chance: Upgrade success chance in percent (0–100). For example, 100 — always success, 20 - 20% chance. If not specified, defaults to 100.
  • commission: Upgrade cost in adena. For example, 2000000 - 2 million adena.
  • result_item: Resulting item. Format: item_id;enchant_level. For example, 91245;0 - item with ID 91245 without enchantment.
  • applycountry: Countries where the upgrade is available. Specify all for all countries or country codes separated by semicolons, for example, kr;j (for Korea and Japan). If not specified, defaults to all.
3. Client-side settings (UpgradeSystem_Classic.dat)

The file GameClient/system_ru/UpgradeSystem_Classic.dat is responsible for displaying upgrades in the game client. Its format differs from the server-side XML, but the data must match.

File format
Each upgrade is described in a block between upgradesystem_begin and upgradesystem_end. Example:

Code:
upgradesystem_begin    upgrade_id=10041    upgrade_item={70295;9}    material_items={{71752;70}}    commission=10000    result_item={71746;0}    applycountry={all}    upgradesystem_end

Field description
  • upgrade_id: The same ID as in equipment_upgrade.xml. Must match!
  • upgrade_item: Item to upgrade. Format: {item_id;enchant_level}. For example, {70295;9} — item ID 70295 with +9 enchantment.
  • material_items: Materials. Format: {{item_id;count}}. For example, {{71752;70}} — 70 units of item ID 71752. For multiple materials: {{71752;70}{71753;10}}. If there are no materials, specify {}.
  • commission: Cost in adena. For example, 10000. Must match the server.
  • result_item: Resulting item. Format: {item_id;enchant_level}. For example, {71746;0}.
  • applycountry: Countries. Format: {all} or {kr;j}. Must match the server.
  • chance: Not specified in the client file, as the chance is processed on the server.
How it looks in the game:

Hey man, is there any way to keep the enchantment level during an upgrade? For example, if I upgrade a piece of jewelry that's +6, will the new one keep that enchant?
 
Hey man, is there any way to keep the enchantment level during an upgrade? For example, if I upgrade a piece of jewelry that's +6, will the new one keep that enchant?
Yes, the sharpening will be preserved. You can adjust it yourself in the file. What enchantment will be on the output
 
I mean for example:

Code:
Client side:

upgradesystem_begin    upgrade_id=1    upgrade_item={100200;-1}    material_items={{71415;100}}    commission=1000000000    result_item={6660;-1}    applycountry={all}    upgradesystem_end

Server side:

<equipment_upgrade upgrade_id="1" upgrade_item="100200;-1"  material_items="71415;100" commission="1000000000" result_item="6660;-1" chance="100" />

And it should automatically detect the item's current enchantment level. Otherwise, to keep the enchant, I would have to create a separate entry for every single enchantment level. Here is the full code:


Code:
client:

upgradesystem_begin    upgrade_id=1    upgrade_item={100200;0}    material_items={{71415;100}}    commission=1000000000    result_item={6660;0}    applycountry={all}    upgradesystem_end
upgradesystem_begin    upgrade_id=2    upgrade_item={100200;1}    material_items={{71415;100}}    commission=1000000000    result_item={6660;1}    applycountry={all}    upgradesystem_end
upgradesystem_begin    upgrade_id=3    upgrade_item={100200;2}    material_items={{71415;100}}    commission=1000000000    result_item={6660;2}    applycountry={all}    upgradesystem_end
upgradesystem_begin    upgrade_id=4    upgrade_item={100200;3}    material_items={{71415;100}}    commission=1000000000    result_item={6660;3}    applycountry={all}    upgradesystem_end
upgradesystem_begin    upgrade_id=5    upgrade_item={100200;4}    material_items={{71415;100}}    commission=1000000000    result_item={6660;4}    applycountry={all}    upgradesystem_end
upgradesystem_begin    upgrade_id=6    upgrade_item={100200;5}    material_items={{71415;100}}    commission=1000000000    result_item={6660;5}    applycountry={all}    upgradesystem_end
upgradesystem_begin    upgrade_id=7    upgrade_item={100200;6}    material_items={{71415;100}}    commission=1000000000    result_item={6660;6}    applycountry={all}    upgradesystem_end
upgradesystem_begin    upgrade_id=8    upgrade_item={100200;7}    material_items={{71415;100}}    commission=1000000000    result_item={6660;7}    applycountry={all}    upgradesystem_end
upgradesystem_begin    upgrade_id=9    upgrade_item={100200;8}    material_items={{71415;100}}    commission=1000000000    result_item={6660;8}    applycountry={all}    upgradesystem_end
upgradesystem_begin    upgrade_id=10    upgrade_item={100200;9}    material_items={{71415;100}}    commission=1000000000    result_item={6660;9}    applycountry={all}    upgradesystem_end
upgradesystem_begin    upgrade_id=11    upgrade_item={100200;10}    material_items={{71415;100}}    commission=1000000000    result_item={6660;10}    applycountry={all}    upgradesystem_end
upgradesystem_begin    upgrade_id=12    upgrade_item={100200;11}    material_items={{71415;100}}    commission=1000000000    result_item={6660;11}    applycountry={all}    upgradesystem_end
upgradesystem_begin    upgrade_id=13    upgrade_item={100200;12}    material_items={{71415;100}}    commission=1000000000    result_item={6660;12}    applycountry={all}    upgradesystem_end
upgradesystem_begin    upgrade_id=14    upgrade_item={100200;13}    material_items={{71415;100}}    commission=1000000000    result_item={6660;13}    applycountry={all}    upgradesystem_end
upgradesystem_begin    upgrade_id=15    upgrade_item={100200;14}    material_items={{71415;100}}    commission=1000000000    result_item={6660;14}    applycountry={all}    upgradesystem_end
upgradesystem_begin    upgrade_id=16    upgrade_item={100200;15}    material_items={{71415;100}}    commission=1000000000    result_item={6660;15}    applycountry={all}    upgradesystem_end
upgradesystem_begin    upgrade_id=17    upgrade_item={100200;16}    material_items={{71415;100}}    commission=1000000000    result_item={6660;16}    applycountry={all}    upgradesystem_end

server:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE list SYSTEM "equipment_upgrade.dtd">
<list>
    <equipment_upgrade upgrade_id="1" upgrade_item="100200;-1"  material_items="71415;100" commission="1000000000" result_item="6660;-1" chance="100" />
    <equipment_upgrade upgrade_id="2" upgrade_item="100200;1"  material_items="71415;100" commission="1000000000" result_item="6660;1" chance="100" />
    <equipment_upgrade upgrade_id="3" upgrade_item="100200;2"  material_items="71415;100" commission="1000000000" result_item="6660;2" chance="100" />
    <equipment_upgrade upgrade_id="4" upgrade_item="100200;3"  material_items="71415;100" commission="1000000000" result_item="6660;3" chance="100" />
    <equipment_upgrade upgrade_id="5" upgrade_item="100200;4"  material_items="71415;100" commission="1000000000" result_item="6660;4" chance="100" />
    <equipment_upgrade upgrade_id="6" upgrade_item="100200;5"  material_items="71415;100" commission="1000000000" result_item="6660;5" chance="100" />
    <equipment_upgrade upgrade_id="7" upgrade_item="100200;6"  material_items="71415;100" commission="1000000000" result_item="6660;6" chance="100" />
    <equipment_upgrade upgrade_id="8" upgrade_item="100200;7"  material_items="71415;100" commission="1000000000" result_item="6660;7" chance="100" />
    <equipment_upgrade upgrade_id="9" upgrade_item="100200;8"  material_items="71415;100" commission="1000000000" result_item="6660;8" chance="100" />
    <equipment_upgrade upgrade_id="10" upgrade_item="100200;9"  material_items="71415;100" commission="1000000000" result_item="6660;9" chance="100" />
    <equipment_upgrade upgrade_id="11" upgrade_item="100200;10"  material_items="71415;100" commission="1000000000" result_item="6660;10" chance="100" />
    <equipment_upgrade upgrade_id="12" upgrade_item="100200;11"  material_items="71415;100" commission="1000000000" result_item="6660;11" chance="100" />
    <equipment_upgrade upgrade_id="13" upgrade_item="100200;12"  material_items="71415;100" commission="1000000000" result_item="6660;12" chance="100" />
    <equipment_upgrade upgrade_id="14" upgrade_item="100200;13"  material_items="71415;100" commission="1000000000" result_item="6660;13" chance="100" />
    <equipment_upgrade upgrade_id="15" upgrade_item="100200;14"  material_items="71415;100" commission="1000000000" result_item="6660;14" chance="100" />
    <equipment_upgrade upgrade_id="16" upgrade_item="100200;15"  material_items="71415;100" commission="1000000000" result_item="6660;15" chance="100" />
    <equipment_upgrade upgrade_id="17" upgrade_item="100200;16"  material_items="71415;100" commission="1000000000" result_item="6660;16" chance="100" />
</list>
 
Back
Top