summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog4
-rw-r--r--src/being.h1
-rw-r--r--src/net/beinghandler.cpp16
-rw-r--r--src/net/charserverhandler.cpp7
4 files changed, 22 insertions, 6 deletions
diff --git a/ChangeLog b/ChangeLog
index 83ab07d3..c278ea45 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2008-07-18 Lloyd Bryant ("Sanga") <lloyd_bryant@netzero.net>
+
+ * Added code to provide viewable glove and shoe sprites
+
2008-07-11 Douglas Boffey <DougABoffey@netscape.net>
* Added code to avoid collision between different displayed text.
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();