Files
AdamuSw/docs/Packets/Appearance.md
2026-07-14 19:00:35 +03:00

154 lines
6.4 KiB
Markdown

# Appearance
The appearance of characters is serialized as follows.
Webzen did a "good" job saving one bit here and there, so it's a bit complicated
sometimes (e.g. wings and pets).
It seems like the structure is historically grown.
## Structure
Please read this table like a stream of bits. E.g. if there are 8 bits of 1 byte
are specified in a row, the highest bits come first.
| Byte index | Length | Data type | Description |
|----------|---------|-------------|------------|
| 0 | 4 | bit | Character class |
| 0 | 4 | bit | Character pose, see below |
| 1 | 1 | byte | Left hand item index. 0xFF if empty. |
| 2 | 1 | byte | Right hand item index. 0xFF if empty. |
| 3 | 4 | bit | Helm item index (lower 4 bits). See byte index 9 and 13 for the rest. |
| 3 | 4 | bit | Armor item index (lower 4 bits). See byte index 9 and 14 for the rest. |
| 4 | 4 | bit | Pants item index (lower 4 bits). See byte index 9 and 14 for the rest. |
| 4 | 4 | bit | Gloves item index (lower 4 bits). See byte index 9 and 15 for the rest. |
| 5 | 4 | bit | Boots item index (lower 4 bits). See byte index 9 and 15 for the rest. |
| 5 | 4 | bit | Pets and wings flags, see below |
| 6 | 3 | bit | Left hand item level |
| 6 | 3 | bit | Right hand item level |
| 6~7 | 3 | bit | Helm item level |
| 7 | 3 | bit | Armor item level |
| 7 | 3 | bit | Pants item level |
| 7~8 | 3 | bit | Gloves item level |
| 8 | 3 | bit | Boots item level |
| 8 | 3 | bit | unused |
| 9 | 1 | bit | Helm item index (5th bit) |
| 9 | 1 | bit | Armor item index (5th bit) |
| 9 | 1 | bit | Pants item index (5th bit) |
| 9 | 1 | bit | Gloves item index (5th bit) |
| 9 | 1 | bit | Boots item index (5th bit) |
| 9 | 3 | bit | Wing item index (see table below) |
| 10 | 1 | bit | Helm excellent option flag |
| 10 | 1 | bit | Armor excellent option flag |
| 10 | 1 | bit | Pants excellent option flag |
| 10 | 1 | bit | Gloves excellent option flag |
| 10 | 1 | bit | Boots excellent option flag |
| 10 | 1 | bit | Left hand item excellent option flag |
| 10 | 1 | bit | Right hand item excellent option flag |
| 10 | 1 | bit | Dinorant flag |
| 11 | 1 | bit | Helm ancient option flag |
| 11 | 1 | bit | Armor ancient option flag |
| 11 | 1 | bit | Pants ancient option flag |
| 11 | 1 | bit | Gloves ancient option flag |
| 11 | 1 | bit | Boots ancient option flag |
| 11 | 1 | bit | Left hand item ancient option flag |
| 11 | 1 | bit | Right hand item ancient option flag |
| 11 | 1 | bit | Full ancient set flag |
| 12 | 3 | bit | Left hand item group. 111 = empty |
| 12 | 1 | bit | unused or empty flag? |
| 12 | 1 | bit | unused |
| 12 | 1 | bit | Fenrir flag |
| 12 | 1 | bit | unused |
| 12 | 1 | bit | Dark horse flag |
| 13 | 3 | bit | Right hand item group. 111 = empty |
| 13 | 1 | bit | unused or empty flag? |
| 13 | 4 | bit | Helm item index (6-9th bit). 0xF = empty |
| 14 | 4 | bit | Armor item index (6-9th bit). 0xF = empty |
| 14 | 4 | bit | Pants item index (6-9th bit). 0xF = empty |
| 15 | 4 | bit | Gloves item index (6-9th bit). 0xF = empty |
| 15 | 4 | bit | Boots item index (6-9th bit). 0xF = empty |
| 16 | 6 | bit | Pet item index, see below |
| 16 | 1 | bit | Blue fenrir flag |
| 16 | 1 | bit | Black fenrir flag |
| 17 | 4 | bit | Small Wing item index, see below |
| 17 | 3 | bit | unused |
| 17 | 1 | bit | Gold fenrir flag |
### Character pose
| Value | Meaning |
|-------|---------|
| 0 | Standing (default) |
| 1 | unused |
| 2 | Sitting (e.g. on a trunk) |
| 3 | Leaning (e.g. against a wall) |
| 4 | Hanging (at these strange things in Noria) |
Note: At Season 10 and above, the values are different.
Sitting is at 1, Leaning 2, Hanging 3. So, they removed the unused value.
### Item level calculation
The item levels are calculated with the following formula: ([Item Level] - 1) / 2.
This works until item level of 15, because it fits into 4 bits.
### Item indexes
The bytes are represented in binary format. X means the bit is used by something
else (see table above).
#### Pet items
| Item | 5th byte | 10th byte | 12th byte |
|-----------------------|----------|-----------|-----------|
| Guardian Angel | xxxxxx00 |
| Imp | xxxxxx01 |
| Unicorn | xxxxxx10 |
| Dinorant | xxxxxx11 | xxxxxxx1 ||
| Fenrir | xxxxxx11 | | xxxxxx1x |
| None | xxxxxx11 | xxxxxxx0 |
And some other pets:
| Item | 16th byte |
|-----------------------|-----------|
| Pet Panda | 111000xx |
| Pet Unicorn | 101000xx |
| Skeleton | 011000xx |
| Rudolph | 100000xx |
| Spirit of Guardian | 010000xx |
| Demon | 001000xx |
#### Wings
| Item | Character Class | 5th byte | 9th byte |
|-----------------------|-----------------|----------|----------|
| Wings of Elf | Fairy Elf | xxxx01xx | xxxxx001 |
| Wings of Heaven | Dark Wizard | xxxx01xx | xxxxx010 |
| Wings of Satan | Dark Knight | xxxx01xx | xxxxx011 |
| Wings of Mistery | Summoner | xxxx01xx | xxxxx100 |
| Wings of Spirit | Muse Elf | xxxx10xx | xxxxx001 |
| Wings of Soul | Soul Master | xxxx10xx | xxxxx010 |
| Wings of Dragon | Blade Knight | xxxx10xx | xxxxx011 |
| Wings of Darkness | Magic Gladiator | xxxx10xx | xxxxx100 |
| Cape of Lord | Dark Lord | xxxx10xx | xxxxx101 |
| Wings of Despair | Bloody Summoner | xxxx10xx | xxxxx110 |
| Cape of Fighter | Rage Fighter | xxxx10xx | xxxxx111 |
| Wing of Storm | Blade Master | xxxx11xx | xxxxx001 |
| Wing of Eternal | Grand Master | xxxx11xx | xxxxx010 |
| Wing of Illusion | High Elf | xxxx11xx | xxxxx011 |
| Wing of Ruin | Duel Master | xxxx11xx | xxxxx100 |
| Cape of Emperor | Lord Emperor | xxxx11xx | xxxxx101 |
| Wing of Dimension | Dimension Master| xxxx11xx | xxxxx110 |
| Cape of Overrule | Fist Master | xxxx11xx | xxxxx111 |
| None | | xxxx00xx | xxxxx000 |
#### Small Wings
| Wing Item | 5th byte | 17th byte |
|-----------------------|----------|-------|
| Small Cape of Lord | xxxx11xx | 0x20 |
| Small Wings of Mistery| xxxx11xx | 0x40 |
| Small Wings of Elf | xxxx11xx | 0x60 |
| Small Wings of Heaven | xxxx11xx | 0x80 |
| Small Wings of Satan | xxxx11xx | 0xA0 |
| Small Cloak of Warrior| xxxx11xx | 0xC0 |