diff options
Diffstat (limited to 'src/net')
-rw-r--r-- | src/net/messagein.cpp | 32 | ||||
-rw-r--r-- | src/net/protocol.cpp | 32 |
2 files changed, 64 insertions, 0 deletions
diff --git a/src/net/messagein.cpp b/src/net/messagein.cpp index 9f2b38f7..9abe4a2d 100644 --- a/src/net/messagein.cpp +++ b/src/net/messagein.cpp @@ -87,6 +87,38 @@ MessageIn::readCoordinates(Uint16 &x, Uint16 &y, Uint8 &direction) direction = data[2] & 0x000f; + // Translate from eAthena format + switch (direction) + { + case 0: + direction = 1; + break; + case 1: + direction = 3; + break; + case 2: + direction = 2; + break; + case 3: + direction = 6; + break; + case 4: + direction = 4; + break; + case 5: + direction = 12; + break; + case 6: + direction = 8; + break; + case 7: + direction = 9; + break; + default: + // OOPSIE! Impossible or unknown + direction = 0; + } + mPos += 3; } diff --git a/src/net/protocol.cpp b/src/net/protocol.cpp index f31d4a39..d3db50bf 100644 --- a/src/net/protocol.cpp +++ b/src/net/protocol.cpp @@ -43,5 +43,37 @@ void set_coordinates(char *data, temp <<= 4; data[1] |= HIBYTE(temp); data[2] = LOBYTE(temp); + + // Translate direction to eAthena format + switch (direction) + { + case 1: + direction = 0; + break; + case 3: + direction = 1; + break; + case 2: + direction = 2; + break; + case 6: + direction = 3; + break; + case 4: + direction = 4; + break; + case 12: + direction = 5; + break; + case 8: + direction = 6; + break; + case 9: + direction = 7; + break; + default: + // OOPSIE! Impossible or unknown + direction = (unsigned char)-1; + } data[2] |= direction; } |