Skip to content

2.55.11

Choose a tag to compare

@github-actions github-actions released this 17 Oct 05:30

Download from the website, or at the bottom of this page.

Full Changelog: 2.55.10...2.55.11

Features

Player

  • optimize ORR/ORV/ORR32/ORV32 in x64 jit a9299cf6d

Editor

  • add 'Script Bugfix' option (default on) to new file dialog 689a1d79a

ZScript

  • support Trace(string) d0bc26ecb
     

    When a string is given to Trace(), it now smartly prints that string, same as TraceS would.

  • log error when GetPixel input is out-of-bounds 550a8e955

Bug Fixes

  • refuse large string allocation when loading qst 5d691eb99
     

    Corrupt or newer qst files should never crash (just show an error), but in some cases the loading code can try to allocate huge strings from bad data. Now, refuse to allocate large strings to avoid a potential crash.

  • properly apply 'custom' counter max increases given by starting items 038f51900

Player

  • prevent crash from div-by-0 with enemy misc 069780a0b
     

    Many configurable enemy misc values are used as the dividend in a modulus operation. If these values are set to 0, a crash can happen. The result now is to return 0 (same result as when configured with 1).

  • ignore corrupted enemies in 1.90 or older quests 9d7b69ed7
     

    Somehow, quests saved in old versions could sometimes set invalid screen enemies. Modern ZC has more enemies, so those bad quests were now loading scary new enemies like Ice Wizzrobes where before they might do nothing interesting.

    Now, when loading 1.90 or older quests, any enemy ids that were not possible at the time are now ignored.

  • stop drawing dive items in lens view after pickup 646b41a17
     

    This bug only happened if the Old Special Room Screenstate Detection QR was on.

  • pitfalls + Block Hole flag on same layer as block using wrong next combo d4107e31a
  • handle when save no longer exists with "Reload Last Quest" on e549627f6
     

    Instead of closing the program when the last quest save file cannot be loaded, load the title screen instead.

    Also, store the save path instead of the slot index, since the latter can change when manually adding or deleting save files.

  • do not unselect A button when loading save 8bd1cdc08
     

    A bug in initializing the game resulted in the A button always being unequipped (unless it was forcibly set with a script).

  • cane of byrna sparkles lingering after death if extra dying frame qr is on 7e8cbefc1
  • prevent possible crash in ZCSubscreen::get_item_pos 527bd5610
  • avoid "invalid save slot index" when creating new save e03204a7d
     

    Creating a new save slot could sometimes invalidate all existing save slots (until the program was restarted).

  • tile width/height not working for custom/ice weapons 6ae1a699c
  • wrong combo ID used for some water behavior 931b000b3
     

    When the "New Water Collision" QR is off, the combo type instead of the combo ID was being used to control some behavior (such as the damage amount).

  • pit/water corner cutting (newer movement only) 142811513
  • minimap title requiring map item didn't actually check for item 3c8c6ba16
     

    When "Invisible w/o Map item" was set, the map item wasn't always being checked.

  • falling/drowning issues 43db6651b
     

    Enemies/items/weapons were not using correct hitbox for falling/drowning Enemies/items were immune to drowning in sideview

  • move custom eweapon to lweapon sprite list when reflected 3f1d2a126
  • walk-through-walls not being respected for pit/water scroll check 4c6962b05
  • prevent memory leak from replay steps 9710ef344
  • 'Move' missing from combo page rclick menu ea6d9b559
  • held-up items treated 'Only Held' pickup string flag as 'Always' 127a1b893
  • cutscene trigger combos that allow F6 softlocking on F6 bf6bd6286
  • walking over pits in some cases (made pits more sensitive) ab1d9e238
  • prevent trigger change effect resulting in invalid combo 4ecebc11f
     

    When the combo change for a trigger effect produces a combo with a bad ID (negative or larger than the max), the engine would crash. Now, the resulting combo is clamped to the valid range.

  • allow background to be transparent in active subscreens a4646ab31
     

    When the compat QR "Old Engine Subscreen Quirks" is off, a bug caused the background for active subscreens to never display the playing field even when the subscreen did not have a solid background.

Editor

  • allow item editor to enter larger numbers for the Power field 1e3536e64
  • subscreen editor color selectors not showing cset 12/13 properly 39ed9f4fc
  • improve test mode screen matching d317fb5ab
     

    Take into account the dmap xoff value when selecting the default dmap to use for test mode.

  • prevent test mode from using screens >= 0x80 42aef59c8
  • use correct width for tile anim preview frames 18944f470
  • properly set enemy move flags when saving old quests f84d33e20
     

    Quests older than 2.11 were accidentally clearing enemy move flags if saved in the editor, resulting in enemies not be able to traverse over water or pits.

  • handle all filesystem errors when creating quest package d6ed51fd3

ZScript

  • clear eweapon script when it ends 62257c7c4
     

    When a script ends, the scripting engine is supposed to clear the object's script so that it cannot run again. But a bug prevented that from happening for eweapons.

    Normally that wouldn't matter, but if the weapon was reflected it would then try to run the eweapon script on the newly created lweapon.

    And normally, that would maybe mostly work, but another bug actually caused a crash to happen instead.

    So now eweapons have their script cleared when it ends, and the crash is avoided.

  • prevent crash when drawing to system bitmap render targets a9b8fc7bd
     

    Script draws to the RT_BITMAP0, RT_BITMAP1, etc. bitmaps could result in a crash.

    This regressed in 2.55.9.

  • correctly handle COMPAREV2 in x64 jit 5e35070fa
  • use correct sprite for step in weapon MakeAngular 8ea1dfde5
     

    The wrong variable was being referenced to access the weapon's step value. Instead of using the weapon, it used whatever was last set to a global sprite variable in the scripting engine (which could possibly result in a crash).

  • load initial screen before onSaveLoad global script eae75f591
     

    When the "Use Old Global Init and SaveLoad Timing" compat QR is off, the onSaveLoad global script ran before the initial screen even loaded. That made accessing anything on Screen do the wrong thing.

    Now, this global script can access the initially loaded screen.

Refactors

  • check each file section version for validity 72a6141f0
  • remove date check when loading qst bc7bce33e
     

    The date check had some correctness issues and was kind of complicated, and the explict version checks are sufficient, so it's been removed.

Player

  • use monospace font for text overlay (fps, etc.) 228d45dbf

Editor

  • save test mode replays to "replays/test" folder 1df88bf33
     

    Just to separate from replays for normal saves.

Tests

CI