From e1cce11566b1fe6f0cfd85517617c1c0c6249761 Mon Sep 17 00:00:00 2001
From: Benjamin Auder <benjamin.auder@somewhere>
Date: Fri, 14 Dec 2018 01:01:33 +0100
Subject: [PATCH] Fix two bugs in Ultima isAttackedBy...

---
 public/javascripts/variants/Ultima.js | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/public/javascripts/variants/Ultima.js b/public/javascripts/variants/Ultima.js
index 6883c6f0..ac0cf957 100644
--- a/public/javascripts/variants/Ultima.js
+++ b/public/javascripts/variants/Ultima.js
@@ -386,9 +386,8 @@ class UltimaRules extends ChessRules
 	{
 		// Square (x,y) must be surroundable by two enemy pieces,
 		// and one of them at least should be a pawn (moving).
-		const dirs = [ [1,0],[0,1],[1,1],[-1,1] ];
-		const steps = VariantRules.steps[VariantRules.ROOK]
-			.concat(VariantRules.steps[VariantRules.BISHOP]);
+		const dirs = [ [1,0],[0,1] ];
+		const steps = VariantRules.steps[VariantRules.ROOK];
 		const [sizeX,sizeY] = VariantRules.size;
 		for (let dir of dirs)
 		{
@@ -417,6 +416,7 @@ class UltimaRules extends ChessRules
 							j3 += step[1];
 						}
 						if (i3>=0 && i3<sizeX && j3>=0 && j3<sizeY
+							&& colors.includes(this.getColor(i3,j3))
 							&& this.getPiece(i3,j3) == VariantRules.PAWN
 							&& !this.isImmobilized([i3,j3]))
 						{
@@ -495,7 +495,9 @@ class UltimaRules extends ChessRules
 								return true;
 							continue outerLoop;
 						}
-						// [else] Our color, could be captured
+						// [else] Our color, could be captured *if there was an empty space*
+						if (this.board[i+step[0]][j+step[1]] != V.EMPTY)
+							continue outerLoop;
 						i -= step[0];
 						j -= step[1];
 					}
-- 
2.44.0