github ZQuestClassic/ZQuestClassic nightly-2023-09-29
Nightly 2023-09-29

pre-release13 months ago

The following are the changes since nightly-2023-09-26-2:

Features

  • 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.

Editor

  • 'Highlight Current Layer' option, when enabled dithers out non-active layers. 69267fb51

Bug Fixes

  • 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

Player

  • 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

Editor

  • fix autocombo height change not being treated as a list command de70ed253

ZScript

  • paldata objects not clearing properly on init 13a78f04e
  • generic script local arrays and '->Own()'ed objects bugging out on 'Continue' 850fca401

Chores

Refactors

  • gamedata and user_object stuff, script '->Own()' handling 76a8c3d2f

Player

Misc.

ZLauncher

Web

  • rename from Zelda Classic to ZQuest Classic a37ec4ce8

The following are the changes since 2.55-alpha-118:

Expand changelog

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
  • 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.

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

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

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

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

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

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

Build

Web

Chores

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

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

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

Visual Studio Code Extension

ZLauncher

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.

Don't miss a new ZQuestClassic release

NewReleases is sending notifications on new releases.