From 4f19173e1c6f606cbbbc7785ab270ab70dff1df0 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Tue, 2 Sep 2014 00:18:19 +0300 Subject: eathena: fix handling packet SMSG_PLAYER_STAT_UPDATE_5 0x00bd. --- src/net/eathena/playerhandler.cpp | 87 +++++++++++++++++++++------------------ 1 file changed, 47 insertions(+), 40 deletions(-) (limited to 'src/net/eathena/playerhandler.cpp') 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(speed), + static_cast(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") } -- cgit v1.2.3-60-g2f50