Repository navigation
Releases
Releases · Moonahuwu/MoonahsModMaker
1.5.4
New: save the game's original images
- Every game image the app shows can now be saved to your Downloads folder as a PNG, as a reference for making replacements.
- Heroes: hover any tile under "Hero images" (portrait cards, small and minimap icons, menu background, name logo, ability icons) and press ⤓, or "Save all" for the whole set into a " images" folder. Hero textures have the same button. The hero grid has "Save all portraits".
- Items: "Save all icons" on the shop, and a Save button on each item's page.
- Menu Art: ⤓ on every card, and "Save original" for any
panorama/images/path you type. - Mod retexture: Save button for the texture you're previewing.
- Files get readable names ("Haze - Ability 1 icon.png"), never overwrite an existing file, and Wall Art keeps its existing sheet download.
Fix: installs now work alongside Deadlock Mod Manager
- With a Deadlock Mod Manager profile active, the game only loads mods from that profile's folder (for example
addons/profile_default), not fromaddonsitself. The app used to install intoaddons, where the game never looked, so nothing changed in game. - Install now finds the folder the game actually loads mods from and puts your pak there, next to your Mod Manager mods, without touching Mod Manager's settings. The install message says where it went.
Fix: replaced hero name logos were invisible
- The game draws hero name logos with its own SVG renderer, which can't show pictures embedded in an SVG, so a replaced logo came out invisible on character select.
- Your logo art is now converted into shapes the game can draw. Recompile to update a logo you already replaced.
Fix: hero names match the game
- Hero names now come from the game's own name list, so newer heroes show their real names: Deadman Danny (was "Deadpack"), Rat King (was "Ratking"), The Doorman. The hero grid sorts the way the game does.
1.5.3
Fix: game crash on launch after installing a mod
- Since the 2026-10-16 game update, installing a mod with "patch gameinfo" on made Deadlock stop at launch with "FATAL ERROR: Unable to read default keybinding configuration (user_keys_default)!". The app added the addons folder to the game's search paths in a way that made the game look for its own settings inside the addons folder, and the update made that fatal.
- The app now adds the addons folder the same way other mod managers do (with
Mod citadelandWrite citadel), so the game keeps reading its settings from its own folder. Verified on the live game: no error, mods load. - Already hit by this? Update, then Install once more (with "patch gameinfo" on, the default): the app repairs the line it added before. A gameinfo that already has the full set of lines is left alone.
- The UI Master test push had the same problem and gets the same fix.
1.5.2
Game update 2026-10-16
- The update changed the format of the game's hero, ability and model data, and the app's file reader could not open it: the Heroes and Items tabs and Model Replacement failed on this patch. The reader is updated (ValveResourceFormat 20.1) and everything reads again.
- New heroes: Violet, Baba, Solomon and Deadman Danny show up in the Heroes tab with their ability cards, icons, sounds, voice lines and card art, all checked against the live game. The game still marks Violet and Baba "in development" even though they are playable, so the app now goes by whether a hero has a full kit and card art instead of that flag.
- Model Replacement: the update moved every hero's camera anchors (
standing_pivotandcrouching_pivotchanged from -90 -90 0 to 0 0 0, and the aim and weapon attachments moved with them). The hero kits the app keeps were made from the old models, so a new build would have carried the old anchors. Kits now remember which game version they came from and re-read the hero model after an update, and a build refreshes an old kit by itself first. - Model swaps built before an update are now marked "outdated - rebuild" in Model Replacement, and Compile warns about them, listing the anchors the game moved. Click Rebuild to fix the camera.
New: Cursors tab
- Give the game your own mouse cursors. Since the 2026-09-29 patch Deadlock draws four cursors from image files (the pointer, the ping pointer, the shop hand and the post-game commend), and the new Cursors tab replaces any of them.
- Choose any image (PNG, JPG, WebP, GIF, BMP, TGA) per cursor, pick its size, and click on the preview to set where the cursor actually clicks. "Use for all" puts one image on all four.
- Load a cursor pack someone made: a .zip, .rar or .7z of cursor files, or a folder. Packs with several looks (for example "Player 1" to "Player 4") ask which one you want.
- "Apply to game" converts everything to the game's exact file format and writes it into the game's cursor folder. Cursors are loose files, not part of your mod pak, so they are applied from the tab and not by Compile.
- The files your cursors replace are backed up next to them, and "Restore originals" puts them back. A game update or a Steam file verify resets the cursors; the tab notices and asks you to apply again.
- "Save as a pack" writes your cursors as a zip in the shape cursor mods are shared in, with install notes.
1.5.1
Wall Art: what the game shows now, and the fireplace portrait is back
- The hideout's big fireplace painting (the Patron Portrait) was hidden as "unused": its picture overshoots the edge of its texture by a sliver, and the scan that decides what is in the game threw such placements away. It is offered again.
- Art shown on props is now counted as in game. The scan only looked at wall geometry, so posters shown on prop models (the subway advert posters: Crab Eyes, Rescue Beam, White Crow, the subway map; the campus and museum banners; a billboard) were marked unused or had no region. It now checks every model the maps reference, including the alternate skins a model can wear.
- Seven sheets the rebuilt Midtown uses were never offered and are added: the Chinatown signs (23 signs), three newer sign composites, a garage decal sheet and a campus banner under Signs & Billboards, and a new tag sheet under Graffiti. 50 new regions in total.
- Used and unused are re-checked against the 2026-10-02 maps. Every one of the 85 sheets, hideout paintings included, was compiled against the live game as a check.
Animated Art: Midtown paintings moved to a new host after the map rebuild
- The hideout's animated portrait is unaffected by the patch: the prop it rides on is unchanged, and it was compiled against the live game again as a check.
- The 2026-09-29 Midtown rebuild baked the two props the Midtown animated signs rode on (the church archway and a trash can lid) into the map's scenery, so none of the 16 signs showed any more. 1.5 wrongly said the host was still in the map.
- The Hidden King side is back for the five surfaces the rebuilt map still has: Library Paintings #1 to #4 and the T2 Camp Painting. They now ride the plaza gate, the one prop left in the map that can host animated art. Every painting's position is measured against the map on a real compile (within 0.01 units), and art you had set on those five carries over. Not checked in game yet, so the group is marked beta.
- The other six Hidden King surfaces (the ad frames and the standee) are gone from the rebuilt map. Art saved on them is kept and shown dimmed so you can remove it, and is left out of your packs.
- The five Archmother signs stay switched off: that side of the map has no prop that can host them. The tab says so, takes no new art there, and leaves saved art out of your packs.
Heroes: Vindicta's Small icon can be replaced
- Vindicta's Small icon slot was missing (only Minimap showed). Hers is the one hero image the game builds from a PNG instead of a PSD, and the app assembled every slot's file name assuming PSD, so it never found it. Each image slot now reads its real file from the game's own hero data, with the old naming as a fallback. Checked against the live game for all 39 heroes: every declared card, critical, gloat, small and minimap image resolves.
Heroes: unreleased heroes no longer clutter the grid
- Since the 2026-09-29 patch the game data carries five heroes that are not out yet (no abilities, only a small placeholder portrait). They showed up on the Heroes grid and their page could only fail with "no bound abilities". A hero with no abilities is not playable and is now left off the roster; Ratking, who did get his kit on 2026-10-02, shows as normal.
Heroes: Abrams, Lady Geist and Pocket get their "More sounds" back
- Those three heroes' sound files live under older names in the game (abrams, geist, pocket) while their internal codenames differ (atlas, ghost, synth). The "More sounds" section looked for a file named after the codename, found nothing, and cached that empty answer, so the Gunfire / Movement / other rows never appeared for them. The file is now found the same way the ability cards find their sounds. Ratking (added 2026-10-02) was checked end to end: roster, 4 ability cards with icons, 36 sound events, voice lines and card art all resolve with no changes.
1.5
Reverb no longer makes the sound almost silent
- Room, Hall and Cave reverb dropped the whole track by 28 to 35 dB in the compiled file (fine in the preview, "plays nothing" in game). The convolution filter has no dry/wet mix of its own, so the entire sound went through the impulse response and its very conservative normalization. The render now keeps the dry sound untouched, adds only the reverb tail on top with a unit-energy impulse, and finishes with a transparent safety limiter. Measured on a bell, a hit, a voice line and a broadband burst: the level now stays within about 2 dB of the dry sound at any wet amount (Cave at 100% adds up to 3 dB). The live preview uses the same mix, so what you hear is what compiles. Recompile any track that uses reverb.
Updated for the 2026-09-29 Deadlock patch
- Every compile now merges into the game's CURRENT sound-event files: if the app's local copy of an events file is older than the game pak, it is re-fetched from the pak before merging (the compile log says "refreshed from the game pak"). Before, a copy from before the patch was used as the merge base, so the built file lacked every sound the patch added to it - those played nothing in game until "Fix for new patch" was run. Verified against the live game with a deliberately stale copy.
- Heroes and Items now follow the game automatically: the app notices when Deadlock's game files changed and rebuilds every hero / item / sound-preview cache from the live game once, so the six new heroes (Artist, Baba, Chessmaster, Deadpack, Nurse, Ratking) appear, the two removed ones (Airheart, Tokamak) disappear, and renamed ability sounds (Vindicta's whole kit, Grey Talon, Lady Geist, Pocket, Yamato, Chrono, Holliday, Mo & Krill, Viscous, Wraith, Abrams and more) show their new events. Before, those caches only ever rebuilt by hand, so a patch left the Heroes tab showing the old game forever.
- Wall Art and hero recolors work again on the new game files. The patch moved the game's shaders to a format the extraction library cannot read yet, which failed every poster and hero-texture compile with "Only VCS file versions 59 through 70 are supported". The app now reads the compile tools' own shaders instead (the ones the compiler actually uses), and falls back to generic texture names when neither is readable, so a future shader-format bump cannot take the feature down again. Verified against the real compiler: posters, Abrams and all four Ivy materials compile with the right textures.
- Sinner's Sacrifice: the game split the jackpot hit into Light and Heavy variants, moved the payout burst onto the hit's second track and gave the vault's destruction its own event. The tab follows: "Final hit (jackpot)" is now the Light twin (your track carries over), plus new Heavy, "Payout burst (heavy)", "Vault destroyed" and two "Powerup gained" slots. The generic "Kill streak" stinger no longer exists in the game (the numbered kill streak stingers remain); a track you had there stays in the project, marked as removed by the patch, instead of vanishing.
- Menu Art follows the new Play screen: the main card went square, Custom / Explore / Sandbox became compact tiles, Tutorial became Learn, and new Cancel, Roster and small Bots cards were added; the retired "Play menu rows" images are gone from the game and from the tab.
- Wall Art regions re-mined from the rebuilt Midtown, Hideout and tutorial maps (49 regions moved, 13 found, and 170 that only the retired Streets-era maps placed are now marked unused). Particle Guide data re-mined from the patch. The "weapon stat pickup" shipped pin follows its renamed event.
- Animated art: the Midtown hosts are still in the rebuilt map, but those surfaces have not been re-checked in game since the patch - the tab says so.
Animated art: see where every surface lives
- Every empty surface tile now shows an in-game photo of its location (goldenboy44's preview shots, used with permission), and the Midtown sections carry his Hidden King and ArchMother logos - no more guessing which adframe is which. Your art still replaces the photo the moment you fill a tile.
Download the setup exe below; installed copies get the update banner. Full history: CHANGELOG.md in the repo.
1.4.1
1.4.1
Animated art: Twitter/Discord "gifs" that are secretly WebP now work
- Media saved from Twitter or Discord is often an animated WebP file (sometimes even named .gif), and ffmpeg cannot read those at all - every surface using one failed with "Cannot determine format of input". The app now detects animated WebP by its actual bytes and decodes it with the same engine Chrome uses, so those files just work - real frame timing included. Nothing to convert, nothing to rename.
Full changelog: https://github.com/Moonahuwu/MoonahsModMaker/blob/main/CHANGELOG.md
1.4
1.4
Animated paintings and signs (NEW)
- Wall Art can now play a GIF or video on in-world surfaces: the big painting above the hideout fireplace, plus 16 Midtown sign surfaces across two hosts (library paintings, the item ads outside the T1 camps, adframes, standees, a square billboard) - pick a surface, pick the file, compile, done. The animation is compiled into your pack like everything else: installs with your addon, joins Shared Pack sync, no separate files. Frames pack into a texture grid and a shader expression steps through them in game; the hideout bakes the room's dim warm light in so the picture sits naturally.
- Wall Art is now its own sidebar section with two tabs, Static Art and Animated Art, and you can fill AS MANY animated surfaces as you like - every sign gets its own art, speed and fit at once (the compile rebuilds the host model with one quad and one material per animated surface). The Wall Art section sits right under Sounds, and a filled wall stays tidy: click a tile to open its settings in one compact panel, with "Apply look to all" to copy one tile's fit and speed across the whole wall. Per-surface texture size is tiered by how many surfaces animate on one host (1-2: 8192px, 3-4: 4096px, 5+: 2048px) so a fully filled wall stays easy on video memory, and hover-played video previews release their memory as soon as you move away.
- "Modified only" now correctly keeps Wall Art visible when you have poster art queued (it used to hide the tab). The Animated tab shows every surface as a tile with its REAL in-game shape, grouped by host - your art renders inside the tile exactly as it will be cropped in game (GIFs animate right in the tile, videos play on hover), the hideout tile can preview the room's lighting.
- Fit options like regular posters: Fill (crop the overflow, with a position pick), Fit (letterbox), or Stretch - plus speed (or the source's own rate) and a frame cap. A still image works too: it becomes a static picture on the surface (handy for the Midtown signs, which have no regular region). The static hideout portrait sheet points at the Animated tab with a "can be animated" tag.
- A surface that cannot be read no longer sinks the wall: the compile drops just that surface, builds the rest, and retries the dropped one automatically on your next compile. Failed extractions now report the actual ffmpeg error (and the exact command) instead of three lines of progress noise, and leftover frames from an interrupted run can never pad a later build.
- Technique, host research and surface data by goldenboy44 (leonyarov), used with permission - check out the original Dynamic Paintings web tool at gamebanana.com/tools/23828. Midtown surfaces are marked beta, matching his own tool.
Wall Art: missing signs found, hideout paintings fixed, "unused" explained
- 13 new sheets under Signs & Billboards: the street poster collages, billboards, the museum banner, hologram and six neon boards (the game's materials/signage/ tree) were never scanned into the manifest, so a whole family of in-world posters and signs simply was not offered. They start without pre-drawn regions - use the region editor to outline the poster you want (or replace the whole sheet).
- Hideout painting sheets load again: "Couldn't load the sheet texture: no color texture in models/hideout/..." was the tab rejecting color textures that live under models/ (all four hideout sheets were hit).
- "Unused" now says what it means: no MAP geometry samples that art - but sign props and models can still show it in game (the map scan cannot see those), and replacing an unused region still compiles and works. The toggle description and the amber chips explain this now; some unused entries really are cut content.
Jumpscares: compiling on the downloaded tools
- Compiling a Jumpscares/Deaths mod with the app-downloaded compile tools failed ("resourcecompiler exit 1" with only localization warnings shown). Two fixes: the app now stages the one tiny file the download bundle is missing (core's panorama_config.txt, taken from your own game files) before compiling - panorama UI, images and the sounds batched after them all compile again; and compile errors now show the compiler's ACTUAL error lines instead of the first warnings it printed, so the next report says what really broke. Same fix applies to UI Master pushes.
Full changelog: https://github.com/Moonahuwu/MoonahsModMaker/blob/main/CHANGELOG.md
1.3
Model Replacement: ragdolls work again
- Models built through the tool had no ragdoll: the decompile that produces the editing kit reconstructs the physics BODIES (hulls and per-bone capsules) but never the JOINTS between them, so the rebuilt model compiled with an empty joint list and reviewers rejected submissions for it. The tool now reads the joints straight from the original compiled model and regenerates them into the build (cone and twist limits, friction, collision flags, exact anchors). Verified against the real compiler: the rebuilt model has the same 18 joints as vanilla Haze to within 0.0002 units. Existing kits pick this up automatically - re-pick the hero once if the build log says the kit predates the physics cache.
- "Open in ModelDoc" (and the particle editor) now tell you up front when the compile tools are the downloaded compile-only bundle: those editors need the full Deadlock SDK with the game content (game/core and the citadel pak), which the bundle does not include - before, the tools opened and died on "can't open a citadel file".
Model Replacement: mesh files with spaces in the name
- A mesh file named with spaces or other odd characters ("Harlem Ivy after rigging.fbx") failed every build with "RenderMeshFile: ... Node ... resolve failure". The mesh is now staged under a plain name (Harlem_Ivy_after_rigging.fbx) and the build log says so - rename nothing, just build again. Reproduced and verified against the real CS2 compiler.
Settings: paths are checked properly, and fixed for you
- Pasting a folder where the pak01_dir.vpk file belongs (or a chunk like pak01_000.vpk, a disk path in Addon name, an absolute Sound folder) used to show a green check and then fail everywhere with baffling errors ("Access to the path ... is denied", "not in cache" for every sound file). Settings now checks each path for what it needs to BE, says what is wrong right under the field, and offers a one-click Fix when it can tell where the path should point - the Game pak is found from any folder inside your Deadlock install. Auto-detect (and every start of the app) applies those fixes automatically.
- Auto-detect also finds Steam libraries on other drives (D:\SteamLibrary, F:\Games\Steam, ...) that the registry lookup misses, e.g. when the app was started as a different admin account.
- Refresh game data tells you when the Game pak is not the pak file (and where it found the real one) instead of listing every file as "not in cache". The Events chip is now "Game data" and says how to fill it.
- Installing into a fresh Deadlock that has no addons folder yet creates it instead of failing.
Hero textures: Ivy's hollow black eyes fixed
- Recoloring or reskinning some heroes (reported on Ivy) could turn parts of them solid black - most visibly her eyes. The recompile sometimes creates small helper textures with new names, and the build left them out of the vpk; when the game couldn't find one anywhere the whole material broke. Every texture a recompiled material actually uses now ships in the vpk (verified against the real compiler on all four of Ivy's materials). Heroes like Paige only worked by luck - their helper textures happened to match files the game already has. Just recompile, nothing else to change.
Mod combiner: import a folder, live
- Import a FOLDER of loose mod files (game layout: sounds/, particles/, materials/, ...), not just a .vpk - new "Import a folder…" button, or paste the folder path. The folder stays linked live: it is re-read on every compile, so edits you make in it land in the next build automatically - perfect for a mod you are still working on. Its card shows a "live folder" tag.
- Works with the existing "Decompile a .vpk" button as a full edit loop: decompile any mod into a folder, import that folder, then open and tweak its files freely - great for merging mods and adjusting what they override.
- Housekeeping files a working folder can carry (.git, .vscode, __MACOSX) never ship in the built vpk and stay out of the review list.
Track editor: layers, effects, live preview
- Layers got a proper mixer: a "Length" choice per track (your clip / longest layer / custom seconds) so a long original can ring out under a short hit (anything past the end shows red-hatched), per-layer fade in/out and "duck" (lower your track while the layer plays), mute, a label column with the game's original marked as "Original", and a "Yours starts at" delay so your track can come in after the original.
- Effects on any track or layer: Reverse, Pitch (semitones and speed independently), EQ presets (radio, telephone, muffled, bass, bright, or custom), Crush, Chorus/Flanger/Tremolo, Compress, Reverb (room, hall, cave, slapback), plus Limiter and "Match loudness" (measures the game's original and matches your bite to it - works on very short clips too). Effects apply live while the preview plays; the compiled sound is rendered by ffmpeg with the same settings.
- Editor feel: typed start/end fields, Space to play, [ and ] to set the trim at the playhead, arrow-key nudging, Ctrl+Z undo, loop tracks preview looped, a level meter with a clip warning, and "Match length" to trim exactly to the original.
Sounds: every sound event, Most used vs All
- Every sound tab now has a "Most used | All" switch. Most used is the curated set plus anything you pinned or changed; All lists every sound event the tab covers (grouped by game file, searchable, with a preview button) and turns any of them into a normal slot the moment you open it. Layered and per-track sounds (the hideout ambience close/mid/far layers, the 8-track events) are listed as their own rows.
- Pin any sound (the flag on a row or a slot) to put it in Most used. "Reset pins to shipped" goes back to the set the app ships with. The shipped set now includes the stat-box and crate breaks, the stat / soul pickups, souls gained, hit / kill / death feedback, parry, shield break, stun, zipline, trooper and guardian sounds, and two ambience loops.
- New Combat tab: the hit, hurt, status-effect and player feedback sounds (damage, status_effects and player files) live there now; the crit slots moved over with their tracks. Gameplay keeps last hit, deny, souls and the rest of gameplay.vsndevts. Map SFX, Ambience and NPCs are always visible too.
- Misc / Search: one "Find a sound" box over every sound event in the game (event name, file, or a plain word like crate or gold), grouped by tab, with a Go-to-tab jump that opens the sound right where it lives.
Sounds: Rift
- The four "In the rift" loop slots (main, contested, blocked, approaching/FX) are real random pools now: add several tracks to a layer and the game picks one at random each time it starts, like every other slot. Before, only the first track of a layer ever played. Your existing rift tracks carry over untouched - just recompile. (Loop tracks still want Looping turned on.)
Heroes
- Billy: the tracks you had on "Blasted (E)" from the old flat Heroes tab now show up on Billy's Blasted card (Ambient Looping) - they were compiling but invisible in the drill-in, with an empty twin slot next to them. Pack Builder module membership follows.
- Ability cards no longer pull a hero's regular gun, reload, zoom and landing sounds onto an ability just because the ability also fires the gun (Grey Talon's Rain of Arrows listed his whole rifle; Werewolf's Slamfire listed the regular rifle shots). Those live in "More sounds" under Gunfire / Movement.
- Sounds whose Valve original is a file borrowed from somewhere else (Billy's Blasted healing plays Rescue Beam's heal clip; Slork's invisibility uses Haze's smoke bomb; Ivy's air drop uses Stasis Bomb / Silence Wave) now say so under the slot instead of looking mis-filed. They are the real game data: replacing one only changes that hero event.
- Three ability sounds that showed with an empty title (Grey Talon / Shiv / Slork impact rows) are named now.
1.2
Moonahs Mod Maker 1.2
Full changelog: https://github.com/Moonahuwu/MoonahsModMaker/blob/main/CHANGELOG.md
Model Replacement
- Use models from OTHER MODS: pick any mod's pak01_dir.vpk, choose a model inside, and the app extracts it with its textures and converts it for your target (soul container mod -> urn mod, etc). The mesh picker also takes .glb/.gltf directly.
- Build streams every step live with an honest time estimate (fast build 1-3 min, full 10-20) - no more "is it stuck?". A truly stuck compiler is stopped after 40 minutes with what to check.
- The CS2 Workshop Tools check now verifies the DLC is actually installed (not just CS2), with one-click Steam buttons to install both.
- Auto-rig and Fix model moved behind Settings > Experimental (off by default), plus two fixes: Auto-rig no longer destroys an already-rigged model, and Fix model converts meter/cm scenes to game units.
- Fixed: a model-only pack could not compile.
Heroes
- Fixed missing backgrounds for Paige and Lady Geist.
- Fixed the Textures section disappearing for Infernus (material lists now come straight from the model - more accurate for a few other heroes too).
Pack Builder
- "contents" expander on bundled mods: see every model/particle/sound inside a vpk and exclude what you don't want shipped.
- Search box across Core and every module.
Thanks to everyone reporting on GameBanana - every item above came from your comments.
1.1.1
Moonahs Mod Maker 1.1.1
Small patch for the two most-reported things since 1.1. Full changelog: https://github.com/Moonahuwu/MoonahsModMaker/blob/main/CHANGELOG.md
Blender "Access is denied" fixed
- A Blender path pointing at the install FOLDER now finds blender.exe inside it automatically - the "Access is denied (os error 5)" error this caused in Auto-rig and Fix model is gone. Quotes from Explorer's "Copy as path" are handled too.
- If Blender came from the Microsoft Store (which Windows blocks other apps from launching), the error now says exactly that and points at blender.org / Steam.
- The Blender path setting gained a Browse button that picks blender.exe directly.
Wall Art reset
- New "Reset sheet" button removes every replacement and hidden decal on a sheet at once (with a confirm step).
- Every removal now tells you what happens: the original poster is back after the next Compile + Install.