Valve has released an update for Counter-Strike 2, moving the engine code to the latest Source 2 and introducing changes to gameplay, UI, and map scripting. The patch focuses on lowering CPU usage during firefights, adjusts how defusing C4 interacts with player view and firing, and adds several improvements to the map scripting API that scripters will appreciate.
Patch Notes
ENGINE
- Updated engine code to the latest version of Source 2.
- Reworked bullet penetration simulation to reduce CPU usage.
- Improved core utilization of some client particle and sound effects processing, reducing overall CPU usage when players are shooting.
GAMEPLAY
- Defusing C4 will now lower the viewmodel weapon, prevent scoping, and delay firing the weapon by 150ms after exiting the defuse.
- C4 will no longer detonate in the middle of halftime intermission or after the end of the match.
- Fixed a case where 1 tick was incorrectly subtracted from sv_predictable_damage_tag_ticks.
Small but important note: the defuse change affects timing when you try to fire immediately after stopping a defuse. That half a second is small, but it changes clutch moments where a single shot matters.
UI
- Major Highlight clips are now viewable from the Spectator Loadout.
- Selected player is now more visible in the Team Counter.
- Context menu in the Inventory now opens in a position relative to the cursor.
- HUD weapon mode indicator has been moved to the ammo count.
- Raindrops are now removed from weapons when switching to a dry inspect environment.
MAP SCRIPTING
- cs_script enums can now be imported and behave the same as TypeScript enums.
- CSWeaponType.PISTOL == 1
- CSWeaponType[1] == “PISTOL”
- Added enums CSRoundEndReason, CSHitGroup, CSLoadoutSlot, CSDamageTypes, CSDamageFlags and CSWeaponAttackType.
- Added BOOSTS value to CSGearSlot. This is the gear slot for healthshots.
- Updated Instance.OnRoundEnd to now receive the reason.
- Updated Instance.OnBeforePlayerDamage to now receive damageType and damageFlags and the result can now modify damageType and damageFlags.
- Updated Instance.OnPlayerDamage to now receive damageType and damageFlags.
- Updated Instance.OnKnifeAttack to now receive attackType.
- Updated Instance.TraceLine, Instance.TraceSphere and Instance.TraceBox.
- The trace config now accepts an array of ignore entities or just one.
- The trace config can specify to trace against hitboxes.
- The trace result will include hitGroup if tracing against hitboxes.
- Updated Instance.BulletTrace result to include hitGroup.
- Updated Entity.TakeDamage to accept damageType and damageFlags.
- Added CSWeaponData.GetGearSlot()
If you write or run server scripts, the new enums and trace options will let you check hit groups and control damage types more directly. For players, the most visible changes are the engine performance improvements and the altered defuse interactions.
Tell us how the update feels in your matches on X, join the conversation on Bluesky, or leave a short clip on our YouTube channel.