summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLloyd Bryant <lloyd_bryant@netzero.net>2008-07-18 22:35:01 +0000
committerLloyd Bryant <lloyd_bryant@netzero.net>2008-07-18 22:35:01 +0000
commitb1d854bfcd7d62ed7938ef404a5684f271ea4dd3 (patch)
treee4295d8eb46362a0b8307efce684003f6c5c1628 /src
parent159285c5aa24611ceee7e3847a87bf9ea5f7fb7a (diff)
downloadmana-b1d854bfcd7d62ed7938ef404a5684f271ea4dd3.tar.gz
mana-b1d854bfcd7d62ed7938ef404a5684f271ea4dd3.tar.bz2
mana-b1d854bfcd7d62ed7938ef404a5684f271ea4dd3.tar.xz
mana-b1d854bfcd7d62ed7938ef404a5684f271ea4dd3.zip
Added support for animated shoe and glove sprites
Diffstat (limited to 'src')
-rw-r--r--src/being.h1
-rw-r--r--src/net/beinghandler.cpp16
-rw-r--r--src/net/charserverhandler.cpp7
3 files changed, 18 insertions, 6 deletions
diff --git a/src/being.h b/src/being.h
index 2f711fb8..3ddff097 100644
--- a/src/being.h
+++ b/src/being.h
@@ -96,6 +96,7 @@ class Being : public Sprite
TOPCLOTHES_SPRITE,
HAIR_SPRITE,
HAT_SPRITE,
+ GLOVES_SPRITE,
WEAPON_SPRITE,
SHIELD_SPRITE,
VECTOREND_SPRITE
diff --git a/src/net/beinghandler.cpp b/src/net/beinghandler.cpp
index e077ab14..f48e7751 100644
--- a/src/net/beinghandler.cpp
+++ b/src/net/beinghandler.cpp
@@ -68,6 +68,7 @@ void BeingHandler::handleMessage(MessageIn *msg)
Uint32 id;
Uint16 job, speed;
Uint16 headTop, headMid, headBottom;
+ Uint16 shoes, gloves;
Sint16 param1;
Sint8 type;
Being *srcBeing, *dstBeing;
@@ -124,8 +125,8 @@ void BeingHandler::handleMessage(MessageIn *msg)
headTop = msg->readInt16();
headMid = msg->readInt16();
hairColor = msg->readInt16();
- msg->readInt16(); // clothes color -not used
- msg->readInt16(); // head dir
+ shoes = msg->readInt16();
+ gloves = msg->readInt16();
msg->readInt16(); // guild
msg->readInt16(); // unknown
msg->readInt16(); // unknown
@@ -138,6 +139,8 @@ void BeingHandler::handleMessage(MessageIn *msg)
dstBeing->setSprite(Being::BOTTOMCLOTHES_SPRITE, headBottom);
dstBeing->setSprite(Being::TOPCLOTHES_SPRITE, headMid);
dstBeing->setSprite(Being::HAT_SPRITE, headTop);
+ dstBeing->setSprite(Being::SHOE_SPRITE, shoes);
+ dstBeing->setSprite(Being::GLOVES_SPRITE, gloves);
dstBeing->setHairStyle(hairStyle, hairColor);
if (msg->getId() == SMSG_BEING_MOVE)
@@ -312,6 +315,9 @@ void BeingHandler::handleMessage(MessageIn *msg)
case 9: // eAthena LOOK_SHOES
dstBeing->setSprite(Being::SHOE_SPRITE, id);
break;
+ case 10: // LOOK_GLOVES
+ dstBeing->setSprite(Being::GLOVES_SPRITE, id);
+ break;
default:
logger->log("SMSG_BEING_CHANGE_LOOKS: unsupported type: "
"%d, id: %d", type, id);
@@ -360,8 +366,8 @@ void BeingHandler::handleMessage(MessageIn *msg)
headTop = msg->readInt16();
headMid = msg->readInt16();
hairColor = msg->readInt16();
- msg->readInt16(); // clothes color - not used
- msg->readInt16(); // head dir
+ shoes = msg->readInt16();
+ gloves = msg->readInt16();
msg->readInt32(); // guild
msg->readInt32(); // emblem
msg->readInt16(); // manner
@@ -372,6 +378,8 @@ void BeingHandler::handleMessage(MessageIn *msg)
dstBeing->setSprite(Being::BOTTOMCLOTHES_SPRITE, headBottom);
dstBeing->setSprite(Being::TOPCLOTHES_SPRITE, headMid);
dstBeing->setSprite(Being::HAT_SPRITE, headTop);
+ dstBeing->setSprite(Being::SHOE_SPRITE, shoes);
+ dstBeing->setSprite(Being::GLOVES_SPRITE, gloves);
dstBeing->setHairStyle(hairStyle, hairColor);
if (msg->getId() == SMSG_PLAYER_MOVE)
diff --git a/src/net/charserverhandler.cpp b/src/net/charserverhandler.cpp
index 91f098ba..b421bc2b 100644
--- a/src/net/charserverhandler.cpp
+++ b/src/net/charserverhandler.cpp
@@ -191,7 +191,10 @@ LocalPlayer* CharServerHandler::readPlayerData(MessageIn &msg, int &slot)
tempPlayer->mGp = msg.readInt32();
tempPlayer->mJobXp = msg.readInt32();
tempPlayer->mJobLevel = msg.readInt32();
- msg.skip(8); // unknown
+ tempPlayer->setSprite(Being::SHOE_SPRITE, msg.readInt16());
+ tempPlayer->setSprite(Being::GLOVES_SPRITE, msg.readInt16());
+ msg.readInt16(); // Cape
+ msg.readInt16(); // Misc1
msg.readInt32(); // option
msg.readInt32(); // karma
msg.readInt32(); // manner
@@ -208,7 +211,7 @@ LocalPlayer* CharServerHandler::readPlayerData(MessageIn &msg, int &slot)
tempPlayer->mLevel = msg.readInt16();
msg.readInt16(); // skill point
tempPlayer->setSprite(Being::BOTTOMCLOTHES_SPRITE, msg.readInt16()); // head bottom
- tempPlayer->setSprite(Being::SHIELD_SPRITE, msg.readInt16());
+ tempPlayer->setSprite(Being::SHIELD_SPRITE, msg.readInt16());
tempPlayer->setSprite(Being::HAT_SPRITE, msg.readInt16()); // head option top
tempPlayer->setSprite(Being::TOPCLOTHES_SPRITE, msg.readInt16()); // head option mid
int hairColor = msg.readInt16();