Skip to content

fix(desktop): support PAYDAY: The Heist Update 23 loaders - #151

Merged
ShulhaOleh merged 3 commits into
mainfrom
fix/pdth-update-23-loaders
Oct 21, 2026
Merged

ShulhaOleh merged 3 commits into
mainfrom
fix/pdth-update-23-loaders

Conversation

@ShulhaOleh

Copy link
Copy Markdown
Member

Summary

PAYDAY: The Heist Update 23 (October 20, 2026) changed how both of its loaders work, and Modrex was getting both wrong.

  • mod_overrides is built into the game. The update reads assets/mod_overrides itself and adds DB:create_entry and DB:remove_entry, which is everything PDTHModOverrides (ModWorkshop 53474) backported. Its DINPUT8.dll proxy also has the same name as the proxy DAHM now ships, so installing it from Modrex would replace DAHM's proxy and stop DAHM from loading.
  • DAHM was rewritten for the update. The current release is dinput8.dll plus pdthhook.dll and no longer ships lightfx.dll. Its author says the old hook does not work with the new build. Modrex looked for lightfx.dll, so a fresh DAHM install read as missing, and a broken old install read as installed.

Changes:

  • Replace the game-specific pdth_overrides loader kind with a generic built_in package kind. A dependency on a built_in mod page always reads as met, and nothing is installed for it. The PDTH package declares 53474 with it, so the game fact lives only in package.toml. A built_in loader with no mod ids fails package validation.
  • Detect DAHM by pdthhook.dll. The dinput8.dll proxy name is not unique to DAHM.
  • Remove stale loader DLL names from renderer comments, and update AGENTS.md, the site docs, the generated package reference and CHANGELOG.

Evidence: the Steam Update 23 changelog, the DAHM author's announcement on the dahm4pd Steam group, and the current DAHM archive itself. The pdthhook.dll strings include "using the game's built-in mod_overrides support" and "file(s) from assets/mod_overrides".

Not included: removing an existing PDTHModOverrides install. Its hardcoded hook offset is likely broken on the new build, but no crash has been reported yet.

Type of change

  • Application/code
  • Translation
  • Documentation
  • Other

Translation (if applicable)

  • Language:
  • Locale code:

See the translation guide.

Validation

  • Full local repository checks (bun checks)
  • Relevant local checks
  • CI only
  • Not applicable

Details:

  • bun checks at the branch head: everything passed except one renderer test, which timed out. That test (App.test.tsx, PAYDAY 3 Nexus source restore) is unrelated to this change, and it passed 3/3 on its own. The full renderer suite then passed 623/623.
  • cargo test passed at the first commit on its own and at the branch head (1034 unit tests plus the package validation and reference export tests).
  • cargo clippy --all-targets -- -D warnings is clean.
  • No dependency changes.
  • preview/fixtures/loaders.json was edited by hand to match list_loaders(), because its exporter needs ModWorkshop, which was returning 502.

@github-actions

Copy link
Copy Markdown
Contributor

Deploying Modrex previews with  Cloudflare Pages  Cloudflare Pages

App preview:https://app-preview.modrex.net/pr/151
Site preview:https://site-preview.modrex.net/pr/151

View logs: app | site

PAYDAY: The Heist Update 23 reads assets/mod_overrides itself and adds
DB:create_entry and DB:remove_entry, which is what PDTHModOverrides
backported. Its DINPUT8.dll proxy also collides with the proxy DAHM now
ships, so installing it would stop DAHM from loading.

Replace the game-specific pdth_overrides loader with a generic built_in
package kind. A dependency on a built_in mod page always reads as met and
nothing is installed for it. The PDTH package declares mod 53474 with it.
The DAHM release for PAYDAY: The Heist Update 23 is a dinput8.dll proxy
that loads pdthhook.dll, and it no longer ships lightfx.dll. The old
lightfx.dll hook does not work with the updated game. Detecting by
lightfx.dll reported a fresh DAHM install as missing and a broken old one
as installed. The proxy name is shared with other loaders, so detect the
pdthhook.dll payload instead.
These comments named PDTH loader DLLs that the previous two commits
changed. Keep only the game-independent rule each comment states.
@ShulhaOleh
ShulhaOleh force-pushed the fix/pdth-update-23-loaders branch from f6b2a6d to 689e95d Compare October 21, 2026 15:52
@ShulhaOleh
ShulhaOleh merged commit 98498b7 into main Oct 21, 2026
19 checks passed
@ShulhaOleh
ShulhaOleh deleted the fix/pdth-update-23-loaders branch October 21, 2026 16:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant