//= METHOD A (fast): copy a known-good IMF
//= 1) Open data.grf in GRF Editor → Tools → IMF Editor (or Search “.imf”).
//= 2) Find a job that already layers correctly (e.g. Soul Reaper): data\imf\soul_reaper.imf
//= 3) Extract that file, then import it back renamed to your target job’s IMF (e.g. novice.imf),
//= or change the mapping in: data\luafiles514\lua files\datainfo\imfnametable.lub
//= 4) Save GRF → test in-game.
//= METHOD B (precise): reorder layers in the IMF Editor
//= 1) Tools → IMF Editor → open the target .imf
//= 2) Set draw order (top → bottom):
//= HeadTop
//= HeadMid
//= HeadLow
//= Body
//= Shadow
//= 3) Apply to ALL actions/directions → Save → import back → test.
//= IMPORTANT:
//= • Don’t use RagLite JSON to re-encode .imf (that’s why you saw “compile” errors).
//= Let GRF Editor open/save the binary .imf directly.
//= • If nothing changes, check you don’t have a loose “data\imf*.imf” overriding the GRF,
//= and make sure your custom GRF loads last.
//= • If your client uses imfnametable.lub, update the mapping there.
//===================================================
//= STEP-BY-STEP (DETAILED)
//===================================================
//= A) Prepare
//= • Backup data.grf/rdata.grf.
//= • Close the game client.
//=
//= B) Find/Map
//= • Path to IMFs: data\imf*.imf (use GRF Editor search).
//= • Optional map file: data\luafiles514\lua files\datainfo\imfnametable.lub
//= (links job → IMF filename).
//=
//= C) Fast Copy (no editing)
//= • Extract working job’s .imf → import it renamed to target job, OR edit imfnametable.lub to point to it.
//=
//= D) Manual Fix (if you must keep same filename)
//= • Tools → IMF Editor → open target .imf → set layer order:
//= HeadTop, HeadMid, HeadLow, Body, Shadow
//= • “Apply to all actions/directions” → Save → Import → Save GRF.
//===================================================
//===================================================
//= TROUBLESHOOTING
//===================================================
//= • Change not showing:
//= - Another GRF or a loose “data\imf*.imf” overrides yours. Ensure your custom GRF loads last.
//= • Only some animations fixed:
//= - You didn’t mass-apply to all actions/directions (walk/attack/cast/idle). Re-apply and save.
//= • “Compile” / invalid file when using RagLite:
//= - Stop using JSON route. Use GRF Editor’s IMF Editor to open/save binary .imf directly.
//= • Still weird on one class:
//= - Copy IMF from a class that renders correctly and map it via imfnametable.lub.
//===================================================
Can try this :
- No cards/refine/copying — it purely swaps based on ID, making it safe and clean.
- Works only on EQI_HEAD_TOP, but you can easily extend to:
EQI_HEAD_MID
EQI_HEAD_LOW
- Just add your pairs like this:
setarray .ItemPair$[0],
"3524,3525", // Hokage Helm
"3526,3527", // Another custom headgear
"3528,3529"; // and so on
Thanks for the reply but didn't work. I managed to fix 3 wings but after so many things I tried is impossible to point out what really fixed the problem. Also tested some clients down to 2010 and that changed nothing.