baseline: OpenMU upstream b5a0961 (fresh source)
This commit is contained in:
154
docs/Packets/Appearance.md
Normal file
154
docs/Packets/Appearance.md
Normal file
@@ -0,0 +1,154 @@
|
||||
# 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 |
|
||||
Reference in New Issue
Block a user