Each of the following features has an associated ConVar that can be used to disable or alter the behaviour. For the full ConVar list, refer to the included qol_readme.txt.
Zombies:
Fixes zombies grabbing players during cutscenes.
Fixes zombies hurting player through some objects like doors.
Fixes zombies hurting players that they have their back to.
Fixes exploit where zombies won't attack when a prop is held within their hull.
Prevents zombies from grabbing players in some situations where the player can't shove back.
Reduced damage to barricades when hitting multiple at a time.
National Guard:
Option to toggle frag grenade spawning (legacy feature).
Kids:
Fixes boys T-posing when climbing.
Player:
Infected players won't reanimate if killed by 100 points of damage.
Players can shove during ironsight animations.
Player's shove hits more than one zombie.
Players earn a kill on the scoreboard when suiciding and infected.
Medicine:
Sounds are audible to other players.
Medical items can be equipped at any time to allow throwing.
Barricade:
Hammering sounds are emitted to other players.
Damage is visualized through model darkening.
New sounds when damaged or breaking.
Nailed boards can be recollected with hammer's charged attack.
Melee weapons:
Charged melee hits only drain stamina once.
Melee weapons ignore stamina drain on walls if at least one zombie was hit.
Heavy melee weapons (fubar, sledge and pickaxe) use 20% of stamina cost on additional hits.
Firearms/explosives:
Arrows can be retrieved from doors and rotate with attached objects faithfully.
TNT and frag grenades detonate slightly off-ground for improved effectiveness.
Alternate explosion sounds (legacy feature).
Players are awarded kills from gas can fires.
Fixes board ammo that gave nothing.
Other:
Fixes misplaced map items being unobtainable.
Fixes func_breakables damaging players when touched (glass roof on Brooklyn, vent on Fema, etc).
Client command to fix ice-skating movement.
Customizable grace period for spawning late-joining players.
Exposes forwards for other Sourcemod plugins (see below).
Commands
sm_skaterboy - Fix jittery ice-skating player movement.
Forwards
PHP Code:
// Called whenever a national guard spawns a loot drop.
public void OnNationalGuardLoot(int national_guard, int loot);
// Called whenever player consumes a medical item.
public void OnPlayerUsedBandages(int player, int item);
public void OnPlayerUsedPills(int player, int item);
public void OnPlayerUsedFirstAid(int player, int item);
public void OnPlayerUsedGeneTherapy(int player, int item);
// Called when a player recollects a barricade board.
public void OnBarricadeCollected(int player, int board);
Changelog
2.0.3 - 2019-11-21
Added qol_prevent_late_spawn_abuse as suggested by Holy Crap
When enabled, players are eligible for late spawn once per respawn event. This means players cannot abuse the late spawn system by reconnecting after dying.
Now calls CBaseEntity::SetCollisionGroup() directly.
Fixed prop unstick acting on items held by other players.
0.7.8
Added fix for infection not killing players when sv_friendly_fire_factor is 0 (qol_friendly_fire_infection_fix).
Fixed QOL spawning players in previous spawn area on some maps. (E.g. quarantine, shelter, toxteth.)
qol_respawn_ahead_threshold is the number of seconds players may spawn prior to a respawn event and still be advanced to the next spawn area. This can be increased if other maps still cause the issue.
Fixed QOL audible bleedout playing male pain sounds on female characters.
0.7.7
Fixed players spawning beneath the world.
0.7.6
Skip nearby zombie check for late-connecting players.
Some maps (like nmo_zephyr) have their spawn points close enough to zombie spawns that the spawns won't be used.
Fixed another invalid ent access regarding player pickups.
0.7.5
Made thrown explosives ignore qol_grenade_rise when a player is holding it.
This way players won't be surprised when a bomb they're holding in a safe position moves at the last second.
Fix invalid ent access with player pickups.
Fix issues with late-connect spawning:
Fix qol_round_start_spawn_grace sometimes not working during pre-round freeze time.
Fix qol_respawn_grace allowing living players to respawn when sv_realism should've prevented it.
Fix 'kill' command allowing players to respawn even after qol_respawn_grace expired.
Treat newly created spawn points as respawn events. (E.g. nmo_suzhou)
Allow late-connect spawning on maps that disable/remove spawn points. (E.g. nmo_suzhou)
0.7.4
Fix air-dropped inventory boxes blocking zombie attacks even when qol_zombie_attack_thru_supply was on.
0.7.3
Added qol_respawn_grace to control number of seconds after a respawn event that late-joining players can still spawn.
Living players can respawn once during this grace period.
Made FEMA bags respect qol_zombie_attack_thru_supply setting.
0.7.2 beta
Added qol_round_start_spawn_grace to control number of seconds after round start that late-joining players can still spawn.
Added option to allow players to push more than one zombie per shove:
ConVar qol_multishove_distance controls distance of trace used for find extra zombies to shove.
ConVar qol_multishove_max_pushed sets max number of zombies that can be shoved. 0 means unlimited.
Default qol_weapon_config changes:
Increased ironsight speed of ironsighted-Sako by 15%.
Crowbar cooldown changed from -0.2 to -0.1 seconds.
Kitchen knife and cleaver cooldown changed from -0.5 to -0.4 seconds.
Restored lead pipe cooldown to vanilla speed.
0.7.1 beta
Added control over maglite and secondary attack animation speeds.
Fixed speed control for medical items.
0.7.0 beta
Removed animation speed convars:
qol_fubar_charge_rate
qol_sv10_reload_rate
qol_sv10_reload_rate_empty
Added configurable weapon speed system:
ConVar qol_weapon_config names the active file under sourcemod/configs
The config sets animation rates on a per-weapon, per-action basis.
Default "qol" weapon config:
Shortens time till next attack for most melee weapons to better match their visible readiness.
SV10 reloads 16% faster.
Fubar and barricade hammer charge wind-up is 15% faster.
Knife and cleaver charge attack is 6% faster with 0.2 second shorter transition delay.
Revolver ironsight raise 30% faster.
Revolver shoots 20% faster in ironsights.
Feature can be disabled in its entirety by assigning qol_weapon_config an empty string.
Added qol_ironsight_shove which allows players to shove during ironsight raise/lower animations.
Improved stuck object detection:
Compares object's position between two frames to see if has moved.
Previous hull-tracing system had issues with displacements.
Changed qol_kid_prevent_tpose to hopefully cooperate with custom zombie dog plugin.
0.6.1 beta
Added qol_medical_auto_switch_style to control auto-switching to medical items:
0 = Switch if medicine is heavier than current weapon.
1 = Switch if medicine is heavier than current weapon and is usable.
2 = Switch if medicine is usable (even if a heavier weapon exists).
3 = Never auto-switch to medical items.
Added qol_maglite_stay_on to prevent maglite turning off when an unequipped weapon is dropped.
Changed object-unsticking feature so it never frees objects by "pushing" them.
Players reported that objective items could sometimes be pushed through the world.
0.6.0 beta
Medical use sounds are now audible to other players.
Added sounds to fire extinguisher spray.
Added barricade damage sounds.
Added visualization of barricade damage. (Boards darken according to health remaining.)
Added option to scale damage zombies deal to barricades that are not their primary target.
Added option to emit barricading sounds from other players.
Added ability to recollect placed boards with hammer's charged attack.
Added fix for exploit where two players could alter physics props to be solid and act like a weapon.
Added ConVar to prevent grabbing during cutscene (previously always on).
Changed qol_infection_bypass from boolean to damage threshold:
Damage greater or equal to this will prevent infected players from reanimating.
Previous hard-coded value of 100.0 is used as default.
Use 0.0 to always reanimate (vanilla behavior).
Fixed zombies continuing to bash barricades from any distance after shoved away.
Fixed barricade sound continuing to play after player dies.
Fixed bleedout sounds from other players being heard everywhere.
Fixed more T-pose activites on kids.
Fixed infection bypass happening too early. (Prevented pills from being useable.)
Fixed object unsticking preventing safe zone repair bags from working.
0.5.1 beta
Fixed late load hooking connecting players too early.
Fixed phantom medical items assuming previous weapon exists.
0.5.0 beta
Added option to prevent inventory box/safezone box/med-box exploit where zombies wouldn't attack players.
Added option to emit bleedout sounds from other players.
Added National Guard crawlers.
Added ConVars to control scale of stamina drained by multi-hits for:
Any charged melee attack
Quick attack with fubar, sledge and pickaxe
Quick attack with other melee weapons
Changed QOL's default SV10 reload boost from 40% to 16%.
0.4 beta
Added fix for zombies that fixate on object instead of attacking player.
Added ConVars to remaining features.
Fixed kid zombie rapid fire attacking barricades when player was occluded.
Fixed potential issue with pills being unusable.
0.3 beta
Added ConVars for most features.
Plugin uses config exported to nmrih/sourcemod/cfg.
Fixed kid zombies attacking barricades from far away.
0.2 beta
Fixed invalid ent indexing while repairing ammo with 0 amount.
Rationale
Bandages, pills, gene therapy and first aid can be made equippable at all times. This allows players to preemptively select a medical item for anticipated damage or throw them to distant teammates. The rules for using the items remain unchanged.
New sounds effects enhance the game's atmosphere. Player actions are immediately conveyed to teammates within earshot including medkit stitching sounds, pill bottle rattling and barricade nailing.
A substantial change the plugin makes is to how stamina is drained using melee weapons. In vanilla NMRiH, melee weapons drain stamina for each object they make contact with in a swing. This means that fighting in a narrow hall or aiming downwards at a crawler nearly guarantees you'll lose stamina twice. With a weapon like the fubar, this results in a loss of 60% of your stamina in one swing at a single zombie.
Quality of Life can change this behaviour so that hitting a wall doesn't drain your stamina if a zombie has also been hit. The fubar, sledge and pickaxe can be further changed to reduce less stamina on subsequent hits than normally. These weapons already have hefty stamina costs, typically 2x that of the smaller ones, so this change encourages multi-hits and makes the weapons more versatile.
The barricade hammer can be used to retrieve nailed boards. Players need not sacrifice a misplaced board nor find an alternative entrance. By default, boards can only be recollected if they're at full health. This threshold, like everything else in QOL, is customizable.
The /skaterboy command can fix the jittery, ice-skating movement caused by alt-tabbing.
Special thanks
My deepest thanks to the NMRiH devs, Bubka3 and Felis, for their continued work on the game and for their support of this plugin.
Huge thanks to everyone who helped test and provide feedback:
Holy Crap
MsDysphie
Saref
Demo
924285802
FerS
yomox9
Maxovich
__itsme
overmase
mrpeanut188
Kevin
Additional thanks to the SourceMod team and Dr!fter.
Thanks for the feedback, MsDysphie. I will make that my next task. There's a couple ConVars right now for changes I anticipated to be controversial but I agree that ultimately everything should be up to the host.
Added option to prevent exploit with supply drops and med-boxes where zombies wouldn't attack players.
Added option to emit bleedout pain sounds from other players.
Added National Guard crawlers.
Added ConVars to control scale of stamina drained by multi-hits for:
Any charged melee attack
Quick attack with fubar, sledge and pickaxe
Quick attack with other melee weapons
Changed QOL's default SV10 reload boost from 40% to 16%.
Some ConVars were renamed and several more added so if you're running a previous version you'll probably want to delete your old plugins.qol.cfg under "nmrih/cfg/sourcemod".