User:Yoone/Armor Display Case Format Research
Reverse-engineering of part of the <payload> data on Armor Display Case homestead decorations (from exported layout XML).
1. Starting data
One Armor Display Case + Armor Display Case—Mannequin. Character wearing full Suffused Obsidian medium set, dyed Shadow Orange + Flame, with a backpiece.
Equipped skin IDs:
| Slot | Skin | ID |
|---|---|---|
| Head | Suffused Obsidian Medium Mask | 12167
|
| Shoulders | Suffused Obsidian Medium Shoulders | 12202
|
| Chest | Suffused Obsidian Medium Jacket | 12168
|
| Hands | Suffused Obsidian Medium Gloves | 12154
|
| Legs | Suffused Obsidian Medium Leggings | 12196
|
| Feet | Suffused Obsidian Medium Boots | 12186
|
| Back | The Ascension | 6561
|
Dyes: Shadow Orange (color ID 1350), Flame (color ID 1240).
Character: male asura.
<prop id="437" name="Armor Display Case" pos="12839.464844 4952.257812 -241.320312" rot="0.000000 0.000000 6.252506" scl="1.000000">
<payload pt="2" v="1">AAADfAYA/8PsdP//AgAAAwAAAINVwYCA64P/AA8AGQAZ/wD/gaj/gAC17gAg;iC8AAJovAAB6LwAAhy8AAKQvAACqLwAAoRkAAA==;RgVGBdgE2ARGBUYF2ATYBEYFRgXYBNgERgUSANgE2ARGBUYF2ATYBIABRgXYBNgEAQABAAEAAQA=;statueattack</payload>
</prop>
Layout: 4 parts, ; separated.
p1(b64) ; p2(b64) ; p3(b64) ; pose
2. Parts
Part 1: Unknown
AAADfAYA/8PsdP//AgAAAwAAAINVwYCA64P/AA8AGQAZ/wD/gaj/gAC17gAg
- Assumption: profession, race, character creation customization (gender, face/hair/body, colors, etc.)
- Identical with different armors & outfits on the same character.
Part 2: skins, 7 x uint32 (little endian)
iC8AAJovAAB6LwAAhy8AAKQvAACqLwAAoRkAAA==
| # | Slot | Bytes | ID | Skin |
|---|---|---|---|---|
0 |
Coat | 88 2f 00 00 |
12168 |
Suffused Obsidian Medium Jacket |
1 |
Boots | 9a 2f 00 00 |
12186 |
Suffused Obsidian Medium Boots |
2 |
Gloves | 7a 2f 00 00 |
12154 |
Suffused Obsidian Medium Gloves |
3 |
Helm | 87 2f 00 00 |
12167 |
Suffused Obsidian Medium Mask |
4 |
Leggings | a4 2f 00 00 |
12196 |
Suffused Obsidian Medium Leggings |
5 |
Shoulders | aa 2f 00 00 |
12202 |
Suffused Obsidian Medium Shoulders |
6 |
Back | a1 19 00 00 |
6561 |
The Ascension |
Part 3: dyes, 7 x 4 x uint16 (little endian)
RgVGBdgE2ARGBUYF2ATYBEYFRgXYBNgERgUSANgE2ARGBUYF2ATYBIABRgXYBNgEAQABAAEAAQA=
| Slot | Ch1 | Ch2 | Ch3 | Ch4 |
|---|---|---|---|---|
| Coat | 1350 |
1350 |
1240 |
1240
|
| Boots | 1350 |
1350 |
1240 |
1240
|
| Gloves | 1350 |
1350 |
1240 |
1240
|
| Helm | 1350 |
18 |
1240 |
1240
|
| Leggings | 1350 |
1350 |
1240 |
1240
|
| Shoulders | 384 |
1350 |
1240 |
1240
|
| Back | 1 |
1 |
1 |
1
|
1350 Shadow Orange, 1240 Flame. 18 Earthen / 384 Mocha: likely per-piece defaults on unset channels (needs to be investigated further). 1 Dye Remover (The Ascension has no dye slots).
Field 4: pose (string)
Values:
statueattackstatuesalutestatuecheerstatuerelax
Outfits
On the same character, tried with an outfit equipped: p1 identical, p2 / p3 differed.
| Outfit | Slot | chunk2 ID | /v2/skins
|
|---|---|---|---|
Pirate Captain's Outfit (3) |
Coat | 1076 |
Armor/Coat, name "", Clothing
|
| Boots | 1083 |
Armor/Boots, name "", Clothing
| |
| Gloves | 1149 |
Armor/Gloves, name "", Clothing
| |
| Helm | 1193 |
Armor/Helm, name "", Clothing
| |
| Leggings | 1057 |
no such id
| |
End of Dragons Emblem Clothing Outfit (113) |
Coat | 10273 |
no such id
|
| Boots | 1047 |
Armor/Boots, name "", Clothing
| |
| Leggings | 1053 |
Armor/Leggings, name "", Clothing
|
Observations:
- The outfit ID is clearly not used to store this data (
3and113are the IDs of the tested outfits, absent at every byte width). - Some of the skin IDs have no name but exist in the API, and the icons look like they match the theme of the given outfit.
- Many IDs missing from the API (not uncommon for older items/skins/etc. unfortunately)
Links
- Python decoder script: https://gist.github.com/Yoone/d1347aeba682777a4bbef55d9f1eecd7