# 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 |