summaryrefslogtreecommitdiff
path: root/src/net
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2012-09-03 03:18:21 +0300
committerAndrei Karas <akaras@inbox.ru>2012-09-04 03:02:23 +0300
commitebecb0cf42f2066943908fa158ac91527e0e6629 (patch)
tree83dfe4650746e6b31803f7876ab3c0a50179a794 /src/net
parentfa21c1b65dbe91a1e6ac880db977416162f268df (diff)
downloadmanaplus-ebecb0cf42f2066943908fa158ac91527e0e6629.tar.gz
manaplus-ebecb0cf42f2066943908fa158ac91527e0e6629.tar.bz2
manaplus-ebecb0cf42f2066943908fa158ac91527e0e6629.tar.xz
manaplus-ebecb0cf42f2066943908fa158ac91527e0e6629.zip
Fix hair colors color if old and new hair using different paletes.
Also fix hair replace logic between hairs with different paletes.
Diffstat (limited to 'src/net')
-rw-r--r--src/net/ea/beinghandler.cpp1
-rw-r--r--src/net/tmwa/beinghandler.cpp6
-rw-r--r--src/net/tmwa/charserverhandler.cpp4
3 files changed, 7 insertions, 4 deletions
diff --git a/src/net/ea/beinghandler.cpp b/src/net/ea/beinghandler.cpp
index 1dc98f776..d234bca6a 100644
--- a/src/net/ea/beinghandler.cpp
+++ b/src/net/ea/beinghandler.cpp
@@ -265,6 +265,7 @@ void BeingHandler::processBeingVisibleOrMove(Net::MessageIn &msg, bool visible)
// Set these after the gender, as the sprites may be gender-specific
setSprite(dstBeing, EA_SPRITE_HAIR, hairStyle * -1,
ItemDB::get(-hairStyle).getDyeColorsString(hairColor));
+ dstBeing->setHairColor(hairColor);
setSprite(dstBeing, EA_SPRITE_BOTTOMCLOTHES, headBottom);
setSprite(dstBeing, EA_SPRITE_TOPCLOTHES, headMid);
setSprite(dstBeing, EA_SPRITE_HAT, headTop);
diff --git a/src/net/tmwa/beinghandler.cpp b/src/net/tmwa/beinghandler.cpp
index 2eac3c4a2..f816c9e04 100644
--- a/src/net/tmwa/beinghandler.cpp
+++ b/src/net/tmwa/beinghandler.cpp
@@ -299,7 +299,7 @@ void BeingHandler::processBeingChangeLook(Net::MessageIn &msg, bool look2)
dstBeing->setSubtype(static_cast<uint16_t>(id));
break;
case 1: // eAthena LOOK_HAIR
- dstBeing->setSpriteID(SPRITE_HAIR, id *-1);
+ dstBeing->setHairStyle(SPRITE_HAIR, id * -1);
break;
case 2: // Weapon ID in id, Shield ID in id2
dstBeing->setSprite(SPRITE_WEAPON, id, "", 1, true);
@@ -323,8 +323,7 @@ void BeingHandler::processBeingChangeLook(Net::MessageIn &msg, bool look2)
player_node->imitateOutfit(dstBeing, SPRITE_TOPCLOTHES);
break;
case 6: // eAthena LOOK_HAIR_COLOR
- dstBeing->setSpriteColor(SPRITE_HAIR, ItemDB::get(
- dstBeing->getSpriteID(SPRITE_HAIR)).getDyeColorsString(id));
+ dstBeing->setHairColor(SPRITE_HAIR, id);
break;
case 7: // Clothes color
// ignoring it
@@ -541,6 +540,7 @@ void BeingHandler::processPlayerMoveUpdate(Net::MessageIn &msg, int msgType)
//dstBeing->setSprite(SPRITE_MISC2, misc2);
dstBeing->setSprite(SPRITE_HAIR, hairStyle * -1,
ItemDB::get(-hairStyle).getDyeColorsString(hairColor));
+ dstBeing->setHairColor(hairColor);
player_node->imitateOutfit(dstBeing);
diff --git a/src/net/tmwa/charserverhandler.cpp b/src/net/tmwa/charserverhandler.cpp
index 235028f71..4261887fb 100644
--- a/src/net/tmwa/charserverhandler.cpp
+++ b/src/net/tmwa/charserverhandler.cpp
@@ -215,8 +215,10 @@ void CharServerHandler::readPlayerData(Net::MessageIn &msg,
const int hat = msg.readInt16(); // head option top
const int topClothes = msg.readInt16();
+ const int hairColor = msg.readInt16();
tempPlayer->setSprite(SPRITE_HAIR, hairStyle * -1,
- ItemDB::get(-hairStyle).getDyeColorsString(msg.readInt16()));
+ ItemDB::get(-hairStyle).getDyeColorsString(hairColor));
+ tempPlayer->setHairColor(hairColor);
const int misc2 = msg.readInt16();
tempPlayer->setName(msg.readString(24));