From 348998e6e224ee7ca2034bf746091aceab7f7f0a Mon Sep 17 00:00:00 2001 From: H.G.Muller Date: Mon, 6 Feb 2017 19:24:38 +0100 Subject: [PATCH] Allow e.p. capture as check evasion The routine NonEvade, which vets move when in check before making them, now recognizes e.p. captures (i.e. diagonal Pawn moves to an empty square) when a Pawn is checking as a valid evasion. --- dropper.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) diff --git a/dropper.c b/dropper.c index f2bf201..ae671ce 100644 --- a/dropper.c +++ b/dropper.c @@ -990,6 +990,7 @@ NonEvade (StackFrame *f) if(f->toSqr == f->checker) return 0; // captures only checker: OK d = dist[f->checker - f->toSqr]; if(d && deltaVec[f->toSqr - f->checker] == f->checkDir && d < f->checkDist) return 0; // interposes: OK + if(f->fromPiece + board[f->checker] == COLOR && f->toSqr - f->fromSqr & 1) return (board[f->toSqr] != 0); return 1; } // king move -- 1.7.0.4