/*
Q2PRO-X Guided / Standalone menu definitions.

This file is loaded ONLY when cl_q2prox_menu_mode is 1 (or the
-q2proxmenu2 launch flag is passed). In that mode q2pro.menu AND
q2pro-x.menu are intentionally ignored — see src/client/ui/script.c.

Everything this UI references must either:
  - be defined here (all "begin <name>"/"end" blocks below), or
  - be a code-built menu loaded by UI_Init (players, servers, demos).

Do NOT add "inject ... endinject" blocks here — guided mode does
not process injections.

Maintenance rule: if you add a user-facing Q2PRO-X feature that
should be reachable from BOTH the classic additive menu and the
guided standalone menu, update BOTH q2pro-x.menu AND this file.
*/

background black
font conchars
cursor ch1
weapon w_railgun.md2

color normal #0f90eb64
color active #0f90ff64
color selection #0f90eb64
color disabled #7f7f7f

// ===========================================================================
// TOP-LEVEL ENTRY POINTS (main / game / options)
// ===========================================================================

// `--q2prox` marks rows on mixed guided pages (where some entries are
// classic Q2 features and some are Q2PRO-X-specific). The draw layer
// renders a green "(X)" suffix next to the label only when the active
// UI is guided/standalone (uis.guided_mode_active) AND the row carries
// the flag. Pure Q2PRO-X pages (q2prox_*, g_advanced, g_config, g_help)
// intentionally do NOT use --q2prox per-row to avoid (X) spam — those
// pages are already Q2PRO-X in identity.

begin main
    plaque m_main_plaque m_main_logo
    // Guided main is task-based and all-action — the classic banner
    // bitmaps were dropped here so the (X) badge can sit consistently
    // next to whatever row is Q2PRO-X-specific (per TZ badge map).
    action --status "Open this menu section." --status-ru "Открывает раздел «одиночная игра»." --name-ru "Одиночная игра..." "Play offline..." pushmenu play_offline
    action --status "Open this menu section." --status-ru "Открывает раздел «присоединиться»." --name-ru "Присоединиться..." "Join online..." pushmenu join_online
    action --status "Open this menu section." --status-ru "Открывает раздел «быстрая настройка»." --q2prox --name-ru "Быстрая настройка..." "Quick setup..." pushmenu quick_setup
    action --status "Open this menu section." --status-ru "Открывает раздел «настройки»." --name-ru "Настройки..." "Options..." pushmenu options
    action --status "Open this menu section." --status-ru "Открывает раздел «помощь / о Q2PRO-X»." --name-ru "Помощь / о Q2PRO-X" "Help / about Q2PRO-X" pushmenu g_help
    action --status "Open this menu section." --status-ru "Открывает раздел «демо»." --name-ru "Демо" "Demos" pushmenu demos
    action --status "Quit the game." --status-ru "Выходит из игры." --name-ru "Выход" "Quit" quit
    blank
    pairs --q2prox --live --status "cl_console_utf8_ru: global Russian display localization. auto = Russian on Russian Windows, off = English/legacy, on = forced Russian." --status-ru "Выбирает значение «язык интерфейса»." --name-ru "Язык интерфейса" --items-ru "Авто|Выкл.|Вкл." "Interface language" cl_console_utf8_ru "Auto" -1 "Off" 0 "On" 1
    blank "Green (X) = Q2PRO-X feature"
end

begin game
    background #0000ff20
    style --compact
    action --status "Close the menu and return to the game." --status-ru "Закрывает меню и возвращает управление игре." --name-ru "Продолжить игру" "Resume game" forcemenuoff
    action --q2prox --name-ru "Справка по переменным..." --status "Browse every cvar live: search, description, values, source" --status-ru "Выполняет действие «справка по переменным»." "Cvar reference..." cvar_help
    action --q2prox --name-ru "Обзор серверов..." --status "Modern Q2PRO-X server browser overlay" --status-ru "Выполняет действие «обзор серверов»." "Browse servers..." serverbrowser_open_modern
    action --status "Open this menu section." --status-ru "Открывает раздел «присоединиться»." --name-ru "Присоединиться..." "Join online..." pushmenu join_online
    action --status "Open this menu section." --status-ru "Открывает раздел «быстрая настройка»." --q2prox --name-ru "Быстрая настройка..." "Quick setup..." pushmenu quick_setup
    action --status "Open this menu section." --status-ru "Открывает раздел «настройки»." --name-ru "Настройки..." "Options..." pushmenu options
    action --status "Run this action." --status-ru "Выполняет действие «оверлей команд мода»." --q2prox --name-ru "Оверлей команд мода" "Mod command overlay" modhelp_toggle
    action --status "Open this menu section." --status-ru "Открывает раздел «демо»." --name-ru "Демо" "Demos" pushmenu demos
    action --status "Disconnect from the current server." --status-ru "Отключается от текущего сервера." --name-ru "Отключиться" "Disconnect" disconnect
    action --status "Quit the game." --status-ru "Выходит из игры." --name-ru "Выход" "Quit" quit
end

begin options
    banner m_banner_options
    action --status "Open this menu section." --status-ru "Открывает раздел «видео и экран»." --q2prox --name-ru "Видео и экран..." "Video & display..." pushmenu g_video
    action --status "Open this menu section." --status-ru "Открывает раздел «звук и акустика»." --q2prox --name-ru "Звук и акустика..." "Sound & acoustics..." pushmenu g_sound
    action --status "Open this menu section." --status-ru "Открывает раздел «интерфейс и HUD»." --name-ru "Интерфейс и HUD..." "Interface & HUD..." pushmenu g_interface
    action --status "Open this menu section." --status-ru "Открывает раздел «управление и оружие»." --q2prox --name-ru "Управление и оружие..." "Controls & weapon view..." pushmenu g_controls
    action --status "Open this menu section." --status-ru "Открывает раздел «видимость и визуальное»." --q2prox --name-ru "Видимость и визуальное..." "Visibility & visuals..." pushmenu g_visibility
    action --status "Open this menu section." --status-ru "Открывает раздел «скины и модели»." --q2prox --name-ru "Скины и модели..." "Skins & models..." pushmenu g_skins
    action --status "Open this menu section." --status-ru "Открывает раздел «расширенные Q2PRO-X»." --q2prox --name-ru "Расширенные Q2PRO-X..." "Advanced Q2PRO-X..." pushmenu g_advanced
    action --status "Open this menu section." --status-ru "Открывает раздел «конфиги и файлы»." --q2prox --name-ru "Конфиги и файлы..." "Config & files..." pushmenu g_config
    action --status "Open this menu section." --status-ru "Открывает раздел «помощь / о Q2PRO-X»." --q2prox --name-ru "Помощь / о Q2PRO-X..." "Help / about Q2PRO-X..." pushmenu g_help
    blank
    blank "Green (X) = Q2PRO-X feature"
end

// ===========================================================================
// SECTION 5A — Play Offline
// ===========================================================================

begin play_offline
    banner m_banner_game
    action --status "Start a new single-player game." --status-ru "Начинает новую одиночную игру: «лёгкий»." --name-ru "Лёгкий" easy "Skill 0; deathmatch 0; coop 0; maxclients 1; newgame"
    action --status "Start a new single-player game." --status-ru "Начинает новую одиночную игру: «средний»." --name-ru "Средний" medium "Skill 1; deathmatch 0; coop 0; maxclients 1; newgame"
    action --status "Start a new single-player game." --status-ru "Начинает новую одиночную игру: «сложный»." --name-ru "Сложный" hard "Skill 2; deathmatch 0; coop 0; maxclients 1; newgame"
    action --status "Start a new single-player game." --status-ru "Начинает новую одиночную игру: «кошмар»." --name-ru "Кошмар" nightmare "Skill 3; deathmatch 0; coop 0; maxclients 1; newgame"
    blank
    action --status "Open this menu section." --status-ru "Открывает раздел «загрузить игру»." --name-ru "Загрузить игру..." "Load game..." pushmenu loadgame
    action --status "Open this menu section." --status-ru "Открывает раздел «сохранить игру»." --name-ru "Сохранить игру..." "Save game..." pushmenu savegame
    /* Q2PRO-X 2026-05-16 — two entries for player setup:
     *   - Q2PRO-X DSL rows: name / skin / hand / fov / cl_noskins
     *     editable as a comb of DSL widgets;
     *   - built-in `players` page with the 3D model preview, after
     *     the 2026-05-16 ghost-trail + adaptive layout + RDF_NOWORLDMODEL
     *     postprocess isolation fixes (see TZ
     *     tz_2026-05-15_player_setup_preview_ghost_trail_ru.md). */
    action --q2prox --status "Edit name / skin / handedness / fov via Q2PRO-X DSL rows." --status-ru "Открывает раздел «настройка игрока (Q2PRO-X)»." --name-ru "Настройка игрока (Q2PRO-X)" "Player setup (Q2PRO-X)" pushmenu q2prox_player_identity
    action --status "Built-in player setup page with the 3D player model preview." --status-ru "Встроенная страница «настройка игрока» с 3D-превью модели." --name-ru "Настройка игрока (3D-превью)" "Player setup (3D preview)" pushmenu players
end

begin loadgame
    banner m_banner_load_game
    loadgame save0
    blank
    loadgame save1
    loadgame save2
    loadgame save3
    loadgame save4
    loadgame save5
    loadgame save6
    loadgame save7
    loadgame save8
    loadgame save9
    loadgame save10
    loadgame save11
    loadgame save12
    loadgame save13
    loadgame save14
    loadgame save15
end

begin savegame
    banner m_banner_save_game
    savegame save1
    savegame save2
    savegame save3
    savegame save4
    savegame save5
    savegame save6
    savegame save7
    savegame save8
    savegame save9
    savegame save10
    savegame save11
    savegame save12
    savegame save13
    savegame save14
    savegame save15
end

// ===========================================================================
// SECTION 5B — Join Online
// ===========================================================================

begin join_online
    title "Join Online"
    title-ru "Присоединиться к серверу"
    style --no-compact
    action --q2prox --status "Modern Q2PRO-X server browser overlay (q2servers.com / favorites / LAN)" --status-ru "Выполняет действие «обзор серверов»." --name-ru "Обзор серверов..." "Browse servers..." serverbrowser_open_modern
    action --q2prox --status "Jump straight to the Favorites source in the modern browser" --status-ru "Выполняет действие «избранное»." --name-ru "Избранное..." "Favorites..." \
        "set cl_serverbrowser_default_source 1; serverbrowser_open_modern"
    action --status "Classic legacy server browser (Q2PRO address book + servers.lst)" --status-ru "Открывает раздел «классический браузер / вход по адресу»." --name-ru "Классический браузер / вход по адресу..." "Legacy browser / join by address..." pushmenu j_legacy
    action --q2prox --status "Q2PRO-X setup page tuned for multiplayer comfort (laghax, movement, predicts, visibility)" --status-ru "Открывает раздел «настройки онлайн-игры»." --name-ru "Настройки онлайн-игры..." "Online play setup..." pushmenu j_online_setup
    blank
    // Q2PRO-X 2026-05-16 — see Player setup note in start_network.
    action --q2prox --status "Edit name / skin / handedness / fov via Q2PRO-X DSL rows." --status-ru "Открывает раздел «настройка игрока (Q2PRO-X)»." --name-ru "Настройка игрока (Q2PRO-X)" "Player setup (Q2PRO-X)" pushmenu q2prox_player_identity
    action --status "Built-in player setup page with the 3D player model preview." --status-ru "Встроенная страница «настройка игрока» с 3D-превью модели." --name-ru "Настройка игрока (3D-превью)" "Player setup (3D preview)" pushmenu players
    action --status "Open this menu section." --status-ru "Открывает раздел «загрузки»." --name-ru "Загрузки..." "Downloads..." pushmenu g_downloads
    action --q2prox --status "Mod command overlay (OpenTDM/OpenFFA)" --status-ru "Открывает раздел «оверлей команд мода»." --name-ru "Оверлей команд мода..." "Mod command overlay..." pushmenu q2prox_modhelp
    action --status "Open this menu section." --status-ru "Открывает раздел «демо»." --name-ru "Демо" "Demos" pushmenu demos
end

begin j_legacy
    title "Legacy Browser / Join By Address"
    title-ru "Классический браузер / вход по адресу"
    style --no-compact
    action --status "Launch the legacy address-book-driven server browser" --status-ru "Выполняет действие «классический браузер серверов»." --name-ru "Классический браузер серверов..." "Legacy server browser..." serverbrowser_open_legacy
    action --status "Edit the 16-slot address book (adr0..adr15)" --status-ru "Открывает раздел «адресная книга»." --name-ru "Адресная книга..." "Address book..." pushmenu g_addressbook
    blank
    action --align --status "Open the modern overlay instead" --status-ru "Выполняет действие «современный браузер»." --name-ru "Современный браузер..." "Modern browser..." serverbrowser_open_modern
end

begin j_online_setup
    title "Online Play Setup"
    title-ru "Настройка онлайн-игры"
    style --no-compact
    action --status "Adaptive prediction-error smoothing (laghax), HUD, weights" --status-ru "Открывает раздел «laghax»." --name-ru "Laghax..." "Laghax..." pushmenu q2prox_laghax
    action --status "FPS-independent movement timing + local player prediction" --status-ru "Открывает раздел «движение и игрок»." --name-ru "Движение и игрок..." "Movement & player..." pushmenu q2prox_movement
    action --status "Weapon predict toggles (ghost rockets, rail, shotgun, HB, etc.)" --status-ru "Открывает раздел «предикт оружия»." --name-ru "Предикт оружия..." "Weapon predicts..." pushmenu q2prox_predict
    action --status "Item / player highlighting for readability" --status-ru "Открывает раздел «видимость и подсветка»." --name-ru "Видимость и подсветка..." "Visibility & highlights..." pushmenu q2prox_vis
    action --status "OpenAL profile, HRTF, reverb, weapon / player volumes" --status-ru "Открывает раздел «звук»." --name-ru "Звук..." "Sound..." pushmenu g_sound
end

// ===========================================================================
// SECTION 5C — Quick Setup
// ===========================================================================

begin quick_setup
    title "Quick Setup"
    title-ru "Быстрая настройка"
    style --no-compact
    pairs --status "vid_driver: win32egl = default (capture-friendly ANGLE), win32wgl = classic OpenGL fallback" --status-ru "Выбирает значение «видеобэкенд»." --name-ru "Видеобэкенд" --items-ru "Win32egl|Win32wgl" "Video backend" vid_driver "Win32egl" win32egl "Win32wgl" win32wgl
    toggle --q2prox --status "vid_windowed: run in a window instead of fullscreen" --status-ru "Включает или выключает параметр «оконный режим»." --name-ru "Оконный режим" --items-ru "Нет|Да" "Windowed mode" vid_windowed
    pairs --status "vid_fullscreen_type: borderless desktop vs classic exclusive mode" --status-ru "Выбирает значение «полноэкранный режим»." --name-ru "Полноэкранный режим" --items-ru "Полноэкранный рабочий стол|Эксклюзивный режим" "Fullscreen mode" vid_fullscreen_type "Desktop fullscreen" desktop "Exclusive fullscreen" exclusive
    strings --status "vid_resolution: desktop = native monitor mode" --status-ru "Выбирает значение «разрешение»." --name-ru "Разрешение" "Resolution" vid_resolution $$vid_resolution_list
    strings --status "vid_refresh: max = highest available; ignored in windowed / desktop modes" --status-ru "Выбирает значение «частота обновления»." --name-ru "Частота обновления" "Refresh rate" vid_refresh $$vid_refresh_list
    range --q2prox --format "%d%%" --status "gl_render_scale: internal 3D scene resolution (100=native, step 1%)" --status-ru "Настраивает значение «масштаб рендера»." --name-ru "Масштаб рендера" "Render scale" gl_render_scale 100 1000 1
    blank
    values --q2prox --live --status "s_enable: OpenAL is required for HRTF + room acoustics" --status-ru "Выбирает значение «звуковой движок»." --name-ru "Звуковой движок" --items-ru "Без звука|Программный (DMA)|OpenAL" "Sound engine" s_enable "no sound" "software (DMA)" "OpenAL"
    action --q2prox --align --status "OpenAL profile / reverb / HRTF / volumes" --status-ru "Открывает раздел «OpenAL и акустика»." --name-ru "OpenAL и акустика..." "OpenAL & acoustics..." pushmenu q2prox_sound
    action --q2prox --align --status "Headphone 3D / HRTF / crossfeed" --status-ru "Открывает раздел «3D-звук в наушниках»." --name-ru "3D-звук в наушниках..." "Headphone 3D sound..." pushmenu q2prox_binaural
    action --q2prox --align --status "In-game voice chat (PTT / VAD, LiveKit, OpenAL required for tx/rx in Phase 1)" --status-ru "Открывает раздел «голосовой чат»." --name-ru "Голосовой чат..." "Voice chat..." pushmenu q2prox_voice
    blank
    values --live --status "crosshair: aim cursor style" --status-ru "Выбирает значение «прицел»." --name-ru "Прицел" --items-ru "Нет|Крест|Точка|Угол" "Crosshair" crosshair none cross dot angle
    range --q2prox --live --precision 2 --status "cl_menu_alpha: menu background transparency" --status-ru "Настраивает значение «прозрачность меню»." --name-ru "Прозрачность меню" "Menu opacity" cl_menu_alpha 0 1 0.05
    blank
    action --q2prox --align --status "Open the modern server browser" --status-ru "Выполняет действие «обзор серверов»." --name-ru "Обзор серверов..." "Browse servers..." serverbrowser_open_modern
    action --align --status "Re-apply video backend / fullscreen mode" --status-ru "Применяет изменения видеорежима и перезапускает видео." --name-ru "Перезапустить видео..." "Restart video..." vid_restart
end

// ===========================================================================
// SECTION 5D — Video & Display
// ===========================================================================

begin g_video
    title "Video & Display"
    title-ru "Видео и экран"
    style --no-compact
    pairs --status "vid_driver: win32egl = default (capture-friendly ANGLE), win32wgl = classic OpenGL fallback" --status-ru "Выбирает значение «видеобэкенд»." --name-ru "Видеобэкенд" --items-ru "Win32egl|Win32wgl" "Video backend" vid_driver "Win32egl" win32egl "Win32wgl" win32wgl
    strings --status "vid_resolution: desktop = native monitor mode" --status-ru "Выбирает значение «разрешение»." --name-ru "Разрешение" "Resolution" vid_resolution $$vid_resolution_list
    toggle --q2prox --status "vid_windowed: run in a normal resizable window" --status-ru "Включает или выключает параметр «оконный режим»." --name-ru "Оконный режим" --items-ru "Нет|Да" "Windowed mode" vid_windowed
    pairs --status "vid_fullscreen_type: fullscreen flavor when windowed is off" --status-ru "Выбирает значение «полноэкранный режим»." --name-ru "Полноэкранный режим" --items-ru "Полноэкранный рабочий стол|Эксклюзивный режим" "Fullscreen mode" vid_fullscreen_type "Desktop fullscreen" desktop "Exclusive fullscreen" exclusive
    strings --status "vid_refresh: max = highest available" --status-ru "Выбирает значение «частота обновления»." --name-ru "Частота обновления" "Refresh rate" vid_refresh $$vid_refresh_list
    values --q2prox --live --status "vid_desktop_fullscreen_fit: fill = native, aspect = preserve selected mode aspect with black bars" --status-ru "Выбирает значение «подгонка полного экрана»." --name-ru "Подгонка полного экрана" --items-ru "Заполнить|По пропорциям" "Fullscreen fit" vid_desktop_fullscreen_fit fill aspect
    range --q2prox --status "vid_desktop_fullscreen_margin: shrink borderless window" --status-ru "Настраивает значение «отступ полного экрана»." --name-ru "Отступ полного экрана" "Fullscreen margin" vid_desktop_fullscreen_margin 0 16 1
    blank
    range --q2prox --format "%d%%" --status "gl_render_scale: internal 3D scene resolution (100=native, step 1%)" --status-ru "Настраивает значение «масштаб рендера»." --name-ru "Масштаб рендера" "Render scale" gl_render_scale 100 1000 1
    values --q2prox --status "gl_render_scale_mode: auto=best path, texture=bloom/waterwarp, blit=high range, tiled=extreme" --status-ru "Выбирает значение «режим масштабирования»." --name-ru "Режим масштабирования" --items-ru "Авто|Текстура|Копирование|Плиткой" "Scale mode" gl_render_scale_mode auto texture blit tiled
    values --q2prox --status "gl_render_scale_filter: resolve quality" --status-ru "Выбирает значение «фильтр масштабирования»." --name-ru "Фильтр масштабирования" --items-ru "Быстро|Баланс|Качество" "Scale filter" gl_render_scale_filter fast balanced quality
    blank
    // Q2PRO-X 2026-05-15 — renderer FPS cap.  Network category candidate
    // for the global preferences migration but lives here because it's
    // video-side (cl_maxfps stays in the Advanced Network menu).
    range --q2prox --live --precision 0 --status "r_maxfps: renderer-only framerate cap. 0 = uncapped. Applies when cl_async 1; otherwise cl_maxfps is the gate." --status-ru "Лимит частоты кадров рендерера. 0 = без лимита. Применяется при cl_async 1, иначе действует cl_maxfps." --name-ru "Лимит FPS рендера" "Renderer FPS limit" r_maxfps 0 1000 5
    blank
    action --q2prox --align --status "OLED protection suite" --status-ru "Открывает раздел «защита OLED»." --name-ru "Защита OLED..." "OLED protection..." pushmenu q2prox_oled
    action --q2prox --align --status "Fog, bloom, color grading, sharpen, cel-shading, etc." --status-ru "Открывает раздел «визуальные эффекты»." --name-ru "Визуальные эффекты..." "Visual effects..." pushmenu q2prox_vfx
    // Q2PRO-X 2026-05-15 — GL settings (vsync / texture filter /
    // anisotropy / picmip / saturation + particles / beams / bilerp /
    // fontshadow / flarespeed / damageblend).  TZ §"Меню" — Видео и
    // экран.
    action --q2prox --align --status "GL textures and visual style: vsync, filter, anisotropy, picmip, particles, beams, bilerp, font shadow, damage blend." --status-ru "Настройки GL и визуальный стиль: VSync, фильтр текстур, анизотропия, picmip, частицы, лучи, билинейка, тень шрифта, кровь экрана." --name-ru "Настройки GL..." "GL settings..." pushmenu q2prox_gl_settings
    // Q2PRO-X 2026-05-15 — Renderer settings (lighting model +
    // advanced restart-required pipeline cvars).  TZ §"Меню" — Видео и
    // экран.  Some rows hint at vid_restart / map reload because they
    // are CVAR_FILES.
    action --q2prox --align --status "Renderer lighting and pipeline: vertex lighting, modulation, dlight falloff, lightgrid, waterwarp, GL shaders / MD5 / texture bits (some require vid_restart)." --status-ru "Освещение и конвейер рендера: per-vertex lighting, модуляция, мягкие dlight, lightgrid, искажение под водой, GLSL/MD5/битность текстур (часть требует vid_restart)." --name-ru "Настройки рендера..." "Renderer settings..." pushmenu q2prox_renderer_settings
    action --align --status "Apply vid_driver / fullscreen changes now" --status-ru "Применяет изменения видеорежима и перезапускает видео." --name-ru "Перезапустить видео..." "Restart video..." vid_restart
    action --q2prox --align --status "Print render scale status" --status-ru "Выполняет действие «инфо о масштабе рендера»." --name-ru "Инфо о масштабе рендера..." "Render scale info..." gl_render_scale_info
end

// Q2PRO-X 2026-05-15 — GL settings submenu (expanded 2026-05-15 GL
// allowlist follow-up: added bilerp / particles / beams / damage blend
// / flare / font-shadow rows).  All Video category candidates for the
// global preferences migration.  Texture-pipeline + visual style.
begin q2prox_gl_settings
    title "Q2PRO-X / GL settings"
    title-ru "Q2PRO-X / Настройки GL"
    style --no-compact
    values --live --status "gl_swapinterval: vertical sync. 0 = off (uncapped), 1 = vsync, -1 = adaptive vsync where supported." --status-ru "Вертикальная синхронизация (VSync). 0 = выкл (без ограничения), 1 = ВКЛ, -1 = адаптивная (если поддерживается)." --name-ru "Вертикальная синхронизация" --items-ru "Выкл.|Вкл.|Адаптивная" "Vertical sync" gl_swapinterval "Off" 0 "On" 1 "Adaptive" -1
    pairs --live --status "gl_texturemode: texture filtering. GL_NEAREST = nearest neighbour (sharp pixels), GL_LINEAR = bilinear smoothing, GL_NEAREST_MIPMAP_LINEAR = balanced, GL_LINEAR_MIPMAP_LINEAR = trilinear (smoothest)." --status-ru "Фильтрация текстур. NEAREST = ближайший сосед (резкие пиксели), LINEAR = билинейное сглаживание, NEAREST_MIPMAP_LINEAR = баланс, LINEAR_MIPMAP_LINEAR = трилинейная (мягче всего)." --name-ru "Фильтр текстур" --items-ru "Резкий (NEAREST)|Билинейный|Баланс|Трилинейный" "Texture filter" gl_texturemode "Nearest (sharp)" GL_NEAREST "Linear" GL_LINEAR "Nearest+mip" GL_NEAREST_MIPMAP_LINEAR "Trilinear" GL_LINEAR_MIPMAP_LINEAR
    range --live --precision 0 --status "gl_anisotropy: anisotropic filtering. 1 = off, 2/4/8/16 = increasing quality. Improves angled-surface texture clarity." --status-ru "Анизотропная фильтрация. 1 = выкл, 2/4/8/16 = увеличение качества. Улучшает чёткость текстур на наклонных поверхностях." --name-ru "Анизотропия" "Anisotropy" gl_anisotropy 1 16 1
    // Q2PRO-X 2026-05-17 — MSAA exposure (TZ gl_context_msaa_allowlist).
    // gl_multisamples is a GL context startup cvar; takes effect only
    // after vid_restart.  Driver may downgrade an unsupported request
    // to the next available level (or 0).  No --live.
    pairs --status "gl_multisamples: multi-sample anti-aliasing for the GL context. 0 = off, 2/4/8/16/32 = increasing quality. CVAR_REFRESH — takes effect after vid_restart; driver may downgrade unsupported levels." --status-ru "Multi-sample anti-aliasing для GL-контекста. 0 = выкл, 2/4/8/16/32 = качество растёт. CVAR_REFRESH — применяется после vid_restart; неподдерживаемое значение драйвер может понизить." --name-ru "Сглаживание MSAA (vid_restart)" --items-ru "Выкл.|2x|4x|8x|16x|32x" "MSAA (vid_restart)" gl_multisamples "Off" 0 "2x" 2 "4x" 4 "8x" 8 "16x" 16 "32x" 32
    range --live --precision 0 --status "gl_picmip: texture downscale level. 0 = full resolution, higher = downscaled (lower VRAM, less detail). Most users keep 0." --status-ru "Уровень понижения детализации текстур. 0 = полное разрешение, выше = понижение (меньше VRAM, меньше деталей). Большинство держит 0." --name-ru "Понижение текстур (picmip)" "Texture picmip" gl_picmip 0 4 1
    range --precision 2 --status "gl_saturation: texture upload saturation. 1.0 = original colour, 0 = grayscale. Requires video restart / texture reload; use Visual effects -> Vibrance for live render saturation." --status-ru "Насыщенность текстур при загрузке: 1.0 = исходный цвет, 0 = ч/б. Требует перезапуска видео / перезагрузки текстур; для живой насыщенности рендера используйте «Визуальные эффекты -> Сочность цвета»." --name-ru "Насыщенность текстур" "Texture saturation" gl_saturation 0 1 0.05
    blank
    // Bilerp: per-image-class linear filtering toggles.
    toggle --live --status "gl_bilerp_chars: bilinear filtering for charset (HUD font) images. Default off keeps the classic pixelated font." --status-ru "Билинейная фильтрация шрифта HUD. По умолчанию выкл (классические пикселизованные буквы)." --name-ru "Билинейка шрифта HUD" --items-ru "Нет|Да" "Bilerp chars" gl_bilerp_chars
    pairs --live --status "gl_bilerp_pics: bilinear filtering for HUD pictures. 0 = off, 1 = enabled for large pictures, 2 = enabled for all pictures." --status-ru "Билинейная фильтрация HUD-картинок. 0 = выкл, 1 = только крупные, 2 = все картинки." --name-ru "Билинейка HUD-картинок" --items-ru "Выкл.|Только крупные|Все" "Bilerp pics" gl_bilerp_pics "Off" 0 "Large" 1 "All" 2
    toggle --live --status "gl_bilerp_skies: bilinear filtering for skybox textures." --status-ru "Билинейная фильтрация скайбоксов." --name-ru "Билинейка скайбокса" --items-ru "Нет|Да" "Bilerp skies" gl_bilerp_skies
    blank
    // Particles / beams / damage blend / flare / font shadow.
    range --live --precision 2 --status "gl_partscale: minimum particle size. Default 2." --status-ru "Минимальный размер частиц. По умолчанию 2." --name-ru "Размер частиц" "Particle scale" gl_partscale 0.25 8 0.25
    pairs --live --status "gl_partshape: particle shape. 0 = faded circle (default), 1 = square, 2 = fuller less-faded circle." --status-ru "Форма частиц. 0 = размытый круг (по умолчанию), 1 = квадрат, 2 = плотный круг." --name-ru "Форма частиц" --items-ru "Размытый круг|Квадрат|Плотный круг" "Particle shape" gl_partshape "Faded" 0 "Square" 1 "Full" 2
    pairs --live --status "gl_partstyle: particle drawing style. 0 = blend colors (default), 1 = saturate colors." --status-ru "Стиль рисования частиц. 0 = смешение цветов (по умолчанию), 1 = насыщение цветов." --name-ru "Стиль частиц" --items-ru "Смешение|Насыщение" "Particle style" gl_partstyle "Blend" 0 "Saturate" 1
    pairs --live --status "gl_beamstyle: laser beam drawing style. 0 = textured billboard beam (default), 1 = flat polygonal beam." --status-ru "Стиль лазерных лучей. 0 = текстурированный билборд (по умолчанию), 1 = плоский полигональный." --name-ru "Стиль лазерных лучей" --items-ru "Билборд|Полигональный" "Beam style" gl_beamstyle "Textured" 0 "Polygonal" 1
    range --live --precision 2 --status "gl_damageblend_frac: damage screen-blend intensity. 0 = no red flash, 0.5 = engine maximum (renderer clamps anything higher). Default 0.2." --status-ru "Сила красного отлива от урона. 0 = без вспышки, 0.5 = максимум (выше движок clamp'ит). По умолчанию 0.2." --name-ru "Сила вспышки урона" "Damage blend" gl_damageblend_frac 0 0.5 0.05
    range --live --precision 0 --status "gl_flarespeed: flare fading speed. 0 = instant snap (no smoothing), 8 = default, higher = faster fade." --status-ru "Скорость затухания бликов. 0 = мгновенно (без сглаживания), 8 = по умолчанию, выше = быстрее." --name-ru "Скорость бликов" "Flare speed" gl_flarespeed 0 32 1
    pairs --live --status "gl_fontshadow: font shadow width in pixels. 0 = no shadow (default), 1, 2." --status-ru "Толщина тени шрифта в пикселях. 0 = без тени (по умолчанию), 1, 2." --name-ru "Тень шрифта" --items-ru "Выкл.|1 пиксель|2 пикселя" "Font shadow" gl_fontshadow "Off" 0 "1 px" 1 "2 px" 2
end

// Q2PRO-X 2026-05-15 — Renderer settings submenu (added in the
// 2026-05-15 GL allowlist follow-up).  Lighting model + advanced
// pipeline cvars.  Some rows are CVAR_FILES and require vid_restart
// or map reload — the row hint says so explicitly.  All Video category
// candidates for the global preferences migration.
begin q2prox_renderer_settings
    title "Q2PRO-X / Renderer settings"
    title-ru "Q2PRO-X / Настройки рендера"
    style --no-compact
    // Lighting model — live-safe.
    toggle --live --status "gl_vertexlight: per-vertex world lighting (retro look). Default off keeps lightmap shading." --status-ru "Per-vertex освещение мира (ретро). По умолчанию выкл (используется lightmap)." --name-ru "Per-vertex освещение (ретро)" --items-ru "Нет|Да" "Vertex lighting (retro)" gl_vertexlight
    range --live --precision 2 --status "gl_modulate: primary lightmap modulation factor. 1.0 = identity, higher = brighter, lower = dimmer." --status-ru "Основная модуляция lightmap. 1.0 = идентичность, выше = ярче, ниже = темнее." --name-ru "Модуляция света" "Lightmap modulate" gl_modulate 0 4 0.05
    range --live --precision 2 --status "gl_modulate_world: secondary modulation applied to world geometry only. Multiplies with gl_modulate." --status-ru "Дополнительная модуляция геометрии мира. Умножается на gl_modulate." --name-ru "Модуляция мира" "World modulate" gl_modulate_world 0 4 0.05
    range --live --precision 2 --status "gl_modulate_entities: secondary modulation applied to entities (models). Multiplies with gl_modulate." --status-ru "Дополнительная модуляция моделей (entities). Умножается на gl_modulate." --name-ru "Модуляция моделей" "Entities modulate" gl_modulate_entities 0 4 0.05
    range --live --precision 1 --status "gl_dlight_falloff: smoother dynamic light falloff (1 = enabled smoother, 0 = original jagged Q2 style)." --status-ru "Сглаживание динамических источников света. 1 = мягче, 0 = исходный резкий стиль Q2." --name-ru "Сглаживание dlight" "Dlight falloff" gl_dlight_falloff 0 5 0.5
    toggle --live --status "gl_doublelight_entities: apply both world and entity light modulation to entities (more vivid lighting)." --status-ru "Удваивает модуляцию света на моделях (для более насыщенного освещения)." --name-ru "Двойное освещение моделей" --items-ru "Нет|Да" "Double-light entities" gl_doublelight_entities
    pairs --live --status "gl_dotshading: fake diffuse shading for 3D models. 0 = off, 1 = default, 2 = stronger." --status-ru "Псевдо-диффузное затенение моделей. 0 = выкл, 1 = по умолчанию, 2 = сильнее." --name-ru "Затенение моделей (dotshading)" --items-ru "Выкл.|По умолчанию|Сильнее" "Dotshading" gl_dotshading "Off" 0 "Default" 1 "Stronger" 2
    toggle --live --status "gl_lightgrid: use BSP lightgrid for entity lighting." --status-ru "Использовать BSP lightgrid для освещения entities." --name-ru "Lightgrid для моделей" --items-ru "Нет|Да" "Lightgrid" gl_lightgrid
    blank
    // Special-purpose visual toggles.
    toggle --live --status "gl_waterwarp: screen-warp effect when underwater. GLSL backend only." --status-ru "Искажение экрана под водой. Только GLSL." --name-ru "Подводное искажение" --items-ru "Нет|Да" "Waterwarp" gl_waterwarp
    toggle --live --status "gl_fog: enable re-release fog effect (renderer master switch). Use Visual FX -> Fog rows for actual usefog/fogdensity/foghue tuning." --status-ru "Поддержка re-release тумана (мастер-переключатель рендера). Для usefog/fogdensity/foghue используйте «Визуальные эффекты -> Туман»." --name-ru "Поддержка re-release тумана" --items-ru "Нет|Да" "Fog support (re-release)" gl_fog
    blank
    // Advanced / restart-required rows below.  Each row's label and
    // status explicitly say `(vid_restart)` so the user sees the hint
    // even without a section header.
    pairs --status "gl_shaders: GLSL rendering backend. Disable only on very old GPUs. CVAR_FILES — requires vid_restart." --status-ru "GLSL рендер. Отключайте только на очень старых GPU. CVAR_FILES — нужен vid_restart." --name-ru "GLSL рендер (vid_restart)" --items-ru "Выкл.|Вкл." "GLSL shaders (vid_restart)" gl_shaders "Off" 0 "On" 1
    toggle --status "gl_md5_load: load re-release MD5 replacement models. CVAR_FILES — requires vid_restart or map reload." --status-ru "Загружать MD5-модели из re-release. CVAR_FILES — нужен vid_restart или перезагрузка карты." --name-ru "MD5 загрузка (vid_restart)" --items-ru "Нет|Да" "MD5 load (vid_restart)" gl_md5_load
    toggle --live --status "gl_md5_use: use loaded MD5 models. Only effective if gl_md5_load is enabled." --status-ru "Использовать загруженные MD5-модели. Только при gl_md5_load 1." --name-ru "MD5 использование" --items-ru "Нет|Да" "MD5 use" gl_md5_use
    range --live --precision 0 --status "gl_md5_distance: only use MD5 replacement model if entity is closer than this distance to the viewer. 0 = no distance LOD." --status-ru "Использовать MD5-модель только если объект ближе указанного расстояния. 0 = без LOD по дистанции." --name-ru "MD5 дальность" "MD5 distance" gl_md5_distance 0 16384 256
    pairs --live --status "gl_gpulerp: GPU-side alias model interpolation. 0 = disabled, 1 = auto (default, enabled on OpenGL 4.3+), 2 = force enabled." --status-ru "Интерполяция моделей на GPU. 0 = выкл., 1 = авто (по умолчанию, при OpenGL 4.3+), 2 = принудительно." --name-ru "GPU интерполяция моделей" --items-ru "Выкл.|Авто|Принудительно" "GPU model lerp" gl_gpulerp "Off" 0 "Auto" 1 "Force" 2
    pairs --status "gl_lightmap_bits: lightmap texture size as base-2 log of edge texel count. 0 = auto (8 classic / 10 re-release). Non-zero values are clamped to 7..10 (128, 256, 512, 1024 px). Requires map reload." --status-ru "Размер lightmap-текстуры как log2 числа текселей вдоль стороны. 0 = авто (8 для классики, 10 для re-release). Ненулевое clamp'ится в 7..10 (128, 256, 512, 1024 px). Нужна перезагрузка карты." --name-ru "Размер lightmap" --items-ru "Авто|128 px|256 px|512 px|1024 px" "Lightmap size" gl_lightmap_bits "Auto" 0 "128 px" 7 "256 px" 8 "512 px" 9 "1024 px" 10
    pairs --status "gl_texturebits: texture storage precision. 0 = driver default, common values 0/8/16/32. CVAR_FILES — requires vid_restart." --status-ru "Битность хранения текстур. 0 = по умолчанию, типичные значения 0/8/16/32. CVAR_FILES — нужен vid_restart." --name-ru "Битность текстур" --items-ru "Авто|8 бит|16 бит|32 бит" "Texture bits" gl_texturebits "Auto" 0 "8" 8 "16" 16 "32" 32
    toggle --status "gl_round_down: round texture sizes down to power of 2. CVAR_FILES — requires vid_restart." --status-ru "Округлять размер текстур вниз до степени 2. CVAR_FILES — нужен vid_restart." --name-ru "Округлять текстуры вниз" --items-ru "Нет|Да" "Round textures down" gl_round_down
    toggle --status "gl_downsample_skins: downsample skins along with world textures (off makes gl_round_down/gl_picmip skip skins). CVAR_FILES — requires vid_restart." --status-ru "Понижать детализацию скинов вместе с текстурами. Выкл = picmip/round_down не трогают скины. CVAR_FILES — нужен vid_restart." --name-ru "Понижать скины" --items-ru "Нет|Да" "Downsample skins" gl_downsample_skins
    toggle --status "gl_gamma_scale_pics: apply software gamma scaling to HUD pictures too. CVAR_FILES — requires vid_restart." --status-ru "Применять программную гамму и к HUD-картинкам. CVAR_FILES — нужен vid_restart." --name-ru "Гамма для HUD-картинок" --items-ru "Нет|Да" "Gamma for pics" gl_gamma_scale_pics
    pairs --status "gl_upscale_pcx: upscale PCX images using HQ2x/HQ4x filters. CVAR_FILES — requires vid_restart. 1 = 2x (5x memory), 2 = 4x (21x memory)." --status-ru "Апскейл PCX-изображений HQ2x/HQ4x. CVAR_FILES — нужен vid_restart. 1 = 2x (5x памяти), 2 = 4x (21x памяти)." --name-ru "Апскейл PCX" --items-ru "Выкл.|HQ2x|HQ4x" "PCX upscale" gl_upscale_pcx "Off" 0 "HQ2x" 1 "HQ4x" 2
    toggle --status "gl_invert: invert world texture colors (negative-photo look with gl_saturation 0). CVAR_FILES — requires vid_restart." --status-ru "Инвертировать цвета текстур мира (с gl_saturation 0 даёт эффект ч/б негатива). CVAR_FILES — нужен vid_restart." --name-ru "Инверсия текстур" --items-ru "Нет|Да" "Invert textures" gl_invert
    toggle --status "gl_cubemaps: use cubemaps for skybox drawing (multi-tex skies / re-release N64 skies). Requires gl_shaders." --status-ru "Кубомапы для скайбоксов (мульти-текстурные / N64 re-release). Нужен gl_shaders." --name-ru "Кубомапы скайбоксов" --items-ru "Нет|Да" "Cubemap skies" gl_cubemaps
    toggle --status "gl_allow_software: permit software OpenGL fallback when hardware acceleration is unavailable. Affects WGL backend only." --status-ru "Разрешить программный OpenGL, когда нет аппаратного ускорения. Только WGL." --name-ru "Программный OpenGL fallback" --items-ru "Нет|Да" "Allow software OpenGL" gl_allow_software
    blank
    // Q2PRO-X 2026-05-17 — renderer texture-pipeline prefs.  All four
    // are CVAR_FILES — toggling them mid-game writes the new value but
    // textures aren't reloaded until r_reload / vid_restart / map
    // reload runs.  No --live on these rows; the status strings
    // explicitly call out the reload requirement.
    values --status "r_override_textures: replace palettized WAL/PCX textures with PNG/JPG/TGA truecolor variants found via r_texture_formats. 0 = no override (stock palettized textures), 1 = override only palettized originals (default), 2 = override every texture. CVAR_FILES — needs r_reload / vid_restart / map reload." --status-ru "r_override_textures: подстановка PNG/JPG/TGA вместо палитровых WAL/PCX по списку r_texture_formats. 0 = не подставлять (исходная палитра), 1 = подставлять только палитровые (по умолчанию), 2 = подставлять все. CVAR_FILES — нужен r_reload / vid_restart / перезагрузка карты." --name-ru "Переопределение текстур (vid_restart)" --items-ru "Выкл.|Только палитровые|Все" "Texture overrides (vid_restart)" r_override_textures off 0 "palettized only" 1 all 2
    field --status "r_texture_formats: search order for replacement texture file extensions.  Default \"png jpg tga\".  Space-separated.  CVAR_FILES — needs r_reload / vid_restart / map reload." --status-ru "r_texture_formats: порядок поиска расширений файлов-заменителей текстур.  По умолчанию \"png jpg tga\".  Через пробел.  CVAR_FILES — нужен r_reload / vid_restart / перезагрузка карты." --name-ru "Порядок форматов текстур (vid_restart)" --width 16 "Texture format order (vid_restart)" r_texture_formats
    field --status "r_texture_overrides: bitmask of texture types eligible for override (1=HUD pictures, 2=HUD fonts, 4=skins, 8=sprites, 16=walls, 32=sky).  Default -1 (all types).  CVAR_FILES — needs r_reload / vid_restart / map reload." --status-ru "r_texture_overrides: bitmask типов текстур, к которым применяется подстановка (1=HUD картинки, 2=HUD шрифты, 4=скины, 8=спрайты, 16=стены, 32=небо).  По умолчанию -1 (все).  CVAR_FILES — нужен r_reload / vid_restart / перезагрузка карты." --name-ru "Маска типов текстур (vid_restart)" --width 8 "Texture override mask (vid_restart)" r_texture_overrides
    toggle --status "r_glowmaps: load glowmap images (re-release).  Only takes effect when gl_shaders is enabled.  CVAR_FILES — needs r_reload / vid_restart / map reload." --status-ru "r_glowmaps: загружать glowmap-картинки (re-release).  Работает только при gl_shaders 1.  CVAR_FILES — нужен r_reload / vid_restart / перезагрузка карты." --name-ru "Glowmaps (vid_restart)" --items-ru "Нет|Да" "Glowmaps (vid_restart)" r_glowmaps
    blank
    action --align --status "Apply CVAR_FILES changes now (rebuild texture pipeline)." --status-ru "Применить изменения CVAR_FILES (перестроить текстурный конвейер)." --name-ru "Перезапустить видео..." "Restart video..." vid_restart
