• Valve's October 23 Counter-Strike 2 update expands the map scripting API without changing weapons or matchmaking. Map creators get hostage events, asset-loading controls, and new ways to manage console settings and round rules.

Hostage events and asset loading

Scripts can now track a hostage from pickup through carrying, dropping, and rescue. New CSHostage methods let scripts check whether a hostage is being picked up, carried, or rescued, identify the rescuer, and track when pickup starts and finishes. CSPlayerPawn.GetHostage lets a script check which hostage a player has.

Valve also added Instance events for when pickup starts, is aborted, or finishes, as well as for hostage drops, rescues, and kills. Custom hostage maps can respond to those events directly instead of repeatedly checking each hostage's state.

For assets, Instance.Precache returns a CSPrecache object. Its methods report server and client loading status, including whether loading has finished for everyone. Scripts can then release the object with CSPrecache.Release.

Console controls, round rules, and fixes

The new top-level Console export groups methods for reading convars as booleans, numbers, strings, vectors, QAngles, or colors. Console.SetConvar runs synchronously and is not restricted by sv_cheats. Valve renamed Instance.Msg to Console.Log and moved client commands, server commands, and cheat-command registration to Console.

A separate GameRules export adds controls for warmup, querying and changing team scores, and ending rounds. Existing methods for checking match phases, reading or changing round time, and adding team money have moved there too. They still work in their old locations, but Valve has deprecated them.

Custom Counter-Strike 2 modes get a few smaller changes: radar_element can now appear in every game mode, not just Rush, while custom HUD layouts gain HUD_TEAMMENU_VISIBLE and HUD_CHAT_VISIBLE. Valve also fixed a crash when GameRules.AddTeamMoney used CSTeamMoneyReason.NONE, corrected two enum mismatches with point_script.d.ts, and changed two visibility checks to return booleans instead of numbers. Logged warnings now include the JavaScript call stack and details of invalid argument values.


Full changelog (Valve patch notes)

[ MAP SCRIPTING ]

  • Added Instance.Precache

  • Returns a CSPrecache object

  • Added CSPrecache.IsServerLoading

  • Added CSPrecache.IsServerLoaded

  • Added CSPrecache.IsClientLoading

  • Added CSPrecache.IsClientLoaded

  • Added CSPrecache.IsLoadedForAll

  • Added CSPrecache.Release

  • Added CSHostage

  • Added CSHostage.IsBeingPickedUp

  • Added CSHostage.IsBeingCarried

  • Added CSHostage.IsRescued

  • Added CSHostage.GetRescuer

  • Added CSHostage.GetPickUpStartTime

  • Added CSHostage.GetPickUpFinishTime

  • Added CSPlayerPawn.GetHostage

  • Added Instance.OnHostagePickUpStart

  • Added Instance.OnHostagePickUpAbort

  • Added Instance.OnHostagePickUp

  • Added Instance.OnHostageDrop

  • Added Instance.OnHostageRescue

  • Added Instance.OnHostageKill

  • Added new top level export Console

  • Added Console.GetConvarBoolean

  • Added Console.GetConvarNumber

  • Added Console.GetConvarString

  • Added Console.GetConvarVector

  • Added Console.GetConvarQAngle

  • Added Console.GetConvarColor

  • Added Console.SetConvar

  • Console.SetConvar is not restricted by sv_cheats and executes synchronously

  • Renamed Instance.Msg to Console.Log

  • Moved Instance.ClientCommand, ServerCommand and RegisterCheatCommand to Console

  • Added new top level export GameRules

  • Added GameRules.StartWarmup

  • Added GameRules.EndWarmup

  • Added GameRules.GetTeamScore

  • Added GameRules.AddTeamScore

  • Added GameRules.TerminateRound

  • Moved Instance.IsWarmupPeriod, IsFreezePeriod, IsTeamIntroPeriod, GetRoundsPlayed, GetRoundRemainingTime, SetRoundRemainingTime and AddTeamMoney to GameRules

  • Moved and renamed methods are still available in their original location, deprecated

  • Added top-level custom_hud_layout classes HUD_TEAMMENU_VISIBLE and HUD_CHAT_VISIBLE

  • radar_element can now appear on the radar in every game mode, not just Rush

  • Added support for GameRules.AddTeamMoney with CSTeamMoneyReason.NONE and an amount

  • Fixed a crash in GameRules.AddTeamMoney with CSTeamMoneyReason.NONE

  • Fixed CSTeamMoneyReason enum values not matching point_script.d.ts

  • Fixed CSWeaponAttackType enum values not matching point_script.d.ts

  • Fixed CSRadarPoint.IsVisibleToTeam returning a number instead of a boolean

  • Fixed CSObservablePoint.IsObservableForTeam returning a number instead of a boolean

  • Logged warnings now include the JS call stack

  • Logged warnings now include details about bad argument values

  • Logged warnings now count arguments from 0 instead of 1

  • Improved auto complete of the map_workshop command