5.24 更新

* Cheat commands will no longer forcibly reset a cheat state to off when an attempt to use one was made whilst not matching the alive condition or not passing the current cheats rule.
* Christmas event: Present/Gift entities will now copy the `movetype` and `solid` keys from their original item entity.
* Command myinfo/thatinfo will no longer show the "Is player ally?" line, as this is becoming less relevant with differing player classes.
* Command myinfo/thatinfo will now show effects such as glow shell, gravity modifier, etc beginning with "FX". (Monsters and players only.)
* Command myinfo/thatinfo will now show relative and absolute sizes.
* Entities will now use their "team" key within the entity variables structure to hold a string with a classification tag, e.g. "player", "human\_military", "team1", etc.
* Entity "func\_pushable" when lifted can now be thrown.
* Entity "func\_pushable" when lifted will no longer have a visible jitter motion.
* Entity "func\_pushable" will no longer raise by 1 unit on spawn to create a visible gap between it and the surface below.
* Entity "item\_inventory" has removed the (currently unused) player class filter, as player classes (similar to TFC) are not going to be a game feature. (Mappers will implement classes in their own way.)
* Entity "item\_inventory" now supports team filtering based on classification tag strings, e.g. "player", "team1", etc. (Multiple can be specified with semi-colon separators e.g. "team1;team2".)
* Entity "item\_inventory" will now make use of trigger targets for players on the same team. (Maps designed for release 5.23 and earlier will only do this if respective team trigger targets are defined, such as to not break existing "other" trigger targets.)
* Entity "squadmaker" will now give its child monsters their target name prior to spawning. (Fixes repelling NPCs spawning instantly due to receiving a target name too late.)
* Entity "trigger\_camera" will now register a camera exit if a player disconnects whilst using the camera.
* Entity "trigger\_respawn" now supports player rappelling specified by spawn points.
* Entity "trigger\_script" eliminated potential race condition whereby it may automatically fire when in "triggered" mode but the "start on" flag is off.
* Entity "trigger\_script" when spawned in trigger mode and don't have a target name the state must initialise as ON, otherwise it would be impossible for this "trigger\_script" to run ever.
* Fixed a rare crash due to a null pointer in the HUD numeric display.
* Fixed being unable to lift liftable pushables when they have no ground entity.
* Fixed inconsistent NPC relationships with players not using the "player" classification.
* Fixed item entities being mistakenly dropped to floor on spawn when their move type was set to "none".
* Fixed player revival health not accounting for the map's maximum health setting. (For example if the maximum health is 80 then a revival should provide 40 health to the player, not 50.)
* Fixed players losing their map defined solid mode when they got denied using a cheat command. (Such as the HLSP tram intro.)
* Fixed projectiles not always colliding with breakables. (Such as the turret on Afrika Korps part 3.)
* Fixed slanted viewing angle in observer mode or after being revived from observer mode.
* Items will have their bounding box size set by a mapper if they declare "minhullsize" and "maxhullsize".
* New entity "trigger\_effect" so maps can directly add/subtract to monster/player effects (glow shell, invulnerable, non-solid, speed modifier, etc.) without needing to brute-force special entity keys or give them any "item\_inventory".
* When a dedicated server starts it check that an administrative contact is set, and show a warning if it's not.

### 1.2 AngelScript

* Added a shared map script "hideandseek.as" for a Hide & Seek game mode any mapper can use:
	+ Based on the behaviour of community map "SC5X Bonus".
	+ Designed to do all the heavy lifting minimizing the amount of "control" entities a mapper needs to implement.
	+ Provides simple map CVARs to flex its behaviour such as hiding time/speed/model, seeking time/speed/model, points awarded, and hider-to-seeker ratio.
	+ See the accompanying "hideandseek.md" for usage instructions.
* Added missing `Tokenize()` function and `String::NO\_MORE\_TOKENS` constant to `string` documentation.
* Expose `CBaseEntity` functions:
	+ `GetClassificationName()`: Get a full name for its classification. (E.g. "Player", "Human Military", "Team 2".)
	+ `GetClassificationTag()`: Get a tag name for its classification. (E.g. "player", "human\_military", "team2".)