end

// ===========================================================================
// SECTION 5E — Sound & Acoustics
// ===========================================================================

begin g_sound
    title "Sound & Acoustics"
    title-ru "Звук и акустика"
    style --no-compact
    values --live --status "s_enable: OpenAL is required for al_profile, HRTF, room acoustics" --status-ru "Выбирает значение «звуковой движок»." --name-ru "Звуковой движок" --items-ru "Без звука|Программный (DMA)|OpenAL" "Sound engine" s_enable "no sound" "software (DMA)" "OpenAL"
    range --status "Adjust this value." --status-ru "Настраивает значение «общая громкость»." --live --name-ru "Общая громкость" "Master volume" s_volume 0 1
    range --status "Adjust this value." --status-ru "Настраивает значение «громкость музыки»." --live --name-ru "Громкость музыки" "Music volume" ogg_volume 0 1
    values --live --status "s_ambient: 0 = no, 1 = yes, 2 = only player's own" --status-ru "Выбирает значение «фоновые звуки»." --name-ru "Фоновые звуки" --items-ru "Нет|Да|Только свои" "Ambient sounds" s_ambient "no" "yes" "only player's own"
    blank
    action --q2prox --align --status "OpenAL profile, reverb, HRTF, room acoustics" --status-ru "Открывает раздел «OpenAL и акустика»." --name-ru "OpenAL и акустика..." "OpenAL & acoustics..." pushmenu q2prox_sound
    action --q2prox --align --status "Headphone 3D / HRTF / crossfeed / encoding" --status-ru "Открывает раздел «3D-звук в наушниках»." --name-ru "3D-звук в наушниках..." "Headphone 3D sound..." pushmenu q2prox_binaural
    action --q2prox --align --status "Per-weapon and per-category volumes" --status-ru "Открывает раздел «громкость оружия / игрока»." --name-ru "Громкость оружия / игрока..." "Weapon / player volumes..." pushmenu q2prox_weaponvol
    // Q2PRO-X 2026-05-15 — Advanced audio submenu per TZ §"Меню".
    action --q2prox --align --status "Underwater filter, focus, mix-ahead, swap stereo, music (ogg) options." --status-ru "Подводный фильтр, фокус окна, упреждение микса, swap stereo, музыка (ogg)." --name-ru "Расширенные звуковые..." "Advanced audio..." pushmenu q2prox_advanced_audio
    action --q2prox --align --status "In-game voice chat (PTT / VAD, LiveKit, OpenAL required for tx/rx in Phase 1)" --status-ru "Открывает раздел «голосовой чат»." --name-ru "Голосовой чат..." "Voice chat..." pushmenu q2prox_voice
    blank
    toggle --q2prox --live --status "s_mute_when_inactive: mute when the window is not focused (Alt+Tab)" --status-ru "Включает или выключает параметр «глушить вне фокуса»." --name-ru "Глушить вне фокуса" --items-ru "Нет|Да" "Mute when inactive" s_mute_when_inactive
    action --align --status "Apply sound engine changes" --status-ru "Выполняет действие «перезапустить звук»." --name-ru "Перезапустить звук..." "Restart sound..." snd_restart
end

// Q2PRO-X 2026-05-15 — Advanced audio submenu.
// Sound cvars not exposed in the basic g_sound page.  All Audio
// category candidates for the global preferences migration.
begin q2prox_advanced_audio
    title "Q2PRO-X / Advanced audio"
    title-ru "Q2PRO-X / Расширенные звуковые"
    style --no-compact
    toggle --q2prox --live --status "s_auto_focus: continue playing sound when the window loses focus." --status-ru "Продолжать воспроизведение звука, когда окно теряет фокус." --name-ru "Звук без фокуса" --items-ru "Нет|Да" "Sound without focus" s_auto_focus
    toggle --q2prox --live --status "s_underwater: enable underwater audio low-pass filter when the player camera is submerged." --status-ru "Подводный low-pass фильтр когда камера игрока под водой." --name-ru "Подводный фильтр" --items-ru "Нет|Да" "Underwater filter" s_underwater
    range --q2prox --live --precision 2 --status "s_underwater_gain_hf: high-frequency gain when underwater filter is on. 0 = fully muffled, 1 = no muffling." --status-ru "Усиление высоких частот при подводном фильтре. 0 = полностью приглушены, 1 = без приглушения." --name-ru "ВЧ усиление под водой" "Underwater HF gain" s_underwater_gain_hf 0 1 0.05
    range --q2prox --live --precision 3 --status "s_mixahead: audio mix lookahead in seconds. Lower = less latency, may underrun on slower systems. Default 0.1." --status-ru "Опережение микса звука в секундах. Меньше = меньше задержка, может уйти в underrun на медленных системах. По умолчанию 0.1." --name-ru "Опережение микса (сек)" "Mix-ahead (sec)" s_mixahead 0.05 0.3 0.005
    toggle --q2prox --live --status "s_swapstereo: swap left/right channels (useful for headphones plugged in reverse)." --status-ru "Поменять местами левый и правый каналы (если наушники подключены наоборот)." --name-ru "Поменять L/R" --items-ru "Нет|Да" "Swap L/R" s_swapstereo
    blank
    toggle --q2prox --live --status "ogg_enable: enable OGG music playback (game soundtrack and MOD music)." --status-ru "Включает воспроизведение OGG-музыки (саундтрек игры и MOD-музыка)." --name-ru "OGG музыка" --items-ru "Нет|Да" "OGG music" ogg_enable
    toggle --q2prox --live --status "ogg_shuffle: shuffle music playlist instead of playing in order." --status-ru "Перемешивать плейлист музыки вместо последовательного воспроизведения." --name-ru "Перемешать музыку" --items-ru "Нет|Да" "Shuffle music" ogg_shuffle
    field --q2prox --width 16 --status "ogg_menu_track: track filename to play in the main menu (empty = no menu music)." --status-ru "Имя файла трека для главного меню (пусто = без музыки в меню)." --name-ru "Трек главного меню" "Menu track" ogg_menu_track
    toggle --q2prox --live --status "ogg_remap_tracks: enable per-map track remapping via track*_remap entries in the music index." --status-ru "Включает remapping треков по картам через track*_remap записи в индексе музыки." --name-ru "Remap треков по картам" --items-ru "Нет|Да" "Remap tracks per map" ogg_remap_tracks
end

// ===========================================================================
// SECTION 5F — Interface & HUD
// ===========================================================================

begin g_interface
    title "Interface & HUD"
    title-ru "Интерфейс и HUD"
    style --no-compact
    action --status "HUD size, console scale, menu scale, viewsize, ping graph" --status-ru "Открывает раздел «размер и компоновка»." --name-ru "Размер и компоновка..." "Size & layout..." pushmenu g_interface_size
    action --status "HUD / console / menu transparency" --status-ru "Открывает раздел «Прозрачность»." --name-ru "Прозрачность..." "Transparency..." pushmenu g_interface_alpha
    action --status "Crosshair / aim cursor" --status-ru "Открывает раздел «прицел»." --name-ru "Прицел..." "Crosshair..." pushmenu g_interface_crosshair
    action --status "Pickup notify identity: exact server output or Q2PRO-X client-side item identity override." --status-ru "Открывает раздел «pickup-уведомления»." --name-ru "Pickup-уведомления..." "Pickup notify..." pushmenu g_interface_pickup_notify
end

begin g_interface_size
    title "Size & Layout"
    title-ru "Размер и компоновка"
    style --no-compact
    range --status "Adjust this value." --status-ru "Настраивает значение «экран / размер вида»." --live --name-ru "Экран / размер вида" "Screen / viewsize" viewsize 40 100 10
    action --align-label --status "Reset HUD scale to auto (engine picks based on resolution)." --status-ru "Сбросить масштаб HUD на «авто»." --name-ru "Масштаб HUD: авто" "HUD scale: auto" "set scr_scale 0"
    range --live --precision 1 --status "scr_scale: HUD scale, manual range 1.0..10.0 (0 = auto)." --status-ru "Настраивает значение «масштаб HUD» (0 = авто, ручной диапазон 1.0..10.0)." --name-ru "Масштаб HUD" "HUD scale" scr_scale 1.0 10.0 0.1
    action --align-label --status "Reset console scale to auto." --status-ru "Сбросить масштаб консоли на «авто»." --name-ru "Масштаб консоли: авто" "Console scale: auto" "set con_scale 0"
    range --live --precision 1 --status "con_scale: console scale, manual range 1.0..10.0 (0 = auto)." --status-ru "Настраивает значение «масштаб консоли» (0 = авто, ручной диапазон 1.0..10.0)." --name-ru "Масштаб консоли" "Console scale" con_scale 1.0 10.0 0.1
    action --align-label --status "Reset menu scale to auto." --status-ru "Сбросить масштаб меню на «авто»." --name-ru "Масштаб меню: авто" "Menu scale: auto" "set ui_scale 0"
    range --live --precision 1 --status "ui_scale: menu scale, manual range 1.0..10.0 (0 = auto)." --status-ru "Настраивает значение «масштаб меню» (0 = авто, ручной диапазон 1.0..10.0)." --name-ru "Масштаб меню" "Menu scale" ui_scale 1.0 10.0 0.1
    toggle --status "Toggle this setting." --status-ru "Включает или выключает параметр «график пинга»." --live --name-ru "График пинга" --items-ru "Нет|Да" "Ping graph" scr_lag_draw
    values --status "Choose this value." --status-ru "Выбирает значение «демо-панель»." --live --name-ru "Демо-панель" --items-ru "Нет|Да|Подробно" "Demo bar" scr_demobar no yes verbose
end

begin g_interface_alpha
    title "Transparency"
    title-ru "Прозрачность"
    style --no-compact
    range --live --precision 2 --status "scr_alpha: HUD opacity" --status-ru "Настраивает значение «прозрачность HUD»." --name-ru "Прозрачность HUD" "HUD opacity" scr_alpha 0 1 0.05
    range --live --precision 2 --status "con_alpha: console opacity" --status-ru "Настраивает значение «прозрачность консоли»." --name-ru "Прозрачность консоли" "Console opacity" con_alpha 0 1 0.05
    range --q2prox --live --precision 2 --status "cl_menu_alpha: menu background transparency" --status-ru "Настраивает значение «прозрачность меню»." --name-ru "Прозрачность меню" "Menu opacity" cl_menu_alpha 0 1 0.05
end

begin g_interface_pickup_notify
    title "Pickup Notify"
    title-ru "Pickup-уведомления"
    style --no-compact
    pairs --q2prox --live --status "cl_pickup_icon_override: server exact = draw pickup notify and selected-weapon icons exactly as sent by the server; Q2PRO-X identity = client-side render-only override for health subtypes, armor shard, and selected hand grenades when assets are installed." --status-ru "Выбирает поведение pickup-уведомлений HUD: точный серверный вывод или Q2PRO-X client-side override для subtype'ов здоровья, armor shard и выбранных ручных гранат при наличии ассетов." --name-ru "Идентичность предметов" --items-ru "Как сервер|Q2PRO-X" "Item identity" cl_pickup_icon_override "Server exact" 0 "Q2PRO-X" 1
    toggle --q2prox --live --status "cl_pickup_icon_debug: print pickup identity classification decisions to the console. Diagnostic only." --status-ru "Печатать решения классификатора pickup identity в консоль. Только диагностика." --name-ru "Отладка классификатора" --items-ru "Нет|Да" "Classifier debug" cl_pickup_icon_debug
end

begin g_interface_crosshair
    title "Crosshair / Aim Cursor"
    title-ru "Прицел"
    style --no-compact
    values --live --status "crosshair: aim cursor style" --status-ru "Выбирает значение «стиль прицела»." --name-ru "Стиль прицела" --items-ru "Нет|Крест|Точка|Угол" "Crosshair style" crosshair none cross dot angle
    range --live --precision 1 --status "ch_scale: crosshair scale, 0.25..8.0 step 0.1." --status-ru "Настраивает значение «размер прицела» (0.25..8.0, шаг 0.1)." --name-ru "Размер прицела" "Crosshair scale" ch_scale 0.25 8.0 0.1
    toggle --status "Toggle this setting." --status-ru "Включает или выключает параметр «цвет по здоровью»." --live --name-ru "Цвет по здоровью" --items-ru "Нет|Да" "Color by health" ch_health
    range --status "Adjust this value." --status-ru "Настраивает значение «красный канал»." --live --name-ru "Красный канал" "Red channel" ch_red 0 1
    range --status "Adjust this value." --status-ru "Настраивает значение «зелёный канал»." --live --name-ru "Зелёный канал" "Green channel" ch_green 0 1
    range --status "Adjust this value." --status-ru "Настраивает значение «синий канал»." --live --name-ru "Синий канал" "Blue channel" ch_blue 0 1
    range --status "Adjust this value." --status-ru "Настраивает значение «альфа-канал»." --live --name-ru "Альфа-канал" "Alpha channel" ch_alpha 0 1
end

// ===========================================================================
// SECTION 5G — Controls & Weapon View
// ===========================================================================

begin g_controls
    title "Controls & Weapon View"
    title-ru "Управление и вид оружия"
    style --no-compact
    action --status "Open this menu section." --status-ru "Открывает раздел «настройка ввода»." --name-ru "Настройка ввода..." "Input setup..." pushmenu g_input
    action --status "Open this menu section." --status-ru "Открывает раздел «бинды клавиш»." --name-ru "Бинды клавиш..." "Key bindings..." pushmenu g_keys
    action --status "Open this menu section." --status-ru "Открывает раздел «бинды оружия»." --name-ru "Бинды оружия..." "Weapon bindings..." pushmenu g_weapons
    action --status "Open this menu section." --status-ru "Открывает раздел «Вид оружия и рука»." --q2prox --name-ru "Вид оружия и рука..." "Weapon view & hand..." pushmenu g_weapon_view
    action --status "Open this menu section." --status-ru "Открывает раздел «основы движения»." --q2prox --name-ru "Основы движения..." "Movement basics..." pushmenu g_movement_basics
    action --status "Open this menu section." --status-ru "Открывает раздел «мышь и зум»." --q2prox --name-ru "Мышь и зум..." "Mouse & zoom..." pushmenu q2prox_mouse
end

begin g_input
    title "Input Setup"
    title-ru "Настройка ввода"
    style --no-compact
    field --status "Edit this value." --status-ru "Редактирует значение «чувств. мыши»." --numeric --width 8 --name-ru "Чувств. мыши" "Mouse sens" sensitivity
    toggle --status "Toggle this setting." --status-ru "Включает или выключает параметр «авточувствительность»." --name-ru "Авточувствительность" --items-ru "Нет|Да" "Auto sens" m_autosens
    toggle --status "Toggle this setting." --status-ru "Включает или выключает параметр «фильтр мыши»." --name-ru "Фильтр мыши" --items-ru "Нет|Да" "Mouse filter" m_filter
    toggle --status "Toggle this setting." --status-ru "Включает или выключает параметр «свободный обзор»." --name-ru "Свободный обзор" --items-ru "Нет|Да" "Free look" freelook
    toggle --status "Toggle this setting." --status-ru "Включает или выключает параметр «всегда бег»." --name-ru "Всегда бег" --items-ru "Нет|Да" "Always run" cl_run
end

begin g_keys
    title "Key Bindings"
    title-ru "Привязки клавиш"
    style --no-compact
    bind --status "Bind a key for this action." --status-ru "Назначает клавишу для действия «атака»." --name-ru "Атака" "Attack" +attack
    bind --status "Bind a key for this action." --status-ru "Назначает клавишу для действия «следующее оружие»." --name-ru "Следующее оружие" "Next weapon" weapnext
    bind --status "Bind a key for this action." --status-ru "Назначает клавишу для действия «предыдущее оружие»." --name-ru "Предыдущее оружие" "Previous weapon" weapprev
    bind --status "Bind a key for this action." --status-ru "Назначает клавишу для действия «идти вперёд»." --name-ru "Идти вперёд" "Walk forward" +forward
    bind --status "Bind a key for this action." --status-ru "Назначает клавишу для действия «назад»." --name-ru "Назад" "Backpedal" +back
    bind --status "Bind a key for this action." --status-ru "Назначает клавишу для действия «бег»." --name-ru "Бег" "Run" +speed
    bind --status "Bind a key for this action." --status-ru "Назначает клавишу для действия «шаг влево»." --name-ru "Шаг влево" "Step left" +moveleft
    bind --status "Bind a key for this action." --status-ru "Назначает клавишу для действия «шаг вправо»." --name-ru "Шаг вправо" "Step right" +moveright
    bind --status "Bind a key for this action." --status-ru "Назначает клавишу для действия «вверх / прыжок»." --name-ru "Вверх / прыжок" "Up / jump" +moveup
    bind --status "Bind a key for this action." --status-ru "Назначает клавишу для действия «вниз / присесть»." --name-ru "Вниз / присесть" "Down / crouch" +movedown
    bind --status "Bind a key for this action." --status-ru "Назначает клавишу для действия «инвентарь»." --name-ru "Инвентарь" "Inventory" inven
    bind --status "Bind a key for this action." --status-ru "Назначает клавишу для действия «использовать предмет»." --name-ru "Использовать предмет" "Use item" invuse
    bind --status "Bind a key for this action." --status-ru "Назначает клавишу для действия «выбросить предмет»." --name-ru "Выбросить предмет" "Drop item" invdrop
    bind --status "Bind a key for this action." --status-ru "Назначает клавишу для действия «пред. предмет»." --name-ru "Пред. предмет" "Prev item" invprev
    bind --status "Bind a key for this action." --status-ru "Назначает клавишу для действия «след. предмет»." --name-ru "След. предмет" "Next item" invnext
    bind --status "Bind a key for this action." --status-ru "Назначает клавишу для действия «компьютер помощи»." --name-ru "Компьютер помощи" "Help computer" help
    bind --status "Bind a key for this action." --status-ru "Назначает клавишу для действия «пауза»." --name-ru "Пауза" "Pause game" pause
    bind --status "Bind a key for this action." --status-ru "Назначает клавишу для действия «таблица счёта»." --name-ru "Таблица счёта" "Scoreboard" score
    bind --status "Bind a key for this action." --status-ru "Назначает клавишу для действия «чат»." --name-ru "Чат" "Chat" messagemode
    blank
    action --status "Open this menu section." --status-ru "Открывает раздел «классические бинды»." --align --name-ru "Классические бинды..." "Legacy keys..." pushmenu g_legacykeys
end

begin g_legacykeys
    title "Legacy Key Bindings"
    title-ru "Классические привязки клавиш"
    style --no-compact
    bind --status "Bind a key for this action." --status-ru "Назначает клавишу для действия «поворот влево»." --name-ru "Поворот влево" "Turn left" +left
    bind --status "Bind a key for this action." --status-ru "Назначает клавишу для действия «поворот вправо»." --name-ru "Поворот вправо" "Turn right" +right
    bind --status "Bind a key for this action." --status-ru "Назначает клавишу для действия «шаг вбок»." --name-ru "Шаг вбок" "Sidestep" +strafe
    bind --status "Bind a key for this action." --status-ru "Назначает клавишу для действия «смотреть вверх»." --name-ru "Смотреть вверх" "Look up" +lookup
    bind --status "Bind a key for this action." --status-ru "Назначает клавишу для действия «смотреть вниз»." --name-ru "Смотреть вниз" "Look down" +lookdown
    bind --status "Bind a key for this action." --status-ru "Назначает клавишу для действия «центрировать вид»." --name-ru "Центрировать вид" "Center view" centerview
    bind --status "Bind a key for this action." --status-ru "Назначает клавишу для действия «обзор мышью»." --name-ru "Обзор мышью" "Mouse look" +mlook
    bind --status "Bind a key for this action." --status-ru "Назначает клавишу для действия «обзор клавиатурой»." --name-ru "Обзор клавиатурой" "Keyboard look" +klook
end

begin g_weapons
    title "Weapon Bindings"
    title-ru "Привязки оружия"
    style --no-compact
    bind --status "Bind a key for this action." --status-ru "Назначает клавишу для действия «бластер»." --name-ru "Бластер" "Blaster" "use Blaster"
    bind --status "Bind a key for this action." --status-ru "Назначает клавишу для действия «дробовик»." --name-ru "Дробовик" "Shotgun" "use Shotgun"
    bind --status "Bind a key for this action." --status-ru "Назначает клавишу для действия «супердробовик»." --name-ru "Супердробовик" "Super shotgun" "use Super Shotgun"
    bind --status "Bind a key for this action." --status-ru "Назначает клавишу для действия «пулемёт»." --name-ru "Пулемёт" "Machinegun" "use Machinegun"
    bind --status "Bind a key for this action." --status-ru "Назначает клавишу для действия «чейнган»." --name-ru "Чейнган" "Chaingun" "use Chaingun"
    bind --status "Bind a key for this action." --status-ru "Назначает клавишу для действия «гранатомёт»." --name-ru "Гранатомёт" "Grenade launcher" "use Grenade Launcher"
    bind --status "Bind a key for this action." --status-ru "Назначает клавишу для действия «ракетница»." --name-ru "Ракетница" "Rocket launcher" "use Rocket Launcher"
    bind --status "Bind a key for this action." --status-ru "Назначает клавишу для действия «гипербластер»." --name-ru "Гипербластер" "Hyperblaster" "use HyperBlaster"
    bind --status "Bind a key for this action." --status-ru "Назначает клавишу для действия «Railgun»." --name-ru "Railgun" "Railgun" "use Railgun"
    bind --status "Bind a key for this action." --status-ru "Назначает клавишу для действия «BFG10K»." --name-ru "BFG10K" "Bfg10k" "use BFG10K"
    bind --status "Bind a key for this action." --status-ru "Назначает клавишу для действия «гранаты»." --name-ru "Гранаты" "Grenades" "use Grenades"
end

begin g_weapon_view
    title "Weapon View & Hand"
    title-ru "Вид оружия и рука"
    style --no-compact
    values --live --status "hand: server-authoritative hand (affects projectile spawn)" --status-ru "Выбирает значение «рука (сервер)»." --name-ru "Рука (сервер)" --items-ru "Справа|Слева|Центр" "Hand (server)" hand right left center
    values --live --status "cl_gun: view-weapon visibility (0=off, 1=normal, 2=centered model)" --status-ru "Выбирает значение «модель оружия»." --name-ru "Модель оружия" --items-ru "Выкл.|Вкл.|По центру" "View weapon" cl_gun off on centered
    range --live --precision 2 --status "cl_gunalpha: view-weapon opacity" --status-ru "Настраивает значение «прозрачность оружия»." --name-ru "Прозрачность оружия" "View weapon alpha" cl_gunalpha 0 1 0.05
    range --live --precision 0 --status "cl_gunfov: view-weapon FOV override (90=default)" --status-ru "Настраивает значение «FOV оружия»." --name-ru "FOV оружия" "View weapon FOV" cl_gunfov 60 120 5
    range --live --precision 1 --status "cl_gun_x: forward offset" --status-ru "Настраивает значение «оружие X»." --name-ru "Оружие X" "View weapon X" cl_gun_x -10 10 0.5
    range --live --precision 1 --status "cl_gun_y: right offset" --status-ru "Настраивает значение «оружие Y»." --name-ru "Оружие Y" "View weapon Y" cl_gun_y -10 10 0.5
    range --live --precision 1 --status "cl_gun_z: up offset" --status-ru "Настраивает значение «оружие Z»." --name-ru "Оружие Z" "View weapon Z" cl_gun_z -10 10 0.5
end

begin g_movement_basics
    title "Movement Basics"
    title-ru "Базовое движение"
    style --no-compact
    values --status "cl_mouse_behavior_mode: global mouse feel. q2pro = current default (raw input + m_accel + m_autosens). r1q2 = compatibility (classic transform, R1Q2 lookstrafe; backend from m_directinput: 0=legacy, 1/2=DI-like relative)" --status-ru "Выбирает значение «поведение мыши»." --name-ru "Поведение мыши" --items-ru "Q2PRO|R1q2" "Mouse behavior" cl_mouse_behavior_mode q2pro r1q2
    values --status "cl_movement_feel_mode: client command timing (r1q2-like = classic)" --status-ru "Выбирает значение «ощущение движения»." --name-ru "Ощущение движения" --items-ru "Q2PRO|Как r1q2" "Movement feel" cl_movement_feel_mode q2pro r1q2-like
    values --status "cl_predict_move_mode: client prediction backend" --status-ru "Выбирает значение «предикт клиента»." --name-ru "Предикт клиента" --items-ru "Современный (Q2PRO/Q2PRO-X)|Классический q2pro-m/r1826" "Client predict" cl_predict_move_mode "modern (new q2pro/Q2PRO-X)" "legacy (q2pro-m/q2pro r1826)"
    values --status "cl_step_smoothing_mode: local stair-step feel" --status-ru "Выбирает значение «сглаживание ступеней»." --name-ru "Сглаживание ступеней" --items-ru "Q2PRO|R1q2: 1|R1q2: 2|R1q2: 3" "Step smoothing" cl_step_smoothing_mode q2pro r1q2-1 r1q2-2 r1q2-3
    toggle --status "cl_fixedmove: normalize movement to 10 ms command clock" --status-ru "Включает или выключает параметр «фиксированный шаг движения»." --name-ru "Фиксированный шаг движения" --items-ru "Нет|Да" "Fixed move" cl_fixedmove
    toggle --q2prox --status "cl_fixedmove_wait_mode: gameplay wait aliases advance on fixedmove's 10 ms movement ticks instead of render frames. Recommended with fixedmove; turn off only for legacy script timing. Default ON." --status-ru "Заставляет gameplay wait-алиасы тикать по 10 мс шагам fixedmove, а не по render frame. Рекомендуется вместе с fixedmove; выключайте только для старого тайминга скриптов. По умолчанию ВКЛ." --name-ru "Wait по fixedmove" --items-ru "Нет|Да" "Fixedmove-aware wait" cl_fixedmove_wait_mode
    toggle --q2prox --status "cl_fixedmove_wait_debug: per-sub-cmd diagnostics for the fixedmove-aware wait path (wait count, queue size, drain flag, upmove). Level 1 = only interesting sub-cmds, 2 = verbose." --status-ru "Диагностика per-sub-cmd для пути fixedmove-aware wait (счётчик wait, размер очереди, флаг DRAIN, upmove). 1 = только интересные sub-cmd, 2 = verbose." --name-ru "Отладка wait fixedmove" --items-ru "Нет|Да" "Fixedmove wait debug" cl_fixedmove_wait_debug
    values --status "cl_predict_player: local jump/fall prediction. When cl_predict_ping_min_ms > 0, also gated by the shared adaptive ping gate." --status-ru "Выбирает значение «предикт игрока»." --name-ru "Предикт игрока" --items-ru "Выкл.|Вкл.|Отладка" "Predict player" cl_predict_player off on debug
    blank
    action --align --status "Print resolved movement feel state" --status-ru "Выполняет действие «инфо об ощущении движения»." --name-ru "Инфо об ощущении движения..." "Movement feel info..." movementfeel_info
end

// ===========================================================================
// SECTION 5G.1 — Mouse & Zoom (hold-to-zoom + mouse basics)
// ===========================================================================

begin q2prox_mouse
    title "Q2PRO-X / Mouse & Zoom"
    title-ru "Q2PRO-X / Мышь и зум"
    style --no-compact
    // Q2PRO-X 2026-05-15 — base `fov` row (Player category candidate
    // for the global preferences migration).  Server-visible cvar;
    // enabling cl_q2prox_cfg_global_pref_player + master makes this
    // one value apply across all mods.
    range --live --precision 0 --status "fov: horizontal field of view (degrees). 90 = stock Q2 default, 100..110 popular for wide monitors. Server-visible userinfo cvar — affects what the server reports as your FOV." --status-ru "Настраивает значение «горизонтальный угол обзора» (в градусах). 90 = классическое значение, 100..110 популярно для широких мониторов. Это userinfo-cvar — передаётся серверу." --name-ru "Угол обзора (FOV)" "Field of view" fov 60 130 1
    blank
    values --live --status "cl_mouse_behavior_mode: global mouse feel (q2pro default / r1q2 compat)" --status-ru "Выбирает значение «поведение мыши»." --name-ru "Поведение мыши" --items-ru "Q2PRO|R1q2" "Mouse behavior" cl_mouse_behavior_mode q2pro r1q2
    range --live --precision 2 --status "sensitivity: base mouse sensitivity multiplier" --status-ru "Настраивает значение «чувствительность»." --name-ru "Чувствительность" "Sensitivity" sensitivity 0.1 30 0.1
    range --live --precision 3 --status "m_pitch: vertical mouse gain (negative = invert Y)" --status-ru "Настраивает значение «вертикальное усиление»." --name-ru "Вертикальное усиление" "Pitch gain" m_pitch -0.5 0.5 0.001
    range --live --precision 3 --status "m_yaw: horizontal mouse gain" --status-ru "Настраивает значение «горизонтальное усиление»." --name-ru "Горизонтальное усиление" "Yaw gain" m_yaw 0 0.5 0.001
    range --live --precision 2 --status "m_accel: Q2PRO-X mouse acceleration (no effect in r1q2 mode)" --status-ru "Настраивает значение «ускорение мыши»." --name-ru "Ускорение мыши" "Mouse accel" m_accel 0 1 0.05
    toggle --live --status "m_filter: smooth raw delta by averaging with the previous frame" --status-ru "Включает или выключает параметр «фильтр мыши»." --name-ru "Фильтр мыши" --items-ru "Нет|Да" "Mouse filter" m_filter
    range --live --precision 0 --status "m_autosens: non-zoom FOV-proportional sens scaling (q2pro mouse path only). 0=OFF; 91..179 set base FOV; any other non-zero = base 90. Separate from +zoom." --status-ru "Настраивает значение «базовый FOV авточувствительности»." --name-ru "Базовый FOV авточувствительности" "Baseline auto-sens FOV" m_autosens 0 179 1
    toggle --live --status "freelook: free mouse look always on (no hold-mlook required)" --status-ru "Включает или выключает параметр «свободный обзор»." --name-ru "Свободный обзор" --items-ru "Нет|Да" "Freelook" freelook
    blank
    range --live --precision 0 --status "cl_zoom_fov: horizontal FOV while +zoom is held. Clamped to never exceed the live base FOV — zoom-IN only." --status-ru "Настраивает значение «FOV зума»." --name-ru "FOV зума" "Zoom FOV" cl_zoom_fov 10 110 1
    values --live --status "cl_zoom_sensitivity_mode: auto uses tangent-space FOV ratios (geometrically correct); manual uses the cvar below" --status-ru "Выбирает значение «режим чувствительности зума»." --name-ru "Режим чувствительности зума" --items-ru "Авто|Ручной" "Zoom sens mode" cl_zoom_sensitivity_mode auto manual
    range --live --precision 2 --status "cl_zoom_sensitivity: full-zoom sensitivity (same units as `sensitivity`). Used only in manual mode." --status-ru "Настраивает значение «чувствительность зума (ручная)»." --name-ru "Чувствительность зума (ручная)" "Zoom sens (manual)" cl_zoom_sensitivity 0.1 30 0.1
    range --live --precision 2 --status "cl_zoom_time: in/out transition duration (sec). 0 = instant. Drives FOV + sensitivity from the SAME transition so they never desync." --status-ru "Настраивает значение «время зума (сек)»." --name-ru "Время зума (сек)" "Zoom time (sec)" cl_zoom_time 0 1.0 0.05
    blank
    toggle --live --status "cl_zoom_walk: hold +speed together with +zoom (walk while zoomed). Coexists with a real +speed bind. Off by default." --status-ru "Включает или выключает параметр «ходьба при зуме»." --name-ru "Ходьба при зуме" --items-ru "Нет|Да" "Walk while zoomed" cl_zoom_walk
    blank
    toggle --live --status "cl_zoom_crosshair_enable: use the zoom crosshair below while +zoom is held. Off = base crosshair stays. Instant swap." --status-ru "Включает или выключает параметр «зум-прицел»." --name-ru "Зум-прицел" --items-ru "Нет|Да" "Zoom crosshair" cl_zoom_crosshair_enable
    values --live --status "cl_zoom_crosshair: style while zoomed (only if master on)" --status-ru "Выбирает значение «стиль зума»." --name-ru "Стиль зума" --items-ru "Нет|Крест|Точка|Угол" "Zoom style" cl_zoom_crosshair none cross dot angle
    range --live --precision 1 --status "cl_zoom_ch_scale: zoom crosshair scale, 0.25..8.0 step 0.1." --status-ru "Настраивает значение «масштаб зума» (0.25..8.0, шаг 0.1)." --name-ru "Масштаб зума" "Zoom scale" cl_zoom_ch_scale 0.25 8.0 0.1
    toggle --live --status "cl_zoom_ch_health: color zoom crosshair by current health" --status-ru "Включает или выключает параметр «цвет зума по здоровью»." --name-ru "Цвет зума по здоровью" --items-ru "Нет|Да" "Zoom color by health" cl_zoom_ch_health
    range --live --precision 2 --status "cl_zoom_ch_red: red (ignored if color by health)" --status-ru "Настраивает значение «красный зум»." --name-ru "Красный зум" "Zoom red" cl_zoom_ch_red 0 1 0.05
    range --live --precision 2 --status "cl_zoom_ch_green: green (ignored if color by health)" --status-ru "Настраивает значение «зелёный зум»." --name-ru "Зелёный зум" "Zoom green" cl_zoom_ch_green 0 1 0.05
    range --live --precision 2 --status "cl_zoom_ch_blue: blue (ignored if color by health)" --status-ru "Настраивает значение «синий зум»." --name-ru "Синий зум" "Zoom blue" cl_zoom_ch_blue 0 1 0.05
    range --live --precision 2 --status "cl_zoom_ch_alpha: alpha of zoom crosshair" --status-ru "Настраивает значение «прозрачность зума»." --name-ru "Прозрачность зума" "Zoom alpha" cl_zoom_ch_alpha 0 1 0.05
    blank
    bind --status "Hold to zoom to cl_zoom_fov; release to zoom back to the live base FOV" --status-ru "Назначает клавишу для действия «удерживать: зум»." --name-ru "Удерживать: зум" "Hold: zoom" +zoom
end

// ===========================================================================
// SECTION 5H — Visibility & Visuals
// ===========================================================================

begin g_visibility
    title "Visibility & Visuals"
    title-ru "Видимость и эффекты"
    style --no-compact
    action --status "Open visibility presets: combined AVFX weather, item/player/weapon highlights, weapon visual FX, bloom/fog/post and selected GL renderer values. Presets are editable cfg files under baseq2/q2pro-x/visual_presets." --status-ru "Открывает пресеты видимости: AVFX-погода, подсветки предметов/игроков/оружия, визуальные эффекты оружия, bloom/fog/post и выбранные GL-настройки. Пресеты лежат как cfg-файлы в baseq2/q2pro-x/visual_presets и могут правиться вручную." --q2prox --name-ru "Пресеты видимости..." "Visibility presets..." pushmenu q2prox_vis_presets
    blank
    action --status "Open this menu section." --status-ru "Открывает раздел «Подсветка видимости»." --q2prox --name-ru "Подсветка видимости..." "Visibility highlights..." pushmenu q2prox_vis
    action --status "Open this menu section." --status-ru "Открывает раздел «Частицы и видимость эффектов»." --name-ru "Частицы и видимость эффектов..." "Particles & effect visibility..." pushmenu g_particles
    action --status "Open this menu section." --status-ru "Открывает раздел «настроить след Railgun»." --name-ru "Настроить след Railgun..." "Rail trail setup..." pushmenu g_railtrail
    action --status "Open this menu section." --status-ru "Открывает раздел «визуальные эффекты»." --q2prox --name-ru "Визуальные эффекты..." "Visual effects..." pushmenu q2prox_vfx
end

begin g_particles
    title "Particles & Effect Visibility"
    title-ru "Частицы и видимость эффектов"
    style --no-compact
    toggle --status "Toggle this setting." --status-ru "Включает или выключает параметр «частицы»." --live --name-ru "Частицы" --items-ru "Нет|Да" "Particles" cl_particles
    blank
    toggle --live --status "cl_disable_particles bit 0: yes = grenade explosion particles visible" --status-ru "Включает или выключает параметр «граната взрыв частицы»." --name-ru "Граната взрыв частицы" --items-ru "Нет|Да" "Grenade explosion particles" cl_disable_particles ~0
    toggle --live --status "cl_disable_particles bit 1: yes = grenade trail particles visible" --status-ru "Включает или выключает параметр «частицы следа гранаты»." --name-ru "Частицы следа гранаты" --items-ru "Нет|Да" "Grenade trail particles" cl_disable_particles ~1
    toggle --live --status "cl_disable_particles bit 2: yes = rocket explosion particles visible" --status-ru "Включает или выключает параметр «ракета взрыв частицы»." --name-ru "Ракета взрыв частицы" --items-ru "Нет|Да" "Rocket explosion particles" cl_disable_particles ~2
    toggle --live --status "cl_disable_particles bit 3: yes = rocket trail particles visible" --status-ru "Включает или выключает параметр «частицы следа ракеты»." --name-ru "Частицы следа ракеты" --items-ru "Нет|Да" "Rocket trail particles" cl_disable_particles ~3
    toggle --live --status "cl_disable_particles bit 4: yes = blood particles visible" --status-ru "Включает или выключает параметр «кровь частицы»." --name-ru "Кровь частицы" --items-ru "Нет|Да" "Blood particles" cl_disable_particles ~4
    toggle --live --status "cl_own_blood: Q2PRO-X local filter for blood caused by hits on the local player" --status-ru "Включает или выключает параметр «своя кровь»." --name-ru "Своя кровь" --items-ru "Нет|Да" "Own blood" cl_own_blood
    toggle --live --status "cl_disable_particles bit 5: yes = blaster trail particles visible" --status-ru "Включает или выключает параметр «частицы следа бластера»." --name-ru "Частицы следа бластера" --items-ru "Нет|Да" "Blaster trail particles" cl_disable_particles ~5
    blank
    toggle --live --status "cl_disable_explosions bit 0: yes = grenade explosion sprites visible" --status-ru "Включает или выключает параметр «граната взрыв спрайты»." --name-ru "Граната взрыв спрайты" --items-ru "Нет|Да" "Grenade explosion sprites" cl_disable_explosions ~0
    toggle --live --status "cl_disable_explosions bit 1: yes = rocket explosion sprites visible" --status-ru "Включает или выключает параметр «ракета взрыв спрайты»." --name-ru "Ракета взрыв спрайты" --items-ru "Нет|Да" "Rocket explosion sprites" cl_disable_explosions ~1
    blank
    toggle --live --status "gl_waterwarp: screen warp under water" --status-ru "Включает или выключает параметр «искажение воды»." --name-ru "Искажение воды" --items-ru "Нет|Да" "Water warp" gl_waterwarp
end

begin g_railtrail
    title "Rail Trail Setup"
    title-ru "Настройка следа Railgun"
    style --no-compact
    values --status "Choose this value." --status-ru "Выбирает значение «тип следа Railgun»." --live --name-ru "Тип следа Railgun" --items-ru "По умолчанию|Только ядро|Ядро и спираль" "Rail trail type" cl_railtrail_type "default" "core only" "core and spiral"
    range --status "Adjust this value." --status-ru "Настраивает значение «длительность»." --live --name-ru "Длительность" "Duration" cl_railtrail_time 0.1 3.0 0.1
    range --status "Adjust this value." --status-ru "Настраивает значение «ширина ядра»." --live --name-ru "Ширина ядра" "Core width" cl_railcore_width 1 6 1
    range --status "Adjust this value." --status-ru "Настраивает значение «радиус спирали»." --live --name-ru "Радиус спирали" "Spiral radius" cl_railspiral_radius 1 6 1
    strings --status "Choose this value." --status-ru "Выбирает значение «цвет ядра»." --live --name-ru "Цвет ядра" --items-ru "Чёрный|Красный|Зелёный|Жёлтый|Синий|Циан|Маджента|Белый" "Core color" cl_railcore_color black red green yellow blue cyan magenta white
    strings --status "Choose this value." --status-ru "Выбирает значение «цвет спирали»." --live --name-ru "Цвет спирали" --items-ru "Чёрный|Красный|Зелёный|Жёлтый|Синий|Циан|Маджента|Белый" "Spiral color" cl_railspiral_color black red green yellow blue cyan magenta white
end

// ===========================================================================
// SECTION 5I — Skins & Models
// ===========================================================================

begin g_skins
    title "Skins & Models"
    title-ru "Скины и модели"
    style --no-compact
    /* Q2PRO-X 2026-05-16 — two entries for player setup:
     *   - Q2PRO-X DSL rows: name / skin / hand / fov / cl_noskins
     *     edited via DSL widgets (Player-category candidates for the
     *     global preferences migration);
     *   - built-in `players` page with the 3D model preview, after the
     *     2026-05-16 ghost-trail + adaptive layout + RDF_NOWORLDMODEL
     *     postprocess isolation fixes (see TZ
     *     tz_2026-05-15_player_setup_preview_ghost_trail_ru.md). */
    action --q2prox --status "Edit name / skin / handedness / fov via Q2PRO-X DSL rows." --status-ru "Открывает раздел «настройка игрока (Q2PRO-X)»." --name-ru "Настройка игрока (Q2PRO-X)" "Player setup (Q2PRO-X)" pushmenu q2prox_player_identity
    action --status "Built-in player setup page with the 3D player model preview." --status-ru "Встроенная страница «настройка игрока» с 3D-превью модели." --name-ru "Настройка игрока (3D-превью)" "Player setup (3D preview)" pushmenu players
    blank
    toggle --live --status "cl_noskins: disable custom player skins" --status-ru "Включает или выключает параметр «без своих скинов»." --name-ru "Без своих скинов" --items-ru "Нет|Да" "No custom skins" cl_noskins
    toggle --live --status "cl_vwep: show visible weapons on player models" --status-ru "Включает или выключает параметр «видимое оружие игроков»." --name-ru "Видимое оружие игроков" --items-ru "Нет|Да" "Visible weapons on players" cl_vwep
    blank
    // Q2PRO-X 2026-05-15 — mod-local player skin override (per TZ
    // tz_2026-05-13_mod_local_player_skin_override_openffa_dm_ru.md).
    // Settings persist per active mod via CVAR_Q2PROXCFG_LOCAL →
    // <gamedir>/q2pro-x/q2pro-x.cfg. Server userinfo and
    // CS_PLAYERSKINS are untouched; other clients don't see it.
    toggle --q2prox --live --status "cl_mod_skin_override: local-only player skin substitution. When on, the local renderer and local sexed-sound resolver can use a chosen model/skin for the local player and/or everyone else. Server userinfo and other clients are unaffected. Saved per mod (OpenFFA/OpenTDM/baseq2 keep separate values)." --status-ru "Включает локальную подстановку скинов игроков. Когда включено, локальный рендер и локальный sexed-sound resolver могут использовать выбранную модель/скин для своего игрока и/или всех остальных. Серверный userinfo и другие клиенты не затрагиваются. Сохраняется на уровне мода (OpenFFA/OpenTDM/baseq2 хранят раздельно)." --name-ru "Локальный override скинов" --items-ru "Нет|Да" "Mod skin override" cl_mod_skin_override
    pairs --q2prox --live --status "cl_mod_skin_override_self: model/skin shown and heard locally for the LOCAL player. Empty = keep real server skin and sounds." --status-ru "Скин, который локально показывается и озвучивается для СВОЕГО игрока. Пусто = оставить реальный серверный скин и звуки." --name-ru "Свой скин" --items-ru "Реальный серверный|female / athena|female / voodoo|female / jezebel|male / grunt|male / cipher|male / death|cyborg / oni911" "Self skin" cl_mod_skin_override_self "Real server skin" "" "female / athena" "female/athena" "female / voodoo" "female/voodoo" "female / jezebel" "female/jezebel" "male / grunt" "male/grunt" "male / cipher" "male/cipher" "male / death" "male/death" "cyborg / oni911" "cyborg/oni911"
    pairs --q2prox --live --status "cl_mod_skin_override_others: model/skin shown and heard locally for ALL OTHER players. Empty = keep real server skins and sounds." --status-ru "Скин, который локально показывается и озвучивается для ВСЕХ ОСТАЛЬНЫХ игроков. Пусто = оставить реальные серверные скины и звуки." --name-ru "Скин остальных" --items-ru "Реальные серверные|female / athena|female / voodoo|female / jezebel|male / grunt|male / cipher|male / death|cyborg / oni911" "Others skin" cl_mod_skin_override_others "Real server skin" "" "female / athena" "female/athena" "female / voodoo" "female/voodoo" "female / jezebel" "female/jezebel" "male / grunt" "male/grunt" "male / cipher" "male/cipher" "male / death" "male/death" "cyborg / oni911" "cyborg/oni911"
    action --q2prox --align --status "Preset: enable override, set self=female/athena, others=male/grunt (OpenFFA DM look)" --status-ru "Пресет: включить override, я = female/athena, остальные = male/grunt (OpenFFA DM сценарий)." --name-ru "Пресет: я female, остальные male" "Preset: me female, others male" "set cl_mod_skin_override 1; set cl_mod_skin_override_self female/athena; set cl_mod_skin_override_others male/grunt"
    action --q2prox --align --status "Clear self/others override values (keeps master toggle)" --status-ru "Очищает значения self/others (master toggle остаётся)." --name-ru "Очистить значения override" "Clear override values" "reset cl_mod_skin_override_self; reset cl_mod_skin_override_others"
    action --q2prox --align --status "Print current mod skin override state and resolved assets to the console." --status-ru "Печатает в консоль текущее состояние mod skin override и найденные ассеты." --name-ru "Статус override..." "Override status..." mso_status
    blank
    action --align --status "Download toggles for skins / models / textures" --status-ru "Открывает раздел «загрузки»." --name-ru "Загрузки..." "Download options..." pushmenu g_downloads
    action --q2prox --align --status "Open the mod command overlay for mod-specific skin commands (teamskin, eskin, etc.)" --status-ru "Открывает раздел «оверлей команд мода»." --name-ru "Оверлей команд мода..." "Mod command overlay..." pushmenu q2prox_modhelp
end

begin g_downloads
    title "Downloads"
    title-ru "Загрузки"
    style --no-compact
    toggle --status "Toggle this setting." --status-ru "Включает или выключает параметр «разрешить загрузки»." --live --name-ru "Разрешить загрузки" --items-ru "Нет|Да" "Allow downloading" allow_download
    toggle --status "Toggle this setting." --status-ru "Включает или выключает параметр «карты»." --live --name-ru "Карты" --items-ru "Нет|Да" "Maps" allow_download_maps
    toggle --status "Toggle this setting." --status-ru "Включает или выключает параметр «модели игроков / скины»." --live --name-ru "Модели игроков / скины" --items-ru "Нет|Да" "Player models / skins" allow_download_players
    toggle --status "Toggle this setting." --status-ru "Включает или выключает параметр «модели»." --live --name-ru "Модели" --items-ru "Нет|Да" "Models" allow_download_models
    toggle --status "Toggle this setting." --status-ru "Включает или выключает параметр «текстуры»." --live --name-ru "Текстуры" --items-ru "Нет|Да" "Textures" allow_download_textures
    toggle --status "Toggle this setting." --status-ru "Включает или выключает параметр «звуки»." --live --name-ru "Звуки" --items-ru "Нет|Да" "Sounds" allow_download_sounds
    toggle --status "Toggle this setting." --status-ru "Включает или выключает параметр «картинки»." --live --name-ru "Картинки" --items-ru "Нет|Да" "Pics" allow_download_pics
    blank
    toggle --status "Toggle this setting." --status-ru "Включает или выключает параметр «HTTP-загрузки»." --live --name-ru "HTTP-загрузки" --items-ru "Нет|Да" "HTTP downloads" cl_http_downloads
end

// ===========================================================================
// SECTION 5K — Advanced Q2PRO-X (power-user landing)
// ===========================================================================

begin g_advanced
    title "Advanced Q2PRO-X"
    title-ru "Продвинутые Q2PRO-X"
    style --no-compact
    action --status "Adaptive prediction-error smoothing, HUD, tuning weights" --status-ru "Открывает раздел «laghax»." --name-ru "Laghax" "Laghax" pushmenu q2prox_laghax
    action --status "Ghost weapon prediction toggles and debug" --status-ru "Открывает раздел «предикт оружия»." --name-ru "Предикт оружия" "Weapon predicts" pushmenu q2prox_predict
    action --status "Predict-aware visual-only filter for muzzle, projectiles, impacts, explosions" --status-ru "Открывает раздел «видимость частей оружия»." --name-ru "Видимость частей оружия" "Weapon parts visibility" pushmenu q2prox_weaponfx
    action --status "Movement feel, predict mode, step smoothing, fixed move" --status-ru "Открывает раздел «движение и игрок»." --name-ru "Движение и игрок" "Movement & player" pushmenu q2prox_movement
    action --status "Display backend, desktop fullscreen, render scale" --status-ru "Открывает раздел «вывод и захват экрана»." --name-ru "Вывод и захват экрана" "Display & capture" pushmenu q2prox_video
    action --status "OpenAL profile, HRTF, reverb, runtime sound actions" --status-ru "Открывает раздел «Звук и акустика»." --name-ru "Звук и акустика" "Sound & acoustics" pushmenu q2prox_sound
    action --status "Headphone binaural 3D sound" --status-ru "Открывает раздел «бинауральный / 3D»." --name-ru "Бинауральный / 3D" "Binaural / 3D" pushmenu q2prox_binaural
    action --status "Per-weapon and per-category volumes" --status-ru "Открывает раздел «громкость звука»." --name-ru "Громкость звука" "Sound volumes" pushmenu q2prox_weaponvol
    action --status "Modern server browser overlay settings" --status-ru "Открывает раздел «браузер серверов»." --name-ru "Браузер серверов" "Server browser" pushmenu q2prox_serverbrowser
    action --status "Modern demo browser overlay: searchable library backed by a central demo index" --status-ru "Открывает раздел «браузер демок»." --name-ru "Браузер демок" "Demo browser" pushmenu q2prox_demobrowser
    action --status "Modern demo player overlay: play/pause, seek, draggable timeline, .mvd2-aware extras" --status-ru "Открывает раздел «проигрыватель демо»." --name-ru "Проигрыватель демо" "Demo player" pushmenu q2prox_demoplayer
    action --status "Advanced networking: client UDP source port auto-probe" --status-ru "Открывает раздел «сеть: расширенно»." --name-ru "Сеть: расширенно" "Advanced network" pushmenu q2prox_advanced_network
    action --status "Mod command overlay (OpenTDM/OpenFFA)" --status-ru "Открывает раздел «оверлей мода»." --name-ru "Оверлей мода" "Mod overlay" pushmenu q2prox_modhelp
    action --status "Passive same-team HUD for OpenTDM: teammate H/A/P, weapon, freshness" --status-ru "Открывает раздел «командный HUD OpenTDM»." --name-ru "Командный HUD OpenTDM" "OpenTDM team HUD" pushmenu q2prox_opentdm_teamhud
    action --status "Item / player visibility highlighting" --status-ru "Открывает раздел «видимость / подсветка»." --name-ru "Видимость / подсветка" "Visibility / highlights" pushmenu q2prox_vis
    action --status "Useful command binds, weapon drop modifier, macros" --status-ru "Открывает раздел «скрипты / бинды»." --name-ru "Скрипты / бинды" "Scripts / binds" pushmenu q2prox_scripts
end

// ===========================================================================
// SECTION 5L — Config & Files
// ===========================================================================

begin g_config
    title "Config & Files"
    title-ru "Конфиг и файлы"
    style --no-compact
    toggle --live --status "cl_q2prox_cfg_autosave: autosave Q2PRO-X config on menu changes (both scopes)" --status-ru "Включает или выключает параметр «автосохранение конфига»." --name-ru "Автосохранение конфига" --items-ru "Нет|Да" "Autosave config" cl_q2prox_cfg_autosave
    // Q2PRO-X 2026-05-15 — global preferences migration entry point.
    // The full configuration (master + 5 category toggles + Info /
    // Migrate actions) lives in the q2prox_global_prefs submenu to
    // keep this Config & Files screen tidy.  See TZ
    // tz_2026-05-13_global_interface_config_migration_ru.md.
    action --q2prox --align --status "Master + per-category toggles for sharing UI / player / network / video / audio cvars across all mods via baseq2/q2pro-x/q2pro-x.cfg.  Master default OFF." --status-ru "Главный переключатель и переключатели категорий: единые UI / игрок / сеть / видео / звук cvar'ы во всех модах через baseq2/q2pro-x/q2pro-x.cfg.  По умолчанию ВЫКЛ." --name-ru "Единые настройки Q2PRO-X..." "Global Q2PRO-X preferences..." pushmenu q2prox_global_prefs
    toggle --live --status "cl_altf4_exit: Alt+F4 quits the game" --status-ru "Включает или выключает параметр «выход по Alt+F4»." --name-ru "Выход по Alt+F4" --items-ru "Нет|Да" "Alt+F4 quit" cl_altf4_exit
    blank
    pairs --status "cl_q2prox_menu_mode: 0 = classic/additive (q2pro.menu + q2pro-x/*.menu + inject), 1 = guided/standalone (q2pro-x.menu2 only, default for Q2PRO-X 1.2 clean installs). Takes effect after restart." --status-ru "Выбирает значение «режим меню (нужен рестарт)»." --name-ru "Режим меню (нужен рестарт)" --items-ru "Классический|Проводник" "Menu mode (restart required)" cl_q2prox_menu_mode "Classic" 0 "Guided" 1
    blank
    pairs --q2prox --status "cl_console_utf8_ru: Russian display-localization baseline. auto = ON for Russian Windows, off = English/legacy, on = forced Russian. Display-only — does NOT enable Russian console input." --status-ru "Выбирает значение «русская локализация отображения»." --name-ru "Русская локализация отображения" --items-ru "Авто|Выкл.|Вкл." "Russian display localization" cl_console_utf8_ru "Auto" -1 "Off" 0 "On" 1
    pairs --q2prox --status "cl_menu_utf8_ru: game menu language override. inherit = follow Russian display localization, English = force English menu, Russian = force Russian menu." --status-ru "Выбирает значение «язык игрового меню»." --name-ru "Язык игрового меню" --items-ru "Как глобально|Английский|Русский" "Game menu language" cl_menu_utf8_ru "Inherit global" -1 "English" 0 "Russian" 1
    pairs --q2prox --live --status "cl_menu_font_mode: game menu typography. legacy = stock conchars 8x8, Jost = proportional smooth Jost Medieval Bold (menu-only). Console/HUD/browsers unaffected." --status-ru "Выбирает значение «шрифт меню»." --name-ru "Шрифт меню" --items-ru "Классический|Jost Medieval" "Menu font" cl_menu_font_mode "Legacy" 0 "Jost Medieval" 1
    pairs --q2prox --live --status "cl_menu_visual_style: visual renderer for script menus. legacy = old text-and-bitmap renderer, modern = Q2PRO-X modern chrome (logo, focus strip, modern slider, soft shadows). Live switch; does not change menu mode." --status-ru "Выбирает значение «стиль меню»." --name-ru "Стиль меню" --items-ru "Классический|Современный" "Menu visual style" cl_menu_visual_style "Legacy" 0 "Modern" 1
    toggle --q2prox --live --status "cl_menu_modern_autoscale: when menu visual style is modern and ui_scale is auto/0, fit the menu into the current content rect automatically. Manual ui_scale always wins." --status-ru "Включает автоподгонку современного меню под текущее разрешение, когда масштаб меню = авто." --name-ru "Автоподгонка современного меню" --items-ru "Нет|Да" "Modern menu autoscale" cl_menu_modern_autoscale
    toggle --q2prox --live --status "cl_q2prox_menu_badges: show small green (X) markers near menu rows that belong to Q2PRO-X. Off by default to keep menus cleaner." --status-ru "Включает показ маленьких зелёных меток (X) рядом с пунктами меню, относящимися к Q2PRO-X. По умолчанию выключено, чтобы меню было чище." --name-ru "Метки Q2PRO-X в меню" --items-ru "Нет|Да" "Show Q2PRO-X badges" cl_q2prox_menu_badges
    toggle --q2prox --live --status "cl_q2prox_menu_global_badges: show small (G) markers near menu rows whose cvar is saved in the global Q2PRO-X config and shared across mods." --status-ru "Показывает метки (G) рядом с пунктами, чьи cvar сохраняются в глобальном конфиге Q2PRO-X и общие для всех модов." --name-ru "Метки глобальных настроек (G)" --items-ru "Нет|Да" "Show global (G) badges" cl_q2prox_menu_global_badges
    toggle --q2prox --live --status "cl_q2prox_menu_mod_badges: show small (M) markers near menu rows whose cvar is saved in the current mod-local Q2PRO-X config." --status-ru "Показывает метки (M) рядом с пунктами, чьи cvar сохраняются в локальном конфиге текущего мода." --name-ru "Метки настроек мода (M)" --items-ru "Нет|Да" "Show mod-local (M) badges" cl_q2prox_menu_mod_badges
    pairs --q2prox --live --status "cl_console_font_mode: console typography. legacy = stock conchars, San Francisco = SFUIText Regular fixed-cell. Console-only; menu and browsers use their own toggles." --status-ru "Выбирает значение «шрифт консоли»." --name-ru "Шрифт консоли" --items-ru "Классический|San Francisco" "Console font" cl_console_font_mode "Legacy" 0 "San Francisco" 1
    pairs --q2prox --live --status "cl_browser_font_mode: browser/UI chrome typography. legacy = stock conchars, Iskra = Iskra Cyrillic Regular fixed-cell. Wired: server / cvar / demo browser, demo player overlay chrome, modhelp local UI. Raw server names / demo filenames stay on the byte-exact legacy path." --status-ru "Выбирает значение «шрифт браузеров». Подключены: server browser, cvar browser, demo browser, интерфейс проигрывателя демо, локальный интерфейс modhelp. Имена серверов и demo-файлов остаются на байт-в-байт легаси-пути." --name-ru "Шрифт браузеров" --items-ru "Классический|Iskra Cyrillic" "Browsers font" cl_browser_font_mode "Legacy" 0 "Iskra" 1
    pairs --q2prox --live --status "cl_hud_font_mode: HUD/local-overlay typography. legacy = stock conchars, Iskra = Iskra Cyrillic Regular fixed-cell. Wired trusted: net autoport, demo item timers, demo analytics, screen.c local labels (demo bar, LAGHAX), OpenTDM team HUD trusted chrome. Server-supplied layout / configstring / chat / scoreboard names stay on the byte-exact legacy path." --status-ru "Выбирает значение «шрифт HUD». Подключены доверенные поверхности: net autoport, demo item timers, demo analytics, локальные подписи screen.c (демо-полоса, LAGHAX), доверенный интерфейс OpenTDM team HUD. Серверные строки разметки, конфиг-строки, чат и имена в табло остаются на байт-в-байт легаси-пути." --name-ru "Шрифт HUD" --items-ru "Классический|Iskra Cyrillic" "HUD font" cl_hud_font_mode "Legacy" 0 "Iskra" 1
    blank
    bind --status "cvar_browser_toggle: toggle the Q2PRO-X cvar reference overlay" --status-ru "Назначает клавишу для действия «клавиша справочника переменных»." --name-ru "Клавиша справочника переменных" "Cvar browser toggle key" cvar_browser_toggle
    blank
    action --align --status "Save all Q2PRO-X settings (global + mod-local)" --status-ru "Выполняет действие «сохранить все конфиги»." --name-ru "Сохранить все конфиги..." "Save all configs..." q2prox_cfg_save
    action --align --status "Save global settings to baseq2/q2pro-x/q2pro-x.cfg" --status-ru "Выполняет действие «сохранить глобальный конфиг»." --name-ru "Сохранить глобальный конфиг..." "Save global config..." q2prox_cfg_save_global
    action --align --status "Save mod-local during normal play; save demo visual while a .dm2/.mvd2 is playing. Real target name appears in console on save." --status-ru "Выполняет действие «сохранить локальный конфиг»." --name-ru "Сохранить локальный конфиг..." "Save local config..." q2prox_cfg_save_local
    action --align --status "Always writes baseq2/q2pro-x/demo_visual/q2pro-x.demo.cfg (visual preset used only during demo playback)." --status-ru "Выполняет действие «сохранить демо-визуал конфиг»." --name-ru "Сохранить демо-визуал конфиг..." "Save demo visual config..." q2prox_cfg_save_demo_visual
    blank
    action --align --status "Reset all Q2PRO-X settings to defaults" --status-ru "Выполняет действие «сбросить всё»." --name-ru "Сбросить всё..." "Defaults all..." q2prox_cfg_defaults
    action --align --status "Reset only global settings to defaults" --status-ru "Выполняет действие «сбросить глобальные»." --name-ru "Сбросить глобальные..." "Defaults global..." q2prox_cfg_defaults_global
    action --align --status "Reset local cvars. In demo playback: ONLY visual cvars (binds preserved) → demo visual target. Otherwise: mod-local cvars + binds." --status-ru "Выполняет действие «сбросить локальные»." --name-ru "Сбросить локальные..." "Defaults local..." q2prox_cfg_defaults_local
    action --align --status "Reset only demo visual cvars to defaults (binds always preserved). Follow with q2prox_cfg_save_demo_visual to persist." --status-ru "Выполняет действие «сбросить демо-визуал»." --name-ru "Сбросить демо-визуал..." "Defaults demo visual..." q2prox_cfg_defaults_demo_visual
end

// ===========================================================================
// Help / About
// ===========================================================================

begin g_help
    title "Help / About Q2PRO-X"
    title-ru "Помощь / О Q2PRO-X"
    style --no-compact
    action --status "Browse every cvar live: search, description, values, source" --status-ru "Выполняет действие «справка по переменным»." --name-ru "Справка по переменным..." "Cvar reference..." cvar_help
    action --status "Cvar browser settings: alpha, language, text scale" --status-ru "Открывает раздел «настройки справочника переменных»." --name-ru "Настройки справочника переменных..." "Cvar browser settings..." pushmenu q2prox_cvarbrowser
    blank
    action --status "Print Q2PRO-X build version and component info" --status-ru "Выполняет действие «инфо о версии»." --name-ru "Инфо о версии..." "Version info..." version
    action --status "Print current movement feel and applied backend" --status-ru "Выполняет действие «инфо об ощущении движения»." --name-ru "Инфо об ощущении движения..." "Movement feel info..." movementfeel_info
    action --status "Print render scale path, max resolution, tile grid" --status-ru "Выполняет действие «инфо о масштабе рендера»." --name-ru "Инфо о масштабе рендера..." "Render scale info..." gl_render_scale_info
    action --status "Print OLED protection status + reasons" --status-ru "Выполняет действие «инфо OLED»." --name-ru "Инфо OLED..." "OLED info..." vid_oled_info
    action --status "Print reverb classifier / preset data" --status-ru "Выполняет действие «инфо о реверберации»." --name-ru "Инфо о реверберации..." "Reverb info..." al_reverb_info
    action --status "Print binaural runtime state" --status-ru "Выполняет действие «инфо о бинауральном звуке»." --name-ru "Инфо о бинауральном звуке..." "Binaural info..." al_binaural_info
    action --status "Print visual FX status" --status-ru "Выполняет действие «инфо о визуальных эффектах»." --name-ru "Инфо о визуальных эффектах..." "Visual fx info..." gl_visual_fx_info
    action --status "Print visibility item classification" --status-ru "Выполняет действие «инфо о видимости предметов»." --name-ru "Инфо о видимости предметов..." "Vis items info..." cl_vis_items_info
    blank
    action --status "List available console macros" --status-ru "Выполняет действие «список макросов»." --name-ru "Список макросов..." "List macros..." macrolist
end

// ===========================================================================
// Address Book (for legacy join-by-address workflow)
// ===========================================================================

begin g_addressbook
    banner m_banner_addressbook
    field --width 32 --center adr0
    field --width 32 --center adr1
    field --width 32 --center adr2
    field --width 32 --center adr3
    field --width 32 --center adr4
    field --width 32 --center adr5
    field --width 32 --center adr6
    field --width 32 --center adr7
    field --width 32 --center adr8
    field --width 32 --center adr9
    field --width 32 --center adr10
    field --width 32 --center adr11
    field --width 32 --center adr12
    field --width 32 --center adr13
    field --width 32 --center adr14
    field --width 32 --center adr15
end

// ===========================================================================
// Q2PRO-X engine-room pages (ported from q2pro-x.menu).
//
// These are the deep power-user pages. They are reached from
// Advanced Q2PRO-X and from several user-facing shortcuts earlier
// in this file. Keep in sync with the same-named pages in
// q2pro-x.menu per the maintenance rule in the top-of-file comment.
// ===========================================================================

begin q2prox_laghax
    title "Laghax"
    style --no-compact
    values --status "cl_laghax: 0 = off, 1 = fixed window, 2 = adaptive smoothing" --status-ru "Выбирает значение «режим laghax»." --name-ru "Режим laghax" --items-ru "Выкл.|Фиксированный|Адаптивный" "Laghax mode" cl_laghax off fixed adaptive
    toggle --status "cl_laghax_hud: real-time laghax overlay in top-right (or wherever dragged)" --status-ru "Включает или выключает параметр «laghax HUD»." --name-ru "Laghax HUD" --items-ru "Нет|Да" "Laghax HUD" cl_laghax_hud
    range --live --precision 2 --status "cl_laghax_hud_alpha: laghax HUD opacity (independent from scr_alpha)" --status-ru "Настраивает значение «прозрачность HUD»." --name-ru "Прозрачность HUD" "HUD opacity" cl_laghax_hud_alpha 0 1 0.05
    toggle --live --status "cl_laghax_hud_show_predict_params: HUD row listing weapon / player predicts currently enabled" --status-ru "Включает или выключает параметр «показывать строку предиктов»." --name-ru "Показывать строку предиктов" --items-ru "Нет|Да" "Show predicts row" cl_laghax_hud_show_predict_params
    toggle --live --status "cl_laghax_hud_show_physics_params: HUD row showing movement feel, step smoothing, legacy predict, fixed move" --status-ru "Включает или выключает параметр «показывать строку физики»." --name-ru "Показывать строку физики" --items-ru "Нет|Да" "Show physics row" cl_laghax_hud_show_physics_params
    toggle --live --status "cl_laghax_hud_show_predict_runtime: extra live runtime rows for weapon prediction internals (diagnostic only)" --status-ru "Включает или выключает параметр «показывать данные предикта»." --name-ru "Показывать данные предикта" --items-ru "Нет|Да" "Show predict runtime" cl_laghax_hud_show_predict_runtime
    toggle --live --status "cl_laghax_hud_pillarbox_workspace: allow HUD in pillarbox side bars" --status-ru "Включает или выключает параметр «свободная зона боковых полей»." --name-ru "Свободная зона боковых полей" --items-ru "Нет|Да" "Pillarbox free area" cl_laghax_hud_pillarbox_workspace
    toggle --live --status "cl_laghax_hud_hide_deathmatch0: auto-hide HUD in deathmatch 0 contexts. Widget only — cl_laghax smoothing stays on." --status-ru "Включает или выключает параметр «скрывать HUD при deathmatch 0»." --name-ru "Скрывать HUD при deathmatch 0" --items-ru "Нет|Да" "Hide HUD in deathmatch 0" cl_laghax_hud_hide_deathmatch0
    toggle --live --status "cl_laghax_hud_hide_demo: auto-hide HUD during demo playback. Widget only — cl_laghax smoothing stays on." --status-ru "Включает или выключает параметр «скрывать HUD при просмотре демок»." --name-ru "Скрывать HUD при просмотре демок" --items-ru "Нет|Да" "Hide HUD during demo playback" cl_laghax_hud_hide_demo
    action --align --status "Enter HUD edit mode (left-drag, Enter/Escape exits)" --status-ru "Выполняет действие «редактировать позицию HUD»." --name-ru "Редактировать позицию HUD..." "Edit HUD position..." laghax_hud_edit
    action --align --status "Clear saved HUD position" --status-ru "Выполняет действие «сбросить позицию HUD»." --name-ru "Сбросить позицию HUD" "Reset HUD position" laghax_hud_reset
    toggle --status "cl_laghax_debug: print smoothing stats every server frame" --status-ru "Включает или выключает параметр «отладка laghax»." --name-ru "Отладка laghax" --items-ru "Нет|Да" "Laghax debug" cl_laghax_debug
    range --status "cl_laghax_maxms: hard safety cap (ms)" --status-ru "Настраивает значение «лимит мс»." --name-ru "Лимит мс" "Max ms cap" cl_laghax_maxms 0 150 5
    range --status "cl_laghax_maxwindow: adaptive-mode target cap" --status-ru "Настраивает значение «макс. адаптивное окно»." --name-ru "Макс. адаптивное окно" "Adaptive max window" cl_laghax_maxwindow 0 120 5
    range --status "cl_laghax_minerror: errors below this snap instantly" --status-ru "Настраивает значение «минимальная ошибка»." --name-ru "Минимальная ошибка" "Minimum error" cl_laghax_minerror 0 8 0.1
    range --status "cl_laghax_ping_weight" --status-ru "Настраивает значение «вес пинга»." --name-ru "Вес пинга" "Ping weight" cl_laghax_ping_weight 0 1 0.05
    range --status "cl_laghax_jitter_weight" --status-ru "Настраивает значение «вес джиттера»." --name-ru "Вес джиттера" "Jitter weight" cl_laghax_jitter_weight 0 1 0.05
    range --status "cl_laghax_loss_weight" --status-ru "Настраивает значение «вес потерь»." --name-ru "Вес потерь" "Loss weight" cl_laghax_loss_weight 0 1 0.05
    range --status "cl_laghax_debt_weight" --status-ru "Настраивает значение «вес долга предикта»." --name-ru "Вес долга предикта" "Debt weight" cl_laghax_debt_weight 0 1 0.05
    range --status "cl_laghax_gap_weight" --status-ru "Настраивает значение «вес разрыва»." --name-ru "Вес разрыва" "Gap weight" cl_laghax_gap_weight 0 1 0.05
end

begin q2prox_opentdm_teamhud
    title "OpenTDM Team HUD"
    title-ru "Командный HUD OpenTDM"
    style --no-compact
    toggle --live --status "cl_opentdm_team_hud: master enable — only draws on OpenTDM while on TEAM_A/TEAM_B" --status-ru "Включает или выключает параметр «командный HUD OpenTDM»." --name-ru "Командный HUD OpenTDM" --items-ru "Нет|Да" "OpenTDM team HUD" cl_opentdm_team_hud
    bind --status "opentdm_team_hud_toggle: bind a key to show/hide the OpenTDM Team Overlay. The command prints why the HUD is not visible if the OpenTDM/team/spectator gate is not satisfied yet." --status-ru "Назначает клавишу переключения Team Overlay / командного HUD OpenTDM. Команда пишет в консоль причину, если HUD пока не может отрисоваться." --name-ru "Клавиша Team Overlay" "Team Overlay key" opentdm_team_hud_toggle
    range --live --precision 2 --status "cl_opentdm_team_hud_alpha: HUD opacity (independent from scr_alpha)" --status-ru "Настраивает значение «прозрачность HUD»." --name-ru "Прозрачность HUD" "HUD opacity" cl_opentdm_team_hud_alpha 0 1 0.05
      range --live --precision 2 --status "cl_opentdm_team_hud_scale: Team HUD text scale multiplier (0.5..2.0, step 0.01)" --status-ru "Настраивает значение «масштаб текста» (0.5..2.0, шаг 0.01)." --name-ru "Масштаб текста" "Text scale" cl_opentdm_team_hud_scale 0.5 2 0.01
      range --live --status "cl_opentdm_team_hud_width: width of the LAST MSG area in character cells" --status-ru "Настраивает значение «ширина сообщений»." --name-ru "Ширина сообщений" "Message width" cl_opentdm_team_hud_width 12 48 1
      toggle --live --status "cl_opentdm_team_hud_show_weapon: show teammate's current weapon (passive decode, works with cl_vwep 0)" --status-ru "Включает или выключает параметр «показывать оружие»." --name-ru "Показывать оружие" --items-ru "Нет|Да" "Show weapon" cl_opentdm_team_hud_show_weapon
      toggle --live --status "cl_opentdm_team_hud_show_powerarmor: include P (power armor cells) in the H/A/P column" --status-ru "Включает или выключает параметр «показывать силовую броню»." --name-ru "Показывать силовую броню" --items-ru "Нет|Да" "Show power armor" cl_opentdm_team_hud_show_powerarmor
      toggle --live --status "cl_opentdm_team_hud_show_freshness: show a freshness / age indicator for passive teammate values (green -> yellow -> red -> disappear)" --status-ru "Включает или выключает параметр «показывать свежесть»." --name-ru "Показывать свежесть" --items-ru "Нет|Да" "Show freshness" cl_opentdm_team_hud_show_freshness
      toggle --live --status "cl_opentdm_team_hud_show_teamchat: show the last already-visible say_team message beside the teammate who sent it (HUD mirror only, console/chat output unchanged)" --status-ru "Включает или выключает параметр «показывать последний командный чат»." --name-ru "Показывать последний командный чат" --items-ru "Нет|Да" "Show last team chat" cl_opentdm_team_hud_show_teamchat
      range --live --status "cl_opentdm_team_hud_fresh_sec: how long passive teammate values stay green before transitioning into yellow and red; never exceeds stale threshold" --status-ru "Настраивает значение «период свежести (сек)»." --name-ru "Период свежести (сек)" "Fresh period (sec)" cl_opentdm_team_hud_fresh_sec 1 120 1
      range --live --status "cl_opentdm_team_hud_stale_sec: seconds until cached H/A/P and weapon values expire and disappear from the HUD" --status-ru "Настраивает значение «порог устаревания (сек)»." --name-ru "Порог устаревания (сек)" "Stale threshold (sec)" cl_opentdm_team_hud_stale_sec 4 120 1
      toggle --live --status "cl_opentdm_team_hud_pillarbox_workspace: allow placement in the pillarbox side bars" --status-ru "Включает или выключает параметр «свободная зона боковых полей»." --name-ru "Свободная зона боковых полей" --items-ru "Нет|Да" "Pillarbox free area" cl_opentdm_team_hud_pillarbox_workspace
    action --align --status "Enter edit mode (left-drag, Enter/Escape exits)" --status-ru "Выполняет действие «редактировать позицию HUD»." --name-ru "Редактировать позицию HUD..." "Edit HUD position..." opentdm_team_hud_edit
    action --align --status "Clear saved HUD position" --status-ru "Выполняет действие «сбросить позицию HUD»." --name-ru "Сбросить позицию HUD" "Reset HUD position" opentdm_team_hud_reset
end

begin q2prox_predict
    title "Weapon Predicts"
    title-ru "Предсказание оружия"
    style --no-compact
    toggle --status "weapon predict master — off disables all weapon predicts; weapon-side admissions/telemetry stop, but player predict may still follow the shared ping gate. Per-weapon settings are preserved" --status-ru "Включает или выключает параметр «мастер предикта оружия»." --name-ru "Мастер предикта оружия" --items-ru "Нет|Да" "Weapon predict master" cl_predict_weapons_enable
    blank
    pairs --status "cl_predict_debug: 0=prod, 1/2=show both streams, 3=diagnostics+suppression" --status-ru "Выбирает значение «отладка предикта»." --name-ru "Отладка предикта" --items-ru "Выкл.|Показать оба|Подробно|Диагн.+подавл." "Predict debug" cl_predict_debug off 0 "Show both" 1 verbose 2 "Diag+supp" 3
    toggle --status "cl_weapon_anim_debug: print server vs predicted gun frame" --status-ru "Включает или выключает параметр «отладка анимации оружия»." --name-ru "Отладка анимации оружия" --items-ru "Нет|Да" "Weapon anim debug" cl_weapon_anim_debug
    toggle --status "predict own rocket launcher projectile immediately" --status-ru "Включает или выключает параметр «предикт ракет»." --name-ru "Предикт ракет" --items-ru "Нет|Да" "Predict rockets" cl_predict_rockets
    toggle --status "predict the rocket impact explosion at BSP hit point (subordinate to rockets)" --status-ru "Включает или выключает параметр «предикт взрыва ракеты»." --name-ru "Предикт взрыва ракеты" --items-ru "Нет|Да" "Predict rocket explosion" cl_predict_rockets_explosion
    toggle --status "predict the rail beam instantly on fire" --status-ru "Включает или выключает параметр «предикт Railgun»." --name-ru "Предикт Railgun" --items-ru "Нет|Да" "Predict railgun" cl_predict_railgun
    toggle --status "predict shotgun muzzle and pellet hit feedback" --status-ru "Включает или выключает параметр «предикт дробовика»." --name-ru "Предикт дробовика" --items-ru "Нет|Да" "Predict shotgun" cl_predict_shotgun
    toggle --status "predict super-shotgun muzzle and pellet hit feedback" --status-ru "Включает или выключает параметр «предикт супердробовика»." --name-ru "Предикт супердробовика" --items-ru "Нет|Да" "Predict super shotgun" cl_predict_super_shotgun
    toggle --status "predict machinegun local fire feedback" --status-ru "Включает или выключает параметр «предикт пулемёта»." --name-ru "Предикт пулемёта" --items-ru "Нет|Да" "Predict machinegun" cl_predict_machinegun
    toggle --status "predict chaingun local fire feedback with ramp-up shot counts" --status-ru "Включает или выключает параметр «предикт чейнгана»." --name-ru "Предикт чейнгана" --items-ru "Нет|Да" "Predict chaingun" cl_predict_chaingun
    toggle --status "predict blaster projectile and muzzle feedback" --status-ru "Включает или выключает параметр «предикт бластера»." --name-ru "Предикт бластера" --items-ru "Нет|Да" "Predict blaster" cl_predict_blaster
    toggle --status "predict grenade launcher muzzle and sound feedback" --status-ru "Включает или выключает параметр «предикт гранатомёта»." --name-ru "Предикт гранатомёта" --items-ru "Нет|Да" "Predict grenades" cl_predict_grenades
    toggle --status "predict hand-grenade throw feedback" --status-ru "Включает или выключает параметр «предикт ручных гранат»." --name-ru "Предикт ручных гранат" --items-ru "Нет|Да" "Predict hand grenades" cl_predict_hand_grenades
    toggle --status "predict hyperblaster local fire feedback" --status-ru "Включает или выключает параметр «предикт гипербластера»." --name-ru "Предикт гипербластера" --items-ru "Нет|Да" "Predict hyperblaster" cl_predict_hyperblaster
    values --status "local jump/fall prediction — also gated by adaptive ping gate (same threshold + dwell as weapon predicts). Also in movement & player menu." --status-ru "Выбирает значение «предикт игрока»." --name-ru "Предикт игрока" --items-ru "Выкл.|Вкл.|Отладка" "Predict player" cl_predict_player off on debug
    blank
    range --status "minimum ping (ms) — 0 disables adaptive gate so only raw/master toggles remain; >0 gates weapon and player predicts on ping" --status-ru "Настраивает значение «минимальный пинг (мс)»." --name-ru "Минимальный пинг (мс)" "Minimum ping (ms)" cl_predict_ping_min_ms 0 200 1
    range --status "dwell time (sec) — ping must stay on one side of threshold this long before shared gate flips (weapon + player predicts)" --status-ru "Настраивает значение «выдержка пинга (сек)»." --name-ru "Выдержка пинга (сек)" "Ping dwell (sec)" cl_predict_ping_dwell_sec 0 30 1
end

begin q2prox_weaponfx
    title "Weapon Parts Visibility"
    title-ru "Видимость частей оружия"
    style --no-compact
    toggle --live --status "cl_weaponfx_vis_enable: master (off = neutral, legacy cvars only)" --status-ru "Включает или выключает параметр «пользовательский слой видимости»." --name-ru "Пользовательский слой видимости" --items-ru "Нет|Да" "Custom visibility layer" cl_weaponfx_vis_enable
    blank
    toggle --live --status "cl_weaponfx_vis_own_predicted: show local ghost / predicted weapon FX" --status-ru "Включает или выключает параметр «свои предсказанные эффекты»." --name-ru "Свои предсказанные эффекты" --items-ru "Нет|Да" "Own predicted fx" cl_weaponfx_vis_own_predicted
    toggle --live --status "cl_weaponfx_vis_own_server: show authoritative server FX from our own fire path" --status-ru "Включает или выключает параметр «свои серверные эффекты»." --name-ru "Свои серверные эффекты" --items-ru "Нет|Да" "Own server fx" cl_weaponfx_vis_own_server
    toggle --live --status "cl_weaponfx_vis_other: show weapon FX from other players / monsters" --status-ru "Включает или выключает параметр «эффекты других игроков»." --name-ru "Эффекты других игроков" --items-ru "Нет|Да" "Other players fx" cl_weaponfx_vis_other
    blank
    toggle --live --status "cl_weaponfx_vis_muzzle: muzzle flash model / sprite / local muzzle visual" --status-ru "Включает или выключает параметр «вспышка выстрела»." --name-ru "Вспышка выстрела" --items-ru "Нет|Да" "Muzzle flash" cl_weaponfx_vis_muzzle
    toggle --live --status "cl_weaponfx_vis_muzzle_light: dynamic light from muzzle flash" --status-ru "Включает или выключает параметр «свет от выстрела»." --name-ru "Свет от выстрела" --items-ru "Нет|Да" "Muzzle light" cl_weaponfx_vis_muzzle_light
    toggle --live --status "cl_weaponfx_vis_hitscan: rail beam / tracer-like direct-fire path" --status-ru "Включает или выключает параметр «мгновенный луч / трассер»." --name-ru "Мгновенный луч / трассер" --items-ru "Нет|Да" "Hitscan beam / tracer" cl_weaponfx_vis_hitscan
    toggle --live --status "cl_weaponfx_vis_projectiles: projectile model + inherent glow" --status-ru "Включает или выключает параметр «модели снарядов»." --name-ru "Модели снарядов" --items-ru "Нет|Да" "Projectile models" cl_weaponfx_vis_projectiles
    toggle --live --status "cl_weaponfx_vis_trails: rocket / grenade / blaster / BFG trails" --status-ru "Включает или выключает параметр «следы снарядов»." --name-ru "Следы снарядов" --items-ru "Нет|Да" "Projectile trails" cl_weaponfx_vis_trails
    toggle --live --status "cl_weaponfx_vis_impact_wall: wall / world impact visuals (sparks, smoke, blaster flash)" --status-ru "Включает или выключает параметр «попадания в стены»." --name-ru "Попадания в стены" --items-ru "Нет|Да" "Wall impacts" cl_weaponfx_vis_impact_wall
    toggle --live --status "cl_weaponfx_vis_impact_flesh: blood / flesh-hit visuals" --status-ru "Включает или выключает параметр «попадания по телу»." --name-ru "Попадания по телу" --items-ru "Нет|Да" "Flesh impacts" cl_weaponfx_vis_impact_flesh
    toggle --live --status "cl_weaponfx_vis_explosion_visual: explosion sprite / model" --status-ru "Включает или выключает параметр «визуал взрыва»." --name-ru "Визуал взрыва" --items-ru "Нет|Да" "Explosion visual" cl_weaponfx_vis_explosion_visual
    toggle --live --status "cl_weaponfx_vis_explosion_particles: explosion debris / smoke particles" --status-ru "Включает или выключает параметр «взрыв частицы»." --name-ru "Взрыв частицы" --items-ru "Нет|Да" "Explosion particles" cl_weaponfx_vis_explosion_particles
    toggle --live --status "cl_weaponfx_vis_explosion_light: dynamic light from explosions" --status-ru "Включает или выключает параметр «свет взрыва»." --name-ru "Свет взрыва" --items-ru "Нет|Да" "Explosion light" cl_weaponfx_vis_explosion_light
    toggle --live --status "cl_weaponfx_vis_hit_markers: HUD hit marker (sound still governed by cl_hit_markers)" --status-ru "Включает или выключает параметр «маркеры попаданий»." --name-ru "Маркеры попаданий" --items-ru "Нет|Да" "Hit markers" cl_weaponfx_vis_hit_markers
    blank
    action --align --status "Print current WFX state + effective behavior to console" --status-ru "Выполняет действие «инфо частей оружия»." --name-ru "Инфо частей оружия..." "Weapon parts info..." weaponfx_info
end

begin q2prox_movement
    title "Movement"
    title-ru "Движение"
    style --no-compact
    values --status "cl_mouse_behavior_mode: global mouse feel (q2pro = default; r1q2 = compatibility, backend from m_directinput: 0=legacy, 1/2=DI-like relative)" --status-ru "Выбирает значение «поведение мыши»." --name-ru "Поведение мыши" --items-ru "Q2PRO|R1q2" "Mouse behavior" cl_mouse_behavior_mode q2pro r1q2
    values --status "cl_movement_feel_mode: r1q2-like = classic standstill-start/jump" --status-ru "Выбирает значение «ощущение движения»." --name-ru "Ощущение движения" --items-ru "Q2PRO|Как r1q2" "Movement feel" cl_movement_feel_mode q2pro r1q2-like
    values --status "cl_predict_move_mode: client prediction backend" --status-ru "Выбирает значение «предикт клиента»." --name-ru "Предикт клиента" --items-ru "Современный (Q2PRO/Q2PRO-X)|Классический q2pro-m/r1826" "Client predict" cl_predict_move_mode "modern (new q2pro/Q2PRO-X)" "legacy (q2pro-m/q2pro r1826)"
    values --status "cl_step_smoothing_mode: local stair-step feel" --status-ru "Выбирает значение «сглаживание ступеней»." --name-ru "Сглаживание ступеней" --items-ru "Q2PRO|R1q2: 1|R1q2: 2|R1q2: 3" "Step smoothing" cl_step_smoothing_mode q2pro r1q2-1 r1q2-2 r1q2-3
    toggle --status "cl_fixedmove: normalize movement to 10 ms command clock" --status-ru "Включает или выключает параметр «фиксированный шаг движения»." --name-ru "Фиксированный шаг движения" --items-ru "Нет|Да" "Fixed move" cl_fixedmove
    toggle --status "cl_fixedmove_debug: print finalized fixedmove command timing" --status-ru "Включает или выключает параметр «отладка фикс. движения»." --name-ru "Отладка фикс. движения" --items-ru "Нет|Да" "Fixedmove debug" cl_fixedmove_debug
    toggle --q2prox --status "cl_fixedmove_wait_mode: gameplay wait aliases advance on fixedmove's 10 ms movement ticks instead of render frames. Recommended with fixedmove; turn off only for legacy script timing. Default ON." --status-ru "Заставляет gameplay wait-алиасы тикать по 10 мс шагам fixedmove, а не по render frame. Рекомендуется вместе с fixedmove; выключайте только для старого тайминга скриптов. По умолчанию ВКЛ." --name-ru "Wait по fixedmove" --items-ru "Нет|Да" "Fixedmove-aware wait" cl_fixedmove_wait_mode
    toggle --q2prox --status "cl_fixedmove_wait_debug: per-sub-cmd diagnostics for the fixedmove-aware wait path (wait count, queue size, drain flag, upmove). Level 1 = only interesting sub-cmds, 2 = verbose." --status-ru "Диагностика per-sub-cmd для пути fixedmove-aware wait (счётчик wait, размер очереди, флаг DRAIN, upmove). 1 = только интересные sub-cmd, 2 = verbose." --name-ru "Отладка wait fixedmove" --items-ru "Нет|Да" "Fixedmove wait debug" cl_fixedmove_wait_debug
    values --status "cl_predict_player: 0 = off, 1 = local jump/fall, 2 = debug. When cl_predict_ping_min_ms > 0, also gated by the shared adaptive ping gate." --status-ru "Выбирает значение «предикт игрока»." --name-ru "Предикт игрока" --items-ru "Выкл.|Вкл.|Отладка" "Predict player" cl_predict_player off on debug
    blank
    action --align --status "Print resolved movement feel state and applied backend" --status-ru "Выполняет действие «инфо об ощущении движения»." --name-ru "Инфо об ощущении движения..." "Movement feel info..." movementfeel_info
end

begin q2prox_video
    title "Display & Capture"
    title-ru "Отображение и захват"
    style --no-compact
    pairs --status "vid_driver: win32egl (default) / win32wgl (fallback)" --status-ru "Выбирает значение «видеобэкенд»." --name-ru "Видеобэкенд" --items-ru "Win32egl|Win32wgl" "Video backend" vid_driver "Win32egl" win32egl "Win32wgl" win32wgl
    strings --status "vid_resolution: desktop = native" --status-ru "Выбирает значение «разрешение»." --name-ru "Разрешение" "Resolution" vid_resolution $$vid_resolution_list
    toggle --status "vid_windowed: run as window" --status-ru "Включает или выключает параметр «оконный режим»." --name-ru "Оконный режим" --items-ru "Нет|Да" "Windowed mode" vid_windowed
    pairs --status "vid_fullscreen_type" --status-ru "Выбирает значение «полноэкранный режим»." --name-ru "Полноэкранный режим" --items-ru "Полноэкранный рабочий стол|Эксклюзивный режим" "Fullscreen mode" vid_fullscreen_type "Desktop fullscreen" desktop "Exclusive fullscreen" exclusive
    strings --status "vid_refresh: max = highest" --status-ru "Выбирает значение «частота обновления»." --name-ru "Частота обновления" "Refresh rate" vid_refresh $$vid_refresh_list
    range --status "vid_desktop_fullscreen_margin" --status-ru "Настраивает значение «отступ полного экрана»." --name-ru "Отступ полного экрана" "Fullscreen margin" vid_desktop_fullscreen_margin 0 16 1
    values --live --status "vid_desktop_fullscreen_fit: fill / aspect" --status-ru "Выбирает значение «подгонка полного экрана»." --name-ru "Подгонка полного экрана" --items-ru "Заполнить|По пропорциям" "Fullscreen fit" vid_desktop_fullscreen_fit fill aspect
    action --align --status "OLED protection suite" --status-ru "Открывает раздел «защита OLED»." --name-ru "Защита OLED..." "OLED protection..." pushmenu q2prox_oled
    range --format "%d%%" --status "gl_render_scale: internal 3D resolution (100=native, step 1%)" --status-ru "Настраивает значение «масштаб рендера» (100=натив, шаг 1%)." --name-ru "Масштаб рендера" "Render scale" gl_render_scale 100 1000 1
    values --status "gl_render_scale_mode" --status-ru "Выбирает значение «режим масштабирования»." --name-ru "Режим масштабирования" --items-ru "Авто|Текстура|Копирование|Плиткой" "Scale mode" gl_render_scale_mode auto texture blit tiled
    values --status "gl_render_scale_filter" --status-ru "Выбирает значение «фильтр масштабирования»." --name-ru "Фильтр масштабирования" --items-ru "Быстро|Баланс|Качество" "Scale filter" gl_render_scale_filter fast balanced quality
    blank
    range --live --precision 2 --status "cl_menu_alpha" --status-ru "Настраивает значение «прозрачность меню»." --name-ru "Прозрачность меню" "Menu opacity" cl_menu_alpha 0 1 0.05
    blank
    action --align --status "Print render scale status" --status-ru "Выполняет действие «инфо о масштабе рендера»." --name-ru "Инфо о масштабе рендера..." "Render scale info..." gl_render_scale_info
    action --align --status "Apply vid_driver or fullscreen changes" --status-ru "Применяет изменения видеорежима и перезапускает видео." --name-ru "Перезапустить видео..." "Restart video..." vid_restart
end

begin q2prox_oled
    title "OLED Protection"
    title-ru "Защита OLED"
    style --no-compact
    toggle --live --status "vid_oled_enable: master switch for OLED protection suite" --status-ru "Включает или выключает параметр «защита OLED»." --name-ru "Защита OLED" --items-ru "Нет|Да" "OLED protection" vid_oled_enable
    blank
    toggle --live --status "vid_oled_bar_protection: animate aspect-fit pillarbox bars" --status-ru "Включает или выключает параметр «защита полос»." --name-ru "Защита полос" --items-ru "Нет|Да" "Bar protection" vid_oled_bar_protection
    values --live --status "vid_oled_bar_preset: fade / random fade / breathe" --status-ru "Выбирает значение «пресет полос»." --name-ru "Пресет полос" --items-ru "Затухание|Случайное затухание|Дыхание" "Bar preset" vid_oled_bar_preset fade "random fade" breathe
    pairs --status "Choose this value." --status-ru "Выбирает значение «цвет полосы A»." --live --name-ru "Цвет полосы A" --items-ru "Чёрный|Почти чёрный|Тёмно-серый|Серый" "Bar color A" vid_oled_bar_color_a "Black" "#000000" "Near black" "#0A0a0a" "Dim gray" "#141414" "Gray" "#1E1e1e"
    pairs --status "Choose this value." --status-ru "Выбирает значение «цвет полосы B»." --live --name-ru "Цвет полосы B" --items-ru "Чёрный|Почти чёрный|Тёмно-серый|Серый" "Bar color B" vid_oled_bar_color_b "Black" "#000000" "Near black" "#0A0a0a" "Dim gray" "#141414" "Gray" "#1E1e1e"
    range --status "Adjust this value." --status-ru "Настраивает значение «задержка запуска полосы»." --live --format "%d s" --name-ru "Задержка запуска полосы" "Bar start delay" vid_oled_bar_delay_sec 10 3600 10
    range --status "Adjust this value." --status-ru "Настраивает значение «время активности полосы»." --live --format "%d min" --name-ru "Время активности полосы" "Bar active time" vid_oled_bar_active_min 1 10 1
    range --status "Adjust this value." --status-ru "Настраивает значение «интервал простоя полос»." --live --format "%d min" --name-ru "Интервал простоя полос" "Bar idle interval" vid_oled_bar_interval_min 1 60 1
    blank
    toggle --live --status "vid_oled_idle_protection: dim screen after inactivity" --status-ru "Включает или выключает параметр «защита экрана в простое»." --name-ru "Защита экрана в простое" --items-ru "Нет|Да" "Idle screen protection" vid_oled_idle_protection
    range --status "Adjust this value." --status-ru "Настраивает значение «задержка простоя»." --live --format "%d s" --name-ru "Задержка простоя" "Idle delay" vid_oled_idle_delay_sec 20 3600 10
    range --status "Adjust this value." --status-ru "Настраивает значение «время затухания простоя»." --live --format "%d s" --name-ru "Время затухания простоя" "Idle fade time" vid_oled_idle_fade_sec 5 120 5
    range --status "Adjust this value." --status-ru "Настраивает значение «время удержания простоя»." --live --precision 1 --name-ru "Время удержания простоя" "Idle hold time" vid_oled_idle_hold_sec 0.0 30.0 0.5
    toggle --live --status "vid_oled_idle_monitor_off (Win opt-in): DPMS monitor off during HOLD_DARK" --status-ru "Включает или выключает параметр «DPMS выкл. в простое»." --name-ru "DPMS выкл. в простое" --items-ru "Нет|Да" "Idle monitor DPMS off" vid_oled_idle_monitor_off
    range --status "Adjust this value." --status-ru "Настраивает значение «время восстановления простоя»." --live --precision 2 --name-ru "Время восстановления простоя" "Idle restore time" vid_oled_idle_restore_sec 0.1 5.0 0.1
    toggle --live --status "vid_oled_idle_mute_audio: mute audio while idle-dim active" --status-ru "Включает или выключает параметр «звук выкл. в простое»." --name-ru "Звук выкл. в простое" --items-ru "Нет|Да" "Mute audio on idle protect" vid_oled_idle_mute_audio
    blank
    toggle --live --status "vid_oled_ui_protection: breathing alpha on protected UI" --status-ru "Включает или выключает параметр «защита прозрачности интерфейса»." --name-ru "Защита прозрачности интерфейса" --items-ru "Нет|Да" "Interface alpha protect" vid_oled_ui_protection
    range --status "Adjust this value." --status-ru "Настраивает значение «мин. прозрачность интерфейса»." --live --precision 2 --name-ru "Мин. прозрачность интерфейса" "Interface min alpha" vid_oled_ui_min_alpha 0.0 1.0 0.05
    range --status "Adjust this value." --status-ru "Настраивает значение «макс. прозрачность интерфейса»." --live --precision 2 --name-ru "Макс. прозрачность интерфейса" "Interface max alpha" vid_oled_ui_max_alpha 0.05 1.0 0.05
    range --status "Adjust this value." --status-ru "Настраивает значение «период цикла прозрачности»." --live --format "%d s" --name-ru "Период цикла прозрачности" "Interface cycle time" vid_oled_ui_cycle_sec 5 600 5
    blank
    action --align --status "Print OLED protection status" --status-ru "Выполняет действие «инфо OLED»." --name-ru "Инфо OLED..." "OLED info..." vid_oled_info
end

begin q2prox_vfx
    title "Visual FX"
    title-ru "Визуальные эффекты"
    style --no-compact
    toggle --live --status "usefog: client-side fog" --status-ru "Включает или выключает параметр «туман»." --name-ru "Туман" --items-ru "Нет|Да" "Fog" usefog
    range --status "Adjust this value." --status-ru "Настраивает значение «плотность тумана»." --live --precision 2 --name-ru "Плотность тумана" "Fog density" fogdensity 0.01 1 0.01
    range --status "Adjust this value." --status-ru "Настраивает значение «тон тумана»." --live --precision 2 --name-ru "Тон тумана" "Fog hue" foghue 0 1 0.05
    range --status "Adjust this value." --status-ru "Настраивает значение «насыщенность тумана»." --live --precision 2 --name-ru "Насыщенность тумана" "Fog saturation" fogsaturation 0 1 0.05
    range --status "Adjust this value." --status-ru "Настраивает значение «светлота тумана»." --live --precision 2 --name-ru "Светлота тумана" "Fog lightness" foglightness 0 1 0.05
    blank
    values --status "Choose this value." --status-ru "Выбирает значение «динамические источники света»." --live --name-ru "Динамические источники света" --items-ru "Нет|Да|Только переключаемые" "Dynamic lights" gl_dynamic no yes "only switchable"
    values --status "gl_shadows: 0=off, 1=basic hard shadows, 2=fade with distance, 3=soft model shadows" --status-ru "Выбирает режим теней моделей: выкл., базовые, затухание или мягкие." --live --name-ru "Тени" --items-ru "Выкл.|Базовые|Затухание|Мягкие" "Shadows" gl_shadows off basic fade soft
    toggle --status "Toggle this setting." --status-ru "Включает или выключает параметр «без свечения»." --live --name-ru "Без свечения" --items-ru "Нет|Да" "No glow" cl_noglow
    toggle --status "Toggle this setting." --status-ru "Включает или выключает параметр «полигональное смешивание»." --live --name-ru "Полигональное смешивание" --items-ru "Нет|Да" "Poly blend" gl_polyblend
    toggle --status "Toggle this setting." --status-ru "Включает или выключает параметр «цветные карты света»." --live --name-ru "Цветные карты света" --items-ru "Нет|Да" "Colored lightmaps" gl_coloredlightmaps
    range --status "Adjust this value." --status-ru "Настраивает значение «яркость»." --live --precision 1 --name-ru "Яркость" "Brightness" gl_brightness 0 1 0.1
    range --status "Adjust this value." --status-ru "Настраивает значение «мультяшная обводка»." --live --precision 0 --name-ru "Мультяшная обводка" "Cel shading" gl_celshading 0 10 1
    blank
    values --status "Choose this value." --status-ru "Выбирает значение «сияние»." --live --name-ru "Сияние" --items-ru "Выкл.|1|2|3|4|5|6|7|8" "Bloom" gl_bloom off 1 2 3 4 5 6 7 8
    range --status "Adjust this value." --status-ru "Настраивает значение «сила сияния»." --live --precision 2 --name-ru "Сила сияния" "Bloom strength" gl_bloom_strength 0 3 0.1
    range --status "Adjust this value." --status-ru "Настраивает значение «порог сияния»." --live --precision 2 --name-ru "Порог сияния" "Bloom threshold" gl_bloom_threshold 0 1 0.05
    range --status "Adjust this value." --status-ru "Настраивает значение «радиус сияния»." --live --precision 1 --name-ru "Радиус сияния" "Bloom sigma" gl_bloom_sigma 1 12 0.5
    range --status "Adjust this value." --status-ru "Настраивает значение «интенсивность карт свечения»." --live --precision 2 --name-ru "Интенсивность карт свечения" "Glowmap intensity" gl_glowmap_intensity 0 2 0.1
    blank
    values --status "Choose this value." --status-ru "Выбирает значение «профиль цветокоррекции»." --live --name-ru "Профиль цветокоррекции" --items-ru "Выкл.|Нейтральный|Тёплый|Арена|Кинематографичный" "Grading profile" gl_post_profile off neutral warm arena cinematic
    range --status "Adjust this value." --status-ru "Настраивает значение «контраст»." --live --precision 2 --name-ru "Контраст" "Contrast" gl_post_contrast 0.5 2 0.05
    range --status "Adjust this value." --status-ru "Настраивает значение «сочность цвета»." --live --precision 2 --name-ru "Сочность цвета" "Vibrance" gl_post_vibrance -1 1 0.05
    range --status "Adjust this value." --status-ru "Настраивает значение «температура»." --live --precision 2 --name-ru "Температура" "Temperature" gl_post_temperature -1 1 0.05
    blank
    range --status "Adjust this value." --status-ru "Настраивает значение «резкость»." --live --precision 1 --name-ru "Резкость" "Sharpen" gl_sharpen 0 10 0.5
    blank
    action --q2prox --align --status "Open this menu section." --status-ru "Открывает раздел «продвинутые визуальные эффекты»." --name-ru "Продвинутые эффекты..." "Advanced effects..." pushmenu q2prox_avfx
    blank
    action --align --status "Print visual FX status" --status-ru "Выполняет действие «инфо о визуальных эффектах»." --name-ru "Инфо о визуальных эффектах..." "Visual fx info..." gl_visual_fx_info
end

begin q2prox_avfx
    title "Advanced Visual Effects"
    title-ru "Продвинутые визуальные эффекты"
    style --no-compact
    action --q2prox --align --status "Open AVFX preset packs. Presets are cfg files under baseq2/q2pro-x/visual_presets, so advanced users can tune them directly." --status-ru "Открывает наборы пресетов AVFX. Пресеты лежат как cfg-файлы в baseq2/q2pro-x/visual_presets, поэтому их можно гибко править вручную." --name-ru "Пресеты AVFX..." "AVFX presets..." pushmenu q2prox_avfx_presets
    blank
    toggle --live --status "Toggle this setting." --status-ru "Включает или выключает слой продвинутых визуальных эффектов." --name-ru "Включить" --items-ru "Нет|Да" "Enable" cl_avfx
    values --live --status "Choose this value." --status-ru "Выбирает атмосферный пресет: дождь, снег, пепел, пыль, дымка." --name-ru "Пресет" --items-ru "Выкл.|Дождь|Снег|Пепел|Пыль|Дымка" "Preset" cl_avfx_preset off rain snow ash dust mist
    values --live --status "Choose this value." --status-ru "Выбирает уровень качества (бюджет на кадр)." --name-ru "Качество" --items-ru "Низкое|Среднее|Высокое" "Quality" cl_avfx_quality low normal high
    toggle --live --status "cl_avfx_render_lod: skip rendering small AVFX effects (foam bubbles, water ripples, puddle rings, splashes, puddle dust) beyond cl_avfx_render_lod_wu distance from camera, with soft fade over the last 30%.  Major perf win in dense rain (~15-25%+ fps).  Puddles, cascade flows, and rain particles themselves are NEVER affected." --status-ru "Включает дальностный LOD: мелкие эффекты (пузыри пены, круги на воде, кольца луж, брызги, пылинки) НЕ рисуются дальше заданного расстояния от камеры. Плавный фейд в последних 30%. Заметный рост FPS в плотном дожде. Сами лужи, потоки воды и частицы дождя в этом не участвуют." --name-ru "LOD дальности эффектов" --items-ru "Нет|Да" "Distance LOD" cl_avfx_render_lod
    range --live --precision 0 --status "cl_avfx_render_lod_wu: distance LOD threshold in world units. Effects beyond this fade out and are skipped. Default 1536." --status-ru "Расстояние LOD в игровых единицах (за этим расстоянием мелкие эффекты пропадают). По умолчанию 1536." --name-ru "Расстояние LOD" "LOD distance (wu)" cl_avfx_render_lod_wu 256 4096 64
    values --live --status "Choose this value." --status-ru "Выбирает силу погоды (тихо/обычно/сильно)." --name-ru "Сила погоды" --items-ru "Тихо|Обычно|Сильно" "Weather strength" cl_avfx_weather_level light normal heavy
    blank
    range --status "Adjust this value." --status-ru "Настраивает плотность визуала." --live --precision 2 --name-ru "Плотность" "Density" cl_avfx_density 0 1 0.05
    range --status "Adjust this value." --status-ru "Настраивает непрозрачность визуала." --live --precision 2 --name-ru "Непрозрачность" "Alpha" cl_avfx_alpha 0.05 1 0.05
    range --status "Adjust this value." --status-ru "Настраивает радиус погодного объёма." --live --precision 0 --name-ru "Радиус" "Radius" cl_avfx_radius 128 2048 64
    range --status "Adjust this value." --status-ru "Настраивает высоту погодного объёма." --live --precision 0 --name-ru "Высота" "Height" cl_avfx_height 128 2048 64
    range --status "Adjust this value." --status-ru "Настраивает скорость падения/дрейфа." --live --precision 1 --name-ru "Скорость" "Speed" cl_avfx_speed 0.1 4 0.1
    range --status "Adjust this value." --status-ru "Настраивает ветер по оси X." --live --precision 0 --name-ru "Ветер X" "Wind X" cl_avfx_wind_x -512 512 16
    range --status "Adjust this value." --status-ru "Настраивает ветер по оси Y." --live --precision 0 --name-ru "Ветер Y" "Wind Y" cl_avfx_wind_y -512 512 16
    range --status "Adjust this value." --status-ru "Настраивает размер штрихов/частиц (0.25..4.0, шаг 0.025)." --live --precision 3 --name-ru "Размер" "Size" cl_avfx_size 0.25 4 0.025
    range --status "Adjust this value." --status-ru "Настраивает множитель числа частиц для снега / пепла / пыли / дымки и капель дождя (1.0 = по умолчанию, до 100.0 = метель, 0.2 = ×0.2)." --live --precision 1 --name-ru "Множитель числа частиц" "Particle count multiplier" cl_avfx_particle_multiplier 0.2 100 1
    blank
    action --q2prox --align --status "Open this menu section." --status-ru "Открывает подменю настроек дождя и воды (близкие капли, круги от дождя на воде, брызги на твёрдых поверхностях, лужи, кольца на лужах, блики на лужах)." --name-ru "Настройки дождя и воды..." "Rain & Water..." pushmenu q2prox_avfx_rain_impacts
    action --q2prox --align --status "Open this menu section." --status-ru "Открывает подменю общих настроек снега (стиль, мастер-параметры)." --name-ru "Настройки снега..." "Snow..." pushmenu q2prox_avfx_snow
    action --q2prox --align --status "Open this menu section." --status-ru "Открывает подменю настроек снежинок (вид, форма, размер, плотность, вращение)." --name-ru "Настройки снежинок..." "Snowflakes..." pushmenu q2prox_avfx_snowflakes
    action --q2prox --align --status "Open this menu section." --status-ru "Открывает подменю снежного покрова: накопление, GPU material, покрытие, следы, мягкие края и сугробы." --name-ru "Настройки снежного покрова..." "Snow cover..." pushmenu q2prox_avfx_snow_cover
    action --q2prox --align --status "Open this menu section." --status-ru "Открывает прочие эффекты AVFX: подсветку углей пепла, силуэты частиц пепла и все визуальные настройки пара." --name-ru "Прочие эффекты..." "Other effects..." pushmenu q2prox_avfx_other
    action --q2prox --align --status "Open this menu section." --status-ru "Открывает настройки грозы и неба: визуал молний, погодный тинт неба, облака и туман." --name-ru "Настройки грозы и неба..." "Storm & Sky settings..." pushmenu q2prox_avfx_storm_sky
    action --q2prox --align --status "Open this menu section." --status-ru "Открывает настройки звуков AVFX: эмбиент, дождь, снег, вода, пар, гром и шаги по поверхностям." --name-ru "Настройки звуков..." "Sound settings..." pushmenu q2prox_avfx_sounds
    blank
    toggle --live --status "Toggle this setting." --status-ru "Разрешает продвинутые эффекты в мультиплеере." --name-ru "В мультиплеере" --items-ru "Нет|Да" "Multiplayer" cl_avfx_multiplayer
    toggle --live --status "Toggle this setting." --status-ru "Разрешает продвинутые эффекты при просмотре демо." --name-ru "При просмотре демо" --items-ru "Нет|Да" "Demo playback" cl_avfx_demo
    toggle --live --status "Toggle this setting." --status-ru "Зажимает непрозрачность, плотность и бюджет в мультиплеере ради видимости целей." --name-ru "Зажим в мультиплеере" --items-ru "Нет|Да" "Competitive limit" cl_avfx_competitive_limit
    blank
    action --q2prox --align --status "Open this menu section." --status-ru "Открывает подменю расширенных эффектов (эффекты поверхностей, улучшение воды, диагностика и попадания оружия)." --name-ru "Расширенные эффекты..." "Enhanced AVFX..." pushmenu q2prox_avfx_enhanced
    blank
    action --align --refresh --status "Run this action." --status-ru "Сбрасывает все cvar'ы продвинутых эффектов к значениям по умолчанию." --name-ru "Сбросить на значения по умолчанию" "Restore defaults" cl_avfx_defaults
    action --align --status "Run this action." --status-ru "Выполняет действие «инфо о продвинутых эффектах»." --name-ru "Инфо о продвинутых эффектах..." "Advanced effects info..." cl_avfx_info
end

begin q2prox_avfx_presets
    title "AVFX Presets"
    title-ru "Пресеты AVFX"
    style --no-compact
    section "Ultra quality"
    action --q2prox --refresh --status "Ultra baseline from the current local rain+storm AVFX config: optimized renderer, no distance LOD, rain, puddles, rings, runoff, storm sky, lightning, thunder and sounds enabled." --status-ru "Ultra-эталон из текущего локального rain+storm AVFX конфига: оптимизированный рендерер, LOD выключен, дождь, лужи, кольца, потоки, грозовое небо, молнии, гром и звуки включены." --name-ru "Дождь+гроза Ultra" "Rain+Storm Ultra" exec q2pro-x/visual_presets/v_p_rs_u.cfg
    action --q2prox --refresh --status "Ultra rain baseline without storm/lightning events. Keeps rain, puddles, rings, runoff, water contacts and sounds." --status-ru "Ultra-дождь без грозы и молний. Оставляет дождь, лужи, кольца, потоки, контакты с водой и звуки." --name-ru "Дождь Ultra" "Rain Ultra" exec q2pro-x/visual_presets/v_p_r_u.cfg
    action --q2prox --refresh --status "Ultra snow baseline from the current local snow config: optimized snow renderer, no distance LOD, snow cover, drifts, footprints, water effects and sounds enabled." --status-ru "Ultra-снег из текущего локального снежного конфига: оптимизированный рендер снега, LOD выключен, покров, сугробы, следы, вода и звуки включены." --name-ru "Снег Ultra" "Snow Ultra" exec q2pro-x/visual_presets/v_p_s_u.cfg
    section "Quality"
    action --q2prox --refresh --status "Quality rain+storm preset: close to Ultra, with mild distance LOD and slightly reduced particle density." --status-ru "Качественный дождь с грозой: близко к Ultra, мягкий LOD дальности и немного сниженная плотность частиц." --name-ru "Дождь+гроза Quality" "Rain+Storm Quality" exec q2pro-x/visual_presets/v_p_rs_q.cfg
    action --q2prox --refresh --status "Quality rain preset: close to Ultra, no storm, mild distance LOD." --status-ru "Качественный дождь: близко к Ultra, без грозы, мягкий LOD дальности." --name-ru "Дождь Quality" "Rain Quality" exec q2pro-x/visual_presets/v_p_r_q.cfg
    action --q2prox --refresh --status "Quality snow preset: close to Ultra with mild distance LOD and lighter snow detail." --status-ru "Качественный снег: близко к Ultra, мягкий LOD дальности и чуть облегчённая детализация снега." --name-ru "Снег Quality" "Snow Quality" exec q2pro-x/visual_presets/v_p_s_q.cfg
    section "Balanced"
    action --q2prox --refresh --status "Balanced rain+storm preset: stronger LOD and reduced density for a visible performance boost." --status-ru "Сбалансированный дождь с грозой: сильнее LOD и ниже плотность для заметного роста FPS." --name-ru "Дождь+гроза Balanced" "Rain+Storm Balanced" exec q2pro-x/visual_presets/v_p_rs_b.cfg
    action --q2prox --refresh --status "Balanced rain preset: stronger LOD, lower rain/puddle density, no storm." --status-ru "Сбалансированный дождь: сильнее LOD, ниже плотность дождя/луж, без грозы." --name-ru "Дождь Balanced" "Rain Balanced" exec q2pro-x/visual_presets/v_p_r_b.cfg
    action --q2prox --refresh --status "Balanced snow preset: stronger LOD and medium snow cover/detail budgets." --status-ru "Сбалансированный снег: сильнее LOD и средние бюджеты снежного покрова/детализации." --name-ru "Снег Balanced" "Snow Balanced" exec q2pro-x/visual_presets/v_p_s_b.cfg
    section "Performance"
    action --q2prox --refresh --status "Performance rain+storm preset: lower particles, shorter LOD range and simpler detail while keeping sounds enabled." --status-ru "Производительный дождь с грозой: меньше частиц, короче LOD-дистанция и проще детализация, звуки включены." --name-ru "Дождь+гроза Perf" "Rain+Storm Perf" exec q2pro-x/visual_presets/v_p_rs_p.cfg
    action --q2prox --refresh --status "Performance rain preset: lower particles, shorter LOD range, no storm, sounds enabled." --status-ru "Производительный дождь: меньше частиц, короче LOD-дистанция, без грозы, звуки включены." --name-ru "Дождь Perf" "Rain Perf" exec q2pro-x/visual_presets/v_p_r_p.cfg
    action --q2prox --refresh --status "Performance snow preset: lighter snow particles, cover detail and snowdrift budgets, sounds enabled." --status-ru "Производительный снег: облегчены снежинки, покров и сугробы, звуки включены." --name-ru "Снег Perf" "Snow Perf" exec q2pro-x/visual_presets/v_p_s_p.cfg
    section "Ultra performance"
    action --q2prox --refresh --status "Ultra Performance rain+storm preset: aggressive LOD, low particles, puddle rings/bubbles/step splashes/weapon impacts disabled, sounds still enabled." --status-ru "Максимальная производительность для дождя с грозой: агрессивный LOD, мало частиц, кольца/пузыри/брызги шагов/попадания оружия отключены, звуки включены." --name-ru "Дождь+гроза UPerf" "Rain+Storm UPerf" exec q2pro-x/visual_presets/v_p_rs_up.cfg
    action --q2prox --refresh --status "Ultra Performance rain preset: aggressive LOD, low particles, no storm, puddle extras disabled, sounds still enabled." --status-ru "Максимальная производительность для дождя: агрессивный LOD, мало частиц, без грозы, дополнительные эффекты луж отключены, звуки включены." --name-ru "Дождь UPerf" "Rain UPerf" exec q2pro-x/visual_presets/v_p_r_up.cfg
    action --q2prox --refresh --status "Ultra Performance snow preset: aggressive LOD, low particles, no footprints, no snow-water extras, no weapon snow impacts, sounds still enabled." --status-ru "Максимальная производительность для снега: агрессивный LOD, мало частиц, без следов, без снежных эффектов на воде, без попаданий по снегу, звуки включены." --name-ru "Снег UPerf" "Snow UPerf" exec q2pro-x/visual_presets/v_p_s_up.cfg
end

begin q2prox_avfx_enhanced
    title "Enhanced AVFX"
    title-ru "Расширенные эффекты"
    style --no-compact
    toggle --live --status "Toggle this setting." --status-ru "Главный переключатель эффектов поверхностей (улучшение воды, небо по погоде, брызги дождя, круги на воде, снежные шапки); каждая фича управляется своим cvar; обязательная обрезка частиц по жидкостям работает всегда." --name-ru "Эффекты поверхностей" --items-ru "Нет|Да" "Surface effects" cl_avfx_world
    toggle --live --status "Toggle this setting." --status-ru "Авто-связывает состояние погоды с эффектами поверхностей (сильнее дождь/снег → темнее небо, больше кругов и т.п.); выкл. = только ручная сила каждой фичи." --name-ru "Авто по погоде" --items-ru "Нет|Да" "Auto-couple weather" cl_avfx_world_auto
    toggle --live --status "Toggle this setting." --status-ru "Дополнительная детализация поверхностей в выводе инфо о продвинутых эффектах (статистика обрезки по жидкостям, счётчики классификатора поверхностей, счётчики событий кругов / брызг / луж / снега)." --name-ru "Диагностика поверхностей" --items-ru "Нет|Да" "Surface debug" cl_avfx_world_debug
    blank
    toggle --live --status "Toggle this setting." --status-ru "Реакции AVFX когда оружие попадает в настоящую воду или в видимую AVFX лужу (всплески, кольца, пар, тёмные пятна, испарение от BFG). Главный переключатель, по умолчанию выкл. Переключатели по оружию — в подменю." --name-ru "Попадания оружия в воду" --items-ru "Нет|Да" "Weapon water impacts" cl_avfx_weapon_impacts
    action --q2prox --align --status "Open this menu section." --status-ru "Открывает подменю переключателей попаданий в воду по оружию (Бластер, Гипербластер, Пулемёт, Цепной пулемёт, Дробовик, Супер-дробовик, Рейлган, Граната, Гранатомёт, Ракетомёт, BFG)." --name-ru "Настройки по оружию..." "Per-weapon..." pushmenu q2prox_avfx_weapon_impacts
end

begin q2prox_avfx_other
    title "Other AVFX Effects"
    title-ru "Прочие эффекты AVFX"
    style --no-compact
    toggle --live --status "Toggle this setting." --status-ru "Включает или выключает маленькие тёплые источники освещения от ярких углей пепла (сами частицы остаются, отключается только подсветка от каждого уголька)." --name-ru "Свет от углей пепла" --items-ru "Нет|Да" "Ash ember dlights" cl_avfx_ash_dlights
    toggle --live --status "Toggle this setting." --status-ru "Варьируемые силуэты пепла. Когда включено, частицы пепла получают случайные негруглые формы (прямоугольники / треугольники / осколки) через процедурные шейдерные маски вместо одинаковых круглых точек." --name-ru "Силуэты пепла" --items-ru "Круглые|Разные" "Ash sprite shapes" cl_avfx_ash_sprites
    blank
    toggle --live --status "Toggle this setting." --status-ru "Включает визуальные клубы пара, когда реальные сэмплы дождя/снега попадают в лаву. Звук управляется отдельно параметром «Звук пара»." --name-ru "Эффект пара" --items-ru "Нет|Да" "Steam effect" cl_avfx_lava_steam
    range --live --precision 2 --status "Adjust this value." --status-ru "Множитель количества визуального пара у контактов с лавой и горячих кромок (0..2)." --name-ru "Плотность пара" "Steam density" cl_avfx_lava_steam_density 0 2 0.05
    range --live --precision 0 --status "Adjust this value." --status-ru "Высота подъёма клубов пара в игровых единицах." --name-ru "Высота пара" "Steam height" cl_avfx_lava_steam_height 8 256 4
    range --live --precision 0 --status "Adjust this value." --status-ru "Скорость подъёма пара в игровых единицах в секунду." --name-ru "Скорость пара" "Steam speed" cl_avfx_lava_steam_speed 8 160 4
    range --live --precision 0 --status "Adjust this value." --status-ru "Дополнительный радиус захвата контактов погоды/кромок вокруг лавы." --name-ru "Радиус пара у лавы" "Lava steam edge radius" cl_avfx_lava_steam_edge_radius 0 96 4
end

begin q2prox_avfx_sounds
    title "AVFX Sound Settings"
    title-ru "Настройки звуков AVFX"
    style --no-compact
    toggle --live --status "Toggle this setting." --status-ru "Главный переключатель звуков AVFX. Управляет one-shot'ами грома, ticks капель, звуком взрыва молнии, plip'ами колец на воде, шагами по поверхностям и ambient-loop-bed'ами (дождь / ветер / пыль / снег / вода), когда соответствующие WAV-ассеты присутствуют. Уважает s_ambient. Если WAV отсутствует, слой молчит." --name-ru "Звук" --items-ru "Нет|Да" "Sounds" cl_avfx_audio
    range --status "Adjust this value." --status-ru "Настраивает громкость звуков продвинутых эффектов." --live --precision 2 --name-ru "Громкость звуков" "Sound volume" cl_avfx_audio_volume 0 1 0.05
    blank
    toggle --live --status "Toggle this setting." --status-ru "Гейт слоя ветра. Управляет ambient-loop'ами ветра / пыли / пепла / тумана, штормовым wind-вариантом и one-shot'ами порывов, когда соответствующие WAV-ассеты присутствуют. Если WAV отсутствует, слой молчит." --name-ru "Звук ветра" --items-ru "Нет|Да" "Wind sound" cl_avfx_audio_wind
    toggle --live --status "Toggle this setting." --status-ru "Гейт основного слоя шума дождя. Управляет rain_light_loop / rain_loop / rain_heavy_loop и подводным rain-loop'ом, когда соответствующие WAV-ассеты присутствуют. Ticks капель и plip'ы колец на воде идут через свои гейты (cl_avfx_audio_rain_drops / cl_avfx_audio_water). Если WAV отсутствует, слой молчит." --name-ru "Звук дождя" --items-ru "Нет|Да" "Rain sound" cl_avfx_audio_rain
    toggle --live --status "Toggle this setting." --status-ru "Разрешает звуки близких капель (только при пресете дождя). Если WAV отсутствует, слой молчит." --name-ru "Звук капель" --items-ru "Нет|Да" "Rain drop sound" cl_avfx_audio_rain_drops
    toggle --live --status "Toggle this setting." --status-ru "Гейт снежного ambient-слоя. Управляет snow_loop / blizzard_loop и похожими слоями, когда соответствующие WAV-ассеты присутствуют. Если WAV отсутствует, слой молчит." --name-ru "Звук снега" --items-ru "Нет|Да" "Snow sound" cl_avfx_audio_snow
    toggle --live --status "Toggle this setting." --status-ru "Разрешает plip-звуки колец на воде и мягкие звуки водной поверхности для контактов AVFX, когда соответствующие WAV-ассеты присутствуют." --name-ru "Звук воды" --items-ru "Нет|Да" "Water sound" cl_avfx_audio_water
    blank
    toggle --live --status "Toggle this setting." --status-ru "Разрешает короткое шипение испарения, когда реальные сэмплы дождя/снега попадают в лаву. Громкость зависит от размера частиц; визуальный пар управляется отдельно параметром «Эффект пара»." --name-ru "Звук пара" --items-ru "Нет|Да" "Steam sound" cl_avfx_audio_lava_steam
    toggle --live --status "Toggle this setting." --status-ru "Разрешает более мягкое позиционное шипение от тающей снежной массы/воды у кромок лавы. Использует steam_surface_hiss1..3.wav; звук рождается в той же мировой точке, что и мягкий поверхностный пар." --name-ru "Звук пара на поверхностях" --items-ru "Нет|Да" "Surface steam sound" cl_avfx_audio_lava_surface_steam
    toggle --live --status "Toggle this setting." --status-ru "Отдельный звук пара от горячих попаданий оружия по снегу. Визуальный пар остаётся частью эффекта оружия; этот пункт управляет только шипением." --name-ru "Звук пара от попаданий" --items-ru "Нет|Да" "Snow impact steam audio" cl_avfx_weapon_snow_steam_audio
    blank
    toggle --live --status "Toggle this setting." --status-ru "Разрешает звук грома, привязанный к событиям молнии." --name-ru "Гром" --items-ru "Нет|Да" "Thunder" cl_avfx_audio_thunder
    toggle --live --status "Toggle this setting." --status-ru "Разрешает звук взрыва в точке попадания молнии (ракетный звук, затухает с расстоянием)." --name-ru "Звук взрыва от молнии" --items-ru "Нет|Да" "Impact bang" cl_avfx_audio_impact
    blank
    toggle --live --status "cl_avfx_audio_surface_steps: master gate for AVFX surface-contact step audio. Enables snow / wet / puddle step layers when their own sub-gates and assets are present." --status-ru "Главный гейт звуков шагов по AVFX-поверхностям. Разрешает снежные / мокрые / лужевые шаги, если включены их подслои и есть WAV-ассеты." --name-ru "Звуки шагов по поверхностям" --items-ru "Нет|Да" "Surface step sounds" cl_avfx_audio_surface_steps
    toggle --live --status "cl_avfx_audio_puddle_steps: allow wet footstep sounds when the player walks/runs through visible AVFX puddles. Requires Surface step sounds and AVFX sound master." --status-ru "Разрешает звуки мокрых шагов, когда игрок ходит/бежит по видимым AVFX-лужам. Требует включённых «Звуков шагов по поверхностям» и общего звука AVFX." --name-ru "Звуки шагов по лужам" --items-ru "Нет|Да" "Puddle step sounds" cl_avfx_audio_puddle_steps
    toggle --live --status "cl_avfx_audio_snow_steps: allow snow footstep sounds on visible snow cover. Volume/depth follow visible snow and snowdrift growth." --status-ru "Разрешает звуки шагов по видимому снежному покрову. Громкость/глубина зависят от видимого снега и роста сугробов." --name-ru "Звуки шагов по снегу" --items-ru "Нет|Да" "Snow step sounds" cl_avfx_audio_snow_steps
end

begin q2prox_avfx_weapon_impacts
    title "Weapon Water Impacts"
    title-ru "Попадания оружия в воду"
    style --no-compact
    toggle --live --status "Toggle this setting." --status-ru "Главный переключатель реакций AVFX на попадания оружия в воду / лужи. По умолчанию выключено. Переключатели по оружию ниже работают только если этот включён." --name-ru "Попадания оружия в воду" --items-ru "Нет|Да" "Weapon water impacts" cl_avfx_weapon_impacts
    blank
    toggle --live --status "Toggle this setting." --status-ru "Бластер — небольшой всплеск + брызги + несколько колец + шипение пара." --name-ru "Бластер" --items-ru "Нет|Да" "Blaster" cl_avfx_weapon_impact_blaster
    toggle --live --status "Toggle this setting." --status-ru "Гипербластер — эффект бластера на каждый снаряд, скорость ограничена чтобы не было перегруза частиц/звуков." --name-ru "Гипербластер" --items-ru "Нет|Да" "Hyperblaster" cl_avfx_weapon_impact_hyperblaster
    toggle --live --status "Toggle this setting." --status-ru "Пулемёт — всплеск/брызги от пули + небольшие кольца на воде, без пара. Очередь читается как пунктирная линия попаданий по воде." --name-ru "Пулемёт" --items-ru "Нет|Да" "Machinegun" cl_avfx_weapon_impact_machinegun
    toggle --live --status "Toggle this setting." --status-ru "Цепной пулемёт — то же семейство что и пулемёт, но плотнее за счёт большего количества пуль; скорость ограничена." --name-ru "Цепной пулемёт" --items-ru "Нет|Да" "Chaingun" cl_avfx_weapon_impact_chaingun
    toggle --live --status "Toggle this setting." --status-ru "Дробовик — рассеянный паттерн всплесков по дробинкам + кольца на группу, без пара." --name-ru "Дробовик" --items-ru "Нет|Да" "Shotgun" cl_avfx_weapon_impact_shotgun
    toggle --live --status "Toggle this setting." --status-ru "Супер-дробовик — как дробовик, но сильнее/плотнее и шире, учитывает разброс дроби, без пара." --name-ru "Супер-дробовик" --items-ru "Нет|Да" "Super Shotgun" cl_avfx_weapon_impact_supershotgun
    toggle --live --status "Toggle this setting." --status-ru "Рейлган — фонтан/всплеск + много колец + пар с шипением." --name-ru "Рейлган" --items-ru "Нет|Да" "Railgun" cl_avfx_weapon_impact_railgun
    toggle --live --status "Toggle this setting." --status-ru "Граната — большой всплеск/фонтан (~5x от рейлгана) + больше/крупнее колец + неправильное полупрозрачное тёмное пятно, плавно затухающее." --name-ru "Граната" --items-ru "Нет|Да" "Hand Grenade" cl_avfx_weapon_impact_handgrenade
    toggle --live --status "Toggle this setting." --status-ru "Гранатомёт — то же семейство что и граната, со слабой вариацией по гранате; неправильные тёмные пятна, плавно затухающие." --name-ru "Гранатомёт" --items-ru "Нет|Да" "Grenade Launcher" cl_avfx_weapon_impact_grenadelauncher
    toggle --live --status "Toggle this setting." --status-ru "Ракетомёт — огромный фонтан + много радиальных брызг + много колец + большое неправильное тёмное пятно, плавно затухающее + сильный пар." --name-ru "Ракетомёт" --items-ru "Нет|Да" "Rocket Launcher" cl_avfx_weapon_impact_rocketlauncher
    toggle --live --status "Toggle this setting." --status-ru "BFG — огромное облако пара + большое неправильное тёмное пятно испарения, которое плавно возвращается за ~17 секунд (только клиентский визуал, без изменений геймплея)." --name-ru "BFG" --items-ru "Нет|Да" "BFG" cl_avfx_weapon_impact_bfg
    blank
    toggle --live --status "Toggle this setting." --status-ru "Главный переключатель реакций AVFX при попадании оружия по видимому снегу (растопленные пятна / пулевые отверстия / кратеры + снежная пыль + пар где уместно). Требует чтобы был также включён главный переключатель попаданий оружия." --name-ru "Попадания оружия по снегу" --items-ru "Нет|Да" "Weapon snow impacts" cl_avfx_weapon_snow_impacts
    action --q2prox --align --status "Open this menu section." --status-ru "Открывает подменю переключателей попаданий по снегу и скорости исчезновения следов." --name-ru "Настройки снежных попаданий..." "Snow per-weapon..." pushmenu q2prox_avfx_weapon_snow_impacts
end

begin q2prox_avfx_weapon_snow_impacts
    title "Weapon Snow Impacts"
    title-ru "Попадания оружия по снегу"
    style --no-compact
    toggle --live --status "Toggle this setting." --status-ru "Главный переключатель слоя попаданий оружия по снегу. По умолчанию выключено. Переключатели по оружию ниже работают только если этот включён." --name-ru "Попадания оружия по снегу" --items-ru "Нет|Да" "Weapon snow impacts" cl_avfx_weapon_snow_impacts
    range --live --precision 2 --status "Adjust this value." --status-ru "Множитель скорости снежного восстановления для следов выстрелов (отверстия / кратеры / растопленные пятна). 1.0 = норма, 0.1 = ~в 10 раз дольше, 10..20 = намного быстрее зарастают." --name-ru "Исчезновение следов выстрелов" "Weapon mark fade" cl_avfx_weapon_snow_impact_fade_rate 0.1 20.0 0.1
    toggle --live --status "Toggle this setting." --status-ru "Бластер — растапливает снег + небольшой клуб пара + тёмное расплавленное пятно." --name-ru "Бластер" --items-ru "Нет|Да" "Blaster" cl_avfx_weapon_snow_impact_blaster
    toggle --live --status "Toggle this setting." --status-ru "Гипербластер — то же что и Бластер на снаряд, скорость ограничена чтобы пыль/звук не перегружали." --name-ru "Гипербластер" --items-ru "Нет|Да" "Hyperblaster" cl_avfx_weapon_snow_impact_hyperblaster
    toggle --live --status "Toggle this setting." --status-ru "Пулемёт — пулевое отверстие в снегу + небольшая снежная пыль вверх, без пара." --name-ru "Пулемёт" --items-ru "Нет|Да" "Machinegun" cl_avfx_weapon_snow_impact_machinegun
    toggle --live --status "Toggle this setting." --status-ru "Цепной пулемёт — то же что и Пулемёт, плотнее пыли/отверстий." --name-ru "Цепной пулемёт" --items-ru "Нет|Да" "Chaingun" cl_avfx_weapon_snow_impact_chaingun
    toggle --live --status "Toggle this setting." --status-ru "Дробовик — россыпь дробинок-отверстий + сильный выброс снежной пыли." --name-ru "Дробовик" --items-ru "Нет|Да" "Shotgun" cl_avfx_weapon_snow_impact_shotgun
    toggle --live --status "Toggle this setting." --status-ru "Супер-дробовик — примерно как Дробовик ×2: шире разброс, больше пыли и отверстий." --name-ru "Супер-дробовик" --items-ru "Нет|Да" "Super Shotgun" cl_avfx_weapon_snow_impact_supershotgun
    toggle --live --status "Toggle this setting." --status-ru "Рейлган — растапливает крупное пятно + сильный пар над снегом." --name-ru "Рейлган" --items-ru "Нет|Да" "Railgun" cl_avfx_weapon_snow_impact_railgun
    toggle --live --status "Toggle this setting." --status-ru "Граната — крупный снежный кратер + большой фонтан снега + пар." --name-ru "Граната" --items-ru "Нет|Да" "Hand Grenade" cl_avfx_weapon_snow_impact_handgrenade
    toggle --live --status "Toggle this setting." --status-ru "Гранатомёт — то же что и Граната, с лёгкой вариацией на каждую гранату по семени." --name-ru "Гранатомёт" --items-ru "Нет|Да" "Grenade Launcher" cl_avfx_weapon_snow_impact_grenadelauncher
    toggle --live --status "Toggle this setting." --status-ru "Ракетомёт — огромный кратер + огромный снежный фонтан + сильный пар; самая мощная реакция на снегу до BFG." --name-ru "Ракетомёт" --items-ru "Нет|Да" "Rocket Launcher" cl_avfx_weapon_snow_impact_rocketlauncher
    toggle --live --status "Toggle this setting." --status-ru "BFG — растапливает снег на несколько метров вокруг точки удара + огромное облако пара + большое временное растопленное пятно." --name-ru "BFG" --items-ru "Нет|Да" "BFG" cl_avfx_weapon_snow_impact_bfg
end

begin q2prox_avfx_rain_impacts
    title "Rain & Water"
    title-ru "Настройки дождя и воды"
    style --no-compact
    toggle --live --status "Toggle this setting." --status-ru "Главный переключатель улучшенной водной поверхности. Требует cl_avfx_world 1. Лава и слизь не затрагиваются. Все эффекты применяются сразу через шейдерные uniforms — vid_restart не нужен." --name-ru "Улучшенная вода" --items-ru "Нет|Да" "Enhanced water" cl_avfx_water
    values --live --status "Choose this value." --status-ru "Уровень детализации шейдера улучшенной воды." --name-ru "Качество воды" --items-ru "Низкое|Обычное|Высокое" "Water quality" cl_avfx_water_quality low normal high
    range --live --precision 2 --status "Adjust this value." --status-ru "Сила визуала улучшенной воды (0..1, по умолчанию 0.5). Применяется сразу — vid_restart не нужен." --name-ru "Сила воды" "Water strength" cl_avfx_water_strength 0 1 0.05
    values --live --status "Choose this value." --status-ru "Профиль цвета воды — любой природный или искусственный оттенок воды.  Применяется сразу (без vid_restart)." --name-ru "Цвет воды" --items-ru "Исходный|Естественный|Чистый|Тропический|Бассейн|Океан|Озеро|Ледник|Глубокий|Болото|Токсичный" "Water color" cl_avfx_water_color original natural clear tropical pool ocean lake glacier deep murky toxic
    toggle --live --status "Toggle this setting." --status-ru "Анимированный слой ряби на поверхности воды (отдельно от кольцевых ударов от капель дождя)." --name-ru "Рябь на поверхности" --items-ru "Нет|Да" "Surface ripples" cl_avfx_water_ripples
    toggle --live --status "Toggle this setting." --status-ru "Дрейфующие пятна пены по поверхности воды (мелкие пятна плавно появляются, дрейфуют и исчезают — как у настоящей воды)." --name-ru "Дрейфующая пена" --items-ru "Нет|Да" "Drifting foam" cl_avfx_water_foam
    blank
    toggle --live --status "Toggle this setting." --status-ru "Включает или выключает близкие капли (только при пресете дождя)." --name-ru "Близкие капли (дождь)" --items-ru "Нет|Да" "Rain drops" cl_avfx_rain_drops
    range --status "Adjust this value." --status-ru "Настраивает плотность близких капель дождя." --live --precision 2 --name-ru "Плотность близких капель" "Rain drop density" cl_avfx_rain_drop_density 0 1 0.05
    blank
    toggle --live --status "Toggle this setting." --status-ru "Расходящиеся круги при попадании дождя по поверхности воды (лава/слизь не получают водных колец)." --name-ru "Круги от дождя на воде" --items-ru "Нет|Да" "Rain ripples on water" cl_avfx_rain_water_ripples
    range --live --precision 2 --status "Adjust this value." --status-ru "Доля попаданий по воде, порождающих кольца (0..1, по умолчанию 1.0)." --name-ru "Плотность колец на воде" "Ripple density" cl_avfx_rain_ripple_density 0 1 0.05
    range --live --precision 2 --status "Adjust this value." --status-ru "Скорость расширения и затухания колец (0.1..3.0; 1.0 = по умолчанию; меньше — медленнее, больше — быстрее)." --name-ru "Скорость колец на воде" "Ripple speed" cl_avfx_rain_ripple_speed 0.1 3.0 0.1
    toggle --live --status "Toggle this setting." --status-ru "Брызги-частицы при попадании дождя в твёрдые (не жидкие) поверхности." --name-ru "Брызги дождя" --items-ru "Нет|Да" "Rain splashes" cl_avfx_rain_splashes
    range --live --precision 2 --status "Adjust this value." --status-ru "Доля попаданий дождя в твёрдую поверхность, дающих брызги (0..1, по умолчанию 1.0)." --name-ru "Плотность брызг" "Splash density" cl_avfx_rain_splash_density 0 1 0.05
    range --live --precision 2 --status "Adjust this value." --status-ru "Размер всплеска брызг (0.2..5.0; 1.0 = по умолчанию; 0.2 = в 5 раз меньше; 5.0 = в 5 раз больше; шаг 0.01)." --name-ru "Размер брызг" "Splash size" cl_avfx_rain_splash_scale 0.2 5.0 0.01
    toggle --live --status "cl_avfx_puddle_step_splashes: visual splash particles when the local player runs through visible AVFX puddles. Slow walking stays calm; only jog/run speed throws water." --status-ru "Визуальные брызги, когда игрок бежит по видимым AVFX-лужам. Медленная ходьба остаётся спокойной; вода разлетается только на пробежке/беге." --name-ru "Брызги от шагов по лужам" --items-ru "Нет|Да" "Puddle step splashes" cl_avfx_puddle_step_splashes
    range --live --precision 2 --status "cl_avfx_puddle_step_splash_amount: intensity multiplier for puddle step splashes (0..5; 1.0 = default). 0 keeps wet step audio but disables visual foot splashes." --status-ru "Сила брызг от шагов по лужам (0..5; 1.0 = по умолчанию). 0 оставляет звуки мокрых шагов, но выключает видимые брызги." --name-ru "Сила брызг от шагов" "Puddle step splash amount" cl_avfx_puddle_step_splash_amount 0 5 0.05
    toggle --live --status "cl_avfx_rain_on_eyes: optional wet-lens blur / misting while standing under open-sky rain. Off by default for visibility; disappears under roofs and underwater." --status-ru "Опциональное мокрое зрение: неравномерный блюр и мутнение линзы, когда игрок стоит под открытым небом. По умолчанию выключено ради видимости; пропадает под крышей и под водой." --name-ru "Заливание глаз дождём" --items-ru "Нет|Да" "Rain on eyes" cl_avfx_rain_on_eyes
    range --live --precision 2 --status "cl_avfx_rain_on_eyes_amount: wet-lens blur / misting intensity (0..1; default 0.65). It still scales with rain density and weather strength." --status-ru "Сила мокрой линзы / мутнения взгляда (0..1; по умолчанию 0.65). Дополнительно зависит от плотности дождя и силы погоды." --name-ru "Сила заливания глаз" "Rain-on-eyes amount" cl_avfx_rain_on_eyes_amount 0 1 0.05
    blank
    toggle --live --status "Toggle this setting." --status-ru "Лужи (мокрые пятна) на горизонтальных поверхностях где идёт дождь." --name-ru "Лужи от дождя" --items-ru "Нет|Да" "Rain puddles" cl_avfx_rain_puddles
    range --live --precision 2 --status "Adjust this value." --status-ru "Доля попаданий дождя в горизонтальные поверхности, дающих лужу (0..1, по умолчанию 1.0)." --name-ru "Плотность луж" "Puddle density" cl_avfx_rain_puddle_density 0 1 0.05
    range --live --precision 2 --status "Adjust this value." --status-ru "Непрозрачность луж (0..1, по умолчанию 0.4)." --name-ru "Непрозрачность луж" "Puddle alpha" cl_avfx_rain_puddle_alpha 0 1 0.05
    range --live --precision 2 --status "Adjust this value." --status-ru "Размер луж (0.2..100.0; 1.0 = по умолчанию; 0.2 = в 5 раз меньше; 100 = в 100 раз больше; шаг 0.02)." --name-ru "Размер луж" "Puddle size" cl_avfx_rain_puddle_max_size 0.2 100 0.02
    range --live --precision 2 --status "Adjust this value." --status-ru "Максимальное количество луж на поверхностях (0.2..500; 1.0 = по умолчанию ~384; 0.2 = в 5 раз меньше; 500 = заполняет весь буфер 4096)." --name-ru "Количество луж" "Puddle count" cl_avfx_rain_puddle_count 0.2 500 1
    range --live --precision 3 --status "Adjust this value." --status-ru "Скорость заполнения поверхностей лужами (0.01..20.0; 0.2 = по умолчанию 5× медленнее текущего; 0.01 = 100× медленнее; 20 = 20× быстрее, мгновенное насыщение)." --name-ru "Скорость заполнения луж" "Puddle fill rate" cl_avfx_rain_puddle_fill_rate 0.01 20 0.05
    blank
    toggle --live --status "Toggle this setting." --status-ru "Кольца дождя на лужах. Когда капля дождя падает на уже мокрую поверхность, расходится плоское кольцо по плоскости лужи (рендер через AVFX overlay, без нагрузки на entity бюджет)." --name-ru "Кольца на лужах" --items-ru "Нет|Да" "Puddle rings" cl_avfx_rain_puddle_rings
    toggle --live --status "Toggle this setting." --status-ru "Стекание воды с краёв луж. Когда лужа на верху уступа или обрыва, с её края вниз стекает мягкая струйка воды до нижней поверхности. Толщина струи зависит от размера лужи; маленькие лужи дают одну струйку, большие — иногда две (рандомизировано по семени лужи)." --name-ru "Стекание воды с луж" --items-ru "Нет|Да" "Puddle runoff" cl_avfx_rain_puddle_runoff
    range --live --precision 2 --status "Adjust this value." --status-ru "Множитель толщины струй воды (0.1..5.0; 1.0 = по умолчанию; применяется поверх рассчитанной по размеру лужи и внутреннего рандома толщины)." --name-ru "Толщина струй воды" "Puddle runoff scale" cl_avfx_rain_puddle_runoff_scale 0.1 5 0.05
    range --live --precision 2 --status "Adjust this value." --status-ru "Количество тёмных партиклов грязи/пыли, текущих внутри струй (0..3; 1.0 = по умолчанию ~4 на струю; 0 = выключить; частицы всегда внутри струи и масштабируются с её толщиной)." --name-ru "Грязь в струях воды" "Puddle runoff dust" cl_avfx_rain_puddle_runoff_dust 0 3 0.1
    range --live --precision 2 --status "Adjust this value." --status-ru "Скорость роста струи из лужи сверху-вниз (0.05..10; 0.2 = по умолчанию = в 5× медленнее базы, вода заметно стекает за ~3.5 сек; 1.0 = база ~700мс; 10 = почти мгновенно)." --name-ru "Скорость роста струи из лужи" "Puddle runoff grow speed" cl_avfx_rain_puddle_runoff_grow_speed 0.05 10 0.05
    range --live --precision 2 --status "Adjust this value." --status-ru "Количество частиц грязи внутри луж (0..3; 1.0 = по умолчанию; 0 = выключить). На наклонных лужах частицы текут вниз по склону, на плоских — хаотично. Количество автоматически растёт с размером лужи — большие лужи = больше частиц, реалтайм отрастает по мере увеличения лужи." --name-ru "Грязь внутри луж" "Puddle dust" cl_avfx_rain_puddle_dust 0 3 0.1
    range --live --precision 2 --status "Adjust this value." --status-ru "Размер частиц грязи внутри луж (0.1..3.0; 1.0 = по умолчанию). Независим от количества — настраивает видимый масштаб частиц." --name-ru "Размер грязи в лужах" "Puddle dust size" cl_avfx_rain_puddle_dust_size 0.1 3 0.05
    blank
    toggle --live --status "Toggle this setting." --status-ru "Кольца + пена в местах соприкосновения воды с водой. Покрывает (а) попадание струй воды в водную поверхность (пенное кольцо + рябь у точки удара) и (б) кромку лужи, граничащую с водой (пена + кольца по дуге соприкосновения). Выкл = 0 — поверхность остаётся спокойной." --name-ru "Контакт-эффекты в воде" --items-ru "Нет|Да" "Water contact effects" cl_avfx_rain_water_contact
    toggle --live --status "Toggle this setting." --status-ru "Пузыри пены в местах соприкосновения воды с водой. Появляются у точки удара, кружатся возле неё, потом разлетаются вглубь и плавно гаснут. Подключаются только если включены 'Контакт-эффекты в воде'." --name-ru "Пузыри на воде" --items-ru "Нет|Да" "Water contact bubbles" cl_avfx_rain_water_contact_bubbles
    range --live --precision 2 --status "Adjust this value." --status-ru "Размер пузырей пены (0.1..5.0; 1.0 = по умолчанию)." --name-ru "Размер пузырей" "Bubble size" cl_avfx_rain_water_contact_bubble_size 0.1 5 0.05
    range --live --precision 2 --status "Adjust this value." --status-ru "Количество (плотность) пузырей пены (0.1..10.0; 1.0 = по умолчанию)." --name-ru "Количество пузырей" "Bubble density" cl_avfx_rain_water_contact_bubble_density 0.1 10 0.1
    blank
    toggle --live --status "Toggle this setting." --status-ru "Фейковые блики на лужах. Добавляет анимированные процедурные блики и подмешивает цвет неба к лужам, чтобы мокрый асфальт читался как мокрый, а не просто тёмный. Без настоящих отражений — чистая шейдерная процедура, ограниченная альфой лужи." --name-ru "Блики на лужах" --items-ru "Нет|Да" "Puddle specular" cl_avfx_rain_puddle_specular
    range --live --precision 2 --status "Adjust this value." --status-ru "Сила бликов на лужах (0..1; 0.6 = по умолчанию; 1.0 = максимум)." --name-ru "Сила бликов на лужах" "Puddle specular strength" cl_avfx_rain_puddle_specular_strength 0 1 0.05
end

begin q2prox_avfx_snow
    title "Snow"
    title-ru "Настройки снега"
    style --no-compact
    action --q2prox --align --status "Open this menu section." --status-ru "Открывает подменю настроек снежинок." --name-ru "Настройки снежинок..." "Snowflakes..." pushmenu q2prox_avfx_snowflakes
    action --q2prox --align --status "Open this menu section." --status-ru "Открывает подменю настроек снежного покрова." --name-ru "Настройки снежного покрова..." "Snow cover..." pushmenu q2prox_avfx_snow_cover
    blank
    toggle --live --status "Toggle this setting." --status-ru "Снег на воде: мягкие круги, мелкие дрейфующие тающие снежинки и редкие блёстки с сиянием. Вода остаётся водой." --name-ru "Снег на воде" --items-ru "Нет|Да" "Snow on water" cl_avfx_snow_water_effects
    range --live --precision 2 --status "cl_avfx_snow_water_patch_density: fraction of snow-water contacts that spawn drifting melt specks/glints (0..1)." --status-ru "Доля контактов снега с водой, которые рождают дрейфующие тающие снежинки/блёстки (0..1)." --name-ru "Плотность снега на воде" "Snow-on-water density" cl_avfx_snow_water_patch_density 0 1 0.05
    range --live --precision 2 --status "Adjust this value." --status-ru "Размер снежинок на воде (0.01..4.0, по умолчанию 0.20; по умолчанию в 5 раз меньше первой T2-сборки)." --name-ru "Размер снега на воде" "Snow-on-water size" cl_avfx_snow_water_patch_size 0.01 4.0 0.01
    range --live --precision 0 --status "Adjust this value." --status-ru "Время снега на воде в секундах (1..100, по умолчанию 10; можно в 10 раз короче или в 10 раз дольше)." --name-ru "Время снега на воде" "Snow-on-water time" cl_avfx_snow_water_patch_lifetime 1 100 1
    range --live --precision 1 --status "cl_avfx_snow_water_patch_drift_speed: drift speed for floating snow specks on water." --status-ru "Скорость дрейфа плавающих снежинок на воде." --name-ru "Дрейф снега на воде" "Snow-on-water drift" cl_avfx_snow_water_patch_drift_speed 0 24 1
    blank
    values --live --status "Choose this value." --status-ru "0=низкое (без блёсток, половина рельефа), 1=нормальное, 2=высокое.  Действует только при включённом GPU материале." --name-ru "Качество GPU снега" --items-ru "Низкое|Нормальное|Высокое" "Snow GPU quality" cl_avfx_snow_gpu_quality low normal high
    range --live --precision 2 --status "Adjust this value." --status-ru "Амплитуда world-noise (0..1, по умолчанию 0.45).  Паттерн прибит к плоскости пола карты." --name-ru "Шум поверхности снега" "Snow noise" cl_avfx_snow_gpu_noise 0 1 0.05
    range --live --precision 2 --status "Adjust this value." --status-ru "Сила иллюзии рельефа (0..1, по умолчанию 0.35).  Холодный синий теневой тон + лёгкое подсвечивание по noise-полю." --name-ru "Рельеф снега" "Snow relief" cl_avfx_snow_gpu_relief 0 1 0.05
    range --live --precision 2 --status "Snow sparkle strength. Tiny icy glints also feed the bloom effect." --status-ru "Сила блёсток снега. Маленькие ледяные искры также попадают в эффект сияния/bloom." --name-ru "Блёстки снега" "Snow sparkles" cl_avfx_snow_gpu_glitter 0 1 0.05
end

begin q2prox_avfx_snowflakes
    title "Snowflakes"
    title-ru "Настройки снежинок"
    style --no-compact
    toggle --live --status "Toggle this setting." --status-ru "3D-снежинки батчем — мировые квад-снежинки рисуются дополнительно к обычному частичному снегу.  Ориентация каждой снежинки фиксируется при спавне и остаётся привязанной к миру — при повороте обзора снежинки видны под разными углами, что даёт parallax / объёмное ощущение настоящего 3D-снегопада.  Отдельный 800-слот пул (v2) и батч-draw после частиц." --name-ru "3D-снежинки" --items-ru "Нет|Да" "3D snowflakes" cl_avfx_snow_flakes_3d
    values --live --status "Choose this value." --status-ru "Пресет качества 3D-снега. 0=Вручную (читает per-feature cvars ниже); 1=Производительность (редкий single-quad, половинный радиус); 2=Баланс (v2 baseline); 3=Качество (максимум плотности, полное качество).  Количество и размер остаются живыми при любом пресете." --name-ru "Пресет 3D-снега" --items-ru "Вручную|Производительность|Баланс|Качество" "3D snow preset" cl_avfx_snow_flakes_3d_quality manual performance balanced rich
    blank
    range --live --precision 2 --status "Adjust this value." --status-ru "Множитель плотности 3D-снежинок (0.2..2.0; по умолчанию 2.0, clamp на потолок пула 800).  Умножает плотность выбранного пресета 3D-снега; работает в любом режиме пресета." --name-ru "Количество 3D-снежинок" "3D flake count" cl_avfx_snow_flakes_3d_count 0.2 2.0 0.05
    range --live --precision 2 --status "Adjust this value." --status-ru "Множитель размера 3D-снежинок при спавне (0.03..3.0; по умолчанию 0.2 = мелкий снег; 3.0 = крупные хлопья / метель)." --name-ru "Размер 3D-снежинок" "3D flake size" cl_avfx_snow_flakes_3d_size 0.03 3.0 0.01
    toggle --live --status "Toggle this setting." --status-ru "Перекрёстные квады. Да (по умолчанию) — каждая снежинка рисуется как два перпендикулярных квада, чтобы не пропадать под ребро-на-камеру углом (стоимость в 2 раза по vertex-пропускной способности). Нет — single-quad режим (дешевле)." --name-ru "Перекрёстные снежинки" --items-ru "Нет|Да" "Crossed flakes" cl_avfx_snow_flakes_3d_crossed
    toggle --live --status "Toggle this setting." --status-ru "Вращение каждой снежинки. Да (по умолчанию) — каждая снежинка медленно вращается вокруг своей оси (0.2..1.5 рад/с, один оборот за 4..31 сек) при падении — читается как живой снегопад. Нет — застывшая ориентация при спавне." --name-ru "Вращение снежинок" --items-ru "Нет|Да" "Flake tumble" cl_avfx_snow_flakes_3d_tumble
    range --live --precision 2 --status "Adjust this value." --status-ru "LOD по near-радиусу (доля spawn-радиуса). Снежинки в этой доле рисуются как 3D; более дальние пропускают 3D submit и particle_t снег вытягивает их на расстоянии. 1.0 (по умолчанию) — без LOD; меньше = больше LOD = меньше vertex-стоимость. 0.6 ≈ 64% экономии vertex; 0.1 = агрессивно." --name-ru "LOD-радиус 3D-снежинок" "3D flake LOD" cl_avfx_snow_flakes_3d_near 0.1 1.0 0.05
end

begin q2prox_avfx_snow_cover
    title "Snow Cover"
    title-ru "Настройки снежного покрова"
    style --no-compact
    toggle --live --status "Toggle this setting." --status-ru "Снег как GPU material на реальных BSP-поверхностях (продакшен-путь).  Автоматически активирует receiver inventory + exposure FBO + атлас покрытия." --name-ru "GPU снег на поверхностях" --items-ru "Нет|Да" "GPU snow surface" cl_avfx_snow_gpu_material
    toggle --live --status "Toggle this setting." --status-ru "GPU материал снега — добавляет noise / холодный тон / рельеф / блёстки поверх накопленного снега.  Работает только там, где CPU validity уже разрешил снег (без leak в помещения)." --name-ru "GPU материал снега" --items-ru "Нет|Да" "Snow GPU material" cl_avfx_snow_gpu
    range --live --precision 2 --status "Adjust this value." --status-ru "Прозрачность GPU material снега (0..1, по умолчанию 1.0)." --name-ru "Прозрачность снега" "GPU snow alpha" cl_avfx_snow_gpu_material_alpha 0 1 0.05
    blank
    toggle --live --status "Toggle this setting." --status-ru "Атлас покрытия снега в world-XY — умножает alpha снега на коэффициент покрытия, накапливаемый со временем по точкам падения снежинок." --name-ru "Заполнение снегом со временем" --items-ru "Нет|Да" "Snow coverage atlas" cl_avfx_snow_gpu_coverage
    range --live --precision 2 --status "Adjust this value." --status-ru "Floor per-pixel на атласе покрытия (0..1, по умолчанию 0.0).  1.0 = карта сразу полностью заснежена; 0.0 = видимое органическое накопление с чистого уровня." --name-ru "Заполненность снегом" "Coverage prefill" cl_avfx_snow_gpu_coverage_prefill 0 1 0.05
    range --live --precision 2 --status "Snow coverage fill speed (0.01..3.00, default 0.06).  Low values build snow slowly; high values fill fast without the old near-instant 20x range." --status-ru "Скорость заполнения снегом (0.01..3.00, по умолчанию 0.06).  Низкие значения дают медленное накопление; высокие заполняют быстро, но без старого почти мгновенного диапазона до 20." --name-ru "Скорость заполнения снегом" "Snow fill rate" cl_avfx_snow_accum_fill_rate 0.01 3 0.01
    blank
    toggle --live --status "Toggle this setting." --status-ru "Шейдерное мягкое затухание у exposed-краёв receiver-полигонов (C9, по умолчанию вкл).  Заменяет C8 inset mesh." --name-ru "Мягкий край (C9)" --items-ru "Нет|Да" "Edge feather" cl_avfx_snow_gpu_edge_feather
    range --live --precision 0 --status "Adjust this value." --status-ru "Ширина feather-полосы вдоль exposed-краёв в world-units (1..256, по умолчанию 24)." --name-ru "Ширина мягкого края (wu)" "Edge feather width" cl_avfx_snow_gpu_edge_feather_wu 1 256 1
    range --live --precision 0 --status "Adjust this value." --status-ru "Амплитуда шума, добавляемая к feather-расстоянию (0..32, по умолчанию 10)." --name-ru "Шум мягкого края (wu)" "Edge feather noise" cl_avfx_snow_gpu_edge_noise_wu 0 32 1
    blank
    toggle --live --status "Toggle this setting." --status-ru "Качественная иллюзия объёма сугробов." --name-ru "Объём сугробов" --items-ru "Нет|Да" "Snowdrift volume" cl_avfx_snow_gpu_pom
    range --live --precision 2 --status "Adjust this value." --status-ru "Сила эффекта объёма сугробов." --name-ru "Сугробы — сила объёма" "Snowdrift strength" cl_avfx_snow_gpu_pom_alpha 0 1 0.05
    range --live --precision 1 --status "Adjust this value." --status-ru "Максимальная виртуальная высота сугробов в world-units." --name-ru "Сугробы — высота (wu)" "Snowdrift height (wu)" cl_avfx_snow_gpu_pom_depth_wu 0 32 1
    range --live --precision 0 --status "Adjust this value." --status-ru "Детализация визуального объёма сугробов." --name-ru "Сугробы — детализация" "Snowdrift detail" cl_avfx_snow_gpu_pom_steps 4 32 1
    toggle --live --status "Toggle this setting." --status-ru "Плавно убирает объём сугробов у краёв снега." --name-ru "Сугробы — мягкий край" --items-ru "Нет|Да" "Snowdrift edge fade" cl_avfx_snow_gpu_pom_edge_taper
    range --live --precision 2 --status "Adjust this value." --status-ru "Общая сила рельефа сугробов." --name-ru "Глубина сугробов" "Snowdrift depth" cl_avfx_snow_gpu_relief_intensity 0 1 0.05
    range --live --precision 0 --status "Time for snowdrift volume growth in seconds. 0=off/current instant volume." --status-ru "Время роста объёма сугробов в секундах. 0=выкл, объём сразу." --name-ru "Рост сугробов (сек)" "Snowdrift growth (sec)" cl_avfx_snow_gpu_pom_grow_time 0 3600 1
    blank
    toggle --live --status "Toggle this setting." --status-ru "Снежные комочки на границе снежной зоны вместо ровного fade." --name-ru "Снежные комочки на границе" --items-ru "Нет|Да" "Snow edge clumps" cl_avfx_snow_gpu_clumpy_edge
    range --live --precision 2 --status "Adjust this value." --status-ru "Частота паттерна комков (0.02..2.0, по умолчанию 0.18)." --name-ru "Размер снежных комочков" "Snow clump frequency" cl_avfx_snow_gpu_clumpy_freq 0.02 2.0 0.02
    range --live --precision 0 --status "Adjust this value." --status-ru "Ширина мягкого перехода на краю снежной зоны." --name-ru "Сглаживание края (wu)" "Snow edge softness (wu)" cl_avfx_snow_gpu_material_edge_fade_wu 0 256 4
    range --live --precision 0 --status "Adjust this value." --status-ru "Качество сглаживания края снежной зоны." --name-ru "Качество края снега" "Snow edge quality" cl_avfx_snow_gpu_exposure_taps 1 9 1
    blank
    toggle --live --status "Toggle this setting." --status-ru "GPU атлас следов — глубина boot-prints вырезается прямо в material снега." --name-ru "Следы GPU в материале" --items-ru "Нет|Да" "GPU footprints" cl_avfx_snow_gpu_footprints
    range --live --precision 1 --status "Adjust this value." --status-ru "Размер boot-print splat в world-units (2..32, по умолчанию 14)." --name-ru "Размер следа (wu)" "Footprint size" cl_avfx_snow_gpu_footprint_size_wu 2 32 1
    range --live --precision 2 --status "Adjust this value." --status-ru "Глубина свежего следа (0..1, по умолчанию 0.75)." --name-ru "Глубина следа" "Footprint depth" cl_avfx_snow_gpu_footprint_depth 0 1 0.05
    toggle --live --status "Toggle this setting." --status-ru "Следы игрока на снегу (вырезает трейл в снежном поле)." --name-ru "Следы на снегу" --items-ru "Нет|Да" "Snow footprints" cl_avfx_snow_footprints
    range --live --precision 2 --status "Adjust this value." --status-ru "Глубина следа за шаг (0..1, по умолчанию 0.65)." --name-ru "Глубина следов" "Snow footprint strength" cl_avfx_snow_footprint_strength 0 1 0.05
    range --live --precision 2 --status "Footprint fade speed multiplier. 1=normal, 0.1=10x slower, 10=10x faster." --status-ru "Множитель скорости исчезновения следов. 1=обычно, 0.1=в 10 раз медленнее, 10=в 10 раз быстрее." --name-ru "Исчезновение следов" "Footprint fade speed" cl_avfx_snow_footprint_fade_rate 0.1 20 0.1
    blank
    toggle --live --status "cl_avfx_snow_accum: base snow accumulation feed for the snow preset. Keeps surface snow systems active; presets normally leave this on." --status-ru "Базовое накопление снега для снежного пресета. Оставляет активными системы снежного покрытия; пресеты обычно держат это включённым." --name-ru "Накопление снега" --items-ru "Нет|Да" "Snow accumulation" cl_avfx_snow_accum
    range --live --precision 2 --status "Adjust this value." --status-ru "Доля точек снега, попавших в горизонтальные поверхности, дающих шапку (0..1, по умолчанию 1.0)." --name-ru "Плотность накопления" "Accum density" cl_avfx_snow_accum_density 0 1 0.05
    range --live --precision 2 --status "Adjust this value." --status-ru "Непрозрачность снежных шапок (0..1, по умолчанию 1.0)." --name-ru "Непрозрачность шапок" "Snow alpha" cl_avfx_snow_accum_alpha 0 1 0.05
    range --live --precision 3 --status "Adjust this value." --status-ru "Максимальный размер снежной шапки (0.04..4.0, по умолчанию 4.0)." --name-ru "Размер шапок" "Snow max size" cl_avfx_snow_accum_max_size 0.04 4.0 0.004
    range --live --precision 2 --status "Adjust this value." --status-ru "Множитель количества шапок (0.2..500, по умолчанию 500)." --name-ru "Количество шапок" "Snow count" cl_avfx_snow_accum_count 0.2 500 1
    blank
    toggle --live --status "cl_avfx_snow_field: continuous snow blanket via surface field, used by the accepted material snow-cover path." --status-ru "Сплошной снежный покров через surface field, используется принятым material-путём снежного покрытия." --name-ru "Снежный покров" --items-ru "Шапки|Покров" "Snow blanket" cl_avfx_snow_field
    toggle --live --status "cl_avfx_snow_volume: raised 3D snow volume on near snow-cover cells; far cells stay cheaper/flat." --status-ru "Объёмный 3D снежный покров на ближних клетках; дальние клетки остаются более дешёвыми/плоскими." --name-ru "Объёмный покров" --items-ru "Плоский|Объёмный" "Snow volume" cl_avfx_snow_volume
    range --live --precision 1 --status "cl_avfx_snow_volume_h_max: saturation snow depth in world units (0..32, default 10.0)." --status-ru "Глубина снега в насыщении (0..32, по умолчанию 10.0)." --name-ru "Глубина объёма" "Snow depth" cl_avfx_snow_volume_h_max 0 32 0.5
    range --live --precision 2 --status "cl_avfx_snow_volume_growth: depth growth rate vs coverage (0.05..4.0, default 0.35)." --status-ru "Скорость роста объёмного покрова (0.05..4.0, по умолчанию 0.35)." --name-ru "Скорость роста объёма" "Volume growth" cl_avfx_snow_volume_growth 0.05 4.0 0.05
    range --live --precision 0 --status "cl_avfx_snow_volume_near_wu: volume near radius (0..4096, default 4096)." --status-ru "Радиус объёмного покрова (0..4096, по умолчанию 4096)." --name-ru "Радиус объёма" "Volume near radius" cl_avfx_snow_volume_near_wu 0 4096 32
    range --live --precision 0 --status "Adjust this value." --status-ru "Размер плитки текстуры (16..256, по умолчанию 184)." --name-ru "Плитка текстуры" "Snow texture tile" cl_avfx_snow_volume_uv_scale 16 256 4
end

begin q2prox_avfx_storm_sky
    title "Storm & Sky Settings"
    title-ru "Настройки грозы и неба"
    style --no-compact
    toggle --live --status "Toggle this setting." --status-ru "Включает или выключает слой грозы (только при пресете дождя)." --name-ru "Гроза" --items-ru "Нет|Да" "Storm" cl_avfx_storm
    range --live --precision 2 --status "Adjust this value." --status-ru "Настраивает частоту молний/грома." --name-ru "Плотность грозы" "Storm density" cl_avfx_storm_density 0 1 0.05
    blank
    toggle --live --status "Toggle this setting." --status-ru "Разрешает визуальные вспышки молнии при включённой грозе." --name-ru "Молния" --items-ru "Нет|Да" "Lightning" cl_avfx_lightning
    range --live --precision 1 --status "Adjust this value." --status-ru "Настраивает множитель частоты молний (1.0 = по умолчанию, до 100.0 = очень часто, 0.1 = редкие вспышки)." --name-ru "Частота молний" "Lightning frequency" cl_avfx_lightning_frequency 0.1 100 0.5
    range --live --precision 1 --status "Adjust this value." --status-ru "Настраивает множитель длительности молнии (1.0 = по умолчанию ~180мс, до 10.0 = ~1.8с разряд, 0.1 = короткая вспышка)." --name-ru "Длительность молнии" "Lightning duration" cl_avfx_lightning_duration 0.1 10 0.1
    toggle --live --status "Toggle this setting." --status-ru "Включает или выключает экранную вспышку при ударе (молния и взрыв в точке остаются, отключается только окраска экрана)." --name-ru "Вспышка экрана" --items-ru "Нет|Да" "Screen flash" cl_avfx_lightning_screen_flash
    range --live --precision 2 --status "Adjust this value." --status-ru "Настраивает размер взрыва в точке попадания молнии (1.0 = по умолчанию; до 5.0 = очень крупный взрыв; 0 = без взрыва; на воде автоматически уменьшается; шаг 0.01)." --name-ru "Размер взрыва от молнии" "Lightning impact size" cl_avfx_lightning_impact_scale 0 5 0.01
    toggle --live --status "Toggle this setting." --status-ru "Включает или выключает тёплый источник освещения в точке попадания молнии (частицы / дым / экранная вспышка не затрагиваются)." --name-ru "Свет в точке удара" --items-ru "Нет|Да" "Impact dlight" cl_avfx_lightning_impact_dlight
    toggle --live --status "Toggle this setting." --status-ru "Главный переключатель погодного неба — добавляет тинт / облака на sky-поверхностях во время погоды." --name-ru "Погодное небо" --items-ru "Нет|Да" "Weather sky" cl_avfx_sky
    toggle --live --status "Toggle this setting." --status-ru "Авто-связывает небо с силой погоды (сильнее дождь/снег → темнее небо / плотнее облака)." --name-ru "Авто по погоде" --items-ru "Нет|Да" "Auto-couple weather" cl_avfx_sky_auto
    values --live --status "Choose this value." --status-ru "Режим: 0=выкл, 1=тинт, 2=тинт+облака, 3=замена (зарезервировано)." --name-ru "Режим неба" --items-ru "Выкл.|Тинт|Тинт+облака|Замена (зарез.)" "Sky mode" cl_avfx_sky_override_mode off tint overlay replace
    range --live --precision 2 --status "Adjust this value." --status-ru "Базовое затемнение неба (0..1, по умолчанию 0.35)." --name-ru "Темнота неба" "Sky darkness" cl_avfx_sky_darkness 0 1 0.05
    range --live --precision 2 --status "Adjust this value." --status-ru "Сила штормового оттенка (0..1, по умолчанию 0.35)." --name-ru "Тинт грозы" "Storm tint" cl_avfx_sky_storm_tint 0 1 0.05
    blank
    toggle --live --status "Toggle this setting." --status-ru "Включает процедурный слой облаков на небе." --name-ru "Облака" --items-ru "Нет|Да" "Cloud overlay" cl_avfx_sky_clouds
    range --live --precision 2 --status "Adjust this value." --status-ru "Интенсивность слоя облаков (0..1, по умолчанию 0.5)." --name-ru "Плотность облаков" "Cloud intensity" cl_avfx_sky_cloud_intensity 0 1 0.05
    range --live --precision 2 --status "Adjust this value." --status-ru "Скорость дрейфа облаков (0..4, по умолчанию 1.0)." --name-ru "Скорость облаков" "Cloud speed" cl_avfx_sky_cloud_speed 0 4 0.1
    range --live --precision 2 --status "Adjust this value." --status-ru "Непрозрачность объёмного тумана у горизонта и под облаками (0..1, по умолчанию 0.4)." --name-ru "Непрозрачность тумана" "Fog alpha" cl_avfx_sky_fog_alpha 0 1 0.05
end

begin q2prox_sound
    title "Sound & Acoustics"
    title-ru "Звук и акустика"
    style --no-compact
    values --live --status "s_enable: OpenAL required for al_profile, HRTF, room acoustics" --status-ru "Выбирает значение «звуковой движок»." --name-ru "Звуковой движок" --items-ru "Без звука|Программный (DMA)|OpenAL" "Sound engine" s_enable "no sound" "software (DMA)" "OpenAL"
    values --live --status "al_sound_profile: acoustics recipe (manual tweaks switch to custom)" --status-ru "Выбирает значение «профиль звука»." --name-ru "Профиль звука" --items-ru "Свой|Соревновательный|Баланс|Иммерсивный|Кинематографичный|Собор" "Sound profile" al_sound_profile custom competitive balanced immersive cinematic cathedral
    pairs --status "Choose this value." --status-ru "Выбирает значение «частота вывода»." --live --name-ru "Частота вывода" --items-ru "11|22|44|48|96" "Output rate" s_khz 11 11 22 22 44 44 48 48 96 96
    pairs --status "Choose this value." --status-ru "Выбирает значение «формат сэмплов»." --live --name-ru "Формат сэмплов" --items-ru "Авто|S16|Float32" "Sample format" s_sampleformat auto auto s16 s16 float32 float32
    values --status "Choose this value." --status-ru "Выбирает значение «профиль OpenAL»." --live --name-ru "Профиль OpenAL" --items-ru "Q2PRO-X|Как R1Q2" "OpenAL profile" al_profile "Q2PRO-X" "R1Q2-like"
    values --status "Choose this value." --status-ru "Выбирает значение «HRTF»." --live --name-ru "HRTF" --items-ru "Выкл.|Авто|Вкл." "HRTF" al_hrtf off auto on
    pairs --status "Choose this value." --status-ru "Выбирает значение «ресэмплер OpenAL»." --live --name-ru "Ресэмплер OpenAL" --items-ru "По умолчанию|Кубический|Bsinc12|Bsinc24|Точечный|Линейный" "OpenAL resampler" al_resampler default default cubic cubic bsinc12 bsinc12 bsinc24 bsinc24 point point linear linear
    pairs --status "Choose this value." --status-ru "Выбирает значение «ресэмплер DMA»." --live --name-ru "Ресэмплер DMA" --items-ru "Классический|Линейный|Кубический" "DMA resampler" s_resampler legacy legacy linear linear cubic cubic
    toggle --live --status "al_reverb: room acoustics / EFX reverb" --status-ru "Включает или выключает параметр «поддержка реверберации»." --name-ru "Поддержка реверберации" --items-ru "Нет|Да" "Reverberation support" al_reverb
    pairs --live --status "al_eax_preset: -1 = auto classifier" --status-ru "Выбирает значение «пресет реверберации»." --name-ru "Пресет реверберации" --items-ru "Авто|Общий|Малый|Средний|Зал|Коридор|Улица|Под водой" "Reverb preset" al_eax_preset auto -1 generic 0 small 1 medium 2 hall 3 corridor 4 outdoor 5 underwater 6
    range --status "Adjust this value." --status-ru "Настраивает значение «примесь реверберации»." --live --name-ru "Примесь реверберации" "Reverb wet" al_eax_wet 0 1 0.05
    range --status "Adjust this value." --status-ru "Настраивает значение «локальная примесь»." --live --name-ru "Локальная примесь" "Local wet" al_eax_local_wet 0 1 0.05
    range --status "Adjust this value." --status-ru "Настраивает значение «время интерполяции»." --live --name-ru "Время интерполяции" "Lerp time" al_reverb_lerp_time 0 5 0.1
    toggle --status "Toggle this setting." --status-ru "Включает или выключает параметр «заслонение»." --live --name-ru "Заслонение" --items-ru "Нет|Да" "Occlusion" al_eax_occlusion
    range --status "Adjust this value." --status-ru "Настраивает значение «примесь взрыва»." --live --name-ru "Примесь взрыва" "Explosion wet" al_eax_explosion_wet 0 1 0.05
    range --status "Adjust this value." --status-ru "Настраивает значение «затухание взрыва»." --live --name-ru "Затухание взрыва" "Explosion decay" al_eax_explosion_decay 1 3 0.05
    range --status "Adjust this value." --status-ru "Настраивает значение «поздний хвост взрыва»." --live --name-ru "Поздний хвост взрыва" "Explosion late" al_eax_explosion_late 1 2 0.05
    range --status "Adjust this value." --status-ru "Настраивает значение «примесь транспорта»." --live --name-ru "Примесь транспорта" "Transport wet" al_eax_transport_wet 0 1 0.05
    range --status "Adjust this value." --status-ru "Настраивает значение «отражения»." --live --name-ru "Отражения" "Reflections" al_reverb_reflections 0 4 0.1
    range --status "Adjust this value." --status-ru "Настраивает значение «поздняя реверберация»." --live --name-ru "Поздняя реверберация" "Late reverb" al_reverb_late 0 4 0.1
    range --status "Adjust this value." --status-ru "Настраивает значение «затухание»." --live --name-ru "Затухание" "Decay" al_reverb_decay 0.1 50 0.5
    range --status "Adjust this value." --status-ru "Настраивает значение «задержка»." --live --name-ru "Задержка" "Delay" al_reverb_delay 0.1 4 0.1
    range --status "Adjust this value." --status-ru "Настраивает значение «ВЧ-яркость»." --live --name-ru "ВЧ-яркость" "HF brightness" al_reverb_hf 0 4 0.1
    range --status "Adjust this value." --status-ru "Настраивает значение «диффузия»." --live --name-ru "Диффузия" "Diffusion" al_reverb_diffusion 0 2 0.1
    toggle --status "Toggle this setting." --status-ru "Включает или выключает параметр «отладка реверберации»." --live --name-ru "Отладка реверберации" --items-ru "Нет|Да" "Reverb debug" al_eax_debug
    blank
    toggle --live --status "s_mute_when_inactive: mute when window not focused" --status-ru "Включает или выключает параметр «глушить вне фокуса»." --name-ru "Глушить вне фокуса" --items-ru "Нет|Да" "Mute when inactive" s_mute_when_inactive
    blank
    action --align --status "Print reverb classifier / preset" --status-ru "Выполняет действие «инфо о реверберации»." --name-ru "Инфо о реверберации..." "Reverb info..." al_reverb_info
    action --align --status "Reload active reverb preset" --status-ru "Выполняет действие «перезагрузить реверберацию»." --name-ru "Перезагрузить реверберацию..." "Reload reverb..." al_reverb_reload
    action --align --status "Print available OpenAL resamplers" --status-ru "Выполняет действие «список ресэмплеров»." --name-ru "Список ресэмплеров..." "Resampler list..." al_resampler_list
    action --align --status "Apply sound engine / HRTF / profile changes" --status-ru "Выполняет действие «перезапустить звук»." --name-ru "Перезапустить звук..." "Restart sound..." snd_restart
end

begin q2prox_binaural
    title "Binaural / 3D Sound"
    title-ru "Бинауральный / 3D звук"
    style --no-compact
    values --status "al_binaural_profile: curated headphone presets" --status-ru "Выбирает значение «бинауральный профиль»." --name-ru "Бинауральный профиль" --items-ru "Свой|По умолчанию|Авто|Глубокий|Кинематографичный" "Binaural profile" al_binaural_profile custom default auto deep cinematic
    values --status "al_binaural: 0=off, 1=auto, 2=on" --status-ru "Выбирает значение «бинауральный звук»." --name-ru "Бинауральный звук" --items-ru "Выкл.|Авто|Вкл." "Binaural" al_binaural off auto on
    values --status "al_binaural_encoding: requires snd_restart" --status-ru "Выбирает значение «кодирование»." --name-ru "Кодирование" --items-ru "Авто|Базовый|HRTF|UHJ" "Encoding" al_binaural_encoding auto basic hrtf uhj
    values --status "al_binaural_hrtf_mode" --status-ru "Выбирает значение «режим HRTF»." --name-ru "Режим HRTF" --items-ru "По умолчанию|Полный|Ambi1|Ambi2|Ambi3" "HRTF mode" al_binaural_hrtf_mode default full ambi1 ambi2 ambi3
    pairs --status "al_binaural_hrtf_size" --status-ru "Выбирает значение «размер HRTF-фильтра»." --name-ru "Размер HRTF-фильтра" --items-ru "По умолчанию|32|64" "HRTF filter size" al_binaural_hrtf_size default 0 32 32 64 64
    range --status "al_binaural_crossfeed" --status-ru "Настраивает значение «перекрёстная подмешка»." --name-ru "Перекрёстная подмешка" "Crossfeed" al_binaural_crossfeed 0 6 1
    blank
    action --align --status "Print current binaural runtime state" --status-ru "Выполняет действие «инфо о бинауральном звуке»." --name-ru "Инфо о бинауральном звуке..." "Binaural info..." al_binaural_info
    action --align --status "Apply binaural / sound engine changes" --status-ru "Выполняет действие «перезапустить звук»." --name-ru "Перезапустить звук..." "Restart sound..." snd_restart
end

begin q2prox_weaponvol
    title "Sound Volumes"
    title-ru "Громкости звука"
    style --no-compact
    range --status "Adjust this value." --status-ru "Настраивает значение «бластер»." --live --format "%d%%" --name-ru "Бластер" "Blaster" s_weapon_blaster_volume 0 100 5
    range --status "Adjust this value." --status-ru "Настраивает значение «дробовик»." --live --format "%d%%" --name-ru "Дробовик" "Shotgun" s_weapon_shotgun_volume 0 100 5
    range --status "Adjust this value." --status-ru "Настраивает значение «супердробовик»." --live --format "%d%%" --name-ru "Супердробовик" "Super shotgun" s_weapon_supershotgun_volume 0 100 5
    range --status "Adjust this value." --status-ru "Настраивает значение «пулемёт»." --live --format "%d%%" --name-ru "Пулемёт" "Machinegun" s_weapon_machinegun_volume 0 100 5
    range --status "Adjust this value." --status-ru "Настраивает значение «чейнган»." --live --format "%d%%" --name-ru "Чейнган" "Chaingun" s_weapon_chaingun_volume 0 100 5
    range --status "Adjust this value." --status-ru "Настраивает значение «ручные гранаты»." --live --format "%d%%" --name-ru "Ручные гранаты" "Hand grenades" s_weapon_handgrenade_volume 0 100 5
    range --status "Adjust this value." --status-ru "Настраивает значение «гранатомёт»." --live --format "%d%%" --name-ru "Гранатомёт" "Grenade launcher" s_weapon_grenadelauncher_volume 0 100 5
    range --status "Adjust this value." --status-ru "Настраивает значение «ракетница»." --live --format "%d%%" --name-ru "Ракетница" "Rocket launcher" s_weapon_rocketlauncher_volume 0 100 5
    range --status "Adjust this value." --status-ru "Настраивает значение «гипербластер»." --live --format "%d%%" --name-ru "Гипербластер" "Hyperblaster" s_weapon_hyperblaster_volume 0 100 5
    range --status "Adjust this value." --status-ru "Настраивает значение «Railgun»." --live --format "%d%%" --name-ru "Railgun" "Railgun" s_weapon_railgun_volume 0 100 5
    range --status "Adjust this value." --status-ru "Настраивает значение «BFG10K»." --live --format "%d%%" --name-ru "BFG10K" "BFG10K" s_weapon_bfg_volume 0 100 5
    blank
    range --status "Adjust this value." --status-ru "Настраивает значение «игрок звуки»." --live --format "%d%%" --name-ru "Игрок звуки" "Player sounds" s_player_volume 0 100 5
    range --status "Adjust this value." --status-ru "Настраивает значение «голос / боль»." --live --format "%d%%" --name-ru "Голос / боль" "Voice / pain" s_voice_volume 0 100 5
    range --status "Adjust this value." --status-ru "Настраивает значение «подбор предметов»." --live --format "%d%%" --name-ru "Подбор предметов" "Item pickups" s_pickup_volume 0 100 5
    range --status "Adjust this value." --status-ru "Настраивает значение «окружение»." --live --format "%d%%" --name-ru "Окружение" "Environment" s_environment_volume 0 100 5
    range --status "Adjust this value." --status-ru "Настраивает значение «монстры»." --live --format "%d%%" --name-ru "Монстры" "Monsters" s_monster_volume 0 100 5
    range --status "Adjust this value." --status-ru "Настраивает значение «диктор»." --live --format "%d%%" --name-ru "Диктор" "Announcer" s_announcer_volume 0 100 5
    range --status "Adjust this value." --status-ru "Настраивает значение «меню / интерфейс»." --live --format "%d%%" --name-ru "Меню / интерфейс" "Menu / UI" s_interface_volume 0 100 5
    range --status "Adjust this value." --status-ru "Настраивает значение «прочее»." --live --format "%d%%" --name-ru "Прочее" "Other / misc" s_other_volume 0 100 5
    range --status "Adjust this value." --status-ru "Настраивает значение «фоновые циклы»." --live --format "%d%%" --name-ru "Фоновые циклы" "Ambient loops" s_ambient_volume 0 100 5
end

begin q2prox_serverbrowser
    title "Server Browser"
    title-ru "Браузер серверов"
    style --no-compact
    values --live --status "cl_serverbrowser_ui: 0 = legacy, 1 = modern" --status-ru "Выбирает значение «режим браузера»." --name-ru "Режим браузера" --items-ru "Классический|Современный" "Browser mode" cl_serverbrowser_ui legacy modern
    range --status "Adjust this value." --status-ru "Настраивает значение «прозрачность»." --live --precision 2 --name-ru "Прозрачность" "Opacity" cl_serverbrowser_alpha 0 1 0.05
    range --status "Adjust this value." --status-ru "Настраивает значение «масштаб текста» (0.5..2.0, шаг 0.01)." --live --precision 2 --name-ru "Масштаб текста" "Text scale" cl_serverbrowser_scale 0.5 2 0.01
    toggle --status "Toggle this setting." --status-ru "Включает или выключает параметр «компактный режим»." --live --name-ru "Компактный режим" --items-ru "Нет|Да" "Compact mode" cl_serverbrowser_compact
    toggle --status "Toggle this setting." --status-ru "Включает или выключает параметр «полный экран»." --live --name-ru "Полный экран" --items-ru "Нет|Да" "Fullscreen" cl_serverbrowser_fullscreen
    toggle --live --status "cl_serverbrowser_pillarbox_workspace: allow dragging into pillarbox bars" --status-ru "Включает или выключает параметр «свободная зона боковых полей»." --name-ru "Свободная зона боковых полей" --items-ru "Нет|Да" "Pillarbox free area" cl_serverbrowser_pillarbox_workspace
    toggle --status "Toggle this setting." --status-ru "Включает или выключает параметр «показывать детали»." --live --name-ru "Показывать детали" --items-ru "Нет|Да" "Show details" cl_serverbrowser_show_details
    toggle --status "Toggle this setting." --status-ru "Включает или выключает параметр «показывать бейджи»." --live --name-ru "Показывать бейджи" --items-ru "Нет|Да" "Show badges" cl_serverbrowser_show_badges
    toggle --status "Toggle this setting." --status-ru "Включает или выключает параметр «цвета строк»." --live --name-ru "Цвета строк" --items-ru "Нет|Да" "Row colors" cl_serverbrowser_row_colors
    blank
    toggle --status "Toggle this setting." --status-ru "Включает или выключает параметр «скрывать пустые»." --live --name-ru "Скрывать пустые" --items-ru "Нет|Да" "Hide empty" cl_serverbrowser_hide_empty
    toggle --status "Toggle this setting." --status-ru "Включает или выключает параметр «скрывать полные»." --live --name-ru "Скрывать полные" --items-ru "Нет|Да" "Hide full" cl_serverbrowser_hide_full
    toggle --status "Toggle this setting." --status-ru "Включает или выключает параметр «только с игроками»." --live --name-ru "Только с игроками" --items-ru "Нет|Да" "Only with players" cl_serverbrowser_only_players
    range --status "Adjust this value." --status-ru "Настраивает значение «макс. пинг»." --live --precision 0 --name-ru "Макс. пинг" "Max ping" cl_serverbrowser_max_ping 0 999 50
    toggle --status "Toggle this setting." --status-ru "Включает или выключает параметр «показывать с паролем»." --live --name-ru "Показывать с паролем" --items-ru "Нет|Да" "Show passworded" cl_serverbrowser_show_passworded
    toggle --status "Toggle this setting." --status-ru "Включает или выключает параметр «показывать недоступные»." --live --name-ru "Показывать недоступные" --items-ru "Нет|Да" "Show down" cl_serverbrowser_show_down
    blank
    values --status "Choose this value." --status-ru "Выбирает значение «источник по умолчанию»." --live --name-ru "Источник по умолчанию" --items-ru "Q2servers.com|Избранное|LAN|Свой" "Default source" cl_serverbrowser_default_source "q2servers.com" favorites LAN custom
    field --width 32 --status "cl_serverbrowser_custom_source" --status-ru "Редактирует значение «свой источник»." --name-ru "Свой источник" "Custom source" cl_serverbrowser_custom_source
    blank
    action --align --status "Open the modern server browser overlay" --status-ru "Выполняет действие «открыть браузер серверов»." --name-ru "Открыть браузер серверов..." "Open server browser..." serverbrowser_open_modern
    action --align --status "Open the classic legacy server browser menu" --status-ru "Выполняет действие «открыть классический браузер»." --name-ru "Открыть классический браузер..." "Open legacy browser..." serverbrowser_open_legacy
    bind --status "Bind a key for this action." --status-ru "Назначает клавишу для действия «клавиша переключения»." --name-ru "Клавиша переключения" "Toggle key" serverbrowser_toggle
end

begin q2prox_advanced_network
    title "Advanced Network"
    title-ru "Продвинутая сеть"
    style --no-compact
    // Q2PRO-X 2026-05-15 — basic network rows (Network category
    // candidates for the global preferences migration).  Enabling
    // cl_q2prox_cfg_global_pref_network + master makes this whole
    // network profile apply identically across all servers/mods.
    range --live --precision 0 --status "rate: bandwidth your client requests from the server, bytes/sec. Server may cap it. Typical modern broadband: 25000..100000.  Server-visible userinfo cvar." --status-ru "Настраивает значение «ширина канала» (байт/сек), запрашиваемая у сервера. Сервер может ограничить. Типично для современного интернета: 25000..100000.  Server-visible userinfo cvar." --name-ru "Ширина канала (rate)" "Bandwidth rate" rate 1000 100000 1000
    range --live --precision 0 --status "msg: server message size hint. 0 = small, 1 = normal (default), 2 = large. Some servers reject high values." --status-ru "Подсказка серверу о размере сетевого сообщения. 0 = маленький, 1 = обычный (по умолчанию), 2 = большой. Некоторые серверы отклоняют большие значения." --name-ru "Размер сообщения (msg)" "Message size (msg)" msg 0 2 1
    blank
    range --live --precision 0 --status "cl_maxfps: client framerate cap. 0 = uncapped. The renderer can still produce more frames if `cl_async 1` is set." --status-ru "Лимит частоты кадров клиента. 0 = без лимита. При cl_async 1 рендер может выдавать больше кадров." --name-ru "Лимит FPS клиента" "Client FPS limit" cl_maxfps 0 500 5
    range --live --precision 0 --status "r_maxfps: renderer-only framerate cap. Applies when cl_async 1; otherwise cl_maxfps is the gate." --status-ru "Лимит частоты кадров рендерера (применяется при cl_async 1, иначе действует cl_maxfps)." --name-ru "Лимит FPS рендера" "Renderer FPS limit" r_maxfps 0 1000 5
    range --live --precision 0 --status "cl_maxpackets: max user-command packets per second sent to the server (10..125). Higher = more responsive but more upload bandwidth." --status-ru "Максимум usercmd-пакетов в секунду серверу (10..125). Больше = быстрее реакция, но больше upload." --name-ru "Пакетов клиента/сек" "Client packets / sec" cl_maxpackets 10 125 5
    range --live --precision 0 --status "cl_updaterate: requested server updates per second (10..30 typical). Some servers cap it." --status-ru "Запрашиваемая частота серверных обновлений (10..30 типично). Сервер может ограничить." --name-ru "Обновлений сервера/сек" "Server updates / sec" cl_updaterate 10 60 5
    toggle --live --status "cl_async: decouple input/network rate from renderer FPS. When on, cl_maxfps caps network/input while r_maxfps caps renderer." --status-ru "Разделить частоту ввода/сети от рендера. При включении cl_maxfps ограничивает сеть/ввод, а r_maxfps — рендер." --name-ru "Асинхронный режим (cl_async)" --items-ru "Нет|Да" "Async mode" cl_async
    toggle --live --status "cl_instantpacket: send a usercmd packet immediately after a button press instead of waiting for the next tick. Reduces input latency by up to one packet interval." --status-ru "Отправлять usercmd-пакет сразу после нажатия кнопки, не дожидаясь следующего тика. Снижает input latency на интервал одного пакета." --name-ru "Мгновенный пакет (cl_instantpacket)" --items-ru "Нет|Да" "Instant packet" cl_instantpacket
    blank
    values --live --status "cl_net_clientport_autoprobe: off | RTT (fast pre-connect challenge-RTT probe) | XQ3A (live-session scan over 20 slots). Full help in cvar browser." --status-ru "Выбирает значение «автоподбор UDP-порта клиента»." --name-ru "Автоподбор UDP-порта клиента" --items-ru "Выкл.|RTT|XQ3A" "Auto-select client UDP port" cl_net_clientport_autoprobe off RTT XQ3A
    range --live --precision 1 --status "cl_net_clientport_autoprobe_time: overall safety watchdog (0.1..180 s). Hard upper bound. RTT finishes early when replies arrive. XQ3A always tries all 20 slots; this cvar only aborts the scan if it runs too long. Realistic full XQ3A run wants 60..180 s; values below ~30 s warn in the console." --status-ru "Настраивает значение «сторож автопорта (сек)»." --name-ru "Сторож автопорта (сек)" "Auto-port safety watchdog (s)" cl_net_clientport_autoprobe_time 0.1 180 1
    range --live --precision 0 --status "cl_net_clientport_autoprobe_ports: RTT candidate count (2..60). Does NOT apply to XQ3A — XQ3A is fixed at 20 slots. RTT is fast and parallel, so wider sweeps don't slow it down. Default 6 is conservative." --status-ru "Настраивает значение «число RTT-кандидатов»." --name-ru "Число RTT-кандидатов" "RTT candidate count" cl_net_clientport_autoprobe_ports 2 60 1
    toggle --live --status "cl_net_clientport_autoprobe_indicator: show a blinking on-screen AUTO-PORT SCAN indicator while XQ3A is running. Disappears on finish/abort. Has no effect on RTT." --status-ru "Включает или выключает параметр «индикатор скана XQ3A»." --name-ru "Индикатор скана XQ3A" --items-ru "Нет|Да" "XQ3A scan indicator" cl_net_clientport_autoprobe_indicator
    toggle --live --status "cl_net_clientport_autoprobe_verbose: print autoport progress lines to the console during RTT / XQ3A runs — slot switches, samples, stall replacements, winner, abort/fallback. Default off — the feature still runs normally, just silently." --status-ru "Включает или выключает параметр «лог автопорта в консоль»." --name-ru "Лог автопорта в консоль" --items-ru "Нет|Да" "Autoport console log" cl_net_clientport_autoprobe_verbose
    range --live --precision 0 --status "cl_net_clientport_autoprobe_settle_ms: optional pre-scan grace window before XQ3A applies its first slot (0..10000 ms, default 0 = XQ3A-exact start). Raise only on slow-precache mods. Counts inside cl_net_clientport_autoprobe_time." --status-ru "Настраивает значение «пауза перед сканом XQ3A (мс)»." --name-ru "Пауза перед сканом XQ3A (мс)" "XQ3A pre-scan grace (ms)" cl_net_clientport_autoprobe_settle_ms 0 10000 100
end

begin q2prox_cvarbrowser
    title "Cvar Browser"
    title-ru "Справочник переменных"
    style --no-compact
    range --status "Adjust this value." --status-ru "Настраивает значение «прозрачность»." --live --precision 2 --name-ru "Прозрачность" "Opacity" cl_cvar_browser_alpha 0 1 0.05
    range --status "Adjust this value." --status-ru "Настраивает значение «масштаб текста» (0.1..4.0, шаг 0.01)." --live --precision 2 --name-ru "Масштаб текста" "Text scale" cl_cvar_browser_scale 0.1 4 0.01
    toggle --live --status "cl_cvar_browser_remember_tab: restore last opened tab on next session" --status-ru "Включает или выключает параметр «запоминать вкладку»." --name-ru "Запоминать вкладку" --items-ru "Нет|Да" "Remember last tab" cl_cvar_browser_remember_tab
    blank
    action --align --status "Open the modern cvar reference browser overlay" --status-ru "Выполняет действие «открыть справочник переменных»." --name-ru "Открыть справочник переменных..." "Open cvar browser..." cvar_help
    bind --status "Bind a key for this action." --status-ru "Назначает клавишу для действия «клавиша переключения»." --name-ru "Клавиша переключения" "Toggle key" cvar_browser_toggle
end

begin q2prox_demobrowser
    title "Demo Browser"
    title-ru "Браузер демок"
    style --no-compact
    range --live --precision 2 --status "cl_demo_browser_alpha: browser background opacity" --status-ru "Настраивает значение «прозрачность»." --name-ru "Прозрачность" "Opacity" cl_demo_browser_alpha 0 1 0.05
    range --live --precision 2 --status "cl_demo_browser_scale: browser text and chrome scale (0.1..3.0, step 0.01)" --status-ru "Настраивает значение «масштаб текста» (0.1..3.0, шаг 0.01)." --name-ru "Масштаб текста" "Text scale" cl_demo_browser_scale 0.1 3 0.01
    toggle --live --status "cl_demo_browser_fullscreen: maximize overlay to full HUD; hides resize grip; also toggled by header [F]" --status-ru "Включает или выключает параметр «полный экран»." --name-ru "Полный экран" --items-ru "Нет|Да" "Fullscreen" cl_demo_browser_fullscreen
    toggle --live --status "cl_demo_browser_show_details: show the right-side detail pane" --status-ru "Включает или выключает параметр «показывать панель деталей»." --name-ru "Показывать панель деталей" --items-ru "Нет|Да" "Show detail pane" cl_demo_browser_show_details
    toggle --live --status "cl_demo_browser_row_colors: alternate row background for readability" --status-ru "Включает или выключает параметр «цвета чередующихся строк»." --name-ru "Цвета чередующихся строк" --items-ru "Нет|Да" "Alternate row colors" cl_demo_browser_row_colors
    toggle --live --status "cl_demo_browser_show_broken: list partial (playable, incomplete metadata) and unreadable demos" --status-ru "Включает или выключает параметр «показывать частичные / нечитаемые демки»." --name-ru "Показывать частичные / нечитаемые демки" --items-ru "Нет|Да" "Show partial / unreadable demos" cl_demo_browser_show_broken
    toggle --live --status "cl_demo_browser_show_packed: include demos from engine-visible packs (off by default)" --status-ru "Включает или выключает параметр «показывать демки из пакетов движка»." --name-ru "Показывать демки из пакетов движка" --items-ru "Нет|Да" "Show demos from engine packs" cl_demo_browser_show_packed
    toggle --live --status "cl_demo_browser_remember_tab: restore last opened tab (All/Favorites/Date/Mod/Map/POV) on next session" --status-ru "Включает или выключает параметр «запоминать вкладку»." --name-ru "Запоминать вкладку" --items-ru "Нет|Да" "Remember last tab" cl_demo_browser_remember_tab
    blank
    action --align --status "Open the modern demo browser overlay (central index backs search and listing)" --status-ru "Выполняет действие «открыть браузер демок»." --name-ru "Открыть браузер демок..." "Open demo browser..." demo_browser_open
    bind --status "demo_browser_toggle: toggle the Q2PRO-X demo browser overlay" --status-ru "Назначает клавишу для действия «клавиша переключения»." --name-ru "Клавиша переключения" "Toggle key" demo_browser_toggle
    blank
    action --align --status "Full rescan: reparse every demo and rewrite the central index" --status-ru "Выполняет действие «перестроить индекс демо»." --name-ru "Перестроить индекс демо" "Rebuild demo index" demo_index_rebuild
    action --align --status "Incremental refresh without reparsing unchanged demos" --status-ru "Выполняет действие «обновить индекс демо»." --name-ru "Обновить индекс демо" "Refresh demo index" demo_index_refresh
    blank
    action --align --status "Open the legacy demo browser (kept for compatibility)" --status-ru "Выполняет действие «открыть классический браузер демок»." --name-ru "Открыть классический браузер демок..." "Open legacy demo browser..." menu_demos
end

begin q2prox_demoplayer
    title "Demo Player"
    title-ru "Проигрыватель демо"
    style --no-compact
    toggle --live --status "cl_demoplayer_overlay: master switch for the modern playback overlay" --status-ru "Включает или выключает параметр «включено»." --name-ru "Включено" --items-ru "Нет|Да" "Enabled" cl_demoplayer_overlay
    range --live --precision 2 --status "cl_demoplayer_overlay_alpha: overlay background opacity" --status-ru "Настраивает значение «прозрачность»." --name-ru "Прозрачность" "Opacity" cl_demoplayer_overlay_alpha 0 1 0.05
    range --live --precision 2 --status "cl_demoplayer_overlay_scale: overlay text and chrome scale (0.5..3.0, step 0.01)" --status-ru "Настраивает значение «масштаб текста» (0.5..3.0, шаг 0.01)." --name-ru "Масштаб текста" "Text scale" cl_demoplayer_overlay_scale 0.5 3 0.01
    range --live --precision 0 --status "cl_demoplayer_overlay_autohide_sec: passive bar hides after N sec of real user idle (0 = always visible while demo plays)" --status-ru "Настраивает значение «автоскрытие (сек, 0=выкл.)»." --name-ru "Автоскрытие (сек, 0=выкл.)" "Autohide (sec, 0=off)" cl_demoplayer_overlay_autohide_sec 0 60 1
    range --live --precision 0 --status "cl_demoplayer_overlay_seek_step_sec: step seek seconds for < and > buttons" --status-ru "Настраивает значение «шаг перемотки (сек)»." --name-ru "Шаг перемотки (сек)" "Seek step (sec)" cl_demoplayer_overlay_seek_step_sec 1 120 1
    range --live --precision 0 --status "cl_demoplayer_overlay_seek_jump_sec: jump seek seconds for << and >> buttons" --status-ru "Настраивает значение «прыжок перемотки (сек)»." --name-ru "Прыжок перемотки (сек)" "Seek jump (sec)" cl_demoplayer_overlay_seek_jump_sec 1 600 5
    toggle --live --status "cl_demoplayer_overlay_show_score: show the MVD-only [score] button while playing .mvd2" --status-ru "Включает или выключает параметр «показывать кнопку счёта (MVD2)»." --name-ru "Показывать кнопку счёта (MVD2)" --items-ru "Нет|Да" "Show score button (mvd2)" cl_demoplayer_overlay_show_score
    values --live --status "cl_demoplayer_mvd_director_mode: MVD-only follow mode. quad/penta/leader follow current MVD state; next frag uses an exact pre-scanned frag timeline — works on the first play, survives seek / replay" --status-ru "Выбирает значение «режиссёр MVD2»." --name-ru "Режиссёр MVD2" --items-ru "Выкл.|Следующий фраг|Quad|Penta|Лидер" "Mvd director (mvd2)" cl_demoplayer_mvd_director_mode "off" "next frag" "quad" "penta" "leader"
    range --live --precision 2 --status "cl_demoplayer_mvd_director_lead_sec: lead seconds for next_frag mode. Also sets the cooldown after a manual POV override: max(lead_sec * 3, 3 sec)" --status-ru "Настраивает значение «упреждение режиссёра MVD2 (сек)»." --name-ru "Упреждение режиссёра MVD2 (сек)" "Mvd director lead (sec)" cl_demoplayer_mvd_director_lead_sec 0.5 10 0.1
    values --live --status "cl_demoplayer_nextfrag_debug: diagnostic log for next-frag. tick = director decisions + scan timeline. scan = also every obituary accept/reject" --status-ru "Выбирает значение «отладка следующего фрага»." --name-ru "Отладка следующего фрага" --items-ru "Выкл.|Тик|Скан" "Next frag debug" cl_demoplayer_nextfrag_debug "off" "tick" "scan"
    range --live --precision 2 --status "cl_demoplayer_volume: sound volume during demo playback — overlays s_volume while playing, restored on end. In-game audio unaffected." --status-ru "Настраивает значение «громкость демо»." --name-ru "Громкость демо" "Demo volume" cl_demoplayer_volume 0 1 0.05
    values --live --status "cl_demoplayer_gun: demo-playback POV gun visibility. show gun = force visible, hide gun = force hidden. Does NOT change cl_gun." --status-ru "Выбирает значение «оружие в демке»." --name-ru "Оружие в демке" --items-ru "Показывать оружие|Скрывать оружие" "Demo gun" cl_demoplayer_gun "show gun" "hide gun"
    values --live --status "cl_demoplayer_noskins: demo-playback skin mode. original = as in recording, no skins = everyone as male/grunt. Does NOT change cl_noskins." --status-ru "Выбирает значение «скины демок»." --name-ru "Скины демок" --items-ru "Оригинал|Нет скины" "Demo skins" cl_demoplayer_noskins "original" "no skins"
    range --live --precision 0 --status "cl_demoplayer_overlay_y: vertical offset from bottom of HUD, in px (0 = flush)" --status-ru "Настраивает значение «смещение Y (снизу)»." --name-ru "Смещение Y (снизу)" "Y offset (bottom)" cl_demoplayer_overlay_y 0 400 2
    toggle --live --status "cl_demoplayer_hide_draws: hide user draw items during demo playback (cl_timer / cl_lag / cl_ping / etc.)" --status-ru "Включает или выключает параметр «отключить отрисовку интерфейса»." --name-ru "Отключить отрисовку интерфейса" --items-ru "Нет|Да" "Disable draw interface" cl_demoplayer_hide_draws
    toggle --live --status "cl_laghax_hud_hide_demo: auto-hide the laghax HUD during demo playback (same cvar as on the Laghax page)" --status-ru "Включает или выключает параметр «скрывать laghax HUD при просмотре демок»." --name-ru "Скрывать laghax HUD при просмотре демок" --items-ru "Нет|Да" "Hide laghax HUD during demo playback" cl_laghax_hud_hide_demo
    blank
    action --align --status "Demo analytics / heatmap: traffic / frags / pickups. MVD2 = full scan; DM2 = live POV." --status-ru "Открывает раздел «аналитика демок»." --name-ru "Аналитика демок..." "Demo analytics..." pushmenu q2prox_demoanalytics
    action --align --status "Demo item respawn timers: translucent ghost models at waiting items, countdowns, demo player items strip. Per-item category toggles (armor / powerups / weapons). MVD2 only." --status-ru "Открывает раздел «таймеры предметов»." --name-ru "Таймеры предметов..." "Item timers..." pushmenu q2prox_demoitemtimers
    action --align --status "Show the demo player overlay (unhides after autohide / manual close)" --status-ru "Выполняет действие «показать проигрыватель демо»." --name-ru "Показать проигрыватель демо..." "Show demo player..." demo_player_open
    bind --status "demo_player_toggle: show or hide the demo player overlay" --status-ru "Назначает клавишу для действия «клавиша переключения»." --name-ru "Клавиша переключения" "Toggle key" demo_player_toggle
    bind --status "demo_pause_toggle: pause/resume demo (default: SPACE)" --status-ru "Назначает клавишу для действия «клавиша паузы»." --name-ru "Клавиша паузы" "Pause key" demo_pause_toggle
    bind --status "+demo_seek_back: hold to seek backwards, repeats 1s (default: LEFTARROW)" --status-ru "Назначает клавишу для действия «клавиша перемотки назад»." --name-ru "Клавиша перемотки назад" "Seek back key" +demo_seek_back
    bind --status "+demo_seek_forward: hold to seek forwards, repeats 1s (default: RIGHTARROW)" --status-ru "Назначает клавишу для действия «клавиша перемотки вперёд»." --name-ru "Клавиша перемотки вперёд" "Seek forward key" +demo_seek_forward
    bind --status "demo_playlist_next: jump to the next playlist item" --status-ru "Назначает клавишу для действия «клавиша следующего в плейлисте»." --name-ru "Клавиша следующего в плейлисте" "Playlist next key" demo_playlist_next
    bind --status "demo_playlist_prev: jump to the previous playlist item" --status-ru "Назначает клавишу для действия «клавиша предыдущего в плейлисте»." --name-ru "Клавиша предыдущего в плейлисте" "Playlist previous key" demo_playlist_prev
    bind --status "demo_playlist_clear: drop the current playlist queue" --status-ru "Назначает клавишу для действия «клавиша очистки плейлиста»." --name-ru "Клавиша очистки плейлиста" "Playlist clear key" demo_playlist_clear
end

begin q2prox_demoanalytics
    title "Demo Analytics"
    title-ru "Аналитика демок"
    style --no-compact
    values --live --status "cl_demo_analytics_mode: which layers the analytics panel shows" --status-ru "Выбирает значение «аналитика»." --name-ru "Аналитика" --items-ru "Выкл.|Трафик|Фраги|Подборы|Всё" "Analytics" cl_demo_analytics_mode "off" "traffic" "frags" "pickups" "all"
    values --live --status "cl_demo_analytics_style: where analytics are drawn (HUD panel, in-world particles, both)" --status-ru "Выбирает значение «стиль»." --name-ru "Стиль" --items-ru "Обзор|Мир|Оба" "Style" cl_demo_analytics_style "overview" "world" "both"
    values --live --status "cl_demo_analytics_time_scope: full = entire demo, elapsed = up to current time, window = last N sec" --status-ru "Выбирает значение «область времени»." --name-ru "Область времени" --items-ru "Полный|Прошло|Окно" "Time scope" cl_demo_analytics_time_scope "full" "elapsed" "window"
    range --live --precision 0 --status "cl_demo_analytics_window_sec: sliding-window size for time_scope = window" --status-ru "Настраивает значение «окно (сек)»." --name-ru "Окно (сек)" "Window (sec)" cl_demo_analytics_window_sec 5 600 5
    toggle --live --status "cl_demo_analytics_mvd_autoscan: auto-run MVD pre-scan on .mvd2 start" --status-ru "Включает или выключает параметр «автоскан MVD-демо»." --name-ru "Автоскан MVD-демо" --items-ru "Нет|Да" "Auto-scan MVD demos" cl_demo_analytics_mvd_autoscan
    values --live --status "cl_demo_analytics_dm2_mode: .dm2 fallback — off or live POV sampling" --status-ru "Выбирает значение «режим DM2»." --name-ru "Режим DM2" --items-ru "Выкл.|Текущий POV" "DM2 mode" cl_demo_analytics_dm2_mode "off" "live POV"
    range --live --precision 0 --status "cl_demo_analytics_sample_ms: sampling interval (ms). Lower = denser heatmap." --status-ru "Настраивает значение «интервал выборки (мс)»." --name-ru "Интервал выборки (мс)" "Sample interval (ms)" cl_demo_analytics_sample_ms 50 5000 50
    range --live --precision 0 --status "cl_demo_analytics_cell_size: heatmap cell size (world units)" --status-ru "Настраивает значение «размер ячейки (ед. мира)»." --name-ru "Размер ячейки (ед. мира)" "Cell size (world units)" cl_demo_analytics_cell_size 32 512 16
    range --live --precision 0 --status "cl_demo_analytics_draw_max_cells: cap on traffic cells drawn per frame" --status-ru "Настраивает значение «макс. ячеек на экране»." --name-ru "Макс. ячеек на экране" "Max cells drawn" cl_demo_analytics_draw_max_cells 100 5000 100
    range --live --precision 0 --status "cl_demo_analytics_draw_max_events: cap on frag+pickup dots drawn per frame" --status-ru "Настраивает значение «макс. событий на экране»." --name-ru "Макс. событий на экране" "Max events drawn" cl_demo_analytics_draw_max_events 100 16000 100
    range --live --precision 2 --status "cl_demo_analytics_overview_alpha: HUD panel background opacity" --status-ru "Настраивает значение «прозрачность панели HUD»." --name-ru "Прозрачность панели HUD" "HUD panel opacity" cl_demo_analytics_overview_alpha 0 1 0.05
    range --live --precision 2 --status "cl_demo_analytics_world_alpha: world particle opacity (style world/both)" --status-ru "Настраивает значение «прозрачность частиц мира»." --name-ru "Прозрачность частиц мира" "World particle opacity" cl_demo_analytics_world_alpha 0 1 0.05
    range --live --precision 3 --status "cl_demo_analytics_world_scale: world particle size multiplier (0.25..4.0, step 0.025)" --status-ru "Настраивает значение «масштаб частиц мира» (0.25..4.0, шаг 0.025)." --name-ru "Масштаб частиц мира" "World particle scale" cl_demo_analytics_world_scale 0.25 4 0.025
    range --live --precision 1 --status "cl_demo_analytics_world_lifetime_sec: 0 = aggregate; >0 = trail mode (per-sample, fades over N sec)" --status-ru "Настраивает значение «время жизни частиц мира (сек, 0=выкл.)»." --name-ru "Время жизни частиц мира (сек, 0=выкл.)" "World particle lifetime (sec, 0=off)" cl_demo_analytics_world_lifetime_sec 0 60 0.5
    range --live --precision 0 --status "cl_demo_analytics_trail_stride: draw every Nth sample per slot (1=densest)" --status-ru "Настраивает значение «шаг точек следа (1=плотно)»." --name-ru "Шаг точек следа (1=плотно)" "Trail dot stride (1=densest)" cl_demo_analytics_trail_stride 1 20 1
    toggle --live --status "cl_demo_analytics_trail_lines: connect consecutive samples of the same slot with a line" --status-ru "Включает или выключает параметр «линии соединения следа»." --name-ru "Линии соединения следа" --items-ru "Нет|Да" "Trail connect lines" cl_demo_analytics_trail_lines
    values --live --status "cl_demo_analytics_trail_height_mode: origin = dot at entity origin; feet = dot near feet level (follows jumps/falls). Render-only." --status-ru "Выбирает значение «режим высоты следа»." --name-ru "Режим высоты следа" --items-ru "Центр|Ступни" "Trail height mode" cl_demo_analytics_trail_height_mode "origin" "feet"
    range --live --precision 0 --status "cl_demo_analytics_trail_feet_z: Z offset in feet mode (negative = toward floor, typical -24)" --status-ru "Настраивает значение «Z-смещение ступней следа»." --name-ru "Z-смещение ступней следа" "Trail feet Z offset" cl_demo_analytics_trail_feet_z -64 64 4
    range --live --precision 0 --status "cl_demo_analytics_trail_hover_z: extra upward hover so dots don't clip into the floor" --status-ru "Настраивает значение «Z-высота следа»." --name-ru "Z-высота следа" "Trail hover Z" cl_demo_analytics_trail_hover_z 0 32 1
    toggle --live --status "cl_demo_analytics_trail_outline: draw outline behind trail dots, lines, and HUD event dots" --status-ru "Включает или выключает параметр «контур следа»." --name-ru "Контур следа" --items-ru "Нет|Да" "Trail outline" cl_demo_analytics_trail_outline
    range --live --precision 2 --status "cl_demo_analytics_trail_outline_alpha: outline particle opacity (0..1)" --status-ru "Настраивает значение «прозрачность контура»." --name-ru "Прозрачность контура" "Outline alpha" cl_demo_analytics_trail_outline_alpha 0 1 0.05
    range --live --precision 2 --status "cl_demo_analytics_trail_outline_scale: outline size multiplier relative to foreground dot (1.0..3.0, step 0.01)" --status-ru "Настраивает значение «масштаб контура» (1.0..3.0, шаг 0.01)." --name-ru "Масштаб контура" "Outline scale" cl_demo_analytics_trail_outline_scale 1 3 0.01
    toggle --live --status "cl_demo_analytics_show_legend: show counts+truncation line at the bottom of the HUD panel" --status-ru "Включает или выключает параметр «показывать легенду»." --name-ru "Показывать легенду" --items-ru "Нет|Да" "Show legend" cl_demo_analytics_show_legend
    action --align --status "Open the analytics color preset editor (traffic, frag, pickup, trail, outline colors)" --status-ru "Открывает раздел «цвета аналитики»." --name-ru "Цвета аналитики..." "Analytics colors..." pushmenu q2prox_demoanalytics_colors
    blank
    action --align --status "Re-run the MVD pre-scan for the currently-playing demo." --status-ru "Выполняет действие «пересканировать текущее демо»." --name-ru "Пересканировать текущее демо" "Rescan current demo" demo_analytics_rescan
    action --align --status "Print current analytics state to console" --status-ru "Выполняет действие «инфо в консоль»." --name-ru "Инфо в консоль" "Print info to console" demo_analytics_info
end

begin q2prox_demoitemtimers
    title "Demo Item Timers"
    title-ru "Таймеры предметов в демках"
    style --no-compact
    values --live --status "cl_demo_item_timers_world: master switch. off / world only (3D ghosts + 3D labels, no strip) / strip only (demo player strip with 2D icons + countdown, no 3D) / both. Intervals derived from observed MVD cycles. MVD2 only." --status-ru "Выбирает значение «таймеры предметов»." --name-ru "Таймеры предметов" --items-ru "Выкл.|Только мир|Только панель|Оба" "Item timers" cl_demo_item_timers_world "off" "world only" "strip only" "both"
    range --live --precision 2 --status "cl_demo_item_timers_world_alpha: opacity of ghost item models / countdown labels (0..1)" --status-ru "Настраивает значение «прозрачность призраков»." --name-ru "Прозрачность призраков" "Ghost opacity" cl_demo_item_timers_world_alpha 0 1 0.05
    range --live --precision 2 --status "cl_demo_item_timers_world_scale: ghost model size multiplier (0.25..3.0, step 0.01)" --status-ru "Настраивает значение «масштаб призрачной модели» (0.25..3.0, шаг 0.01)." --name-ru "Масштаб призрачной модели" "Ghost model scale" cl_demo_item_timers_world_scale 0.25 3 0.01
    blank
    action --align --status "Open the per-item timer color editor (adaptive toggle + per-item text/ring colors)" --status-ru "Открывает раздел «цвета предметов»." --name-ru "Цвета предметов..." "Items colors..." pushmenu q2prox_demoitemtimers_colors
    blank
    toggle --live --status "cl_demo_item_timers_show_armor_green: track green jacket armor" --status-ru "Включает или выключает параметр «показывать зелёную броню»." --name-ru "Показывать зелёную броню" --items-ru "Нет|Да" "Show green armor (jacket)" cl_demo_item_timers_show_armor_green
    toggle --live --status "cl_demo_item_timers_show_armor_yellow: track yellow combat armor" --status-ru "Включает или выключает параметр «показывать жёлтую броню»." --name-ru "Показывать жёлтую броню" --items-ru "Нет|Да" "Show yellow armor (combat)" cl_demo_item_timers_show_armor_yellow
    toggle --live --status "cl_demo_item_timers_show_armor_red: track red body armor" --status-ru "Включает или выключает параметр «показывать красную броню»." --name-ru "Показывать красную броню" --items-ru "Нет|Да" "Show red armor (body)" cl_demo_item_timers_show_armor_red
    blank
    toggle --live --status "cl_demo_item_timers_show_quad: track Quad Damage" --status-ru "Включает или выключает параметр «показывать квад-урон»." --name-ru "Показывать квад-урон" --items-ru "Нет|Да" "Show Quad Damage" cl_demo_item_timers_show_quad
    toggle --live --status "cl_demo_item_timers_show_invuln: track Invulnerability / pent" --status-ru "Включает или выключает параметр «показывать неуязвимость»." --name-ru "Показывать неуязвимость" --items-ru "Нет|Да" "Show Invulnerability" cl_demo_item_timers_show_invuln
    toggle --live --status "cl_demo_item_timers_show_silencer: track Silencer" --status-ru "Включает или выключает параметр «показывать глушитель»." --name-ru "Показывать глушитель" --items-ru "Нет|Да" "Show Silencer" cl_demo_item_timers_show_silencer
    toggle --live --status "cl_demo_item_timers_show_breather: track Rebreather" --status-ru "Включает или выключает параметр «показывать ребризер»." --name-ru "Показывать ребризер" --items-ru "Нет|Да" "Show Rebreather" cl_demo_item_timers_show_breather
    toggle --live --status "cl_demo_item_timers_show_enviro: track Environment Suit" --status-ru "Включает или выключает параметр «показывать защитный костюм»." --name-ru "Показывать защитный костюм" --items-ru "Нет|Да" "Show Environment Suit" cl_demo_item_timers_show_enviro
    toggle --live --status "cl_demo_item_timers_show_adrenal: track Adrenaline" --status-ru "Включает или выключает параметр «показывать адреналин»." --name-ru "Показывать адреналин" --items-ru "Нет|Да" "Show Adrenaline" cl_demo_item_timers_show_adrenal
    toggle --live --status "cl_demo_item_timers_show_megahealth: track Mega Health" --status-ru "Включает или выключает параметр «показывать мега-здоровье»." --name-ru "Показывать мега-здоровье" --items-ru "Нет|Да" "Show Mega Health" cl_demo_item_timers_show_megahealth
    toggle --live --status "cl_demo_item_timers_show_power_screen: track Power Screen" --status-ru "Включает или выключает параметр «показывать энергетический экран»." --name-ru "Показывать энергетический экран" --items-ru "Нет|Да" "Show Power Screen" cl_demo_item_timers_show_power_screen
    toggle --live --status "cl_demo_item_timers_show_power_shield: track Power Shield" --status-ru "Включает или выключает параметр «показывать энергетический щит»." --name-ru "Показывать энергетический щит" --items-ru "Нет|Да" "Show Power Shield" cl_demo_item_timers_show_power_shield
    blank
    toggle --live --status "cl_demo_item_timers_show_rl: track Rocket Launcher (off by default)" --status-ru "Включает или выключает параметр «показывать ракетницу»." --name-ru "Показывать ракетницу" --items-ru "Нет|Да" "Show Rocket Launcher" cl_demo_item_timers_show_rl
    toggle --live --status "cl_demo_item_timers_show_bfg: track BFG10K (off by default)" --status-ru "Включает или выключает параметр «показывать BFG10K»." --name-ru "Показывать BFG10K" --items-ru "Нет|Да" "Show BFG10K" cl_demo_item_timers_show_bfg
    toggle --live --status "cl_demo_item_timers_show_rail: track Railgun (off by default)" --status-ru "Включает или выключает параметр «показывать Railgun»." --name-ru "Показывать Railgun" --items-ru "Нет|Да" "Show Railgun" cl_demo_item_timers_show_rail
    blank
    blank
    range --live --precision 2 --status "cl_demo_item_timers_strip_alpha: strip background opacity (0..1)" --status-ru "Настраивает значение «прозрачность панели»." --name-ru "Прозрачность панели" "Strip opacity" cl_demo_item_timers_strip_alpha 0 1 0.05
    toggle --live --status "cl_demo_item_timers_strip_pillarbox_workspace: drag coordinates span the full window including pillarbox/letterbox" --status-ru "Включает или выключает параметр «панель в боковых полях»." --name-ru "Панель в боковых полях" --items-ru "Нет|Да" "Strip pillarbox workspace" cl_demo_item_timers_strip_pillarbox_workspace
    action --align --status "Drag the strip to any position (Enter/Escape to exit)" --status-ru "Выполняет действие «переместить панель (перетаскивание)»." --name-ru "Переместить панель (перетаскивание)" "Move strip (drag)" demo_item_timers_strip_edit
    action --align --status "Reset strip position to default" --status-ru "Выполняет действие «сбросить позицию панели»." --name-ru "Сбросить позицию панели" "Reset strip position" demo_item_timers_strip_reset
    blank
    action --align --status "Print item-timer cache to console" --status-ru "Выполняет действие «инфо о таймерах предметов»." --name-ru "Инфо о таймерах предметов" "Print item-timer info" demo_item_timers_info
end

begin q2prox_modhelp
    title "Mod Command Overlay"
    title-ru "Оверлей команд мода"
    style --no-compact
    range --status "Adjust this value." --status-ru "Настраивает значение «прозрачность»." --live --precision 2 --name-ru "Прозрачность" "Opacity" cl_modhelp_alpha 0 1 0.05
    range --status "Adjust this value." --status-ru "Настраивает значение «масштаб текста» (0.1..2.0, шаг 0.01)." --live --precision 2 --name-ru "Масштаб текста" "Text scale" cl_modhelp_scale 0.1 2 0.01
    toggle --status "Toggle this setting." --status-ru "Включает или выключает параметр «компактный режим»." --live --name-ru "Компактный режим" --items-ru "Нет|Да" "Compact mode" cl_modhelp_compact
    toggle --status "Toggle this setting." --status-ru "Включает или выключает параметр «полный экран»." --live --name-ru "Полный экран" --items-ru "Нет|Да" "Fullscreen" cl_modhelp_fullscreen
    toggle --status "Toggle this setting." --status-ru "Включает или выключает параметр «показывать псевдонимы»." --live --name-ru "Показывать псевдонимы" --items-ru "Нет|Да" "Show aliases" cl_modhelp_show_aliases
    blank
    toggle --status "Toggle this setting." --status-ru "Включает или выключает параметр «показывать общие»." --live --name-ru "Показывать общие" --items-ru "Нет|Да" "Show general" cl_modhelp_show_general
    toggle --status "Toggle this setting." --status-ru "Включает или выключает параметр «показывать наблюдательские»." --live --name-ru "Показывать наблюдательские" --items-ru "Нет|Да" "Show spectator" cl_modhelp_show_spectator
    toggle --status "Toggle this setting." --status-ru "Включает или выключает параметр «показывать командные»." --live --name-ru "Показывать командные" --items-ru "Нет|Да" "Show team" cl_modhelp_show_team
    toggle --status "Toggle this setting." --status-ru "Включает или выключает параметр «показывать статистику»." --live --name-ru "Показывать статистику" --items-ru "Нет|Да" "Show stats" cl_modhelp_show_stats
    toggle --status "Toggle this setting." --status-ru "Включает или выключает параметр «показывать голосование»." --live --name-ru "Показывать голосование" --items-ru "Нет|Да" "Show voting" cl_modhelp_show_voting
    toggle --status "Toggle this setting." --status-ru "Включает или выключает параметр «показывать админские»." --live --name-ru "Показывать админские" --items-ru "Нет|Да" "Show admin" cl_modhelp_show_admin
    blank
    values --status "Choose this value." --status-ru "Выбирает значение «роль оверлея»." --live --name-ru "Роль оверлея" --items-ru "Авто|Игрок|Наблюдатель|Комментатор|Капитан|Админ" "Overlay role" cl_modhelp_role auto player spectator caster captain admin
    values --status "Choose this value." --status-ru "Выбирает значение «недоступные строки»." --live --name-ru "Недоступные строки" --items-ru "Показать|Серый|Скрыть" "Unavailable rows" cl_modhelp_unavailable show gray hide
    toggle --status "Toggle this setting." --status-ru "Включает или выключает параметр «подтверждать опасные»." --live --name-ru "Подтверждать опасные" --items-ru "Нет|Да" "Confirm dangerous" cl_modhelp_confirm_dangerous
    toggle --status "Toggle this setting." --status-ru "Включает или выключает параметр «предпочитать контекстную страницу»." --live --name-ru "Предпочитать контекстную страницу" --items-ru "Нет|Да" "Prefer context page" cl_modhelp_prefer_context_page
    blank
    toggle --status "Toggle this setting." --status-ru "Включает или выключает параметр «показывать бейджи строк»." --live --name-ru "Показывать бейджи строк" --items-ru "Нет|Да" "Show row badges" cl_modhelp_show_badges
    toggle --status "Toggle this setting." --status-ru "Включает или выключает параметр «запоминать последнюю страницу»." --live --name-ru "Запоминать последнюю страницу" --items-ru "Нет|Да" "Keep last page" cl_modhelp_keep_page
    toggle --status "Toggle this setting." --status-ru "Включает или выключает параметр «показывать закреплённые первыми»." --live --name-ru "Показывать закреплённые первыми" --items-ru "Нет|Да" "Show pinned first" cl_modhelp_show_pinned
    toggle --status "Toggle this setting." --status-ru "Включает или выключает параметр «использовать локальные переопределения»." --live --name-ru "Использовать локальные переопределения" --items-ru "Нет|Да" "Use local overrides" cl_modhelp_use_local
    blank
    action --align --status "Toggle mod overlay on/off" --status-ru "Выполняет действие «переключить оверлей»." --name-ru "Переключить оверлей..." "Toggle overlay..." modhelp_toggle
    bind --status "Bind a key for this action." --status-ru "Назначает клавишу для действия «клавиша оверлея»." --name-ru "Клавиша оверлея" "Overlay toggle key" modhelp_toggle
    bind --status "Bind a key for this action." --status-ru "Назначает клавишу для действия «клавиша поиска»." --name-ru "Клавиша поиска" "Search key" modhelp_search
