code:
globalThis.generateRelatedSlave = (function() {
	let sourceID;

	/**
	 * Generate a very similar relative for an existing slave (for use in Household Liquidators, for example).
	 * @param {App.Entity.SlaveState} slave - the source relative. Note: this slave is NOT changed, calling code is responsible for setting up the source end of the relationship!
	 * @param {string} relationship - the relationship that the new relative has with the source. Currently supports "parent", "child", "older sibling", "younger sibling", "twin", and applicable gender-specific variants of those (i.e. mother/father, daughter/son, older/younger brother/sister).
	 * @param {boolean} oppositeSex - set to true if the new relative should be the opposite sex of the old one (otherwise it will be the same sex).  will be ignored if gender is implied by relationship.
	 * @returns {App.Entity.SlaveState} - new relative
	 */
	function generateRelative(slave, relationship, oppositeSex=false) {
		let relative = prepareClone(slave);

		({relationship, oppositeSex} = interpretGenderSpecificRelationship(slave, relationship, oppositeSex));
		if (relationship === "twin") {
			makeTwin(relative);
		} else if (relationship === "child") {
			makeChild(relative, slave.genes);
		} else if (relationship === "parent") {
			makeParent(relative);
		} else if (relationship === "younger sibling") {
			makeYoungerSibling(relative);
		} else if (relationship === "older sibling") {
			makeOlderSibling(relative);
		} else {
			throw(`Unknown relationship: ${relationship}`);
		}
		if (oppositeSex) {
			if (slave.genes === "XX") {
				changeSexToXY(relative);
			} else if (slave.genes === "XY") {
				changeSexToXX(relative);
			} else {
				// we'll assume futa are their own opposites and don't need tweaking
			}
		}
		generateGivenName(relative); // must happen *after* any possible sex change
		// perform age-related adjustment for all relatives *except* same-sex twins (preserve identicality)
		if (relative.actualAge !== slave.actualAge || oppositeSex) {
			ageFixup(relative);
		}
		setHealth(slave, slave.health.condition);

		return relative;
	}

	/**
	 * Split a gender-specific relationship into a gender-neutral relationship and a base-slave-relative gender toggle
	 * @param {App.Entity.SlaveState} slave
	 * @param {string} relationship
	 * @param {boolean} oppositeSex - original value of oppositeSex (will be copied unchanged if not overridden)
	 * @returns {{relationship: string, oppositeSex: boolean}}
	 */
	function interpretGenderSpecificRelationship(slave, relationship, oppositeSex) {
		/** @param {string} genes - expected genes for this case
		 * @returns {boolean} - whether genes match slave or not */
		function isOppositeSex(genes) { return slave.genes !== genes; }

		if (relationship === "daughter") {
			return {relationship: "child", oppositeSex: isOppositeSex("XX")};
		} else if (relationship === "son") {
			return {relationship: "child", oppositeSex: isOppositeSex("XY")};
		} else if (relationship === "mother") {
			return {relationship: "parent", oppositeSex: isOppositeSex("XX")};
		} else if (relationship === "father") {
			return {relationship: "parent", oppositeSex: isOppositeSex("XY")};
		} else {
			const bits = relationship.split(" ");
			if (bits.length === 2) {
				if (bits[0] === "younger" || bits[0] === "older") {
					if (bits[1] === "sister") {
						return {relationship: `${bits[0]} sibling`, oppositeSex: isOppositeSex("XX")};
					} else if (bits[1] === "brother") {
						return {relationship: `${bits[0]} sibling`, oppositeSex: isOppositeSex("XY")};
					}
				}
			}
		}
		return {relationship: relationship, oppositeSex: oppositeSex};
	}

	/**
	 * Clone the original slave and do some common preparations to it.
	 * @param {App.Entity.SlaveState} slave - the source relative
	 * @returns {App.Entity.SlaveState} - the new relative
	 */
	function prepareClone(slave) {
		let relative = clone(slave);

		// regenerate accent
		nationalityToAccent(relative);

		// fuzz trust/devotion
		relative.devotion += random(-5, 5);
		relative.oldDevotion = relative.devotion;
		relative.trust += random(-5, 5);
		relative.oldTrust = relative.trust;

		// fuzz attraction and energy
		relative.attrXX += random(-20, 20);
		relative.attrXX = Math.clamp(relative.attrXX, 0, 100);
		relative.attrXY += random(-20, 20);
		relative.attrXY = Math.clamp(relative.attrXX, 0, 100);
		relative.energy += random(-20, 20);

		// store old ID and set the new ID
		sourceID = slave.ID;
		relative.ID = generateSlaveID();

		return relative;
	}

	/**
	 * Generate a new given name for the slave (keeping the surname).
	 * @param {App.Entity.SlaveState} slave - the new relative to be renamed
	 */
	function generateGivenName(slave) {
		const surname = slave.slaveSurname;
		const birthSurname = slave.birthSurname;
		nationalityToName(slave);
		slave.slaveSurname = surname;
		slave.birthSurname = birthSurname;
	}

	/**
	 * Finish configuring an identical twin
	 * @param {App.Entity.SlaveState} slave - the new twin
	 */
	function makeTwin(slave) {
		/* twins are physically identical, change only mental traits. */
		randomizeFetishFlaws(slave);
	}

	/**
	 * Finish configuring a sibling
	 * @param {App.Entity.SlaveState} slave - the new sibling
	 */
	function makeYoungerSibling(slave) {
		// reduce age
		slave.actualAge -= random(2, 6);
		slave.actualAge = Math.max(slave.actualAge, V.minimumSlaveAge);
		slave.visualAge = slave.actualAge;
		slave.physicalAge = slave.actualAge;
		slave.ovaryAge = slave.actualAge;
		slave.birthWeek = random(0, 51);

		fuzzPhysicalTraits(slave);

		randomizeFetishFlaws(slave);
	}

	/**
	 * Finish configuring a sibling
	 * @param {App.Entity.SlaveState} slave - the new sibling
	 */
	function makeOlderSibling(slave) {
		// increase age
		const maxDifference = (V.retirementAge - 1) - slave.actualAge;
		const ageDifference = Math.min(random(2, 6), maxDifference);
		fastForward(slave, ageDifference);
		slave.birthWeek = random(0, 51);

		fuzzPhysicalTraits(slave);

		randomizeFetishFlaws(slave);
	}

	/**
	 * Finish configuring a child
	 * @param {App.Entity.SlaveState} slave - the new child
	 * @param {string} parentSex - the sex of the parent
	 */
	function makeChild(slave, parentSex) {
		slave.mother = parentSex === "XX" ? sourceID : 0;
		slave.father = parentSex !== "XX" ? sourceID : 0;

		// select age
		const parentAge = slave.actualAge;
		let maxAge = Math.min(22, Math.max(V.minimumSlaveAge, parentAge - 11));
		let minAge = Math.min(Math.max(8, V.minimumSlaveAge), maxAge);
		if (V.pedo_mode === 1) {
			minAge = V.minimumSlaveAge;
		}
		slave.actualAge = random(minAge, maxAge);
		slave.visualAge = slave.actualAge;
		slave.physicalAge = slave.actualAge;
		slave.ovaryAge = slave.actualAge;
		slave.birthWeek = random(0, 51);

		// child always has less devotion/trust
		slave.devotion -= 10;
		slave.trust -= 10;

		// child always has less boobs/butt than mother
		if (parentSex === "XX") {
			slave.boobs -= 100;
			slave.butt -= 1;
		}

		fuzzPhysicalTraits(slave);

		// daughter has never had children and is likely a virgin
		if (slave.genes === "XX") {
			slave.vagina = either(0, 0, 0, 1);
			slave.counter.birthsTotal = 0;
		}

		randomizeFetishFlaws(slave);
	}

	/**
	 * Finish configuring a parent
	 * @param {App.Entity.SlaveState} slave - the new parent
	 */
	function makeParent(slave) {
		slave.mother = 0;
		slave.father = 0;

		// select age
		const childAge = slave.actualAge;
		let minAge = childAge + Math.max(11, V.minimumSlaveAge - 2);
		let maxAge = Math.min(V.retirementAge - 1, childAge + 42);
		if (maxAge < minAge) {
			throw "Cannot generate parent (slave too old)";
		}
		const targetAge = random(minAge, maxAge);
		fastForward(slave, targetAge - childAge);
		slave.birthWeek = random(0, 51);

		// parent always has less devotion/trust
		slave.devotion -= 10;
		slave.trust -= 10;

		// mother always has more boobs/butt
		if (slave.genes === "XX") {
			slave.boobs += 100;
			slave.butt += 1;
		}

		fuzzPhysicalTraits(slave);

		// mother has had one child (at least)
		if (slave.genes === "XX") {
			slave.vagina = Math.max(slave.vagina, 1);
			slave.counter.birthsTotal = 1;
		}

		randomizeFetishFlaws(slave);
	}

	/**
	 * Fuzz some physical traits so we don't start out identical
	 * @param {App.Entity.SlaveState} slave
	 */
	function fuzzPhysicalTraits(slave) {
		// fuzz boobs/butt
		if (slave.boobs > 200) {
			slave.boobs += either(-100, 0, 100);
		}
		if (slave.butt > 1) {
			slave.butt += random(-1, 1);
		}
	}

	/**
	 * Randomize fetish and flaws
	 * @param {App.Entity.SlaveState} slave
	 */
	function randomizeFetishFlaws(slave) {
		slave.fetishStrength = random(0, 90);
		slave.fetish = either("buttslut", "cumslut", "dom", "humiliation", "masochist", "boobs", "none", "none", "none", "none", "none", "none", "pregnancy", "sadist", "submissive");
		slave.behavioralFlaw = either("anorexic", "arrogant", "bitchy", "devout", "gluttonous", "hates men", "hates women", "liberated", "none", "none", "none", "odd");
		if (slave.behavioralFlaw === "devout") {
			slave.sexualFlaw = either("apathetic", "none", "repressed", "shamefast");
		} else {
			slave.sexualFlaw = either("apathetic", "crude", "hates anal", "hates oral", "hates penetration", "idealistic", "judgemental", "none", "none", "none", "none", "repressed", "shamefast");
		}
		randomizeAttraction(slave);
	}

	/**
	 * Fix age-related factors including physical immaturity, height, pregnancy, and health
	 * Must be after age is recomputed, obviously; should not be needed for twins
	 * @param {App.Entity.SlaveState} slave - the new relative
	 */
	function ageFixup(slave) {
		// adjust for age
		if (slave.physicalAge <= 15) {
			ageAdjustYoungRelative(slave);
		}
		slave.height = Math.trunc(Height.random(slave));

		// reset pregnancy
		WombFlush(slave);
		if (V.arcologies[0].FSRepopulationFocusSMR === 1 && canGetPregnant(slave)) {
			slave.preg = random(1, 38);
			slave.pregWeek = slave.preg;
			slave.pregKnown = 1;
			slave.pregType = setPregType(slave);
			if (slave.vagina === 0) {
				slave.vagina = 1;
			}
		}
		SetBellySize(slave);

		// reset lactation
		slave.lactation = 0;
		slave.lactationDuration = 0;
	}

	/**
	 * When generating a younger relative by cloning an older one (for example, for Household Liquidators),
	 * clamp certain physical parameters of the younger relative appropriately for their physical age.
	 * Generally these adjustments should match the age limiters found in generateNewSlave.js.
	 * @param {App.Entity.SlaveState} slave - the slave to adjust
	 */
	function ageAdjustYoungRelative(slave) {
		/* breast size */
		const origBoobs = slave.boobs;
		if (slave.physicalAge <= 10) {
			slave.boobs = Math.clamp(slave.boobs, 0, 100);
		} else if (slave.physicalAge <= 12) {
			slave.boobs = Math.clamp(slave.boobs, 0, 300);
		} else if (slave.physicalAge <= 14) {
			slave.boobs = Math.clamp(slave.boobs, 0, 400);
		} else if (slave.physicalAge <= 15) {
			slave.boobs = Math.clamp(slave.boobs, 0, 450);
		}

		/* if we've reduced breast size because of age, reapply minimum weight modifiers */
		if (origBoobs > slave.boobs && V.weightAffectsAssets !== 0) {
			if (slave.weight > 190) {
				slave.boobs += 300;
			} else if (slave.weight > 160) {
				slave.boobs += 200;
			} else if (slave.weight > 30) {
				slave.boobs += 100;
			}
		}

		/* if we've managed to *increase* breast size, just put it back */
		if (origBoobs < slave.boobs) {
			slave.boobs = origBoobs;
		}

		/* breast shape - preserve if it would have been valid, otherwise reset to normal (don't reroll) */
		const AllowedBoobShapes = [];
		if (slave.boobs > 250 && slave.boobs < 800) {
			AllowedBoobShapes.push("perky");
			AllowedBoobShapes.push("downward-facing");
		}
		if (slave.boobs > 400 && slave.boobs < 1200) {
			AllowedBoobShapes.push("torpedo-shaped");
			AllowedBoobShapes.push("wide-set");
		}
		if (!AllowedBoobShapes.includes(slave.boobShape)) {
			slave.boobShape = "normal";
		}

		/* voice */
		if (slave.physicalAge <= 16 && slave.voice <= 1) {
			slave.voice = 2;
		}

		/* XX genitals */
		if (slave.physicalAge < 20 && slave.vagina > 1) {
			slave.vagina = 1;
		}

		if (slave.physicalAge <= 13 && slave.clit > 1) {
			slave.clit = 1;
		}

		if (slave.physicalAge <= 13 && slave.labia > 1) {
			slave.labia = 1;
		} else if (slave.physicalAge <= 15 && slave.labia > 2) {
			slave.labia = 2;
		}

		/* XY genitals */
		if (slave.physicalAge <= 13) {
			if (slave.geneticQuirks.wellHung === 2 && slave.physicalAge >= 8 && slave.dick > 4) {
				slave.dick = 4;
			} else if (slave.dick > 3) {
				slave.dick = 3;
			}
			if (slave.balls > 3) {
				slave.balls = 3;
				slave.scrotum = slave.balls;
			}
		} else if (slave.physicalAge <= 15) {
			if (slave.geneticQuirks.wellHung === 2 && slave.dick > 5) {
				slave.dick = 5;
			} else if (slave.dick > 3) {
				slave.dick = 3;
			}
			if (slave.balls > 4) {
				slave.balls = 4;
				slave.scrotum = slave.balls;
			}
		}

		/* teeth */
		if (slave.physicalAge < 6) {
			slave.teeth = "baby";
		} else if (slave.physicalAge < 12) {
			slave.teeth = "mixed";
		}

		/* reset puberty status */
		generatePuberty(slave);
	}

	function fastForward(slave, years) {
		for (let i = 0; i < years; ++i) {
			ageSlave(slave, true);
		}
	}

	/**
	 * Give a slave a realistic chance to activate a sex-linked genetic quirk which her opposite-sex relative was only a carrier for.
	 * @param {App.Entity.SlaveState} slave - the slave to adjust
	 * @param {string} quirk - the sex-linked quirk to test
	 */
	function activateSexLinkedGeneticQuirk(slave, quirk) {
		if (slave.geneticQuirks[quirk] === 1) {
			if (random(1, 4) > 3) {
				slave.geneticQuirks[quirk] = 2;
			}
		}
	}

	/**
	 * Make a slave a carrier for a genetic sex-linked quirk which her opposite-sex relative had active.
	 * @param {App.Entity.SlaveState} slave - the slave to adjust
	 * @param {string} quirk - the sex-linked quirk to test
	 */
	function deactivateSexLinkedGeneticQuirk(slave, quirk) {
		if (slave.geneticQuirks[quirk] === 2) {
			slave.geneticQuirks[quirk] = 1;
		}
	}

	/**
	 * Changes the new relative's sex from XY to XX.
	 * @param {App.Entity.SlaveState} slave - the slave to adjust
	 */
	function changeSexToXX(slave) {
		slave.genes = "XX";
		slave.pronoun = App.Data.Pronouns.Kind.female;

		// activate/deactivate sex-linked genetic quirks
		["wellHung"].forEach((q) => deactivateSexLinkedGeneticQuirk(slave, q));
		["fertility", "hyperFertility", "macromastia", "gigantomastia"].forEach((q) => activateSexLinkedGeneticQuirk(slave, q));

		// alter body proportions
		slave.hips = Math.clamp(slave.hips + 1, -2, 2);
		slave.butt++;
		slave.waist = Math.clamp(slave.waist - random(15, 25), -100, 100);
		slave.face = Math.clamp(slave.face + random(15, 25), -100, 100);
		slave.boobs = either(200, 300, 400, 450, 500, 550, 600, 700);

		// alter genitals
		slave.dick = 0;
		slave.balls = 0;
		slave.scrotum = 0;
		slave.prostate = 0;
		slave.vagina = 1; // no virgins here?
		slave.clit = either(0, 0, 0, 0, 0, 0, 1, 1, 2);
		slave.labia = either(0, 0, 0, 1, 1, 1, 1, 2, 2, 3);
		slave.ovaries = 1;
		slave.preg = -1; // might get pregnant from repop check later on anyway

		// swap attraction
		[slave.attrXX, slave.attrXY] = [slave.attrXY, slave.attrXX];

		// adjust voice and hair
		slave.voice = Math.min(3, slave.voice + 1);
		slave.hLength = 60;

		// rotate hormone balance around a center of 10 (60 becomes -40 and vice versa)
		slave.hormoneBalance -= (slave.hormoneBalance - 10) * 2;

		// regenerate piercings (would be nice to just call generateXXMods here)
		slave.earPiercing = jsEither([0, 1]);
		slave.nosePiercing = jsEither([0, 0, 0, 1]);
		slave.eyebrowPiercing = jsEither([0, 0, 0, 0, 0, 1]);
		slave.clitPiercing = jsEither([0, 0, 0, 0, 0, 1]);
		slave.dickPiercing = 0;
		slave.lipsPiercing = jsEither([0, 0, 0, 0, 0, 1]);
		slave.navelPiercing = jsEither([0, 0, 0, 1]);
		slave.nipplesPiercing = jsEither([0, 0, 0, 0, 1]);
	}

	/**
	 * Changes the new relative's sex from XX to XY.
	 * @param {App.Entity.SlaveState} slave - the slave to adjust
	 */
	function changeSexToXY(slave) {
		slave.genes = "XY";
		slave.pronoun = App.Data.Pronouns.Kind.male;

		// activate/deactivate sex-linked genetic quirks
		["wellHung"].forEach((q) => activateSexLinkedGeneticQuirk(slave, q));
		["fertility", "hyperFertility", "macromastia", "gigantomastia"].forEach((q) => deactivateSexLinkedGeneticQuirk(slave, q));

		// alter body proportions
		slave.hips = Math.clamp(slave.hips - 1, -2, 2);
		slave.butt = Math.max(0, slave.butt - 1);
		slave.waist = Math.clamp(slave.waist + random(15, 25), -100, 100);
		slave.face = Math.clamp(slave.face - random(15, 25), -100, 100);
		slave.boobs = either(100, 200);

		// alter genitals
		slave.vagina = -1;
		slave.clit = 0;
		slave.labia = 0;
		slave.ovaries = 0;
		slave.preg = -2;
		if (slave.geneticQuirks.wellHung === 2) {
			slave.dick = either(5, 5, 6);
		} else {
			slave.dick = either(1, 2, 2, 2, 3, 3, 3, 4, 4, 5);
		}
		slave.balls = either(1, 2, 2, 2, 3, 3, 3, 4, 4, 5);
		slave.scrotum = slave.balls;
		slave.prostate = 1;

		// swap attraction
		[slave.attrXX, slave.attrXY] = [slave.attrXY, slave.attrXX];

		// adjust voice and hair
		slave.voice = Math.max(1, slave.voice - 1);
		slave.hLength = 10;

		// rotate hormone balance around a center of 10 (60 becomes -40 and vice versa)
		slave.hormoneBalance -= (slave.hormoneBalance - 10) * 2;

		// regenerate piercings (would be nice to just call generateXYMods here)
		slave.earPiercing = jsEither([0, 0, 0, 1]);
		slave.nosePiercing = jsEither([0, 0, 0, 0, 1]);
		slave.eyebrowPiercing = jsEither([0, 0, 0, 0, 0, 1]);
		slave.clitPiercing = jsEither([0, 0, 0, 0, 0, 1]);
		slave.lipsPiercing = jsEither([0, 0, 0, 0, 0, 1]);
		slave.navelPiercing = jsEither([0, 0, 0, 0, 1]);
		slave.nipplesPiercing = jsEither([0, 0, 0, 0, 1]);
	}

	return generateRelative;
})();


