mirror of
https://github.com/mod-playerbots/azerothcore-wotlk.git
synced 2026-01-25 06:36:24 +00:00
fix(Core/Creatures): correct applying swimming moveflag to creatures in water (#10756)
Fixed #10709
This commit is contained in:
@@ -3249,7 +3249,22 @@ void Creature::UpdateMovementFlags()
|
||||
if (!isInAir)
|
||||
RemoveUnitMovementFlag(MOVEMENTFLAG_FALLING);
|
||||
|
||||
SetSwim(CanSwim() && IsInWater());
|
||||
bool Swim = false;
|
||||
LiquidData const& liquidData = GetLiquidData();
|
||||
switch (liquidData.Status)
|
||||
{
|
||||
case LIQUID_MAP_WATER_WALK:
|
||||
case LIQUID_MAP_IN_WATER:
|
||||
Swim = GetPositionZ() - liquidData.DepthLevel > GetCollisionHeight() * 0.75f; // Shallow water at ~75% of collision height
|
||||
break;
|
||||
case LIQUID_MAP_UNDER_WATER:
|
||||
Swim = true;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
SetSwim(CanSwim() && Swim);
|
||||
}
|
||||
|
||||
void Creature::SetObjectScale(float scale)
|
||||
|
||||
Reference in New Issue
Block a user