From 3c46a5ddb70287f2a8dd628acbf09d04ea9c9dfd Mon Sep 17 00:00:00 2001
From: JP Guerrero <jeanpatrick.guerrero@gmail.com>
Date: Thu, 8 Mar 2018 21:21:20 +0100
Subject: [PATCH] White pawn fix

---
 src/chess.lua | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

diff --git a/src/chess.lua b/src/chess.lua
index 7d43622..1089da5 100644
--- a/src/chess.lua
+++ b/src/chess.lua
@@ -161,6 +161,26 @@ function realchess.move(pos, from_list, from_index, to_list, to_index, _, player
 			else
 				return 0
 			end
+
+			-- if x not changed,
+			--   ensure that destination cell is empty
+			-- elseif x changed one unit left or right
+			--   ensure the pawn is killing opponent piece
+			-- else
+			--   move is not legal - abort
+
+			if from_x == to_x then
+				if pieceTo ~= "" then
+					return 0
+				end
+			elseif from_x - 1 == to_x or from_x + 1 == to_x then
+				if not pieceTo:find("black") then
+					return 0
+				end
+			else
+				return 0
+			end
+
 		elseif thisMove == "black" then
 			local pawnBlackMove = inv:get_stack(from_list, xy_to_index(from_x, from_y + 1)):get_name()
 			-- black pawns can go down only
-- 
GitLab