code:
/** creates an array from App.Data.HeroSlaves that will be similar to the old $heroSlaves.
 * @returns {Array}
 */
App.Utils.buildHeroArray = function() {
	let chunks = [];
	if (V.seeDicks < 100) { // dickless slaves
		chunks.push(App.Data.HeroSlaves.D);
		chunks.push(App.Data.HeroSlaves.DF);
		if (V.seeExtreme === 1) {
			chunks.push(App.Data.HeroSlaves.Dextreme);
			chunks.push(App.Data.HeroSlaves.DFextreme);
		}
	}
	if (V.seeDicks > 0) { // dicked slaves
		chunks.push(App.Data.HeroSlaves.DD);
		if (V.seeExtreme === 1) {
			chunks.push(App.Data.HeroSlaves.DDextreme);
		}
	}
	App.UI.DOM.renderPassage("custom Slaves Database"); // populate V.heroSlaves from user DB
	chunks.push(V.heroSlaves);
	let array =	[].concat(...chunks);
	delete V.heroSlaves;

	for (let hero = 0; hero < array.length; hero++) {
		if (V.seePreg !== 1 && [900089, 900102].includes(array[hero].ID)) {
			array.splice(hero, 1);
			hero--;
			continue;
		}
		if (V.heroSlavesPurchased.includes(array[hero].ID)) {
			array.splice(hero, 1);
			hero--;
			continue;
		}
	}

	const collator = new Intl.Collator('en', {usage: "sort", ignorePunctuation: true});
	return array.sort((a, b) => collator.compare(a.slaveName, b.slaveName));
};

/**
 * @param {App.Entity.SlaveState} heroSlave
 * @returns {App.Entity.SlaveState}
 */
App.Utils.getHeroSlave = function(heroSlave) {
	function repairLimbs(slave) {
		if (slave.hasOwnProperty("removedLimbs")) {
			if (slave.removedLimbs[0] === 1) {
				removeLimbs(slave, "left arm");
			}
			if (slave.removedLimbs[1] === 1) {
				removeLimbs(slave, "right arm");
			}
			if (slave.removedLimbs[2] === 1) {
				removeLimbs(slave, "left leg");
			}
			if (slave.removedLimbs[3] === 1) {
				removeLimbs(slave, "right leg");
			}
			delete slave.removedLimbs;
		}
	}

	if (!heroSlave.hasOwnProperty("birthWeek")) {
		heroSlave.birthWeek = random(0, 51);
	}
	// Nationalities, races, surnames random fill
	if (!heroSlave.nationality) {
		// Check for a pre-set race and if the nationality fits, else regenerate
		if (heroSlave.race && setup.filterRacesLowercase.includes(heroSlave.race)) {
			raceToNationality(heroSlave);
		} else {
			heroSlave.nationality = hashChoice(V.nationalities);
		}
	}
	if (!heroSlave.race || !setup.filterRacesLowercase.includes(heroSlave.race)) {
		nationalityToRace(heroSlave);
	}
	if (!heroSlave.birthSurname && heroSlave.birthSurname !== "") {
		heroSlave.birthSurname = (setup.surnamePoolSelector[heroSlave.nationality + "." + heroSlave.race] ||
			setup.surnamePoolSelector[heroSlave.nationality] ||
			setup.whiteAmericanSlaveSurnames).random();
	}
	if (!heroSlave.birthName && heroSlave.birthName !== "") {
		heroSlave.birthName = (setup.namePoolSelector[heroSlave.nationality + "." + heroSlave.race] ||
			setup.namePoolSelector[heroSlave.nationality] ||
			setup.whiteAmericanSlaveNames).random();
	}
	if (heroSlave.slaveName === -1) {
		heroSlave.slaveName = heroSlave.birthName;
	}
	if (heroSlave.slaveSurname === -1) {
		heroSlave.slaveSurname = heroSlave.birthSurname;
	}
	generatePronouns(heroSlave);
	if (heroSlave.geneMods === undefined) {
		heroSlave.geneMods = {};
	}
	if (heroSlave.geneMods.NCS === undefined) {
		heroSlave.geneMods.NCS = 0;
	}
	if (heroSlave.geneMods.rapidCellGrowth === undefined) {
		heroSlave.geneMods.rapidCellGrowth = 0;
	}

	// WombInit(heroSlave);
	const newSlave = BaseSlave();
	deepAssign(newSlave, heroSlave);
	newSlave.ID = generateSlaveID();
	repairLimbs(newSlave);
	generatePuberty(newSlave);
	newSlave.weekAcquired = V.week;
	if (!newSlave.pubicHColor) {
		newSlave.pubicHColor = newSlave.hColor;
	}
	if (!newSlave.underArmHColor) {
		newSlave.underArmHColor = newSlave.hColor;
	}
	if (newSlave.override_Race !== 1) {
		newSlave.origRace = newSlave.race;
	}
	if (newSlave.override_Eye_Color !== 1) {
		resetEyeColor(newSlave, "both");
	}
	if (newSlave.override_H_Color !== 1) {
		newSlave.hColor = getGeneticHairColor(newSlave);
	}
	if (newSlave.override_Arm_H_Color !== 1) {
		newSlave.underArmHColor = getGeneticHairColor(newSlave);
	}
	if (newSlave.override_Pubic_H_Color !== 1) {
		newSlave.pubicHColor = getGeneticHairColor(newSlave);
	}
	if (newSlave.override_Brow_H_Color !== 1) {
		newSlave.eyebrowHColor = getGeneticHairColor(newSlave);
	}
	if (newSlave.override_Skin !== 1) {
		newSlave.skin = getGeneticSkinColor(newSlave);
	}
	setHealth(newSlave, newSlave.health.condition, 0, 0, 0, newSlave.health.tired);

	SetBellySize(newSlave);

	/* special slaves exceptions to keep siblings sensible */
	if (newSlave.mother === -9999 && newSlave.father === -9998) {
		/* The twins — Camille & Kennerly */
		for (let k = 0; k < V.slaves.length; k++) {
			if (areSisters(V.slaves[k], newSlave) > 0) {
				newSlave.actualAge = V.slaves[k].actualAge;
				newSlave.physicalAge = newSlave.actualAge;
				newSlave.visualAge = newSlave.actualAge;
				newSlave.ovaryAge = newSlave.actualAge;
				newSlave.birthWeek = V.slaves[k].birthWeek;
			}
		}
	}
	if (newSlave.mother === -9997 && newSlave.father === -9996) {
		/* The siblings — Elisa & Martin */
		for (let k = 0; k < V.slaves.length; k++) {
			if (areSisters(V.slaves[k], newSlave) > 0) {
				if (newSlave.birthName === "Elisa") {
					newSlave.actualAge = V.slaves[k].actualAge - 1;
					newSlave.physicalAge = newSlave.actualAge;
					newSlave.visualAge = newSlave.actualAge;
					newSlave.ovaryAge = newSlave.actualAge;
				} else if (newSlave.birthName === "Martin") {
					newSlave.actualAge = V.slaves[k].actualAge + 1;
					newSlave.physicalAge = newSlave.actualAge;
					newSlave.visualAge = newSlave.actualAge;
					newSlave.ovaryAge = newSlave.actualAge;
				}
			}
		}
	}
	if (newSlave.mother === -9995 && newSlave.father === -9994) {
		/* The fruit siblings — Green & Purple Grape */
		for (let k = 0; k < V.slaves.length; k++) {
			if (areSisters(V.slaves[k], newSlave) > 0) {
				if (newSlave.birthName === "Green Grape") {
					newSlave.actualAge = V.slaves[k].actualAge - 5;
					newSlave.physicalAge = newSlave.actualAge;
					newSlave.visualAge = newSlave.actualAge;
					newSlave.ovaryAge = newSlave.actualAge;
				} else if (newSlave.birthName === "Purple Grape") {
					newSlave.actualAge = V.slaves[k].actualAge + 5;
					newSlave.physicalAge = newSlave.actualAge;
					newSlave.visualAge = newSlave.actualAge;
					newSlave.ovaryAge = newSlave.actualAge;
				}
			}
		}
	}

	nationalityToAccent(newSlave);
	return newSlave;
};
/**
 * Marks limbs to be removed when going trough App.Utils.getHeroSlave.
 * Does not actually remove limbs, only use on slaves that go through App.Utils.getHeroSlave!!
 * @param {{}}hero
 * @param {string} limb
 */
