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)
|
if (!isInAir)
|
||||||
RemoveUnitMovementFlag(MOVEMENTFLAG_FALLING);
|
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)
|
void Creature::SetObjectScale(float scale)
|
||||||
|
|||||||
Reference in New Issue
Block a user