Read the original on Steam ↗An update to No More Room in Hell has been released. The update will be applied automatically when you restart No More Room in Hell. The major changes include:
Source Engine upgrade
Added 64-bit support, 64-bit binaries will automatically be launched on systems with a 64-bit OS
Added a borderless window option to video settings
Added radial fog (from Half-Life 2: 20th Anniversary Update)
Added Steam Networking, port forwarding is no longer required
Added UI scaling for high-resolution screens
Added Vulkan renderer, which is now enabled by default on Linux
Fixed a prediction bug where if the player was moved on the client, their input-based movement for that tick was not taken into account in non-player actions
Fixed an issue where certain variables like position would not be updated correctly to match the server in certain situations
Fixed certain breakable props not gibbing correctly
Fixed player hull being mis-predicted in certain instances causing rollbacks every frame when e.g. crouching or against a wall
Fixed the player's base velocity (e.g. conveyors, moving items etc.) getting subtly out of sync from client/server
Improved networking precision for local player positions, resulting in less prediction errors and better game-feel
Improved prediction for walking on props and other entities
Made the game launch in native resolution by default instead of 640x480
Additions
Added a menu in the Create Server dialog that selects a server type for Steam Networking, allowing public / friends-only / unlisted servers without port forwarding
Added ability to pause the game when playing in Single Player mode
Changes
Active Workshop map is now distributed to connecting players on local servers
Certain HUD elements such as player names are now hidden during suicide blackout
Changed default server name to "'s server"
ConVar "viewmodel_fov" is now saved to user config
Difficulty is now displayed in the server browser game description
Flashlight shadows are now independent from "High" shadow quality, and can be enabled in the advanced options (off by default to reduce engine crashes)
Improved native Linux support for significantly better performance
Optimized network bandwidth on player and zombie movement
Optimized zombie performance even further on crowded maps
Overhauled rich presence to support connections for Steam Networking, both Discord and Steam will now recognize such servers for joins and invites
Removed warning dialogs for NAT connection and Steam Deck compatibility as those are no longer relevant
Revised voice status icons over player heads to be more readable in darker maps
Updated FMOD Engine to version 2.03.12
Voice commands from muted players are now blocked by default, this can be controlled with cvar "cl_voicecmd_ignore_muted_player"
Updated the localization files:
With thanks to community translators: Atheist, grobinho, Klowby, MakinDay, marcielcps, Plazehorta, RicecakeHuman
Fixed extracted players occasionally appearing as "deceased" on the scoreboard
Fixed false spawn notifications (i.e. sound plays and window flashes while "waiting for spawn point")
Fixed ironsights not being turned off when contemplating suicide
Fixed particle rain collision, contributed by BigHatMarley (#1579)
Fixed several issues when restoring saves on maps that utilize level transition
Fixed supply crate and keypad panels not properly resizing on resolution change
Fixed zombie idle vocalization cutting short on longer moans
Changes for mappers and modders
Added custom zombie model pools, which can be controlled by cvars prefixed with "sv_zombie_models"
Added cvar "tonemap_debug", helps visualize active tonemap controller and its params
Added "ent_minsmaxs" command, prints entity bounding box in a MapHack friendly format
Added entity "npc_nmrih_basezombie", base class for a generic zombie, useful for custom zombies
Added entity "skybox_swapper", swaps 2D skybox material
Added entity "trigger_tonemap", changes tonemap controllers for players touching the trigger
Added game event "inventory_box_item_taken", fired when the player picks up an item from a supply crate
Added game event "player_voice_command", fired when the player uses a voice command, incl. automatic calls (pain, bleed, etc.)
Added "HeadSplit" input for zombies (#1569)
Added hull override keyfield to zombies
Added input "RevertAllMapCvars" to entity "logic_ruleset", it reverts all cvars that were changed by an active map to a base value (when available), or default, it doesn't revert difficulty / script / mutator changes
Added inputs "ForceRespawnPlayer" and "ForceRespawnAllPlayers" to entity "nmrih_game_state", forcefully respawns players by skipping the valid spawn point check
Added keyfield "Despawn Ignore Population" to entity "func_zombie_spawn", by default, zombies only despawn when zone population is over the maximum, even when they're unseen; when set to 'No', it uses classic behavior where visited zones keep max. zombies, when set to 'Yes', it always despawns unseen zombies
Added keyfield "Hide TAKE Button" to entity "item_inventorybox"
Added keyfield "HUD Style" to entity "logic_progress", changes visual style of the progress bar, with new addition of a circle that is drawn in clockwise direction at the center of the screen
Added keyfield "Ignore Grease" to zombies, when true, the zombie will not swap between NPC assigned collision groups to phase through each other
Added keyfield "Ignore Wind?" to dust particle brush entities
Added keyfield "Ignore Zombie Rules" to zombies, when true, game rules will treat them as a generic NPC
Added line break support to entity "point_message_multiplayer"
Added missing spawnflags to entity "point_viewcontrol_multiplayer"
Added outputs "OnBarricade" and "OnBreak" to entity "nmrih_barricade"
Added support for barricade prop model override
Added support for filtering model rendering on specific clients
FGD: Customized "base.fgd" is now shipped with "nmrih.fgd", to replace class overrides and dependency for base SDK
FGD: Restored missing "Mark" and eyedropper buttons on Hammer when editing "Filter Name" keyfields
Fixed dynamic "logic_progress" always completing on "StopProgress"
Fixed entity "logic_script_proxy" calls not working on global scope when using instances
Fixed entity "logic_script_proxy" not accepting null for input "SetTargetEntity"
Fixed map localization files within the BSP not being loaded
Fixed parented model attachments on NPCs being misaligned
Fixed "player_spawn" event being incorrectly fired when spawn points aren't available
Fixed runners spawned via BecomeRunner not randomizing their collision groups
Fixed sparks sound on buttons not playing
MapHack: Fixed collision bounds on spawned brush entities
NMRObjective: Added ability to drag-select nodes
NMRObjective: Added scrollbars when nodes go outside the workspace
NMRObjective: Misc. optimization and improvements
VScript: Added CAI_BaseNPC functions CanLagCompensate(), and SetCanLagCompensate()
VScript: Added CBaseAnimating functions SetPlayerDrawFilter(), and DrawFilterAllPlayers(), when set to true, this model won't be visible for the given player
VScript: Added CBaseEntity function IsZombie(), returns true if the entity is considered a valid zombie by game logic
VScript: Added CBaseEntity hook OnTakeDamage, this hook is designed as a mutable replacement for filter_script's PassesFinalDamageFilter, incoming damage info can be modified before it's applied, returning 'false' will discard received damage
VScript: Added CBaseEntity hook TraceAttack, called when the entity is about to receive an attack trace, incoming damage info can be modified before it's applied, this hook is called *before* damage filters are checked, returning false will discard the trace
VScript: Added CBasePlayer function IsHLTV(), returns true if the player is SourceTV
VScript: Added CItem_InventoryBox functions IsTakeButtonHidden(), and SetTakeButtonHidden()
VScript: Added CLogicProgress function SetCircle()
VScript: Added CNMRiH_BarricadePoint function SetModelOverride()
VScript: Added CNMRiH_BaseZombie functions IsRecognizedByGameRules(), SetIgnoreZombieRules(), and SetIgnoreGrease()
VScript: Added CNMRiH_Player function DidGunshotSuicide()
VScript: Added CNMRiH_Player function ForceTransmit(), sends network update to all clients even when the player is dormant for them (filtered by PVS)
VScript: Added CNMRiH_Player function SetForcedRespawn(), flags next respawn as forced and skips valid spawn point check, then reverts on spawn
VScript: Added CNMRiH_Player function SetVaccinated(), directly sets vaccinated state, and skips the chance of partial blindness
VScript: Added CNMRiH_Player functions HasJumpAbility(), HasDuckAbility(), SetJumpAbility(), and SetDuckAbility(), overrides whether player can jump/duck or not, predicted on client
VScript: Added CNMRiH_Player hooks OnWeaponDrop, OnWeaponEquip, and OnWeaponSwitch
VScript: Added consistent rand() and RAND_MAX across platforms
VScript: Added constants for NMRiH button masks, collision groups, and damage types
VScript: Added CScriptNavArea functions GetAdjacentAreas(), and GetAdjacentCount()
VScript: Added enum "VoiceCommand", lists available player voice commands, incl. automatic calls (pain, bleed, etc.)
VScript: Added functions TraceEntity(), and TraceHull()
VScript: Added recursion support for CScriptKeyValues functions TableToSubKeys() and SubKeysToTable()
VScript: Added support for reading KeyValues from BSP pak lump via function KeyValuesRead()
VScript: Added support for trace filter hit entity callbacks on TraceLineEx(), TraceHull(), and TraceEntity(), via "callback" value that expects a function with single argument for params, e.g. "function ShouldHitEntity(params)" where 'params' have keys: entity, contentsmask; returned value filters the hit entity
VScript: Class CScriptNavArea now has string representation (i.e. "[] Area")
VScript: Entity input "RunScriptCode" now converts backticks to quotes (i.e. ` -> ")
VScript: Fixed CNMRiH_Player function IsTalkingWalkie() always returning 'false'
VScript: Fixed crash when passing null values to TraceLineEx() function
VScript: Fixed dangling entity script instances in some cases, which caused crashes (e.g. "prop_physics" with a script scope being deleted early due to a bad model)
VScript: Fixed function SetActivity() allowing ACT_INVALID, which caused a crash
VScript: Fixed hooks NPC_TranslateActivity and NPC_TranslateSchedule not checking invalid return types
VScript: Fixed script scope leakage on entity deletion
VScript: Updated with latest changes from Mapbase
Changes for server admins
Added ability to modify zombie model pools, controlled by cvars "sv_zombie_models", "sv_zombie_models_kid", "sv_zombie_models_ng", and "sv_zombie_models_runner", models are set with ',' delimiter relative to models/nmr_zombie/*.mdl (or direct filename)
Added cvar "ov_despawn_ignore_population", by default zombies only despawn when zone population is over the maximum, set to 0 for vanilla behavior where visited zones keep max. zombies, or 1 that always despawns unseen zombies (#1562)
Added cvar "sv_ammobox_entity_legacy", for map compatibility when changes to ammobox_ entities cause problems
Added cvar "sv_friendly_fire_ignore_infected", when set, don't apply forced friendly fire against infected players
Added cvar "sv_gamedesc_override", to let server owners change game description without plugins
Added cvar "sv_runner_randomize_collision_group", runners always switch collision groups (grease) on spawn, when 0 and paired with BecomeRunner, this emulates bugged behavior pre-v1.15.0
Added cvar "sv_sprint_with_held_item", allows players to sprint while holding an item
Added cvar "sv_tree_sway_update_time", when 0, it disables tree sway server-side (useful for map compatibility)
Added cvar "sv_zombie_brainstem_dmg_scale", zombies take this factor of brainstem hitbox damage (if sv_brainstem is set to 1)
Added cvars to tweak zombie vocalization, "sv_zombie_moan_freq_angry_only", "sv_zombie_moan_freq_limit", and "sv_zombie_moan_freq_random" (vanilla behavior unchanged)
Added new method of randomizing zombie models by shuffling a model pool and pulling entries from it, this can be controlled with cvar "sv_zombie_shuffle_models"
Fixed Steam Workshop downloads on a dedicated server (#1581)
Game state commands (such as "respawnplayer") now support SteamIDs and partial name matches as arguments
Game state commands can now forcefully respawn players via [-force] switch, e.g. "respawnplayer -force PlayerName"
Maps
nmo_asylum
Attempted to fix body parts going through the ritual floor
Fixed leg part softlock (#1565)
Fixed weird glitch artifact on a ceiling brush
nmo_boardwalk
Fixed godspots (#1605)
nmo_broadway2
Added clips for smooth movement in the last ladder extraction area
Little visual fixes
Tweaked escape rope "ladder" brush to be less confusing (#1533)
nmo_cabin
Reduced damage time from the canister explosion
nmo_chinatown
Fixed fade distance value being too close on a Gun Shop extinguisher prop
nmo_cleopas
Added glow for lever base
Added power box prop in one of the houses to hide a seeping tree through a wall
Fixed music manager not playing the correct playlist for tension state (#1604)
Fixed softlock when lever is dropped into the electric puddle (#1537)
Fixed softlock when objective items are thrown out of reach (#1548)
nmo_fema
Fixed reflections on the plaster wall next to the initial spawn point
Tweaked zombie navigation
nmo_quarantine
Fixed barricade spots at the end of the map not working (#1561)
Fixed godspots (#1605)
nmo_shelter
Fixed godspots (#1605)
nmo_shoreline
Disabled zombie respawning around bedrooms in the upper floor of the cabin (only on Casual and Classic difficulty)
Fixed being able to go under the extraction zone by standing on the rear ramp of the boat
Increased first aid kit spawn rates
Small tweaks to make navigating the map easier
nmo_toxteth / nmo_toxtethdark
Fixed missing X mark on the brick cemetery wall
nms_arpley
Fixed fade distance value on some props in the house being too close
nms_midwest
Fixed ability to block zone entrances with military crates
Fixed visual bug on barricade prop at zone A
nms_northway
Fixed fade distance value on extinguisher prop being too close