diff options
author | Rat <gmstreetrat@gmail.com> | 2012-01-22 21:07:34 -0800 |
---|---|---|
committer | Rat <gmstreetrat@gmail.com> | 2012-01-22 21:07:34 -0800 |
commit | 1561f24806b9c7b2e1f25b65c3f177e857bc3ce5 (patch) | |
tree | 5ea8101003c3d7fd9ebca4a229be5a140d1e9bc4 /src | |
parent | 785ee217f797fa00746edd5442607af58ddb40b2 (diff) | |
parent | 8a43bd7293572a1cc93d84eee4badd60da762e6f (diff) |
Merge pull request #4925 from DrakeFish/4x_2
4.x - Added forced speed changes.
Diffstat (limited to 'src')
-rwxr-xr-x | src/server/game/Entities/Unit/Unit.cpp | 171 |
1 files changed, 163 insertions, 8 deletions
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index c25e4bf455b..b11772e7b20 100755 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -12715,7 +12715,26 @@ void Unit::SetSpeed(UnitMoveType mtype, float rate, bool forced) switch (mtype) { case MOVE_WALK: - data.Initialize(SMSG_MOVE_SET_WALK_SPEED, 16); + data.Initialize(SMSG_MOVE_SET_WALK_SPEED, 1 + 8 + 4 + 4 ); + data.WriteByteMask(bytes[6]); + data.WriteByteMask(bytes[5]); + data.WriteByteMask(bytes[7]); + data.WriteByteMask(bytes[0]); + data.WriteByteMask(bytes[2]); + data.WriteByteMask(bytes[4]); + data.WriteByteMask(bytes[1]); + data.WriteByteMask(bytes[3]); + + data.WriteByteSeq(bytes[3]); + data.WriteByteSeq(bytes[1]); + data << float(GetSpeed(mtype)); + data.WriteByteSeq(bytes[6]); + data.WriteByteSeq(bytes[4]); + data.WriteByteSeq(bytes[7]); + data.WriteByteSeq(bytes[2]); + data.WriteByteSeq(bytes[5]); + data << uint32(0); + data.WriteByteSeq(bytes[0]); break; case MOVE_RUN: data.Initialize(SMSG_MOVE_SET_RUN_SPEED, 1 + 8 + 4 + 4 ); @@ -12742,25 +12761,161 @@ void Unit::SetSpeed(UnitMoveType mtype, float rate, bool forced) data << uint32(0); break; case MOVE_RUN_BACK: - data.Initialize(SMSG_MOVE_SET_RUN_BACK_SPEED, 16); + data.Initialize(SMSG_MOVE_SET_RUN_BACK_SPEED, 1 + 8 + 4 + 4 ); + data.WriteByteMask(bytes[3]); + data.WriteByteMask(bytes[0]); + data.WriteByteMask(bytes[6]); + data.WriteByteMask(bytes[2]); + data.WriteByteMask(bytes[7]); + data.WriteByteMask(bytes[1]); + data.WriteByteMask(bytes[4]); + data.WriteByteMask(bytes[5]); + + data << float(GetSpeed(mtype)); + + data.WriteByteSeq(bytes[4]); + data.WriteByteSeq(bytes[1]); + data << uint32(0); + data.WriteByteSeq(bytes[5]); + data.WriteByteSeq(bytes[3]); + data.WriteByteSeq(bytes[7]); + data.WriteByteSeq(bytes[6]); + data.WriteByteSeq(bytes[2]); + data.WriteByteSeq(bytes[0]); break; case MOVE_SWIM: - data.Initialize(SMSG_MOVE_SET_SWIM_SPEED, 16); + data.Initialize(SMSG_MOVE_SET_SWIM_SPEED, 1 + 8 + 4 + 4 ); + data.WriteByteMask(bytes[7]); + data.WriteByteMask(bytes[2]); + data.WriteByteMask(bytes[3]); + data.WriteByteMask(bytes[4]); + data.WriteByteMask(bytes[5]); + data.WriteByteMask(bytes[6]); + data.WriteByteMask(bytes[1]); + data.WriteByteMask(bytes[0]); + + data.WriteByteSeq(bytes[6]); + data.WriteByteSeq(bytes[4]); + data.WriteByteSeq(bytes[7]); + data.WriteByteSeq(bytes[0]); + data << float(GetSpeed(mtype)); + data.WriteByteSeq(bytes[3]); + data.WriteByteSeq(bytes[1]); + data.WriteByteSeq(bytes[5]); + data.WriteByteSeq(bytes[2]); + data << uint32(0); break; case MOVE_SWIM_BACK: - data.Initialize(SMSG_MOVE_SET_SWIM_BACK_SPEED, 16); + data.Initialize(SMSG_MOVE_SET_SWIM_BACK_SPEED, 1 + 8 + 4 + 4 ); + data.WriteByteMask(bytes[3]); + data.WriteByteMask(bytes[1]); + data.WriteByteMask(bytes[4]); + data.WriteByteMask(bytes[2]); + data.WriteByteMask(bytes[7]); + data.WriteByteMask(bytes[6]); + data.WriteByteMask(bytes[5]); + data.WriteByteMask(bytes[0]); + + data.WriteByteSeq(bytes[6]); + data.WriteByteSeq(bytes[3]); + data.WriteByteSeq(bytes[7]); + data.WriteByteSeq(bytes[0]); + data << uint32(0); + data.WriteByteSeq(bytes[4]); + data.WriteByteSeq(bytes[1]); + data.WriteByteSeq(bytes[2]); + data << float(GetSpeed(mtype)); + data.WriteByteSeq(bytes[5]); break; case MOVE_TURN_RATE: - data.Initialize(SMSG_MOVE_SET_TURN_RATE, 16); + data.Initialize(SMSG_MOVE_SET_TURN_RATE, 1 + 8 + 4 + 4 ); + data.WriteByteMask(bytes[0]); + data.WriteByteMask(bytes[2]); + data.WriteByteMask(bytes[1]); + data.WriteByteMask(bytes[5]); + data.WriteByteMask(bytes[3]); + data.WriteByteMask(bytes[7]); + data.WriteByteMask(bytes[6]); + data.WriteByteMask(bytes[4]); + + data << float(GetSpeed(mtype)); + + data.WriteByteSeq(bytes[1]); + data.WriteByteSeq(bytes[4]); + data.WriteByteSeq(bytes[5]); + data << uint32(0); + data.WriteByteSeq(bytes[3]); + data.WriteByteSeq(bytes[6]); + data.WriteByteSeq(bytes[2]); + data.WriteByteSeq(bytes[0]); + data.WriteByteSeq(bytes[7]); break; case MOVE_FLIGHT: - data.Initialize(SMSG_MOVE_SET_FLIGHT_SPEED, 16); + data.Initialize(SMSG_MOVE_SET_FLIGHT_SPEED, 1 + 8 + 4 + 4 ); + data.WriteByteMask(bytes[0]); + data.WriteByteMask(bytes[7]); + data.WriteByteMask(bytes[4]); + data.WriteByteMask(bytes[5]); + data.WriteByteMask(bytes[6]); + data.WriteByteMask(bytes[1]); + data.WriteByteMask(bytes[2]); + data.WriteByteMask(bytes[3]); + + data << float(GetSpeed(mtype)); + + data.WriteByteSeq(bytes[5]); + data.WriteByteSeq(bytes[1]); + data.WriteByteSeq(bytes[7]); + data.WriteByteSeq(bytes[0]); + data.WriteByteSeq(bytes[2]); + data << uint32(0); + data.WriteByteSeq(bytes[6]); + data.WriteByteSeq(bytes[3]); + data.WriteByteSeq(bytes[4]); break; case MOVE_FLIGHT_BACK: - data.Initialize(SMSG_MOVE_SET_FLIGHT_BACK_SPEED, 16); + data.Initialize(SMSG_MOVE_SET_FLIGHT_BACK_SPEED, 1 + 8 + 4 + 4 ); + data.WriteByteMask(bytes[3]); + data.WriteByteMask(bytes[4]); + data.WriteByteMask(bytes[5]); + data.WriteByteMask(bytes[6]); + data.WriteByteMask(bytes[1]); + data.WriteByteMask(bytes[0]); + data.WriteByteMask(bytes[2]); + data.WriteByteMask(bytes[7]); + + data.WriteByteSeq(bytes[0]); + data << float(GetSpeed(mtype)); + data.WriteByteSeq(bytes[2]); + data.WriteByteSeq(bytes[7]); + data << uint32(0); + data.WriteByteSeq(bytes[1]); + data.WriteByteSeq(bytes[3]); + data.WriteByteSeq(bytes[6]); + data.WriteByteSeq(bytes[4]); + data.WriteByteSeq(bytes[5]); break; case MOVE_PITCH_RATE: - data.Initialize(SMSG_MOVE_SET_PITCH_RATE, 16); + data.Initialize(SMSG_MOVE_SET_PITCH_RATE, 1 + 8 + 4 + 4 ); + data.WriteByteMask(bytes[7]); + data.WriteByteMask(bytes[5]); + data.WriteByteMask(bytes[6]); + data.WriteByteMask(bytes[2]); + data.WriteByteMask(bytes[4]); + data.WriteByteMask(bytes[0]); + data.WriteByteMask(bytes[3]); + data.WriteByteMask(bytes[1]); + + data.WriteByteSeq(bytes[0]); + data << uint32(0); + data.WriteByteSeq(bytes[3]); + data << float(GetSpeed(mtype)); + data.WriteByteSeq(bytes[5]); + data.WriteByteSeq(bytes[1]); + data.WriteByteSeq(bytes[6]); + data.WriteByteSeq(bytes[7]); + data.WriteByteSeq(bytes[2]); + data.WriteByteSeq(bytes[4]); break; default: sLog->outError("Unit::SetSpeed: Unsupported move type (%d), data not sent to client.", mtype); |