Counter-Strike 2 / News

CS2’s latest Workshop update gives map makers hostage events and loading checks

Valve’s 22 October update adds hostage-state hooks, resource precaching and new Console and GameRules exports. Existing moved methods remain available, but are deprecated.

Fictional tactical scene · AI illustration
Fictional tactical scene · AI illustration
AI ink-and-wash model of a Counter-Strike-inspired office rescue corridor, with civilian and CT miniatures beside drafting tools
Original AI illustration by ClutchScope; a conceptual map-making scene, not a gameplay screenshot or evidence of a new official map.
In this article
  1. Hostage behaviour becomes easier to track
  2. Precaching has separate server and client checks
  3. Console and round logic have new homes
  4. Two boolean fixes and broader radar support

Counter-Strike 2 map creators now have more direct ways to react to hostage rescues and check whether resources have finished loading. Valve’s 22 October update adds a CSHostage object, hostage-event callbacks and an Instance.Precache interface, alongside changes to the scripting API’s organisation.

The official announcement was published late on 22 October UTC — already 23 October in Stockholm. The changes concern Workshop scripting and tools; the notes do not announce a new competitive hostage map.

Hostage behaviour becomes easier to track

The new CSHostage methods expose whether a hostage is being picked up, carried or has been rescued. Scripts can also get the rescuer and the start and finish times of a pickup. CSPlayerPawn.GetHostage provides a corresponding way to access the player’s hostage.

Valve has added callbacks for pickup start, pickup abort, pickup, drop, rescue and kill. For a custom scenario, these are different moments: beginning to pick up a hostage is not the same as successfully carrying one, and dropping one is not a completed rescue.

The practical value is more precise event handling. A creator can build logic around the action that actually happened instead of treating every interaction as a successful extraction.

Precaching has separate server and client checks

Instance.Precache returns a CSPrecache object. Its new methods include separate loading and loaded checks for the server and client, an IsLoadedForAll check and Release.

That distinction matters in a networked custom map: a server having a resource ready is not the same state as everyone having it ready. The new checks give map logic a way to distinguish those conditions. Valve’s announcement lists the interfaces, rather than publishing a universal loading-time improvement.

Console and round logic have new homes

The update introduces top-level Console and GameRules exports. Console receives configuration-variable getters and SetConvar; Valve says Console.SetConvar executes synchronously and is not restricted by sv_cheats.

Instance.Msg is renamed to Console.Log. Client commands, server commands and cheat-command registration also move to Console. GameRules gains warmup controls, team-score access and round termination, while several existing round-state and team-money methods move there from Instance.

Moved and renamed methods remain available in their original locations, but are deprecated. Existing map scripts therefore do not need to be described as automatically broken by the reorganisation. New work can use the new locations, with older scripts checked against the updated API before changing their calls.

Two boolean fixes and broader radar support

Valve also fixed CSRadarPoint.IsVisibleToTeam and CSObservablePoint.IsObservableForTeam returning numbers instead of booleans. Creators comparing those results should account for the corrected return type.

The radar_element can now appear in every game mode, rather than only Rush. Logged warnings gain JavaScript call stacks and details about invalid argument values, and argument numbering now starts at zero. Those changes give creators more useful information when tracing a failing script.