Fix illegal-move message on seirawan gating from gated pieces
authorH.G. Muller <h.g.muller@hccnet.nl>
Wed, 28 Dec 2011 13:28:18 +0000 (14:28 +0100)
committerH.G. Muller <h.g.muller@hccnet.nl>
Wed, 28 Dec 2011 13:28:18 +0000 (14:28 +0100)
Entering a gating move hen an already-gated piece left the back rank
as interpreted as a on-gating move, rather than rejected. This because
gating moves with non-virgin pieces were interpreted as non-gating
promotions. The test for true promotions is now done on piece type
rather than virginity.

fairymax.c

index dfa3ea6..5106ae1 100644 (file)
@@ -876,7 +876,7 @@ int main(int argc, char **argv)
                     if(b[L] && (b[L]&16) == Side && w[b[L]&15] < 0) // capture own King: castling\r
                     { i=K; K = L; L = i>L ? i-1 : i+2; }\r
                    if(w[GT&15] < -1) pl[GT&31]++, J+=89729; // promotion to royal piece\r
-                    if(b[K]&32) GT = 0; // non-virgin mover => true promotion rather than gating\r
+                    if((b[K]&15) < 3) GT = 0; // Pawn => true promotion rather than gating\r
                     if(D(Side,-I,I,Q,O,LL|S,3)!=I) {\r
                         /* did have move syntax, but illegal move */\r
                         printf("Illegal move:%s\n", line);\r