end

begin q2prox_vis
    title "Visibility Highlights"
    title-ru "Подсветка видимости"
    style --no-compact
    pairs --live --status "graphics quality for item highlight overlays. High = stable legacy renderer (default). Performance = batched renderer for higher FPS; current implementation can flicker with item style shell+tint until the redesigned renderer lands." --status-ru "Качество графики для подсветки предметов. Высокое = стабильная старая отрисовка (по умолчанию). Производительность = быстрая пакетная отрисовка для большего FPS; текущая реализация может мерцать при стиле контур+заливка до появления нового рендера." --name-ru "Качество графики" --items-ru "Высокое|Производительность" "Graphics quality" cl_vis_overlay_batch High 0 Performance 1
    toggle --live --status "cl_vis_enable: master switch for highlighting" --status-ru "Включает или выключает параметр «включить подсветку»." --name-ru "Включить подсветку" --items-ru "Нет|Да" "Enable highlighting" cl_vis_enable
    toggle --status "Toggle this setting." --status-ru "Включает или выключает параметр «одиночная игра»." --live --name-ru "Одиночная игра" --items-ru "Нет|Да" "Single-player" cl_vis_singleplayer
    toggle --status "Toggle this setting." --status-ru "Включает или выключает параметр «подсветка предметов»." --live --name-ru "Подсветка предметов" --items-ru "Нет|Да" "Item highlighting" cl_vis_items
    values --status "Choose this value." --status-ru "Выбирает значение «стиль предметов»." --live --name-ru "Стиль предметов" --items-ru "Выкл.|Контур|Заливка|Контур+заливка" "Item style" cl_vis_items_style off shell tint "shell+tint"
    range --status "Adjust this value." --status-ru "Настраивает значение «прозрачность заливки»." --live --precision 2 --name-ru "Прозрачность заливки" "Tint alpha" cl_vis_items_alpha 0.05 1 0.05
    range --status "Adjust this value." --status-ru "Настраивает значение «прозрачность контура»." --live --precision 2 --name-ru "Прозрачность контура" "Shell alpha" cl_vis_items_shell_alpha 0.05 1 0.05
    range --status "Adjust this value." --status-ru "Настраивает значение «толщина контура»." --live --precision 2 --name-ru "Толщина контура" "Shell thickness" cl_vis_items_shell_scale 0.01 4 0.01
    range --status "Adjust this value." --status-ru "Настраивает значение «яркость предметов»." --live --precision 2 --name-ru "Яркость предметов" "Item brightness" cl_vis_items_brightness 0 10 0.05
    range --status "Adjust this value." --status-ru "Настраивает значение «масштаб предметов» (0.1..5.0, шаг 0.01; live deathmatch safety clamps не ослабляются)." --live --precision 2 --name-ru "Масштаб предметов" "Item scale" cl_vis_items_scale 0.1 5 0.01
    blank
    toggle --status "Toggle this setting." --status-ru "Включает или выключает параметр «подсветка оружия»." --live --name-ru "Подсветка оружия" --items-ru "Нет|Да" "Weapon highlighting" cl_vis_weapons
    range --status "Adjust this value." --status-ru "Настраивает значение «масштаб оружия» (0.1..5.0, шаг 0.01; live deathmatch safety clamps не ослабляются)." --live --precision 2 --name-ru "Масштаб оружия" "Weapon scale" cl_vis_weapons_scale 0.1 5 0.01
    blank
    toggle --status "Toggle this setting." --status-ru "Включает или выключает параметр «подсветка игроков»." --live --name-ru "Подсветка игроков" --items-ru "Нет|Да" "Player highlighting" cl_vis_players
    values --live --status "off/all/random FFA/duel/auto/team/model. Model mode colors every player by their resolved player-model directory (male/female/cyborg/...) — recommended for demo watching where team truth is not meaningful." --status-ru "Выбирает значение «режим игроков»." --name-ru "Режим игроков" --items-ru "Выкл.|Всё|Случайно FFA|Дуэль|Авто|Команда|Модель" "Player mode" cl_vis_players_mode off all "random FFA" duel auto team model
    action --status "Per-player-model colors editor" --status-ru "Открывает раздел «Цвета моделей игроков»." --name-ru "Цвета моделей игроков..." "Player model colors..." pushmenu q2prox_vis_player_model_colors
    values --status "Choose this value." --status-ru "Выбирает значение «стиль игроков»." --live --name-ru "Стиль игроков" --items-ru "Выкл.|Контур|Заливка|Контур+заливка" "Player style" cl_vis_players_style off shell tint "shell+tint"
    range --status "Adjust this value." --status-ru "Настраивает значение «прозрачность заливки игроков»." --live --precision 2 --name-ru "Прозрачность заливки игроков" "Player tint alpha" cl_vis_players_alpha 0.05 1 0.05
    range --status "Adjust this value." --status-ru "Настраивает значение «прозрачность контура игроков»." --live --precision 2 --name-ru "Прозрачность контура игроков" "Player shell alpha" cl_vis_players_shell_alpha 0.05 1 0.05
    range --status "Adjust this value." --status-ru "Настраивает значение «толщина контура игроков»." --live --precision 3 --name-ru "Толщина контура игроков" "Player shell thickness" cl_vis_players_shell_scale 0 0.05 0.005
    range --live --precision 2 --status "cl_vis_players_scale: player model size. Applied ONLY in single-player or during .dm2/.mvd2 demo playback; stock size on a live deathmatch server. Range 0.1..5.0, step 0.01." --status-ru "Настраивает значение «масштаб игрока» (0.1..5.0, шаг 0.01; применяется только в SP или при воспроизведении .dm2/.mvd2; на живом deathmatch — стандартный размер)." --name-ru "Масштаб игрока" "Player scale" cl_vis_players_scale 0.1 5 0.01
    range --status "Adjust this value." --status-ru "Настраивает значение «яркость игроков»." --live --precision 2 --name-ru "Яркость игроков" "Player brightness" cl_vis_players_brightness 0 10 0.05
    toggle --status "Toggle this setting." --status-ru "Включает или выключает параметр «подсвечивать себя»." --live --name-ru "Подсвечивать себя" --items-ru "Нет|Да" "Highlight self" cl_vis_players_self
    pairs --live --status "Auto-mode fallback when team/duel truth is weak. Stored numerically (1=all, 2=random FFA; default 2)." --status-ru "Выбирает значение «авторезерв»." --name-ru "Авторезерв" --items-ru "Всё|Случайно FFA" "Auto fallback" cl_vis_players_auto_fallback all 1 "Random FFA" 2
    range --status "Adjust this value." --status-ru "Настраивает значение «удержание дуэли (мс)»." --live --precision 0 --name-ru "Удержание дуэли (мс)" "Duel hold ms" cl_vis_players_duel_hold_ms 100 3000 100
    pairs --live --status "Team detection source. Stored numerically (0=off, 1=auto, 2=opentdm)." --status-ru "Выбирает значение «источник команды»." --name-ru "Источник команды" --items-ru "Выкл.|Авто|OpenTDM" "Team source" cl_vis_players_team_source off 0 auto 1 opentdm 2
    pairs --live --status "Team-mode fallback when team truth is weak. Stored numerically (1=all, 2=random FFA, 3=duel; default 3)." --status-ru "Выбирает значение «командный резерв»." --name-ru "Командный резерв" --items-ru "Всё|Случайно FFA|Дуэль" "Team fallback" cl_vis_players_team_fallback all 1 "Random FFA" 2 duel 3
    range --status "Adjust this value." --status-ru "Настраивает значение «удержание команды (мс)»." --live --precision 0 --name-ru "Удержание команды (мс)" "Team hold ms" cl_vis_players_team_hold_ms 100 3000 100
    pairs --status "Choose this value." --status-ru "Выбирает значение «цвет своих»." --live --name-ru "Цвет своих" --items-ru "Циан|Синий|Зелёный|Лайм|Жёлтый|Белый" "Friendly color" cl_vis_players_team_friendly_color cyan "#33Ccff" blue "#3366Ff" green "#33Ff66" lime "#66Ff66" yellow "#Ffff33" white "#Ffffff"
    pairs --status "Choose this value." --status-ru "Выбирает значение «цвет врагов»." --live --name-ru "Цвет врагов" --items-ru "Красный|Оранжевый|Маджента|Жёлтый|Белый|Циан" "Enemy color" cl_vis_players_team_enemy_color red "#Ff4444" orange "#Ff6633" magenta "#Ff33ff" yellow "#Ffff33" white "#Ffffff" cyan "#33Ccff"
    blank
    action --status "Per-class item toggles (health, armor, ammo, powerups, keys)" --status-ru "Открывает раздел «переключатели предметов»." --name-ru "Переключатели предметов..." "Item toggles..." pushmenu q2prox_vis_toggles
    action --status "Per-class item colors" --status-ru "Открывает раздел «цвета предметов»." --name-ru "Цвета предметов..." "Item colors..." pushmenu q2prox_vis_colors
    action --status "Per-weapon enable toggles" --status-ru "Открывает раздел «переключатели оружия»." --name-ru "Переключатели оружия..." "Weapon toggles..." pushmenu q2prox_vis_weapon_toggles
    action --status "Per-weapon colors" --status-ru "Открывает раздел «цвета оружия»." --name-ru "Цвета оружия..." "Weapon colors..." pushmenu q2prox_vis_weapon_colors
    blank
    action --align --status "Print item classification and status" --status-ru "Выполняет действие «инфо о видимости предметов»." --name-ru "Инфо о видимости предметов..." "Vis items info..." cl_vis_items_info
end

begin q2prox_vis_presets
    title "Q2PRO-X / Visual Presets"
    title-ru "Q2PRO-X / Пресеты видимости"
    style --no-compact
    action --q2prox --refresh --status "Current visual highlights, weapon FX and Visual FX menu values, with AVFX forced off and runtime weather state cleared." --status-ru "Текущие подсветки, эффекты оружия и значения меню визуальных эффектов, но AVFX принудительно выключен и погодное runtime-состояние очищено." --name-ru "Подсветка + визуал" "Highlights + Visuals" exec q2pro-x/visual_presets/v_p_v_u.cfg
    action --q2prox --refresh --status "Rain+Storm Ultra AVFX plus current visibility highlights, weapon FX and Visual FX menu values." --status-ru "Ultra-дождь с грозой AVFX плюс текущие подсветки, эффекты оружия и значения меню визуальных эффектов." --name-ru "Дождь + гроза" "Rain + Storm" exec q2pro-x/visual_presets/v_p_v_rs_u.cfg
    action --q2prox --refresh --status "Snow Ultra AVFX plus current visibility highlights, weapon FX and Visual FX menu values." --status-ru "Ultra-снег AVFX плюс текущие подсветки, эффекты оружия и значения меню визуальных эффектов." --name-ru "Снег" "Snow" exec q2pro-x/visual_presets/v_p_v_s_u.cfg
    blank
    action --q2prox --refresh --status "Reset AVFX, highlights, weapon FX and Visual FX menu values to defaults, then force AVFX/highlights off." --status-ru "Сбрасывает AVFX, подсветки, эффекты оружия и визуальные эффекты к умолчаниям, затем выключает AVFX/подсветки." --name-ru "Сброс" "Default" exec q2pro-x/visual_presets/v_p_def.cfg
end

begin q2prox_vis_toggles
    title "Vis Toggles"
    title-ru "Переключатели подсветки"
    style --no-compact
    toggle --status "Toggle this setting." --status-ru "Включает или выключает параметр «малое здоровье»." --live --name-ru "Малое здоровье" --items-ru "Нет|Да" "Health small" cl_vis_health_small
    toggle --status "Toggle this setting." --status-ru "Включает или выключает параметр «среднее здоровье»." --live --name-ru "Среднее здоровье" --items-ru "Нет|Да" "Health medium" cl_vis_health_medium
    toggle --status "Toggle this setting." --status-ru "Включает или выключает параметр «большое здоровье»." --live --name-ru "Большое здоровье" --items-ru "Нет|Да" "Health large" cl_vis_health_large
    toggle --status "Toggle this setting." --status-ru "Включает или выключает параметр «мега-здоровье»." --live --name-ru "Мега-здоровье" --items-ru "Нет|Да" "Health mega" cl_vis_health_mega
    toggle --status "Toggle this setting." --status-ru "Включает или выключает параметр «осколок брони»." --live --name-ru "Осколок брони" --items-ru "Нет|Да" "Armor shard" cl_vis_armor_shard
    toggle --status "Toggle this setting." --status-ru "Включает или выключает параметр «зелёная броня»." --live --name-ru "Зелёная броня" --items-ru "Нет|Да" "Armor jacket" cl_vis_armor_jacket
    toggle --status "Toggle this setting." --status-ru "Включает или выключает параметр «жёлтая броня»." --live --name-ru "Жёлтая броня" --items-ru "Нет|Да" "Armor combat" cl_vis_armor_combat
    toggle --status "Toggle this setting." --status-ru "Включает или выключает параметр «красная броня»." --live --name-ru "Красная броня" --items-ru "Нет|Да" "Armor body" cl_vis_armor_body
    toggle --status "Toggle this setting." --status-ru "Включает или выключает параметр «энергетический экран»." --live --name-ru "Энергетический экран" --items-ru "Нет|Да" "Armor screen" cl_vis_armor_screen
    toggle --status "Toggle this setting." --status-ru "Включает или выключает параметр «энергетический щит»." --live --name-ru "Энергетический щит" --items-ru "Нет|Да" "Armor shield" cl_vis_armor_shield
    toggle --status "Toggle this setting." --status-ru "Включает или выключает параметр «патроны»." --live --name-ru "Патроны" --items-ru "Нет|Да" "Ammo" cl_vis_ammo
    toggle --status "Toggle this setting." --status-ru "Включает или выключает параметр «пауэрапы»." --live --name-ru "Пауэрапы" --items-ru "Нет|Да" "Powerups" cl_vis_powerups
    toggle --status "Toggle this setting." --status-ru "Включает или выключает параметр «ключи»." --live --name-ru "Ключи" --items-ru "Нет|Да" "Keys" cl_vis_keys
end

begin q2prox_vis_colors
    title "Vis Colors"
    title-ru "Цвета подсветки"
    style --no-compact
    pairs --status "Choose this value." --status-ru "Выбирает значение «малое здоровье»." --live --name-ru "Малое здоровье" --items-ru "Зелёный|Лайм|Циан|Жёлтый|Белый" "Health small" cl_vis_health_small_color green "#66Ff66" lime "#33Ff33" cyan "#66Ffff" yellow "#Ffff33" white "#Ffffff"
    pairs --status "Choose this value." --status-ru "Выбирает значение «среднее здоровье»." --live --name-ru "Среднее здоровье" --items-ru "Зелёный|Лайм|Циан|Жёлтый|Белый" "Health medium" cl_vis_health_medium_color green "#33Ff33" lime "#00Ff00" cyan "#33Ffff" yellow "#Ffcc33" white "#Ffffff"
    pairs --status "Choose this value." --status-ru "Выбирает значение «большое здоровье»." --live --name-ru "Большое здоровье" --items-ru "Зелёный|Лайм|Циан|Жёлтый|Белый" "Health large" cl_vis_health_large_color green "#00Ff00" lime "#33Ff33" cyan "#00Ffff" yellow "#Ffcc33" white "#Ffffff"
    pairs --status "Choose this value." --status-ru "Выбирает значение «мега-здоровье»." --live --name-ru "Мега-здоровье" --items-ru "Маджента|Красный|Циан|Синий|Белый" "Health mega" cl_vis_health_mega_color magenta "#Ff33ff" red "#Ff3333" cyan "#33Ffff" blue "#3399Ff" white "#Ffffff"
    pairs --status "Choose this value." --status-ru "Выбирает значение «осколок брони»." --live --name-ru "Осколок брони" --items-ru "Циан|Зелёный|Синий|Белый" "Armor shard" cl_vis_armor_shard_color cyan "#66Ffff" green "#66Ff66" blue "#6699Ff" white "#Ffffff"
    pairs --status "Choose this value." --status-ru "Выбирает значение «зелёная броня»." --live --name-ru "Зелёная броня" --items-ru "Зелёный|Лайм|Циан|Жёлтый|Белый" "Armor jacket" cl_vis_armor_jacket_color green "#66Ff66" lime "#33Ff33" cyan "#66Ffff" yellow "#Ffcc33" white "#Ffffff"
    pairs --status "Choose this value." --status-ru "Выбирает значение «жёлтая броня»." --live --name-ru "Жёлтая броня" --items-ru "Жёлтый|Оранжевый|Зелёный|Белый" "Armor combat" cl_vis_armor_combat_color yellow "#Ffd633" orange "#Ff9933" green "#66Ff66" white "#Ffffff"
    pairs --status "Choose this value." --status-ru "Выбирает значение «красная броня»." --live --name-ru "Красная броня" --items-ru "Красный|Оранжевый|Маджента|Жёлтый|Белый" "Armor body" cl_vis_armor_body_color red "#Ff3333" orange "#Ff6633" magenta "#Ff33ff" yellow "#Ffcc33" white "#Ffffff"
    pairs --status "Choose this value." --status-ru "Выбирает значение «энергетический экран»." --live --name-ru "Энергетический экран" --items-ru "Циан|Синий|Зелёный|Белый" "Armor screen" cl_vis_armor_screen_color cyan "#66Ccff" blue "#3399Ff" green "#66Ff66" white "#Ffffff"
    pairs --status "Choose this value." --status-ru "Выбирает значение «энергетический щит»." --live --name-ru "Энергетический щит" --items-ru "Синий|Циан|Маджента|Белый" "Armor shield" cl_vis_armor_shield_color blue "#3399Ff" cyan "#66Ccff" magenta "#Ff33ff" white "#Ffffff"
    pairs --status "Choose this value." --status-ru "Выбирает значение «патроны»." --live --name-ru "Патроны" --items-ru "Белый|Циан|Зелёный|Жёлтый" "Ammo" cl_vis_ammo_color white "#Ffffff" cyan "#66Ffff" green "#66Ff66" yellow "#Ffcc33"
    pairs --status "Choose this value." --status-ru "Выбирает значение «пауэрапы»." --live --name-ru "Пауэрапы" --items-ru "Синий|Циан|Маджента|Красный|Белый" "Powerups" cl_vis_powerups_color blue "#3399Ff" cyan "#33Ffff" magenta "#Ff33ff" red "#Ff3333" white "#Ffffff"
    pairs --status "Choose this value." --status-ru "Выбирает значение «ключи»." --live --name-ru "Ключи" --items-ru "Маджента|Красный|Циан|Жёлтый|Белый" "Keys" cl_vis_keys_color magenta "#Ff66cc" red "#Ff3333" cyan "#66Ffff" yellow "#Ffcc33" white "#Ffffff"
end

begin q2prox_vis_weapon_toggles
    title "Weapon Toggles"
    title-ru "Переключатели оружия"
    style --no-compact
    toggle --status "Toggle this setting." --status-ru "Включает или выключает параметр «дробовик»." --live --name-ru "Дробовик" --items-ru "Нет|Да" "Shotgun" cl_vis_weapon_shotgun
    toggle --status "Toggle this setting." --status-ru "Включает или выключает параметр «супердробовик»." --live --name-ru "Супердробовик" --items-ru "Нет|Да" "Super shotgun" cl_vis_weapon_sshotgun
    toggle --status "Toggle this setting." --status-ru "Включает или выключает параметр «пулемёт»." --live --name-ru "Пулемёт" --items-ru "Нет|Да" "Machinegun" cl_vis_weapon_machinegun
    toggle --status "Toggle this setting." --status-ru "Включает или выключает параметр «чейнган»." --live --name-ru "Чейнган" --items-ru "Нет|Да" "Chaingun" cl_vis_weapon_chaingun
    toggle --status "Toggle this setting." --status-ru "Включает или выключает параметр «гранатомёт»." --live --name-ru "Гранатомёт" --items-ru "Нет|Да" "Grenade launcher" cl_vis_weapon_grenade
    toggle --status "Toggle this setting." --status-ru "Включает или выключает параметр «ракетница»." --live --name-ru "Ракетница" --items-ru "Нет|Да" "Rocket launcher" cl_vis_weapon_rocket
    toggle --status "Toggle this setting." --status-ru "Включает или выключает параметр «гипербластер»." --live --name-ru "Гипербластер" --items-ru "Нет|Да" "Hyperblaster" cl_vis_weapon_hyperblaster
    toggle --status "Toggle this setting." --status-ru "Включает или выключает параметр «Railgun»." --live --name-ru "Railgun" --items-ru "Нет|Да" "Railgun" cl_vis_weapon_railgun
    toggle --status "Toggle this setting." --status-ru "Включает или выключает параметр «BFG10K»." --live --name-ru "BFG10K" --items-ru "Нет|Да" "BFG10K" cl_vis_weapon_bfg
end

begin q2prox_vis_weapon_colors
    title "Weapon Colors"
    title-ru "Цвета оружия"
    style --no-compact
    pairs --status "Choose this value." --status-ru "Выбирает значение «дробовик»." --live --name-ru "Дробовик" --items-ru "Серый|Белый|Жёлтый|Зелёный" "Shotgun" cl_vis_weapon_shotgun_color grey "#999999" white "#Ffffff" yellow "#Ffcc33" green "#66Ff66"
    pairs --status "Choose this value." --status-ru "Выбирает значение «супердробовик»." --live --name-ru "Супердробовик" --items-ru "Серый|Белый|Жёлтый|Зелёный" "Super shotgun" cl_vis_weapon_sshotgun_color grey "#999999" white "#Ffffff" yellow "#Ffcc33" green "#66Ff66"
    pairs --status "Choose this value." --status-ru "Выбирает значение «пулемёт»." --live --name-ru "Пулемёт" --items-ru "Коричневый|Жёлтый|Оранжевый|Белый" "Machinegun" cl_vis_weapon_machinegun_color brown "#Cc9933" yellow "#Ffcc33" orange "#Ff9933" white "#Ffffff"
    pairs --status "Choose this value." --status-ru "Выбирает значение «чейнган»." --live --name-ru "Чейнган" --items-ru "Коричневый|Жёлтый|Оранжевый|Белый" "Chaingun" cl_vis_weapon_chaingun_color brown "#Cc9933" yellow "#Ffcc33" orange "#Ff9933" white "#Ffffff"
    pairs --status "Choose this value." --status-ru "Выбирает значение «гранатомёт»." --live --name-ru "Гранатомёт" --items-ru "Тёмно-красный|Красный|Оранжевый|Белый" "Grenade launcher" cl_vis_weapon_grenade_color "Dark red" "#993333" red "#Ff3333" orange "#Ff6633" white "#Ffffff"
    pairs --status "Choose this value." --status-ru "Выбирает значение «ракетница»." --live --name-ru "Ракетница" --items-ru "Красный|Оранжевый|Жёлтый|Белый" "Rocket launcher" cl_vis_weapon_rocket_color red "#Ff3333" orange "#Ff6633" yellow "#Ffcc33" white "#Ffffff"
    pairs --status "Choose this value." --status-ru "Выбирает значение «гипербластер»." --live --name-ru "Гипербластер" --items-ru "Зелёно-жёлтый|Зелёный|Жёлтый|Циан|Белый" "Hyperblaster" cl_vis_weapon_hyperblaster_color "Green-yellow" "#99Cc33" green "#66Ff66" yellow "#Ffcc33" cyan "#66Ffff" white "#Ffffff"
    pairs --status "Choose this value." --status-ru "Выбирает значение «Railgun»." --live --name-ru "Railgun" --items-ru "Синий|Циан|Маджента|Белый" "Railgun" cl_vis_weapon_railgun_color blue "#3366Ff" cyan "#33Ccff" magenta "#Ff33ff" white "#Ffffff"
    pairs --status "Choose this value." --status-ru "Выбирает значение «BFG10K»." --live --name-ru "BFG10K" --items-ru "Зелёно-синий|Зелёный|Циан|Синий|Белый" "BFG10K" cl_vis_weapon_bfg_color "Green-blue" "#33Cc99" green "#33Ff66" cyan "#33Ffff" blue "#3399Ff" white "#Ffffff"
end

begin q2prox_scripts
    title "Scripts / Binds"
    title-ru "Скрипты / биндинги"
    style --no-compact
    bind --status "+dropw: hold to make weapon binds drop instead of use" --status-ru "Назначает клавишу для действия «модификатор выброса оружия»." --name-ru "Модификатор выброса оружия" "Weapon drop modifier" +dropw
    bind --status "followip: connect to last IP shown in console" --status-ru "Назначает клавишу для действия «IP из консоли»." --name-ru "IP из консоли" "Follow console IP" followip
    bind --status "aadump: dump scoreboard to console" --status-ru "Назначает клавишу для действия «дамп счёта (консоль)»." --name-ru "Дамп счёта (консоль)" "Score dump (console)" aadump
    bind --status "aashot: dump scoreboard to file" --status-ru "Назначает клавишу для действия «дамп счёта (файл)»." --name-ru "Дамп счёта (файл)" "Score dump (file)" aashot
    bind --status "Bind a key for this action." --status-ru "Назначает клавишу для действия «готовность»." --name-ru "Готовность" "Ready" ready
    bind --status "Bind a key for this action." --status-ru "Назначает клавишу для действия «снять готовность»." --name-ru "Снять готовность" "Unready" unready
    bind --status "Bind a key for this action." --status-ru "Назначает клавишу для действия «голос: да»." --name-ru "Голос: да" "Vote yes" "vote yes"
    bind --status "Bind a key for this action." --status-ru "Назначает клавишу для действия «голос: нет»." --name-ru "Голос: нет" "Vote no" "vote no"
    bind --status "Bind a key for this action." --status-ru "Назначает клавишу для действия «скриншот»." --name-ru "Скриншот" "Screenshot" screenshot
    blank
    action --align --status "Print available console macros" --status-ru "Выполняет действие «список макросов»." --name-ru "Список макросов..." "List macros..." macrolist
end

// ===========================================================================
// Q2PRO-X 2026-05-15 — Player identity submenu (workaround for the
// built-in Player Setup page rendering empty values in modern visual
// style).  All rows here are Player category candidates for the
// global preferences migration; with the master toggle ON, edits
// here flow to baseq2/q2pro-x/q2pro-x.cfg so name/skin/hand/fov stay
// consistent across all mods.
// ===========================================================================
begin q2prox_player_identity
    title "Q2PRO-X / Player identity"
    title-ru "Q2PRO-X / Профиль игрока"
    style --no-compact
    field --width 24 --status "name: player name shown to other clients (server userinfo cvar).  Avoid Unicode in legacy servers." --status-ru "Имя игрока, видимое другим клиентам (server userinfo cvar). Избегайте Unicode в старых серверах." --name-ru "Имя игрока (name)" "Player name" name
    field --width 24 --status "skin: model/skin path, e.g. male/grunt or female/athena.  Server userinfo cvar.  Use the built-in Player Setup page for a visual picker." --status-ru "Путь модель/скин (например male/grunt или female/athena). Server userinfo cvar. Для визуального выбора используйте встроенную страницу «настройка игрока»." --name-ru "Скин (skin)" "Skin path" skin
    values --live --status "hand: weapon hand. 0 = right (default), 1 = left, 2 = center.  Server userinfo cvar." --status-ru "Рука оружия. 0 = правая (по умолчанию), 1 = левая, 2 = по центру. Server userinfo cvar." --name-ru "Рука оружия (hand)" --items-ru "Правая|Левая|По центру" "Hand" hand right left center
    blank
    range --live --precision 0 --status "fov: horizontal field of view (degrees).  Server userinfo cvar.  Also accessible from Q2PRO-X / Mouse & Zoom." --status-ru "Горизонтальный угол обзора (градусы). Server userinfo cvar. Также доступен из Q2PRO-X / Мышь и зум." --name-ru "Угол обзора (FOV)" "Field of view" fov 60 130 1
    blank
    toggle --live --status "cl_noskins: disable custom player skins (force stock male/grunt for all players)." --status-ru "Отключить пользовательские скины (показывать всем male/grunt)." --name-ru "Без своих скинов" --items-ru "Нет|Да" "No custom skins" cl_noskins
end

// ===========================================================================
// Q2PRO-X 2026-05-15 — Global preferences migration submenu.
// Referenced from g_config via `pushmenu q2prox_global_prefs`.
// ===========================================================================
begin q2prox_global_prefs
    title "Q2PRO-X / Global preferences"
    title-ru "Q2PRO-X / Единые настройки"
    style --no-compact
    toggle --q2prox --live --status "cl_q2prox_cfg_global_prefs: master toggle. When ON, the categories below share their values across all mods via baseq2/q2pro-x/q2pro-x.cfg.  First enable imports current values; re-enable does not overwrite existing global values." --status-ru "cl_q2prox_cfg_global_prefs: главный переключатель. Когда ВКЛ, выбранные категории ниже хранятся в едином файле baseq2/q2pro-x/q2pro-x.cfg и одинаковы во всех модах. Первое включение импортирует текущие значения; повторное включение не перезаписывает уже сохранённые в глобальном конфиге." --name-ru "Главный переключатель" --items-ru "Нет|Да" "Master toggle" cl_q2prox_cfg_global_prefs
    blank
    toggle --q2prox --live --status "cl_q2prox_cfg_global_pref_ui: include scr_*/con_*/ui_*/crosshair/ch_*/cl_menu_*/cl_console_*/cl_browser_font_mode in the unified global file." --status-ru "Включает категорию «UI / консоль / HUD» в единый глобальный конфиг (scr_*, con_*, ui_*, crosshair, ch_*, шрифты меню/консоли/браузеров)." --name-ru "UI / консоль / HUD" --items-ru "Нет|Да" "UI / console / HUD" cl_q2prox_cfg_global_pref_ui
    toggle --q2prox --live --status "cl_q2prox_cfg_global_pref_player: include name/skin/hand/fov/cl_noskins in the unified global file.  These are server-visible — same name/skin/fov across all mods." --status-ru "Включает категорию «Игрок / скины / FOV» в единый глобальный конфиг (name, skin, hand, fov, cl_noskins).  Эти настройки видны серверу — одно имя/скин/FOV во всех модах." --name-ru "Игрок / скины / FOV" --items-ru "Нет|Да" "Player / skins / FOV" cl_q2prox_cfg_global_pref_player
    toggle --q2prox --live --status "cl_q2prox_cfg_global_pref_network: include rate/msg/cl_maxfps/r_maxfps/cl_maxpackets/cl_updaterate/cl_async/cl_instantpacket in the unified global file." --status-ru "Включает категорию «Сеть / тайминги» в единый глобальный конфиг (rate, msg, cl_maxfps, r_maxfps, cl_maxpackets, cl_updaterate, cl_async, cl_instantpacket)." --name-ru "Сеть / тайминги" --items-ru "Нет|Да" "Network / timing" cl_q2prox_cfg_global_pref_network
    toggle --q2prox --live --status "cl_q2prox_cfg_global_pref_video: include the curated vid_/gl_/renderer allowlist in the unified global file. Fog tuning cvars are per-mod; debug/cheat renderer cvars are not migrated." --status-ru "Включает категорию «Видео / рендер» в единый глобальный конфиг (выборочный список vid_/gl_/renderer cvar). Настройки fog per-mod; debug- и cheat-cvars не мигрируются." --name-ru "Видео / рендер" --items-ru "Нет|Да" "Video / renderer" cl_q2prox_cfg_global_pref_video
    toggle --q2prox --live --status "cl_q2prox_cfg_global_pref_audio: include s_volume/s_ambient/s_auto_focus/s_underwater*/s_mixahead/s_swapstereo/ogg_* in the unified global file." --status-ru "Включает категорию «Звук» в единый глобальный конфиг (s_volume, s_ambient, s_auto_focus, s_underwater*, s_mixahead, s_swapstereo, ogg_*)." --name-ru "Звук" --items-ru "Нет|Да" "Audio" cl_q2prox_cfg_global_pref_audio
    blank
    action --q2prox --align --status "Print master/category state, per-category candidate count, dormant entry count to console." --status-ru "Вывести в консоль состояние мастера/категорий, количество кандидатов в каждой категории и количество «спящих» записей." --name-ru "Информация..." "Info..." q2prox_cfg_global_prefs_info
    action --q2prox --align --status "Equivalent to setting the master toggle from 0 to 1: apply any dormant entries and save the global cfg." --status-ru "Эквивалентно включению главного переключателя: применить «спящие» записи из глобального конфига и сохранить файл." --name-ru "Запустить миграцию..." "Migrate now..." q2prox_cfg_global_prefs_migrate
end

begin q2prox_voice
    title "Q2PRO-X / Voice Chat"
    title-ru "Q2PRO-X / Голосовой чат"
    style --no-compact
    toggle --live --status "vc_enable: master switch (0 = off by default; Phase 1 requires OpenAL for both voice transmit and receive)" --status-ru "Включает или выключает параметр «голосовой чат включён»." --name-ru "Голосовой чат включён" --items-ru "Нет|Да" "Voice chat enabled" vc_enable
    blank
    toggle --live --status "vc_autojoin: auto-join voice room on game server connect" --status-ru "Включает или выключает параметр «автовход при подключении»." --name-ru "Автовход при подключении" --items-ru "Нет|Да" "Autojoin on connect" vc_autojoin
    values --live --status "vc_room_mode: server = per-game-server room (default), manual = use vc_room_name" --status-ru "Выбирает значение «режим комнаты»." --name-ru "Режим комнаты" --items-ru "Сервер|Ручной" "Room mode" vc_room_mode server manual
    field --width 24 --status "vc_room_name: room name for manual mode" --status-ru "Редактирует значение «имя ручной комнаты»." --name-ru "Имя ручной комнаты" "Manual room name" vc_room_name
    field --width 32 --status "vc_server: voice control-plane URL" --status-ru "Редактирует значение «сервер управления»." --name-ru "Сервер управления" "Control server" vc_server
    blank
    toggle --live --status "vc_mic_enable: allow microphone capture (requires OpenAL sound engine)" --status-ru "Включает или выключает параметр «микрофон включён»." --name-ru "Микрофон включён" --items-ru "Нет|Да" "Microphone enabled" vc_mic_enable
    action --q2prox --align --status "Choose microphone from enumerated devices; (default) follows Windows default mic. Console fallback: /voice_mic_list, /voice_mic_pick <index>." --status-ru "Открывает раздел «микрофон»." --name-ru "Микрофон..." "Mic device..." pushmenu q2prox_voice_mic_pick
    values --live --status "vc_ptt_mode: 1 = push-to-talk (default), 0 = VAD" --status-ru "Выбирает значение «режим передачи»." --name-ru "Режим передачи" --items-ru "Активация голосом|Кнопка разговора" "Transmit mode" vc_ptt_mode "voice activation" "push-to-talk"
    range --live --precision 3 --status "vc_vad_threshold: VAD trigger level, LOWER = more sensitive" --status-ru "Настраивает значение «порог VAD»." --name-ru "Порог VAD" "VAD threshold" vc_vad_threshold 0.001 0.1 0.005
    range --live --precision 2 --status "vc_input_gain: microphone gain (1.0 = unity, up to 10x)" --status-ru "Настраивает значение «усиление микрофона»." --name-ru "Усиление микрофона" "Mic gain" vc_input_gain 0.0 10.0 0.25
    range --live --precision 2 --status "vc_receive_volume: incoming voice volume (1.0 = unity, up to 10x, independent of s_volume; playback also requires OpenAL in Phase 1)" --status-ru "Настраивает значение «громкость приёма»." --name-ru "Громкость приёма" "Receive volume" vc_receive_volume 0.0 10.0 0.25
    toggle --live --status "vc_deafen: mute all incoming voice (you can still transmit)" --status-ru "Включает или выключает параметр «заглушить входящие»." --name-ru "Заглушить входящие" --items-ru "Нет|Да" "Deafen (mute incoming)" vc_deafen
    blank
    field --width 24 --status "vc_display_name: your name in voice room (empty = use player name)" --status-ru "Редактирует значение «отображаемое имя»." --name-ru "Отображаемое имя" "Display name" vc_display_name
    blank
    action --align --status "Join voice room for current server or manual room" --status-ru "Выполняет действие «войти в комнату»." --name-ru "Войти в комнату" "Join room" voice_join
    action --align --status "Leave current voice room" --status-ru "Выполняет действие «покинуть комнату»." --name-ru "Покинуть комнату" "Leave room" voice_leave
    bind --status "+voiceptt: push-to-talk (hold to transmit)" --status-ru "Назначает клавишу для действия «клавиша PTT»." --name-ru "Клавиша PTT" "PTT key" +voiceptt
    bind --status "voice_mic_toggle: toggle mic on/off" --status-ru "Назначает клавишу для действия «клавиша микрофона»." --name-ru "Клавиша микрофона" "Mic toggle key" voice_mic_toggle
    blank
    action --q2prox --align --refresh --status "Reset ONLY the voice settings to the hosted Phase 1 baseline (vc_relay left untouched; other Q2PRO-X settings not touched)" --status-ru "Выполняет действие «восстановить голосовые настройки»." --name-ru "Восстановить голосовые настройки" "Restore voice defaults" voice_defaults
end
