The one with subscreen scripts and an autocombo drawing mode.
Features
- subscreen scripts, ZScript subscreen access
Add 'Subscreen Scripts', which run while the engine active subscreen is open. Add ZScript types 'subscreendata', 'subscreenpage', 'subscreenwidget'
Relevant changes:
- feat: subscreen scripts, ZScript subscreen access
cb2d6b521
- feat: 'subscreendata' datatype implementation
64026507c
- feat: 'subscreenpage' datatype implementation
0d049c655
- feat: 'subscreenwidget' datatype implementation for shared vars
5e8e6dcc8
- feat: start 'subscreenwidget' datatype implementation for type vars
57649a824
- feat: more 'subscreenwidget' datatype implementation for type vars
9a8334236
- feat: more 'subscreenwidget' datatype implementation for type vars
5c0c1a9ef
- feat: finish 'subscreenwidget' datatype implementation for type vars
252033a21
- fix(zc): fix a couple subscreen drawing issues
e82b08532
- refactor: start implementing subscreen scripts
e19d0fda1
- feat: subscreen scripts, ZScript subscreen access
- lightbeams now respect solid ffcs/pushblocks (compat QR'd)
8555d9430
- 'Mirror (Custom)' combo type for customizable reflection
5c06dfcf4
- Spotlight combos work on ffcs, fixed lightbeam-ffc hitboxes
fd039e808
- Subscreen widgets now have unique labels, and display coordinates
4553336cd
ZScript can get a subscreen by it's label. Display coordinates are the coordinates that make up the bounding box rectangle for a widget.
- change grid-snapping on FFCs, blue squares, item square, etc
c4f28895e
Now, these all snap to the half-grid by default, but do not snap to the grid while 'Shift' is held.
- new DMap editor behavior where titles are no longer limited to 20 chars and intro strings use a string table dropdown
6bd8a9acb
Player
- add command "-create-save
" cc459c65b
- remove encoding layer for save files
a0c81ae88
Just like the previous work to remove the encoding layer for qst files.
Previous save files can still be read, but when next saved will no longer be encoded.
Should be a tad faster to read and write, especially reading in bulk as the title screen no longer needs to read the entire file to decode, when it only needs the first part of the file.
Also changes save file writing to disk to instead write to a temporary and move to the destination when done. This may prevent a source of save file corruption.
Editor
- 'Highlight Current Layer' option, when enabled dithers out non-active layers.
69267fb51
- "Open Tile Page" now saves which page was last opened
f6f3090e1
- options to control the size and color of the dither when using "Highlight Current Layer"
08be9cd24
- added cset to the autocombo preview, made autocombo engravings in the combo list draw over the selector
466c7b5ba
- added a popup when using an invalid autocombo explaining why it's invalid
da634dba1
- added a "Connect to Edge" flag to certain autocombos, changing how they interact with the edge of the screen
7e0ddb89a
- quick map view hotkey, 2x and 4x map scale
98ad766b7
- double click in text procs selects all text
d7f12e957
- option for tooltip highlight color (instead of pink hardcoded)
0036f21c1
- reworked double click in text procs to select by word
a3bfa4a75
- checkerboard background option for invalid data
39549c142
- changed the default size of some subscreen widgets to make them easier to grab in the editor
fd74a7a18
- dragged items in the subscreen editor can be snapped to the grid with ctrl
03274b2d8
- 'File->Load Tileset' to start a new quest from a tileset
211e53bff
- subscreen wizards for generating item grids and counter blocks
365e95fd2
- "connect to solids" flag for basic and relational autocombos
a28a3efa7
ZScript Standard Library (std.zh)
- add 'SF_LAST', convert SF_ constants to enum
053b63911
ZScript
- 'auto' variable declarations
1b06c63ea
- 'sprintf' will resize the buffer if it is too small.
bc9fc80f8
Visual Studio Code Extension
- update keyword highlighting
2dad50771
Web
- migrate to new database manifest and use CDN
5c823a081
- Quests and associated music are now hosted at data.zquestclassic.com, via DigitalOcean's CDN. This should make downloading faster.
- Add preloads for the manifest and the wasm
New format for quest manifest:
- Supports multiple releases of a quest (creating a new release each time the contents have changed). Currently always shows the latest, but when a save slot is first created it locks to that version. Later, will add a way to upgrade/alert user that there is a new version for an existing save
- Add an approval bit, so we can be granular about what quests are published and playable in the web version
Drive-by bug fixes:
- bug preventing saving files (see 2803f8 and 98f366)
- bug preventing editor from persisting qst file due to missing filesystem sync
- bug preventing copy/download browser local files from showing when user opts out of mounting a directory
- (for all platforms) bug that changes
.sav
files to use a relative path (to the configured quest directory) for the associated qst file, instead of an absolute path. Save files were portable before because of some non-trivial magic when resolving a qst path, but this makes it more explicitly portable
- reduce amount of preloaded data
24e1eee5c
zc.data is 5 MB now, instead of 15+
Bug Fixes
- active global script double-running due to warp script check
28d9aaf3d
- wrong 'maxdigits' on old subscreen counters
8c4b2b9b7
- fixed memory leak when changing enhanced music tracks
c9bcdb22a
- favorite combos corruption when loading 1.92 or older quests
cca598afc
- some small errors related to subscreens/subscreen scripting
d2721853c
- [linux] use /var/tmp instead of /tmp for save-then-move
2803f8fcb
/tmp is for files that are not expected to persist. When running under flatpak, a tmpfs is mounted to /tmp, so we cannot move files from that to a real physical drive. This resulted in saving failing.
/var/tmp is the better choice, since files there are expected to persist and so will always be a physical drive.
- [linux] for flatpak, create tmp file in app directory
98f366eda
- moveflags not set correctly for pre-2.50 enemies
58d73e0cf
- replays depending on wrong moveflags
8c359cdb3
not sure of a better commit title
- handle empty init data delta, which is when no change is made
ecb6e1bd7
- fix dmap title corruption
189d34c1d
- use correct subscreen font for PROP type
2bd4f84be
Player
- pushblock solidity inconsistency
58ea254ad
- oddities with pushblocks and pits/water
54f0de9a7
- sidewarps at edge of map not working with walk-through-walls cheat active
b4cc7cbb6
- Screen 0x80+ 'safe return point' bugginess
b53ee67ef
- 'Magic Containers' cheat not updating max magic soon enough to refill
7f9ee156d
- bugginess with push flags on 'Push (Generic)' combos
f10def353
- Oddity with swords/spin attacks not properly hitting triggers
ae7bf3e44
- remove accidental code that resulted in less precise sin even outside replays
0545938cf
- incorrect value for cos(90) in replay mode
2d46cdd1e
- fixed unresponsive input in SCC menus
e394d09cd
- fixed line heights after drawing tiles to strings with SCCs
f05923d8c
- check if A wpn slot when doing bomb deselect
9bc8776cb
This is a potential fix for a bug that prevents the sword/A slot from working after using the last bomb. The bug is very difficult to reproduce, so not certain to be the fix.
- Optimize light beams to be a loooooot faster
258029d87
- prevent crash when gamepad disconnects while configuring
761ab2c57
- handle trailing slash in quest_dir cfg option
06cd618af
Editor
- 'esc' choosing 'yes' in 'Really want to quit?' popup
f683887dd
- sanitize quest title for package name
e64f888d2
- allow spaces in package name
87519c7ea
- fixed crash in combo wizard for signposts
dd826371d
- fixed bugged inner bottom corner in DoR autocombo
22817644a
- right clicking autocombo combo panes no longer resets cset to 0
6300f4d89
- clearing an autocombo in the editor also clears args and flags
b71f9a3dc
- combo aliases with layers now flag layer screens valid
e09d0e3f9
- fixed out of bounds array access with the drawing mode menu
f8f4ea09b
- hopefully fixed inconsistent DoR autocombo behavior
ae6d73cd2
- improved DoR autocombos connecting with the edge of the screen
dea3b0e1a
- filter invalid characters from test init data cfg header
25f477fd8
- made selecting a favorite combo update the drawing mode dropdown
d5c1183c4
- reduced information on the autocombo preview in compact mode
8eef7f843
- normalize path component for test init data cfg header
eaa537d99
- fix several issues with the 'default.qst' subscreens
8e9d475bc
- fix autocombo height change not being treated as a list command
de70ed253
- made autocombos preview correctly with the combo brush
88ef45f62
- fixed combo pools being able to fill the same combo multiple times
c0c0f6d2b
- layer visibility checkbox for layer 0
b51c89ce7
- fixed layer 6 highlighting and overhead combo drawing
b55a98696
- fixed "view map" solidity drawing
9de52adc0
- correctly load parts of old qst when grabbing tiles
f4ed68578
- sfx data corruption due to improper struct initialization
be96107dc
- fixed copy/paste hotkey in the string editor and crash when editing absurdly long strings
e0aa4ba60
- liquid combo wizard mod sfx off by 10000
1c0399ff2
- moved some resizing functionality from the move arrows to resize arrows in the subscreen editor
a72d22a04
- fixed subscreen wizard window titles not updating
03e600092
- fixed crashes when previewing layer solidity and incorrect layered solidity drawing
e78b6ecbe
- copy over assets folder in packager
feab68e41
ZScript
- typechecking error related to arrays of class objects
e981a6591
- fixed paldata mix() not flagging changed colors as used
7cb103ba6
- fixed incorrect argument ordering in DrawTiles() and erroneous error logging in serveral drawing functions
ff7752406
- fixed incorrect max count for user objects
d571f7688
- paldata objects not clearing properly on init
13a78f04e
- generic script local arrays and '->Own()'ed objects bugging out on 'Continue'
850fca401
ZUpdater
- use headless mode when run from launcher
1f91452cd
Web
- avoid double save when using the quick-load feature
2e2fb45da
Documentation
- move packaging_quests.md to packaged docs
b5467ee10
ZScript
- made note of rotation arguments for PutPixels()
f31a9e75f
- webdocs for paldata and correction for PutPixels()
0a94ab06c
Build
- move allegro legacy to third_party
7066aaec7
- move loadpng to third_party
faf8af981
- delete include/loadpng/loadpng.h
6a03d57cb
- move algif to third_party
d3c85c763
- move al5img to src
7b8ebe4d3
- move aldumb.patch to third_party
f9d885dbd
- include licenses in package
c7a2a13a3
- add include to fix missing atoi on VS2022
8ea837e46
- [mac] 'ZQuestClassic.app' -> 'ZQuest Classic.app'
0c137af69
Web
- upgrade to emscripten 3.1.45
b428714d2
- rename workbox-config.js to workbox-config.cjs
3602a7233
- update dependencies
97203e923
Chores
- update .mailmap
8c87d92ec
Refactors
- extract legacy encoded reader for qst to try_open_maybe_legacy_encoded_file
9b5c4579f
- removed leftover references to favorite combo aliases
8a122dd40
- use transform matrices for render tree
badeba084
The previous adhoc system supported translation and scaling in a very broken way, making it impossible to construct a non-trivial render item hierarchy.
Now it uses proper transforms matrices. Implemented with dirty flags - each render item has a world matrix (and inverse, for mouse lookups) that only update when the underlying transformations change (or one of its parents)
- add TabBuilder gui class
a9e768c99
- gamedata and user_object stuff, script '->Own()' handling
76a8c3d2f
Player
- only check already loaded saves for 4th qst red easter egg
8362c1e93
Otherwise, it takes noticeable time to load every save file when the file select screen loads.
- move some things from .zmod to be hardcoded
103242d4d
- remove module info/loading from menu
6d27582d0
- remove classic_zelda.dat
e1d9bd937
ZUpdater
- extract getting next release and installing to functions
6346d4838
- [win] use curl and json libs instead of python
765ab0322
- use zupdater binary instead of python in launcher
20528f43a
- [win] use native library for unzip
bcf1582dc
zupdater is now Python-free for Windows.
Tests
- update playground_cutscene_trigger.zplay
9ef7f02fb
- upgrade puppeteer to 21.1.1
b8476fd2e
- re-enable part of updater test
1e11349cb
Web
- run test_zeditor.py and test_zplayer.py
bb237a671
CI
- fetch full history when building to generate nightly changelog
0389cd277
- fetch full history when building web test
22aee7c8f
- use correct variable for release tag in sentry debug upload
cfdeef5b9
- use Release instead of RelWithDebInfo for windows test, for caching
000548dcf
- use sentry-cli 2.20.6 instead of latest, to fix debug info upload error
3b862dda7
- disable sound for linux replays
0c6b1c77e
install_sound
randomly starting failing in CI. - create web.zip and upload to GitHub release
ffb2f56cf
- set concurrency for release workflow
335bc90c1
- trigger website delpoy on release
d8cbf92e1
- add --ignore-missing to sentry set-commits command
fdf2059e9
- pull git lfs objects for packaged resources
4a5c80d12
- create cron job to update database daily
348cb03fb
Misc.
- add script for expanding ZASM opcodes/registers en masse
6f8ca315a
- update zasm expansion script to handle name lists from file
820a5978f
- package changelogs for recent alphas, and include nightly changes
c67dc4d1a
- update GitHub org
f5f1591cf
- fix transparency on some cave tiles in the default quest
2cbfecefa
- improve parser timeout handling
5ebd2423f
- update default.qst (add auto combos)
ec1a38337
- log error when file move fails
d52938c9d
- add AUTHORS file
008738d7a
- rename editor exectuable from zquest to zeditor
b34503993
- support lists via * for changelog markdown parser
e7e7a7aa9
Player
- create
quests
subdirectory for qst filese5c9c2b5a
- auto open file select dialog for new game
57afca898
Editor
- increase size of 'Wizard' combo editor button
51bc46e1b
Visual Studio Code Extension
- publish 1.0.7
e7f9e0ec5
ZLauncher
- use new program names
9f51c900a
Web
- rename from Zelda Classic to ZQuest Classic
a37ec4ce8
Sectioned Changes
Relational Combos Update
Relational Combos Update
The old "Relational" and "Dungeon Carving" modes have been replaced by a new drawing mode that can handle various relational drawing behaviors. Alongside this, favorite combos list has been expanded and improved to make designing screens faster than ever before.
Autocombos
The Autocombo, similar to the "Alias" and "Combo Pool" drawing modes before it, adds a list of user defined patterns which are used for relational drawing. Each autocombo has a set of combos used for the pattern, a combo for erasing from the pattern with right click, and a display combo which affects how it will appear in the editor for user convenience. They can also auto generate a pattern from a default arrangement of combos like how the older drawing modes worked, but do not need use combos placed in that order.
Unlike most other features, autocombos can read and modify combos on adjacent screens with the "Cross Screens" flag.
Autocombo behavior can be selected from the following 9 types:
- The "Basic Relational" type is a standard relational mode with 4-directional tile awareness.
- The "Relational" type works like the old relational drawing mode with 8-directional tile awareness. It also has a flag to use the old combo layout when generating.
- The "Flat Mountain" type is the simplest of the set, with only 6 tiles representing the corners, sides, and top.
- The "Pancake Mountain" type is for drawing flat topped mountains, formed by drawing the edges and then extruding the side faces downwards.
- The "Fence" type is similar to "Pancake Mountain" but without the combos for extruding sides.
- The "Dungeon Carving" type works like the old dungeon carving drawing mode, drawing 2 tile high dungeon walls. It also has a flag to use the old combo layout when generating.
- The "Complex Mountain" type has you fill in the top layer of a mountain and then fills out the bottoms, backs, and sides with a 3/4 perspective. Unlike the other sets, this one is imperfect and may require some manual correction, but it makes using the hardest mountain sets in common usage far easier.
- The "Positional Tiling" type lets you form a rectangular pattern that it then tiles based on X/Y position within the map. With shift + click you can set where the top-left corner of the pattern is located.
- The "Replace" type lets you set an arbitrary set of before and after combos to replace when drawing. Instead of erasing, right click will reverse the process.
Favorite Combos Expansion
The favorite combos list has also been greatly expanded. It now allows for 9 pages of combos. Right clicking the page selector buttons will create a drop-down allowing you to jump to any page.
It can also now hold entries from any of the four drawing modes. When selecting an entry from a different drawing mode, the current mode will automatically update to match. This should make switching from relationally drawing a screen's layout to placing down large objects as aliases to adding finer details a breeze. Each of the three special drawing modes will have icons drawn over their favorite combo entries, which can be disabled with the "Show Favorite Combo Modes" option in Ect->Options...
.
Lastly, adding favorite combos now respects the AutoBrush setting, making adding large blocks of single combos to the page far quicker.