summaryrefslogtreecommitdiff
path: root/src/net
diff options
context:
space:
mode:
authorGuillaume Melquiond <guillaume.melquiond@gmail.com>2007-08-18 22:01:43 +0000
committerGuillaume Melquiond <guillaume.melquiond@gmail.com>2007-08-18 22:01:43 +0000
commita971d34980ecbeefd7db08dd7f8049795bf9f56b (patch)
treed096fa01a38f31374256d14e06ff4a46676fa86c /src/net
parent1a68e441ec6d7d529b5c64bfafac56ae45d3f2fb (diff)
downloadmana-client-a971d34980ecbeefd7db08dd7f8049795bf9f56b.tar.gz
mana-client-a971d34980ecbeefd7db08dd7f8049795bf9f56b.tar.bz2
mana-client-a971d34980ecbeefd7db08dd7f8049795bf9f56b.tar.xz
mana-client-a971d34980ecbeefd7db08dd7f8049795bf9f56b.zip
Adapted to new server handling of character attributes.
Diffstat (limited to 'src/net')
-rw-r--r--src/net/playerhandler.cpp30
-rw-r--r--src/net/protocol.h2
2 files changed, 12 insertions, 20 deletions
diff --git a/src/net/playerhandler.cpp b/src/net/playerhandler.cpp
index 335c2eb1..b94b5128 100644
--- a/src/net/playerhandler.cpp
+++ b/src/net/playerhandler.cpp
@@ -87,16 +87,9 @@ namespace {
PlayerHandler::PlayerHandler()
{
static const Uint16 _messages[] = {
- //SMSG_PLAYER_STAT_UPDATE_1,
- //SMSG_PLAYER_STAT_UPDATE_2,
- //SMSG_PLAYER_STAT_UPDATE_3,
- //SMSG_PLAYER_STAT_UPDATE_4,
- //SMSG_PLAYER_STAT_UPDATE_5,
- //SMSG_PLAYER_STAT_UPDATE_6,
- //SMSG_PLAYER_ARROW_MESSAGE,
GPMSG_PLAYER_MAP_CHANGE,
GPMSG_PLAYER_SERVER_CHANGE,
- GPMSG_PLAYER_ATTRIBUTE_UPDATE,
+ GPMSG_PLAYER_ATTRIBUTE_CHANGE,
0
};
handledMessages = _messages;
@@ -118,26 +111,25 @@ void PlayerHandler::handleMessage(MessageIn &msg)
logger->log("Changing server to %s:%d", address.c_str(), port);
} break;
- case GPMSG_PLAYER_ATTRIBUTE_UPDATE:
+ case GPMSG_PLAYER_ATTRIBUTE_CHANGE:
{
logger->log("ATTRIBUTE UPDATE:");
while (msg.getUnreadLength())
{
- int stat = msg.readShort();
+ int stat = msg.readByte();
+ int base = msg.readShort();
int value = msg.readShort();
- logger->log("%d set to %d", stat, value);
+ logger->log("%d set to %d %d", stat, base, value);
- if (stat < NB_BASE_ATTRIBUTES)
+ if (stat == BASE_ATTR_HP)
{
- player_node->setAttributeBase(stat, value);
+ player_node->setMaxHP(base);
+ player_node->setHP(value);
}
- else if (stat < NB_EFFECTIVE_ATTRIBUTES)
+ else if (stat < NB_CHARACTER_ATTRIBUTES)
{
- player_node->setAttributeEffective(stat - NB_BASE_ATTRIBUTES, value);
- }
- else if (stat == DERIVED_ATTR_HP_MAXIMUM)
- {
- player_node->setMaxHP(value);
+ player_node->setAttributeBase(stat, base);
+ player_node->setAttributeEffective(stat, value);
}
else
{
diff --git a/src/net/protocol.h b/src/net/protocol.h
index 3e67e647..d8b9fcb2 100644
--- a/src/net/protocol.h
+++ b/src/net/protocol.h
@@ -82,7 +82,7 @@ enum {
PGMSG_MOVE_ITEM = 0x0114, // B slot1, B slot2, B amount
GPMSG_INVENTORY = 0x0120, // { B slot, W item id [, B amount] }*
GPMSG_INVENTORY_FULL = 0x0121, // { B slot, W item id [, B amount] }*
- GPMSG_PLAYER_ATTRIBUTE_UPDATE = 0x0130, // { W attribute, W value }*
+ GPMSG_PLAYER_ATTRIBUTE_CHANGE = 0x0130, // { B attribute, W base value, W modified value }*
GPMSG_BEING_ENTER = 0x0200, // B type, W being id, B action, W*2 position
// player: S name, B hair style, B hair color, B gender, B item bitmask, { W item id }*
// monster: W type id