Check out Smess, our featured variant for February, 2025.


[ Help | Earliest Comments | Latest Comments ]
[ List All Subjects of Discussion | Create New Subject of Discussion ]
[ List Earliest Comments Only For Pages | Games | Rated Pages | Rated Games | Subjects of Discussion ]

Single Comment

Interactive diagrams. (Updated!) Diagrams that interactively show piece moves.[All Comments] [Add Comment or Rating]
💡📝H. G. Muller wrote at 12:29 PM UTC in reply to Aurelian Florea from Tue Feb 4 07:37 PM:

I tried to shape up this Diagram a bit: no trailing commas in the promoChoice, and when there is only a single 'choice', don't define it as a promotion set at all, but just write that choice directly in the morph. In addition I set promoZone=0 and maxPromote=0, because you don't want to invoke the standard promotion routine, but rely entirely on the defined morphs.

This still suffers from a problem, though: it seems that promotion sets 4-7 are not recognized properly. Black Pawns do not promote on moving to rank 3, and refuse to move from rank 3 to rank 2. Black Footmen do not promote on moving to rank 2, but they morph to Rook on rank 1 (but the morph specifies that). I still have to figure that out.

I am not sure what you try to achieve here, though. Why the duplication of all the pieces?

[Edit] It appears that the Diagram would only accept promotion sets 1-3, because the set to use was specified by a return code 4+set_number (so 5, 6, 7, ...) from AlterMove, and this return code would be clipped to 3 bits. Return codes 0-4 already had other meanings (like accept, reject, ...) This clipping was used to make codes 8 larger ignore the apostrophe on Betza moves; only codes below 8 were changed to 0 (for 'accept'), for others the clipping would get rid of the 8.

I now changed this to keep the lowest 4 bits, and force all codes below 16 to 0. This allows recognition of the promotion sets 1-9. I am not sure what I broke by doing this, though. There is nothing in the script that could generate return codes that are intended to overrule an apostrophe; this was intended for allowing user-supplied custom scripts for move tinkering. So there could be a variant around that needed such an overruling mechanism, which now is broken because it would have to add 16 to the dersired return code rather than 8.