Index: source/simulation2/components/CCmpUnitMotion.cpp =================================================================== --- source/simulation2/components/CCmpUnitMotion.cpp +++ source/simulation2/components/CCmpUnitMotion.cpp @@ -421,9 +421,9 @@ m_WalkSpeed = cmpValueModificationManager->ApplyModifications(L"UnitMotion/WalkSpeed", m_TemplateWalkSpeed, GetEntityId()); m_RunSpeedMultiplier = cmpValueModificationManager->ApplyModifications(L"UnitMotion/RunMultiplier", m_TemplateRunSpeedMultiplier, GetEntityId()); - // Adjust our speed. UnitMotion cannot know if this speed is on purpose or not so always adjust and let unitAI and such adapt. - m_SpeedRatio = std::min(m_SpeedRatio, m_RunSpeedMultiplier); - m_Speed = m_SpeedRatio.Multiply(GetWalkSpeed()); + // Recompute m_Speed from m_SpeedRatio. + // This is required by ValueModification/OwnershipChanged as the run multiplier might have been lowered. + SetSpeedRatio(m_SpeedRatio); break; }