# V2 Reduced Motion Mode

This runbook covers `TODOS.phase-72.72.13.1.12`: reduced motion mode for motion
sensitivity, including disabled screen shake, reduced particle effects, and
slower camera transitions.

## Runtime Surface

The reduced motion mode profile lives in V2UI:

- C++ header: `V2/ue/Source/V2UI/Public/V2ReducedMotionMode.h`
- C++ source: `V2/ue/Source/V2UI/Private/V2ReducedMotionMode.cpp`
- automation spec: `V2/ue/Source/V2Tests/Private/UI/ReducedMotionMode.spec.cpp`
- contract:
  `V2/ue/Content/V2/UI/Accessibility/ReducedMotionMode_V2_Contract.json`
- focused checker: `V2/ue/Tools/check-v2-reduced-motion-mode.py`

`FV2ReducedMotionMode::BuildDefaultProfile` returns
`Accessibility.ReducedMotionMode.V2` for the
`Settings.Accessibility.ReducedMotion` settings row.

## Mode Policy

The mode uses `FV2UIAccessibilitySettings::bReducedMotion` as the source of
truth. When enabled, `FV2ReducedMotionModeProfile::ResolveState` returns a state
that:

- disables screen shake;
- reduces particle effects to 50 percent or lower;
- slows camera transitions with a longer duration multiplier and lower speed
  scale;
- suppresses looping HUD motion;
- suppresses hard cinematic camera cuts;
- remains deterministic and frame-data inert through `doesNotAlterFrameData`.

When disabled, the resolved state preserves authored motion: screen shake stays
enabled, particle intensity stays at 1.0, and camera transition speed and
duration stay at authored values.

## Settings Surface

The default Settings Accessibility section exposes `Reduced motion` as a toggle
with this description: "Disable screen shake, reduce particle effects, and slow
camera transitions."

`UV2UISubsystem::SetReducedMotionModeEnabled` updates the shared accessibility
setting, broadcasts `OnAccessibilitySettingsChanged`, and refreshes HUD slots so
HUD presentation and broader reduced-motion state remain synchronized.

## Verification

Run these checks after changing reduced motion mode behavior:

```bash
python3 V2/ue/Tools/check-v2-reduced-motion-mode.py
python3 V2/ue/Tools/check-v2-hud-accessibility-presentation.py
python3 V2/ue/Tools/check-v2-settings-ui.py
python3 V2/ue/Tools/check-v2-ui-module.py
python3 V2/ue/Tools/check-v2-ci-workflow.py
python3 V2/tools/validate-v2-docs.py
python3 -m py_compile V2/ue/Tools/check-v2-reduced-motion-mode.py V2/ue/Tools/check-v2-ci-workflow.py
python3 -m json.tool V2/ue/Content/V2/UI/Accessibility/ReducedMotionMode_V2_Contract.json
```

Automation test name: `V2.UI.Accessibility.ReducedMotionMode.AssetContract`.

## Horde Gates

- `reduced-motion-mode-source`
- `reduced-motion-mode-screen-shake`
- `reduced-motion-mode-particles`
- `reduced-motion-mode-camera-transitions`
- `reduced-motion-mode-settings`
- `reduced-motion-mode-automation`
- `reduced-motion-mode-ci-wired`
