Skip to content
RF DataData reference
RU

Characters and creatures

MAU

MAU frames, parts, ammo and keys

Total 95 Known 85 Derived 0 Unused 10

Overview

A MAU is the Bellato combat machine. A composite entity: a frame (one of 4 rows of UnitFrame.dat: Goliath, Catapult, Engineer, Nomad), 6 parts (a row from each of UnitHead, UnitUpper, UnitLower, UnitArms, UnitShoulder, UnitBack), ammo (UnitBullet.dat) and a key — a UnitKeyItem item (table 19) in the inventory, linked to the frame by m_nFRAType. The client Item.edf records (groups 0x13, 0x25–0x2B) are derived.

How it works

  • A character has 4 MAU slots; the slot state (frame, parts, HP, magazines) is stored on the character, not in the key. Purchase (23/1) fills the slot with the frame and the default parts m_strDF* (by code) and puts the key into the inventory; a MAU is sold without ammo.
  • Prices are computed from m_nStdPrice with the race tax; the frame currency m_nMoney is only 0 (dalant) or 1 (gold): with other values the client shows a price while the server deducts nothing.
  • Tuning (23/5) checks the part's compatibility with the frame (m_strDefFrame is a string of '0'/'1', the first 4 characters matter), level and mastery (m_nExpertID* ≤ 5); repair (23/7) goes by m_nRepPrice and lost HP; on Sirin repair and attack are rewritten in Lua without tax.
  • MAU speed is set only by the client Item.edf (frame +0x9C, parts +0xA0, backpack booster): the server's m_fMoveRate_Seed, m_fMoveSpdRev, m_fBstSpd do not affect speed.
  • Part resistances replace the pilot's armour; the ammo's m_strEffectIndex enables the special shoulder attack.
  • The server does not read and does not pass to the client m_fAttGap, m_nProperty, m_bAbr, m_nDurUnit of parts; the effects m_nEff1…4 are not applied by the server; the names m_strName in .dat are unused — only *_str.dat.

What matters when editing

  • Exactly one key per frame; m_strDF* is an existing code or -1; arm and shoulder weapons need ammo of the same m_nWPType.
  • m_fHeight, m_fWidth, m_nLevelLim, mastery and m_fBstSpd go to the client as a byte (≤ 255, the fraction is lost), resistances as i16.
  • m_bDestroy = 1 or m_bRepair = 0 make MAU destruction final; m_nLevelLim = 100 — nobody can install the part.

Server reads — mau.md §2.1–2.5 (wflow.py retargeted to MAU tables 41–48, and a search by the m_tblUnit* addresses); client records Item.edf 0x13, 0x25–0x2B belong to the “items” domain.

Files of the category

8 in the registry
FileSideFormatLevelCorporaRecordDigestNote
script\UnitArms.datserverdatready for fullAoP ✓, GU ✓, Sirin ✓AoP 516, GU 516, Sirin 516mau.mdmau.md §2
script\UnitBack.datserverdatready for fullAoP ✓, GU ✓, Sirin ✓AoP 516, GU 516, Sirin 516mau.mdmau.md §2
script\UnitBullet.datserverdatready for fullAoP ✓, GU ✓, Sirin ✓AoP 356, GU 356, Sirin 356mau.mdmau.md §2
script\UnitFrame.datserverdatready for fullAoP ✓, GU ✓, Sirin ✓AoP 648, GU 648, Sirin 648mau.mdmau.md §2
script\UnitHead.datserverdatready for fullAoP ✓, GU ✓, Sirin ✓AoP 516, GU 516, Sirin 516mau.mdmau.md §2
script\UnitLower.datserverdatready for fullAoP ✓, GU ✓, Sirin ✓AoP 516, GU 516, Sirin 516mau.mdmau.md §2
script\UnitShoulder.datserverdatready for fullAoP ✓, GU ✓, Sirin ✓AoP 516, GU 516, Sirin 516mau.mdmau.md §2
script\UnitUpper.datserverdatready for fullAoP ✓, GU ✓, Sirin ✓AoP 516, GU 516, Sirin 516mau.mdmau.md §2

“ready for full” — the format is understood and the fields are described; “derived” — the file is assembled from another; “opaque” — the format is not fully known; “postponed” and “out of scope” — the studio does not edit the file.

