Code updateSep 24, 2026, 09:55 PM UTC

CS2 Update (Sep 24, 2026)

Rush mode gets clearer rules and localized room names, the Major Hub & Shop UI is refined, and several team-damage and round-control server cvars become command-line enforced alongside new internal networking metrics.

Quick read

  • Rush mode rules and room names are clarified, with no spawn protection and fully localized arena names.
  • The Major Hub & Shop UI gains structured views, improved back/close behavior, and a clearer “Major Hub & Shop” title.
  • Several team damage and round-control convars become command-line enforced, tightening server configuration behavior.
  • New internal network statistics track netframe sizes and message counts, and weapons gain a reload-held state for future tuning.
  • The report player popup title now allows HTML formatting, and numerous small engine/tool strings are updated.

A small CS2 update tightens up the new Rush mode experience, refines the Major Hub & Shop interface, and makes a handful of behind-the-scenes networking and server rule changes that server operators and tech-minded players may notice over time.

Major Hub & Store UI Improvements

  • Main menu store entry: The Major section on the fullscreen store now routes through a dedicated OpenMajorHub() function instead of opening the old Major store popup directly. In practice, this means clicking the Major tile from the main menu will bring up a unified tournament "hub" popup that can pass the active event ID as a parameter.
  • New hub title text: The label above the Major area in the fullscreen store now uses a new localized string, "major_hub_store_title_hud_store", which displays as {s:tournament_name} Major Hub & Shop. This reinforces that the panel covers both event info and store content, not just a shop.
  • Refined navigation inside the Major store popup:
    • The Major store popup (popup_major_store.js) now formalizes its internal pages as named views (VIEW_HOME, VIEW_CONTENT, VIEW_CHARMS, VIEW_TEAM, VIEW_SINGLE) and manages them through a STORE_VIEWS table.
    • Navigation actions like Home, Favorites, Charms, and filter-driven "see all" flows now call _ShowMainPanel with a view ID instead of hard-coded panel IDs.
    • The Home view refresh logic has been centralized into _RefreshHome, which rebuilds carousels and updates nav tabs when the home screen is visible.
    • The Favorites list now uses the generic content view (VIEW_CONTENT) and can be reloaded in place without jumping between ad-hoc functions.
  • Back & close button behavior:
    • The back button now calls a dedicated _GoBack helper. If the active view defines a backTarget (for example, the single-sticker view pointing back to the team view), it navigates there; if not, it falls back to the Home action.
    • A new _UpdateFooterButtons function ensures that on the Home view the close button is visible and the back button is hidden, and vice versa on deeper views. This makes the footer behavior more consistent with what players expect from a multi-step store UI.
    • Pressing the generic "back" (escape/overlay back) while inside the Major popup now prefers to step back within the store hierarchy before closing the popup, instead of always kicking you straight back to the main menu.
  • Team and single views are refreshable:
    • The store keeps track of which team and which sticker set is currently displayed in the team and single views. New _RefreshTeamView and _RefreshSingleView helpers rebuild the visible tiles when the active view is refreshed, rather than re-deriving state from scratch.
    • When inspecting an item fullscreen and then closing the inspect view, the store now calls _UpdateVisiblePanel(cp, true), which re-runs the active view’s refresh logic while keeping scroll state stable. This should help avoid odd staleness when bouncing between inspect and store browsing.
  • Unified filter behavior:
    • The filter panel sets a filter-button attribute on filter buttons and now attaches a single fnRefilter callback to all of them, including the series-specific toggles (SERIES_FILTERS). Any filter button activation triggers _UpdateItemsList once, making the filter system easier to maintain and less error-prone.
    • The "Keychains only" slider leverages _EnableDisableFilterPanelBtns to enable or disable the rest of the filter toggles instead of redoing that logic inline, which should reduce edge cases where some buttons might remain incorrectly enabled.
  • Charms page wiring: The charms/keychains page now uses the VIEW_CHARMS identifier consistently, and both onShow and onRefresh of that view call _SetUpKeyChainsPage. Players switching back and forth between tabs should see the charms content stay in sync more reliably.
  • Single-view tiles now use a shared snippet: The single-sticker view replaces direct ItemImage creation with a generic Panel using the store-tile snippet. This may help keep interactions and styling consistent with other store tiles (e.g., hover states, price display).

Overall, these changes strongly suggest that Valve is hardening the tournament store and hub experience so that it behaves more like a full-fledged app: clearer home vs. content views, predictable back behavior, and fewer one-off code paths.

Report Player Popup: Safer Title Formatting

  • HTML-enabled title: The "Report Player" popup title label now has html="true" set while still displaying "Reporting {s:target_player}".
  • Practical impact:
    • This allows the UI system to use HTML formatting in the title if needed (for example, colored or stylized player names coming from elsewhere in the UI system).
    • Because the switch is purely about how the label interprets text, it may also be part of a broader effort to centralize how player names are escaped and styled in popups. Players are unlikely to notice a visual change immediately, but it gives Valve more flexibility in how names are displayed here in future tweaks.

