diff --git a/src/init/setupVars.tw b/src/init/setupVars.tw
index 6924667cc6c133284715014edcf7fe1286851dcb..a973e2a9379b083cbb9a8d41773eb2e444c9f6b8 100644
--- a/src/init/setupVars.tw
+++ b/src/init/setupVars.tw
@@ -25,6 +25,19 @@
 <<set setup.africaNationalities = ["Algerian", "Congolese", "Ethiopian", "Ghanan", "Kenyan", "Libyan", "Malian", "Moroccan", "Nigerian", "South African", "Sudanese", "Tanzanian", "Tunisian", "Ugandan", "Zimbabwean"]>>
 
 <<set setup.australiaNationalities = ["Australian", "a New Zealander"]>>
+
+/* Nationalities based on $continent value. Note that $continent can be undefined! */
+<<set setup.nationalityPoolSelector = {
+	"North America": setup.northamericaNationalities,
+	"South America": setup.southamericaNationalities,
+	"Europe": setup.europeNationalities,
+	"Asia": setup.asiaNationalities,
+	"the Middle East": setup.middleeastNationalities,
+	"Africa": setup.africaNationalities,
+	"Australia": setup.australiaNationalities,
+	"Japan": setup.asiaNationalities,
+	"Brazil": setup.southamericaNationalities,
+}>>
 /* END Custom Nationalities region filter */
 
 
diff --git a/src/pregmod/widgets/pregmodWidgets.tw b/src/pregmod/widgets/pregmodWidgets.tw
index a871d1db3138a296abb75c3594b14d2370ee1196..91504b61e9add3a7f7e6c62ed82809d55a274a3b 100644
--- a/src/pregmod/widgets/pregmodWidgets.tw
+++ b/src/pregmod/widgets/pregmodWidgets.tw
@@ -988,6 +988,17 @@ extremely pale -5
 	|| setup.whiteAmericanSlaveNames)
 	.filter(sn => !_currentSlaveNames.includes(sn))>>
 <<set _maxTries = 10>>
+<<if _namePool.length <= 0 && setup.nationalityPoolSelector[$continent]>>
+	<<set _continentNationality = setup.nationalityPoolSelector[$continent].random()>>
+	<<for _namePool.length <= 0 && _maxTries > 5>>
+		<<set _namePool =
+			(setup.namePoolSelector[_continentNationality + "." + $args[1].race]
+			|| setup.namePoolSelector[_continentNationality]
+			|| []
+			.filter(sn => !_currentSlaveNames.includes(sn))>>
+		<<set _maxTries -= 1>>
+	<</for>>
+<</if>>
 <<for _namePool.length <= 0 && _maxTries > 0>>
 	<<set _namePool = Object.values(setup.namePoolSelector).random().filter(sn => !_currentSlaveNames.includes(sn))>>
 	<<set _maxTries -= 1>>
@@ -996,7 +1007,7 @@ extremely pale -5
 	<<set _namePool = Object.values(setup.namePoolSelector).random()>>
 <</if>>
 <<set $args[1].slaveName = _namePool.random()>>
-<<unset _currentSlaveNames, _namePool, _maxTries>>
+<<unset _currentSlaveNames, _namePool, _maxTries, _continentNationality>>
 <</widget>>
 
 <<widget "seBirthToIncubator">>