App.Utils.removeHeroLimbs = function(hero, limb = "all") {
	if (!hero.hasOwnProperty("removedLimbs")) {
		hero.removedLimbs = [0, 0, 0, 0];
	}

	switch (limb) {
		case "all":
			hero.removedLimbs = [1, 1, 1, 1];
			break;
		case "left arm":
			hero.removedLimbs[0] = 1;
			break;
		case "right arm":
			hero.removedLimbs[1] = 1;
			break;
		case "left leg":
			hero.removedLimbs[2] = 1;
			break;
		case "right leg":
			hero.removedLimbs[3] = 1;
			break;
	}
};

repo_name: Welptard/fc

license: mit


code:
/**
 * @param {App.Entity.SlaveState} slave
 * @param {number | string} [market=0]
 * @returns {string}
 */
App.Desc.lawCompliance = function(slave, market = 0) {
	let r = [];
	const fearList = [];
	const {
		he, him, his, himself, He, His, girl
	} = getPronouns(slave);

	if (V.arcologies[0].FSSlimnessEnthusiastSMR === 1) {
		r.push(FSSlimnessEnthusiastSMR());
	}
	if (V.arcologies[0].FSRepopulationFocusSMR === 1) {
		r.push(FSRepopulationFocusSMR());
	}
	if (V.arcologies[0].FSAssetExpansionistSMR === 1) {
		r.push(FSAssetExpansionistSMR());
	}
	if (V.arcologies[0].FSPhysicalIdealistSMR === 1) {
		r.push(FSPhysicalIdealistSMR());
	} else if (V.arcologies[0].FSHedonisticDecadenceSMR === 1) {
		r.push(FSHedonisticDecadenceSMR());
	}
	if (V.arcologies[0].FSGenderFundamentalistSMR === 1) {
		r.push(FSGenderFundamentalistSMR());
	} else if (V.arcologies[0].FSSupremacistSMR === 1) {
		r.push(FSSupremacistSMR());
	} else if (V.arcologies[0].FSSubjugationistSMR === 1) {
		r.push(FSSubjugationistSMR());
	}
	if (V.arcologies[0].FSRestartSMR === 1) {
		r.push(FSRestartSMR());
	}
	if (V.arcologies[0].FSPaternalistSMR === 1) {
		r.push(FSPaternalistSMR());
	}
	if (V.arcologies[0].FSDegradationistSMR === 1) {
		r.push(FSDegradationistSMR());
	}
	if (V.policies.gumjobFetishismSMR === 1) {
		r.push(gumjobFetishismSMR());
	}
	if (V.arcologies[0].FSPetiteAdmirationSMR === 1) {
		r.push(FSPetiteAdmirationSMR());
	} else if (V.arcologies[0].FSStatuesqueGlorificationSMR === 1) {
		r.push(FSStatuesqueGlorificationSMR());
	}
	if (V.arcologies[0].FSIntellectualDependencySMR === 1) {
		r.push(FSIntellectualDependencySMR());
	} else if (V.arcologies[0].FSSlaveProfessionalismSMR === 1) {
		r.push(FSSlaveProfessionalismSMR());
	}
	if (V.arcologies[0].FSBodyPuristSMR === 1) {
		r.push(FSBodyPuristSMR());
	}
	if (V.arcologies[0].FSTransformationFetishistSMR === 1) {
		r.push(FSTransformationFetishistSMR());
	}
	if (V.arcologies[0].FSYouthPreferentialistSMR === 1) {
		r.push(FSYouthPreferentialistSMR());
	}
	if (V.arcologies[0].FSMaturityPreferentialistSMR === 1) {
		r.push(FSMaturityPreferentialistSMR());
	}
	if (V.arcologies[0].FSPastoralistSMR === 1) {
		r.push(FSPastoralistSMR());
	}
	if (V.arcologies[0].FSChattelReligionistSMR === 1) {
		r.push(FSChattelReligionistSMR());
	}
	if (V.arcologies[0].FSRomanRevivalistSMR === 1) {
		r.push(FSRomanRevivalistSMR());
	}
	if (V.arcologies[0].FSNeoImperialistSMR === 1) {
		r.push(FSNeoImperialistSMR());
	}
	if (V.arcologies[0].FSAztecRevivalistSMR === 1) {
		r.push(FSAztecRevivalistSMR());
	}
	if (V.arcologies[0].FSEgyptianRevivalistSMR === 1) {
		r.push(FSEgyptianRevivalistSMR());
	}
	if (V.arcologies[0].FSEdoRevivalistSMR === 1) {
		r.push(FSEdoRevivalistSMR());
	}
	if (V.arcologies[0].FSArabianRevivalistSMR === 1) {
		r.push(FSArabianRevivalistSMR());
	}
	if (V.arcologies[0].FSChineseRevivalistSMR === 1) {
		r.push(FSChineseRevivalistSMR());
	}

	if (V.policies.SMR.basicSMR === 0) {
		r.push(basicSMR());
	}

	if (V.policies.SMR.healthInspectionSMR === 1) {
		r.push(healthInspectionSMR());
	}

	if (V.policies.SMR.educationSMR === 1) {
		r.push(educationSMR());
	}

	if (V.policies.SMR.frigiditySMR === 1) {
		r.push(frigiditySMR());
	}

	if (V.policies.SMR.beauty.basicSMR === 1) {
		fearList.push(beautyBasicSMR());
	}

	if (V.policies.SMR.beauty.qualitySMR === 1) {
		fearList.push(beautyQualitySMR());
	}

	if (V.policies.SMR.weightSMR === 1) {
		fearList.push(weightSMR());
	}

	if (V.policies.SMR.height.basicSMR === 1) {
		r.push(heightBasicSMRup());
	} else if (V.policies.SMR.height.basicSMR === -1) {
		r.push(heightBasicSMRdown());
	}

	if (V.policies.SMR.height.advancedSMR === 1) {
		r.push(heightAdvancedSMRup());
	} else if (V.policies.SMR.height.advancedSMR === -1) {
		r.push(heightAdvancedSMRdown());
	}

	if (V.policies.SMR.intelligence.basicSMR === 1) {
		fearList.push(intelligenceBasicSMR());
	}

	if (V.policies.SMR.intelligence.qualitySMR === 1) {
		fearList.push(intelligenceQualitySMR());
	}

	r.push(slaveFears(fearList));

	if (policies.countEugenicsSMRs() > 0) {
		r.push(eugenicsSMRsCount());
	}

	r.push(checkForGingering(slave, market)); /* may store a backup of slave and make temporary changes; call removeGingering() to retrieve backup before making changes to slave */

	return r.join(" ");

	function FSSlimnessEnthusiastSMR() {
		slave.weight = jsRandom(-80, 0);
		setHealth(slave, jsRandom(50, 90), 0, undefined, 5);
		return `${He} has been kept on a rigorous diet for sale, has been required to exercise regularly, and has had excellent care taken of ${his} health.`;
	}

	function FSRepopulationFocusSMR() {
		if (slave.physicalAge < V.fertilityAge) {
			if (V.precociousPuberty === 0) {
				slave.physicalAge = V.fertilityAge;
				slave.visualAge = V.fertilityAge;
				slave.actualAge = V.fertilityAge;
				slave.ovaryAge = V.fertilityAge;
			}
		}
		slave.pubertyXX = 1;
		if (slave.ovaryAge >= 42) {
			// corrects menopausal mothers
			slave.ovaryAge = 40;
		}
		if (slave.preg < 1) {
			// "if" needed here to avoid conflicts with already pregnant slaves from repopulation FS arcologies markets
			slave.ovaries = 1;
			slave.vagina = either(0, 0, 1, 1, 1, 1, 1, 2, 2, 3);
			slave.pregType = either(1, 1, 1, 1, 2, 2, 2, 3, 3, 4, 5);
			slave.preg = jsRandom(5, 38);
			slave.pregWeek = slave.preg;
			slave.pregKnown = 1;
			SetBellySize(slave);
		}
		return `If ${he} was unable to become pregnant before, ${he} has been made to now. ${He} is fertilized surgically to insure a healthy pregnancy.`;
	}

	function FSAssetExpansionistSMR() {
		slave.clit = either(0, 0, 0, 1, 1, 2);
		slave.labia = either(0, 1, 2, 3);
		slave.boobs += jsRandom(2, 5) * 100;
		slave.butt += jsRandom(1, 2);
		slave.lips = jsRandom(15, 55);
		if (slave.dick > 0) {
			slave.dick = jsRandom(4, 7);
		}
		if (slave.balls > 0) {
			slave.balls = jsRandom(4, 7);
		}
		return `${He} has been on powerful growth hormones for a long time, and has experienced growth in several areas as a result.`;
	}

	function FSPhysicalIdealistSMR() {
		const r = [];
		r.push(`Much of ${his} time before sale was spent`);
		if (V.arcologies[0].FSPhysicalIdealistLaw === 1) {
			slave.muscles = jsRandom(20, 50);
			r.push(`doing cardio,`);
		} else {
			slave.muscles = jsRandom(50, 100);
			r.push(`lifting weights,`);
		}
		r.push(`and ${his} health has been raised to an almost unnatural level.`);
		setHealth(slave, jsRandom(50, 90), 0, undefined, 5);
		slave.weight = jsRandom(-20, 0);
		return r.join(" ");
	}

	function FSHedonisticDecadenceSMR() {
		const r = [];
		slave.weight = jsRandom(50, 200);
		if (V.arcologies[0].FSHedonisticDecadenceStrongFat === 1) {
			slave.muscles = jsRandom(10, 60);
			setHealth(slave, jsRandom(10, 40), 0, undefined, 0);
		} else {
			setHealth(slave, jsRandom(-30, 10), undefined, undefined, 0);
			slave.muscles = jsRandom(-80, 0);
		}
		r.push(`Much of ${his} time before sale was spent being fattened up and`);
		if (V.arcologies[0].FSHedonisticDecadenceStrongFat === 1) {
			r.push(`pumping iron.`);
		} else {
			r.push(`lying around.`);
		}
		if (slave.devotion <= 20) {
			r.push(`${He} had to be force-fed massive amounts of slave food while bound to meet requirements, filling ${him} with <span class="gold">fear</span> and <span class="mediumorchid">disgust.</span>`);
			slave.trust -= 5;
			slave.devotion -= 5;
		}
		return r.join(" ");
	}

	function FSGenderFundamentalistSMR() {
		if (slave.dick > 0) {
			slave.balls = 0;
			slave.scrotum = 0;
			slave.boobs += jsRandom(0, 2) * 100;
			slave.butt += jsRandom(0, 1);
			if (slave.face < 95) {
				slave.face = Math.clamp(slave.face + jsRandom(0, 20), -100, 100);
			}
			return `${His} balls were removed as soon as ${he} was enslaved, and ${he}'s been kept on powerful female hormones for long enough to have a general feminizing effect.`;
		}
	}

	function FSSupremacistSMR() {
		if (slave.dick > 0) {
			if (slave.race !== V.arcologies[0].FSSupremacistRace) {
				slave.balls = 0;
				slave.scrotum = 0;
				return `${His} balls were removed as soon as ${he} was enslaved to prevent ${him} from polluting fertile slaves with ${his} inferior semen.`;
			}
		}
	}

	function FSSubjugationistSMR() {
		if (slave.dick > 0) {
			if (slave.race === V.arcologies[0].FSSubjugationistRace) {
				slave.balls = 0;
				slave.scrotum = 0;
				return `${His} balls were removed as soon as ${he} was enslaved to prevent ${him} from polluting fertile slaves with ${his} subhuman semen.`;
			}
		}
	}

	function FSRestartSMR() {
		const r = [];
		if (slave.balls > 0 || slave.ovaries > 0) {
			TerminatePregnancy(slave);
			actX(slave, "abortions");
			slave.balls = 0;
			slave.ovaries = 0;
			r.push(`As a member of the lowest class,`);
			if (slave.preg > 0) {
				r.push(`${his} pregnancy is immediately terminated, and`);
			}
			r.push(`${he} is promptly sterilized to prevent ${him} from passing on ${his} useless genes.`);
		}
		return r.join(" ");
	}

	function FSPaternalistSMR() {
		slave.trust += 10;
		if (slave.devotion <= 20) {
			return `While ${he} came through the slave markets, ${he} was treated with decency. ${He} has begun to wonder whether ${he} can <span class="mediumaquamarine">get away with</span> being disobedient.`;
		} else {
			return `While ${he} came through the slave markets, ${he} was treated with decency. ${He} has begun to hope that ${he} can expect <span class="mediumaquamarine">basic respect</span> despite being a sex slave.`;
		}
	}

	function FSDegradationistSMR() {
		slave.trust -= 10;
		Math.clamp(slave.health.tired += 30, 0, 100);
		return `${His} current owners <span class="gold">brutalized ${him}</span> before putting ${him} on sale, using clever methods to produce agony without seriously damaging ${his} health.`;
	}

	function gumjobFetishismSMR() {
		slave.teeth = "removable";
		if(slave.devotion <= 50) {
			slave.trust -= 10;
		}
		healthDamage(slave, 10);
		return `In order to qualify for sale, ${he} has had his teeth removed and replaced with high-quality, removable dentures.`;
	}

	function FSPetiteAdmirationSMR() {
		if (!heightPass(slave)) {
			slave.height = Math.trunc(Height.random(slave, {limitMult: [-4, -2]}));
		}
		return `${His} height was meticulously taken before being allowed into the markets.`;
	}

	function FSStatuesqueGlorificationSMR() {
		if (!heightPass(slave)) {
			slave.height = Math.trunc(Height.random(slave, {limitMult: [2, 4]}));
		}
		return `${His} height, as well as ${his} potential for growth, were meticulously taken before being allowed into the markets.`;
	}

	function FSIntellectualDependencySMR() {
		slave.intelligence = Intelligence.random({limitIntelligence: [-100, -50]});
		slave.devotion += 5;
		return `${He} passed the intelligence exam needed to be qualify ${him} for sale. A truly <span class="hotpink">joyous achievement</span> for ${him}.`;
	}

	function FSSlaveProfessionalismSMR() {
		if (slave.vagina >= 0) {
			slave.skill.vaginal = Math.clamp(slave.skill.vaginal + 50, 50, 100);
		}
		slave.skill.anal = Math.clamp(slave.skill.anal + 50, 50, 100);
		slave.skill.oral = Math.clamp(slave.skill.oral + 50, 50, 100);
		slave.skill.entertainment = Math.clamp(slave.skill.entertainment + 50, 50, 100);
		slave.skill.whoring = Math.clamp(slave.skill.whoring + 50, 50, 100);
		if (slave.accent > 1) {
			slave.accent = 1;
		}
		return `${He} underwent an intense lesson plan to hone ${his} skills to a level appropriate for sale.`;
	}

	function FSBodyPuristSMR() {
		slave.nipplesPiercing = 0;
		slave.areolaePiercing = 0;
		slave.lipsPiercing = 0;
		slave.vaginaPiercing = 0;
		slave.dickPiercing = 0;
		slave.clitPiercing = 0;
		slave.anusPiercing = 0;
		slave.corsetPiercing = 0;
		slave.earPiercing = 0;
		slave.eyebrowPiercing = 0;
		slave.nosePiercing = 0;
		slave.navelPiercing = 0;
		slave.lipsTat = 0;
		slave.buttTat = 0;
		slave.anusTat = 0;
		slave.vaginaTat = 0;
		slave.dickTat = 0;
		slave.boobsTat = 0;
		slave.armsTat = 0;
		slave.legsTat = 0;
		slave.shouldersTat = 0;
		slave.backTat = 0;
		slave.stampTat = 0;
		if (slave.boobsImplant > 0) {
			slave.boobs -= slave.boobsImplant;
			slave.boobsImplant = 0;
			slave.boobsImplantType = "none";
		}
		if (slave.buttImplant > 0) {
			slave.butt -= slave.buttImplant;
			slave.buttImplant = 0;
			slave.buttImplantType = "none";
		}
		if (slave.lipsImplant > 0) {
			slave.lips -= slave.lipsImplant;
			slave.lipsImplant = 0;
		}
		return `In order to qualify for sale, ${he} has been meticulously inspected for implants, tattoos, and piercings, and any present have been removed.`;
	}

	function FSTransformationFetishistSMR() {
		const r = [];
		r.push(`In order to qualify for sale, ${he} has been kitted out with a basic set of breast, buttock, and lip implants.`);
		if (slave.devotion <= 20) {
			r.push(`Being turned into an assembly line bimbo fills ${him} with <span class="gold">fear</span> and <span class="mediumorchid">disgust.</span>`);
			slave.trust -= 5;
			slave.devotion -= 5;
		}
		if (slave.boobsImplant === 0) {
			slave.boobsImplant = 400;
			slave.boobs += slave.boobsImplant;
			slave.boobsImplantType = "normal";
		}
		if (slave.buttImplant === 0) {
			slave.buttImplant = 1;
			slave.butt += slave.buttImplant;
			slave.buttImplantType = "normal";
		}
		if (slave.lipsImplant === 0) {
			slave.lipsImplant = 10;
			slave.lips += slave.lipsImplant;
		}
		return r.join(" ");
	}

	function FSYouthPreferentialistSMR() {
		if (slave.physicalAge > 35) {
			slave.trust -= 5;
			return `${He} was treated as a disposable old bitch in the slave pens, <span class="gold">worrying ${him}.</span>`;
		} else if (slave.physicalAge <= 25) {
			slave.trust += 5;
			return `${He} was treated reasonably well in the slave pens due to ${his} youth, <span class="mediumaquamarine">reassuring ${him}.</span>`;
		}
	}

	function FSMaturityPreferentialistSMR() {
		if (slave.physicalAge > 35) {
			slave.trust += 5;
			return `${He} was treated reasonably well in the slave pens due to ${his} maturity, <span class="mediumaquamarine">reassuring ${him}.</span>`;
		} else if (slave.physicalAge <= 25) {
			slave.trust -= 5;
			return `${He} was treated as a disposable little slut in the slave pens, <span class="gold">worrying ${him}.</span>`;
		}
	}

	function FSPastoralistSMR() {
		if (slave.lactation === 0) {
			slave.lactation = 2;
			slave.lactationDuration = 2;
			return `${He} was implanted with permanent lactation drugs in order to qualify for sale, and was kept in the slave pens until ${he} could be put up on the block with dripping nipples.`;
		}
	}

	function FSChattelReligionistSMR() {
		const r = [];
		r.push(`${He} has been consecrated for sale by being offered to the public for a full night, from sunset to sunrise.`);
		if (slave.devotion <= 20) {
			r.push(`Since ${he} was not willing to accept this treatment, ${his} consecration took the form of twelve hours of rape, terrifying ${him} and filling ${him} with hatred.`);
			slave.trust -= 15;
			slave.devotion -= 15;
		} else {
			r.push(`${He} accepted this treatment, <span class="hotpink">breaking ${him}</span> to sexual slavery.`);
			slave.devotion += 5;
		}

		seX(slave, "oral", "public", "penetrative", 10);
		if (slave.vagina > 0) {
			seX(slave, "vaginal", "public", "penetrative", 10);
			if (slave.vagina < 3) {
				slave.vagina += 1;
			}
		} else {
			seX(slave, "oral", "public", "penetrative", 10);
		}
		if (slave.anus > 0) {
			seX(slave, "anal", "public", "penetrative", 10);
			if (slave.anus < 3) {
				slave.anus += 1;
			}
		} else {
			seX(slave, "oral", "public", "penetrative", 10);
		}
		return r.join(" ");
	}

	function FSRomanRevivalistSMR() {
		slave.trust -= 10;
		return `As ${he} passed though the slave markets, ${he} saw many less valuable slaves selected to die in gladiatorial combats. ${He} is relieved ${he} wasn't one of them, but terrified that will be ${his} fate if ${he} makes mistakes.`;
	}

	function FSNeoImperialistSMR() {
		slave.trust -= 5;
		return `As ${he} passed though the slave markets, ${he} saw countless marvels of technological advancement, and the absolute obedience of tightly-disciplined slaves to their noble masters. The almost utter subservience of other slaves is deeply concerning to ${him}.`;
	}

	function FSAztecRevivalistSMR() {
		const r = [];
		r.push(`As ${he} passed though the golden city, ${he} saw a less valuable`);
		if (V.arcologies[0].FSPaternalist !== "unset") {
			r.push(`slave's virginity get sacrificed`);
		} else {
			r.push(`slave get sacrificed`);
		}
		r.push(`on one of the many altars spread throughout the city. ${He} was`);
		if (V.arcologies[0].FSPaternalist !== "unset") {
			r.push(`<span class="gold">startled</span>`);
		} else {
			r.push(`<span class="gold">mortified</span>`);
		}
		r.push(`to learn what befalls lesser slaves here.`);
		if (V.arcologies[0].FSPaternalist !== "unset") {
			slave.trust -= 5;
		} else {
			slave.trust -= 20;
		}
		return r.join(" ");
	}

	function FSEgyptianRevivalistSMR() {
		const r = [];
		r.push(`While ${he} was in the slave pens, ${he} was subjected to Egyptian cultural indoctrination.`);
		if (slave.skill.entertainment > 10) {
			r.push(`${He} is now <span class="mediumaquamarine">confident</span> that ${his} entertainment skills will be valued here.`);
			slave.trust += 10;
		} else if (slave.intelligenceImplant >= 15) {
			r.push(`${He} now <span class="mediumaquamarine">hopes</span> that ${his} education will be valued here.`);
			slave.trust += 5;
		} else {
			r.push(`${He} is <span class="gold">concerned</span> that ${he} doesn't have what it takes to fit in.`);
			slave.trust -= 5;
		}
		return r.join(" ");
	}

	function FSEdoRevivalistSMR() {
		const r = [];
		r.push(`While ${he} was in the slave pens, ${he} was subjected to Edo Revivalist cultural indoctrination.`);
		if (slave.nationality === "Japanese") {
			r.push(`${He} is now <span class="mediumaquamarine">confident</span> that, as a proper Japanese ${girl}, ${he} will receive preferential treatment.`);
			slave.trust += 10;
		} else if (slave.skill.entertainment > 30) {
			r.push(`${He} now <span class="mediumaquamarine">hopes</span> that ${his} refined entertainment skills will make ${him} culturally as well as sexually valuable.`);
			slave.trust += 5;
		} else {
			r.push(`${He} is <span class="gold">concerned</span> that ${he} doesn't have what it takes to fit in.`);
			slave.trust -= 5;
		}
		return r.join(" ");
	}

	function FSArabianRevivalistSMR() {
		const r = [];
		r.push(`While ${he} was in the slave pens, ${he} was subjected to classical Arabian cultural indoctrination.`);
		if (slave.face > 40) {
			r.push(`${He} is now <span class="mediumaquamarine">confident</span> that ${his} great beauty will be valued here.`);
			slave.trust += 10;
		} else if (slave.accent <= 1) {
			r.push(`${He} now <span class="mediumaquamarine">hopes</span> that ${his} linguistic skill will be valued here.`);
			slave.trust += 5;
		} else {
			r.push(`${He} is <span class="gold">concerned</span> that ${he} doesn't have what it takes to fit in.`);
			slave.trust -= 5;
		}
		return r.join(" ");
	}

	function FSChineseRevivalistSMR() {
		const r = [];
		r.push(`While ${he} was in the slave pens, ${he} was subjected to Imperial Chinese cultural indoctrination.`);
		if (slave.intelligence > 50) {
			r.push(`${He} is now <span class="mediumaquamarine">confident</span> that ${his} brilliance will be valued here.`);
			slave.trust += 10;
		} else if (slave.intelligenceImplant >= 15) {
			r.push(`${He} now <span class="mediumaquamarine">hopes</span> that ${his} education will be valued here.`);
			slave.trust += 5;
		} else {
			r.push(`${He} is <span class="gold">concerned</span> that ${he} doesn't have what it takes to fit in.`);
			slave.trust -= 5;
		}
		return r.join(" ");
	}

	function basicSMR() {
		slave.trust -= 5;
		return `While ${he} came through the slave markets, ${he} was treated with inhuman callousness. It was very obvious and very terrifying to ${him} that ${he} is now considered a piece of meat.`;
	}

	function healthInspectionSMR() {
		if (slave.health.condition < -10) {
			improveCondition(slave, 10);
			Math.clamp(slave.health.tired -= 30, 0, 100);
			return `${His} current owners held ${him} for basic medical care before putting ${him} on sale, resolving some of ${his} health issues.`;
		}
	}

	function educationSMR() {
		if (slave.intelligenceImplant === 0) {
			slave.intelligenceImplant = 15;
			return `${He} arrived at ${V.arcologies[0].name} in a pitiably undereducated state, and has been held back until ${he} completed a basic course of slave education.`;
		}
	}

	function frigiditySMR() {
		if (slave.energy > 20) {
			slave.energy = 20;
			return `Before reaching the market, ${he} was trained to disregard sex until ${he} showed no interest in sex at all.`;
		}
	}

	function beautyBasicSMR() {
		if (slave.face < 0) {
			slave.face = jsRandom(0, 60);
		}
		slave.trust -= 5;
		return `beauty`;
	}

	function beautyQualitySMR() {
		if (slave.face < 20) {
			slave.face = jsRandom(20, 100);
		}
		slave.trust -= 5;
		return `beauty`;
	}

	function weightSMR() {
		if (slave.weight > 100) {
			slave.weight = jsRandom(-50, 50);
		}
		slave.trust -= 5;
		return `weight`;
	}

	function heightBasicSMRup() {
		if (slave.height < 170) {
			if (slave.height >= 160) {
				slave.trust -= 10;
				slave.height += 10;
				slave.heightImplant = 1;
				healthDamage(slave, 40);
				return `Before ${he} was put up for sale, ${he} underwent height increasing surgery to fulfill your arcology's height SMR. ${He} was horrified by how drastically ${his} body was altered just for a chance at sale.`;
			} else {
				slave.devotion += 10;
				slave.trust -= 10;
				return `While ${he} was in the slave pens, ${he} was treated as nothing more than an unsalvageable slab of meat suitable only for the lowliest of jobs. ${He}'s desperate enough to follow any order in fear that should ${he} fail, ${he}'ll be discarded like so many other shorties.`;
			}
		} else {
			slave.devotion -= 10;
			return `While ${he} was in the slave pens, ${he} saw that short and even average sized slaves were commonly designated as menials and Fuckdolls. ${His} tall stature gives ${him} a promising future compared to ${his} shorter peers, leaving ${him} inappropriately proud of ${his} height.`;
		}
	}

	function heightBasicSMRdown() {
		if (slave.height >= 160) {
			if (slave.height <= 169) {
				slave.trust -= 10;
				slave.height -= 10;
				slave.heightImplant = -1;
				healthDamage(slave, 40);
				return `Before ${he} was put up for sale, ${he} underwent height reduction surgery to fulfill your arcology's height SMR. ${He} was horrified by how drastically ${his} body was altered just for a chance at sale.`;
			} else {
				slave.devotion += 10;
				slave.trust -= 10;
				return `While ${he} was in the slave pens, ${he} was treated as nothing more than an unsalvageable slab of meat suitable only for the lowliest of jobs. ${He}'s desperate enough to follow any order in fear that should ${he} fail, ${he}'ll be discarded like all the other tall ${girl}s.`;
			}
		} else {
			slave.devotion -= 10;
			return `While ${he} was in the slave pens, ${he} saw that tall and even average sized slaves were commonly designated as menials and Fuckdolls. ${His} short stature gives ${him} a promising future compared to ${his} towering peers, leaving ${him} inappropriately proud of ${his} height.`;
		}
	}

	function heightAdvancedSMRup() {
		slave.height = Math.round(Height.random(slave, {skew: V.policies.SMR.height.advancedSMR, limitMult: [0, 5 * V.policies.SMR.height.advancedSMR]}));
		let t = [`While ${he} was in the slave pens, ${he} saw that slaves on the shorter end of the height curve were immediately designated as menials and Fuckdolls.`];
		if (slave.physicalAge < 16) {
			t.push(`${He} is <span class="gold">terrified</span> that if ${he} doesn't keep growing, ${he}'ll be reassigned on the spot without a second thought.`);
			slave.trust -= 5;
		} else {
			t.push(`${His} above average stature gives ${him} a promising future compared to ${his} shorter peers, leaving ${him} <span class="mediumOrchid">inappropriately proud</span> of ${his} height.`);
			slave.devotion -= 10;
		}
		return t.join(" ");
	}

	function heightAdvancedSMRdown() {
		slave.height = Math.round(Height.random(slave, {skew: V.policies.SMR.height.advancedSMR, limitMult: [0, 5 * V.policies.SMR.height.advancedSMR]}));
		let t = [`While ${he} was in the slave pens, ${he} saw that slaves on the taller end of the height curve were immediately designated as menials and Fuckdolls.`];
		if (slave.physicalAge < 16) {
			t.push(`${He} is <span class="gold">terrified</span> that if ${he} goes through a growth spurt, ${he}'ll be reassigned on the spot without a second thought.`);
			slave.trust -= 5;
		} else {
			t.push(`${His} below average stature gives ${him} a promising future compared to ${his} taller peers, leaving ${him} <span class="mediumOrchid">inappropriately proud</span> of ${his} height.`);
			slave.devotion -= 10;
		}
		return t.join(" ");
	}

	function intelligenceBasicSMR() {
		if (slave.intelligence <= -15) {
			slave.intelligence = Intelligence.random({limitIntelligence: [0, 40]});
		}
		slave.trust -= 5;
		return `intelligence`;
	}

	function intelligenceQualitySMR() {
		if (slave.intelligence <= 15) {
			slave.intelligence = Intelligence.random({limitIntelligence: [16, 100]});
		}
		slave.trust -= 5;
		return `intelligence`;
	}

	function slaveFears(fearList) {
		const r = [];
		let objectFeared = "";
		let destination = "";
		let destinationList = {menials: 1, Fuckdolls: 0, cows: 0}; // Always menials as a fear
		let lossFeared = "";
		if (fearList.length === 0) {
			return;
		}
		for (let fear = 0; fear < fearList.length; fear++) {
			if (fearList[fear] === "intelligence") {
				objectFeared += "less intelligent";
				destinationList.Fuckdolls = 1;
				lossFeared += `if ${he} makes a mistake, `;
			} else if (fearList[fear] === "beauty") {
				objectFeared += "less attractive";
				destinationList.Fuckdolls = 1;
				lossFeared += `should ${he} lose ${his} beauty, `;
			} else if (fearList[fear] === "weight") {
				objectFeared += "obese";
				destinationList.cows = 1;
				lossFeared += `should ${he} get fat, `;
			} else {
				console.log(`error: ${fearList[fear]} not found.`);
			}
			if (fearList.length - fear > 2) {
				objectFeared += ", ";
			} else if (fearList.length - fear > 1) {
				objectFeared += " and ";
				lossFeared += "or ";
			}
		}

		if (destinationList.Fuckdolls === 1 && destinationList.cows === 1) {
			destination = `menials, Fuckdolls, and cows`;
		} else if (destinationList.Fuckdolls === 1) {
			destination = `menials and Fuckdolls`;
		} else if (destinationList.cows === 1) {
			destination = `menials and cows`;
		}

		r.push(`While ${he} was in the slave pens, ${he} saw that ${objectFeared} slaves were immediately designated ${destination} and ${he} is terrified that ${lossFeared} ${he}'ll be considered worthless and be reassigned on the spot.`);

		return r.join(" ");
	}

	function eugenicsSMRsCount() {
		const r = [];
		let eugenicsMarketTest = 1;
		r.push(`As soon as ${he} arrived in the slave market, ${he} was subjected to a battery of testing:`);
		if (V.policies.SMR.eugenics.intelligenceSMR === 1) {
			r.push(`an intelligence test,`);
			if (slave.intelligence + slave.intelligenceImplant <= 50) {
				eugenicsMarketTest = 0;
			}
		}
		if (V.policies.SMR.eugenics.heightSMR === 1) {
			r.push(`rigorous height and bone measurements,`);
			if (slave.height < (Height.mean(slave) + 15)) {
				eugenicsMarketTest = 0;
			}
		}
		if (V.policies.SMR.eugenics.faceSMR === 1) {
			r.push(`strict judgments of ${his} facial attractiveness,`);
			if (slave.face < 40) {
				eugenicsMarketTest = 0;
			}
		}
		r.push(`a physical exam, and more.`);
		if (eugenicsMarketTest === 0) {
			r.push(`${He} failed, and only then learned that by failing ${he} placed ${himself} under the merciless dictates of eugenic theory.`);
			if (slave.balls > 0 && (isFertile(slave) || slave.preg > 0)) {
				r.push(`${His} balls were promptly`);
				if (V.seeExtreme === 1) {
					r.push(`removed`);
					slave.balls = 0;
					slave.scrotum = 0;
				} else {
					r.push(`flooded with chemicals`);
					slave.ballType = "sterile";
				}
				r.push(`to prevent ${him} from passing on ${his} inferior genes, <span class="mediumorchid">infuriating</span> and <span class="gold">terrifying</span> ${him}.`);
				r.push(`Furthermore, ${his}`);
				if (slave.preg > 0) {
					r.push(`pregnancy was terminated and afterwards ${his}`);
				}
				r.push(`tubes were promptly tied to prevent ${him} from passing on ${his} inferior genes, <span class="mediumorchid">saddening</span> and <span class="gold">frightening</span> ${him}.`);
				TerminatePregnancy(slave);
				actX(slave, "abortions");
				slave.devotion -= 30;
				slave.trust -= 30;
			} else if (slave.balls > 0) {
				r.push(`${His} balls were promptly`);
				if (V.seeExtreme === 1) {
					r.push(`removed`);
					slave.balls = 0;
					slave.scrotum = 0;
				} else {
					r.push(`flooded with chemicals`);
					slave.ballType = "sterile";
				}
				r.push(`to prevent ${him} from passing on ${his} inferior genes, <span class="mediumorchid">infuriating</span> and <span class="gold">terrifying</span> ${him}.`);
				slave.devotion -= 20;
				slave.trust -= 20;
			} else if ((isFertile(slave) || slave.preg > 0)) {
				r.push(`${His}`);
				if (slave.preg > 0) {
					r.push(`pregnancy was terminated and afterwards ${his}`);
				}
				r.push(`tubes were promptly tied to prevent ${him} from passing on ${his} inferior genes, <span class="mediumorchid">saddening</span> and <span class="gold">frightening</span> ${him}.`);
				TerminatePregnancy(slave);
				actX(slave, "abortions");
				slave.devotion -= 10;
				slave.trust -= 10;
			} else {
				r.push(`Fortunately for ${him}, ${he} was already incapable of passing on ${his} inferior genes.`);
			}
		} else {
			r.push(`${He} passed, and only then learned that passing marked ${him} as fit to pass on ${his} genes, should ${his} owners decide to breed ${him}.`);
			if (slave.balls > 0 && (isFertile(slave) || slave.preg > 0)) {
				r.push(`${His} relief that ${he} won't have ${his} balls cut off and ${his} tubes tied is mixed with fear at being introduced to your society in this way.`);
			} else if ((isFertile(slave) || slave.preg > 0)) {
				r.push(`${His} relief that ${he} won't have ${his} tubes tied is mixed with fear at being introduced to your society in this way.`);
			} else {
				r.push(`This is merely confusing to ${him}, since ${he} isn't able to reproduce as it is. Of course, ${he} doesn't know that you're quite capable of changing that.`);
			}
		}
		return r.join(" ");
	}
};


