Skip to content
Snippets Groups Projects
Commit 5c2089ec authored by Pregmodder's avatar Pregmodder
Browse files

Merge remote-tracking branch 'upstream/pregmod-master' into pregmod-master

parents a1f2d36e db6c8b33
No related branches found
No related tags found
1 merge request!2511Pregmod v1028-5
......@@ -27891,18 +27891,53 @@ window.nationalityToRace = function nationalityToRace(slave) {
slave.race = hashChoice(setup.raceSelector[slave.nationality] || setup.raceSelector[""]);
};
 
window.generateName = function generateName(nationality, race, male, filter) {
filter = filter || _.stubTrue; /* default: allow all */
const lookup = (male ? setup.malenamePoolSelector : setup.namePoolSelector);
const result = jsEither(
(lookup[nationality + "." + race] || lookup[nationality] ||
(male ? setup.whiteAmericanMaleNames : setup.whiteAmericanSlaveNames)).filter(filter));
/* fallback for males without specific male name sets: return female name */
if(male && !result) {
return generateName(nationality, race, false);
}
return result;
};
window.generateSurname = function generateSurname(nationality, race, male, filter) {
filter = filter || _.stubTrue; /* default: allow all */
const result = jsEither(
(setup.surnamePoolSelector[nationality + "." + race] ||
setup.surnamePoolSelector[nationality] ||
setup.whiteAmericanSlaveSurnames).filter(filter));
if(male) {
/* see if we have male equivalent of that surname, and return that if so */
const maleLookup = setup.maleSurnamePoolSelector[nationality + "." + race] || setup.maleSurnamePoolSelector[nationality];
if(maleLookup && maleLookup[result]) {
return maleLookup[result];
}
}
return result || 0;
};
window.isMaleName = function isMaleName(name, nationality, race) {
const names = setup.malenamePoolSelector[nationality + "." + race] ||
setup.malenamePoolSelector[nationality] ||
setup.whiteAmericanMaleNames;
return names && names.includes(name);
};
window.nationalityToName = function nationalityToName(slave) {
const V = State.variables;
const male = (slave.genes === "XY");
 
slave.birthName =
jsEither(setup.namePoolSelector[slave.nationality + "." + slave.race] ||
setup.namePoolSelector[slave.nationality] ||
setup.whiteAmericanSlaveNames);
slave.birthSurname =
jsEither(setup.surnamePoolSelector[slave.nationality + "." + slave.race] ||
setup.surnamePoolSelector[slave.nationality] ||
setup.whiteAmericanSlaveSurnames);
slave.slaveName = slave.birthName;
slave.birthName = generateName(slave.nationality, slave.race, male);
slave.birthSurname = generateSurname(slave.nationality, slave.race, male);
if(male && isMaleName(slave.birthName, slave.nationality, slave.race) && !V.allowMaleSlaveNames) {
slave.slaveName = generateName(slave.nationality, slave.race, false);
} else {
slave.slaveName = slave.birthName;
}
slave.slaveSurname = slave.birthSurname;
if (V.useFSNames === 1) {
if (V.arcologies[0].FSChattelReligionist > 20) {
Source diff could not be displayed: it is too large. Options to address this: view the blob.
......@@ -48,18 +48,53 @@ window.nationalityToRace = function nationalityToRace(slave) {
slave.race = hashChoice(setup.raceSelector[slave.nationality] || setup.raceSelector[""]);
};
window.generateName = function generateName(nationality, race, male, filter) {
filter = filter || _.stubTrue; /* default: allow all */
const lookup = (male ? setup.malenamePoolSelector : setup.namePoolSelector);
const result = jsEither(
(lookup[nationality + "." + race] || lookup[nationality] ||
(male ? setup.whiteAmericanMaleNames : setup.whiteAmericanSlaveNames)).filter(filter));
/* fallback for males without specific male name sets: return female name */
if(male && !result) {
return generateName(nationality, race, false);
}
return result;
};
window.generateSurname = function generateSurname(nationality, race, male, filter) {
filter = filter || _.stubTrue; /* default: allow all */
const result = jsEither(
(setup.surnamePoolSelector[nationality + "." + race] ||
setup.surnamePoolSelector[nationality] ||
setup.whiteAmericanSlaveSurnames).filter(filter));
if(male) {
/* see if we have male equivalent of that surname, and return that if so */
const maleLookup = setup.maleSurnamePoolSelector[nationality + "." + race] || setup.maleSurnamePoolSelector[nationality];
if(maleLookup && maleLookup[result]) {
return maleLookup[result];
}
}
return result || 0;
};
window.isMaleName = function isMaleName(name, nationality, race) {
const names = setup.malenamePoolSelector[nationality + "." + race] ||
setup.malenamePoolSelector[nationality] ||
setup.whiteAmericanMaleNames;
return names && names.includes(name);
};
window.nationalityToName = function nationalityToName(slave) {
const V = State.variables;
const male = (slave.genes === "XY");
slave.birthName =
jsEither(setup.namePoolSelector[slave.nationality + "." + slave.race] ||
setup.namePoolSelector[slave.nationality] ||
setup.whiteAmericanSlaveNames);
slave.birthSurname =
jsEither(setup.surnamePoolSelector[slave.nationality + "." + slave.race] ||
setup.surnamePoolSelector[slave.nationality] ||
setup.whiteAmericanSlaveSurnames);
slave.slaveName = slave.birthName;
slave.birthName = generateName(slave.nationality, slave.race, male);
slave.birthSurname = generateSurname(slave.nationality, slave.race, male);
if(male && isMaleName(slave.birthName, slave.nationality, slave.race) && !V.allowMaleSlaveNames) {
slave.slaveName = generateName(slave.nationality, slave.race, false);
} else {
slave.slaveName = slave.birthName;
}
slave.slaveSurname = slave.birthSurname;
if (V.useFSNames === 1) {
if (V.arcologies[0].FSChattelReligionist > 20) {
......
......@@ -1283,41 +1283,33 @@ extremely pale -5
<<widget "ParentNames">>
<<set _currentSlaveNames = $slaves.map(s => s.slaveName)>>
<<set _namePool =
(setup.namePoolSelector[$args[0].nationality + "." + $args[1].race]
|| setup.namePoolSelector[$args[0].nationality]
|| 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>>
<<set $args[1].slaveName =
generateName($args[0].nationality, $args[1].race, $args[1].genes === "XY", sn => !_currentSlaveNames.includes(sn))>>
<<if !$args[1].slaveName>>
/* we ran out of names ... How? */
<<set _maxTries = 10>>
<<for _maxTries > 0 && !$args[1].slaveName>>
<<set _continentNationality = setup.nationalityPoolSelector[$continent].random()>>
<<set $args[1].slaveName =
generateName(_continentNationality, $args[1].race, $args[1].genes === "XY", sn => !_currentSlaveNames.includes(sn))>>
<</for>>
<</if>>
<<for _namePool.length <= 0 && _maxTries > 0>>
<<set _namePool = Object.values(setup.namePoolSelector).random().filter(sn => !_currentSlaveNames.includes(sn))>>
<<set _maxTries -= 1>>
<</for>>
<<if _namePool.length <= 0>>
<<set _namePool = Object.values(setup.namePoolSelector).random()>>
<<if !$args[1].slaveName>>
/* give up, duplicate name is fine I guess */
<<set $args[1].slaveName =
generateName($args[0].nationality, $args[1].race, $args[1].genes === "XY")>>
<</if>>
<<set $args[1].slaveName = _namePool.random()>>
<<unset _currentSlaveNames, _namePool, _maxTries, _continentNationality>>
<<unset _currentSlaveNames, _maxTries, _continentNationality>>
<</widget>>
<<widget "NewChildName">>
/* thanks surname setting, for making me do this */
<<set $args[0].birthName =
(setup.namePoolSelector[$args[0].nationality + "." + $args[0].race]
|| setup.namePoolSelector[$args[0].nationality]
|| setup.whiteAmericanSlaveNames).random()>>
<<set $args[0].slaveName = $args[0].birthName>>
<<set $args[0].birthName = generateName($args[0].nationality, $args[0].race, $args[0].genes === "XY")>>
<<if $args[0].genes === "XY" && !$allowMaleSlaveNames && isMaleName($args[0].birthName, $args[0].nationality, $args[0].race)>>
/* grab a female name for the slave name instead */
<<set $args[0].slaveName = generateName($args[0].nationality, $args[0].race, false)>>
<<else>>
<<set $args[0].slaveName = $args[0].birthName>>
<</if>>
<</widget>>
<<widget "AgePCEffects">>
......
......@@ -389,6 +389,14 @@ Experimental male pronouns are currently @@.red;DISABLED@@. [[Enable|Options][$d
<</if>>
<br>&nbsp;&nbsp;&nbsp;&nbsp;//Apply Backwards Compatibility after changing to update slave's pronouns. Not all scenes support male pronouns and this is not yet incorporated into the lore or mechanics.//
<br>
<<if $allowMaleSlaveNames>>
Male slave names are currently @@.cyan;ENABLED@@. [[Disable|Options][$allowMaleSlaveNames = false]]
<<else>>
Male slave names are currently @@.red;DISABLED@@. [[Enable|Options][$allowMaleSlaveNames = true]]
<</if>>
//This only affects slave generation and not your ability to name your slaves.//
<br><br>
''INTERSECTING MECHANICS''
<br>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment