$ show HLANoVR/HLA-NoVR
This repository contains the HLA-NoVR mod for Half-Life: Alyx, which adapts the VR-only game for flatscreen (keyboard and mouse) play. The mod is implemented primarily as a collection of Lua scripts that run within the Source 2 engine's vscript system, overriding VR interactions with traditional FPS controls. It includes custom HUD elements (health hearts, wrist pockets), weapon viewmodel animations, ladder climbing, multitool puzzle solving, and inventory management. The architecture is monolithic: a main script (novr.lua) initializes subsystems and hooks game events, while specialized scripts handle specific mechanics (flashlight, jump, gravity gloves, crafting stations). The mod also provides precompiled map packages (VPK files) that modify level geometry and entity placement to accommodate non-VR gameplay. Key entry points include novr.lua (loaded via the -novr command-line flag), which sets up key bindings, gives starting weapons, and applies per-map overrides. Other critical modules are useextra.lua (handles interactive objects across all maps), multitool.lua (solves toner/circuit puzzles with hardcoded paths), and wristpockets.lua (manages inventory persistence). The mod relies heavily on console commands (SendToConsole) and entity I/O (DoEntFireByInstanceHandle) to drive game logic, making it tightly coupled to the Half-Life: Alyx engine and its entity naming conventions. External dependencies include the Half-Life: Alyx game itself, third-party scripts (e.g., flashlight and jump fixes from JJL772, storage library from FrostSource/hla_extravaganza), and the Source 2 engine's vscript API. The mod is actively maintained with frequent updates, but its reliance on hardcoded map-specific coordinates and entity names introduces fragility with each game update. The codebase demonstrates practical modding skills but lacks modularity and contains some bugs (e.g., an always-true condition in useextra.lua).
The LLM identified 1 files worth highlighting for reuse:
A standalone typed save/load module for Source 2 vscript. Supports saving and restoring strings, numbers, booleans, vectors, qangles, tables, and entity references. Handles long strings by splitting, and allows custom classes to define __save/__load methods. Exposes methods on CBaseEntity for context-based persistence. This module is self-contained, well-structured, and could be extracted for use in other Source 2 mods with minimal adaptation.