summaryrefslogtreecommitdiff
path: root/src/net
diff options
context:
space:
mode:
Diffstat (limited to 'src/net')
-rw-r--r--src/net/ea/generalhandler.cpp21
-rw-r--r--src/net/ea/gui/partytab.cpp2
-rw-r--r--src/net/ea/inventoryhandler.cpp4
-rw-r--r--src/net/ea/partyhandler.cpp15
-rw-r--r--src/net/ea/playerhandler.cpp2
-rw-r--r--src/net/ea/skillhandler.cpp4
-rw-r--r--src/net/ea/tradehandler.cpp12
-rw-r--r--src/net/tmwserv/generalhandler.cpp23
-rw-r--r--src/net/tmwserv/inventoryhandler.cpp3
-rw-r--r--src/net/tmwserv/partyhandler.cpp2
-rw-r--r--src/net/tmwserv/playerhandler.cpp3
-rw-r--r--src/net/tmwserv/tradehandler.cpp2
12 files changed, 48 insertions, 45 deletions
diff --git a/src/net/ea/generalhandler.cpp b/src/net/ea/generalhandler.cpp
index b8d75671..404bff69 100644
--- a/src/net/ea/generalhandler.cpp
+++ b/src/net/ea/generalhandler.cpp
@@ -87,20 +87,13 @@ GeneralHandler::GeneralHandler():
handledMessages = _messages;
generalHandler = this;
- std::list<ItemDB::Stat*> stats;
- ItemDB::Stat stat;
- stat.tag = "str"; stat.format = N_("Strength: %d");
- stats.push_back(&stat);
- stat.tag = "agi"; stat.format = N_("Agility: %d");
- stats.push_back(&stat);
- stat.tag = "vit"; stat.format = N_("Vitality: %d");
- stats.push_back(&stat);
- stat.tag = "int"; stat.format = N_("Intelligence: %d");
- stats.push_back(&stat);
- stat.tag = "dex"; stat.format = N_("Dexterity: %d");
- stats.push_back(&stat);
- stat.tag = "luck"; stat.format = N_("Luck: %d");
- stats.push_back(&stat);
+ std::list<ItemDB::Stat> stats;
+ stats.push_back(ItemDB::Stat("str", N_("Strength %+d")));
+ stats.push_back(ItemDB::Stat("agi", N_("Agility %+d")));
+ stats.push_back(ItemDB::Stat("vit", N_("Vitality %+d")));
+ stats.push_back(ItemDB::Stat("int", N_("Intelligence %+d")));
+ stats.push_back(ItemDB::Stat("dex", N_("Dexterity %+d")));
+ stats.push_back(ItemDB::Stat("luck", N_("Luck %+d")));
ItemDB::setStatsList(stats);
}
diff --git a/src/net/ea/gui/partytab.cpp b/src/net/ea/gui/partytab.cpp
index 12ca0d8d..9b0fc8c5 100644
--- a/src/net/ea/gui/partytab.cpp
+++ b/src/net/ea/gui/partytab.cpp
@@ -38,7 +38,7 @@
PartyTab::PartyTab() :
ChatTab(_("Party"))
{
- setTabColor(guiPalette->getColor(Palette::PARTY));
+ setTabColor(&guiPalette->getColor(Palette::PARTY));
}
PartyTab::~PartyTab()
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/partyhandler.cpp b/src/net/ea/partyhandler.cpp
index e5b20a38..2f1b02ab 100644
--- a/src/net/ea/partyhandler.cpp
+++ b/src/net/ea/partyhandler.cpp
@@ -79,6 +79,7 @@ void PartyHandler::handleMessage(MessageIn &msg)
{
partyTab->chatLog(_("Party successfully created."), BY_SERVER);
player_node->setInParty(true);
+ partyWindow->setVisible(true);
}
break;
case SMSG_PARTY_INFO:
@@ -90,6 +91,7 @@ void PartyHandler::handleMessage(MessageIn &msg)
int length = msg.readInt16();
std::string party = msg.readString(24);
+ partyWindow->setPartyName(party);
int count = (length - 28) / 46;
for (int i = 0; i < count; i++)
@@ -101,13 +103,7 @@ void PartyHandler::handleMessage(MessageIn &msg)
bool online = msg.readInt8() == 0;
partyWindow->updateMember(id, nick, leader, online);
-
- Being *being = beingManager->findBeing(id);
- if (being)
- being->setName(nick);
}
-
- partyWindow->setVisible(true);
}
break;
case SMSG_PARTY_INVITE_RESPONSE:
@@ -230,15 +226,16 @@ void PartyHandler::handleMessage(MessageIn &msg)
msg.readInt8(); // fail
if (id == player_node->getId())
{
- player_node->setInParty(false);
partyWindow->clearMembers();
partyWindow->setVisible(false);
partyTab->chatLog(_("You have left the party."), BY_SERVER);
}
else
+ {
partyTab->chatLog(strprintf(_("%s has left your party."),
nick.c_str()), BY_SERVER);
- partyWindow->removeMember(id);
+ partyWindow->removeMember(id);
+ }
break;
}
case SMSG_PARTY_UPDATE_HP:
@@ -305,7 +302,7 @@ void PartyHandler::inviteResponse(const std::string &inviter, bool accept)
MessageOut outMsg(CMSG_PARTY_INVITED);
outMsg.writeInt32(player_node->getId());
outMsg.writeInt32(accept ? 1 : 0);
- player_node->setInParty(player_node->getInParty() || accept);
+ player_node->setInParty(player_node->isInParty() || accept);
}
void PartyHandler::leave()
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);
}
diff --git a/src/net/tmwserv/generalhandler.cpp b/src/net/tmwserv/generalhandler.cpp
index 0a0ca346..5886aafb 100644
--- a/src/net/tmwserv/generalhandler.cpp
+++ b/src/net/tmwserv/generalhandler.cpp
@@ -20,6 +20,7 @@
*/
#include "gui/inventorywindow.h"
+#include "gui/partywindow.h"
#include "net/tmwserv/generalhandler.h"
@@ -77,20 +78,13 @@ GeneralHandler::GeneralHandler():
generalHandler = this;
- std::list<ItemDB::Stat*> stats;
- ItemDB::Stat stat;
- stat.tag = "str"; stat.format = N_("Strength: %d");
- stats.push_back(&stat);
- stat.tag = "agi"; stat.format = N_("Agility: %d");
- stats.push_back(&stat);
- stat.tag = "dex"; stat.format = N_("Dexterity: %d");
- stats.push_back(&stat);
- stat.tag = "vit"; stat.format = N_("Vitality: %d");
- stats.push_back(&stat);
- stat.tag = "int"; stat.format = N_("Intelligence: %d");
- stats.push_back(&stat);
- stat.tag = "will"; stat.format = N_("Willpower: %d");
- stats.push_back(&stat);
+ std::list<ItemDB::Stat> stats;
+ stats.push_back(ItemDB::Stat("str", N_("Strength %+d")));
+ stats.push_back(ItemDB::Stat("agi", N_("Agility %+d")));
+ stats.push_back(ItemDB::Stat("dex", N_("Dexterity %+d")));
+ stats.push_back(ItemDB::Stat("vit", N_("Vitality %+d")));
+ stats.push_back(ItemDB::Stat("int", N_("Intelligence %+d")));
+ stats.push_back(ItemDB::Stat("will", N_("Willpower %+d")));
ItemDB::setStatsList(stats);
}
@@ -151,6 +145,7 @@ void GeneralHandler::tick()
void GeneralHandler::guiWindowsLoaded()
{
inventoryWindow->setSplitAllowed(true);
+ partyWindow->clearPartyName();
}
void GeneralHandler::guiWindowsUnloaded()
diff --git a/src/net/tmwserv/inventoryhandler.cpp b/src/net/tmwserv/inventoryhandler.cpp
index d78c8318..8110fdd2 100644
--- a/src/net/tmwserv/inventoryhandler.cpp
+++ b/src/net/tmwserv/inventoryhandler.cpp
@@ -100,6 +100,9 @@ void InventoryHandler::unequipItem(const Item *item)
MessageOut msg(PGMSG_UNEQUIP);
msg.writeInt8(item->getInvIndex());
Net::GameServer::connection->send(msg);
+
+ // Tidy equipment directly to avoid weapon still shown bug, for instance
+ player_node->mEquipment->setEquipment(item->getInvIndex(), 0);
}
void InventoryHandler::useItem(const Item *item)
diff --git a/src/net/tmwserv/partyhandler.cpp b/src/net/tmwserv/partyhandler.cpp
index 01de1be8..47ef791c 100644
--- a/src/net/tmwserv/partyhandler.cpp
+++ b/src/net/tmwserv/partyhandler.cpp
@@ -99,7 +99,7 @@ void PartyHandler::handleMessage(MessageIn &msg)
localChatTab->chatLog(name + " joined the party");
- if (!player_node->getInParty())
+ if (!player_node->isInParty())
player_node->setInParty(true);
partyWindow->updateMember(id, name);
diff --git a/src/net/tmwserv/playerhandler.cpp b/src/net/tmwserv/playerhandler.cpp
index c7769ede..b697e8a8 100644
--- a/src/net/tmwserv/playerhandler.cpp
+++ b/src/net/tmwserv/playerhandler.cpp
@@ -29,6 +29,7 @@
#include "net/messagein.h"
#include "net/messageout.h"
+#include "net/net.h"
#include "effectmanager.h"
#include "engine.h"
@@ -81,7 +82,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/tmwserv/tradehandler.cpp b/src/net/tmwserv/tradehandler.cpp
index 4c462a3f..74789a34 100644
--- a/src/net/tmwserv/tradehandler.cpp
+++ b/src/net/tmwserv/tradehandler.cpp
@@ -167,6 +167,8 @@ void TradeHandler::request(Being *being)
void TradeHandler::respond(bool accept)
{
// TODO
+ if (!accept)
+ player_node->setTrading(false);
}
void TradeHandler::addItem(Item *item, int amount)