Rush Mode: Clearer Rules and Room Names

Rush mode receives multiple clarity improvements, focused on how its rules and locations are presented to players.

Gameplay configuration tweaks

  • No spawn protection in Rush: The gamemode_rush.cfg config file now explicitly sets:
    • mp_spawnprotectiontime 0
  • Practical impact: In Rush, players no longer receive any spawn protection from this global cvar. Since Rush is designed as a fast-moving sequence of small arenas, this setting reinforces a high-risk, immediate-engagement style: as soon as you spawn into a round, you can both deal and receive full damage.

In-game rule text updated

  • New loading screen description: The Rush loading text ("SFUI_Rules_Rush_Loading") has been rewritten to describe the mode more precisely:
    • "Advance through a gauntlet of battle arenas."
    • "To win the match, capture the enemy's castle or win 8 rounds."
    • "To win a round, control the tower when time expires."
    • A short list of core settings:
      • Armor is purchasable
      • Team collision is ON
      • Friendly fire is ON
  • What this tells players: This text clarifies win conditions and core mechanics directly in the loading screen, so new players know what they are fighting over (tower control), how to claim overall victory (reach enemy castle or 8 round wins), and what to expect in terms of friendly fire and player collision.

Localized room names for Rush

  • Scripted room identifiers: The Rush map script (maps/scripts/rush_001.js) previously used hard-coded English names for its rooms (e.g., "Spire", "Wallbang", "Trainyard"). These have been replaced with key-style identifiers:
    • 101: "room_101", 102: "room_102", … up through 212: "room_212", and 301: "room_301", 401: "room_401".
    • The convoy room keeps the name "Convoy" in the script, which then maps to a localization entry.
  • New localization entries: The English localization file (csgo_english.txt) now defines human-readable text for those keys:
    • "room_101" → "Spire"
    • "room_102" → "Wallbang"
    • "room_103" → "Big Box"
    • "room_104" → "Madhouse"
    • "room_201" → "Sewer"
    • "room_202" → "Dogleg"
    • "room_203" → "Trainyard"
    • "room_204" → "Crane"
    • "room_205" → "Bloc"
    • "room_206" → "Hydro"
    • "room_207" → "Atomic"
    • "room_208" → "Medusa"
    • "room_209" → "Bear"
    • "room_210" → "Steel"
    • "room_211" → "Container"
    • "room_212" → "Drop"
    • "room_301" → "CT Castle"
    • "room_401" → "T Castle"
    • "convoy" → "Convoy"
  • Why this matters:
    • Moving names into localization keys allows Rush’s room names to be translated properly into all supported languages instead of being locked to English.
    • It also standardizes room naming so that UI elements (like on-screen callouts or map overlays) can reference consistent IDs.

Minor Rush scripting cleanup

  • Removed sv_full_alltalk override: The Rush map script previously executed Instance.ServerCommand("sv_full_alltalk 0") on round start. This line has been removed.
  • Impact: This suggests Rush will now rely on game/server-level voice settings rather than forcing sv_full_alltalk 0 each round. Server operators hosting Rush may have a bit more control over voice chat behavior depending on their global config.

Server Rules & Convars: Stricter Control for Abuse/TK Settings

Several server configuration variables related to team damage and spawn behavior have been reclassified as command line enforced. This does not change their default values, but it does change how easily they can be altered while a server is running.

  • mp_ignore_round_win_conditions

    • Now marked as commandline_enforced in the convar listing.
    • This variable controls whether the game ignores normal round win conditions.
    • Impact for server operators: It likely must now be set via launch options or a similar startup path rather than being freely toggled at runtime. This may be intended to reduce abuse or keep official playlists consistent.
  • mp_spawnprotectiontime

    • Also listed as commandline_enforced now (while retaining its default value of 5).
    • Controls the window during which early team damage can cause kicks.
    • Impact: Servers that previously changed this mid-match may need to set it on boot instead.
  • Team damage thresholds: Three convars related to team damage kick/warn thresholds have been switched to commandline_enforced and are no longer marked replicated in the dump:

    • mp_td_dmgtokick 300 – damage threshold for being kicked.
    • mp_td_dmgtowarn 200 – damage threshold for receiving a warning.
    • mp_td_spawndmgthreshold 50 – early-round damage threshold leading to warnings/kicks.
  • Practical implications:

    • These variables still exist and retain the same default thresholds, but they appear to be locked down so that they must be decided at server startup.
    • This may be part of tightening consistency across official matchmaking and community servers, making it harder to dynamically disable anti-griefing protections.

Networking & Stats: Deeper Netframe Metrics

