View a summary of what's new in 2.55.
Features
Editor
- CSet now listed in combo pool placement mode
5f8e0243f
ZScript
- add
ReadBitflags
andAdjustBitflags
helper functions5dd91fb81
- add
Flag[]
toScreen
andmapdata
55a92a079
The new
Flag[]
variable is a boolean array of all the flags associated with a screen. This replacesFlags[]
andEFlags[]
, which are more complicated since they grouped bitflags by category and required bitwise operations to access individual flags.// Old bool v = Screen->Flags[SF_ROOMTYPE] & (1 << SFR_SIDEVIEW); // New bool v = Screen->Flag[SFL_SIDEVIEW];
Because of their complexity,
Flags[]
andEFlags[]
never supported writing to it.Flag[]
makes that possible now.Also removes
GetMapscreenFlag
and similar helper functions, as usage was low/non-existent andFlag
totally replaces it. - option to run weapon scripts an extra time during spawn
05a8349f5
This is an optionally enabled scripting QR. It may fix some timing issues, such as a script wanting to make the weapon immune to pits being too late if the weapon spawned ON a pit.
Bug Fixes
Player
- bottom 8 pixels not showing in some cases
72650d38a
For the F6/Active Subscreen/Map/Death script engines, the bottom pixels were being cut off even when showing the bottom 8 pixels is enabled. Some scrolling/end game effects were also impacted.
- qr for strings on layer 6 timing fix
e5660e404
- use proper start screen after reset for test mode + recording a replay
b0e6404d6
- prevent crash on
Game->Reload()
on instant reload88bb05b98
Regressed in 2.55.7
- hover boots duration being halved over pits
b10316964
- don't skip saving game in test mode
67390cc25
Methods of saving the game other than directly via them menu (such as autosave on screen entry, or via scripting) were not saving any data when in test mode. Now, continuing or otherwise reloading the current test mode session will persist those saves.
- don't stop recording in test mode on quit
5ea6451c5
Only the "Continue" option correctly continued recording when ending the game in test mode, while the other options would end the recording and start a new one. Now, it continues as one recording.
"Game > Reset" still restarts the recording in test mode.
- lifted weapon not disappearing on death
e9fa6af37
- subscreen items no longer hidden after collecting triforce
ec94d3636
If the "No Cutscene" flag is checked for the triforce item, collecting the triforce was incorrectly hiding subscreen items indefinitely.
- some drawing commands ignore the
Toggle Transparency
combo animation flagfa4a952ef
- lifted combos follow hero dir properly
591119306
- QR "Bottles can't be used with any maxed counter" being backwards
8e06bddf0
- progressive item / item bundle related crashes
44e943192
- prevent softlock when enemy falls into pit after eating hero
437a350d4
- add compat QR for rope enemy speed
9b7d12741
2.55.6 added the ability to configure rope enemy speed using misc attribute 10. However, this broke some earlier quests, so now there is a compat rule to suppress this new configurable behavior.
- prevent crash when using Kill All cheat on Patra
48ac235a1
- bottom 8 pixels not rendering cheat-layers (ex.solidity)
c371aa924
- remove some noisy traces in hero logic
35b580d50
- use black for drawing empty space in active subscreen
935d2301c
This is related to the bottom 8 pixels feature.
- bombs that are auto-lifted being immediately thrown
236651e80
This regressed in 2.55.8.
- stop softlocking when using hookshot into slope
f328d8503
- conveyors not properly forcing direction between movements
29eca4d89
- conveyor force dir / spin issue
f750764df
- prevent crash when using whistle item with no sound
a89819220
- prevent scrolling over liquid/pits that should drown/fall you
b27da2ea2
- lift sound not played when re-lifting weapons
22b43ef37
- prevent rare crash related to creating hero weapons
ac8c8472a
- liftable bomb's explosions no longer liftable
03098c715
- thrown weapons not properly rotating
5c086363e
- weapons no longer "die/stop on solids" when already dead
6f381af80
- prevent crash when accessing invalid enemy data
e4b16c858
Editor
- prevent crash when generic script data length is 1
5a586644a
- Clicking snapshot option in menu capturing the menu itself
0b8d4ddba
- Update cambria tileset
96209feca
- Fix falling / drowning animation for enemies
- Bomb flower combos interact w/ weapon triggers
- Add shatter animations for pots when slashed
- Fix solidity for combos 3916 and 3917
- Make fairies catchable with the Bug Net
- Gave the Bug Net and use sound
- Fix CSet errors in Door Combo Sets
- Fix accidentally uncombo'd tiles
- Fix locked door combos using the lock block combo type, which can conflict with engine locked doors
Step->Effects
combo wizard 'Damage' off by *10000a3456838f
- View Map cutting off screens in fullscreen mode
132aaf8c6
- changing resolution in View Map via space bar
283159dca
Changing resolution via Space resulted in a bug where the viewer would incorrectly use the wrong limit for the panning.
- item editor crash on long item name/display name
44284e5c5
- include licenses in package export
53f606ff0
- add '?' buttons for 'Show/Hide' lens layer, to clarify possibly misleading labels
427cf991a
- slash combo wizard not setting sfx properly
67baaeb5a
- Item wizard for various slash->item types not opening with proper values
c00dee004
- preserve items on save when using test init data
027d7657e
- prevent crash when formatting some message strings
062003121
The code that generates the shortened text for each message string for the string editor selector used too small a buffer. Strings that were linked and had an id >= 1000 could potentially crash or corrupt the editor.
- negative values starting with
0.
not working in some textfields6775af6e3
- 'Force Walk' flag missing from conveyor combo wizard
4a13f725d
- .tsv strings import no longer drops last string
019e08715
- prevent rare crash when opening quest
72f304d1a
- prevent data loss when grabbing tiles from quest
b8bc72ae9
- update Cambria tileset
433ab115c
- Fix the item bundles unintentionally giving you rupees on pickup
- Fix Stone of Agony having no effect
- Fix Combo 3638 not being a torch combo
- Fix the Spooky House palette having palette cycling
- Fix various example screens using the wrong trees
- Fix auto combo #50 not working properly
- Add dense forest autocombos
- Change Cave (Walk Down) combos to Stair combos. Making the Cave (Walk Down) combo animation work properly would require making the transparency color black, which we don't feel is ideal for this tileset
ZScript Standard Library (std.zh)
AdjacentCombo
now returns -1 for invalid combo position8306eabed
ZScript
- use correct DrawOrigin for bitmap draw functions, RT_SCREEN
137773a33
lweapon->isValid()
now accurate for lifted weapons6df1f9c5f
eweapon::Explode
works nowa2da1c392
This was incorrectly using the reference for lweapon, and likely could result in crashing.
- correct index for
npcdata::BFlags[]
,npc::Behavior[]
66c49382e
These arrays were incorrectly bounding the given index between 0 and 4, but these arrays have 16 values. That bounding is removed, and now an error is logged if accessing an out-of-bounds index.
- always deallocate local arrays when script ends
f0e3cb03e
When the bugfix QR
Always Deallocate Array
is off, local arrays are sometimes not deallocated when FFC/item/global scripts end. This can quickly hit the limit for the number of arrays allowed, and results in bad things.If a local array pointer is passed to another script without changing ownership, this QR being off prevents it from being deleted. Otherwise, as long as the calling script stays alive that array remains valid.
There is no known quest that relies on this behavior - so this QR now has no impact and local arrays owned by a script are always deallocated when it ends.
Currently, the appropriate way to keep a local array alive beyond the life of the script that created it is to call
OwnArray
in some other script.https://discord.com/channels/876899628556091432/1373883674361335829
- scripted enemy spawns broken for scripted enemies
bf1b548af
Screen->SpawnScreenEnemies()
would break the script engine if it spawns an enemy that has a script - it caused the calling script to forever callScreen->SpawnScreenEnemies()
once a frame. Although spawning dozens of enemies a second is very funny, this has been fixed. - potential crash when accessing
Game->Suspend[]
out-of-bounds2fa8a4e53
combodata::GenFlags[]
setter no longer brokenb2152d99b
- emit compile error if run function uses >8 parameters
220729b58
Scripts can only be configured with up to 8 values for parameters, but the run function allowed any number of parameters to be defined. This could result in subtly broken scripts.
Declaring more than 8 parameters for a run function is now an error.
Build
- update libpng to 1.6.47, zlib to 1.3.1
d961df8af
Refactors
- read weapon names from zinfo, not the deprecated module system
082c08167
ZScript
- remove
Integer
,Short
,Byte
, etc. functionsc18170369
- add bounds check for
Screen->SideWarpID
,mapdata::SideWarpID
1a7331d9e
- remove
Screen->NumFFCs[]
andmapdata::NumFFCs[]
03c121b91
- remove
combodata::Expansion
3fe03f435
Tests
- add pkmn.zplay for advanced SCC usage
fb51d21a1
CI
- [win] update vcpkg to 2025.03.19
ebe75944a
Misc.
- attach screenshot to crash reports
ea5c02673