summaryrefslogtreecommitdiff
path: root/src/net
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2014-09-02 00:18:19 +0300
committerAndrei Karas <akaras@inbox.ru>2014-09-06 01:18:55 +0300
commit4f19173e1c6f606cbbbc7785ab270ab70dff1df0 (patch)
tree80f5f674050df83a3bd5e0c172ae614a9196c8f6 /src/net
parent65d1d4810e79d15e436208dccd865d93c237e5a9 (diff)
downloadmv-4f19173e1c6f606cbbbc7785ab270ab70dff1df0.tar.gz
mv-4f19173e1c6f606cbbbc7785ab270ab70dff1df0.tar.bz2
mv-4f19173e1c6f606cbbbc7785ab270ab70dff1df0.tar.xz
mv-4f19173e1c6f606cbbbc7785ab270ab70dff1df0.zip
eathena: fix handling packet SMSG_PLAYER_STAT_UPDATE_5 0x00bd.
Diffstat (limited to 'src/net')
-rw-r--r--src/net/eathena/playerhandler.cpp87
1 files changed, 47 insertions, 40 deletions
diff --git a/src/net/eathena/playerhandler.cpp b/src/net/eathena/playerhandler.cpp
index 1a3a18d8a..5a7a1bada 100644
--- a/src/net/eathena/playerhandler.cpp
+++ b/src/net/eathena/playerhandler.cpp
@@ -246,74 +246,81 @@ void PlayerHandler::processPlayerShowEquip(Net::MessageIn &msg)
void PlayerHandler::processPlayerStatUpdate5(Net::MessageIn &msg)
{
BLOCK_START("PlayerHandler::processPlayerStatUpdate5")
- PlayerInfo::setAttribute(Attributes::CHAR_POINTS, msg.readInt16());
+ PlayerInfo::setAttribute(Attributes::CHAR_POINTS,
+ msg.readInt16("char points"));
- unsigned int val = msg.readUInt8();
- PlayerInfo::setStatBase(STR, val);
+ unsigned int val = msg.readUInt8("str");
+ PlayerInfo::setStatBase(EA_STR, val);
if (statusWindow)
- statusWindow->setPointsNeeded(STR, msg.readUInt8());
+ statusWindow->setPointsNeeded(EA_STR, msg.readUInt8("str cost"));
else
- msg.readUInt8();
+ msg.readUInt8("str need");
- val = msg.readUInt8();
- PlayerInfo::setStatBase(AGI, val);
+ val = msg.readUInt8("agi");
+ PlayerInfo::setStatBase(EA_AGI, val);
if (statusWindow)
- statusWindow->setPointsNeeded(AGI, msg.readUInt8());
+ statusWindow->setPointsNeeded(EA_AGI, msg.readUInt8("agi cost"));
else
- msg.readUInt8();
+ msg.readUInt8("agi cost");
- val = msg.readUInt8();
- PlayerInfo::setStatBase(VIT, val);
+ val = msg.readUInt8("vit");
+ PlayerInfo::setStatBase(EA_VIT, val);
if (statusWindow)
- statusWindow->setPointsNeeded(VIT, msg.readUInt8());
+ statusWindow->setPointsNeeded(EA_VIT, msg.readUInt8("vit cost"));
else
- msg.readUInt8();
+ msg.readUInt8("vit cost");
- val = msg.readUInt8();
- PlayerInfo::setStatBase(INT, val);
+ val = msg.readUInt8("int");
+ PlayerInfo::setStatBase(EA_INT, val);
if (statusWindow)
- statusWindow->setPointsNeeded(INT, msg.readUInt8());
+ statusWindow->setPointsNeeded(EA_INT, msg.readUInt8("int cost"));
else
- msg.readUInt8();
+ msg.readUInt8("int cost");
- val = msg.readUInt8();
- PlayerInfo::setStatBase(DEX, val);
+ val = msg.readUInt8("dex");
+ PlayerInfo::setStatBase(EA_DEX, val);
if (statusWindow)
- statusWindow->setPointsNeeded(DEX, msg.readUInt8());
+ statusWindow->setPointsNeeded(EA_DEX, msg.readUInt8("dex cost"));
else
- msg.readUInt8();
+ msg.readUInt8("dex cost");
- val = msg.readUInt8();
- PlayerInfo::setStatBase(LUK, val);
+ val = msg.readUInt8("luk");
+ PlayerInfo::setStatBase(EA_LUK, val);
if (statusWindow)
- statusWindow->setPointsNeeded(LUK, msg.readUInt8());
+ statusWindow->setPointsNeeded(EA_LUK, msg.readUInt8("luk cost"));
else
- msg.readUInt8();
+ msg.readUInt8("luk cost");
- PlayerInfo::setStatBase(ATK, msg.readInt16(), false);
- PlayerInfo::setStatMod(ATK, msg.readInt16());
+ PlayerInfo::setStatBase(EA_ATK, msg.readInt16("left atk"), false);
+ PlayerInfo::setStatMod(EA_ATK, msg.readInt16("right atk"));
PlayerInfo::updateAttrs();
- val = msg.readInt16();
- PlayerInfo::setStatBase(MATK, val, false);
+ val = msg.readInt16("right matk");
+ PlayerInfo::setStatBase(EA_MATK, val, false);
- val = msg.readInt16();
- PlayerInfo::setStatMod(MATK, val);
+ val = msg.readInt16("left matk");
+ PlayerInfo::setStatMod(EA_MATK, val);
- PlayerInfo::setStatBase(DEF, msg.readInt16(), false);
- PlayerInfo::setStatMod(DEF, msg.readInt16());
+ PlayerInfo::setStatBase(EA_DEF, msg.readInt16("left def"), false);
+ PlayerInfo::setStatMod(EA_DEF, msg.readInt16("right def"));
- PlayerInfo::setStatBase(MDEF, msg.readInt16(), false);
- PlayerInfo::setStatMod(MDEF, msg.readInt16());
+ PlayerInfo::setStatBase(EA_MDEF, msg.readInt16("left mdef"), false);
+ PlayerInfo::setStatMod(EA_MDEF, msg.readInt16("right mdef"));
- PlayerInfo::setStatBase(HIT, msg.readInt16());
+ PlayerInfo::setStatBase(EA_HIT, msg.readInt16("hit"));
- PlayerInfo::setStatBase(FLEE, msg.readInt16(), false);
- PlayerInfo::setStatMod(FLEE, msg.readInt16());
+ PlayerInfo::setStatBase(EA_FLEE, msg.readInt16("flee"), false);
+ PlayerInfo::setStatMod(EA_FLEE, msg.readInt16("flee2/10"));
- PlayerInfo::setStatBase(CRIT, msg.readInt16());
+ PlayerInfo::setStatBase(EA_CRIT, msg.readInt16("crit/10"));
+
+ const int speed = msg.readInt16("speed");
+ localPlayer->setWalkSpeed(Vector(static_cast<float>(speed),
+ static_cast<float>(speed), 0));
+ PlayerInfo::setStatBase(Attributes::WALK_SPEED, speed);
+ PlayerInfo::setStatMod(Attributes::WALK_SPEED,
+ msg.readInt16("plus speed = 0"));
- msg.readInt16(); // manner
BLOCK_END("PlayerHandler::processPlayerStatUpdate5")
}