3.0 Prerelease 181 2026-05-06
Downloads:
Features
- Light Offsets
7f0cdccd8Anything that casts light in new darkrooms can now have an offset applied. Offsets can be positive or negative, with positive moving the source of the light that many pixels in the direction the light is "facing". Offsets perpendicular to the facing direction are not currently supported.
Editor
- Improve some tile editor shortcuts
2d680874b- Ctrl+Arrows will no longer wrongly prevent changing pages
- Holding Shift makes the Alt+Arrows shortcut move in increments of 8px instead of 1px
Bug Fixes
- Prevent new copy button from showing in invalid places
f1ec53450
Player
- Bottom 8px bad collision using 4-way newer hero movement
f511cdb31 - New/Newer Hero Movement inconsistencies
1c1bd4493Some spots were only checking for New movement which should've checked for EITHER, causing inconsistencies between enabling both and just enabling newer movement.
- Exstate carryover checking wrong state
57b2514afa normal state being set could prevent the exstate from carrying over.
- Wizzrobes properly teleport within their spawn screen
80d2c31eb - Ffc spotlights not working in some cases
dd375848a - Various z3 issues re: Dithering / Dark Rooms
6b18fd37e- Dithering via
bitmap->Dither()in scripts was using a bad 56-pixel offset, breaking dither patterns. - Dithering in dark rooms was incorrectly tied to viewport-space rather than world-space, causing the dither pattern to 'stick' to the viewport rather than the screen itself.
- Dithering and Transparency screen flags were improperly applying to entire regions, rather than being separate per-screen like the Dark Room flag is.
- Dithering via
- Pushblocks not properly counting towards trigger groups
eb9080087
ZScript
- Direct warp coordinates to region for WarpEx
2b09d3083 - Prevent crash from out-of-bounds sprite script IDs
d6afd03c5 - Return correct value for sprite draw offsets
d22c0e993 - Ensure script is valid before running it
5eb239fad
Refactors
Player
- Extract common warp state and dir facing logic
80c3ee112 - Extract sword repositioning logic into HeroClass::reposition_sword
2d99a4c0d - Consolidate post-warp initialization logic
bdab87b9e - Unify warp exit/entry last entrance state update
8d1d20b30 - Move new warp functions to hero.cpp
b1b505135
ZScript
- Remove extra call to get_script_engine_data
2d94a5485
Tests
- Add dither testing
d17462015
CI
- Run headfull in parallel in CI
170651742 - Upgrade actions due to node 20 deprecation
ebf0c0d9a - Fix extra-args param
6f5704a35 - Fix package step for coverage build
fa09c8551 - Fix coverage step
70c7292f9
Misc.
- Support pretty urls in self-hosted docs site
2f68f1fac