View a summary of what's new in 2.55.
Features
Player
- add option to manually upload single replay file
8842ebd60A new
Replay > Upload single replaymenu option allows users to manually upload individual replay files.
Editor
- implicitly add
<qst dir>/scriptsto include paths1c837533eThis introduces a new convention: place your scripts in a folder called
scriptsnext to your.qstfile, and you'll be able to compile your quest without ever modifying your include paths.
ZScript Standard Library (std.zh)
- add
CheckItemDataScript()to script_runners.zha36568704
Bug Fixes
- gui label wrapping
081f10d97 - remove visual delay when click+dragging on a list
314096ea9 - load music using case insensitive file lookup
63d4cb2b8When loading music, ZC looks for a folder named
music(among others). If a quest places its music inMusic, the music will still be loaded but only on case-insensitive filesystems (such as Windows). Previously, this would often fail on case-sensitive filesystems like Linux and the web. ZC now ignores casing when loading music files across all platforms. - prevent grid widget from possibly hanging CPU
277a5b5e0
Player
- pushed torches not shining
0e395c9cb - correctly check locked chest state for smart screen scrolling
664344bceWhen combos on the next screen are checked for purposes of scrolling, the wrong state flag was being used for locked chests.
- save combos using the wrong attribyte for magic restore percentage
5471281d5 - control scheme using wrong value for quest-specific scheme
e11d88987 - DCounter[] not working for counters >= 32 (the new custom counters)
d3d9bd25d - reset cursor after canceling new file
dcdfe3619The heart cursor was sometimes displaying at an invalid position.
- control dialog crash
aec0881ce - always cancel charging when scrolling
99c60c1b1The QR "Scrolling Cancels Charge" was introduced ~3 years ago as a compat QR, but it was accidentally implemented backwards.
Instead, the QR check is removed so this charging bug is now fixed for all quests. It is highly unlikely that any existing quests relied on this bugged behavior.
- resolve multiple out-of-bounds enemy ID accesses
13216a826This fixes a few potential crashes, including when Digdogger spawns Lanmolas.
- Prevent unmasked segment IDs from indexing
guysbufinfix_coordsby using the localSIZEflagsmember. - Fix off-by-one bounds check in
addenemy_z. - Prevent negative replacement IDs from bypassing bounds checks in
defendNew.
- Prevent unmasked segment IDs from indexing
Disabled In Sideview Waternot working on some item typesce4121515- make bombs explode instead of sometimes just deleting them
5cd443b1cThe 'Break On Solid/Landing' and 'Timeout' weapon flags were simply deleting bombs; they now correctly trigger an explosion.
- for combo triggers, ensure bombs explode
8819a5e76The 'Kill Triggering Weapon' weapon effect was simply deleting the bomb; it now correctly explodes.
- lweapon wind getting confused if more than 1 onscreen
7746ecd34The player would teleport between winds when one died while another was on-screen. Now, the player remembers which wind they are in.
- cores of some enemy types not issuing generic script death events
ffe47245b - 'copycat' trigger sometimes triggering the same combo again instantly
ce6b681db - combo triggers triggering themselves extra times
b1a26f9bb
Editor
- classic / cambria tilesets having a 'pop' in the 'Jump' sfx
ed256404f - 'Move' using bad tile count for weapon sprites' tile usage
ce2781995 - do not clear selected screen on
File > Newefeb9f4c8This dialog can be cancelled, but when doing that the selected screen (including all bookmark screen buttons) was being incorrectly cleared.
- 'Browse Notes' breaking gui on large notes
c31e197cdNow large notes will produce a scrollbar for the preview, rather than breaking the UI.
- use correct max widgets for subscreen pages
9e2d8d0b1The code incorrectly used 256 as the max in some places, but now all places use 8192.
- total subscreens not properly bounded
73650b8a7Previously, you could create an unlimited number of subscreens, which could corrupt the quest file. The limit is now properly capped at 255 per subscreen type.
- scc editor using wrong value for 'goto string' dropdowns
328d4536eIf strings were re-ordered, the list position was being used instead of the string number.
- Under Combo dialog broken for layers
7934637abThe 'map' being used for each layer was off-by-1, causing the dialog to edit the wrong screens when editing layers
ZScript Standard Library (std.zh)
- add std_time.zh back
304455776This file was deprecated in 2.55.4; however, a few things should have been preserved.
- update the correct counter array in
DCounterAdd()fe4fc4ea3 - rename misleading parameter for
NumNPCsOfaeb16b7c2NumNPCsOfrequires theNPC_ID constants, but the function comment wrongly said it expectsNPCT_type constants.
ZScript
- enemy script movement functions wrongly over-accounting for screen edges
4cc1982d2 - Screen->Quad() being unable to use tiles >65519
14364b21e - don't repeat division
2ea8b4bdfWhen the left-hand side is constant (ex:
10 / x), the compiler was emitting inefficient ZASM that repeated the same division twice. The result was still correct, but it was doing extra work. - bad weapon ID bounds check
373b3ba82 - make the
DrawCombo"frame" parameter useful3c2341623It now specifies which frame of the combo's animation to draw. If a negative value is passed, the current frame is used, preserving the legacy behavior.
- improve how
DrawTilewraps around7f701d718When drawing a >1 tall tileblock with
DrawTile, it now wraps multiple rows at the edges similar to combos with Skip Y. - use correct index for
npc->Shield[]aaba8c914Ever since it was added, this field did not divide the index by 10000 so only really worked for index 0.
- bad bool checks for
Audio->PlaySoundEx()andGraphics->MonochromeHue()751ab6923The script engine was incorrectly dividing the bool parameter by 10000, which produces the wrong results when the compiler is configured to emit 1L (rather than 10000L) for the
truekeyword. - itemdata
Counterfields not allowing new counter values2da6aee65The set values were being capped at 32.
Documentation
- specify the "instant" SCC warp effect first does blackout
105ff9cfa
Refactors
Player
- speed up loading replays by 20x
3e93387dbVery large replays could take many seconds to load, which made long save files load slowly.
Also now logging the time taken to load replay files.
Editor
- clean up undercombo dialog based on feedback
906875ae8