← update history

Scripting

261 lines · 12% of the archive

Lines under MAP SCRIPTING or WORKSHOP. Community map tooling and the entity scripting that runs inside a map, rather than the map geometry itself.

Across 24 updates, 2023-11-02 to 2026-08-24. Published updates only.

Every line, newest first

2026-08-24

  • reworkAdded custom_hud_layout entity: custom_hud_layouts are the entry point for scripted maps to provide custom UI.
  • reworkAdded custom_hud_layout entity: Panel, Label, Image, and Button panel types are supported.
  • reworkAdded custom_hud_layout entity: Styling with css is supported.
  • reworkAdded custom_hud_layout entity: Events and client side scripting are not supported.
  • reworkAdded custom_hud_layout entity: Maintains state during tools mode reloads.
  • reworkAdded cs_player_camera entity: Gives control of a player's view without moving their pawn.
  • reworkAdded cs_player_camera entity: Can be configured to let the player look around from the scripted position.
  • reworkAdded Instance.Delay
  • reworkAdded Instance.OnBombPlantStart
  • reworkAdded Instance.OnBombPlantAbort
  • reworkAdded Instance.OnBombDefuseStart
  • reworkAdded Instance.OnBombDefuseAbort
  • reworkAdded Instance.OnCustomHudClicked
  • reworkAdded Instance.IsDedicatedServer
  • reworkAdded Entity.Move
  • reworkAdded Entity.GetMoveType
  • reworkAdded Entity.SetMoveType
  • reworkAdded CSPlayerPawn.GetC4
  • reworkAdded CSPlayerPawn.GetDefuseTarget
  • reworkAdded CSPlayerPawn.IsBuyMenuOpen
  • reworkAdded CSPlayerPawn.GetCamera
  • reworkAdded C4.GetPlantStartTime
  • reworkAdded C4.GetPlantFinishTime
  • reworkAdded C4.AbortPlant
  • reworkAdded CustomHudLayout.SetHasClass
  • reworkAdded CustomHudLayout.SetHasClassForPlayer
  • reworkAdded CustomHudLayout.SetDialogVariableString
  • reworkAdded CustomHudLayout.SetDialogVariableStringForPlayer
  • reworkAdded CustomHudLayout.SetInputCaptureEnabled
  • reworkAdded CustomHudLayout.IsInputCaptureEnabled
  • reworkAdded CSPlayerCamera.IsEnabled
  • reworkAdded CSPlayerCamera.SetEnabled
  • reworkAdded CSPlayerCamera.SetIsControllingAngles
  • reworkAdded enum CSMoveType
  • fixCorrected types for some events where parameters were maybe undefined.
  • reworkErrors encountered during initial script run are now logged to the console.
  • reworkUnhandled promise rejections are now logged to the console.
  • reworkAdded the column number to errors caught during the CompileModule step of script loading.
  • reworkDeprecated planter from Instance.OnBombPlant event
  • reworkDeprecated defuser from Instance.OnBombDefuse event

2026-08-03

  • reworkAdded Instance.TracePlayer
  • reworkAdded Instance.OnWeaponPickup
  • reworkAdded Instance.OnBombExplode
  • reworkAdded Instance.SpawnGrenadeProjectile
  • reworkAdded dropper to Instance.OnWeaponDrop event
  • reworkAdded hitEntity to Instance.OnGrenadeBounce event
  • reworkAdded normal to Instance.OnGrenadeBounce event
  • reworkAdded CSGrenadeProjectileBase.GetGrenadeType
  • reworkAdded CSGrenadeProjectileBase.GetThrower
  • reworkAdded CSGrenadeProjectileBase.Detonate
  • reworkAdded CSPlantedC4.IsBombsiteA
  • reworkAdded CSPlantedC4.IsBombsiteB
  • reworkAdded CSPlantedC4.GetPlanter
  • reworkAdded CSPlantedC4.GetDefuser
  • reworkAdded CSPlantedC4.IsActive
  • reworkAdded CSPlantedC4.IsExploded
  • reworkAdded CSPlantedC4.IsDefused
  • reworkAdded CSPlantedC4.GetPlantTime
  • reworkAdded CSPlantedC4.GetExplodeTime
  • reworkAdded CSPlantedC4.GetDefuseStartTime
  • reworkAdded CSPlantedC4.GetDefuseFinishTime
  • reworkAdded CSPlayerPawn.HasDefuser
  • reworkAdded CSPlayerPawn.SetHasDefuser
  • reworkAdded CSGrenadeType enum
  • fixFixed a bug where Instance.RegisterCheatCommand would not work on script reload.
  • reworkDeprecated bounces from Instance.OnGrenadeBounce event.

