Commits
Every change to the ZenithRP codebase, live. We ship constantly — this is the proof.
July 11, 2026
3 commitsAdds a new galaxy module with a full-screen galaxy map: browsable planets, hyperspace routes between them, and a per-planet detail view. The swirling galaxy backdrop is drawn with a dedicated custom shader.
The command to open the thirdperson settings menu had stray spaces in its name, so typing simple_thirdperson_menu in console did nothing. The name is fixed so the menu opens again.
Per-server files the fleet manager generates at runtime were showing up as untracked. They hold live server credentials and change every run, so they should never be committed. This keeps them out of git.
July 9, 2026
5 commitsStaff with the right SAM permission can run !buff xp 60 2 to start a one-hour double-XP event (or !buff credits ...), and !unbuff to end one early. Console equivalents exist for rcon: zenith_buff_start/_stop.
While a boost event is running, a banner at the top of the screen shows what is boosted and how long the event has left, so you always know a buff is active without having caught the chat announcement.
Staff can now run limited-time boost events for everyone on the server: double (or any multiplier up to 10x) XP gains and salary payouts, for a set duration. Events announce themselves in chat when they start and end, and end on their own when the timer runs out. AFK players still receive no salary during a credit boost.
The F4 menu's Rules tab was loading the website rules page, which is still a coming-soon placeholder — so players saw junk instead of rules. The tab now shows the full official rule set directly from the server: conduct, RDM, NLR, FailRP, chat rules, exploits, chain of command, and how punishments and appeals work.
Adds the full numbered rule set for the server — general conduct, RDM, NLR, FailRP, chat rules, exploits, chain of command, and how punishments and appeals work. This is the master copy that the in-game rules page and the Discord #rules channel are published from.
July 5, 2026
4 commitsJuly 4, 2026
6 commitsKeypads can now be set to require a security clearance level. Five clearance tiers (Trooper up to High Command) appear as access groups in the keypad settings, and a door opens for anyone whose job clearance is at or above the keypad's tier. Clearance comes from the job's Keycard Clearance-Level setting, and the check runs on the server so it can't be bypassed. The clearance groups also automatically re-register after a keypad config reload instead of silently disappearing.
The XP total on the bar now ticks upward in sync with the fill animation when you earn XP, instead of jumping straight to the new value. On a level-up the counter snaps to the fresh bar rather than counting backwards.
The XP bar now wears your active specialization's colour, with a soft shine sweeping the fill, a glowing progress tip and a subtle glow around the panel. It is slightly larger, all its text carries a thin outline so it stays readable over any colour, and your current level reads brighter than the next one.
Every recipe now shows a game-style stat readout — damage, radius, fuse and duration bars coloured from weak to strong — with the numbers taken from each grenade's actual code, so the C-25 reads as the impact grenade it really is and the bacta shows its healing instead of damage. The menu is larger, stat text is easier to read, and the crafting progress bar animation is smoother.
July 3, 2026
17 commitsThe fabricator menu gets a full visual overhaul: a clean black look with orange highlights only where you point, collapsible recipe categories, bigger recipe cards with lock and level-progress indicators, a redesigned 3D display stage, smoother animations and a cancel button that refunds your scrap mid-craft. Crafted grenades are now field-issued: they are lost on death, disconnect or character switch, and they no longer mix into stacks of grenades you bought.
The battalion members screen now shows actual characters from the database instead of a placeholder list of 35 randomly generated names. Members are matched by faction and battalion, and the query works on both the development and production database engines.
Character preview models now come from the character's saved model, bodygroups and submaterials instead of a hardcoded test trooper model. Characters without saved customization fall back to their faction's preview model.
Character name prefixes no longer error when a character's faction has no battalions or ranks configured yet, or when a faction is missing. Rank abbreviations now also show for characters who hold a rank but aren't in a battalion — previously the rank tag only appeared if you were in a battalion too.
A new Fabricator bench turns salvaged droid scrap into ordnance. Press E at a bench to open the workshop menu, pick a grenade recipe and craft it straight into your inventory — each craft takes a few seconds and shows its progress. Higher-tier recipes unlock as your specializations level up.
Killing hostile droids now has a chance to award droid scrap straight into your carried inventory, with a pickup sound and notification. Take it to a Quartermaster NPC to trade for credits — type an amount or hit Max. Staff can toggle scrap drops on or off with the salvagedrops command during trainings and events.
The server can now post to Discord channels when players join or leave and when the server finishes starting up. Webhook links are configured in the server config and everything stays quietly disabled until a link is filled in. If Discord is ever unreachable the server logs a console warning and carries on — it never breaks gameplay.
The indev_tourney module was an experiment for a crate-opening screen that was never finished. The whole file was already switched off (it exited on its first line and all remaining code was commented out), so nothing players see changes. The unboxing feature can be rebuilt properly later; this just clears out the dead files.
The profile tooltip on chat avatars was set once when the message row was created. It now refreshes each time you hover, so it always shows text from the current language table. Resolves the "refresh on lang change" marker.
Dragging or resizing the chatbox used to save the previous frame's position instead of the current one, which could make the box fight the cursor while dragging and reopen slightly off from where you left it. It now saves the exact spot you drop it. Also removes a stale "save configs" marker — settings already save automatically.
The server was streaming the loading-screen camera area to every player at all times. It now only does so for players still on the loading screen, which saves a little network and server work for everyone who has already spawned in.
The in-development flying-mode file was never loaded by the module loader and nothing referenced it, so it was dead code carrying a "REMOVE ONCE DONE" marker. Deleting it has no effect on gameplay.
The in-development tournament/unboxing screen was never finished. Its only file did nothing when loaded and the rest was leftover prototype code that no part of the game referenced or could open. Removing it so there's no half-built feature lingering in the codebase.
Removes the leftover DarkRP panels a previous pass missed — arrested and wanted counts, money transfers, and case/payday rates — and repoints the economy panels at Clone Wars credits. The dashboard now also charts online players by faction over time.
The live server stats dashboard now shows real Clone Wars numbers while you play. Credits, faction, battalion and rank come off your active character, and the server reports online players broken down by faction and battalion. The old DarkRP figures that never applied to a Clone Wars server (wallet cash, arrests, wanted levels, money printers, drug labs, grow-ops, gangs and hitman contracts) have been removed so the panels only show numbers that mean something here.
July 2, 2026
28 commitsAdds a dedicated section for this gamemode's figures — character and active-character counts, credits in circulation, store credits, stored inventory containers, the pending cross-server delivery backlog, a characters-by-faction breakdown and a top-characters-by-credits chart. Replaces the old generic database section, which showed the same handful of numbers less usefully.
Adds a database metric counting characters whose last-seen time is within the past week, so the dashboards can show how many characters are actually being played rather than just how many exist in total.
The server stats dashboard was cloned from a DarkRP setup and showed gangs, mining, hitmen, money printers and drug labs — none of which exist on this Clone Wars server. Removed those panels (15 in total), trimmed the "money in circulation" graph to drop its gang/printer lines, closed the gaps, and retitled the board for Clone Wars. Server health and the new character/faction/credit stats remain.
Repoints the "registered players", "credits in circulation" and "top balances" panels onto the new character/credit metrics so they show real data again instead of the retired DarkRP wallet figures.
The database metrics were copied from a DarkRP dashboard and queried tables this server doesn't have (money printers, gangs, mining, hitman). Because they all ran as one batch, a single missing table meant none of the database stats updated at all. They now report figures that actually exist here — character and player counts, characters per faction, in-character and store credits, stored inventory containers, and the cross-server delivery backlog — and each stat is fetched independently, so one gap can never blank the rest.
Loading into a map that has no intro-camera path set up — such as a mission server running an ad-hoc map — threw an error every single frame and could leave the loading screen misbehaving. Those maps now skip the cinematic camera pan and load with a normal view instead of erroring.
Transferring a player to a mission server never moved their client. The hub saved the character and handed off ownership correctly, but the final step tried to force the client to connect in a way the game ignores for security, so players just stayed on the hub while their character had already been handed to the mission. The client is now asked to connect the proper way, so transferring pops the standard connect prompt and the player actually lands on the mission with their money and character intact.
Restores the fastgmad and lzma helper programs, which had been corrupted when saved and would fail to run on a fresh checkout.
Restores 74 sound effect files (weapon fire, explosions, reloads and more) that had been damaged when saved into the repo, so they play correctly again. A handful of sounds were damaged beyond recovery from the repo and will need to be re-added from their original source.
Adds line-ending exclusions for sound files (.ogg) and the prebuilt Linux helper programs so git stores them exactly as-is. Previously these were being altered on save, which quietly damaged some sound effects and tools. This prevents any further damage going forward.
Fonts and weapon particle effects were previously saved into the repo with their line endings altered, which quietly corrupted the files. Some custom fonts and gun effects could render or behave incorrectly as a result. This restores the original, correct versions of every affected font and particle file so they load properly again.
The server list now shows each fleet server's actual map and player count — previously they were blank because nothing reported them. This also makes the transfer full-server check use real numbers.
Adds a pending-deliveries queue: any server can queue money, items or other grants for any player, and the server that owns that player applies them at their next character load — even if they were offline or on another server when it was sent. Nothing is lost to crashes or restarts, and unrecognised delivery types stay queued instead of being eaten. Modules subscribe via the Zenith.Fleet.ApplyDelivery hook.
Adds a provisioned Grafana fleet overview (players, FPS, entities and ping per server, plus a live directory table), role-aware Prometheus alert rules (main server down is critical, a dead mission is only a warning), and the QA checklist for the first live multi-server test session. Roadmap statuses updated to match.
Prometheus now learns its scrape targets from the live fleet directory instead of a hardcoded single server: every hub and mission server is monitored automatically from the moment it spawns, labelled by server, region and role, and drops out when it dies.
Adds player transfers between fleet servers: the character is saved first, the ownership lock is handed to the destination atomically (never released into the open), and only then is the player sent to connect. If anything fails along the way, the player simply stays where they are. Transfers are refused when the destination is full or unknown.
Battalion and rank edits are now saved with a version check: if two admins on different servers edit at the same time, the second save no longer silently reverts the first — the server picks up the newer data, re-applies just that admin's change on top, and saves again.
The single-writer lock, fencing tokens and fenced character saves are now implemented and running on staging, closing the ordering risk noted on phase 2.
Updates the multi-server plan to match what now exists: per-server sidecars, mission naming with the hostname length rules, lock hardening requirements (guarded release and fencing), the hand-over player transfer flow, database-backed durable jobs, and status markers on the roadmap phases.
Adds "bash setup.sh" — an interactive first-time setup that installs everything needed on a fresh machine (including WSL), generates the .env, builds and boots the server, and reports its health. Also adds "make doctor" to diagnose common problems in plain language, fills in the missing keys in .env.example, and recommends the team's VS Code extensions. New team members can now set up without hand-holding.
The server used to pause on every boot waiting for a code debugger to attach, which froze staging and event servers that nobody debugs. The wait now only happens when GMOD_DEVELOPER is enabled.
The server list and join buttons now hand out this machine's real network address instead of "localhost", which only ever worked from the same computer. Tailscale is preferred when it's connected.
June 30, 2026
3 commitsTidies the bottom-middle XP bar by dropping its drop shadow.
Rebuilds the leveling tab in Zenith's style: colour-coded specialization cards you click to choose what you train into, a leaderboard of online players ranked by their equipped specialization's level, and a live recent-XP feed that shows where each gain came from. The XP-gain notice is now a small floating note above the HUD bar.
XP gains now record where they came from (NPC kill, passive, admin), and each player's equipped specialization, its level, and total level are shared so the leaderboard can display them. Each specialization also has its own colour and rank-icon set.
June 29, 2026
6 commitsAdds a set of manager.jpg image files across several addon and content directories.
Removes some leftover commented-out snippets in the leveling menu code (an unused colour tweak and a few sound-test lines that were never enabled). Tidy-up only — no behaviour changes.
The F4 settings menu listed the "Enable/Disable Shadows" option twice under Performance. Removed the duplicate so it now appears only once.
Cleans up some stray developer messages that were being printed to the server console (like "hey im here" while opening a panel, and a stream of numbers while dragging). These were left in by accident and only added console noise — no in-game behaviour changes.
Adds two new options to the F4 settings menu under "Perfomance" so players can tune the background blur behind menus to suit their PC: - High Quality HUD Blur: turn off to use a lighter blur that costs fewer frames on weaker machines. - HUD Blur Strength: a slider to make the blur softer or sharper. Lowering these can improve framerate. Defaults keep the current look, so nothing changes unless a player adjusts them.
Daily rewards are now a calendar you open on join (when something is waiting) or any time with /daily, instead of an easy-to-miss popup. Each day you log in unlocks the next reward; claim them one at a time or grab everything you missed with Claim All. Skipping a day never costs you a reward — your progress is counted in days played, not the date. Days can give credits and items (weapons, ARC9 skins/attachments and lightsaber items), and item days show the item's name and spawn-menu preview image. Super admins get an in-game editor to set what each day gives and to build draft event calendars (like a Christmas advent) that can be released when needed.
June 28, 2026
14 commitsThe runtime agent could come up "running but serving nothing" with no explanation: a failed network bind or a swallowed startup error left it alive but never listening, so MCP control and the in-game bridge silently went dead. It now logs whether it bound the port (and the real reason if it didn't), and reports uncaught startup errors instead of hiding them.
The givexp, losexp and setlevel commands now post a message visible to staff (like other admin commands such as cloak) instead of only telling the admin who ran it.
XP and the chosen specialization are now saved on each character instead of the whole account, so every character keeps its own progress and a non-clone character can't use a clone's XP. The old account-wide storage has been removed in favour of the character's own saved data. The "experience gained" notice is now a small, clean "+XP" that floats up just above the XP bar at the bottom of the screen, replacing the large centre-screen popup. The level-up animation is unchanged.
Killing a Zenith combat NPC now awards XP into your active specialization (50 by default, or a per-NPC amount). The XP bar at the bottom-middle of the HUD now shows your real specialization, level and progress and fills up as you earn XP, instead of sitting empty on placeholder values.
Adds three SAM commands for managing player XP, each with its own permission so access can be granted to specific staff ranks from the SAM permissions menu: - givexp <player> <amount> [track] — add XP - losexp <player> <amount> [track] — remove XP (never below zero) - setlevel <player> <level> [track] — set a specialization to a level The track is optional; leaving it out targets the player's active specialization. givexp/losexp default to the admin rank and setlevel to superadmin, all changeable in the SAM menu.
Turns the placeholder leveling screen into a working system. Players now earn real XP into a chosen specialization — Infantry, Heavy, Medic, Engineer or Recon — and that progress saves between sessions. The F4 "Leveling" tab, the "you gained experience" popup and the level-up animation now show each player's real XP and levels instead of the old hardcoded placeholder values. Open the Leveling tab and click a specialization to set it as the one you're training into. For now XP is earned passively while you play; earning XP from kills and objectives is the next step. Admins can test with the console command "zenith_givexp <amount> [track]".
Rewards players with credits each day they log in, and the reward grows the longer their streak runs. Days 1-6 give increasing credit payouts and day 7 pays out a big weekly bonus, then the cycle starts again. Missing a day is forgiven once (a configurable grace period); miss more than that and the streak restarts from day one. The reward is granted automatically the first time a player loads in each day, with an on-screen popup announcing it, and the streak is saved to the player's account so it carries across reconnects and character swaps. Implements ZCW-84.
Claude now figures out who it's working with at the start of each session instead of always assuming Felix. The first time someone uses Claude on their machine it asks who they are, remembers the answer, and from then on treats them accordingly — a developer gets full technical depth, while a server operator like Felix or Ben gets plain-language, careful, branch-everything guidance. Each person's guide lives in .claude/people/ (FELIX.md, BEN.md), so new people can be added by dropping in another file. The remembered identity is stored locally and never shared.
Adds Sabacc, the classic Star Wars card game, playable at a new Sabacc table prop. Spawn a table, press E to sit down, and ante a buy-in to join the round. Each player is dealt two cards from a 62-card Corellian Spike deck. On your turn you can trade a card for a fresh one or stand, and the player whose cards add up closest to zero when everyone stands wins the pot. A sum of zero is a "Sabacc"; the unbeatable hand is two zero cards, a "Pure Sabacc". Tied hands split the pot. Up to six players can sit at one table, buy-ins and winnings are paid in credits, and a player who takes too long on their turn is stood automatically so a game never stalls.
Starting the server with `make up` no longer hangs on boot. The remote debugger pauses the server until a developer's tools connect, which is what we want for `make debug-init` but not for a normal launch. The server now only waits when `make debug-init` asks it to, so a regular `make up` boots straight through.
When the in-game debugger fails to start because its program file was not downloaded properly, the server console now prints clear, step-by-step instructions for fixing it instead of a cryptic error. This only affects developer machines and has no impact on normal gameplay.
Fresh setups now install Git LFS and download the real server program files automatically. Previously these large files came down as tiny placeholder stubs, so the server would fail to start with a confusing "invalid ELF header" error until someone manually fixed it. The startup commands also now double-check these files are real before launching, and repair them on the spot if they are still placeholders, so the server never boots in a half-broken state.
The blur quality option now sits alongside the other performance settings in the F4 menu, instead of creating a separate section of its own.
Players can now choose how strong the menu background blur is from the F4 settings menu, under a new "Performance" section. There are three choices: High (the nice blur, and the default), Low (a lighter, cheaper blur), and Off (no blur at all). Turning it down or off can improve framerate on lower-end computers, while everyone else keeps the full look.
June 27, 2026
12 commits* content(loading): brand the loading screen for clone wars rp Replaces the leftover default loading-screen branding with ZenithRP Clone Wars branding. The rotating messages now welcome players, link the Discord (discord.gg/zenithrpco) and website (zenithrp.co), and give a quick tip, the background uses the space/nebula image instead of the default filler, and the page and logo text read ZenithRP instead of SleekLoad. * feat(loading): redesign the loading screen with a clean progress bar Replaces the old terminal-style loading HUD with a clean, modern layout: the server logo, rotating Clone Wars flavour text, and a single glowing progress bar that fills with the real load progress and shows a live percentage plus the current map and player count. A small footer shows the Discord and website. Removes the old console, floating cards and side panels for a simpler, nicer look. * feat(loading): hyperspace warp, arrival, tips and player stats card Turns the loading screen into a Star Wars style hyperspace jump: the starfield accelerates into a warp and eases back to a calm starfield once loading reaches 100%. Adds rotating gameplay tips alongside the flavour text, a live download status line showing what the game is downloading, and a welcome-back card with the player's avatar, name, level, credits and XP while they connect. * feat(loading): add venator, coruscant and discord qr to the scene The loading screen now drops out of hyperspace into a scene: a Venator cruiser zooms in on the left and drifts slowly forward, the planet Coruscant zooms in cleanly on the right, and a scannable Discord QR code sits in the bottom-right so players can jump straight into the community. The starfield settles into a gentle drift after the jump instead of freezing, and the progress bar, live download status and rotating tips carry on underneath. --------- Co-authored-by: 8char <matteokrantz@gmail.com>
# Conflicts: # loading/css/zenith-hud.css # loading/js/zenith-hud.js
The loading screen now drops out of hyperspace into a scene: a Venator cruiser zooms in on the left and drifts slowly forward, the planet Coruscant zooms in cleanly on the right, and a scannable Discord QR code sits in the bottom-right so players can jump straight into the community. The starfield settles into a gentle drift after the jump instead of freezing, and the progress bar, live download status and rotating tips carry on underneath.
Turns the loading screen into a Star Wars style hyperspace jump: the starfield accelerates into a warp and eases back to a calm starfield once loading reaches 100%. Adds rotating gameplay tips alongside the flavour text, a live download status line showing what the game is downloading, and a welcome-back card with the player's avatar, name, level, credits and XP while they connect.
* content(loading): brand the loading screen for clone wars rp Replaces the leftover default loading-screen branding with ZenithRP Clone Wars branding. The rotating messages now welcome players, link the Discord (discord.gg/zenithrpco) and website (zenithrp.co), and give a quick tip, the background uses the space/nebula image instead of the default filler, and the page and logo text read ZenithRP instead of SleekLoad. * feat(loading): redesign the loading screen with a clean progress bar Replaces the old terminal-style loading HUD with a clean, modern layout: the server logo, rotating Clone Wars flavour text, and a single glowing progress bar that fills with the real load progress and shows a live percentage plus the current map and player count. A small footer shows the Discord and website. Removes the old console, floating cards and side panels for a simpler, nicer look.
Replaces the old terminal-style loading HUD with a clean, modern layout: the server logo, rotating Clone Wars flavour text, and a single glowing progress bar that fills with the real load progress and shows a live percentage plus the current map and player count. A small footer shows the Discord and website. Removes the old console, floating cards and side panels for a simpler, nicer look.
Adds an !rpt command for posting anonymous local roleplay text. Typing "!rpt the rock moves" shows the line in red to nearby players only, with no name attached, so staff can narrate roleplay moments in the world. It is a SAM command, so it appears in the SAM menu and access is controlled by a new "rpt" permission (admins and up by default). Grant that permission to any rank in the SAM permissions menu to let them use it.
Replaces the leftover default loading-screen branding with ZenithRP Clone Wars branding. The rotating messages now welcome players, link the Discord (discord.gg/zenithrpco) and website (zenithrp.co), and give a quick tip, the background uses the space/nebula image instead of the default filler, and the page and logo text read ZenithRP instead of SleekLoad.
Audio files in .ogg format were being treated as text and having their line endings rewritten, which made them show up as changed even when no one had touched them. They are now marked as binary so this no longer happens.
Add Felix's SteamID to previewWhitelistedSteamIDs so the PreviewMode CheckPassword hook lets him join on the first attempt instead of kicking once before allowing entry.
The own target word-split the find output, breaking on directories named 'nowy folder', causing make to exit with Error 1. Use find -exec so each path is passed as a single argument.
June 23, 2026
8 commitsAdds timed, stacking status effects such as burning, frozen or healing that can be applied to players, with small timer bars drawn on the HUD.
Adds correct icon framing for more weapon attachments (bipods, suppressors, optics) so they sit properly in the gunsmith attachment view.
The weapon panel and the in-game HUD now display a gun's rolled rarity, level and talents, including which talents are still locked behind a level requirement.
Every gun now rolls a small set of passive talents (one per tier) when it is created, on top of its rarity. Guns also take up an inventory footprint that matches their real model shape instead of a fixed slot size.
Adds AI nextbot NPCs you can spawn and fight from the "Zenith NPCS" spawn category: B1 and B2 battle droids, a B1 sniper, droidekas, Wookiees, several Mandalorians, clones, a mega tactical droid, and a range of creatures. They hold and aim their weapons properly, drop into crouched firing ranks so the droids behind can shoot over them, and won't damage their own faction. Looking at one shows a nameplate with its name, allegiance and health (and shield, for droidekas).
Adds AI nextbot NPCs you can spawn and fight from the "Zenith NPCS" spawn category: B1 and B2 battle droids, a B1 sniper, droidekas, Wookiees, several Mandalorians, clones, a mega tactical droid, and a range of creatures. They hold and aim their weapons properly, drop into crouched firing ranks so the droids behind can shoot over them, and won't damage their own faction. Looking at one shows a nameplate with its name, allegiance and health (and shield, for droidekas).
Adds the voice and effect sounds for the new combat NPCs: B1 and B2 droid chatter, clone and Mandalorian voice lines, creature noises, blaster fire, and the droideka's shield, roll and fold effects, plus footsteps. Shipped both as the raw files and packed for FastDL.
Adds the voice and effect sounds for the new combat NPCs: B1 and B2 droid chatter, clone and Mandalorian voice lines, creature noises, blaster fire, and the droideka's shield, roll and fold effects, plus footsteps. Shipped both as the raw files and packed for FastDL.
June 21, 2026
2 commitsThe attachment cards in the gunsmith inspector no longer stack in two columns down the sides. Each card now sits on an oval around the gun, out in the direction of its own mount point, so a card points back toward the part it describes. Cards that would land on top of each other are nudged apart so they stay readable, and they glide to their spots as you turn the gun.
Overhauls how attachments read in the gunsmith inspector. Each mount point on the gun is now a dot that sends out a sonar-style ping when you hover its card. Clicking a slot opens a side panel that slides in from the right (replacing the old pop-up in the middle of the screen), listing every compatible attachment with its model, price, level, stat changes, pros, cons and description; the gun slides aside so it stays fully visible while the panel is open. Cards and list rows use the standard box styling with a light beam that travels around their edge on hover, and the menu now plays hover and click sounds. Attachment pros, cons and descriptions show in plain English, and all attachment previews render at a consistent angle.
June 19, 2026
3 commitsThe gunsmith inspector gains a few extras. Clicking a slot card opens a picker listing every attachment that fits, so attachments can be swapped on the preview to see how they mount. Pressing X fans the gun apart into an exploded view, and the weapon now slowly turns on its own once you stop touching it. It also starts slightly zoomed out so the whole gun fits in frame.
Weapon items now roll their stat set the moment they're created and carry it for life, applying it to the actual gun when equipped. The roll happens once on the server so it stays consistent for everyone, and guns saved before this change pick up their stats the first time they load.
Every weapon now has the groundwork for rolled stats. When a gun is created its stats (damage, range, recoil, handling, and more) are rolled randomly, and how good those rolls can be scales with the gun's rarity: a higher-rarity weapon can never roll a weak result and has a shot at much stronger numbers. Each weapon class can be given a "base rarity", and a reforge range is worked out from it (anything up to one tier above the base), laying the track for reforging guns later. Nothing is wired to players yet, so this change has no visible effect on its own.
June 18, 2026
9 commitsCorrects the icon framing for these two blasters so they show at the right size instead of appearing zoomed out.
Adds a developer-only fullscreen screen that shows a weapon together with its fitted attachments. You can spin it around with the mouse and zoom in and out, and a line runs from each attachment on the gun out to a card naming the part, with a small 3D preview of it. Open it from console with dev_gunsmith (no argument uses the weapon you're holding, or pass a weapon class name to inspect that one).
The emergency 'close all previews' combo now also stops watching, so a broken panel won't immediately respawn the next time it re-registers.
The emergency 'close all previews' combo now also stops watching, so a broken panel won't immediately respawn the next time it re-registers.
The emergency 'close all previews' combo was CTRL+SHIFT+ESC, which Windows captures for Task Manager before the game ever sees it. Moved it to CTRL+SHIFT+BACKSPACE so it actually works.
Tightens the icon framing for a batch of weapon attachments (foregrips, suppressors, underbarrel launchers, flashlights, optics and more) so they render at a sensible size instead of tiny and zoomed-out.
Adds a developer tool that lists weapon attachments in a slot-grouped grid of icon previews. Selecting one opens the model bounds editor for that attachment's model so its icon framing can be tuned, with already-tuned attachments marked so it's clear what still needs doing.
Grenade inventory icons now resolve their model through the shared weapon-model helper instead of a local cache. This makes them respect model overrides and prefer the world model, so a few grenades render with a cleaner icon.
The text entry box now renders its background through the panel's own draw pass, fixing visual glitches where the fill could bleed outside the box.