View a summary of what's new in 2.55.
Features
Player
- multiple control schemes
9a0182f38You can now configure different schemes for keyboard/gamepad controls, and configure quests to use a specific scheme.
The dialog for binding controls has also been improved.
Editor
- new boxes to enter timed warp time in minutes/seconds
ceb6695ae - improve map view with mouse zoom/drag
2a349cae4 - added 'Combo Pools' / 'Auto Combos' to 'Quest->Graphics' menu
06f1f7f1d - add 'Open Combo Page' to screen right-click menu
dbe015ec5 - subscreen editor option for "Duplicate In-Place"
1931e10fcIf enabled, duplicating a widget will place the new one at the same x,y as the original, instead of shifting it down-right by 1 grid unit.
- right-click the map/screen bookmarks to clear
fd7fc9967
ZScript Standard Library (std.zh)
- add a few functions
dc935961eGetLayerComboE: green effect squareDrainedCounter: counter's current value, accounting for DCounterInputToDir/PressToDir: get direction based on held/pressed inputsDirToInput/DirToPress: sets input based on a direction
Bug Fixes
- scrolling ui panes sometimes blanking out contents
4f8ef4898 - [win] correctly position drive selector in file dialog
f7a8c5bcdWhen the tileset dialog wizard opens the file dialog, it could sometimes incorrectly position some elements, mostly the drive selector.
- build with PulseAudio support; fixes sound in many Linux distros
3965d994f - improve keyboard driver
e030ca6d2 - missing 8 pixels in active subscreen
2f80e5f3bcompat qr for old behavior
- allegro5 render layers having uninitialized transforms
52492d4bf
Player
- prevent drowning when walk-through-walls cheat is enabled
cfada59fc - lift glove action script clearing owned script objects after first frame
3fc7bd3bd - hookshot wedging the player into walls sometimes
43565e06dThis bug has apparently been present since 2.50.2, and already HAD a fix implemented, the fix was just very slightly broken.
- only force grab one held-up item at a time
948012a89If the player collects multiple items at or around the same time, and those items run the "hold up" animation, only the first item would show the holding animation while the others would silently be collected.
Now, the items are collected and held up one at a time. Note that this only applies to "force grabbed" items (ex: settable in scripts via
itemsprite::ForceGrab, or as the result of some triggers). - draw transparency correctly during death
2971b6aedDuring the death animation, the first frame of the redshift did not correctly update the transparency table, so transparent colors appeared darker than they should.
- getting stuck on solid FFCs w/ new movement disabled
2e6e7ad07 - "respawning" to another screen using wrong dmap's xoffset
167bb6409 - properly load files saved as .QST
87bd2424cThe qst file selector when creating a save was always making the file extension lowercased. On Windows and Mac that doesn't matter because the filesystem is case insensitive, but on Linux / web it prevents loading files saved as .QST rather than .qst
- Active shields and Passive Button Roc Items not running scripts
32739ce1cActive shields (either standard or set on a passive button), and Roc Items (set on a passive button) were not running their Action Script when used.
- prevent exploding bombs falling into pits not near them
6239f1bb4This was caused by bombs having a large hit offset when exploding, and a check was bounding the coordinates back into the valid screen area. This caused the bomb to fall into pits along the right edge of the screen.
- prevent player getting hit by some sources during pitfalls
0f11f6771 - Whistle defense not respecting 'Ignore' behavior
816c2ab2c - 'Menu' gamepad button not activating the menu
f128fc2ac - use configured
Halt Duration,Acceleration Factorfor peahats660dce5e2
Editor
- don't incorrectly show '-->' in the String list
45a99ca3eNow it appears when it is the 'Next String' of the string visibly above it in the list, regardless of the base index number.
- quest report
Savebutton not working01d727dc4 - enemy defense list missing 'Switch w/ Player'
9034ff4c6 - correctly show cset/combo type for selected layer
bd242a752The "Show CSets/Types" feature is meant to only show the currently selected layer, but instead it was showing the highest layer (except for when "Show Flags" was also enabled, which prevented the bug).
- prevent rare crash in subscreen Counter Block wizard
33a1c7bfbIf the "Inf Char" field was empty when the dialog closes, the program could possibly crash.
- improve usability of number input fields
04a904c1aSome number input fields limit the number of characters based on the max value; but these required deleting the "0" before it would allow typing the full value, which was clunky.
Now these fields have an additional character space to account for the leading 0.
- remove frame of lag when opening tiles dialog
19d527be7 - lag in tile/combo/alias/etc pages dialogs
3bf07b571 - skip timed autosave when there are no changes
8f632c095Autosave no longer saves if there are no changes since the last save, just like normal saves. This prevents the window from popping up repeatedly when the editor is idle.
- dmap import/export
36a122f1f
ZScript Standard Library (std.zh)
- update ghost.zh to use 128 ffcs instead of 32
35f334d07
ZScript
- using
[]on some types crashing the parsereba6c7b1d - support changing BS-Zelda animation, many scrolling related QRs
bb17908bb - prevent crash in
Game->GetItem()a37ae067e - prevent crash when using empty string with some file functions
b9087daaf - for x64 jit, check CPU supports SSE4.1
2bbee11b7This prevents a crash when the jit is enabled on CPUs that don't support SSE4.1 (~2007 for Intel, ~2013 for AMD).
- printf/sprintf '%f' improperly ending in
.instead of.0for integersd39af768c
Web
- resolve issues with non-US standard keyboard layouts
562efd3ed
Build
- improve packaging, lean on CMake more
4706ad025The
cmake --installcommand should now work on all platforms to install ZC locally.- Updated docs/building.md
- Use CMake's install and cpack features to coordinate what resources and shared libraries are needed at runtime, and for creating distributable packages. This replaces package.py and package_mac.sh
- On Linux, follow conventions: shared libraries go into lib/, binaries go into bin/, and resources go into share/zquestclassic
- For the generated Mac .dmg, add custom background saying "Take this!"
- For Mac app bundles, .dylib files now go into Contents/Frameworks instead of Contents/libs
- vendor libdumb and link statically
d44f0a0f3 - switch to libjpeg_turbo
c05b743a3 - upgrade allegro
c2299147bhttps://github.com/connorjclark/allegro5/compare/my-fork-13...my-fork-14
- vendor zlib
1e3e2dad9 - vendor libpng
b87420dfa - update nativefiledialog
f0d5a9fedThis fixes an issue where on Windows the native file dialog always opened at the most recently viewed folder, instead of using whatever folder ZC requested to open.
Refactors
- speed up bitmap rendering by removing branch
3da9eb561 - speed up draw_tile16_unified
bd469e6f4 - simplify overtile16
138d6de4d - speed up puttile16
ba9da39a0 - speed up drawtile16_cs2
509b54ba9 - speed up overtile8
ad919af18 - cache bitmap used in overtile16_scale
eeb3cc0d6 - use vsnprintf instead of uvszprintf for text rendering
9acde4ca5The Unicode-aware allegro function makes text rendering ~40% slower, but we don't need Unicode here.
- log error reason when failing to open file
f1bf667e2 - log all al_trace output to stdout (except on Windows)
daee43d7a
Player
- stop printing include paths in zplayer
20e2f715a
Editor
- upgrade Under Combo dialog to new gui
ad71fafae