From a1f5d206e558caf8a17da1a29516f45ce33f8348 Mon Sep 17 00:00:00 2001 From: Ovahlord Date: Sun, 8 Apr 2018 18:54:49 +0200 Subject: [PATCH] Core/Creatures: swimming creatures should not be affected by gravity * add movementflags directly instead of sending a opcode --- src/server/game/Entities/Creature/Creature.cpp | 9 +++++++++ src/server/game/Entities/Unit/Unit.cpp | 7 ------- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/src/server/game/Entities/Creature/Creature.cpp b/src/server/game/Entities/Creature/Creature.cpp index c7569365ed..57f186d297 100644 --- a/src/server/game/Entities/Creature/Creature.cpp +++ b/src/server/game/Entities/Creature/Creature.cpp @@ -2745,6 +2745,15 @@ void Creature::UpdateMovementFlags() if (!isInAir) SetFall(false); + if (GetCreatureTemplate()->InhabitType & INHABIT_WATER) + { + if (IsUnderWater()) + AddUnitMovementFlag(MOVEMENTFLAG_DISABLE_GRAVITY); + else + RemoveUnitMovementFlag(MOVEMENTFLAG_DISABLE_GRAVITY); + } + else + SetSwim(GetCreatureTemplate()->InhabitType & INHABIT_WATER && IsInWater()); } diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 490e64d89d..24e6632329 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -14150,16 +14150,9 @@ bool Unit::SetSwim(bool enable) return false; if (enable) - { AddUnitMovementFlag(MOVEMENTFLAG_SWIMMING); - if (IsUnderWater()) - SetDisableGravity(true); - } else - { RemoveUnitMovementFlag(MOVEMENTFLAG_SWIMMING); - SetDisableGravity(false); - } if (enable) Movement::PacketSender(this, SMSG_SPLINE_MOVE_START_SWIM, NULL_OPCODE).Send();