2026-07-28

  • fixFixed a bug where scripts would fail to load in tools mode until a manual recompile.

2026-07-08

  • reworkUpdated "Custom Paint Job Extended" Added option to include a dedicated overlay mask texture
  • reworkUpdated "Custom Paint Job Extended" Added option to set unique overlay UV randomization separate from albedo UV randomization
  • reworkAdded Instance.QueueAfterThinks
  • reworkAdded Instance.OnWeaponDrop
  • reworkAdded CSWeaponBase.GetOriginalOwner
  • fixFixed a crash when the name passed to Instance.RegisterCheatCommand collided with an existing command.
  • reworkAdded file name and line number to errors caught during the CompileModule step of script loading.
  • reworkRemoved support for deprecated vts assets.

2026-05-18

  • reworkAdded Instance.RegisterCheatCommand
  • reworkAdded Instance.GetAllPlayerControllers
  • reworkAdded Instance.OnBeginRoundRestart
  • reworkAdded Instance.SetRoundRemainingTime
  • reworkAdded CSPlayerController.AddMoneySpendableNow
  • reworkAdded CSPlayerController.GetMoneySpendableNow
  • reworkAdded CSPlayerController.AddMoneyEarnedForNextRound
  • reworkAdded CSPlayerController.GetMoneyEarnedForNextRound
  • reworkAdded CSPlayerPawn.HasHelmet
  • reworkAdded CSPlayerPawn.SetHasHelmet
  • reworkAdded CSPlayerPawn.IsScoped
  • reworkAdded CSWeaponBase.IsSilencerOn
  • reworkChanged the activator for OnPlayerUse to always be the player
  • reworkChanged the caller for OnPlayerUse to always be the used entity
  • fixFixed the value of CSInputs.LOOK_AT_WEAPON
  • fixFixed a potential crash in exception handling

2026-05-07

  • fixFixed progressive refinement rendering Source Film Maker.

2026-03-04

  • reworkAdded hitEntity to OnBulletImpact event data
  • reworkAdded Entity.GetAbsAngularVelocity()
  • reworkAdded Entity.GetLocalAngularVelocity()
  • reworkAdded angularVelocity to Entity.Teleport()
  • reworkAdded CSWeaponBase.GetClipAmmo()
  • reworkAdded CSWeaponBase.SetClipAmmo()
  • reworkAdded CSWeaponBase.GetReserveAmmo()
  • reworkAdded CSWeaponBase.SetReserveAmmo()
  • reworkAdded CSWeaponData.GetMaxClipAmmo()
  • reworkAdded CSWeaponData.GetMaxReserveAmmo()
  • fixFixed missing CSPlayerPawn.IsDucking()
  • fixFixed missing CSPlayerPawn.IsDucked()
  • fixFixed a bug where JUMP wouldn't trigger for WasInputJustPressed() and WasInputJustReleased() if the press didn't cross a tick boundary.
  • fixFixed a bug where Entity methods GetEyePosition(), GetEyeAngles(), GetHealth(), GetMaxHealth(), and SetMaxHealth() would only work on CSPlayerPawns.

2026-02-25

  • reworkAdded Instance.SetSaveData
  • reworkAdded Instance.GetSaveData Workshop maps can write up to 1MB of save data.
  • reworkAdded Instance.GetSaveData Workshop saves leverage Steam Cloud and persist across installs.
  • reworkAdded Instance.GetSaveData Save data size limit can be configured with sv_workshop_map_save_data_max_filesize_mb.
  • reworkAdded Instance.OnModifyPlayerDamage Called after all damage properties have been calculated, just before armor and health are modified
  • reworkAdded Instance.OnModifyPlayerDamage Replaces Instance.OnBeforePlayerDamage
  • reworkAdded Instance.OnModifyPlayerDamage Includes hitgroup in event data
  • reworkAdded hitgroup to OnPlayerDamage event data
  • reworkAdded CSDamageFlags.IGNORE_ARMOR
  • reworkAdded CSPlayerPawn.IsInputPressed
  • reworkAdded CSPlayerPawn.WasInputJustPressed
  • reworkAdded CSPlayerPawn.WasInputJustReleased
  • reworkAdded enum CSInputs
  • fixFixed bug where CSDamageTypes was exported under the name CSDamageType

