aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rwxr-xr-xsrc/server/game/Entities/Unit/Unit.cpp142
1 files changed, 135 insertions, 7 deletions
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp
index b11772e7b20..5c481033273 100755
--- a/src/server/game/Entities/Unit/Unit.cpp
+++ b/src/server/game/Entities/Unit/Unit.cpp
@@ -12661,25 +12661,153 @@ void Unit::SetSpeed(UnitMoveType mtype, float rate, bool forced)
data << float(GetSpeed(mtype));
break;
case MOVE_RUN_BACK:
- data.Initialize(SMSG_MOVE_SPLINE_SET_RUN_BACK_SPEED, 8+4+2+4+4+4+4+4+4+4);
+ data.Initialize(SMSG_MOVE_SPLINE_SET_RUN_BACK_SPEED, 1 + 8 + 4);
+ data.WriteByteMask(bytes[4]);
+ data.WriteByteMask(bytes[0]);
+ data.WriteByteMask(bytes[6]);
+ data.WriteByteMask(bytes[3]);
+ data.WriteByteMask(bytes[5]);
+ data.WriteByteMask(bytes[1]);
+ data.WriteByteMask(bytes[7]);
+ data.WriteByteMask(bytes[2]);
+
+ data.WriteByteSeq(bytes[1]);
+ data.WriteByteSeq(bytes[7]);
+ data.WriteByteSeq(bytes[5]);
+ data.WriteByteSeq(bytes[3]);
+ data.WriteByteSeq(bytes[6]);
+ data.WriteByteSeq(bytes[4]);
+ data.WriteByteSeq(bytes[0]);
+ data.WriteByteSeq(bytes[2]);
+
+ data << float(GetSpeed(mtype));
break;
case MOVE_SWIM:
- data.Initialize(SMSG_MOVE_SPLINE_SET_SWIM_SPEED, 8+4+2+4+4+4+4+4+4+4);
+ data.Initialize(SMSG_MOVE_SPLINE_SET_SWIM_SPEED, 1 + 8 + 4);
+ data.WriteByteMask(bytes[3]);
+ data.WriteByteMask(bytes[5]);
+ data.WriteByteMask(bytes[7]);
+ data.WriteByteMask(bytes[4]);
+ data.WriteByteMask(bytes[2]);
+ data.WriteByteMask(bytes[0]);
+ data.WriteByteMask(bytes[1]);
+ data.WriteByteMask(bytes[6]);
+
+ data.WriteByteSeq(bytes[0]);
+ data.WriteByteSeq(bytes[3]);
+ data.WriteByteSeq(bytes[6]);
+ data.WriteByteSeq(bytes[4]);
+ data.WriteByteSeq(bytes[2]);
+ data.WriteByteSeq(bytes[7]);
+ data << float(GetSpeed(mtype));
+ data.WriteByteSeq(bytes[1]);
+ data.WriteByteSeq(bytes[5]);
break;
case MOVE_SWIM_BACK:
- data.Initialize(SMSG_MOVE_SPLINE_SET_SWIM_BACK_SPEED, 8+4+2+4+4+4+4+4+4+4);
+ data.Initialize(SMSG_MOVE_SPLINE_SET_SWIM_BACK_SPEED, 1 + 8 + 4);
+ data.WriteByteMask(bytes[3]);
+ data.WriteByteMask(bytes[5]);
+ data.WriteByteMask(bytes[4]);
+ data.WriteByteMask(bytes[0]);
+ data.WriteByteMask(bytes[2]);
+ data.WriteByteMask(bytes[1]);
+ data.WriteByteMask(bytes[6]);
+ data.WriteByteMask(bytes[7]);
+
+ data.WriteByteSeq(bytes[1]);
+ data.WriteByteSeq(bytes[0]);
+ data.WriteByteSeq(bytes[2]);
+ data << float(GetSpeed(mtype));
+ data.WriteByteSeq(bytes[7]);
+ data.WriteByteSeq(bytes[3]);
+ data.WriteByteSeq(bytes[6]);
+ data.WriteByteSeq(bytes[4]);
+ data.WriteByteSeq(bytes[5]);
break;
case MOVE_TURN_RATE:
- data.Initialize(SMSG_MOVE_SPLINE_SET_TURN_RATE, 8+4+2+4+4+4+4+4+4+4);
+ data.Initialize(SMSG_MOVE_SPLINE_SET_TURN_RATE, 1 + 8 + 4);
+ data.WriteByteMask(bytes[0]);
+ data.WriteByteMask(bytes[4]);
+ data.WriteByteMask(bytes[5]);
+ data.WriteByteMask(bytes[1]);
+ data.WriteByteMask(bytes[6]);
+ data.WriteByteMask(bytes[3]);
+ data.WriteByteMask(bytes[7]);
+ data.WriteByteMask(bytes[2]);
+
+ data.WriteByteSeq(bytes[2]);
+ data.WriteByteSeq(bytes[4]);
+ data.WriteByteSeq(bytes[7]);
+ data.WriteByteSeq(bytes[0]);
+ data << float(GetSpeed(mtype));
+ data.WriteByteSeq(bytes[5]);
+ data.WriteByteSeq(bytes[1]);
+ data.WriteByteSeq(bytes[6]);
+ data.WriteByteSeq(bytes[3]);
break;
case MOVE_FLIGHT:
- data.Initialize(SMSG_MOVE_SPLINE_SET_FLIGHT_SPEED, 8+4+2+4+4+4+4+4+4+4);
+ data.Initialize(SMSG_MOVE_SPLINE_SET_FLIGHT_SPEED, 1 + 8 + 4);
+ data.WriteByteMask(bytes[2]);
+ data.WriteByteMask(bytes[3]);
+ data.WriteByteMask(bytes[5]);
+ data.WriteByteMask(bytes[0]);
+ data.WriteByteMask(bytes[7]);
+ data.WriteByteMask(bytes[4]);
+ data.WriteByteMask(bytes[6]);
+ data.WriteByteMask(bytes[1]);
+
+ data << float(GetSpeed(mtype));
+
+ data.WriteByteSeq(bytes[1]);
+ data.WriteByteSeq(bytes[0]);
+ data.WriteByteSeq(bytes[6]);
+ data.WriteByteSeq(bytes[7]);
+ data.WriteByteSeq(bytes[3]);
+ data.WriteByteSeq(bytes[2]);
+ data.WriteByteSeq(bytes[5]);
+ data.WriteByteSeq(bytes[4]);
break;
case MOVE_FLIGHT_BACK:
- data.Initialize(SMSG_MOVE_SPLINE_SET_FLIGHT_BACK_SPEED, 8+4+2+4+4+4+4+4+4+4);
+ data.Initialize(SMSG_MOVE_SPLINE_SET_FLIGHT_BACK_SPEED, 1 + 8 + 4);
+ data.WriteByteMask(bytes[1]);
+ data.WriteByteMask(bytes[6]);
+ data.WriteByteMask(bytes[0]);
+ data.WriteByteMask(bytes[2]);
+ data.WriteByteMask(bytes[7]);
+ data.WriteByteMask(bytes[5]);
+ data.WriteByteMask(bytes[4]);
+ data.WriteByteMask(bytes[3]);
+
+ data.WriteByteSeq(bytes[5]);
+ data.WriteByteSeq(bytes[6]);
+ data.WriteByteSeq(bytes[0]);
+ data.WriteByteSeq(bytes[4]);
+ data.WriteByteSeq(bytes[2]);
+ data.WriteByteSeq(bytes[1]);
+ data.WriteByteSeq(bytes[7]);
+ data << float(GetSpeed(mtype));
+ data.WriteByteSeq(bytes[3]);
break;
case MOVE_PITCH_RATE:
- data.Initialize(SMSG_MOVE_SPLINE_SET_PITCH_RATE, 8+4+2+4+4+4+4+4+4+4);
+ data.Initialize(SMSG_MOVE_SPLINE_SET_PITCH_RATE, 1 + 8 + 4);
+ data.WriteByteMask(bytes[7]);
+ data.WriteByteMask(bytes[2]);
+ data.WriteByteMask(bytes[3]);
+ data.WriteByteMask(bytes[5]);
+ data.WriteByteMask(bytes[4]);
+ data.WriteByteMask(bytes[0]);
+ data.WriteByteMask(bytes[6]);
+ data.WriteByteMask(bytes[1]);
+
+ data.WriteByteSeq(bytes[0]);
+ data.WriteByteSeq(bytes[1]);
+ data.WriteByteSeq(bytes[7]);
+ data.WriteByteSeq(bytes[2]);
+ data.WriteByteSeq(bytes[3]);
+ data.WriteByteSeq(bytes[6]);
+ data.WriteByteSeq(bytes[5]);
+ data.WriteByteSeq(bytes[4]);
+ data << float(GetSpeed(mtype));
break;
default:
sLog->outError("Unit::SetSpeed: Unsupported move type (%d), data not sent to client.", mtype);