fix(Core/Creatures): correct applying swimming moveflag to creatures in water (#10756)

Fixed #10709
This commit is contained in:
UltraNix
2022-02-24 17:25:04 +01:00
committed by GitHub
parent 8ed223e2bf
commit 534920ada2

View File

@@ -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)