aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Entities/Player/Player.cpp53
1 files changed, 37 insertions, 16 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index ae206326377..d66126d692e 100644
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -22541,13 +22541,46 @@ void Player::SendInitialPacketsAfterAddToMap()
if (HasAuraType(SPELL_AURA_MOD_STUN))
SetMovement(MOVE_ROOT);
+ WorldPacket setCompoundState(SMSG_MULTIPLE_MOVES, 100);
+ setCompoundState << uint32(0); // size placeholder
+
// manual send package (have code in HandleEffect(this, AURA_EFFECT_HANDLE_SEND_FOR_CLIENT, true); that must not be re-applied.
if (HasAuraType(SPELL_AURA_MOD_ROOT))
{
- WorldPacket data2(SMSG_FORCE_MOVE_ROOT, 10);
- data2 << GetPackGUID();
- data2 << (uint32)2;
- SendMessageToSet(&data2, true);
+ setCompoundState << uint8(2 + GetPackGUID().size() + 4);
+ setCompoundState << uint16(SMSG_FORCE_MOVE_ROOT);
+ setCompoundState << GetPackGUID();
+ setCompoundState << uint32(0); //! movement counter
+ }
+
+ if (HasAuraType(SPELL_AURA_FEATHER_FALL))
+ {
+ setCompoundState << uint8(2 + GetPackGUID().size() + 4);
+ setCompoundState << uint16(SMSG_MOVE_FEATHER_FALL);
+ setCompoundState << GetPackGUID();
+ setCompoundState << uint32(0); //! movement counter0
+ }
+
+ if (HasAuraType(SPELL_AURA_WATER_WALK))
+ {
+ setCompoundState << uint8(2 + GetPackGUID().size() + 4);
+ setCompoundState << uint16(SMSG_MOVE_WATER_WALK);
+ setCompoundState << GetPackGUID();
+ setCompoundState << uint32(0); //! movement counter0
+ }
+
+ if (HasAuraType(SPELL_AURA_HOVER))
+ {
+ setCompoundState << uint8(2 + GetPackGUID().size() + 4);
+ setCompoundState << uint16(SMSG_MOVE_SET_HOVER);
+ setCompoundState << GetPackGUID();
+ setCompoundState << uint32(0); //! movement counter0
+ }
+
+ if (setCompoundState.size() > 4)
+ {
+ setCompoundState.put(0, setCompoundState.size() - 4);
+ SendDirectMessage(&setCompoundState);
}
SendAurasForTarget(this);
@@ -22949,18 +22982,6 @@ void Player::SendAurasForTarget(Unit* target) const
if (!target || target->GetVisibleAuras()->empty()) // speedup things
return;
- /*! Blizz sends certain movement packets sometimes even before CreateObject
- These movement packets are usually found in SMSG_COMPRESSED_MOVES
- */
- if (target->HasAuraType(SPELL_AURA_FEATHER_FALL))
- target->SetFeatherFall(true, true);
-
- if (target->HasAuraType(SPELL_AURA_WATER_WALK))
- target->SetWaterWalking(true, true);
-
- if (target->HasAuraType(SPELL_AURA_HOVER))
- target->SetHover(true, true);
-
WorldPacket data(SMSG_AURA_UPDATE_ALL);
data << target->GetPackGUID();