Balance · 3
The damage time from the canister explosion on nmo_cabin has been reduced.
canister explosion damage timeZombie respawning around bedrooms in the upper floor of the cabin on nmo_shoreline has been disabled on Casual and Classic difficulty.
zombie respawningFirst aid kit spawn rates have been increased on nmo_shoreline.
first aid kit spawn rate
Content · 64
The VScript functions 'SetPlayerDrawFilter()' and 'DrawFilterAllPlayers()' have been added for CBaseAnimating, controlling model visibility for specific players.
functions 'setplayerdrawfilter' and 'drawfilterallplayers'The VScript function 'DidGunshotSuicide()' has been added for CNMRiH_Player.
function 'didgunshotsuicide()'Recursion support for VScript KeyValues functions TableToSubKeys() and SubKeysToTable() has been added.
recursion support for keyvalues functionThe keyfield 'Despawn Ignore Population' has been added to 'func_zombie_spawn', controlling whether unseen zombies always despawn or adhere to zone population limits.
keyfield 'despawn ignore population'Support for trace filter hit entity callbacks on TraceLineEx(), TraceHull(), and TraceEntity() has been added to VScript.
trace filter hit entity callbackThe VScript function 'SetModelOverride()' has been added for CNMRiH_BarricadePoint.
function 'setmodeloverride()'The VScript hook 'TraceAttack' has been added for CBaseEntity, called before damage filters are checked, allowing modification of incoming damage info.
hook 'traceattack'Constants for NMRiH button masks, collision groups, and damage types have been added to VScript.
vscript constantAn enum 'VoiceCommand' has been added to VScript, listing available player voice commands.
enum 'voicecommand'The VScript functions 'IsTakeButtonHidden()' and 'SetTakeButtonHidden()' have been added for CItem_InventoryBox.
functions 'istakebuttonhidden' and 'settakebuttonhidden'The game event 'player_voice_command' has been added, fired when a player uses a voice command, including automatic calls like pain or bleed.
game event 'player_voice_command'The VScript function 'IsZombie()' has been added for CBaseEntity, returning true if the entity is considered a valid zombie by game logic.
function 'iszombie()'The cvar 'sv_tree_sway_update_time' has been added, which can disable tree sway server-side when set to 0.
cvar 'sv_tree_sway_update_time'The entity 'skybox_swapper' has been added to swap 2D skybox materials.
entity 'skybox_swapper'The game event 'inventory_box_item_taken' has been added, fired when a player picks up an item from a supply crate.
game event 'inventory_box_item_taken'VScript functions 'HasJumpAbility()', 'HasDuckAbility()', 'SetJumpAbility()', and 'SetDuckAbility()' have been added for CNMRiH_Player, overriding whether a player can jump or duck.
jump and duck ability functionScrollbars have been added to NMRObjective when nodes go outside the workspace.
scrollbarThe inputs 'ForceRespawnPlayer' and 'ForceRespawnAllPlayers' have been added to the entity 'nmrih_game_state', forcefully respawning players by skipping the valid spawn point check.
inputs 'forcerespawnplayer' and 'forcerespawnallplayers'The keyfield 'Ignore Grease' has been added to zombies, preventing them from swapping collision groups to phase through each other.
keyfield 'ignore grease'New cvars 'sv_zombie_moan_freq_angry_only', 'sv_zombie_moan_freq_limit', and 'sv_zombie_moan_freq_random' have been added to tweak zombie vocalization.
zombie vocalization cvarThe VScript hook 'OnTakeDamage' has been added for CBaseEntity, allowing modification of incoming damage info before it's applied.
hook 'ontakedamage'A hull override keyfield has been added to zombies.
hull override keyfieldThe VScript functions 'CanLagCompensate()' and 'SetCanLagCompensate()' have been added for CAI_BaseNPC.
functions 'canlagcompensate' and 'setcanlagcompensate'The cvar 'sv_runner_randomize_collision_group' has been added, controlling whether runners randomize collision groups on spawn.
cvar 'sv_runner_randomize_collision_group'Several VScript functions for controlling tonemap and bloom have been added for CBasePlayer, including SetTonemapScale(), SetTonemapRate(), SetAutoExposureMin(), SetAutoExposureMax(), SetBloomScale(), UseDefaultAutoExposure(), UseDefaultBloomScale(), and ClearTonemapParams().
tonemap and bloom functionVScript hooks 'OnWeaponDrop', 'OnWeaponEquip', and 'OnWeaponSwitch' have been added for CNMRiH_Player.
weapon hookThe keyfield 'Hide TAKE Button' has been added to the entity 'item_inventorybox'.
keyfield 'hide take button'The cvar 'sv_gamedesc_override' has been added, allowing server owners to change the game description without plugins.
cvar 'sv_gamedesc_override'The keyfield 'Ignore Wind?' has been added to dust particle brush entities.
keyfield 'ignore wind?'The VScript function 'ForceTransmit()' has been added for CNMRiH_Player, sending network updates to all clients even when the player is dormant.
function 'forcetransmit()'The command 'ent_minsmaxs' has been added, which prints an entity's bounding box in a MapHack friendly format.
command "ent_minsmaxs"Support for filtering model rendering on specific clients has been added.
filtering model renderingThe class CScriptNavArea now has a string representation in VScript.
string representationThe cvar 'sv_friendly_fire_ignore_infected' has been added, which prevents forced friendly fire against infected players.
cvar 'sv_friendly_fire_ignore_infected'The VScript functions 'GetAdjacentAreas()' and 'GetAdjacentCount()' have been added for CScriptNavArea.
functions 'getadjacentareas' and 'getadjacentcount'The input 'RevertAllMapCvars' has been added to the entity 'logic_ruleset', which reverts all cvars changed by an active map to a base or default value.
input 'revertallmapcvars'Support for reading KeyValues from BSP pak lump via function KeyValuesRead() has been added to VScript.
keyvalues reading from bspServer admins can now modify zombie model pools using cvars like 'sv_zombie_models', 'sv_zombie_models_kid', 'sv_zombie_models_ng', and 'sv_zombie_models_runner'.
zombie model pools modificationThe VScript function 'SetVaccinated()' has been added for CNMRiH_Player, directly setting the vaccinated state and skipping the chance of partial blindness.
function 'setvaccinated()'The 'HeadSplit' input has been added for zombies.
input 'headsplit'Consistent rand() and RAND_MAX across platforms have been added to VScript.
rand() and rand_maxRadial fog, previously from Half-Life 2: 20th Anniversary Update, has been added.
radial fogThe cvar 'sv_sprint_with_held_item' has been added, allowing players to sprint while holding an item.
cvar 'sv_sprint_with_held_item'The cvar 'ov_despawn_ignore_population' has been added, controlling zombie despawning behavior based on zone population.
cvar 'ov_despawn_ignore_population'The keyfield 'Ignore Zombie Rules' has been added to zombies, allowing game rules to treat them as generic NPCs.
keyfield 'ignore zombie rules'The outputs 'OnBarricade' and 'OnBreak' have been added to the entity 'nmrih_barricade'.
outputs 'onbarricade' and 'onbreak'Line break support has been added to the entity 'point_message_multiplayer'.
line break supportThe entity 'trigger_tonemap' has been added to change tonemap controllers for players touching the trigger.
entity 'trigger_tonemap'Bicubic lightmaps, previously from Half-Life 2: 20th Anniversary Update, have been added.
bicubic lightmapThe keyfield 'HUD Style' has been added to 'logic_progress', changing the visual style of the progress bar, including a new circular option.
keyfield 'hud style'The ability to drag-select nodes has been added to NMRObjective.
node selectionThe VScript functions 'TraceEntity()' and 'TraceHull()' have been added.
functions 'traceentity' and 'tracehull'Support for barricade prop model override has been added.
barricade prop model overrideThe entity 'npc_nmrih_basezombie', a base class for generic zombies, has been added for custom zombie creation.
entity 'npc_nmrih_basezombie'The cvar 'tonemap_debug' has been added to help visualize the active tonemap controller and its parameters.
cvar "tonemap_debug"Missing spawnflags have been added to the entity 'point_viewcontrol_multiplayer'.
missing spawnflagThe VScript function 'SetCircle()' has been added for CLogicProgress.
function 'setcircle()'Custom zombie model pools have been added, controllable by cvars prefixed with 'sv_zombie_models'.
custom zombie model poolThe VScript functions 'IsRecognizedByGameRules()', 'SetIgnoreZombieRules()', and 'SetIgnoreGrease()' have been added for CNMRiH_BaseZombie.
functions 'isrecognizedbygamerules', 'setignorezombierules', and 'setignoregrease'The cvar 'sv_zombie_brainstem_dmg_scale' has been added to tweak the damage factor for zombie brainstem hitboxes.
cvar 'sv_zombie_brainstem_dmg_scale'The cvar 'sv_ammobox_entity_legacy' has been added for map compatibility with ammobox_ entities.
cvar 'sv_ammobox_entity_legacy'A new method of randomizing zombie models by shuffling a model pool has been added, controlled by 'sv_zombie_shuffle_models'.
zombie model randomizationThe VScript function 'SetForcedRespawn()' has been added for CNMRiH_Player, flagging the next respawn as forced and skipping the valid spawn point check.
function 'setforcedrespawn()'The VScript function 'IsHLTV()' has been added for CBasePlayer, returning true if the player is SourceTV.
function 'ishltv()'
Controls · 1
The ability to pause the game when playing in Single Player mode has been added.
single player pause
System · 21
Native Linux support has been improved for significantly better performance.
native linux supportA Vulkan renderer has been added and is now enabled by default on Linux systems.
vulkan rendererFlashlight shadows are now independent from 'High' shadow quality and can be enabled in advanced options, defaulting to off to reduce engine crashes.
flashlight shadowZombie performance has been further optimized on crowded maps.
zombie performance optimizationAn update for No More Room in Hell has been released and will be applied automatically upon restarting the game.
update64-bit binaries will now automatically launch on systems with a 64-bit operating system.
64-bit supportGame state commands now support SteamIDs and partial name matches as arguments, and can forcefully respawn players with a '-force' switch.
game state commandThe VScript entity input 'RunScriptCode' now converts backticks to quotes.
input 'runscriptcode'The FMOD Engine has been updated to version 2.03.12.
fmod engineThe game's engine has been upgraded, including the addition of 64-bit support, a borderless window option, bicubic lightmaps, radial fog, Steam Networking, UI scaling for high-resolution screens, and a Vulkan renderer for Linux.
engine upgradeSteam Networking has been added, eliminating the need for port forwarding.
steam networkingThe localization files have been updated.
localization fileRich presence has been overhauled to support connections for Steam Networking, allowing both Discord and Steam to recognize these servers for joins and invites.
rich presence overhaulThe default server name has been changed to '<player name>'s server'.
default server nameThe ConVar 'viewmodel_fov' is now saved to the user config.
convar "viewmodel_fov"Network bandwidth on player and zombie movement has been optimized.
network bandwidth optimizationThe 'nmrih.fgd' file is now shipped with a customized 'base.fgd' to replace class overrides and dependencies for the base SDK.
fgd shippingVoice commands from muted players are now blocked by default, controllable with the cvar 'cl_voicecmd_ignore_muted_player'.
voice commands from muted playerActive Workshop maps are now distributed to connecting players on local servers.
workshop map distributionThe game now launches in native resolution by default, instead of 640x480.
default launch resolutionVScript has been updated with the latest changes from Mapbase.
vscript update
UI · 6
Difficulty is now displayed in the server browser game description.
difficulty displayVoice status icons over player heads have been revised to be more readable in darker maps.
voice status iconCertain HUD elements, such as player names, are now hidden during suicide blackout.
hud elements during suicide blackoutUI scaling has been added for high-resolution screens.
ui scalingA borderless window option has been added to the video settings.
borderless window optionA menu has been added to the Create Server dialog to select a server type for Steam Networking, enabling public, friends-only, or unlisted servers without port forwarding.
server creation menu
Fix · 57
A softlock related to leg parts on nmo_asylum has been fixed.
leg part softlockThe fade distance value on a Gun Shop extinguisher prop in nmo_chinatown has been fixed as it was too close.
fade distance on gun shop extinguisher propGodspots on nmo_quarantine have been fixed.
godspotThe 'player_spawn' event being incorrectly fired when spawn points aren't available has been fixed.
event firingThe sparks sound on buttons not playing has been fixed.
sparks sound on buttonParticle rain collision has been fixed.
particle rain collisionA mis-prediction issue with the player's hull, causing rollbacks every frame when crouching or against a wall, has been fixed.
player hull mis-predictionGodspots on nmo_shelter have been fixed.
godspotA power box prop has been added in one of the houses on nmo_cleopas to hide a seeping tree through a wall.
power box propEntity 'logic_script_proxy' calls not working on global scope when using instances has been fixed.
script callA visual bug on a barricade prop at zone A on nms_midwest has been fixed.
visual bug on barricade propA fix has been implemented for extracted players occasionally appearing as 'deceased' on the scoreboard.
extracted players on scoreboardNetworking precision for local player positions has been improved, leading to fewer prediction errors and a better game feel.
networking precisionMap localization files within the BSP not being loaded has been fixed.
map localization fileCertain breakable props not gibbing correctly has been fixed.
breakable props gibbingThe entity 'player_weaponstrip' removing items improperly has been fixed.
item removalBeing able to go under the extraction zone by standing on the rear ramp of the boat on nmo_shoreline has been fixed.
going under extraction zoneThe fade distance value on some props in the house on nms_arpley has been fixed as it was too close.
fade distance on house propReflections on the plaster wall next to the initial spawn point in nmo_fema has been fixed.
reflections on plaster wallDynamic 'logic_progress' always completing on 'StopProgress' has been fixed.
dynamic completionAn issue where the player's base velocity, such as from conveyors or moving items, would get subtly out of sync between client and server has been fixed.
player base velocity syncCollision bounds on spawned brush entities have been fixed in MapHack.
collision bounds on brush entitySupply crate and keypad panels not properly resizing on resolution change has been fixed.
supply crate and keypad resizingZombie idle vocalization cutting short on longer moans has been fixed.
zombie idle vocalizationThe VScript function 'IsTalkingWalkie()' for CNMRiH_Player, which was always returning 'false', has been fixed.
function 'istalkingwalkie()'A softlock when objective items are thrown out of reach on nmo_cleopas has been fixed.
softlock when objective items are thrownMinor visual fixes have been made to nmo_broadway2.
visual fixAn issue where certain variables, such as position, would not update correctly to match the server in specific situations has been fixed.
variable update issueA weird glitch artifact on a ceiling brush in nmo_asylum has been fixed.
ceiling brush artifactThe music manager not playing the correct playlist for the tension state on nmo_cleopas has been fixed.
music manager playlistRunners spawned via BecomeRunner not randomizing their collision groups has been fixed.
runner collision groupSeveral issues when restoring saves on maps that utilize level transition have been fixed.
save restoration on level transitionDangling entity script instances in VScript, which caused crashes, have been fixed.
dangling entity script instanceThe VScript function 'SetActivity()' allowing ACT_INVALID, which caused a crash, has been fixed.
function 'setactivity()'A crash when passing null values to the VScript TraceLineEx() function has been fixed.
crash on null values to tracelineex()Clips have been added for smoother movement in the last ladder extraction area on nmo_broadway2.
clips for smooth movementBarricade spots at the end of the map on nmo_quarantine that were not working have been fixed.
barricade spotThe 'Mark' and eyedropper buttons have been restored on Hammer when editing 'Filter Name' keyfields.
hammer buttonPrediction for walking on props and other entities has been improved.
prediction for walking on propIronsights not being turned off when contemplating suicide has been fixed.
ironsights during suicide contemplationA glow has been added for the lever base on nmo_cleopas.
glow for lever baseWarning dialogs for NAT connection and Steam Deck compatibility have been removed as they are no longer relevant.
warning dialogThe fade distance value on an extinguisher prop on nms_northway has been fixed as it was too close.
fade distance on extinguisher propA softlock that occurred when the lever was dropped into the electric puddle on nmo_cleopas has been fixed.
softlock when lever is droppedThe ability to block zone entrances with military crates on nms_midwest has been fixed.
blocking zone entranceAn attempt has been made to fix body parts going through the ritual floor on nmo_asylum.
body parts through floorFalse spawn notifications, where the sound plays and window flashes while 'waiting for spawn point', have been fixed.
false spawn notificationA prediction bug where player input-based movement was not accounted for in non-player actions when the player was moved on the client has been fixed.
prediction bugSteam Workshop downloads on a dedicated server have been fixed.
steam workshop downloads on dedicated serverThe escape rope 'ladder' brush on nmo_broadway2 has been tweaked to be less confusing.
escape rope 'ladder' brushThe missing X mark on the brick cemetery wall in nmo_toxteth and nmo_toxtethdark has been fixed.
missing x mark on cemetery wallGodspots on nmo_boardwalk have been fixed.
godspotParented model attachments on NPCs being misaligned has been fixed.
parented model attachmentVScript hooks 'NPC_TranslateActivity' and 'NPC_TranslateSchedule' not checking invalid return types have been fixed.
hooks 'npc_translateactivity' and 'npc_translateschedule'Script scope leakage on entity deletion in VScript has been fixed.
script scope leakageEntity 'logic_script_proxy' not accepting null for the input 'SetTargetEntity' has been fixed.
input 'settargetentity'Zombie navigation has been tweaked on nmo_fema.
zombie navigation
General · 1
Miscellaneous optimizations and improvements have been made to NMRObjective.; Small tweaks have been made to nmo_shoreline to make navigating the map easier.
general