* Expose `CBasePlayer` functions:
	+ `GetCheat()`: Get a cheat mode of a player.
	+ `GetCheats()`: Get all cheat modes of a player.
	+ `ResetOverriddenPlayerModel()`: Reset a player's temporary model.
	+ `SendScoreInfo()`: Force an update of a player's score board information either to another specific player or all other players.
	+ `SetCheat()`: Set/unset a cheat mode on a player. (Game cheat rules will still be enforced.) Plug-ins should no longer need to brute-force cheats by manipulating special entity keys.
	+ `SetOverriddenPlayerModel()`: Change a player's model temporarily. (Does not change their preference.)
* Expose definitions for MOVETYPE\_NONE\_EXPLICIT and SOLID\_NOT\_EXPLICIT. (Both are `-1`.)
* Expose utility functions:
	+ `BuildEntityLogString()`: For generating a log string for an entity.
	+ `BuildPlayerLogString()`: For generating a log string for a player.
	+ `GetPlayerLog()`: For fetching a log string for a player. (Use of this is usually preferred over `BuildPlayerLogString()`.)

### 1.3 Engine

* Add delta compression security fixes from Valve.
* Changed "hpk\_maxsize" when 0 to automatically become a default value (4). (Use value -1 to disable spray caching.)
* Corrected Windows EXE version strings.
* Elaborated the error message about a DLL or BSP differing from the server's so players have a better understanding of what the issue is. (Currently only available for Windows players.)
* Fixed NPCs or pushables flying off in random directions after interacting with odd-angled slopes or water boundaries.
* Stop expanding mins/maxs by 1 unit when loading brush models.

### 1.4 Non-playable characters

* Fixed NPCs not always playing a scripted sequence if dying.
* Fixed crashing Osprey helicopters spawning living NPCs.
* Fixed medical NPCs being unable to complete their revive sequence.
* Fixed player made snarks and chumtoads not inheriting class from their owner.
* Fixed scientists displaying as an enemy on HUD.
* Fixed invalid tentacle eye position.
* Ignore collision with players when the NPC's "iuser2" key is above 0. (Server-side physics.)

### 1.5 Sound

* Fixed material load message being shown too soon. (When developer mode was level 2+.)
* Fixed servers loading the material lists twice. (Minor performance enhancement.)
* Increased materials limit to 4096 from 2048.
* Show count of materials or sentences loaded. (When developer mode is level 1+.)
* Show warning if material or sentence limit reached.

### 1.6 Weapons/Items

* Fixed M16 firing effects appearing in random locations. (Especially noticeable on map "snd".)
* Fixed odd weapon behavior when using tertiary attack with Gauss Gun, Gluon Gun, Hand Grenades, Shock Rifle, and Minigun.
* Fixed players from harming or blocking other players with their Snarks or Chumtoads.

## 2 Maps

### 2.1 Black Mesa: Special Tactics Sector

* Changed back to the non-Christmas version.
* Fixed a rare crash.
* Implemented multiple sky lights.
* Rebalanced tier 5, particularly the overpowered Gonarch.
* The Xen arena is not so bright.

## 4 SDK

### 4.1 Svencraft

* Compile at below normal priority to not jam up the system entirely during extensive VIS/RAD processes.
* Fixed compiler executable not running if the path to it included any spaces.
* Larger process window, and centred on screen. (960x600)
* Maximum objects raised to 65,536.
* More modern font.

### 4.2 FGD

* sven-coop.fgd:
	+ Added "(x2)" to the end of descriptions for "ammo\_ARgrenades" and "ammo\_rpgclip".
	+ Added entity "ammo\_556clip".
	+ Added entity "trigger\_effect".
	+ ammo\_9mmAR: changed shown model from "w\_9mmARclip.mdl" to "w\_mp5\_clip.mdl".
	+ item\_inventory: Updated classification list for NPCs.
	+ item\_inventory: Either uncommented or deleted various keys based on them being implemented or cancelled.
	+ Written approximate radius distances for "ambient\_generic" radius spawn flags.

### 4.3 Example maps

* Added example map "\_\_\_hideandseek" for using the Hide & Seek game script.
* Updated example map "\_\_\_item\_inventory" for a fully functional two team based capture the flag scenario.

### 4.4 Misc

* Moved default light definitions to "hl\_lights.rad" and "zhlt\_lights.rad". (Mappers are encouraged to use their own definitions, either set of standard definitions, or the "light\_surface" entity.)

## 5 Other

### 5.2 Misc

* Fix 1 pixel misalignment in the HUD when selecting the Spanner.
* Updated Linux Steamworks SDK re-distributable binaries to build ID 6052876 to remove dependencies for desktop environments. (Fixes dedicated servers with no desktop environment needing to symlink with an alternative "steamclient.so".)