- `Tileset.animation_slowdown` is gone!
- Actors are now free to animate every move or every two moves, and have
been configured to do so appropriately. This fixes the appearance of
blobs, most noticeably. (Also fixes #36.)
- Actors that are always animated in CC2 are now always animated in LL.
- Lilypads/turtles now bob randomly. More randomly than CC2, even.
- Players no longer appear to be swimming when stepping off of lilypads.
- Invisible walls no longer temporarily reveal themselves when you have
the x-ray glasses (secret eye).
- There's a new option for using the CC2 animation timing, though god
knows why you would want to.
Also expand the blue key MS compat flag to make keys never block
monsters; allow rovers to pass through score flags; and allow
doppelgängers to pause the clock.
Similar to a dirt block, but stores the first item it moves over, dropping it when destroyed and cloning it in a cloning machine. Has ice block/frame block collision. Turns into floor in water. Doesn't have dirt block immunities.
Now reads:
Conducts power (like a 4-way wire). While powered, destroys anything not wearing lightning boots (except dirt blocks)
And when you step on it with lightning boots it conducts power
And it's not on by default if it's just sitting on its own somewhere
e.g.
move a circuit block pointing to a transmogrifier: the transmogrifier stops moving unless it's powered
move it away: it goes back to always-on behaviour
When placed atop an item, you must have that item to enter the tile. When you do, pay the item and destroy the item lock. Also can be placed on top of a bonus, and you must pay that amount of bonus to enter.
Similar to a dirt block, but rolls when pushed. Boulders transfer momentum to each other. Has ice block/frame block collision. Turns into gravel in water. Spreads slime.
Cracked Ice: Turns into water when something steps off of it (except ghosts).
Also had to implement slide_ignores/item_slide_ignores since I needed a way to ignore static aspects of the tile without preventing its functions from being called. there's probably a better way IDK
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.
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.
This fixes an obscure bug where you could redirect a block that was in
the process of sliding off of ice onto floor, because its slide mode had
not yet been cleared.