Equipment Properties
This page contains information about the EquipmentProperties.lub I collected and tested myself to some degree.
For advanced usage (like refine level) you need some basic lua knowledge as well, similar to NPC scripting in any emulator.
Generator by Nevermore
Nevermore made an amazing tool to save you the hassle of writing it on your own, see more here.
Note: There might be mistakes and misunderstandings in there, if you have more information about it, let me know.
File Layout¶
[<ItemID>] = {
Type = "",
Stat = {
20,
0,
0,
0,
0,
0,
0,
0,
0,
0,
1,
0,
0,
0,
0,
0,
0
},
OnStartEquip = function()
<functions from below>
end,
OnStartPretendEquip = true, -- I don't have a clue what this is for
Combiitem = { <ComboID>,... } -- Contains unique ID's representing an Combo, there is a separate table later one to declare the items and item effect. IDs start with 2000000000
},
Combiitem = {
[<ComboID>] = {
Item = { },
OnStartEquip = function()
<functions>
end
},
}
SkillGroup = {
[<SkillGroup>] = {<SkillID>},
}
RefiningBonus = {
ARMOR_DEF = {},
ARMOR_RES = {},
WEAPON_ADV_ATK = {},
WEAPON_ATK = {},
}
GradeBonus = {
NORMAL_ARMOR = {
GRADE_MAGIC = {},
GRADE_RARE = {}
},
NORMAL_WEAPON = {
GRADE_ANCIENT = {REFINING_WEAPON_ATK_MULTIPLE = 25, REFINING_WEAPON_MATK_MULTIPLE = 25},
GRADE_AWAKEN = {REFINING_WEAPON_ATK_MULTIPLE = 40, REFINING_WEAPON_MATK_MULTIPLE = 40},
GRADE_EPIC = {REFINING_WEAPON_ATK_MULTIPLE = 5, REFINING_WEAPON_MATK_MULTIPLE = 5},
GRADE_LEGEND = {REFINING_WEAPON_ATK_MULTIPLE = 15, REFINING_WEAPON_MATK_MULTIPLE = 15},
GRADE_MAGIC = {REFINING_WEAPON_ATK_MULTIPLE = 1, REFINING_WEAPON_MATK_MULTIPLE = 1},
GRADE_RARE = {REFINING_WEAPON_ATK_MULTIPLE = 3, REFINING_WEAPON_MATK_MULTIPLE = 3},
GRADE_UNIQUE = {REFINING_WEAPON_ATK_MULTIPLE = 10, REFINING_WEAPON_MATK_MULTIPLE = 10}
}
}
Types and Stat table¶
There are 5 Type entries:
ammo= Ammunitionarmor= ArmorMweapon= Melee WeaponsRweapon= Ranged Weaponscard= Cards
Stat table
Only contains numeric values and using less values than noted, will end up in an error.
So fill them with a 0.
Ammo¶
As far as I saw, it won't get displayed in the UI.
Must contain 2 values.
Equipment¶
Must contain 17 values:
Type = "armor",
Stat = {
<Armor Defense>,
STR,
INT,
VIT,
DEX,
AGI,
LUK,
MaxHP,
MaxSP,
<Armor Level>,
MDEF,
POW,
SPL,
STA,
WIS,
CON,
CTR
}
Melee Weapons¶
Must contain 17 values:
Type = "Mweapon",
Stat = {
<Element>,
<Weapon Type>,
<Weapon Attack>,
MATK,
STR,
INT,
VIT,
DEX,
AGI,
LUK,
<Weapon Level>,
POW,
SPL,
STA,
WIS,
CON,
CTR
}
Ranged Weapons¶
Must contain 15 values:
Type = "Rweapon",
Stat = {
<Weapon Type>,
<Weapon Attack>,
STR,
INT,
VIT,
DEX,
AGI,
LUK,
<Weapon Level>,
POW,
SPL,
STA,
WIS,
CON,
CTR
}
Cards¶
Does not require a Stat table, only the OnStartEquip function
OnStartEquip = function()¶
This function handles all the effects outside of the Stat table, like refine effects and other parameters.
After this you will find some notes about <Element>,<Race and so on.
| Function | Effect |
|---|---|
AddExtParam(0, <Parameter>, <Value>) |
Increases <Parameter> by <Value>(% or flat amount based on <Parameter>) |
SubExtParam(0, <Parameter>, <Value>) |
Decreases <Parameter> by <Value>(% or flat amount based on <Parameter>) |
AddAttrTolerace(<Element>, <Value>) |
Decreases damage taken from <Element> attacks by <Value>% |
SubAttrTolerace(<Element>, <Value>) |
Decreases resistance against <Element> attacks by <Value>% |
addattrtolerace(<Element>, <Value>, 1) |
Decreases damage taken from melee attacks of <Element> by <Value>% |
subattrtolerace(<Element>, <Value>, 1) |
Increases damage taken from melee attacks of <Element> by <Value>% |
AddRaceTolerace(<Race>, <Value>) |
Increases damage against <Race> enemies by <Value>% |
SubRaceTolerace(<Race>, <Value>) |
Increases damage taken from <Race> enemies by <Value>% |
AddDamage_SKID(1, <Skill ID>, <Value>) |
Increases damage of <Skill> by <Value>% |
| SubDamage_SKID | not setup |
AddDamage_CRI(1, <Value>) |
Increases Critical Damage by <Value>% |
SubDamage_CRI(1, <Value>) |
Decreases Critical Damage by <Value>% (not working) |
AddCRIPercent_Race(<Race>, <Value>) |
Increases Critical against <Race> enemies by <Value>/10% |
SubCRIPercent_Race(<Race>, <Value>) |
Decreases Critical against <Race> enemies by <Value>/10% |
AddDamage_Size(1, <Size>, <Value>) |
Increases physical damage against <Size> enemies by <Value>% |
AddMDamage_Size(1, <Size>, <Value>) |
Increases magical damage against <Size> enemies by <Value>% |
AddDamage_Size(0, <Size>, <Value>) |
Increases physical damage taken from <Size> by <Value>% |
AddMDamage_Size(0, <Size>, <Value> |
Increases magical damage taken from <Size> by <Value>% |
SubDamage_Size(0, <Size>, <Value> |
Decreases physical damage taken from <Size> enemies by <Value>% |
SubMDamage_Size(0, <Size>, <Value> |
Decreases magical damage taken from <Size> enemies by <Value>% |
AddDamage_Property(1, <Size>, <Value> |
Increases physical damage against <Element> enemies by <Value>% |
AddMDamage_Property(1, <Size>, <Value> |
Increases magical damage against <Element> enemies by <Value>% |
AddDamage_Property(0, <Size>,<Value>) |
Increases physical damage taken from <Element> by <Value>% |
AddMDamage_Property(0, <Size>, <Value>) |
Increases magical damage taken from <Element> by <Value>% |
SubDamage_Property(0, <Element>, <Value>) |
Decreases physical damage taken from <Element> enemies by <Value>% |
SubMDamage_Property(0, <Element>, <Value>) |
Decreases magical damage taken from <Element> enemies by <Value>% |
SubDamage_Property(1, <Element>, <Value>) |
Decreases physical damage against <Element> enemies by <Value>% |
SubMDamage_Property(1, <Element>, <Value>) |
Decreases magical damage against <Element> enemies by <Value>% |
AddMdamage_Class(<Class>, <Value>) |
Increases physical and magical damage against <Class> monsters by <Value>% |
SubMdamage_Class(<Class>, <Value>) |
Decreases physical and magical damage against <Class> monsters by <Value>% |
AddMdamage_Race(<Race>, <Value>) |
Increases magical damage against <Race> monsters by <Value>% |
SubMdamage_Race(<Race>, <Value>) |
Decreases magical damage against <Race> monsters by <Value>% |
AddSkillMDamage(<Element>, <Value>) |
Increases magical damage with <Element> by <Value>% |
SubSkillMDamage(<Element>, <Value>) |
Decreases magical damage with <Element> by <Value>% |
AddMeleeAttackDamage(1, <Value>) |
Increases melee attack damage by <Value>% |
AddMeleeAttackDamage(0, <Value>) |
Increases damage taken from melee attacks by <Value>% |
SubMeleeAttackDamage(1, <Value>) |
Decreases melee attack damage by <Value>% |
AddRangeAttackDamage(1, <Value>) |
Increases ranged attack damage by <Value>% |
AddRangeAttackDamage(0, <Value>) |
Increases damage taken from ranged attacks by <Value>% |
SubRangeAttackDamage(1, <Value>) |
Decreases ranged attack damage by <Value>% |
AddBowAttackDamage(1, <Value>) |
Increases damage with bow class weapons by <Value>% |
SubBowAttackDamage(1, <Value>) |
Decreases damage with bow class weapons by <Value>% |
AddSpellDelay(<Value>) |
Increases after skill delay by <Value>% |
SubSpellDelay(<Value>) |
Decreases after skill delay by <Value>% |
AddSkillDelay(<Skill ID>, <Value>) |
Increases skill cooldown of Skill by <Value> milliseconds |
SubSkillDelay(<Skill ID>, <Value>) |
Decreases skill cooldown of Skill by <Value> milliseconds |
AddHealValue(<Value>) |
Increases healing effectivness by <Value>% |
SubHealValue(<Value>) |
Decreases healing effectivness by <Value>% |
AddHealModifyPercent(<Value>) |
Increases recovery amount of restorative items by <Value>% |
SubHealModifyPercent(<Value>) |
Decreases recovery amount of restorative items by <Value>% |
AddSpellCastTime(<Value>) |
Increases Variable Casting Time by <Value>% |
SubSpellCastTime(<Value>) |
Decreases Variable Casting Time by <Value>% |
ClassAddDamage(<Class>, 1, <Value>) |
Increases physical damage against enemies of <Class> by <Value>% |
ClassAddDamage(<Class>, 0, <Value>) |
Increases physical damage taken from <Class> enemies by <Value>% |
ClassSubDamage(<Class>, 0, <Value>) |
Decreases damage taken from <Class> by <Value>% |
ClassSubDamage(<Class>, 1, <Value>) |
Decreases physical damage against <Class> enemies by <Value>% |
RaceAddDamage(<Race>, <Value>) |
Increases physical damage against enemies of <Race> by <Value>% |
RaceSubDamage(<Race>, <Value>) |
Decreases physical damage against enemies of <Race> by <Value>% |
RaceAddDamageSelf(<Race>, <Value>) |
Increases physical damage taken from <Race> enemies by <Value>% |
RaceSubDamageSelf(<Race>, <Value>) |
Decreases physical damage taken from <Race> enemies by <Value>% |
SetIgnoreDefRace_Percent(<Race>, <Value>) |
ignores <Value>% def of <Race> enemies |
SetIgnoreMdefRace_Percent(<Race>, <Value>) |
ignores <Value>% mdef of <Race> enemies |
SetIgnoreDefClass_Percent(<Class>, <Value>) |
ignores <Value>% def of <Class> enemies |
SetIgnoreMdefClass(<Class>, <Value>) |
ignores % mdef of <Class> enemies |
SetIgnoreDEFRace(<Race>) |
ignores 100% def of <Race> enemies |
SetIgnoreMdefRace(<Race>, <Value>) |
ignores <Value>% mdef of <Race> enemies |
AddIgnore_RES_RacePercent(<Race>, <Value>) |
ignores <Value>% RES of <Race> enemies |
SubIgnore_RES_RacePercent(<Race>, <Value>) |
Decreases the <Value>% of ignored RES of <Race> enemies |
AddIgnore_MRES_RacePercent(<Race>, <Value>) |
ignores <Value>% MRES of <Race> enemies |
SubIgnore_MRES_RacePercent(<Race>, <Value>) |
Decreases the <Value>% of ignored MRES of <Race> enemies |
AddSpecificSpellCastTime(<Skill ID>, <Value>) |
Decreases Variable Casting Time of Skill by <Value>% (does not overlapp with similar effects) |
SubSpecificSpellCastTime(<Skill ID>, <Value>) |
Decreases Variable Casting Time of Skill by <Value>% |
| AddSFCTEquipPermill | not setup |
SubSFCTEquipPermill(<Item ID>, <Value>, <Skill Group>) |
Decreases Fixed Casting Time by <Value>%, 3rd is optional and can be 0 (not acculmative with effects of other items) |
SubSFCTEquipAmount(<Item ID>, <Value>, <Skill Group>) |
Decreases Fixed Casting Time by <Value> milliseconds, 3rd is optional and can be 0 (not acculmative with effects of other items) |
EnableSkill(<Skill ID>, <Skill Level>) |
Gives <Skill ID> with Level <Skill Level> |
| DisableSkill | not setup |
AddEXPPercent_KillRace(<Race>, <Value>) |
Increases experience gained for Race monsters by <Value>% |
SubEXPPercent_KillRace(<Race>, <Value>) |
Decreases experience gained for Race monsters by <Value>% (will not go negative) |
AddHPdrain(<Chance>, <Value>) |
Increases the chance to absorb HP of <Value>% inflicted damage by <Chance>% |
SubHPdrain(<Chance>, <Value>) |
Decreases the chance to absorb HP of <Value>% inflicted damage by <Chance>% (chance will not go negative, 2nd value is optional but will be added to existing values) |
AddSPdrain(<Chance>, <Value>) |
Increases the chance to absorb SP of <Value>% inflicted damage by <Chance>% |
SubSPdrain(<Chance>, <Value>) |
Decreases the chance to absorb SP of <Value>% inflicted damage by <Chance>% (chance will not go negative, 2nd value is optional but will be added to existing values)) |
AddGuideAttack(<Value>) |
Increases Perfect Hit chance by <Value> |
SubGuideAttack(<Value>) |
Decreases Perfect Hit chance by <Value> (will not go negative) |
AddSPconsumption(<Value>) |
Increases SP Consumption by <Value>% |
SubSPconsumption(<Value>) |
Decreases SP Consumption by <Value>% |
addspconsumption(<Value>, <Skill ID>) |
Increases SP Consumption of <Skill ID> by <Value>% |
subspconsumption(<Value>, <Skill ID>) |
Decreases SP Consumption of <Skill ID> by <Value>% |
AddSkillSP(<Skill ID>, <Value>) |
Increases SP Consumption of <Skill ID> by <Value> |
SubSkillSP(<Skill ID>, <Value>) |
Decreases SP Consumption of <Skill ID> by <Value> |
AddDamage_HIT(1,<Value>) |
Increases Hit Physical Damage (Normal Physical Damage) by <Value>% |
SubDamage_HIT(1,<Value>) |
Decreases received Hit Physical Damage (Normal Physical Damage) by <Value>% |
AddReflectMagic(<Value>) |
Increases the chance to reflect magic damage by <Value>% |
SubReflectMagic(<Value>) |
Decreases the chance to reflect magic damage by <Value>% (will not go negative) |
AddReflectTolerace(<Value>) |
Increases damage taken from reflected damage by <Value>% |
SubReflectTolerace(<Value>) |
Decreases damage taken from reflected damage by <Value>% |
AddMeleeAttackReflect(<Value>) |
Increases the chance to reflect physical damage by <Value>% |
SubMeleeAttackReflect(<Value>) |
Decreases the chance to reflect physical damage by <Value>% (will not go negative) |
AddReceiveItem_Equip(<Value>) |
Increases item drop rate by <Value>% |
SubReceiveItem_Equip(<Value>) |
Decreases item drop rate by <Value>% (will not go negative) |
| AddNeverknockback(1) | Prevents Knockback effect (1 = true) |
| SubNeverknockback(1) | not setup |
| NoDispell(1) | Skill casting can't be interrupted (1 = true) |
| PerfectDamage(1) | Nullifies weapon size penalty (1 = true) |
| SplashAttack(1) | Enables splash damage (1 = true) |
| Clairvoyance(1) | Enables to see hidden enemeis (1 = true) |
| Magicimmune(1) | Nullifies Magical Damage/Effects (1 = true) |
| NoJamstone(1) | Removes gemstone requirements |
| NoMadogearfuel(1) | Removes Magic Gear Fuel consumption |
| Reincarnation(1) | Recovers 100% hp/sp on resurrection |
| SetInvestigate() | Enchants weapon with "Investigate" skill effect (Thanatos Card/Ice Pick)! |
| IndestructibleArmor | not setup |
| IndestructibleWeapon | not setup |
| Condition(14, 9999, 100) | Increased Movement Speed |
| Condition(13, 9999, 100) | Endure Effect |
These functions are useable in combination with others, like Refine Level based effects.
| Function | Effect |
|---|---|
GetEquipArmorLv(<Equip Slot>) |
Retreives Armor Level (mostly used with GetLocation()) |
GetEquipWeaponLv(<Equip Slot>) |
Retreives Weapon Level; <Equip Slot> is normally 4 |
GetItemIDLocation(<Equip Slot>) |
Retreives item id on <Equip Slot> |
GetWeaponClass(<Equip Slot>) |
Retreives Weapon Type; <Equip Slot> is normally 4 |
| GetPetRelationship() | pet loyal level (0/2~4) |
| IsPremiumPcCafe() | VIP status (seen 2/10/65 as values so far) |
SetEquipTempValue(<Slot>, <Value>) |
<Slot> is a placeholder term, I saw up to 5 so far; it's used to temporary save values to the equipment |
GetRefineLevel(<Equip Slot>) |
Retreives Refine Level of <Equip Slot> |
GetEquipGradeLevel(<Equip Slot>) |
Retreives Grade Level of <Equip Slot> |
| GetLocation() | Retreives <Equip Slot> of the item is in |
GetSkillLevel(<Skill ID>) |
Retreives Skill Level |
| GetPureJob() | Base Job |
| GetMapName | not tested yet |
| CheckJobGroup2 | not tested yet |
| GetCategoryJob | not tested yet |
get(<Value>) |
Values:7 = SP8 = MaxSP11 = Base Level19 = Job ID32 = STR33 = AGI34 = VIT35 = INT36 = DEX37 = LUK55 = Job Level255 = POW256 = STA257 = WIS258 = SPL259 = CON260 = CRT |
| Argument | Values (If it's too much, I just refer to a source.) |
|---|---|
<Weapon Type> |
refers to weapontable.lub ID, can't be 0 |
<Parameter> |
refers to enumvar.lub's second value of each entry,like VAR_MAXHPAMOUNT = { 1, 109 }, > 109 |
<Element> |
0 = Nothing1 = Water2 = Ground3 = Fire4 = Wind5 = Poison6 = Saint7 = Darkness8 = Telekinesis9 = Undead10 = All |
<Race> |
0 = Nothing1 = Undead2 = Animal3 = Plant4 = Insect5 = Fish6 = Demon7 = Human8 = Angel9 = Dragon10 = HumanPlayer11 = DoramPlayer9999 = All |
<Class> |
0 = Normal1 = Boss2 = Guardian |
<Size> |
0 = Small1 = Medium2 = Large |
<Skill Group> |
refers to EquipmentProperties.lub "SkillGroup" table, [X] is the skill group itself, can be 0 for all |
<Equip Slot> |
1 = Lower Headgear2 = Armor3 = Shield4 = Weapon5 = Garment6 = Shoes7 = Right Accessory8 = Left Accessory10 = Upper Headgear11 = Middle Headgear30 = Shadow Armor31 = Shadow Weapon32 = Shadow Shield33 = Shadow Shoes34 = Shadow Right Accessory35 = Shadow Left Accessory |
Combiitem¶
This table contains the combo effects and is sorted by an intern ComboID, which is also declared in the actual item entries as well, tho not linked to the server db.
The ID's start with 2000000000, but I don't know if you can go lower.
Layout
SkillGroup¶
This is only used to adjust Fixed Casting Time of skills, I believe it's used only if they are not stackable and only the highest effect should be respected.
I don't believe there is a limit of an <SkillGroup>, but current max is 10000.
RefiningBonus¶
ARMOR_DEF
Defines the DEF bonus per armor level and refine.
ARMOR_RES
Defines the RES/MES bonus per refine for level 2 armors.
Level 1 armors are 0's, otherwwise level 2 armors won't be displayed correctly.
WEAPON_ADV_ATK
Defines the P.ATK/S.MATK bonus per refine for level 5 weapons.
Level 1~4 weapons are 0's, otherwwise level 5 weapons won't be displayed correctly.
WEAPON_ATK
Defines the ATK/MATK bonus per refine for weapons.
Layout Example - ARMOR_DEF
Level Separators
Each of these define the armor/weapon level while the values are the bonus per refine.
Pre-Renewal Data
Here you have entries for pre-re:
Note
I left every refine past +10 as well as each new armor/weapon level as they were and added some comments for clarifcation.
Decimals
The client can't display decimal values, it will round it down entirely.
RefiningBonus = {
ARMOR_DEF = {
{
0.7,
1.4,
2.1,
2.8,
3.5,
4.2,
4.9,
5.6,
6.3,
7, -- +10
21, -- +11 from here (Renewal only)
24,
28,
32,
36,
40,
45,
50,
55,
60
},
{ -- Level 2 Armor (Renewal only)
1,
2,
4,
5,
7,
10,
12,
14,
18,
22,
25,
29,
34,
38,
43,
48,
54,
60,
66,
72
}
}
},
ARMOR_RES = { -- RES/MRES per refine (Renewal only)
{
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0
},
{
2,
4,
6,
8,
10,
12,
14,
16,
18,
20,
22,
24,
26,
28,
30,
32,
34,
36,
38,
40
}
},
WEAPON_ADV_ATK = { -- P.ATK/S.MATK per refine (Renewal only)
{
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0
},
{
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0
},
{
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0
},
{
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0
},
{
2,
4,
6,
8,
10,
12,
14,
16,
18,
20,
22,
24,
26,
28,
30,
32,
34,
36,
38,
40
}
},
WEAPON_ATK = {
{
2,
4,
6,
8,
10,
12,
14,
16,
18,
20,
22, -- +11 from here (Renewal only)
24,
26,
28,
30,
48,
51,
54,
57,
60
},
{
3,
6,
9,
12,
15,
18,
21,
24,
27,
30,
33, -- +11 from here (Renewal only)
36,
39,
42,
45,
80,
85,
90,
95,
100
},
{
5,
10,
15,
20,
25,
30,
35,
40,
45,
50,
55, -- +11 from here (Renewal only)
60,
65,
70,
75,
112,
119,
126,
133,
140
},
{
7,
14,
21,
28,
35,
42,
49,
56,
63,
70,
77, -- +11 from here (Renewal only)
84,
91,
98,
105,
160,
170,
180,
190,
200
},
{ -- Level 5 Weapons (Renewal only)
8,
16,
24,
32,
40,
48,
56,
64,
72,
80,
88,
96,
104,
112,
120,
128,
136,
144,
152,
160
}
}
}
GradeBonus¶
I didn't find anything relevant yet about this, so if you have some info about this, let me know please.
NORMAL_ARMOR
This currently holds for Armor GRADE_MAGIC and GRADE_RARE with no values, therefore I can't say anything about that.
NORMAL_WEAPON
Downloads¶
- Example - Renewal (21th Juney 2026)
Generated with Nevermore's app
- Example - Pre-RE (21th June 2026)
Generated with Nevermore's app
- Template - Renewal
emptied "Item" and "Combiitem" tables; uses renewal refine bonus
- Template - Pre-RE
emptied "Item" and "Combiitem" tables; uses pre-renewal refine bonus
Basic Lua¶
To make use of the more advanced function calls, you need to understand lua to some degree.
Lua 5.3 Reference Manual
ID 2169 - Kalasag
Explanation
This is used to declare a variable, temp and temp2 in this case, as "local",
which means the variable is only accessable in the OnStartEquip function, so it's not accidently used/overwritten by other calls.
So temp = 0 and local temp = 0 are two different instances.
Retreives the Refine Level of the Shield, like noted above
Returns the largest integral value smaller than or equal to x
(to round down/up, no decimals allowed (based on my understanding))
1 = Class (Boss), and temp2 being the calucated value
Equipment Properties Generator¶
Nevermore created an amazing tool to generate the EquipmentProperties.lub based on rAthena db files and allows currently the following:
- Use of session files (like WARP)
- Include multiple db files
- Add custom bonuses
Important
This tool is still WIP, so make sure to make use of GitHub's Issues and report your sightings.
Like there are still item effects not implemented, so please be patient until they are.
File Locations
I experienced that the tool overrides any existing EquipmentPropertiesOrder.lub without warning.
As that was pretty problematic for me, I added a new folder to the .exe's root and pasted there my files.
Pre-Re vs Renewal
I made some test runs and the pre-re version was done pretty quickly,
because of the amount of data to be written.
This takes a bit of time as there are lots of entries to process, so don't close it while it's Working... and wait.
I would highly recommend you to first make a base version, especially for renewal, before adding your custom items.
As it might run into an maxinum call stack size error if you try to write to an emptied file, like I did here:
Note
Emptied means, deleting every entry in EquipmentProperties.lub Item and Combiitem tables.

After the base file is done, copy it (as backup and maybe other purposes) and select only the databases for custom items, like here:

Images




Downloads