code:
/**
 * @param {App.Entity.SlaveState} slave
 */
App.UI.newChildIntro = function(slave) {
	const {
		His, He, his, him, he, girl, hers, himself, daughter
	} = getPronouns(slave);
	let he2, his2, wife2, He2, himself2;

	const el = new DocumentFragment();
	let r;
	let momInterest;
	let dadInterest;

	/** @type {FC.SlaveStateOrZero} */
	let tempMom = 0;
	/** @type {FC.SlaveStateOrZero} */
	let tempDad = 0;

	App.Utils.setLocalPronouns(slave);

	if (slave.mother > 0) {
		tempMom = getSlave(slave.mother) || 0;
	}
	if (slave.father > 0) {
		tempDad = getSlave(slave.father) || 0;
	}

	r = [];

	r.push(`You completed the legalities before heading to ${V.incubatorName}, knowing the tank will release ${him} on your approach, and instruct ${V.assistant.name} to notify the new ${girl}'s parents to meet you in your office. As the tank exhumes the disoriented ${girl},`);
	if (slave.preg > 0) {
		/* Unused for now. Fetal development would be accelerated as well. As a result, the released slave would be shocking to see in such a state. */
		if (slave.geneticQuirks.progeria) {
		} else if (slave.geneticQuirks.neoteny && slave.actualAge > 12 && V.geneticMappingUpgrade < 2) {
		}
	} else if (slave.geneticQuirks.progeria && V.geneticMappingUpgrade < 2) {
		r.push(`you barely manage to pull yourself together to catch ${him} in time. There must have been some mistake with the settings; ${he} should not be //this// old. You help ${him} to ${his} unstable feet and slowly walk ${him} to your penthouse.`);
	} else if (slave.geneticQuirks.neoteny && slave.actualAge > 12 && V.geneticMappingUpgrade === 0) {
		r.push(`you have to make sure the right ${girl} was released. ${He} was supposed to be ${slave.actualAge}, not this child sitting before you. You double check the machine's logs to be certain and it turns out ${he} really is ${slave.actualAge}, just abnormally young looking for ${his} age.`);
	} else {
		r.push(`you help ${him} to ${his} feet${(V.incubatorReproductionSetting > 1) ? `, making sure to feel-up ${his} overdeveloped body,` : ``} and walk ${him} to your penthouse.`);
	}
	r.push(`Though first you must decide upon a name for the new ${girl}; it won't take long to reach your office, so you have only <span class="orange">one chance to name ${him}</span> before you arrive.`);
	App.Events.addParagraph(el, r);

	const naming = document.createElement("div");
	naming.id = "naming";
	App.UI.DOM.appendNewElement("div", naming, `Choose a name for ${him}.`);
	App.UI.DOM.appendNewElement(
		"div",
		naming,
		App.UI.DOM.makeTextBox(
			slave.slaveName,
			(v) => {
				slave.birthName = v;
				slave.slaveName = v;
				jQuery("#naming").empty().append(`You instruct ${V.assistant.name} to register the new ${girl} as "${slave.slaveName}" in the slave registry.`);
				const slaveName = document.createElement("span");
				slaveName.classList.add('slave-name');
				slaveName.append(slave.slaveName);
				jQuery("#newName").empty().append(slaveName);
			}
		)
	);

	App.UI.DOM.appendNewElement(
		"div",
		naming,
		App.UI.DOM.link(
			`Have your PA assign ${him} a random name`,
			() => {
				slave.birthName = generateName(slave.nationality, slave.race, slave.genes === "XY");
				if (slave.genes === "XY" && !V.allowMaleSlaveNames && isMaleName(slave.birthName, slave.nationality, slave.race)) {
					/* grab a female name for the slave name instead */
					slave.slaveName = generateName(slave.nationality, slave.race, false);
				} else {
					slave.slaveName = slave.birthName;
				}
				jQuery("#naming").empty().append(
					`${V.assistant.name} registers the new ${girl} as "${slave.slaveName}" in your registry.`
				);
				const slaveName = document.createElement("span");
				slaveName.classList.add('slave-name');
				slaveName.append(slave.slaveName);
				jQuery("#newName").empty().append(slaveName);
			}
		)
	);

	if (V.arcologies[0].FSPastoralist !== "unset") {
		App.UI.DOM.appendNewElement(
			"div",
			naming,
			App.UI.DOM.link(
				`Have your PA assign ${him} a random cow name`,
				() => {
					slave.slaveName = setup.cowSlaveNames.random();
					slave.birthName = slave.slaveName;
					jQuery("#naming").empty().append(`${V.assistant.name} registers the new ${girl} as "${slave.slaveName}" in your registry.`);
					const slaveName = document.createElement("span");
					slaveName.classList.add('slave-name');
					slaveName.append(slave.slaveName);
					jQuery("#newName").empty().append(slaveName);
				}
			)
		);
	}
	if (V.arcologies[0].FSIntellectualDependency !== "unset") {
		App.UI.DOM.appendNewElement(
			"div",
			naming,
			App.UI.DOM.link(
				`Have your PA assign ${him} a random stripper name`,
				() => {
					slave.slaveName = setup.bimboSlaveNames.random();
					slave.birthName = slave.slaveName;
					jQuery("#naming").empty().append(`${V.assistant.name} registers the new ${girl} as "${slave.slaveName}" in your registry.`);
					const slaveName = document.createElement("span");
					slaveName.classList.add('slave-name');
					slaveName.append(slave.slaveName);
					jQuery("#newName").empty().append(slaveName);
				}
			)
		);
	}
	if (V.arcologies[0].FSChattelReligionist !== "unset") {
		App.UI.DOM.appendNewElement(
			"div",
			naming,
			App.UI.DOM.link(
				`Have your PA assign ${him} a random devotional name`,
				() => {
					slave.slaveName = setup.chattelReligionistSlaveNames.random();
					slave.birthName = slave.slaveName;
					jQuery("#naming").empty().append(`${V.assistant.name} registers the new ${girl} as "${slave.slaveName}" in your registry.`);
					const slaveName = document.createElement("span");
					slaveName.classList.add('slave-name');
					slaveName.append(slave.slaveName);
					jQuery("#newName").empty().append(slaveName);
				}
			)
		);
	}
	if (V.arcologies[0].FSRomanRevivalist !== "unset") {
		App.UI.DOM.appendNewElement(
			"div",
			naming,
			App.UI.DOM.link(
				`Have your PA assign ${him} a random Roman name`,
				() => {
					slave.slaveName = setup.romanSlaveNames.random();
					slave.birthName = slave.slaveName;
					jQuery("#naming").empty().append(`${V.assistant.name} registers the new ${girl} as "${slave.slaveName}" in your registry.`);
					const slaveName = document.createElement("span");
					slaveName.classList.add('slave-name');
					slaveName.append(slave.slaveName);
					jQuery("#newName").empty().append(slaveName);
				}
			)
		);
	} else if (V.arcologies[0].FSAztecRevivalist !== "unset") {
		App.UI.DOM.appendNewElement(
			"div",
			naming,
			App.UI.DOM.link(
				`Have your PA assign ${him} a random Aztec name`,
				() => {
					slave.slaveName = setup.aztecSlaveNames.random();
					slave.birthName = slave.slaveName;
					jQuery("#naming").empty().append(`${V.assistant.name} registers the new ${girl} as "${slave.slaveName}" in your registry.`);
					const slaveName = document.createElement("span");
					slaveName.classList.add('slave-name');
					slaveName.append(slave.slaveName);
					jQuery("#newName").empty().append(slaveName);
				}
			)
		);
	} else if (V.arcologies[0].FSEgyptianRevivalist !== "unset") {
		App.UI.DOM.appendNewElement(
			"div",
			naming,
			App.UI.DOM.link(
				`Have your PA assign ${him} a random Egyptian name`,
				() => {
					slave.slaveName = setup.ancientEgyptianSlaveNames.random();
					slave.birthName = slave.slaveName;
					jQuery("#naming").empty().append(`${V.assistant.name} registers the new ${girl} as "${slave.slaveName}" in your registry.`);
					const slaveName = document.createElement("span");
					slaveName.classList.add('slave-name');
					slaveName.append(slave.slaveName);
					jQuery("#newName").empty().append(slaveName);
				}
			)
		);
	} else if (V.arcologies[0].FSEdoRevivalist !== "unset") {
		App.UI.DOM.appendNewElement(
			"div",
			naming,
			App.UI.DOM.link(
				`Have your PA assign ${him} a random feudal Japanese name`,
				() => {
					slave.slaveName = setup.edoSlaveNames.random();
					slave.birthName = slave.slaveName;
					jQuery("#naming").empty().append(`${V.assistant.name} registers the new ${girl} as "${slave.slaveName}" in your registry.`);
					const slaveName = document.createElement("span");
					slaveName.classList.add('slave-name');
					slaveName.append(slave.slaveName);
					jQuery("#newName").empty().append(slaveName);
				}
			)
		);
	}

	if (V.arcologies[0].FSDegradationist !== "unset") {
		App.UI.DOM.appendNewElement(
			"div",
			naming,
			App.UI.DOM.link(
				`Have your PA assign ${him} a degrading name`,
				() => {
					DegradingName(slave);
					slave.birthName = slave.slaveName;
					jQuery("#naming").empty().append(`${V.assistant.name} registers the new ${girl} as "${slave.slaveName}" in your registry.`);
					const slaveName = document.createElement("span");
					slaveName.classList.add('slave-name');
					slaveName.append(slave.slaveName);
					jQuery("#newName").empty().append(slaveName);
				}
			)
		);
	}

	// Parent naming
	if (tempMom !== 0) {
		naming.append(parentNaming(tempMom));
	}
	if (tempDad !== 0 && slave.father !== slave.mother) {
		naming.append(parentNaming(tempDad));
	}
	el.append(naming);

	const newName = document.createElement("span");
	newName.id = "newName";

	const slaveName = document.createElement("span");
	slaveName.classList.add('slave-name');
	slaveName.append(slave.slaveName);

	newName.append(slaveName);

	r = [];
	r.push(newName);
	r.push(`now stands before your desk`);
	if (tempMom !== 0 && tempDad !== 0 && slave.father !== slave.mother) {
		r.push(`alongside ${his} mother ${tempMom.slaveName} and father ${tempDad.slaveName}.`);
	} else if (tempMom !== 0) {
		r.push(`alongside ${his} mother ${tempMom.slaveName}.`);
	} else if (tempDad !== 0) {
		r.push(`alongside ${his} father ${tempDad.slaveName}.`);
	} else {
		r.push(`alone, having no family${(slave.mother === -1 || slave.father === -1) ? `, other than you,` : ``} in your stock.`);
	}
	if (V.arcologies[0].FSRestartDecoration === 100 && tempMom !== 0) {
		if (tempMom.breedingMark === 1 && V.propOutcome === 1) {
			r.push(`The Societal Elite are waiting to inspect the child of their eugenics programs.`);
			if (V.arcologies[0].FSSupremacist > 20 && slave.race !== V.arcologies[0].FSSupremacistRace) {
				if (V.eugenicsFullControl !== 1) {
					r.push(`They take one look at the ${slave.race} `);
					if (slave.race === "mixed race") {
						r.push(`mutt`);
					} else {
						r.push(`dog`);
					}
					r.push(`you've sired for them and <span class="red">leave in a huff.</span>`);
					V.failedElite += 5;
				} else {
					r.push(`They quickly realize how unsuitable ${he} is for breeding and leave, apologizing sycophantically for wasting your time.`);
				}
			} else if (V.arcologies[0].FSSubjugationist > 20 && slave.race === V.arcologies[0].FSSubjugationistRace) {
				if (V.eugenicsFullControl !== 1) {
					r.push(`They take one look at the disgusting ${slave.race} bitch you've fathered and <span class="red">leave furious.</span>`);
					V.failedElite += 50;
				} else {
					r.push(`They quickly realize how unsuitable ${he} is for breeding and leave, apologizing sycophantically for wasting your time.`);
				}
			} else {
				r.push(`Approving of your attractive offspring, they take this opportunity to brand the protesting ${girl} with the breeding mark signifying ${him} as worthy of reproducing, before taking their leave.`);
				slave.breedingMark = 1;
			}
		}
	}

	if (tempMom !== 0) {
		({
			he2, his2, He2, himself2
		} = getPronouns(tempMom).appendSuffix("2"));
		r.push(`${He} glances at ${his} mother`);
		if (tempMom.relationship === -3) {
			if (tempMom.fetish === "mindbroken") {
				r.push(`and notices how dull the look on ${his2} face is.${tempMom.slaveName} is standing there blankly. ${He2} doesn't even recognize ${his2} ${daughter}, frightening the poor ${girl}.`);
				slave.trust -= 25;
				slave.devotion -= 10;
			} else if (tempMom.devotion + tempMom.trust >= 175) {
				r.push(`and <span class="hotpink">notices how happy</span> the look on ${his2} face is.${tempMom.slaveName} is positively beaming with pride at `);
				if (slave.father === -1) {
					r.push(`the result of your union.`);
				} else {
					r.push(`${his2} addition to your harem.`);
				}
				slave.trust += 35;
				slave.devotion += 35;
			} else if (tempMom.devotion < -20 && tempMom.trust > 20) {
				r.push(`and notices the look of hatred on ${his2} face.${tempMom.slaveName} scowls at ${his2} unwelcome spawn, frightening the poor ${girl} into your arms.`);
				slave.trust -= 50;
				slave.devotion += 50;
			} else if (tempMom.devotion < -20) {
				r.push(`and notices the <span class="mediumorchid">look of defeat</span> on ${his2} face.${tempMom.slaveName} immediately tears up when ${he2} `);
				if (canSee(tempMom)) {
					r.push(`sees`);
				} else {
					r.push(`faces`);
				}
				if (slave.father === -1) {
					r.push(`the result of your union.`);
				} else {
					r.push(`${his2} addition to your harem.`);
				}
				slave.trust -= 30;
				slave.devotion -= 30;
			} else {
				r.push(`and <span class="hotpink">notices how obedient</span> the look on ${his2} face is.${tempMom.slaveName} is eagerly awaiting your reaction to `);
				if (slave.father === -1) {
					r.push(`the result of your union.`);
				} else {
					r.push(`${his2} addition to your harem.`);
				}
				slave.trust += 25;
				slave.devotion += 25;
			}
		} else if (tempMom.ID === V.ConcubineID) {
			r.push(`and notices <span class="hotpink">how happy</span> the look on ${his2} face is. ${S.Concubine.slaveName} is positively beaming with pride at ${his2} addition to your harem.`);
			slave.trust += 30;
			slave.devotion += 30;
		} else if (tempMom.ID === V.BodyguardID) {
			r.push(`and notices how ${he2} focuses more on you than ${himself2}. ${S.Bodyguard.slaveName}'s dedication to your life has certainly influenced ${him}.`);
			slave.trust += 40;
			slave.devotion += 20;
		} else if (tempMom.ID === V.HeadGirlID) {
			r.push(`and notices how much ${his2} look takes after your own. ${S.HeadGirl.slaveName}'s dedication to you has <span class="hotpink">certainly influenced ${him}.</span>`);
			slave.trust += 20;
			slave.devotion += 20;
		} else if (tempMom.devotion < -50) {
			r.push(`and <span class="mediumorchid">notices the look of hatred</span> on ${his2} face; a <span class="gold">look of terror</span> across ${his} own when ${his} eyes return to you.`);
			slave.trust -= 50;
			slave.devotion -= 50;
		} else if (tempMom.devotion < -20) {
			r.push(`and notices the <span class="mediumorchid">look of defeat</span> on ${his2} face; ${he} starts to <span class="gold">feel uncertain</span> about ${his} future.`);
			slave.trust -= 20;
			slave.devotion -= 20;
		} else if (tempMom.trust <= 50) {
			r.push(`and notices the <span class="gold">look of fear</span> on ${his2} face; when ${he} next glances at you, it is also <span class="gold">filled with fear.</span>`);
			slave.trust -= 40;
			slave.devotion -= 30;
		} else if (tempMom.devotion <= 50) {
			r.push(`and <span class="hotpink">notices the look of indifference</span> on ${his2} face; ${his} detached mother pushes ${him} to <span class="mediumaquamarine">trust you more.</span>`);
			slave.trust += 10;
			slave.devotion += 10;
		} else {
			r.push(`and <span class="hotpink">notices the look of dedication</span> on ${his2} face; ${his} devoted mother pushes ${him} to <span class="mediumaquamarine">trust you more.</span>`);
			slave.trust += 20;
			slave.devotion += 20;
		}
		if (tempMom.boobs > 10000) {
			r.push(`${His} eyes focus on${tempMom.slaveName}'s ${tempMom.boobs}cc tits, taking in every `);
			if (V.showInches === 2) {
				r.push(`inch`);
			} else {
				r.push(`centimeter`);
			}
			r.push(`of their enormity, but lingering on ${his2} `);
			if (tempMom.lactation === 2) {
				r.push(`milk gushing`);
			} else if (tempMom.lactation === 1) {
				r.push(`milk leaking`);
			}
			r.push(`${tempMom.nipples} nipples.`);
			momInterest = "boobs";
		} else if (tempMom.bellyPreg >= 450000) {
			r.push(`${His} eyes focus on${tempMom.slaveName}'s massively distended, child-filled belly, taking in every obvious motion beneath ${his2} taut skin.`);
			if (slave.readyOva >= 20) {
				r.push(`A hand runs across ${his} own bloated middle and another down to ${his} moist pussy.`);
			}
			momInterest = "belly";
		} else if (tempMom.belly >= 5000) {
			r.push(`${His} eyes focus on${tempMom.slaveName}'s rounded middle, staring in fascination at the unfamiliar bulge.`);
			if (slave.readyOva >= 20) {
				r.push(`A hand runs across ${his} own middle and another down to ${his} moist pussy.`);
			}
			momInterest = "belly";
		} else if (tempMom.dick > 15) {
			r.push(`${His} eyes focus on${tempMom.slaveName}'s ${dickToEitherUnit(tempMom.dick).replace("es", "")} long dick, trying to understand how it can fit in a girl.`);
			momInterest = "dick";
		} else if (tempMom.balls > 60) {
			r.push(`${His} eyes focus on${tempMom.slaveName}'s ${ballsToEitherUnit(tempMom.balls).replace("es", "")} long testicles, taking in every`);
			if (V.showInches === 2) {
				r.push(`inch`);
			} else {
				r.push(`centimeter`);
			}
			r.push(`of their enormity, before shifting to the cum steadily drooling from `);
			if (tempMom.dick > 0) {
				r.push(`the tip of ${his2} dick.`);
			} else {
				r.push(`the hole in ${his2} crotch.`);
			}
			momInterest = "balls";
		} else if (tempMom.hips > 2) {
			r.push(`${His} eyes focus on${tempMom.slaveName}'s abnormally wide hips. ${He} runs ${his} hands down ${his} own sides, pondering how such a wonder occurs.`);
			momInterest = "hips";
		} else if (tempMom.butt > 12) {
			r.push(`${His} eyes focus on${tempMom.slaveName}'s massive ass, staring in fascination at every jiggle that runs through it.`);
			momInterest = "butt";
		} else if (tempMom.dick > 0 && tempMom.vagina > -1) {
			r.push(`${His} eyes focus on${tempMom.slaveName}'s crotch, staring in wonder and confusion at the presence of both a penis and a vagina.`);
		} else if (tempMom.dick === 0 && tempMom.vagina === -1 && tempMom.scrotum === 0) {
			r.push(`${His} eyes focus on${tempMom.slaveName}'s crotch, staring in wonder and confusion at the lack of any sexual organs.`);
		} else if (isAmputee(tempMom)) {
			r.push(`${His} eyes dart from limb to missing limb on${tempMom.slaveName}'s body, trying desperately to understand what happened to them.`);
		} else if (hasAnyProstheticLimbs(tempMom)) {
			r.push(`${His} eyes dart from limb to prosthetic limb on${tempMom.slaveName}'s body, trying desperately to understand what these wonderful things are and how ${he} could get ${his} own.`);
		}
	}

	if (tempDad !== 0 && slave.father !== slave.mother) {
		({
			he2, his2, He2
		} = getPronouns(tempDad).appendSuffix("2"));
		r.push(`${He} glances at ${his} father`);
		if (tempDad.relationship === -3) {
			if (tempDad.fetish === "mindbroken") {
				r.push(`and notices how dull the look on ${his2} face is.${tempDad.slaveName} is standing there blankly. ${He2} doesn't even recognize ${his2} ${daughter}, frightening the poor ${girl}.`);
				slave.trust -= 25;
				slave.devotion -= 10;
			} else if (tempDad.devotion + tempDad.trust >= 175) {
				r.push(`and <span class="hotpink">notices how happy</span> the look on ${his2} face is.${tempDad.slaveName} is positively beaming with pride at `);
				if (slave.mother === -1) {
					r.push(`the result of your union.`);
				} else {
					r.push(`${his2} addition to your harem.`);
				}
				slave.trust += 35;
				slave.devotion += 35;
			} else if (tempDad.devotion < -20 && tempDad.trust > 20) {
				r.push(`and notices the look of hatred on ${his2} face.${tempDad.slaveName} scowls at ${his2} unwelcome spawn, frightening the poor ${girl} into your arms.`);
				slave.trust -= 50;
				slave.devotion += 50;
			} else if (tempDad.devotion < -20) {
				r.push(`and notices the <span class="mediumorchid">look of defeat</span> on ${his2} face.${tempDad.slaveName} immediately tears up when ${he2} `);
				if (canSee(tempDad)) {
					r.push(`sees`);
				} else {
					r.push(`faces`);
				}
				if (slave.mother === -1) {
					r.push(`the result of your union.`);
				} else {
					r.push(`${his2} addition to your harem.`);
				}
				slave.trust -= 30;
				slave.devotion -= 30;
			} else {
				r.push(`and <span class="hotpink">notices how obedient</span> the look on ${his2} face is.${tempDad.slaveName} is eagerly awaiting your reaction to `);
				if (slave.mother === -1) {
					r.push(`the result of your union.`);
				} else {
					r.push(`${his2} addition to your harem.`);
				}
				slave.trust += 25;
				slave.devotion += 25;
			}
		} else if (tempDad.ID === V.ConcubineID) {
			r.push(`and notices <span class="hotpink">how happy</span> the look on ${his2} face is. ${S.Concubine.slaveName} is positively beaming with pride at ${his2} addition to your harem.`);
			slave.trust += 30;
			slave.devotion += 30;
		} else if (tempDad.ID === V.BodyguardID) {
			r.push(`and notices how ${he2} focuses more on you than ${himself2}. ${S.Bodyguard.slaveName}'s dedication to your life has certainly influenced ${him}.`);
			slave.trust += 40;
			slave.devotion += 20;
		} else if (tempDad.ID === V.HeadGirlID) {
			r.push(`and notices how much ${his2} look takes after your own. ${S.HeadGirl.slaveName}'s dedication to you has <span class="hotpink">certainly influenced ${him}.</span>`);
			slave.trust += 20;
			slave.devotion += 20;
		} else if (tempDad.devotion < -50) {
			r.push(`and <span class="mediumorchid">notices the look of hatred</span> on ${his2} face; a <span class="gold">look of terror</span> across ${his} own when ${his} eyes return to you.`);
			slave.trust -= 50;
			slave.devotion -= 50;
		} else if (tempDad.devotion < -20) {
			r.push(`and notices the <span class="mediumorchid">look of defeat</span> on ${his2} face; ${he} starts to <span class="gold">feel uncertain</span> about ${his} future.`);
			slave.trust -= 20;
			slave.devotion -= 20;
		} else if (tempDad.trust <= 50) {
			r.push(`and notices the <span class="gold">look of fear</span> on ${his2} face; when ${he} next glances at you, it is also <span class="gold">filled with fear.</span>`);
			slave.trust -= 40;
			slave.devotion -= 30;
		} else if (tempDad.devotion <= 50) {
			r.push(`and <span class="hotpink">notices the look of indifference</span> on ${his2} face; ${his} detached father pushes ${him} to <span class="mediumaquamarine">trust you more.</span>`);
			slave.trust += 10;
			slave.devotion += 10;
		} else {
			r.push(`and <span class="hotpink">notices the look of dedication</span> on ${his2} face; ${his} devoted father pushes ${him} to <span class="mediumaquamarine">trust you more.</span>`);
			slave.trust += 20;
			slave.devotion += 20;
		}
		if (tempDad.boobs > 10000) {
			r.push(`${His} eyes focus on${tempDad.slaveName}'s ${tempDad.boobs} cc tits, taking in every `);
			if (V.showInches === 2) {
				r.push(`inch`);
			} else {
				r.push(`centimeter`);
			}
			r.push(`of their enormity, but lingering on ${his2}`);
			if (tempDad.lactation === 2) {
				r.push(`milk gushing`);
			} else if (tempDad.lactation === 1) {
				r.push(`milk leaking`);
			}
			r.push(`${tempDad.nipples} nipples.`);
			dadInterest = "boobs";
		} else if (tempDad.bellyPreg >= 450000) {
			r.push(`${His} eyes focus on${tempDad.slaveName}'s massively distended, child-filled belly, taking in every obvious motion beneath ${his2} taut skin.`);
			if (slave.readyOva >= 20) {
				r.push(`A hand runs across ${his} own bloated middle and another down to ${his} moist pussy.`);
			}
			dadInterest = "belly";
		} else if (tempDad.belly >= 5000) {
			r.push(`${His} eyes focus on${tempDad.slaveName}'s rounded middle, staring in fascination at the unfamiliar bulge.`);
			if (slave.readyOva >= 20) {
				r.push(`A hand runs across ${his} own middle and another down to ${his} moist pussy.`);
			}
			dadInterest = "belly";
		} else if (tempDad.dick > 15) {
			r.push(`${His} eyes focus on${tempDad.slaveName}'s ${dickToEitherUnit(tempDad.dick).replace("es", "")} long dick, trying to understand how it can fit in anybody.`);
			dadInterest = "dick";
		} else if (tempDad.balls > 60) {
			r.push(`${His} eyes focus on${tempDad.slaveName}'s ${ballsToEitherUnit(tempDad.balls).replace("es", "")} long testicles, taking in every `);
			if (V.showInches === 2) {
				r.push(`inch`);
			} else {
				r.push(`centimeter`);
			}
			r.push(`of their enormity, before shifting to the cum steadily drooling from `);
			if (tempDad.dick > 0) {
				r.push(`the tip of ${his2} dick.`);
			} else {
				r.push(`the hole in ${his2} crotch.`);
			}
			dadInterest = "balls";
		} else if (tempDad.hips > 2) {
			r.push(`${His} eyes focus on${tempDad.slaveName}'s abnormally wide hips. ${He} runs ${his} hands down ${his} own sides, pondering how such a wonder occurs.`);
			dadInterest = "hips";
		} else if (tempDad.butt > 12) {
			r.push(`${His} eyes focus on${tempDad.slaveName}'s massive ass, staring in fascination at every jiggle that runs through it.`);
			dadInterest = "butt";
		} else if (tempDad.dick > 0 && tempDad.vagina > -1) {
			r.push(`${His} eyes focus on${tempDad.slaveName}'s crotch, staring in wonder and confusion at the presence of both a penis and a vagina.`);
		} else if (tempDad.dick === 0 && tempDad.vagina === -1 && tempDad.scrotum === 0) {
			r.push(`${His} eyes focus on${tempDad.slaveName}'s crotch, staring in wonder and confusion at the lack of any sexual organs.`);
		} else if (isAmputee(tempDad)) {
			r.push(`${His} eyes dart from limb to missing limb on${tempDad.slaveName}'s body, trying desperately to understand what happened to them.`);
		} else if (hasAnyProstheticLimbs(tempDad)) {
			r.push(`${His} eyes dart from limb to prosthetic limb on${tempDad.slaveName}'s body, trying desperately to understand what these wonderful things are and how ${he} could get ${his} own.`);
		}
	}

	App.Events.addParagraph(el, r);

	r = [];

	if (tempMom !== 0 && tempDad !== 0 && slave.father !== slave.mother) {
		r.push(`You dismiss ${tempMom.slaveName} and ${tempDad.slaveName} so that you may conduct a more intimate inspection of their ${daughter}.`);
	} else if (tempMom !== 0) {
		({
			he2, his2, He2
		} = getPronouns(tempMom).appendSuffix("2"));
		r.push(`You dismiss ${tempMom.slaveName} so that you may conduct a more intimate inspection of ${his2} ${daughter}.`);
	} else if (tempDad !== 0) {
		({
			he2, his2, He2
		} = getPronouns(tempDad).appendSuffix("2"));
		r.push(`You dismiss ${tempDad.slaveName} so that you may conduct a more intimate inspection of ${his2} ${daughter}.`);
	}
	r.push(`You slowly strip down, gauging ${his} reactions to your show, until you are fully nude before ${him}.`);

	if (slave.vagina > -1) {
		if ((V.PC.dick !== 0) && (V.PC.boobs >= 300)) {
			r.push(`${He} notices ${he} has the same parts as you, and <span class="mediumaquamarine">connects a little more</span> with a fellow girl.`);
			slave.trust += 4;
		} else if (V.PC.dick !== 0) {
			r.push(`${He} notices your privates differ from ${hers}, and thanks to the tank's teachings, <span class="hotpink">can't look away.</span>`);
			slave.devotion += 4;
			if (V.incubatorReproductionSetting > 0) {
				r.push(`${He} seems a little alarmed at ${his} nipples and clit stiffening to the `);
				if (canSee(slave)) {
					r.push(`sight`);
				} else {
					r.push(`presence`);
				}
				r.push(`of your dick.`);
			}
		}
	} else if (slave.dick > 0) {
		if ((V.PC.dick !== 0) && (V.PC.boobs < 300)) {
			r.push(`${He} notices ${he} has the same parts as you, and <span class="mediumaquamarine">connects a little more</span> with a fellow boy.`);
			slave.trust += 4;
		} else if (V.PC.vagina !== -1) {
			r.push(`${He} notices your privates differ from ${hers}, and thanks to the tank's teachings, <span class="hotpink">can't look away.</span>`);
			slave.devotion += 4;
			if (V.incubatorReproductionSetting > 0) {
				r.push(`${He} seems a little alarmed at ${his} dick `);
				if (canAchieveErection(slave)) {
					r.push(`rapidly stiffening`);
				} else {
					r.push(`engorging`);
				}
				r.push(`to the `);
				if (canSee(slave)) {
					r.push(`sight`);
				} else {
					r.push(`presence`);
				}
				r.push(`of your pussy.`);
			}
		}
	}

	if (V.incubatorReproductionSetting > 0) {
		if (((slave.attrXX > 50) || (slave.behavioralQuirk === "adores women")) && (slave.behavioralFlaw !== "hates women") && (slave.trust >= -20)) {
			if (V.PC.boobs >= 900) {
				r.push(`${He} seems to think you're pretty, and is more willing to <span class="hotpink">try for your approval</span> than ${he} would otherwise be. ${He} openly ogles your rack at every opportunity.`);
				slave.devotion += 4;
			}
		}
		if ((slave.behavioralFlaw === "hates women") && (slave.devotion <= 50)) {
			if ((V.PC.dick === 0) && (V.PC.boobs >= 500)) {
				r.push(`${He} obviously does not find you immediately attractive, and is <span class="mediumorchid">less eager to conciliate you</span> than ${he} would otherwise be.`);
				slave.devotion -= 5;
			}
		}
		if (((slave.attrXY > 50) || (slave.behavioralQuirk === "adores men")) && (slave.behavioralFlaw !== "hates men") && (slave.trust >= -20)) {
			if ((V.PC.dick !== 0) && (V.PC.boobs < 300)) {
				r.push(`${He} seems to think you're handsome, and is more willing to <span class="hotpink">try for your approval</span> than ${he} would otherwise be. ${He} ogles your crotch at every opportunity.`);
				slave.devotion += 4;
			}
		}
	}

	if (V.PC.pregKnown === 1) {
		if (V.PC.career === "escort") {
			if (V.PC.preg >= 16) {
				r.push(`${He} is fascinated by your pregnancy, to the point that ${he} attempts a gesture to let you know ${he} wants to feel it. Just this once, you permit ${him} to touch your belly${(slave.pubertyXX === 1) ? `, since it is likely ${he} ${himself} will be swollen with child before long` : ``}. ${He} eagerly rubs it all over before pushing ${his} ear to it, provoking a kick and a gasp in response. ${He} instinctively connects to you and trusts you like a mother.`);
				slave.trust += 2;
				slave.devotion += 2;
			}
		} else {
			if (V.PC.preg >= 16 && V.PC.belly >= 1500) {
				r.push(`${He} is fascinated by your pregnancy, to the point that ${he} attempts a gesture to let you know ${he} wants to feel it. Just this once, you permit ${him} to touch your belly${(slave.pubertyXX === 1) ? `, since it is likely ${he} ${himself} will be swollen with child before long` : ``}. ${He} eagerly rubs it all over before pushing ${his} ear to it, provoking a kick and a gasp in response. ${He} instinctively connects to you and trusts you like a mother.`);
				slave.trust += 2;
				slave.devotion += 2;
			}
		}
	}

	if (V.PC.boobs >= 1000) {
		r.push(`Now that you are alone with ${him}, ${he} seems incapable of pulling ${his} eyes off your huge tits. Every motion and jiggle in them is reflected in ${his} expression. ${He} licks ${his} lips as ${he} gazes at your erect nipples, but it will be you who decides who may suck on them. Though it doesn't stop ${him} from longing to nurse from you.`);
		slave.devotion += 5;
	}

	if (V.enduringTrust > 20) {
		if (slave.trust >= -20) {
			r.push(`${He} notices that most of the slaves ${he} sees around your penthouse seem to trust you; in turn <span class="mediumaquamarine">${he} trusts you more too.</span>`);
			slave.trust += 2;
		}
	} else {
		if (slave.trust < 50) {
			r.push(`${He} notices that most of the slaves ${he} sees around your penthouse seem to fear you; in turn <span class="gold">${he} fears you more too.</span>`);
			slave.trust -= 2;
		}
	}
	if (V.enduringDevotion > 20) {
		if (slave.devotion >= -20) {
			r.push(`${He} sees that most of the slaves ${he} sees around your penthouse like you; in turn <span class="hotpink">${he} likes you more too.</span>`);
			slave.devotion += 1;
		}
	} else {
		if (slave.devotion <= 50) {
			r.push(`${He} sees that most of the slaves ${he} sees around your penthouse dislike you; in turn <span class="mediumorchid">${he} dislikes you more too.</span>`);
			slave.devotion -= 2;
		}
	}

	if (V.PC.career === "escort") {
		r.push(`${He} seems to <span class="mediumaquamarine">like your clothes</span> and <span class="hotpink">wants a set of ${his} own.</span>`);
		slave.devotion += 1;
		slave.trust += 1;
	} else if (V.PC.career === "servant") {
		r.push(`${He} seems to <span class="mediumaquamarine">think your clothes are cute</span> and <span class="hotpink">wants a set of ${his} own.</span>`);
		slave.devotion += 1;
		slave.trust += 1;
	} else if (V.PC.career === "gang") {
		r.push(`${He} seems to <span class="gold">find your appearance frightening.</span>`);
		slave.trust -= 5;
	}
	if (V.PC.rumor === "force") {
		r.push(`${He} seems to <span class="gold">be terrified of your forceful stance.</span>`);
		slave.trust -= 10;
	} else if (V.PC.rumor === "diligence") {
		r.push(`${He} seems to <span class="mediumaquamarine">find your diligence enjoyable.</span>`);
		slave.trust += 5;
	}

	if (slave.accent >= 3) {
		r.push(`${He} barely understands ${V.language} at all, and scarcely understands what's happening to ${him}. This leaves ${him} blissfully unaware of what awaits ${him}, since ${he}'s too naïve to know better.`);
		slave.trust += 25;
	}

	if (V.arcologies[0].FSSupremacist >= 50) {
		if (slave.race === V.arcologies[0].FSSupremacistRace) {
			r.push(`${He} noticed everybody else is the same race as ${him}, and <span class="mediumaquamarine">feels right at home among them.</span>`);
			slave.trust += 2;
		}
	}
	if (V.arcologies[0].FSSubjugationist >= 50) {
		if (slave.race === V.arcologies[0].FSSubjugationistRace) {
			r.push(`${He} noticed a lot of your other slaves are the same race as ${him}, and <span class="mediumaquamarine">feels right at home among them,</span> despite what it means.`);
			slave.trust += 2;
		}
	}
	if (V.arcologies[0].FSRepopulationFocus >= 50) {
		if (slave.readyOva > 0) {
			r.push(`${He} notices all the rounded bellies in your arcology and <span class="mediumaquamarine">instinctively feels at home with ${his} egg filled womb.</span>`);
			slave.trust += 2;
		}
	}
	if (V.arcologies[0].FSGenderFundamentalist >= 50) {
		r.push(`${He} notices there are lots of girls in your penthouse, making ${him} <span class="mediumaquamarine">more comfortable.</span>`);
		slave.trust += 2;
	}
	if (V.arcologies[0].FSGenderRadicalist >= 50) {
		r.push(`${He} notices there are lots of girly boys in your penthouse, making ${him} <span class="mediumaquamarine">more comfortable.</span>`);
		slave.trust += 2;
	}
	if (V.arcologies[0].FSHedonisticDecadence >= 50) {
		if (slave.weight > 50) {
			r.push(`${He} noticed all fat slaves lazing about your penthouse; ${he} pats ${his} own soft belly, <span class="mediumaquamarine">feeling right at home.</span>`);
			slave.trust += 2;
		}
	}
	if (V.arcologies[0].FSPaternalist >= 50) {
		r.push(`${He} sees how happy your other slaves are, and can't help but <span class="mediumaquamarine">feel happy</span> ${himself}.`);
		slave.trust += 2;
	}
	if (V.arcologies[0].FSDegradationist >= 50) {
		r.push(`${He} sees how your other slaves cower as you pass, and can't help but <span class="mediumaquamarine">feel uneasy around you.</span>`);
		slave.trust -= 5;
	}

	if (V.arcologies[0].FSPaternalistLaw === 1) {
		r.push(`${He} `);
		if (canSee(slave)) {
			r.push(`saw`);
		} else if (canHear(slave)) {
			r.push(`overheard`);
		} else {
			r.push(`passed through`);
		}
		r.push(`a good deal of your arcology and its society on ${his} way to your penthouse, and was amazed by all the happy, healthy slaves. ${He} begins to trust that ${he}'ll be one of them, and anticipates playing with all ${his} happy friends.`);
		slave.trust += 4;
		slave.devotion += 4;
	}

	// Normal intro stuff
	el.append(
		App.UI.newSlaveIntro(
			slave,
			null,
			{
				tankBorn: true,
				momInterest: momInterest,
				dadInterest: dadInterest
			}
		)
	);

	return el;

	function parentNaming(parent) {
		const el = new DocumentFragment();
		({
			he2, his2, He2, wife2
		} = getPronouns(parent).appendSuffix("2"));
		if (parent.ID === V.ConcubineID) {
			App.UI.DOM.appendNewElement(
				"div",
				el,
				App.UI.DOM.link(
					`Permit your Concubine to name ${his2} ${daughter}`,
					() => {
						parentNames(parent, slave);
						slave.birthName = slave.slaveName;
						jQuery("#naming").empty().append(`After some careful consideration, ${parent.slaveName} picks a name ${he2} thinks you might find attractive; from now on ${his2} ${daughter} will be known as "${slave.slaveName}".`);
						const slaveName = document.createElement("span");
						slaveName.classList.add('slave-name');
						slaveName.append(slave.slaveName);
						jQuery("#newName").empty().append(slaveName);
					}
				)
			);
		} else if (parent.relationship === -3 && (parent.devotion >= -20)) {
			App.UI.DOM.appendNewElement(
				"div",
				el,
				App.UI.DOM.link(
					`Permit your ${wife2} to name ${his2} ${daughter}`,
					() => {
						parentNames(parent, slave);
						slave.birthName = slave.slaveName;
						jQuery("#naming").empty().append(`After some careful consideration, ${parent.slaveName} picks a name suitable for your ${daughter}; from now on ${he2} will be known as "${slave.slaveName}".`);
						const slaveName = document.createElement("span");
						slaveName.classList.add('slave-name');
						slaveName.append(slave.slaveName);
						jQuery("#newName").empty().append(slaveName);
					}
				)
			);
		} else if (parent.ID === V.BodyguardID) {
			App.UI.DOM.appendNewElement(
				"div",
				el,
				App.UI.DOM.link(
					`Permit your bodyguard to name ${his2} ${daughter}`,
					() => {
						parentNames(parent, slave);
						slave.birthName = slave.slaveName;
						jQuery("#naming").empty().append(`After some careful consideration, ${parent.slaveName} decides on "${slave.slaveName}" for ${his2} daughter. ${He2} hopes you'll find it fitting ${his} station.`);
						const slaveName = document.createElement("span");
						slaveName.classList.add('slave-name');
						slaveName.append(slave.slaveName);
						jQuery("#newName").empty().append(slaveName);
					}
				)
			);
		} else if (parent.ID === V.HeadGirlID) {
			App.UI.DOM.appendNewElement(
				"div",
				el,
				App.UI.DOM.link(
					`Permit your Head Girl to name ${his2} ${daughter}`,
					() => {
						parentNames(parent, slave);
						slave.birthName = slave.slaveName;
						jQuery("#naming").empty().append(`After some careful consideration, ${parent.slaveName} decides on "${slave.slaveName}" for ${his2} daughter, and hopes it will be a name your other slaves will learn to respect.`);
						const slaveName = document.createElement("span");
						slaveName.classList.add('slave-name');
						slaveName.append(slave.slaveName);
						jQuery("#newName").empty().append(slaveName);
					}
				)
			);
		} else if (parent.devotion > 50 && parent.trust > 50) {
			App.UI.DOM.appendNewElement(
				"div",
				el,
				App.UI.DOM.link(
					`Permit ${his} devoted mother to name ${his2} ${daughter}`,
					() => {
						parentNames(parent, slave);
						slave.birthName = slave.slaveName;
						jQuery("#naming").empty().append(`After some careful consideration, ${tempMom.slaveName} picks a name ${he2} hopes you'll like; from now on ${his2} ${daughter} will be known as "${slave.slaveName}".`);
						const slaveName = document.createElement("span");
						slaveName.classList.add('slave-name');
						slaveName.append(slave.slaveName);
						jQuery("#newName").empty().append(slaveName);
					}
				)
			);
		}
		return el;
	}
};