From: Benjamin Auder <benjamin.auder@somewhere>
Date: Fri, 7 Dec 2018 21:33:09 +0000 (+0100)
Subject: Fix Magnetic flags update (when rooks are magnetically moved)
X-Git-Url: https://git.auder.net/%7B%7B%20asset%28%27mixstore/images/img/doc/html/index.html?a=commitdiff_plain;h=5bbf449c738b243bdfdecb8b810cdc281d8e9de0;p=vchess.git

Fix Magnetic flags update (when rooks are magnetically moved)
---

diff --git a/public/javascripts/variants/Magnetic.js b/public/javascripts/variants/Magnetic.js
index 03912e7e..4d83fad1 100644
--- a/public/javascripts/variants/Magnetic.js
+++ b/public/javascripts/variants/Magnetic.js
@@ -174,6 +174,16 @@ class MagneticRules extends ChessRules
 			this.kingPos[oppCol] = [-1,-1];
 			this.castleFlags[oppCol] = [false,false];
 		}
+		// Did we move our (init) rooks or opponents' ones ?
+		const firstRank = (c == "w" ? 7 : 0);
+		const oppFirstRank = 7 - firstRank;
+		const oppCol = this.getOppCol(c);
+		move.vanish.forEach(psq => {
+			if (psq.x == firstRank && this.INIT_COL_ROOK[c].includes(psq.y))
+				this.castleFlags[c][psq.y==this.INIT_COL_ROOK[c][0] ? 0 : 1] = false;
+			else if (psq.x == oppFirstRank && this.INIT_COL_ROOK[oppCol].includes(psq.y))
+				this.castleFlags[oppCol][psq.y==this.INIT_COL_ROOK[oppCol][0] ? 0 : 1] = false;
+		});
 	}
 
 	unupdateVariables(move)