# E6.M2 — ConsentAndRiskUxSignals ## Summary | Field | Value | |--------|--------| | **Module ID** | E6.M2 | | **Epic** | [Epic 6 — PvP Security](../epics/epic_06_pvp_security.md) | | **Stage target** | Prototype | | **Status** | Planned (see [dependency register](module_dependency_register.md)) | ## Purpose Entry warnings, in-zone risk UI, and clear PvP state communication using eligibility from [E6.M1](E6_M1_PvPEligibilityAndFlagState.md) and camera/readability context from [E1.M2](E1_M2_IsometricCameraController.md). ## E1.M2 camera adjacency (NEO-18) When implementing zone-risk HUD and related **client** presentation, treat [E1.M2](E1_M2_IsometricCameraController.md) as the framing source: - **May read** the follow rig’s **`camera_state`** snapshot (`client/scripts/camera_state.gd`) — field meanings and refresh cadence: [Consumer contract](E1_M2_IsometricCameraController.md#consumer-contract-neo-18). - **Not duplicated in `CameraState` today:** occlusion on/off, bound zoom/occlusion resources, `presentation_yaw_deg`, `pitch_elevation_deg` — read **`IsometricFollowCamera`** exports (`client/scripts/isometric_follow_camera.gd`) when needed. - **If `CameraState.yaw` becomes non-zero** (orbit enabled mid-project per E1.M2 rotation policy), screen-space layouts that assumed a fixed diagonal may need a compass / telegraph pass; keep **gameplay-adjacent** semantics **world-anchored** where possible. - **Authority:** [Client vs server — E1.M2](client_server_authority.md#e1m2-isometriccameracontroller) — the server must **not** use client-reported camera pose for gameplay checks (targeting, LOS, zone rules). ## Responsibilities - Show `RiskPrompt` on low-sec entry; drive `ZoneRiskState` / `PvPIndicatorState` in HUD. ## Key contracts | Contract | Role | |----------|------| | `RiskPrompt` | Consent dialog payload and outcomes. | | `ZoneRiskState` | Display model for current zone risk. | | `PvPIndicatorState` | Persistent indicator semantics. | ## Module dependencies - **E6.M1** — PvPEligibilityAndFlagState. - **E1.M2** — IsometricCameraController. ## Dependents (by design) - Client UX only; server remains authoritative via E6.M1 / E4.M4. ## Related implementation slices Epic 6 **Slice 2** — `risk_prompt_shown`, accepted/declined. ## Source anchors - Master plan: [`neon_sprawl_vision.plan.md`](../../../neon_sprawl_vision.plan.md) — Epic 6. - [Module dependency register](module_dependency_register.md)