diff options
Diffstat (limited to 'src/game/Unit.cpp')
-rw-r--r-- | src/game/Unit.cpp | 30 |
1 files changed, 19 insertions, 11 deletions
diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index ac11c3b3317..d8b1ce56a3a 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -86,8 +86,8 @@ Unit::Unit() { m_objectType |= TYPEMASK_UNIT; m_objectTypeId = TYPEID_UNIT; - // 2.3.2 - 0x70 - m_updateFlag = (UPDATEFLAG_LOWGUID | UPDATEFLAG_HIGHGUID | UPDATEFLAG_LIVING | UPDATEFLAG_HAS_POSITION); + + m_updateFlag = (UPDATEFLAG_HIGHGUID | UPDATEFLAG_LIVING | UPDATEFLAG_HAS_POSITION); m_attackTimer[BASE_ATTACK] = 0; m_attackTimer[OFF_ATTACK] = 0; @@ -163,7 +163,7 @@ Unit::Unit() m_speed_rate[i] = 1.0f; m_charmInfo = NULL; - m_unit_movement_flags = 0; + //m_unit_movement_flags = 0; m_reducedThreatPercent = 0; m_misdirectionTargetGUID = 0; @@ -286,6 +286,7 @@ void Unit::SendMonsterStop() { WorldPacket data( SMSG_MONSTER_MOVE, (17 + GetPackGUID().size()) ); data.append(GetPackGUID()); + data << uint8(0); // new in 3.1 data << GetPositionX() << GetPositionY() << GetPositionZ(); data << getMSTime(); data << uint8(1); @@ -296,15 +297,15 @@ void Unit::SendMonsterStop() void Unit::SendMonsterMove(float NewPosX, float NewPosY, float NewPosZ, uint32 Time, Player* player) { - WorldPacket data( SMSG_MONSTER_MOVE, 12+4+1+4+4+4+12+GetPackGUID().size()); + WorldPacket data( SMSG_MONSTER_MOVE, 1+12+4+1+4+4+4+12+GetPackGUID().size()); data.append(GetPackGUID()); + data << uint8(0); // new in 3.1 data << GetPositionX() << GetPositionY() << GetPositionZ(); data << getMSTime(); data << uint8(0); data << uint32((GetUnitMovementFlags() & MOVEMENTFLAG_LEVITATING) ? MOVEFLAG_FLY : MOVEFLAG_WALK); - data << Time; // Time in between points data << uint32(1); // 1 single waypoint data << NewPosX << NewPosY << NewPosZ; // the single waypoint Point B @@ -322,6 +323,7 @@ void Unit::SendMonsterMove(float NewPosX, float NewPosY, float NewPosZ, uint32 M WorldPacket data( SMSG_MONSTER_MOVE, 12+4+1+4+4+4+12+GetPackGUID().size()); data.append(GetPackGUID()); + data << uint8(0); // new in 3.1 data << GetPositionX() << GetPositionY() << GetPositionZ(); data << getMSTime(); @@ -348,9 +350,11 @@ void Unit::SendMonsterMove(float NewPosX, float NewPosY, float NewPosZ, uint32 M /*void Unit::SendMonsterMove(float NewPosX, float NewPosY, float NewPosZ, uint8 type, uint32 MovementFlags, uint32 Time, Player* player) { + float moveTime = Time; + WorldPacket data( SMSG_MONSTER_MOVE, (41 + GetPackGUID().size()) ); data.append(GetPackGUID()); - + data << uint8(0); // new in 3.1 data << GetPositionX() << GetPositionY() << GetPositionZ(); data << uint32(getMSTime()); @@ -377,7 +381,10 @@ void Unit::SendMonsterMove(float NewPosX, float NewPosY, float NewPosZ, uint32 M data << uint32(MovementFlags); - data << uint32(Time); // Time in between points + if(MovementFlags & MONSTER_MOVE_WALK) + moveTime *= 1.05f; + + data << uint32(moveTime); // Time in between points data << uint32(1); // 1 single waypoint data << NewPosX << NewPosY << NewPosZ; // the single waypoint Point B @@ -393,8 +400,9 @@ void Unit::SendMonsterMoveByPath(Path const& path, uint32 start, uint32 end) uint32 pathSize = end - start; - WorldPacket data( SMSG_MONSTER_MOVE, (GetPackGUID().size()+4+4+4+4+1+4+4+4+pathSize*4*3) ); + WorldPacket data( SMSG_MONSTER_MOVE, (GetPackGUID().size()+1+4+4+4+4+1+4+4+4+pathSize*4*3) ); data.append(GetPackGUID()); + data << uint8(0); data << GetPositionX(); data << GetPositionY(); data << GetPositionZ(); @@ -405,7 +413,7 @@ void Unit::SendMonsterMoveByPath(Path const& path, uint32 start, uint32 end) data << uint32( pathSize ); data.append( (char*)path.GetNodes(start), pathSize * 4 * 3 ); SendMessageToSet(&data, true); - +//MONSTER_MOVE_SPLINE_FLY addUnitState(UNIT_STAT_MOVE); } @@ -13530,7 +13538,7 @@ void Unit::SetRooted(bool apply) uint32 apply_stat = UNIT_STAT_ROOT; if(apply) { - SetFlag(UNIT_FIELD_FLAGS,(apply_stat<<16)); // probably wrong + //SetFlag(UNIT_FIELD_FLAGS,(apply_stat<<16)); // probably wrong if(GetTypeId() == TYPEID_PLAYER) { @@ -13546,7 +13554,7 @@ void Unit::SetRooted(bool apply) } else { - RemoveFlag(UNIT_FIELD_FLAGS,(apply_stat<<16)); // probably wrong + //RemoveFlag(UNIT_FIELD_FLAGS,(apply_stat<<16)); // probably wrong if(!hasUnitState(UNIT_STAT_STUNNED)) // prevent allow move if have also stun effect { |