2026-01-21

  • reworkFixed a bug where activator was sometimes incorrect for func_door outputs OnOpen, OnFullyOpen, OnClose, and OnFullyClosed Added BaseModelEntity.GetModelName
  • reworkFixed a bug where activator was sometimes incorrect for func_door outputs OnOpen, OnFullyOpen, OnClose, and OnFullyClosed Added BaseModelEntity.GetModelScale
  • reworkFixed a bug where activator was sometimes incorrect for func_door outputs OnOpen, OnFullyOpen, OnClose, and OnFullyClosed Added BaseModelEntity.GetColor
  • reworkFixed a bug where activator was sometimes incorrect for func_door outputs OnOpen, OnFullyOpen, OnClose, and OnFullyClosed Added BaseModelEntity.IsGlowing

2025-10-14

  • reworkcs_script enums can now be imported and behave the same as TypeScript enums. CSWeaponType.PISTOL == 1
  • reworkcs_script enums can now be imported and behave the same as TypeScript enums. CSWeaponType\[1] == "PISTOL"
  • reworkAdded enums CSRoundEndReason, CSHitGroup, CSLoadoutSlot, CSDamageTypes, CSDamageFlags and CSWeaponAttackType
  • reworkAdded BOOSTS value to CSGearSlot. This is the gear slot for healthshots.
  • reworkUpdated Instance.OnRoundEnd to now receive the reason
  • reworkUpdated Instance.OnBeforePlayerDamage to now receive damageType and damageFlags and the result can now modify damageType and damageFlags
  • reworkUpdated Instance.OnPlayerDamage to now receive damageType and damageFlags
  • reworkUpdated Instance.OnKnifeAttack to now receive attackType
  • reworkUpdated Instance.TraceLine, Instance.TraceSphere and Instance.TraceBox The trace config now accepts an array of ignore entities or just one
  • reworkUpdated Instance.TraceLine, Instance.TraceSphere and Instance.TraceBox The trace config can specify to trace against hitboxes
  • reworkUpdated Instance.TraceLine, Instance.TraceSphere and Instance.TraceBox The trace result will include hitGroup if tracing against hitboxes
  • reworkUpdated Instance.BulletTrace result to include hitGroup
  • reworkUpdated Entity.TakeDamage to accept damageType and damageFlags
  • reworkAdded CSWeaponData.GetGearSlot()

2025-10-13

  • reworkcs_script enums can now be imported and behave the same as TypeScript enums. CSWeaponType.PISTOL == 1
  • reworkcs_script enums can now be imported and behave the same as TypeScript enums. CSWeaponType\[1] == "PISTOL"
  • reworkAdded enums CSRoundEndReason, CSHitGroup, CSLoadoutSlot, CSDamageTypes, CSDamageFlags and CSWeaponAttackType
  • reworkAdded BOOSTS value to CSGearSlot. This is the gear slot for healthshots.
  • reworkUpdated Instance.OnRoundEnd to now receive the reason
  • reworkUpdated Instance.OnBeforePlayerDamage to now receive damageType and damageFlags and the result can now modify damageType and damageFlags
  • reworkUpdated Instance.OnPlayerDamage to now receive damageType and damageFlags
  • reworkUpdated Instance.OnKnifeAttack to now receive attackType
  • reworkUpdated Instance.TraceLine, Instance.TraceSphere and Instance.TraceBox The trace config now accepts an array of ignore entities or just one
  • reworkUpdated Instance.TraceLine, Instance.TraceSphere and Instance.TraceBox The trace config can specify to trace against hitboxes
  • reworkUpdated Instance.TraceLine, Instance.TraceSphere and Instance.TraceBox The trace result will include hitGroup if tracing against hitboxes
  • reworkUpdated Instance.BulletTrace result to include hitGroup
  • reworkUpdated Entity.TakeDamage to accept damageType and damageFlags
  • reworkAdded CSWeaponData.GetGearSlot()

