Rebuilt danger thresholds on the game's actual pass-out rule. Previously DANGER/FATAL used static 0.45/0.95 fractions of remaining HP, so a "DANGER" fall could still pass you out — the user died on a "DANGER" label. Fall classification now mirrors the game exactly:
Safe — injury < 0.025 (below the game's "ignore injury" floor, CharacterMovement.CheckFallDamage :517 / CharacterAfflictions cap rules) → no status is added.
Danger (orange) — 0.25 ≤ injury < 0.99 − statusSum — heavy and lethal at low HP.
Fatal (red) — injury ≥ 0.99 − statusSum — this fall pushes statusSum over the game's pass-out threshold (shouldPassOut, CharacterAfflictions.cs:180) and you pass out / die. The threshold collapses as your HP drops, so a small fall at low HP is flagged Fatal, exactly as the user expected ("100% → any hit under 25% is yellow; at 25% HP it's already fatal").
Skeleton / custom-run prediction now matches the game. Removed an incorrect ÷ Ascents.etcDamageMultiplier step in FallPredictor. The game divides by etcDamageMultiplier in CharacterMovement.CheckFallDamage but re-multiplies it inside AddStatus(Injury, …) ( Injury qualifies for StatusAffectedByDifficultyMod). For Injury the two cancel — keeping the divide made the mod under-predict by exactly etcDamageMultiplier, which on custom runs with EtcDamage > 1 showed a Safe / Injury label on falls that actually knock you out — especially lethal in Skeleton mode (×8). Now the formula is min(factor, maxVelDmg) × Ascents.fallDamageMultiplier × (skeleton ? 8 : 1), matching the game's effective injury status.
✨ Added
Ping marker prediction labels — every ping marker now shows the fall-damage prediction (INJURY / DANGER / FATAL) for the local player, so the whole team can read a landing spot's danger at a glance.
2D / 3D marker label modes — labels render on the HUD (Screen2D, default) or as world-space text at the marker (World3D).
Extra ping keybind — bind any key to place a ping at your aim point (vanilla ping is the mouse wheel).
In-game settings via ModConfig / Peak.UI — all settings are editable under MOD SETTINGS → Danger Cursor: colors, keybinds, display options, toggles. Keybinds get a rebind UI under MOD CONTROLS.
Rich color pickers — each color row has a live preview swatch; Pick opens a Figma-style picker: hue color wheel, saturation/value square, live preview, hex input, preset swatches, and an eyedropper over a fullscreen game screenshot.
Live offset picker — clicking the offset row opens a fullscreen screenshot of the game with a crosshair at the aim/marker anchor and a draggable sample label; a connector line and live X/Y readout show exactly where text will land. Reset restores the default offset.
Tap-flash prediction — a single click of the cursor key flashes the prediction for Tap Flash Duration (default 1.5s); holding keeps a live scan. The label is always visible while active (safe spots show the distance or SAFE).
Always-on marker text — ping markers now show a label even on safe spots (the fall distance, or SAFE when Show Distance is off).
Dark text outline — all labels (cursor and markers) render with a dark outline so white text stays readable over bright surfaces like water.
🔧 Changed
Prediction tuning is automatic — the manual Prediction config section was removed. Fall-damage math now uses fixed constants that already adapt to the run difficulty (Ascents multipliers), so old thresholds are gone from the config file.
Cursor label repositioned — default offset moved below the aim point (10, -32) so it no longer overlaps the crosshair. Existing configs keep their values; update Cursor Label Offset X/Y if you want the old spot back.
Prediction math refactored — shared FallPredictor used by both the cursor scanner and marker labels.
Cursor activation honors the configurable Cursor Key (default: Right Mouse Button).
Reliable cursor rendering — the label now uses screen-space TextMeshProUGUI on the HUD canvas (same system that powers ping marker labels) with its own CursorLabel MonoBehaviour update loop, replacing the unreliable legacy OnGUI path.
3D marker text auto-sizes with distance and keeps billboarding toward the player.