Change log/5.15
Santa Garg is here!
Despite being locked in my childhood bedroom at my parents' house while screaming children pound on the door, we've managed to assemble a holiday update! This update features custom HUD elements, numerous bug fixes, and a new map by JPolito and GeckonCZ.
1 New Map - They Hunger: Escape
They Hunger: Escape, created by JPolito and GeckonCZ, has been released with the game. The map features survival gameplay in which players must find three randomly placed items and bring them to a broken down truck. The truck must then be repaired and used to escape from the town before the timer runs out and the military arrives to 'purge' the town.
At the start of each round, each player is assigned to a random 'civilian' role. Rounds last seven to eight minutes (depending on difficulty mode). Once the timer runs out, the military parachutes into the town and will destroy the vehicle if all of the items have not yet been brought to it. It is still possible to repair the vehicle and escape after the timer runs out, but it is exceedingly difficult. 4-8 players are recommended.
2 Notable changes
- Added support for custom HUD elements (generic sprite, numeric display and time display). Exposed the new functionality through the AS API.
- New map: "They Hunger: Escape".
- Scripted weapons can now drop ammo.
3 Code
3.1 Game library
- Added "+inventory"/"-inventory" command pair that will toggle the inventory screen.
- All impulse commands (including flashlight) and the +use command are no longer blocked by certain weapon actions (anything that uses the m_flNextAttack variable would cause this issue).
- Changed MAX_AMMO_TYPES from 32 to 64 for scripted weapons (i.e. the CoF weapon pack). Merged MAX_AMMO_SLOTS and MAX_AMMO_TYPES definitions (both served the same purpose).
- Fixed corpses blocking monstermakers/squadmakers.
- Fixed issue where chat messages sent right before a map change wouldn't get printed to the console.
- Fixed issue with muzzle sprites not appearing long enough for players that have low framerates
- Fixed issue with skill CVARs not being set correctly when changed via trigger_setcvar.
- Fixed the "Voting menu doesn't add players as they join" issue.
- Fixed the confusing "You must wait X seconds before you can call for aid." message that appeared when "getextras" command was used too soon.
- Flashlight now uses CHAN_AUTO instead of CHAN_WEAPON to play the "click" sound. This should prevent it from interrupting weapon sounds.
- Removed support for resolutions lower than 480p.
- Removed the "impulse 99" command and the corresponding E3 1998 logo functionality.
- Skill CVARs can now be changed on the fly (directly from console).
- The message that appears when players enter observer mode will now mention reviving only if the player didn't get gibbed.
- Unlinked MAX_WEAPON_POSITIONS and MAX_WEAPONS definitions again to allow for up to 20 weapons per bucket. This way all 9+1 weapon buckets are available and compatibility with existing scripts is maintained.
- [func_tank] Players can now leave tanks by pressing USE key again.
- [func_tank] Players can use impulse commands (including flashlight) while operating tanks.
- [path_track] Added new keyvalue "maxspeed". Sets new maximum train speed. If the train is traveling too fast, its speed will be set to the new allowed maximum.
- [path_track] Added new keyvalue "newspeed". Same as the legacy "speed" keyvalue but works correctly with controllable trains.
- [trigger_camera] Added key input callback.
3.2 Heads-Up Display
- "mp_survival_voteallow" CVAR can be used from map config now.
- Added "HIDEHUD_CUSTOM_MAPS" and "HIDEHUD_CUSTOM_PLUGINS" flags. Can be used to hide all custom elements from a given group.
- Added HL2-like auto-hide feature for the weapon selection menu. This should prevent the situation with players running around with the weapon menu active and unintentionally switching to a different weapon during combat.
- Added support for custom HUD elements (generic sprite, numeric display and time display).
- Fixed alignment of many HUD elements.
- Fixed alignment of multiline HUD messages if negative screen coordinates are used.
- Fixed an issue where the ammo bar in the HUD weapon selection would not be visible if the weapon had only secondary ammo left.
- Fixed an issue where weapons that don't use any ammo would be drawn red in the HUD weapon history.
- Fixed position of the "say:" input line, so it's no longer displayed in the very top left corner of the screen.
- Fixed weapon slots not being cleared properly. Fixes issue where weapon selection would break occasionally.
- Health, suit and ammo indicators can now display 4 digit values.
- Health/suit power value is now clamped correctly, so the value displayed on HUD doesn't roll over if it's too high.
- In-game chat can now display up to 12 lines (6 by default; can be customized via hud_saytext_lines CVAR).
- Increased the weapon slot count from 7 to 10 (for scripted weapons). Slots #6 - #8 are only visible if there are weapons assigned to them. Slot #9 is always hidden and is reserved for special weapons (minigun, shockrifle).
- Inventory items can use custom HUD sprites. Set by a new "item_icon" keyvalue. Expected sprite size is 72x72px. If the player holds items of more than one type, the default item inventory icon will be used.
- Made the cl_showstats debug info slightly more compact.
- New CVAR: "hud_alpha_default"; can be used to customize default transparency of HUD elements. (range: 0..255; default: 160)
- New CVAR: "hud_alpha_max"; can be used to customize transparency of active HUD elements. (range: 0..255; default: 255)
- New CVAR: "hud_bordersize"; can be used to customize HUD "padding". (range: 0..100; default: 16)
- New CVAR: "hud_debug"; can be used for a precise placement of custom HUD elements. (values: 0-2)
- New CVAR: "hud_draw"; enables/disables drawing of the HUD. (values: 0/1; default: 1; the value is not saved)
- New CVAR: "hud_hidecustom"; can be used to hide custom HUD elements. Just in case some server operators do something naughty with the feature. (values: 0 - show all, 1 - hide elements created by map scripts, 2 - hide elements created by server plugins; >=3 - hide all)
- New CVAR: "hud_saytext"; enables/disables drawing of the in-game chat. (values: 0/1; default: 1; the value is not saved)
- New CVAR: "hud_selection_fadeout"; sets the time it takes to fade out before it automatically closes. Default value: 0.5 seconds. If set to 0 the fade out effect will be disabled.
- New CVAR: "hud_selection_timeout"; sets the time it takes before the selection menu starts fading out. Default value: 1.5 seconds. If set to 0 the auto-hide feature will be disabled.
- New CVAR: "mp_suitpower"; Can be used to disable HEV suit power (armor) and hide it from the HUD. Values: 1 - enabled (default), 0 - disabled.
- Numeric displays will show + sign behind the number if the value is "out of range".
- Player names in chat are now displayed with a slightly different color.
- The ammo bar in the HUD weapon selection turns red instead of disappearing if the weapon has no ammo except for what is left in the weapon itself.
- The ammo display will now flash even for weapons that are not using magazines.
- The chat "block" is now positioned at the center of the bottom half of the screen. If there isn't enough space, the chat is moved up to clear the health/suit power displays.
- The weapon selection will automatically close if the player picks up a special weapon.
- Tweaked the HUD layout for a more consistent look.
- Weapon history slots are now initialized properly, so the very first ammo/weapon pickup will be always rendered at the bottom of the weapon history list.
3.3 AngelScript
- Exposed the new custom HUD functionality.
- Exposed the new 'concussion' effect.
- RegisterWeapon() can be used to specify classname of the dropped ammo and ItemInfo to specify the amount.
- Any weapon can now use the iClip2 ammo display (enabled by setting iClip2 >= 0).
- Any weapon can now use the uzi-styled iClip2 ammo display (enabled by specifying ITEM_FLAG_DUALWIELD weapon flags, activated/deactivated on the fly by toggling m_fIsAkimbo).
- Exposed Adam's "Entity compounded effects/modifiers" through AS API.
- Added new methods BlockWeapons(),UnblockWeapons() and GetWeaponsBlocked() to CBasePlayer class. Exposed through AS API.
- Moved m_fBlockWeapons from CBasePlayerWeapon to CBasePlayer. Removed the variable from AS API as well, scripters can use the new CBasePlayer methods instead.
- Added CBasePlayer::HolsterWeapon() method. Exposed through AS API.
- Exposed CBasePlayer::DeployWeapon() through AS API.
- Changed signature of CBaseMonster::FBecomeProne() to CBaseMonster::FBecomeProne( CBaseEntity * pOther ).
- Added a new HIDEHUD flag - HIDEHUD_SUITPOWER - hides the suit power/armor display. Useful for maps with no batteries/HEV chargers.
- Renamed MAX_AMMO_SLOTS AS definition to MAX_AMMO_TYPES and changed the doc. string to be more descriptive.
- CBasePlayerWeapon::AddPrimaryAmmo() and AddSecondaryAmmo() returns amount of actually added ammo instead of returning boolean value whether any ammo was added or not.
- Fixed name of the CBasePlayerWeapon::AddSecondaryAmmo() method (it was mistakenly exposed as AddPrimaryAmmo() in the previous versions)
- Added new item flag ITEM_FLAG_IGNOREWEAPONSTAY - used by the minigun (instead of a hard coded exception) and can be used by scripted weapons as well.
- Added new item flag ITEM_FLAG_ESSENTIAL - used by the essential weapons - medkit, crowbar, barnacle grapple etc. (instead of a hard coded exception) and can be used by scripted weapons as well.
- CPathTrack: Exposed the new m_iMaxSpeed and m_iNewSpeed members.
- Added FormatInt(), FormatUInt() and FormatFloat() formatting functions. Syntax and behavior equivalent to the native AS counterparts, just modified to work with our custom string implementation.
- Added few color definitions (RGBA class), including the standard Sven Co-op HUD color.
- PITCH enum: Fixed documentation strings.
3.4 Engine
- If a player is using a view entity (e.g. trigger_camera), the PVS of the view entity is now used instead. This allows NPCs outside of the player's PVS to become active when being viewed by a camera entity.
3.5 Non-playable characters
- [Barnacle] Barnacles will now ignore large XRACE monsters.
- [Barnacle] Fixed the issue where barnacles were unable to kill monsters that take reduced damage if the damage type is "slash" (i.e. pitdrones).
- [Chumtoad] Fixed an issue where player owned chumtoads could be used by other players.
- [Gonome] "sk_gonome_dmg_one_slash", "sk_gonome_dmg_guts", and "sk_gonome_dmg_one_bite" skill CVARs should work correctly now.
- [Human Grunt] NPC can now be equipped with a sniper rifle.
- [Ichthyosaur] Fixed issue where NPC would not die properly unless it had an enemy.
- [Kingpin] Players now receive correct amount of points for damaging/killing the monster.
- [Male Assassin] Sniper assassin now has unique reload sound.
- [Miniturret] Players now receive correct amount of points for damaging/killing the monster.
- [Otis] Otis now spawns with his gun holstered.
- [RPG Grunt] A one second wait has been added to the end of the Grunt's rocket firing schedule.
- [RPG Grunt] Fixed issue with wrong animation playing during aiming. Grunts now use the rpg_aim animation.
- [RPG Grunt] Rocket projectiles are now directed toward the center of enemies, rather than the position returned by the BodyTarget() method.
- [RoboGrunt] Fixed server crash caused by Access Violation in CRobotGrunt::GetScheduleOfType().
- [Sentry Turret] Fixed the issue where touching a dead sentry would delay the explosion.
- [Stukabat] The monster now uses "sk_stukabat_dmg_bite" skill CVAR instead of "sk_agrunt_dmg_punch".
- [Tor] The monster now uses "sk_tor_punch" skill CVAR instead of "sk_agrunt_dmg_punch". ("sk_tor_punch" was present but unused in earlier versions)
3.6 Weapons/Items
- Added custom weapon/ammo drop rules. This determines what should be dropped when the player dies. New CVARs: mp_weapon_droprules and mp_ammo_droprules; Values: 0: NONE, 1: ACTIVE (default); 2: ALL.
- All weapon and ammo world models will animate now if the model supports it (i.e. the spore launcher).
- Changed how mapper placed items are determined. Fixes an issue where weapons with movetype set to MOVETYPE_FLY would start spinning when respawned. Also fixes the spinning weaponbox on hl_c16_a1.
- Crowbar, wrench, medkit, barnacle grapple and glock will now appear in the HUD weapon history when picked up.
- Dropped weapons/ammo now fade away instead of disappearing suddenly.
- Fixed an exploit where players could get twice as much ammo by +using and touching ammo item at the same time.
- Fixed an issue were players could pick up satchels dropped by somebody else and deploy them to get over the limit of 5 deployed satchels.
- Players can drop secondary ammo now ("dropsecammo").
- Players can no longer "steal" dropped weapons if they already have the same weapon. They will instead take the ammo from it and only as much as they can carry. No weapons or ammo is wasted this way.
- Players can no longer pick up dropped ammo/weapons if they already have max. amount of the particular ammo type.
- Players can no longer steal thrown crowbar if they already have one.
- Scripted weapons can drop ammo now.
- The "ammunition depleted" HEV sound is now played for uzi, M16, gauss gun, gluon gun and minigun as well.
- The Classic mode shotgun is now forced to use the double-barrel fire mode as its secondary attack (the weaponmode_shotgun CVAR is ignored).
- Weapons directly given to a player (i.e. via map config or "impulse 101") now ignore the "weapon pickup" delay.
- Weapons dropped by NPCs are an actual weapon entities now (instead of a reskinned weaponbox entity).
- Weapons dropped by dead players are an actual weapon entities as well, unless the weapon/ammo drop rules are set to ALL, in which case the classic DM weaponbox is dropped.
- Weapons dropped by players can no longer be stolen by other players if they already have the same weapon.
- [Displacer] The weapon now uses "sk_plr_displacer_radius" skill CVAR instead of hardcoded value. ("sk_plr_displacer_radius" was present but unused in earlier versions)
- [Gluon Gun] The gluon gun beam is no longer slightly off compared to the crosshair position.
- [Gluon Gun] The gluon gun will reset back to the idle animation correctly when the player runs out of ammo and keeps holding the attack button (this will hide the blue light reflection effect that is part of the weapon model).
- [Gluon Gun] Tweaked the gluon gun beam effect a bit. The gluon cloud sprite is now rendered even if the target entity can't take damage.
- [Gluon gun] Removed "sk_plr_egon_narrow" skill CVAR (unused since HL beta).
- [Hand Grenade] Banana bomb now works even if the player has more than 10 grenades.
- [M16] Fixed an issue where the M16 couldn't be selected if the player had the last AR grenade loaded into the gun and no other ammo.
- [Tripmine] The tripmine now uses a proper worldmodel.
- [Uzi] The uzi uses two different HUD sprites again (single uzi and akimbo). It changes when a second uzi is picked up/dropped (the actual weapon mode doesn't matter here).
- [item_inventory] "effect_block_weapons" set to 1 should work reliably now (No view model glitching, no weapon switching).
- [item_inventory] Fixed an issue where the item_inventory entity would fly in a random direction when dropped.
- [item_inventory] Fixed double-not on the ignore trigger check, which meant that "if not not ignoring triggers, fire the triggers".
- [item_inventory] Inventory rules: Item group rules are only ignored if the minimum number required is also 0. That means that no items currently existing in the group can still block the trigger if you set the minimum items from group count to at least 1.
- [item_inventory] Return triggers should are no longer fired when an item is destroyed. Only the destroy trigger should be.
4 Maps
4.1 Half-Life
- Removed weaponmode_shotgun option from HLSP. Shotgun now uses default rapid fire secondary attack unless playing in Classic Mode.
4.2 Polar Rescue
- Fixed hostages not being guidable by +use.
- Fixed hostages wandering off so easily.
4.3 Stadium 4
- Added baby voltigores to the spawn control panel.
- Control panel on/off sounds no longer play everywhere.
4.4 They Hunger
- Added Norman's TNT peewees.
- Added Norman's ammo models.
- Added Norman's crossbow view model with TH hands.
- Added new 'spanner' weapon. Models by Norman, HUD sprites from TFC.
- Added the new models to the global model replacement lists.
- Removed all the unused/duplicate/outdated models.
- Suit power HUD element is no longer visible in all TH maps.
- [Zombie Cops] Cops will no longer say most of the annoying sentences that an enemy Barney shouldn't be saying in the first place.
5 Models
5.1 Weapons/Items
- [Crowbar] Added Norman's candy stick crowbar for the holiday season.
- [Tripmine] Added Norman's tripmine peewees.
- [Tripmine] Added Norman's LD tripmine peewees (for Classic Mode).
5.2 NPCs
- [Baby Voltigore] Changed eye position from (0,0,95) to (0,0,30) to match the actual model.
- [Big Rat] Replaced the bigrat model with the HLSDK version, which includes two cut animations for use by mappers.
- [Classic Barney] Fixed UV map errors, improved UV map precision.
- [Classic Human Grunt] Fixed UV map errors, improved UV map precision.
- [HWGrunt] Updated the friendly HWGrunt model to use the newer animations.
- [Ichthyosaur] Reverted to an older version of the model to fix numerous issues with navigation and AI.
- [Shock Trooper] Fixed issue where the shocktrooper death sound would play via QC event, creating error messages in the console.
5.3 Other
- Added 'They Hunger: Escape' radio host and civilian player models.
6 Sprites
6.1 HUD
- Added 5.56 and 7.62 ammo sprites to all relevant weapon HUD text files.
- MP5 muzzle flash sprite no longer has random black pixels.
- Removed a bunch of unused weapon HUD text files.
- Removed all 320x HUD sprites (no longer used by the game).
- Updated all weapon HUD text files (removed 320x sprites; tweaked ammo sprite offsets).
- Updated the displacer weapon HUD text file to use "depleted uranium" ammo sprite.
- [640hud7] Added 5.56 and 7.62 ammo sprites.
- [640hud7] Added colon, plus, minus, stopwatch, and dot/period HUD glyphs.
- [640hud7] Added medkit ammo sprite (copied from 320hud2.spr)
- [640hud7] Removed the separator line (unused).
- [640hud7] Reorganized and cleaned up some of the sprites.
- [hud.txt] Added new glyphs.
- [hud.txt] Fixed alignment of many HUD symbols.
- [hud.txt] Removed definitions for all 320x sprites.
- [hud.txt] Removed all unused definitions.
7 Scripts
7.1 Half-Life
- [hl_crowbar] The view model is now set to empty string when the weapon is holstered, instead of "0", which would cause a fatal error.
- [hl_crowbar] Think function is now cleared when the weapon is holstered.
7.2 Survival
- [Checkpoints] Fixed the "checkpoint jitter" issue.
- [Checkpoints] HLSP checkpoint now has a slight fade-out effect when activated.
7.3 They Hunger
- All They Hunger weapons can drop ammo now (except the Tesla gun).
- Updated the scripts to work with the TH ammo/weapon model update.
- Moved They Hunger weapons to their own script file (th_weapons) to make it easier to implement them in other maps.
- Every weapon/monster has its own namespace now.
- [monster_th_grunt_repel] Enabled delayed spawn.
- [monster_th_grunt_repel] Spawnflags, health, netname and weapons are now carried over from the master entity (to match monster_human_grunt).
- [weapon_m14] The weapon now uses m_pPlayer.m_flEffectSpeed to slow player down instead of modifying pev.maxspeed directly. This fixes an issue where players carrying item_inventory could use the sniper rifle to override movement speed penalization.
- [Thompson and Greasegun] Each weapon has its own ammo entity now. Both weapons can be used on the same map and they will drop the correct magazine.
- [Thompson] Weapon has higher DPS and better accuracy. The weapon now uses different recoil algorithm with a feel similar to CS 1.6 (by KernCore).
7.4 Other
- [RandNumMath] Added RandNumMath.as, a shared script with some useful RNG-based math functions (uses its own namespace "RandNumMath").
8 SDK
8.1 FGD
- [item_inventory] Added "item_icon" keyvalue. Can be used to specify a path to a custom HUD sprite. (provide the full file name and path relative to the "sprites" directory; the expected sprite size is 72x72px)
- [trigger_camera] Added key input callback.
- [monster_human_grunt] Added "Sniper Rifle" and "Sniper Rifle + HG" weapon choices.
- [path_track] Added new keyvalue "newspeed". Same as the legacy "speed" keyvalue but works correctly with controllable trains.
- [path_track] Added new keyvalue "maxspeed". Sets new maximum train speed. If the train is traveling too fast, its speed will be set to the new allowed maximum.
8.2 StudioMDL
- Fixed issue with texturing shifting due to rounding errors in texture coordinate calculations.
9 Other
9.1 Game manual
- Added Judgement, They Hunger: Episode 3, and They Hunger: Escape to the maps page.
- Updated screenshot for They Hunger: Episode 2.
- Updated all They Hunger map names to match the current naming format. Updated the number of maps in each series to the correct number.
9.2 Misc
- Added "Drop Secondary Ammo" and "Unstuck" commands to the command menu.
- Added "th_escape" to the map cycle and map vote configuration.
- Changed the game menu font from Verdana 18 to Michroma 24.
- Made the main menu "taskbar" fully transparent.
- Removed Colors.lst, kb_keys.lst and strings.lst files (used only by the old WON launcher).
- Removed all the WON menu bitmap files and AVI menu logo.
- Removed the 4.8-era Sven Co-op menu logo.
- [default_map_settings] Added the new "mp_suitpower" CVAR.
- [default_map_settings] Added the new mp_weapon_droprules and mp_ammo_droprules CVARs.
- [kb_act.lst] Added the new "Drop secondary ammo" command to the list.
- [valve.rc] Added maxplayers "2" line, so the game starts in multiplayer mode by default when map command is used to create a new game.
- [valve.rc] Removed few obsolete sound engine settings.