diff --git a/src/pregmod/widgets/pregmodWidgets.tw b/src/pregmod/widgets/pregmodWidgets.tw index 8160a76068ef3f9203b9696fc77fcac0ada7faab..54b2ac396c35588466e10092b159247aa4458792 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)) {