2025-10-03

  • fixFixed Instance.OnPlayerPing not sending position.

2025-10-02

  • fixFixed a bug where old callbacks could be invoked after a script reload.
  • fixFixed a bug where new callbacks could be invoked multiple times after a script reload.
  • fixFixed missing Instance.IsFreezePeriod.
  • fixFixed Instance.OnGunReload and Instance.OnGunFire not working for XM1014, Nova, and Sawed-Off.Nova · Sawed-Off · XM1014

2025-10-01

  • reworkUpdated general error handling for methods. An exception will be thrown when the method is invoked with an incorrect 'this' value. An error will be logged and a default value that matches the declared return type will be returned when the method is invoked with unsupported arguments.
  • reworkImproved performance of handling Vector, QAngle, and Color values as arguments and return values.
  • reworkWhen interpreting a Color argument, rgba values will be clamped to a maximum of 255.
  • reworkAdded an overload for each of the following methods that accepts a single object holding all parameters. Deprecated the previous overload. Instance.DebugScreenText
  • reworkAdded an overload for each of the following methods that accepts a single object holding all parameters. Deprecated the previous overload. Instance.DebugLine
  • reworkAdded an overload for each of the following methods that accepts a single object holding all parameters. Deprecated the previous overload. Instance.DebugBox
  • reworkAdded an overload for each of the following methods that accepts a single object holding all parameters. Deprecated the previous overload. Instance.DebugSphere
  • reworkAdded an overload for each of the following methods that accepts a single object holding all parameters. Deprecated the previous overload. Instance.EntFireAtName
  • reworkAdded an overload for each of the following methods that accepts a single object holding all parameters. Deprecated the previous overload. Instance.EntFireAtTarget
  • reworkAdded an overload for each of the following methods that accepts a single object holding all parameters. Deprecated the previous overload. Entity.Teleport
  • reworkChanged all callbacks to accept a single object holding all parameters.
  • reworkAdded Instance.OnScriptReload
  • reworkDeprecated Instance.OnReload and Instance.OnBeforeReload
  • reworkAdded Instance.TraceLine
  • reworkAdded Instance.TraceSphere
  • reworkAdded Instance.TraceBox
  • reworkAdded Instance.TraceBullet
  • reworkDeprecated Instance.GetTraceHit
  • reworkAdded Instance.OnPlayerReset
  • reworkAdded Instance.OnBeforePlayerDamage
  • reworkAdded Instance.OnPlayerDamage
  • reworkAdded Instance.OnPlayerJump
  • reworkAdded Instance.OnPlayerLand
  • reworkAdded Instance.OnGunReload
  • reworkAdded Instance.OnBulletImpact
  • reworkAdded Instance.OnPlayerPing
  • reworkAdded Instance.OnGrenadeBounce
  • reworkAdded Instance.OnKnifeAttack
  • reworkAdded Instance.IsFreezePeriod
  • reworkAdded Entity.GetOwner
  • reworkAdded Entity.SetOwner
  • reworkAdded Entity.GetParent
  • reworkAdded Entity.SetParent
  • reworkAdded Entity.IsAlive
  • reworkAdded Entity.IsWorld
  • reworkAdded Entity.TakeDamage
  • reworkAdded CSPlayerPawn.DropWeapon
  • reworkAdded CSWeaponData.GetDamage
  • reworkAdded CSWeaponData.GetRange
  • reworkAdded CSWeaponData.GetRangeModifier
  • reworkAdded CSWeaponData.GetPenetration

