aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2013-06-21 02:03:31 +0200
committerShauren <shauren.trinity@gmail.com>2013-06-21 02:03:31 +0200
commit53a5701d18e1e6c0c1791e09aa576174137e2004 (patch)
treeac0881e8ab62d92d1c544dae49a7b74d4d891492
parent365ac7910099d31dcc4f4765eba754974ca85c8d (diff)
Core/PacketIO: Added structures and enabled spline movement status opcodes: swim, fly, feather fall, water walk
Closes #10068
-rw-r--r--src/server/game/Entities/Unit/Unit.cpp2
-rw-r--r--src/server/game/Movement/MovementStructures.cpp184
-rw-r--r--src/server/game/Server/Protocol/Opcodes.cpp15
3 files changed, 193 insertions, 8 deletions
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp
index faaf331fe1c..d627451a30b 100644
--- a/src/server/game/Entities/Unit/Unit.cpp
+++ b/src/server/game/Entities/Unit/Unit.cpp
@@ -16690,7 +16690,7 @@ bool Unit::SetWalk(bool enable)
if (enable)
Movement::PacketSender(this, SMSG_SPLINE_MOVE_SET_WALK_MODE, SMSG_SPLINE_MOVE_SET_WALK_MODE).Send();
else
- Movement::PacketSender(this, SMSG_SPLINE_MOVE_SET_RUN_MODE, SMSG_SPLINE_MOVE_SET_WALK_MODE).Send();
+ Movement::PacketSender(this, SMSG_SPLINE_MOVE_SET_RUN_MODE, SMSG_SPLINE_MOVE_SET_RUN_MODE).Send();
return true;
}
diff --git a/src/server/game/Movement/MovementStructures.cpp b/src/server/game/Movement/MovementStructures.cpp
index 632e8017898..61f1ded14e3 100644
--- a/src/server/game/Movement/MovementStructures.cpp
+++ b/src/server/game/Movement/MovementStructures.cpp
@@ -4525,6 +4525,174 @@ MovementStatusElements const SplineMoveUnsetHover[] =
MSEEnd,
};
+MovementStatusElements const SplineMoveStartSwim[] =
+{
+ MSEHasGuidByte1,
+ MSEHasGuidByte6,
+ MSEHasGuidByte0,
+ MSEHasGuidByte7,
+ MSEHasGuidByte3,
+ MSEHasGuidByte5,
+ MSEHasGuidByte2,
+ MSEHasGuidByte4,
+ MSEGuidByte3,
+ MSEGuidByte7,
+ MSEGuidByte2,
+ MSEGuidByte5,
+ MSEGuidByte6,
+ MSEGuidByte4,
+ MSEGuidByte1,
+ MSEGuidByte0,
+ MSEEnd,
+};
+
+MovementStatusElements const SplineMoveStopSwim[] =
+{
+ MSEHasGuidByte4,
+ MSEHasGuidByte1,
+ MSEHasGuidByte5,
+ MSEHasGuidByte3,
+ MSEHasGuidByte0,
+ MSEHasGuidByte7,
+ MSEHasGuidByte2,
+ MSEHasGuidByte6,
+ MSEGuidByte6,
+ MSEGuidByte0,
+ MSEGuidByte7,
+ MSEGuidByte2,
+ MSEGuidByte3,
+ MSEGuidByte1,
+ MSEGuidByte5,
+ MSEGuidByte4,
+ MSEEnd,
+};
+
+MovementStatusElements const SplineMoveSetFlying[] =
+{
+ MSEHasGuidByte0,
+ MSEHasGuidByte4,
+ MSEHasGuidByte1,
+ MSEHasGuidByte6,
+ MSEHasGuidByte7,
+ MSEHasGuidByte2,
+ MSEHasGuidByte3,
+ MSEHasGuidByte5,
+ MSEGuidByte7,
+ MSEGuidByte0,
+ MSEGuidByte5,
+ MSEGuidByte6,
+ MSEGuidByte4,
+ MSEGuidByte1,
+ MSEGuidByte3,
+ MSEGuidByte2,
+ MSEEnd,
+};
+
+MovementStatusElements const SplineMoveUnsetFlying[] =
+{
+ MSEHasGuidByte5,
+ MSEHasGuidByte0,
+ MSEHasGuidByte4,
+ MSEHasGuidByte7,
+ MSEHasGuidByte2,
+ MSEHasGuidByte3,
+ MSEHasGuidByte1,
+ MSEHasGuidByte6,
+ MSEGuidByte7,
+ MSEGuidByte2,
+ MSEGuidByte3,
+ MSEGuidByte4,
+ MSEGuidByte5,
+ MSEGuidByte1,
+ MSEGuidByte6,
+ MSEGuidByte0,
+ MSEEnd,
+};
+
+MovementStatusElements const SplineMoveSetWaterWalk[] =
+{
+ MSEHasGuidByte6,
+ MSEHasGuidByte1,
+ MSEHasGuidByte4,
+ MSEHasGuidByte2,
+ MSEHasGuidByte3,
+ MSEHasGuidByte7,
+ MSEHasGuidByte5,
+ MSEHasGuidByte0,
+ MSEGuidByte0,
+ MSEGuidByte6,
+ MSEGuidByte3,
+ MSEGuidByte7,
+ MSEGuidByte4,
+ MSEGuidByte2,
+ MSEGuidByte5,
+ MSEGuidByte1,
+ MSEEnd,
+};
+
+MovementStatusElements const SplineMoveSetLandWalk[] =
+{
+ MSEHasGuidByte5,
+ MSEHasGuidByte0,
+ MSEHasGuidByte4,
+ MSEHasGuidByte6,
+ MSEHasGuidByte7,
+ MSEHasGuidByte2,
+ MSEHasGuidByte3,
+ MSEHasGuidByte1,
+ MSEGuidByte5,
+ MSEGuidByte7,
+ MSEGuidByte3,
+ MSEGuidByte4,
+ MSEGuidByte1,
+ MSEGuidByte2,
+ MSEGuidByte0,
+ MSEGuidByte6,
+ MSEEnd,
+};
+
+MovementStatusElements const SplineMoveSetFeatherFall[] =
+{
+ MSEHasGuidByte3,
+ MSEHasGuidByte2,
+ MSEHasGuidByte7,
+ MSEHasGuidByte5,
+ MSEHasGuidByte4,
+ MSEHasGuidByte6,
+ MSEHasGuidByte1,
+ MSEHasGuidByte0,
+ MSEGuidByte1,
+ MSEGuidByte4,
+ MSEGuidByte7,
+ MSEGuidByte6,
+ MSEGuidByte2,
+ MSEGuidByte0,
+ MSEGuidByte5,
+ MSEGuidByte3,
+ MSEEnd,
+};
+
+MovementStatusElements const SplineMoveSetNormalFall[] =
+{
+ MSEHasGuidByte3,
+ MSEHasGuidByte5,
+ MSEHasGuidByte1,
+ MSEHasGuidByte0,
+ MSEHasGuidByte7,
+ MSEHasGuidByte6,
+ MSEHasGuidByte2,
+ MSEHasGuidByte4,
+ MSEGuidByte7,
+ MSEGuidByte6,
+ MSEGuidByte2,
+ MSEGuidByte0,
+ MSEGuidByte5,
+ MSEGuidByte4,
+ MSEGuidByte3,
+ MSEGuidByte1,
+ MSEEnd,
+};
+
MovementStatusElements const MoveSetCanFly[] =
{
MSEHasGuidByte1,
@@ -5149,6 +5317,22 @@ MovementStatusElements const* GetMovementStatusElementsSequence(Opcodes opcode)
return SplineMoveSetHover;
case SMSG_SPLINE_MOVE_UNSET_HOVER:
return SplineMoveUnsetHover;
+ case SMSG_SPLINE_MOVE_START_SWIM:
+ return SplineMoveStartSwim;
+ case SMSG_SPLINE_MOVE_STOP_SWIM:
+ return SplineMoveStopSwim;
+ case SMSG_SPLINE_MOVE_SET_FLYING:
+ return SplineMoveSetFlying;
+ case SMSG_SPLINE_MOVE_UNSET_FLYING:
+ return SplineMoveUnsetFlying;
+ case SMSG_SPLINE_MOVE_SET_WATER_WALK:
+ return SplineMoveSetWaterWalk;
+ case SMSG_SPLINE_MOVE_SET_LAND_WALK:
+ return SplineMoveSetLandWalk;
+ case SMSG_SPLINE_MOVE_SET_FEATHER_FALL:
+ return SplineMoveSetFeatherFall;
+ case SMSG_SPLINE_MOVE_SET_NORMAL_FALL:
+ return SplineMoveSetNormalFall;
case SMSG_MOVE_SET_CAN_FLY:
return MoveSetCanFly;
case SMSG_MOVE_UNSET_CAN_FLY:
diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp
index e6e5386626d..76f57f6fe3e 100644
--- a/src/server/game/Server/Protocol/Opcodes.cpp
+++ b/src/server/game/Server/Protocol/Opcodes.cpp
@@ -1195,13 +1195,13 @@ void OpcodeTable::Initialize()
DEFINE_OPCODE_HANDLER(SMSG_SPLINE_MOVE_GRAVITY_ENABLE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
DEFINE_OPCODE_HANDLER(SMSG_SPLINE_MOVE_ROOT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
DEFINE_OPCODE_HANDLER(SMSG_SPLINE_MOVE_SET_ANIM, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
- DEFINE_OPCODE_HANDLER(SMSG_SPLINE_MOVE_SET_FEATHER_FALL, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
+ DEFINE_OPCODE_HANDLER(SMSG_SPLINE_MOVE_SET_FEATHER_FALL, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
DEFINE_OPCODE_HANDLER(SMSG_SPLINE_MOVE_SET_FLIGHT_BACK_SPEED, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
DEFINE_OPCODE_HANDLER(SMSG_SPLINE_MOVE_SET_FLIGHT_SPEED, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
- DEFINE_OPCODE_HANDLER(SMSG_SPLINE_MOVE_SET_FLYING, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
+ DEFINE_OPCODE_HANDLER(SMSG_SPLINE_MOVE_SET_FLYING, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
DEFINE_OPCODE_HANDLER(SMSG_SPLINE_MOVE_SET_HOVER, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
- DEFINE_OPCODE_HANDLER(SMSG_SPLINE_MOVE_SET_LAND_WALK, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
- DEFINE_OPCODE_HANDLER(SMSG_SPLINE_MOVE_SET_NORMAL_FALL, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
+ DEFINE_OPCODE_HANDLER(SMSG_SPLINE_MOVE_SET_LAND_WALK, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
+ DEFINE_OPCODE_HANDLER(SMSG_SPLINE_MOVE_SET_NORMAL_FALL, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
DEFINE_OPCODE_HANDLER(SMSG_SPLINE_MOVE_SET_PITCH_RATE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
DEFINE_OPCODE_HANDLER(SMSG_SPLINE_MOVE_SET_RUN_BACK_SPEED, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
DEFINE_OPCODE_HANDLER(SMSG_SPLINE_MOVE_SET_RUN_MODE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
@@ -1211,10 +1211,11 @@ void OpcodeTable::Initialize()
DEFINE_OPCODE_HANDLER(SMSG_SPLINE_MOVE_SET_TURN_RATE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
DEFINE_OPCODE_HANDLER(SMSG_SPLINE_MOVE_SET_WALK_MODE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
DEFINE_OPCODE_HANDLER(SMSG_SPLINE_MOVE_SET_WALK_SPEED, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
- DEFINE_OPCODE_HANDLER(SMSG_SPLINE_MOVE_START_SWIM, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
- DEFINE_OPCODE_HANDLER(SMSG_SPLINE_MOVE_STOP_SWIM, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
+ DEFINE_OPCODE_HANDLER(SMSG_SPLINE_MOVE_SET_WATER_WALK, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
+ DEFINE_OPCODE_HANDLER(SMSG_SPLINE_MOVE_START_SWIM, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
+ DEFINE_OPCODE_HANDLER(SMSG_SPLINE_MOVE_STOP_SWIM, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
DEFINE_OPCODE_HANDLER(SMSG_SPLINE_MOVE_UNROOT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
- DEFINE_OPCODE_HANDLER(SMSG_SPLINE_MOVE_UNSET_FLYING, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
+ DEFINE_OPCODE_HANDLER(SMSG_SPLINE_MOVE_UNSET_FLYING, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
DEFINE_OPCODE_HANDLER(SMSG_SPLINE_MOVE_UNSET_HOVER, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
DEFINE_OPCODE_HANDLER(SMSG_STABLE_RESULT, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
DEFINE_OPCODE_HANDLER(SMSG_STANDSTATE_UPDATE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );