From 94c5235baedc8f97b5e39431c3471e0bb871029b Mon Sep 17 00:00:00 2001
From: Arkerthan <arkerthan@mailbox.org>
Date: Fri, 1 Jul 2022 15:23:25 +0200
Subject: [PATCH] fix RA applying contact lenses for slaves with missing eyes

---
 src/js/DefaultRules.js | 23 ++++++++++++++++-------
 1 file changed, 16 insertions(+), 7 deletions(-)

diff --git a/src/js/DefaultRules.js b/src/js/DefaultRules.js
index 87f61c9dc76..b21524e992b 100644
--- a/src/js/DefaultRules.js
+++ b/src/js/DefaultRules.js
@@ -2208,6 +2208,9 @@ globalThis.DefaultRules = function(slave) {
 	 * @param {FC.RA.RuleSetters} rule
 	 */
 	function processEyeColor(slave, rule) {
+		if (!hasAnyEyes(slave)) {
+			return;
+		}
 		// calculate our goals
 		// iris
 		let leftIris = getLeftEyeColor(slave);
@@ -2242,14 +2245,20 @@ globalThis.DefaultRules = function(slave) {
 			rightSclera = rule.sclera;
 		}
 
-		if (
-			getLeftEyeColor(slave) !== leftIris || getRightEyeColor(slave) !== rightIris ||
-			getLeftEyePupil(slave) !== leftPupil || getRightEyePupil(slave) !== rightPupil ||
-			getLeftEyeSclera(slave) !== leftSclera || getRightEyeSclera(slave) !== rightSclera
+		const leftNeedsChange = hasLeftEye(slave) &&
+			(getLeftEyeColor(slave) !== leftIris || getLeftEyePupil(slave) !== leftPupil ||
+				getLeftEyeSclera(slave) !== leftSclera);
+		const rightNeedsChange = hasRightEye(slave) &&
+			(getRightEyeColor(slave) !== rightIris || getRightEyePupil(slave) !== rightPupil ||
+				getRightEyeSclera(slave) !== rightSclera);
 
-		) {
-			setEyeColorFull(slave, leftIris, leftPupil, leftSclera, "left");
-			setEyeColorFull(slave, rightIris, rightPupil, rightSclera, "right");
+		if (leftNeedsChange || rightNeedsChange) {
+			if (leftNeedsChange) {
+				setEyeColorFull(slave, leftIris, leftPupil, leftSclera, "left");
+			}
+			if (rightNeedsChange) {
+				setEyeColorFull(slave, rightIris, rightPupil, rightSclera, "right");
+			}
 
 			cashX(forceNeg(V.modCost), "slaveMod", slave);
 			const lensDesc = [];
-- 
GitLab