summaryrefslogtreecommitdiff
path: root/src/net
diff options
context:
space:
mode:
Diffstat (limited to 'src/net')
-rw-r--r--src/net/ea/beinghandler.cpp16
-rw-r--r--src/net/ea/partyhandler.cpp3
-rw-r--r--src/net/ea/playerhandler.cpp1
3 files changed, 15 insertions, 5 deletions
diff --git a/src/net/ea/beinghandler.cpp b/src/net/ea/beinghandler.cpp
index 29ed733a..34a0d70a 100644
--- a/src/net/ea/beinghandler.cpp
+++ b/src/net/ea/beinghandler.cpp
@@ -35,6 +35,8 @@
#include "npc.h"
#include "playerrelations.h"
+#include "gui/partywindow.h"
+
#include <iostream>
namespace EAthena {
@@ -445,12 +447,15 @@ void BeingHandler::handleMessage(MessageIn &msg)
dstBeing = createBeing(id, job);
}
- // Fix monster jobs
- if (dstBeing->getType() == Being::MONSTER)
{
- job -= 1002;
+ PartyMember *member = partyWindow->findMember(id);
+ if (member && member->online)
+ {
+ dynamic_cast<Player*>(dstBeing)->setInParty(true);
+ }
}
+
dstBeing->setWalkSpeed(speed);
dstBeing->mJob = job;
hairStyle = msg.readInt16();
@@ -503,8 +508,9 @@ void BeingHandler::handleMessage(MessageIn &msg)
}
gmstatus = msg.readInt16();
- if ((gmstatus & 0x80) && dstBeing->getType() == Being::PLAYER)
- static_cast<Player*>(dstBeing)->setGM();
+ if (gmstatus & 0x80)
+ if (Player *player = dynamic_cast<Player*>(dstBeing))
+ player->setGM(true);
if (msg.getId() == SMSG_PLAYER_UPDATE_1)
{
diff --git a/src/net/ea/partyhandler.cpp b/src/net/ea/partyhandler.cpp
index 2f1b02ab..5e7f43c4 100644
--- a/src/net/ea/partyhandler.cpp
+++ b/src/net/ea/partyhandler.cpp
@@ -156,6 +156,9 @@ void PartyHandler::handleMessage(MessageIn &msg)
}
case SMSG_PARTY_SETTINGS:
{
+ if (!partyTab)
+ break;
+
// These seem to indicate the sharing mode for exp and items
short exp = msg.readInt16();
short item = msg.readInt16();
diff --git a/src/net/ea/playerhandler.cpp b/src/net/ea/playerhandler.cpp
index 29f0bac4..b7131f0a 100644
--- a/src/net/ea/playerhandler.cpp
+++ b/src/net/ea/playerhandler.cpp
@@ -262,6 +262,7 @@ void PlayerHandler::handleMessage(MessageIn &msg)
case 0x0032: player_node->FLEE = value; break;
case 0x0035: player_node->mAttackSpeed = value; break;
case 0x0037: player_node->mJobLevel = value; break;
+ case 500: player_node->setGMLevel(value); break;
}
if (player_node->getHp() == 0 && !deathNotice)