Sections of the category

The files of the category are split into groups; every group and subgroup has its own page with the fields of its files only.

Frames

script\UnitFrame.dat

Total 27 Known 27 Derived 0 Unused 0

Parts

UnitArms.dat, UnitBack.dat …

Total 54 Known 44 Derived 0 Unused 10

Ammo

script\UnitBullet.dat

Total 14 Known 14 Derived 0 Unused 0

Unused parameters

Fields 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.

UnitArms.dat, UnitBack.dat, UnitHead.dat … server file

OffsetFieldWhy unusedData
+0x138m_fAttGap
Never read: GetWeaponAdjust (14003A080) in a MAU finds the arms or shoulders record but returns the constant 1.0 (the same in Sirin Lua) [code]
mau.md §2.2: digest — “m_fAttGap | 0x138 | Never read: GetWeaponAdjust (14003A080) in a MAU finds the arms or shoulders record but returns the constant 1.0 (the same in Sirin Lua) [code]”; does not go to the client file (MAU parts in Item.edf (0x25–0x2A) are mapped, mau.md §3)
always 0
+0x168m_nProperty
Never read: a MAU attack has no element (nTol = −1 in 14005C1E0, the same in Sirin) [code]
mau.md §2.2: digest — “m_nProperty | 0x168 | Never read: a MAU attack has no element (nTol = −1 in 14005C1E0, the same in Sirin) [code]”; does not go to the client file (MAU parts in Item.edf (0x25–0x2A) are mapped, mau.md §3)
always -1
+0x19Cm_nEff1Code
part effect N: the server does not read it (mau.md §2.5); the AoP client does not read the +0xB2…+0xC7 block of MAU parts (items.md §17.6); 0 everywhere in AoP
mau.md §2.5, §3.1; items.md §17.6 (clientflow.py: reads of +0xB2…+0xC4 exist only in branches of other groups)
always 0
+0x1A0m_fEff1Unit
effect N amount: see m_nEff*Code — read by neither the server nor the client
mau.md §2.5, §3.1; items.md §17.6 (clientflow.py: reads of +0xB2…+0xC4 exist only in branches of other groups)
always 0
+0x1A4m_nEff2Code
part effect N: the server does not read it (mau.md §2.5); the AoP client does not read the +0xB2…+0xC7 block of MAU parts (items.md §17.6); 0 everywhere in AoP
mau.md §2.5, §3.1; items.md §17.6 (clientflow.py: reads of +0xB2…+0xC4 exist only in branches of other groups)
always 0
+0x1A8m_fEff2Unit
effect N amount: see m_nEff*Code — read by neither the server nor the client
mau.md §2.5, §3.1; items.md §17.6 (clientflow.py: reads of +0xB2…+0xC4 exist only in branches of other groups)
always 0
+0x1ACm_nEff3Code
part effect N: the server does not read it (mau.md §2.5); the AoP client does not read the +0xB2…+0xC7 block of MAU parts (items.md §17.6); 0 everywhere in AoP
mau.md §2.5, §3.1; items.md §17.6 (clientflow.py: reads of +0xB2…+0xC4 exist only in branches of other groups)
always 0
+0x1B0m_fEff3Unit
effect N amount: see m_nEff*Code — read by neither the server nor the client
mau.md §2.5, §3.1; items.md §17.6 (clientflow.py: reads of +0xB2…+0xC4 exist only in branches of other groups)
always 0
+0x1B4m_nEff4Code
part effect N: the server does not read it (mau.md §2.5); the AoP client does not read the +0xB2…+0xC7 block of MAU parts (items.md §17.6); 0 everywhere in AoP
mau.md §2.5, §3.1; items.md §17.6 (clientflow.py: reads of +0xB2…+0xC4 exist only in branches of other groups)
always 0
+0x1B8m_fEff4Unit
effect N amount: see m_nEff*Code — read by neither the server nor the client
mau.md §2.5, §3.1; items.md §17.6 (clientflow.py: reads of +0xB2…+0xC4 exist only in branches of other groups)
always 0
RF Online is a trademark of its owners. The reference is compiled from research for content development. Built 01.11.2026 · field catalog dated 29.10.2026 · Adagio UI 0.5.0