There are new internal stats fields and engine strings related to network frame sizes and message counts. These are not player-facing but may influence how Valve monitors and tunes networking.

  • New Steam stats fields: source2_steam_stats.proto adds several optional fields to the CMsgSource2NetworkFlowQuality message:
    • netframes_size_uncompressed_p50
    • netframes_size_uncompressed_p95
    • netframes_size_uncompressed_p99
    • netframes_size_uncompressed_max
    • netframes_msgs_p50
    • netframes_msgs_p95
    • netframes_msgs_p99
    • netframes_msgs_max
  • Engine strings updated: Corresponding strings in engine2_strings.txt refer to things like:
    • "Uncompressed size . . : P50:%u"
    • "Msgs per frame. . . . : P50:%u"
  • What this likely means:
    • Valve is now tracking additional percentile statistics for how big uncompressed netframes are and how many messages they contain.
    • These metrics may be used internally to identify outlier conditions, tune compression, or debug netcode performance issues in live matches.
    • Players won’t see these fields directly, but future netcode or performance improvements may be informed by these stats.

Weapon Internals: Reload State Tracking

Low-level weapon schema updates add a new boolean field to the base weapon class on both client and server.

  • New weapon field: m_bReloadHeldSinceStart appears in both CCSWeaponBase (server) and C_CSWeaponBase (client) schema exports.
  • Likely purpose: While no gameplay change is explicitly surfaced, this field name suggests the engine now tracks whether the reload key has been held continuously since the start of a reload.
    • This may support future tweaks around reload cancel, partial reloads, or animation blending, allowing the system to distinguish between quick taps and held reload inputs.
    • The added strings referencing CNetworkVarBase@_NVNetworkVar_m_bReloadHeldSinceStart on both client and server confirm that this is now a networked state.
  • Player impact: No direct behavior change is confirmed in this update. However, this plumbing could underpin later changes to how certain weapons respond to reload inputs or how reload animations sync in demos and spectator views.

Minor Engine & Tooling Noise

A collection of string files for various binaries (server, client, engine, networking, rendering, and tools) were updated.

  • Examples include:
    • server_strings.txt, client_strings.txt
    • networksystem_strings.txt, steamnetworkingsockets_strings.txt
    • Rendering-related string bundles for DX11/Vulkan
    • Resource/tool strings such as resourcecompiler_strings.txt
  • Nature of changes:
    • Most of these are small additions/removals of internal symbol names or debug text, as well as alignment or pointer-like token changes.
    • There are also updated strings related to stats names, ammo purchase, or match downloads, but nothing that clearly maps to a new player-facing feature in this patch.
  • Impact: These updates are best understood as housekeeping that keeps debug output, logging, and developer tools in sync with the engine and network changes described above.

Overall Impact

This update focuses on polish and infrastructure rather than headline features:

  • Rush mode becomes easier to understand with clear rules, translatable room names, and explicitly no spawn protection.
  • The Major Hub & Shop behaves more like a modern multi-view UI, with better back behavior, more consistent view handling, and a unified "Hub & Shop" identity.
  • Server operators see several abuse- and team-damage-related cvars become command-line enforced, nudging configurations toward more stable, predictable behavior.
  • Behind the scenes, new network statistics and weapon reload state tracking give Valve more levers to tune performance and gameplay in future updates.

Most players will feel these changes as smoother interfaces and clearer instructions rather than dramatic shifts in gameplay, but they lay groundwork for further refinements to both Rush and tournament content going forward.

Back to updates

Recent updates

Code updateSep 25, 2026, 09:59 PM UTC

CS2 Update (Sep 25, 2026)

New CS2 patch adds a Major token reminder popup, refines pet book and popup behavior, overhauls chicken audio, and introduces infrastructure for better smoke lighting and weapon sound suppression.

  • New Major shop balance popup reminds players to spend remaining event tokens and links directly to the Major hub.
  • Main menu popup handling has been refactored, improving cleanup of notification callbacks and avoiding stuck popups.
  • Pet book and vanity pet systems received UX updates, including date-based labels for retired pet books.
  • Official LATAM map annotations for de_train were updated, likely refining in-game guide markers.
  • Smoke grenade lighting received new engine support and a server command, with a scripted map now requesting smoke lighting recomputation after room-light changes.
  • Chicken audio was expanded with new hen, pullet, panic, flap, and scratch sounds, plus tuned volumes and pitches in both game and UI.
  • Weapon handling and reload sounds across several guns now use standardized suppression settings to better control overlapping foley noise.
  • New month-only economy date formats and protocol/metadata tweaks prepare the UI and tools for cleaner time-period displays and updated command categorization.
View details
Official updateSep 25, 2026, 09:54 PM UTC

Counter-Strike 2 Update (Sep 25, 2026)

Various gap and clipping fixes, reload audio fixes, `sv_clantags_enabled` server option, and main menu egg placement changes.

  • Various gap fixes and clipping adjustments.
  • Fixed some cases where loud reloads would persist while trying to stealth reload.
  • Added `sv_clantags_enabled` option so custom servers can disable clan tags.
  • The eggs of background players in main menu lobbies now rest in nests.
View details