This simplifies the renderer by having movement cooldowns only work one
way, and thus removes the jank from Steam rendering.
This commit also applies cooldowns for animations at decision time, as
Lynx does, which eliminates a weird special case from their spawning.
Also, Lexy mode now explicitly does not allow an actor to get cooled
twice in one tic. However, this change does make clone machines no
longer be aligned with the thing that pressed the button to clone them,
which is unfortunate.
- Added the active player background
- Added bomb fuses (though LL doesn't use them)
- Added CC2-style double-size blob and walker (though LL doesn't use them)
- Added the rover's directional overlay
- Added custom push animations
- Added custom bouncing heart animations
- Added a puff when opening a door or socket, or revealing a fake floor
- Fixed the rover's animations being a bit mixed up
- Fixed player walk animations occasionally being glitchy
- Touched up the fake floor x-ray tile
- Touched up the canopy x-ray tile
- Touched up the purple ball's shadows
- Touched up the transmogrifier and transmogrify flash
This better matches CC2 behavior and also makes some very common
operations, like grabbing a cell's actor or terrain, way faster.
It also allows me to efficiently implement CC2's layer order when
checking for collisions; thin walls are checked before terrain, and
actors only afterwards. The upshot is that bowling balls no longer
destroy stuff on the other side of a thin wall!
I also did some minor optimizing, mostly by turning loops over an entire
cell's contents into checks for a single layer; Chromium now performs a
bulk test about 30% faster.
Downsides of this change:
- All kinds of stuff may have broken!
- It'll be a little difficult to ever emulate MSCC's curious behavior
when stacking terrain on top of items or other terrain. But not
impossible.
- It'll be far more difficult to emulate buggy Lynx (or maybe it's just
Tile World?) behavior where some combination of cloners and teleports
allow a ton of monsters to accumulate in a few cells. I guess I
wasn't planning on doing that anyway.
- Include links for the stock packs
- Show completion amount and total time for played packs
- Expose a list of all other packs the player has played
- Allow forgetting a pack
- Jump to the current level when reopening a pack
- Highlight the current level in the level browser, and scroll to it
Other gameplay changes/fixes that crept in:
- Ghosts no longer pick up red keys
- Doppelgangers now read their movement directly from players, so no
intermediate variables are necessary
- Spring mining is no longer possible
- Push recursion is detected and prevented
- Bowling balls will also blow up anything that runs into them