summaryrefslogtreecommitdiff
path: root/src/net/ea
diff options
context:
space:
mode:
Diffstat (limited to 'src/net/ea')
-rw-r--r--src/net/ea/inventoryhandler.cpp4
-rw-r--r--src/net/ea/playerhandler.cpp2
-rw-r--r--src/net/ea/skillhandler.cpp4
-rw-r--r--src/net/ea/tradehandler.cpp12
4 files changed, 17 insertions, 5 deletions
diff --git a/src/net/ea/inventoryhandler.cpp b/src/net/ea/inventoryhandler.cpp
index 1c48aa6c..30c583b8 100644
--- a/src/net/ea/inventoryhandler.cpp
+++ b/src/net/ea/inventoryhandler.cpp
@@ -27,6 +27,7 @@
#include "net/messageout.h"
#include "configuration.h"
+#include "equipment.h"
#include "inventory.h"
#include "item.h"
#include "itemshortcut.h"
@@ -318,6 +319,9 @@ void InventoryHandler::unequipItem(const Item *item)
MessageOut outMsg(CMSG_PLAYER_UNEQUIP);
outMsg.writeInt16(item->getInvIndex() + INVENTORY_OFFSET);
+
+ // Tidy equipment directly to avoid weapon still shown bug, for instance
+ player_node->mEquipment->removeEquipment(item->getInvIndex());
}
void InventoryHandler::useItem(const Item *item)
diff --git a/src/net/ea/playerhandler.cpp b/src/net/ea/playerhandler.cpp
index 3f8fbc09..29f0bac4 100644
--- a/src/net/ea/playerhandler.cpp
+++ b/src/net/ea/playerhandler.cpp
@@ -75,7 +75,7 @@ namespace {
{
void action(const gcn::ActionEvent &event)
{
- player_node->revive();
+ Net::getPlayerHandler()->respawn();
deathNotice = NULL;
buyDialog->setVisible(false);
sellDialog->setVisible(false);
diff --git a/src/net/ea/skillhandler.cpp b/src/net/ea/skillhandler.cpp
index 0239a2c8..69b0fd65 100644
--- a/src/net/ea/skillhandler.cpp
+++ b/src/net/ea/skillhandler.cpp
@@ -26,6 +26,7 @@
#include "net/messagein.h"
#include "net/messageout.h"
+#include "localplayer.h"
#include "log.h"
#include "gui/skill.h"
@@ -216,6 +217,9 @@ void SkillHandler::handleMessage(MessageIn &msg)
void SkillHandler::up(int skillId)
{
+ if (player_node->mSkillPoint <= 0)
+ return;
+
MessageOut outMsg(CMSG_SKILL_LEVELUP_REQUEST);
outMsg.writeInt16(skillId);
}
diff --git a/src/net/ea/tradehandler.cpp b/src/net/ea/tradehandler.cpp
index ee8e6733..74722332 100644
--- a/src/net/ea/tradehandler.cpp
+++ b/src/net/ea/tradehandler.cpp
@@ -23,6 +23,7 @@
#include "net/ea/protocol.h"
+#include "net/inventoryhandler.h"
#include "net/messagein.h"
#include "net/messageout.h"
@@ -48,7 +49,7 @@ namespace {
{
void action(const gcn::ActionEvent &event)
{
- player_node->tradeReply(event.getId() == "yes");
+ Net::getTradeHandler()->respond(event.getId() == "yes");
}
} listener;
}
@@ -91,7 +92,7 @@ void TradeHandler::handleMessage(MessageIn &msg)
{
if (!player_node->tradeRequestOk())
{
- player_node->tradeReply(false);
+ Net::getTradeHandler()->respond(false);
break;
}
@@ -104,7 +105,7 @@ void TradeHandler::handleMessage(MessageIn &msg)
}
else
{
- player_node->tradeReply(false);
+ Net::getTradeHandler()->respond(false);
break;
}
break;
@@ -183,7 +184,7 @@ void TradeHandler::handleMessage(MessageIn &msg)
// Successfully added item
if (item->isEquipment() && item->isEquipped())
{
- player_node->unequipItem(item);
+ Net::getInventoryHandler()->unequipItem(item);
}
tradeWindow->addItem(item->getId(), true, quantity,
item->isEquipment());
@@ -236,6 +237,9 @@ void TradeHandler::request(Being *being)
void TradeHandler::respond(bool accept)
{
+ if (!accept)
+ player_node->setTrading(false);
+
MessageOut outMsg(CMSG_TRADE_RESPONSE);
outMsg.writeInt8(accept ? 3 : 4);
}