summaryrefslogtreecommitdiff
path: root/src/net/ea/beinghandler.cpp
diff options
context:
space:
mode:
authorJared Adams <jaxad0127@gmail.com>2009-03-28 11:22:46 -0600
committerJared Adams <jaxad0127@gmail.com>2009-03-28 11:22:46 -0600
commitdf095c66fdf7af74849454dbf8c4c2284616ecd7 (patch)
treed078ea9ecffd75ab1b526993c5e18846bf501867 /src/net/ea/beinghandler.cpp
parent42a095de15649f0f00ef6c681268d6623205900c (diff)
downloadmana-client-df095c66fdf7af74849454dbf8c4c2284616ecd7.tar.gz
mana-client-df095c66fdf7af74849454dbf8c4c2284616ecd7.tar.bz2
mana-client-df095c66fdf7af74849454dbf8c4c2284616ecd7.tar.xz
mana-client-df095c66fdf7af74849454dbf8c4c2284616ecd7.zip
Remove #ifdefs related to Being creation
Also move the Monster type offset handling into the eAthena netcode.
Diffstat (limited to 'src/net/ea/beinghandler.cpp')
-rw-r--r--src/net/ea/beinghandler.cpp43
1 files changed, 38 insertions, 5 deletions
diff --git a/src/net/ea/beinghandler.cpp b/src/net/ea/beinghandler.cpp
index 237c9f1f..0ad15d7d 100644
--- a/src/net/ea/beinghandler.cpp
+++ b/src/net/ea/beinghandler.cpp
@@ -24,6 +24,7 @@
#include "net/ea/protocol.h"
#include "net/messagein.h"
+#include "net/messageout.h"
#include "being.h"
#include "beingmanager.h"
@@ -37,7 +38,6 @@
#include "gui/npc_text.h"
#include <iostream>
-#include <SDL_types.h>
extern NpcTextDialog *npcTextDialog;
@@ -69,10 +69,34 @@ BeingHandler::BeingHandler(bool enableSync):
handledMessages = _messages;
}
+Being *createBeing(int id, short job)
+{
+ Being::Type type = Being::UNKNOWN;
+ if (job <= 25 || (job >= 4001 && job <= 4049))
+ type = Being::PLAYER;
+ else if (job >= 46 && job <= 1000)
+ type = Being::NPC;
+ else if (job > 1000 && job <= 2000)
+ {
+ type = Being::MONSTER;
+ job -= 1002;
+ }
+
+ Being *being = beingManager->createBeing(id, type, job);
+
+ if (type == Being::PLAYER || type == Being::NPC)
+ {
+ MessageOut outMsg(0x0094);
+ outMsg.writeInt32(id);//readLong(2));
+ }
+
+ return being;
+}
+
void BeingHandler::handleMessage(MessageIn &msg)
{
int id;
- Uint16 job, speed;
+ short job, speed;
Uint16 headTop, headMid, headBottom;
Uint16 shoes, gloves;
Uint16 weapon, shield;
@@ -108,9 +132,14 @@ void BeingHandler::handleMessage(MessageIn &msg)
break;
}
- dstBeing = beingManager->createBeing(id, job);
+ dstBeing = createBeing(id, job);
}
- else if (msg.getId() == 0x0078)
+ else if (dstBeing->getType() == Being::MONSTER)
+ {
+ job -= 1002;
+ }
+
+ if (msg.getId() == 0x0078)
{
dstBeing->clearPath();
dstBeing->mFrame = 0;
@@ -399,7 +428,11 @@ void BeingHandler::handleMessage(MessageIn &msg)
if (!dstBeing)
{
- dstBeing = beingManager->createBeing(id, job);
+ dstBeing = createBeing(id, job);
+ }
+ else if (dstBeing->getType() == Being::MONSTER)
+ {
+ job -= 1002;
}
dstBeing->setWalkSpeed(speed);