From 442d45bef2818166f9c314a52a7043ae038f0a0a Mon Sep 17 00:00:00 2001 From: Ubaware Date: Mon, 22 Jul 2019 12:40:14 -0700 Subject: [PATCH] Bugfix for previous movement changes. (#494) --- .../server/channel/handlers/MoveLifeHandler.java | 5 +++-- src/server/maps/AbstractAnimatedMapleMapObject.java | 13 +++++++------ 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/src/net/server/channel/handlers/MoveLifeHandler.java b/src/net/server/channel/handlers/MoveLifeHandler.java index 70abe5a64a..245d18279e 100644 --- a/src/net/server/channel/handlers/MoveLifeHandler.java +++ b/src/net/server/channel/handlers/MoveLifeHandler.java @@ -141,8 +141,9 @@ public final class MoveLifeHandler extends AbstractMovementPacketHandler { short start_x = slea.readShort(); // hmm.. startpos? short start_y = slea.readShort(); // hmm... Point startPos = new Point(start_x, start_y - 2); + Point serverStartPos = new Point(monster.getPosition()); long movementDataStart = slea.getPosition(); - updatePosition(slea, monster, 0); + updatePosition(slea, monster, -2); long movementDataLength = slea.getPosition() - movementDataStart; //how many bytes were read by updatePosition Boolean aggro = monster.aggroMoveLifeUpdate(player); @@ -159,7 +160,7 @@ public final class MoveLifeHandler extends AbstractMovementPacketHandler { System.out.println((isSkill ? "SKILL " : (isAttack ? "ATTCK " : " ")) + "castPos: " + castPos + " rawAct: " + rawActivity + " opt: " + pOption + " skillID: " + useSkillId + " skillLV: " + useSkillLevel + " " + "allowSkill: " + nextMovementCouldBeSkill + " mobMp: " + mobMp); } slea.seek(movementDataStart); - map.broadcastMessage(player, MaplePacketCreator.moveMonster(objectid, nextMovementCouldBeSkill, rawActivity, useSkillId, useSkillLevel, pOption, startPos, slea, movementDataLength), monster.getPosition()); + map.broadcastMessage(player, MaplePacketCreator.moveMonster(objectid, nextMovementCouldBeSkill, rawActivity, useSkillId, useSkillLevel, pOption, startPos, slea, movementDataLength), serverStartPos); //updatePosition(res, monster, -2); //does this need to be done after the packet is broadcast? map.moveMonster(monster, monster.getPosition()); } diff --git a/src/server/maps/AbstractAnimatedMapleMapObject.java b/src/server/maps/AbstractAnimatedMapleMapObject.java index 7e69218803..e7b1f9d4c1 100644 --- a/src/server/maps/AbstractAnimatedMapleMapObject.java +++ b/src/server/maps/AbstractAnimatedMapleMapObject.java @@ -33,6 +33,7 @@ public abstract class AbstractAnimatedMapleMapObject extends AbstractMapleMapObj static { MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter((int) getIdleMovementDataLength()); mplew.write(1); //movement command count + mplew.write(0); mplew.writeShort(-1); //x mplew.writeShort(-1); //y mplew.writeShort(0); //xwobble @@ -67,15 +68,15 @@ public abstract class AbstractAnimatedMapleMapObject extends AbstractMapleMapObj //seems wasteful to create a whole packet writer when only a few values are changed int x = getPosition().x; int y = getPosition().y; - movementData[1] = (byte) (x & 0xFF); //x - movementData[2] = (byte) (x >> 8 & 0xFF); - movementData[3] = (byte) (y & 0xFF); //y - movementData[4] = (byte) (y >> 8 & 0xFF); - movementData[11] = (byte) (getStance() & 0xFF); + movementData[2] = (byte) (x & 0xFF); //x + movementData[3] = (byte) (x >> 8 & 0xFF); + movementData[4] = (byte) (y & 0xFF); //y + movementData[5] = (byte) (y >> 8 & 0xFF); + movementData[12] = (byte) (getStance() & 0xFF); return new GenericSeekableLittleEndianAccessor(new ByteArrayByteStream(movementData)); } public static long getIdleMovementDataLength() { - return 14; + return 15; } }