aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Entities/Unit
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2022-02-25 12:37:04 +0100
committerShauren <shauren.trinity@gmail.com>2022-02-25 12:37:04 +0100
commitd945a118db6d2b423a77c419eb8dd7f4732802a2 (patch)
treea2bd8a9dba5d7f2a1b973d341d139dc98f64bc37 /src/server/game/Entities/Unit
parentce49d5615bd041700a253239c864a18f87e79216 (diff)
Core/Auras: Implemented SPELL_AURA_DISABLE_INERTIA (506)
Diffstat (limited to 'src/server/game/Entities/Unit')
-rw-r--r--src/server/game/Entities/Unit/Unit.cpp31
-rw-r--r--src/server/game/Entities/Unit/Unit.h1
2 files changed, 32 insertions, 0 deletions
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp
index 1301968399b..d5e112bed43 100644
--- a/src/server/game/Entities/Unit/Unit.cpp
+++ b/src/server/game/Entities/Unit/Unit.cpp
@@ -12873,6 +12873,37 @@ bool Unit::SetCanDoubleJump(bool enable)
return true;
}
+bool Unit::SetDisableInertia(bool disable)
+{
+ if (disable == HasExtraUnitMovementFlag2(MOVEMENTFLAG3_DISABLE_INERTIA))
+ return false;
+
+ if (disable)
+ AddExtraUnitMovementFlag2(MOVEMENTFLAG3_DISABLE_INERTIA);
+ else
+ RemoveExtraUnitMovementFlag2(MOVEMENTFLAG3_DISABLE_INERTIA);
+
+ static OpcodeServer const disableInertiaOpcodeTable[2] =
+ {
+ SMSG_MOVE_DISABLE_INERTIA,
+ SMSG_MOVE_ENABLE_INERTIA
+ };
+
+ if (Player* playerMover = Unit::ToPlayer(GetUnitBeingMoved()))
+ {
+ WorldPackets::Movement::MoveSetFlag packet(disableInertiaOpcodeTable[disable]);
+ packet.MoverGUID = GetGUID();
+ packet.SequenceIndex = m_movementCounter++;
+ playerMover->SendDirectMessage(packet.Write());
+
+ WorldPackets::Movement::MoveUpdate moveUpdate;
+ moveUpdate.Status = &m_movementInfo;
+ SendMessageToSet(moveUpdate.Write(), playerMover);
+ }
+
+ return true;
+}
+
void Unit::SendSetVehicleRecId(uint32 vehicleId)
{
if (Player* player = ToPlayer())
diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h
index 11f5b856aee..d6df772d50e 100644
--- a/src/server/game/Entities/Unit/Unit.h
+++ b/src/server/game/Entities/Unit/Unit.h
@@ -1220,6 +1220,7 @@ class TC_GAME_API Unit : public WorldObject
bool SetCanTransitionBetweenSwimAndFly(bool enable);
bool SetCanTurnWhileFalling(bool enable);
bool SetCanDoubleJump(bool enable);
+ bool SetDisableInertia(bool disable);
void SendSetVehicleRecId(uint32 vehicleId);
MovementForces const* GetMovementForces() const { return _movementForces.get(); }