This seems to match how CC2 actually works, and it fixes the replays for
the CC1 levels BLOCK BUSTER, THE PRISONER, CATACOMBS, and GOLDKEY.
Unfortunately, it also regresses ON THE ROCKS, GRAIL, and ALPHABET SOUP,
and I do not know why. I'm not even sure why it fixes CATACOMBS and
GOLDKEY. It makes a mess of force floor handling with mixed results.
It's also some 40% slower, which is not ideal.
I doubt I'll revisit this particular branch, since it's the sort of mass
code rearrangement that breaks everything, but I'm keeping it for future
reference in case I try to revisit this idea.
This fixes a lot of replay sync issues with cloners; in CC2, actors
advance only one frame (1/3 tic) at a time, so when a cloned object
happens to get a turn later in the same tic that it was cloned, it only
ends up 1 frame ahead of everything else. Since actors can only begin
moves on tic-aligned frames, even though it does get where it was going
sooner, it has to wait for a frame before moving, so the advantage
doesn't change anything.
The problem is that LL counts movement in tics, not frames, so that kind
of bonus turn puts the clone an entire tic ahead which can gum things
up.
This is still not perfect, but it's much closer.
It turns out the player explores all their decisions in a very physical
way, which is the real source of block slapping and also means the
player can push blocks before anything else can move, regardless of
actor order.
This fixes at least half a dozen CC1 replays, which is just
mindboggling.
I was right the first time, and I've proven it to myself now. I
originally made the change because I couldn't see any other way to fix
the ICEBERG replay from Steam CC1, but now, I do!
I don't know why I ever thought this was a separate pass; I think it was
just the easiest way to make smooth scrolling work when I first
implemented it on like day 2. Turns out it wasn't ever correct and has
all manner of subtle implications I'll be sorting out for ages.
This does make the turn-based stuff //way// simpler, though.
Collision now uses bits and masks. The main upshot is that ghost and
ice/directional blocks collide much more correctly, now. And turtles
block fireballs.
Also, monsters can now move over "no" signs, and can trample the player
if she's standing on top of an item.
While I was at it, I finished implementing the "bestowal bow", an item
mod (same layer as the "no" sign) that allows any actor to pick up the
item in that tile.