aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/server/game/Entities/Unit/Unit.cpp7
-rw-r--r--src/server/game/Spells/SpellDefines.h4
2 files changed, 9 insertions, 2 deletions
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp
index 3659f304091..4134cd66b35 100644
--- a/src/server/game/Entities/Unit/Unit.cpp
+++ b/src/server/game/Entities/Unit/Unit.cpp
@@ -12060,6 +12060,13 @@ bool Unit::UpdatePosition(float x, float y, float z, float orientation, bool tel
UpdatePositionData();
+ bool isInWater = IsInWater();
+ if (!IsFalling() || isInWater || IsFlying())
+ RemoveAurasWithInterruptFlags(SpellAuraInterruptFlags2::Ground);
+
+ if (isInWater)
+ RemoveAurasWithInterruptFlags(SpellAuraInterruptFlags2::Swimming);
+
return (relocated || turn);
}
diff --git a/src/server/game/Spells/SpellDefines.h b/src/server/game/Spells/SpellDefines.h
index 1b32fd91d52..9c402167a5f 100644
--- a/src/server/game/Spells/SpellDefines.h
+++ b/src/server/game/Spells/SpellDefines.h
@@ -112,9 +112,9 @@ enum class SpellAuraInterruptFlags2 : uint32
{
None = 0,
Falling = 0x00000001, // NYI
- Swimming = 0x00000002, // NYI
+ Swimming = 0x00000002,
NotMoving = 0x00000004, // NYI
- Ground = 0x00000008, // NYI
+ Ground = 0x00000008,
Transform = 0x00000010, // NYI
Jump = 0x00000020,
ChangeSpec = 0x00000040, // NYI