Armour and shields
Six tables of one schema, DfnEquipItem: helmet, upper, lower, gauntlets, shoes, shield (tables 0–5).
GauntletItem.dat, HelmetItem.dat …
Total 60 Known 51 Derived 0 Unused 9Items
Equippable items: armour, shields, weapons, cloaks, jewellery, faces. Shared field translation rules — items.md §8–10.
Six tables of one schema, DfnEquipItem: helmet, upper, lower, gauntlets, shoes, shield (tables 0–5).
GauntletItem.dat, HelmetItem.dat …
Total 60 Known 51 Derived 0 Unused 9Fields that neither the server nor the client reads. For each: why it was decided so and where that was established. The editor keeps their bytes as they are.
GauntletItem.dat, HelmetItem.dat, LowerItem.dat … server file| Offset | Field | Why unused | Data |
|---|---|---|---|
+0x0CC | m_nKindClt | “kind, client” (2004); does not go to the client, the model matters (7.1) items-fields.md: role “nobody” — no server reads found ( dataflow\wflow_<t>, wcase_<t>, tower/trap objects; coverage incomplete) and the field is absent from the Item.edf record (cmatch.py check on AoP) | 11 values; most often 0 (20%) |
+0x0D4 | m_nFixPart | “equip slot”; for weapons 8/100 — one-/two-handed (7.1), constant per table for the rest items-fields.md: role “nobody” — no server reads found ( dataflow\wflow_<t>, wcase_<t>, tower/trap objects; coverage incomplete) and the field is absent from the Item.edf record (cmatch.py check on AoP) | 6 values; most often 0 (20%) |
+0x0D8 | m_nHelmetClass | “helmet kind” (2004) items-fields.md: role “nobody” — no server reads found ( dataflow\wflow_<t>, wcase_<t>, tower/trap objects; coverage incomplete) and the field is absent from the Item.edf record (cmatch.py check on AoP) | always 0 |
+0x154 | m_bAbr | “wears out” (2004) items-fields.md: role “nobody” — no server reads found ( dataflow\wflow_<t>, wcase_<t>, tower/trap objects; coverage incomplete) and the field is absent from the Item.edf record (cmatch.py check on AoP) | always 0 |
+0x164 | m_nRepPrice | “repair price” (2004) items-fields.md: role “nobody” — no server reads found ( dataflow\wflow_<t>, wcase_<t>, tower/trap objects; coverage incomplete) and the field is absent from the Item.edf record (cmatch.py check on AoP) | always 0 |
+0x168 | m_nEffState | “state when equipped” (2004) items-fields.md: role “nobody” — no server reads found ( dataflow\wflow_<t>, wcase_<t>, tower/trap objects; coverage incomplete) and the field is absent from the Item.edf record (cmatch.py check on AoP) | always 1 |
+0x170 | m_nProperty | attack element (8) items-fields.md: role “nobody” — no server reads found ( dataflow\wflow_<t>, wcase_<t>, tower/trap objects; coverage incomplete) and the field is absent from the Item.edf record (cmatch.py check on AoP) | always -1 |
+0x1B8 | m_nDuration | “duration” (2004) items-fields.md: role “nobody” — no server reads found ( dataflow\wflow_<t>, wcase_<t>, tower/trap objects; coverage incomplete) and the field is absent from the Item.edf record (cmatch.py check on AoP) | always 0 |
+0x1CC | m_bUseableNormalAcc | common flag; unused items.md §17.5: the getter 1400182C0 has no references from code (Ghidra: only .pdata); itemflow.py over 37 tables (GetRecord, record array +0xA0, arguments) — no direct reads; the consumers of 14 record storage places were checked; Sirin — only a type description; the field is absent from the client Item.edf record | always 1 |
script\WeaponItem.dat server file| Offset | Field | Why unused | Data |
|---|---|---|---|
+0x0CC | m_nKindClt | “kind, client” (2004); does not go to the client, the model matters (7.1) items-fields.md: role “nobody” — no server reads found ( dataflow\wflow_<t>, wcase_<t>, tower/trap objects; coverage incomplete) and the field is absent from the Item.edf record (cmatch.py check on AoP) | 28 values; most often 103 (30%) |
+0x264 | m_bAbr | “wears out” (2004) items-fields.md: role “nobody” — no server reads found ( dataflow\wflow_<t>, wcase_<t>, tower/trap objects; coverage incomplete) and the field is absent from the Item.edf record (cmatch.py check on AoP) | 2 values; most often 0 (100%) |
+0x274 | m_nRepPrice | “repair price” (2004) items-fields.md: role “nobody” — no server reads found ( dataflow\wflow_<t>, wcase_<t>, tower/trap objects; coverage incomplete) and the field is absent from the Item.edf record (cmatch.py check on AoP) | always 0 |
+0x278 | m_nEffState | “state when equipped” (2004) items-fields.md: role “nobody” — no server reads found ( dataflow\wflow_<t>, wcase_<t>, tower/trap objects; coverage incomplete) and the field is absent from the Item.edf record (cmatch.py check on AoP) | always 1 |
+0x280 | m_fFireTol | fire resistance items-fields.md: role “nobody” — no server reads found ( dataflow\wflow_<t>, wcase_<t>, tower/trap objects; coverage incomplete) and the field is absent from the Item.edf record (cmatch.py check on AoP) | always 0 |
+0x284 | m_fWaterTol | water resistance items-fields.md: role “nobody” — no server reads found ( dataflow\wflow_<t>, wcase_<t>, tower/trap objects; coverage incomplete) and the field is absent from the Item.edf record (cmatch.py check on AoP) | always 0 |
+0x288 | m_fSoilTol | earth resistance items-fields.md: role “nobody” — no server reads found ( dataflow\wflow_<t>, wcase_<t>, tower/trap objects; coverage incomplete) and the field is absent from the Item.edf record (cmatch.py check on AoP) | 2 values; most often 0 (100%) |
+0x28C | m_fWindTol | wind resistance items-fields.md: role “nobody” — no server reads found ( dataflow\wflow_<t>, wcase_<t>, tower/trap objects; coverage incomplete) and the field is absent from the Item.edf record (cmatch.py check on AoP) | always 0 |
+0x2B0 | m_nMADst | magic range items-fields.md: role “nobody” — no server reads found ( dataflow\wflow_<t>, wcase_<t>, tower/trap objects; coverage incomplete) and the field is absent from the Item.edf record (cmatch.py check on AoP) | 2 values; most often 0 (100%) |
+0x2B4 | m_nMASpd | magic speed items-fields.md: role “nobody” — no server reads found ( dataflow\wflow_<t>, wcase_<t>, tower/trap objects; coverage incomplete) and the field is absent from the Item.edf record (cmatch.py check on AoP) | always 0 |
+0x2E8 | m_nDuration | “duration” (2004) items-fields.md: role “nobody” — no server reads found ( dataflow\wflow_<t>, wcase_<t>, tower/trap objects; coverage incomplete) and the field is absent from the Item.edf record (cmatch.py check on AoP) | always 0 |
+0x2FC | m_bUseableNormalAcc | common flag; unused items.md §17.5: the getter 1400182C0 has no references from code (Ghidra: only .pdata); itemflow.py over 37 tables (GetRecord, record array +0xA0, arguments) — no direct reads; the consumers of 14 record storage places were checked; Sirin — only a type description; the field is absent from the client Item.edf record | 2 values; most often 1 (100%) |
script\cloaKItem.dat server file| Offset | Field | Why unused | Data |
|---|---|---|---|
+0x0CC | m_nKindClt | “kind, client” (2004); does not go to the client, the model matters (7.1) items-fields.md: role “nobody” — no server reads found ( dataflow\wflow_<t>, wcase_<t>, tower/trap objects; coverage incomplete) and the field is absent from the Item.edf record (cmatch.py check on AoP) | always 6 |
+0x0D4 | m_nFixPart | “equip slot”; for weapons 8/100 — one-/two-handed (7.1), constant per table for the rest items-fields.md: role “nobody” — no server reads found ( dataflow\wflow_<t>, wcase_<t>, tower/trap objects; coverage incomplete) and the field is absent from the Item.edf record (cmatch.py check on AoP) | always 6 |
+0x0D8 | m_nHelmetClass | “helmet kind” (2004) items-fields.md: role “nobody” — no server reads found ( dataflow\wflow_<t>, wcase_<t>, tower/trap objects; coverage incomplete) and the field is absent from the Item.edf record (cmatch.py check on AoP) | always 0 |
+0x128 | m_nExpertID1 | required mastery kind (skills.md 6.5) items-fields.md: role “nobody” — no server reads found ( dataflow\wflow_<t>, wcase_<t>, tower/trap objects; coverage incomplete) and the field is absent from the Item.edf record (cmatch.py check on AoP) | always -1 / -1 |
+0x12C | m_nExpertLim1 | required mastery level items-fields.md: role “nobody” — no server reads found ( dataflow\wflow_<t>, wcase_<t>, tower/trap objects; coverage incomplete) and the field is absent from the Item.edf record (cmatch.py check on AoP) | always -1 / -1 |
+0x130 | m_nExpertID2 | required mastery level items-fields.md: role “nobody” — no server reads found ( dataflow\wflow_<t>, wcase_<t>, tower/trap objects; coverage incomplete) and the field is absent from the Item.edf record (cmatch.py check on AoP) | always -1 / -1 |
+0x134 | m_nExpertLim2 | required mastery level items-fields.md: role “nobody” — no server reads found ( dataflow\wflow_<t>, wcase_<t>, tower/trap objects; coverage incomplete) and the field is absent from the Item.edf record (cmatch.py check on AoP) | always -1 / -1 |
+0x154 | m_bAbr | “wears out” (2004) items-fields.md: role “nobody” — no server reads found ( dataflow\wflow_<t>, wcase_<t>, tower/trap objects; coverage incomplete) and the field is absent from the Item.edf record (cmatch.py check on AoP) | always 0 |
+0x15C | m_fEquipSpeed | equipment “weight”: speed multiplier (7.5) items-fields.md: role “nobody” — no server reads found ( dataflow\wflow_<t>, wcase_<t>, tower/trap objects; coverage incomplete) and the field is absent from the Item.edf record (cmatch.py check on AoP) | always 0 |
+0x164 | m_nRepPrice | “repair price” (2004) items-fields.md: role “nobody” — no server reads found ( dataflow\wflow_<t>, wcase_<t>, tower/trap objects; coverage incomplete) and the field is absent from the Item.edf record (cmatch.py check on AoP) | always 0 |
+0x168 | m_nEffState | “state when equipped” (2004) items-fields.md: role “nobody” — no server reads found ( dataflow\wflow_<t>, wcase_<t>, tower/trap objects; coverage incomplete) and the field is absent from the Item.edf record (cmatch.py check on AoP) | 2 values; most often 1 (88%) |
+0x16C | m_nGASpd | normal attack speed/delay items-fields.md: role “nobody” — no server reads found ( dataflow\wflow_<t>, wcase_<t>, tower/trap objects; coverage incomplete) and the field is absent from the Item.edf record (cmatch.py check on AoP) | always 0 |
+0x170 | m_nProperty | attack element (8) items-fields.md: role “nobody” — no server reads found ( dataflow\wflow_<t>, wcase_<t>, tower/trap objects; coverage incomplete) and the field is absent from the Item.edf record (cmatch.py check on AoP) | always 0 |
+0x188 | m_nDefence_DP | item DP wear on hit (5) items-fields.md: role “nobody” — no server reads found ( dataflow\wflow_<t>, wcase_<t>, tower/trap objects; coverage incomplete) and the field is absent from the Item.edf record (cmatch.py check on AoP) | always 0 |
+0x18C | m_nMaxDP | max DP (5) items-fields.md: role “nobody” — no server reads found ( dataflow\wflow_<t>, wcase_<t>, tower/trap objects; coverage incomplete) and the field is absent from the Item.edf record (cmatch.py check on AoP) | always 0 |
+0x190 | m_fDefGap | coefficient G of the damage formula per part (9.2)items-fields.md: role “nobody” — no server reads found ( dataflow\wflow_<t>, wcase_<t>, tower/trap objects; coverage incomplete) and the field is absent from the Item.edf record (cmatch.py check on AoP) | always 0 |
+0x194 | m_fDefFacing | coefficient F of the damage formula (9.2)items-fields.md: role “nobody” — no server reads found ( dataflow\wflow_<t>, wcase_<t>, tower/trap objects; coverage incomplete) and the field is absent from the Item.edf record (cmatch.py check on AoP) | always 0 |
+0x1B8 | m_nDuration | “duration” (2004) items-fields.md: role “nobody” — no server reads found ( dataflow\wflow_<t>, wcase_<t>, tower/trap objects; coverage incomplete) and the field is absent from the Item.edf record (cmatch.py check on AoP) | always 0 |
+0x1CC | m_bUseableNormalAcc | common flag; unused items.md §17.5: the getter 1400182C0 has no references from code (Ghidra: only .pdata); itemflow.py over 37 tables (GetRecord, record array +0xA0, arguments) — no direct reads; the consumers of 14 record storage places were checked; Sirin — only a type description; the field is absent from the client Item.edf record | always 1 |
+0x214 | m_nDefEffType | material for the hit sound and spark on the item (5) items-fields.md: role “nobody” — no server reads found ( dataflow\wflow_<t>, wcase_<t>, tower/trap objects; coverage incomplete) and the field is absent from the Item.edf record (cmatch.py check on AoP) | always -1 |
script\AmuletItem.dat server file| Offset | Field | Why unused | Data |
|---|---|---|---|
+0x0CC | m_nKindClt | “kind, client” (2004); does not go to the client, the model matters (7.1) items-fields.md: role “nobody” — no server reads found ( dataflow\wflow_<t>, wcase_<t>, tower/trap objects; coverage incomplete) and the field is absent from the Item.edf record (cmatch.py check on AoP) | always 8 |
+0x0D4 | m_nFixPart | “equip slot”; for weapons 8/100 — one-/two-handed (7.1), constant per table for the rest items-fields.md: role “nobody” — no server reads found ( dataflow\wflow_<t>, wcase_<t>, tower/trap objects; coverage incomplete) and the field is absent from the Item.edf record (cmatch.py check on AoP) | always 10 |
+0x140 | m_bAbr | “wears out” (2004) items-fields.md: role “nobody” — no server reads found ( dataflow\wflow_<t>, wcase_<t>, tower/trap objects; coverage incomplete) and the field is absent from the Item.edf record (cmatch.py check on AoP) | always 0 |
+0x144 | m_nEffState | “state when equipped” (2004) items-fields.md: role “nobody” — no server reads found ( dataflow\wflow_<t>, wcase_<t>, tower/trap objects; coverage incomplete) and the field is absent from the Item.edf record (cmatch.py check on AoP) | always 1 |
+0x188 | m_bUseableNormalAcc | common flag; unused items.md §17.5: the getter 1400182C0 has no references from code (Ghidra: only .pdata); itemflow.py over 37 tables (GetRecord, record array +0xA0, arguments) — no direct reads; the consumers of 14 record storage places were checked; Sirin — only a type description; the field is absent from the client Item.edf record | always 1 |
script\RingItem.dat server file| Offset | Field | Why unused | Data |
|---|---|---|---|
+0x0CC | m_nKindClt | “kind, client” (2004); does not go to the client, the model matters (7.1) items-fields.md: role “nobody” — no server reads found ( dataflow\wflow_<t>, wcase_<t>, tower/trap objects; coverage incomplete) and the field is absent from the Item.edf record (cmatch.py check on AoP) | always 9 |
+0x0D4 | m_nFixPart | “equip slot”; for weapons 8/100 — one-/two-handed (7.1), constant per table for the rest items-fields.md: role “nobody” — no server reads found ( dataflow\wflow_<t>, wcase_<t>, tower/trap objects; coverage incomplete) and the field is absent from the Item.edf record (cmatch.py check on AoP) | always 12 |
+0x140 | m_bAbr | “wears out” (2004) items-fields.md: role “nobody” — no server reads found ( dataflow\wflow_<t>, wcase_<t>, tower/trap objects; coverage incomplete) and the field is absent from the Item.edf record (cmatch.py check on AoP) | always 0 |
+0x144 | m_nEffState | “state when equipped” (2004) items-fields.md: role “nobody” — no server reads found ( dataflow\wflow_<t>, wcase_<t>, tower/trap objects; coverage incomplete) and the field is absent from the Item.edf record (cmatch.py check on AoP) | always 1 |
+0x188 | m_bUseableNormalAcc | common flag; unused items.md §17.5: the getter 1400182C0 has no references from code (Ghidra: only .pdata); itemflow.py over 37 tables (GetRecord, record array +0xA0, arguments) — no direct reads; the consumers of 14 record storage places were checked; Sirin — only a type description; the field is absent from the client Item.edf record | always 1 |
script\FaceItem.dat server file| Offset | Field | Why unused | Data |
|---|---|---|---|
+0x0C8 | m_nKindClt | “kind, client” (2004); does not go to the client, the model matters (7.1) items-fields.md: role “nobody” — no server reads found ( dataflow\wflow_<t>, wcase_<t>, tower/trap objects; coverage incomplete) and the field is absent from the Item.edf record (cmatch.py check on AoP) | always 501 |
+0x0CC | m_nFixPart | “equip slot”; for weapons 8/100 — one-/two-handed (7.1), constant per table for the rest items-fields.md: role “nobody” — no server reads found ( dataflow\wflow_<t>, wcase_<t>, tower/trap objects; coverage incomplete) and the field is absent from the Item.edf record (cmatch.py check on AoP) | always 1 |
+0x110 | m_nDefEffType | material for the hit sound and spark on the item (5) items-fields.md: role “nobody” — no server reads found ( dataflow\wflow_<t>, wcase_<t>, tower/trap objects; coverage incomplete) and the field is absent from the Item.edf record (cmatch.py check on AoP) | 2 values; most often 256 (80%) |