From 74bb91983f33d458b7eba800d56c53d26499892e Mon Sep 17 00:00:00 2001
From: kopareigns <kopareigns@gmail.com>
Date: Sun, 2 Sep 2018 14:09:30 -0400
Subject: [PATCH] HeroSlavesCleanup should finally work properly

---
 src/pregmod/widgets/pregmodWidgets.tw | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/pregmod/widgets/pregmodWidgets.tw b/src/pregmod/widgets/pregmodWidgets.tw
index 8160a76068e..54b2ac396c3 100644
--- a/src/pregmod/widgets/pregmodWidgets.tw
+++ b/src/pregmod/widgets/pregmodWidgets.tw
@@ -1378,9 +1378,14 @@ extremely pale -5
 		s.nationality = hashChoice($nationalities);
 		/* Check for a pre-set race and if the nationality fits, else regenerate */
 		if(s.race && validRaces.includes(s.race)) {
-			while(setup.raceSelector[s.nationality] && !(s.race in setup.raceSelector[s.nationality])) {
+			/* Maximum of 100 attempts */
+			for (var i = 0; setup.raceSelector[s.nationality] && !(s.race in setup.raceSelector[s.nationality]) && i < 100; i++) {
 				s.nationality = hashChoice($nationalities);
 			}
+			/* No success after 100 attempts, so just randomize according to race */
+			if (setup.raceSelector[s.nationality] && !(s.race in setup.raceSelector[s.nationality]) && i == 100) {
+				s.nationality = Object.keys(setup[s.race.toLowerCase().replace(/[ -]/g, '')+'Nationalities']).random();
+			}
 		}
 	}
 	if(!s.race || !validRaces.includes(s.race)) {
-- 
GitLab