diff options
| author | Shauren <shauren.trinity@gmail.com> | 2022-02-25 12:37:04 +0100 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2022-02-25 12:37:04 +0100 |
| commit | d945a118db6d2b423a77c419eb8dd7f4732802a2 (patch) | |
| tree | a2bd8a9dba5d7f2a1b973d341d139dc98f64bc37 /src/server/game/Entities/Unit | |
| parent | ce49d5615bd041700a253239c864a18f87e79216 (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.cpp | 31 | ||||
| -rw-r--r-- | src/server/game/Entities/Unit/Unit.h | 1 |
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(); } |
