All right, by
slab, we mean 1/4 of a 3D cube. Each basher swing affects 2 slabs. I won't call the builder bricks slabs then, for clarity.
Then your f5a497b sounds good, until:
The basher should always be cancelled in this case.
In what case? I assume it's extra steps from a builder or more downstepping than the one allowed free downstep per horizontal block of forward basher walking. Or what do you mean with "always" for the basher?
Where there is a step (rather than a slope), the basher [...] continues.
This sounds like: Basher lowering by 1 slab per horizontal cube allows the basher to continue.
In particular, does the basher clear the A slabs here, then fall into the hole C, then clear the B slabs?
+-----------+
|:::::A:::::|
+-----------+-----------+
Bash -> |:::::A:::::|:::::B:::::|
+-----------+-----------+-----------+
|:::::::::::| C |:::::B:::::|
+-----------+-----------+-----------+
|:::::::::::|:::::::::::|:::::::::::|
+-----------+-----------+-----------+I'll have to sleep over this lowering.
In your f5a497b, is your basher's choice (of cancelling or continuing) consistent across all of the following 4 cases?
1. C is a hole (a completely empty slab) as in my diagram in this post.
2. C is a downslope at the earliest quarter step, i.e.,
+
|\
+-+3. C is a downslope at the latest quarter step, i.e.,
+---------+
|::::::::::\
+-----------+4. C is a full slab of earth, but, while our basher is walking across C, a 90-degree-crossing second basher removes C (and removes no other pictured slab than C).
-- Simon