2025-09-24

  • reworkUpdated tsconfig.json in the script_zoo, setting the target to "es2022" for more accurate type analysis.
  • reworkChanged point_script entity to no longer remove itself on a failed script load during spawn. Instead it will remain in an inactive state and listen for script changes if the game is running in tools mode.
  • fixFixed point_script entity to no longer potentially crash after an unsuccessful reload from an invalid script while running the game in tools mode.
  • reworkChanged point_script entity to hold onto the memory value returned by an Instance.OnBeforeReload callback until the next successful reload instead of forgetting it if the reload is unsuccessful.
  • reworkChanged methods expecting arguments of string type to now error instead of calling toString for arguments of the wrong type.
  • reworkChanged Instance.Msg and Instance.DebugScreenText to accept any type for the text value.
  • fixFixed a bug where RunScriptInput would crash the game when triggered with a null caller or activator.
  • reworkRemoved Instance.OnGameEvent in favor of per-event registration methods. This gives us tools for stronger API stability and creates a consistent API for events that are not gameevents.
  • reworkAdded Instance.DebugLine
  • reworkAdded Instance.DebugBox
  • reworkAdded Instance.OnPlayerConnect
  • reworkAdded Instance.OnPlayerActivate
  • reworkAdded Instance.OnPlayerDisconnect
  • reworkAdded Instance.OnRoundStart
  • reworkAdded Instance.OnRoundEnd
  • reworkAdded Instance.OnBombPlant
  • reworkAdded Instance.OnBombDefuse
  • reworkAdded Instance.OnPlayerKill
  • reworkAdded Instance.OnPlayerChat
  • reworkAdded Instance.OnGunFire
  • reworkAdded Instance.OnGrenadeThrow
  • reworkAdded an overload to Instance.EntFireAtName that allows setting caller and activator
  • reworkAdded an overload to Instance.EntFireAtTarget that allows setting caller and activator
  • reworkAdded normal vector to the result of Instance.GetTraceHit
  • reworkAdded Entity.GetGroundEntity
  • reworkAdded CSWeaponBase.GetOwner
  • reworkAdded CSPlayerController.GetName
  • reworkAdded CSObserverPawn.GetOriginalPlayerController
  • reworkAdded CSPlayerPawn.GetOriginalPlayerController
  • reworkAdded CSPlayerPawn.IsCrouching
  • reworkAdded CSPlayerPawn.IsCrouched
  • reworkAdded CSPlayerPawn.IsNoclipping
  • reworkSee maps/editor/zoo/scripts/point_script.d.ts for comprehensive details on the API
  • reworkAdded "train_zoo.vmap" with all de_train assets and examples for mapmakers.Train

2025-09-17

  • reworkAdded javascript to the list of asset types.
  • fixFixed type declaration for the newAngles parameter of Entity.Teleport.
  • fixFixed a bug where GetTraceHit would crash when the config parameter was not specified.

2025-09-16

  • reworkAdded cs_script, a JavaScript based scripting system for Counter-Strike maps.
  • reworkAdded script_zoo.vmap to demonstrate cs_script usage and functionality.

2025-02-13

  • reworkIncreased supported upload size for Counter-Strike 2 Steam Workshop Maps to 3 GB.

2024-10-02

  • reworkAdded optional 3rd layer to environment blend shader
  • reworkAdded biplanar mapping as an option for environment shaders
  • reworkAdded optional wetness layer, paintable in Hammer on environment materials with the feature enabled
  • reworkAdded color correction, roughness, and normal adjustments to foliage shader and static overlays

2024-05-01

  • reworkAdded arms race game mode for workshop map submissions

2024-02-28

  • fixFix lightmaps being capped at 4k resolution in CS2 Workshop Tools
  • reworkUpdated sticker inspect to support wear in 0.1 increments to match sticker scraping
  • contentAdded roughness texture to foil stickers in the Item Editor
  • reworkUpdated help system for new sticker features

2023-12-18

  • fixFixed inconsistent behavior with triggers when crouching in workshop maps

2023-11-16

  • fixFixed custom sound events files in workshop maps
  • reworkAdded some material settings for water refraction/caustics
  • reworkWorkshop maps can now be tagged as supporting Wingman mode
  • reworkLinux clients can now run workshop maps without requiring -insecure
  • reworkAdded trigger_hostage_reset trigger and logic_eventlistener entities
  • reworkAdded convars sv_walkable_normal and sv_standable_normal to allow community servers to tweak player movement on angled surfaces
  • fixFixed health getting clipped when it exceeds 3 digits

2023-11-02

  • reworkEnabled uploading CS2 maps to the workshop
  • reworkCommunity Servers can host workshop maps
  • reworkAdded paint metalness and roughness by color features to Solid Color, Hydrographic, and Spray-Paint finishes in the Item Editor
  • contentAdded option to toggle "Automatic PBR Color Correction" to all sticker types in Item Editor
  • reworkVarious Item Editor help system updates including "mat_fullbright 10" to test PBR
  • reworkVarious updates to workshop tools

the other cutsRead the archive another way