From 9dca2c935cebcaa3817b4f926f482f9cad4c5b53 Mon Sep 17 00:00:00 2001
From: Benjamin Auder <benjamin.auder@somewhere>
Date: Fri, 20 Mar 2020 23:17:51 +0100
Subject: [PATCH] Fix bug in sentry attacked detections when pushing lancers

---
 client/src/variants/Eightpieces.js | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/client/src/variants/Eightpieces.js b/client/src/variants/Eightpieces.js
index 81d69d81..9ca85956 100644
--- a/client/src/variants/Eightpieces.js
+++ b/client/src/variants/Eightpieces.js
@@ -761,6 +761,7 @@ export class EightpiecesRules extends ChessRules {
       super.isAttacked(sq, color) ||
       this.isAttackedByLancer(sq, color) ||
       this.isAttackedBySentry(sq, color)
+      // The jailer doesn't capture.
     );
   }
 
@@ -836,6 +837,7 @@ export class EightpiecesRules extends ChessRules {
   // Helper to check sentries attacks:
   selfAttack([x1, y1], [x2, y2]) {
     const color = this.getColor(x1, y1);
+    const oppCol = V.GetOppCol(color);
     const sliderAttack = (allowedSteps, lancer) => {
       const deltaX = x2 - x1,
             absDeltaX = Math.abs(deltaX);
@@ -854,7 +856,7 @@ export class EightpiecesRules extends ChessRules {
         if (
           // NOTE: no need to check OnBoard in this special case
           (!lancer && this.board[sq[0]][sq[1]] != V.EMPTY) ||
-          (!!lancer && this.getColor(sq[0], sq[1]) != color)
+          (!!lancer && this.getColor(sq[0], sq[1]) == oppCol)
         ) {
           return false;
         }
-- 
2.44.0