The following are the changes since nightly-2024-01-14:
Features
Editor
- support multiple palettes in map preview/image export
f207fda3f
Bug Fixes
Player
- still allow for game area to be stretched, ignoring aspect ratio
381583118
- ignore gamepad input when window is not active
646ef8f08
- weird newer movement edge-case
0dd159abb
- opening spacebar map triggering some secret effects on the current screen
c1d9c1dca
- lens unintentionally making enemies sometimes invisible
1a9273955
Editor
- handle quest path/title with spaces in package export
432dfe42c
ZScript
- sanity check for bitmap->isValid() and bitmap->isAllocated()
c07f28f80
The following are the changes since 2.55-alpha-120:
Expand changelog
Features
- Allow disabling resizability of windows (setting in launcher only)
90085dd84
- add 'Script1'-'Script10' shield blockflags, to block specific scripted weapons.
de1cb2b66
- add burn-based light radii for items, to change the glow radius when lit on fire.
5f829d628
- LW_REFARROW, LW_REFFIRE, LW_REFFIRE2 (reflected arrows, fire, fire2)
27c41e1f2
Player
- Custom mirrors can 'block' instead of reflect per-direction
9ce509792
Editor
- Add warnings to combo editor (can detect problems and warn you about them)
05188bddf
- Merge 'Favorite Command' and 'Hotkey' systems
cbb1ee991
Any 'Hotkey' can now be set to a favorite command, and all old favorite commands now have 'Hotkey's. Favorite command buttons will clear upon this update, as the configs have changed.
- Hotkey cheatsheet, open with Shift+?
2f0f07d43
- Item Wizard (Shields)
bcf109db2
- support multiple palettes in map preview/image export
f207fda3f
ZLauncher
- set save folder
0269d0102
- add options for window size, and cap max default window size
47b273d89
[ZLAUNCH] window_width, window_height
in zcl.cfg
Cap max default size to 2x
Bug Fixes
- prevent clock shifts from hanging the program
b379a0ed9
Allegro 5 doesn't use a monotonic clock that ignores suspended time, so day light saving shifts or even hibernating your computer can result in Allegro trying to do so much work to "catch up" that it hangs the program. See liballeg/allegro5#1511 for more.
- shift key input no longer accidentally ignored
c92f096a0
- passive (non-button) items not respecting "Usable as a Bunny" flag
84d7f07e8
- ZScript metadata fields cutting off at semicolons in strings
ab92b22e7
- 'box_out' popups sometimes appearing squished in the upper-left
ced3bfb71
- default bs patra has broken animation
e846caa2f
- newer hero movement ladder polish
172c7a5ef
- fairy npc not despawning when picked up
45dfdd547
- being able to carry objects while swimming, when lift glove isn't swim-capable
d06f44a33
- 'Push (Generic)' combos not properly locking into place on block triggers
80845040c
- deleting subscreens resulting in invalid/crashy data
a29918a05
- arrow key navigation in menus not resepecting hidden items
883c2305c
- prevent 1.90 qst load compat from setting first dmap cont/compass to bad value
f1e3c5bcd
- ZScript access to subscreen elements was missing a 'transparent' color option
96c306004
- zasm metadata not clearing properly when assigning slots
33bb31162
- implement set volume for GME music (spc,gbs,vgm,gym,nsf)
76091a598
- Enemy Flames not reflecting off of shields, even with reflect flag set
2264bb083
- issues with numbers between 0 and -1
1b44e3b2c
- swords not updating properly, sometimes
915670436
- old quest subscreen minimap titles overlapping
dc548320e
- placing flags on layers not marking the layer screen as "valid"
8c74b7296
- ensure file is closed when qst fails to load
c702f24fc
Player
- Music not properly changing when using some warp types (ex. SCC warp)
0aef5384b
- extra pushing allowed per screen
8a798d0dd
- cheats menu being greyed out when it shouldn't be
b24044c87
- new respawn points not accounting for dmap offset
d90410dcd
- initialize fadevolume to avoid undefined behavior
437c27b25
This fixes a bug where music would randomly be silent or extremely loud.
Also, cap the volume used to play music to 255, to avoid ever playing it so loud again.
- set volume correctly when music changes with only fading in or out
9274a675b
For example, if the new music has a fade in frame duration of 0, and the old music has a fade out frame duration of >0, then the new music would incorrectly have its volume stuck at 0%.
- menu bar unaligned with dropdown due to menu using int scaling
f8222be89
- Swim speeds not being saved to save file
2bbf51a02
- spotlights with color setting '0,0,0' or tile setting '0,0' now function
8da01272a
- Allow throwing lifted object without validating cost
498f70f46
- thrown weapons now should hit enemies that they land on
b11265992
- all 'break on landing' weapons should hit enemies/the player that they land on
fed7aab0b
- correctly make qstpath relative to quests dir in "custom_game" dialog
019c880c6
- use correct sav path for -standalone mode
9346ac6a8
- prevent bad module path being set after exiting
3a4e16d4b
- improve main menu responsiveness
5dd96666e
- system menu not closing on reset/quit/etc
049532ccd
- fix 'warp' SCC sometimes not closing the string
7601d2fb7
- use more performant throttleFPS instead of rest in system menu
0de39b360
- remove accidental double compilation for global scripts
f30fd983f
- draw to correct bitmap when showing button clear prompt
6e204d4fc
- minor replay determinism bug for subscr_item_clk (selector animation)
825844706
- only assign save path just before actually writing to disk
603e96444
- call saves_do_first_time_stuff when changing slot qstpath
db4cf98c2
- handle edge case when changing unplayed save file qst
79564453f
- prevent calling dmap script twice in scrolling dmap warp
e8edc34e9
- set previously unset save_t write_to_disk in all places
adca2b376
- not showing error dialogs in title screen, and unbreak -only switch
c32a29d1d
- clear spin state during screen scroll
7ca93107b
This avoid a ghost sword visible during scrolling, and also prevents a nasty bug where the player's action state would be frozen until hit.
- prevent crash in save creation by resetting global vars
2b3c4119d
When a game is loaded, many global variables are initialized to a known state. These variables were not reset when the game ends and returns to the title screen. However, save creation happens to call code that checks the active subscreen pointer, which was invalidated. Accessing this could randomly crash or corrupt the program.
Now, these global variables are reset also just before loading the title screen.
- prevent failing to save after continue
870510c96
- lift glove 'disable item use' not stopping sword SFX from playing
3e6fe6e05
- remember last save slot position when returning to save select screen
a3bc81309
- [win32] invisible hero because of MSVC bug
511934cea
- remember cheat on continue game
99675afa2
- 'Custom Weapon' itemclasses rounding down step speed
8f4b63428
- restore option to scale display to full window size
b618eb983
This broke when the display was fixed to only show at the correct aspect ratio. Default is still as before, but now the "Force Integer Values for Scale" option works again.
- still allow for game area to be stretched, ignoring aspect ratio
381583118
- ignore gamepad input when window is not active
646ef8f08
- weird newer movement edge-case
0dd159abb
- opening spacebar map triggering some secret effects on the current screen
c1d9c1dca
- lens unintentionally making enemies sometimes invisible
1a9273955
Editor
- prevent flickering for minimap tooltip
69948f334
- Tile editor checkboxes not clicking
983a17add
- disable unpack cache to fix tile rotate/flip
fed7b7732
- tile page rclick "insert", "delete" was swapped
0b9bad2a6
- disabling tooltips works again
409abe1ff
- item editor candle text goof
17852c009
- 'Go' in warp dialogs not rebuilding transparency table
d41040b13
- fixed warp ring dialog
1f05880ab
- wrong button focused in zscript compile dialog
41a07b400
- tile editor bugginess
87cd522a9
- Polish numpick dialog, fix new gui focusing
f9852b3f6
- Crash on changing map count
92c190255
- timeout of 0 for parser timeout now acts as "no timeout"
975602f22
- 'File->Exit' not exiting
5db531ab7
- 'Scroll to Combo' on screen rclick being offset
5497092dc
- greyed out pasting in string list
f2440669d
- create test init data relative to qst init, not base init
fadfe7d74
This was originally done this way to avoid changing test init data when the quest's actual init data changed, but that maybe is not as useful as the other approach.
Also very simply fixes the problem of screen data (and other init values) not being properly set.
- autocombo/combo pool/combo alias pages RClick menus being offset
d3e276c4d
- 'Open Tile Page' on combos not using the ORIGINAL tile of the combo
7009db89b
- disable tooltips when hotkey cheatsheet is open
bcae99ea1
- clean up several issues with the warp dialogs
378766362
- options->fonts being broken/inconsistent, not saving changes
cc2cb75cd
- undefined memory write when applying modern quest ruleset
2ed538d97
- lockblock/chest combo wizards not saving 'Use ExState' flag
2a3eb96fd
- some more issues with warp dialogs
e9ab158ae
- warp dialogs not properly previewing negative xoffset dmap map-marked squares
b593e46bf
- solidity preview inaccuracies
723c58ebc
- 'Tools->Combo Flags' bugging out when clicked
53f324ae6
- crash related to 'Scroll to page' for aliases/pools/autocombos
7f8d8236c
- midi edit dialog not showing in new rendering system
7ff03e46b
- handle quest path/title with spaces in package export
432dfe42c
ZScript Standard Library (std.zh)
ZScript
- 'subscreenwidget->PerContainer' not working
9d7c222dc
- al_rest crashing when using debug feature
6058be2ba
- parser configs not working
74a81247e
- issues running destructors
7d0dc5299
- handle rare COMPAREV2 for x64 jit
0fc3edd39
- sprintf giving a wrong error message on %c
180b66fc9
- 'Screen->SetExDoor()'/'mapdata->SetExDoor()' not opening matching doors
88f2ab405
- grab correct value from stack for POPARGS JIT x64
504f87a71
This didn't seem to break anything, but it showed up as a difference when comparing registers from JIT w/ non-JIT.
- Hero->WarpEx not using dmap xoff when setting continue screen
e21ba53d0
- global var initializers not erroring when non-constant
e1b10e2a0
- escape character " not working properly in string literals
a08d4a149
- invalid character errors wrongly occurring for values 128-255
2cfe2e472
- subscreen widgets not allowing SUB_COLOR_TRANSPARENT to be used
77346b0c8
- class function params with same-name as class member not shadowing properly
5659c8ebd
- class/object destructors stack being offset wrongly
79079c766
- fix Audio->SetMusicLoop() truncating decimal values
c6e7c0205
- compiler crash related to invalid array indeces
f3e3f7ecb
- sanity check for bitmap->isValid() and bitmap->isAllocated()
c07f28f80
Web
- use zc-data.nyc3.digitaloceanspaces.com for now
af524e98f
- "Copy URL" in player now uses correct test params
8b5eaf56d
- sync fs when writing save order txt file
e006c07a7
- quick save creation link working again
9e4c8a90f
The quest
gamedata field was inadvertently set to 0 because the save file was prematurely selected before being saved for the first time, which prevented anything in saves_do_first_time_stuff
from sticking.
Documentation
- add a couple missing subscreen widget script docs
f55a272d0
- document DrawTile '-777' rotation behavior
8bfb995e0
- fix typo
9dc086113
- update zstrings.txt to mention the "Insert SCC" button
bd084e245
- fix some issues with the webdocs
569adf358
Build
Refactors
- remove unused 'VSync' option (it didn't do anything)
74bbc05b7
- key files
d0864dc8d
Now work from the folder the quest is in OR the exe is in, and saves to the folder the quest is in. Also cleaned up the code for handling reading key files.
- remove unsupported color_depth option
f827b35bb
- load text files more efficiently
663e4dacf
- don't tint behind dropdown lists (allow skipping dlgs tint)
cb8f87135
- Menus (new sleeker look, much cleaner backend)
df3b5ab5b
Player
- remove unused volume code in read_saves
244b8cad0
- move x64 backend jit code to separate file
f3d40e0b7
- move global inits from init_game to new init_game_vars
c4f5c11ae
- make lamp_paid not static for replay determinism
534d82e91
- remove ZASM debugger from menu
377981e09
You may still activate this with [CONSOLE] print_ZASM = 1
in zc.cfg
, but the option is no longer in the player menu. This will be removed entirely soon - it's so slow it can lock up a computer, and not useful enough to keep around.
We may introduce a proper debugger in the future for ZScript to serve the purpose the ZASM debugger tried to.
Editor
- Clean up Tile/Side/Ring warp dialogs
34b7addff
ZScript
- optimize script lookup by name
9ee5c4ba8
- copy script entry to tempfile quicker
267bd5af2
- manually parse config file, drop al_init
28fe49bc6
Tests
- save replay result file when starting replay
62165c822
- suppress timeout check on frame 0
487351025
- update 'triggers.zplay'
218609b0b
- add '--output' option for zscript tests
ae45b645f
- fix zscript subfolder tests not running (and update)
0e35a067e
- update errors_2_expected.txt
ce9e615a7
- filter out expired test builds in bisect_builds.py
2bdc2354a
- prevent infinite loop when zplayer exits before first frame
a56646b40
- add nargads_trail_crystal_crusades.zplay
08c75565d
- fail replay test if jit cannot compile a script
9ca544889
- fix local webserver when offline
804520e40
- include js script in web replay test stdout/stderr
3c162e5b2
- add umbral_cloud.zplay
0a0826577
- add pageerror listener in run_replay.js
ee98991df
- fail on abort in web replay tests
3b0da67b4
- stop on fatal errors in run_web_version.js
d69ad2aaa
- set write_to_disk in saves_test
297b5433e
- add "frames" and "length" meta fields to zplay
35da8a5eb
- use "latest" version for all playground.qst replays
42b94c785
These replays should be trivial to update as needed, and using no replay compat code makes them far more useful for verifying specific features.
- add link_to_the_heavens.zplay
b1309cc47
CI
Misc.
- Allow scrolling info popups
6fb7e9304
- Remove '(Experimental)' label from FFC solidity
5a4663794
- add 'peekkey()' / 'upeekkey()' local allegro edits
7022b0ee4
- clean up menus, particularly the zc main menu
5ae6e3d64
- Remove whistle delay for new replays
ac0017e2a
- update default fonts to be same between base_config and 'Default:' button
e8b85365d
- help text to indicate use of A1/A2 values on ffc/item editors
599d6f70c
- remove noisy allocation logs
32bf8f42f
Player
- show current frame count when recording and system menu is active
0f4e8a00c
- improve error message when qst title does not match save file
069e15113
- support "latest" for version field in zplay
5870d858b
Editor
ZScript
- internal label errors now prevent compile
1b0d63bfa
- add 'itemdata->LAttributes[]' to access attributes as a full 32-bit long value
83f9d2d03