code:
/**
 * @param {App.Entity.SlaveState} slave
 * @returns {string}
 */
App.Desc.upperFace = function(slave) {
	const r = [];
	const {
		he, him, his, He, His
	} = getPronouns(slave);
	if (slave.fuckdoll === 0) {
		switch (slave.clothes) {
			case "restrictive latex":
				r.push(`The upper half of ${his} face is covered by the hood of ${his} latex suit: though`);
				if (canSee(slave)) {
					r.push(`${he} can see through eye-holes, these can easily be closed to blind ${him}.`);
				} else {
					r.push(`there are eye-holes, they are currently closed due to their lack of use.`);
				}
				break;
			case "harem gauze":
				r.push(`${His} harem outfit includes the traditional veil for ${his} face.`);
				break;
			case "a burkini":
				r.push(`Above ${his} shoulders, ${his} burkini leaves only ${his} face bare.`);
				break;
			case "a hijab and blouse":
				r.push(`Above the shoulders of ${his} blouse, ${his} hijab leaves only ${his} face bare.`);
				break;
			case "a hijab and abaya":
				r.push(`Above the shoulders of ${his} abaya, ${his} hijab leaves only ${his} face bare.`);
				break;
			case "a niqab and abaya":
				r.push(`Above the shoulders of ${his} abaya, ${his} niqab leaves only the area around ${his} eyes bare.`);
				break;
			case "a klan robe":
			case "a slutty klan robe":
				r.push(`Above the shoulders of ${his} robe, ${his} hood leaves only the area around ${his} eyes bare.`);
				break;
			case "a burqa":
				r.push(`${His} burqa near totally covers ${his} face, aside from what can be seen behind the fabric mesh that covers ${his} eyes.`);
				break;
			case "a chattel habit":
				r.push(`A golden circlet crowns ${his} white cowl, securing ${his} habit to ${his} head.`);
				break;
			case "a succubus outfit":
				r.push(`${He} has a pair of false horns sprouting from just behind ${his} hairline and sweeping backward, which are anchored to a wire headband hidden by ${his} hair.`);
				break;
			case "a bunny outfit":
				r.push(`A pair of bunny ears sprout from a headband atop ${his} head.`);
				break;
		}
		if (slave.eyewear === "corrective glasses" || slave.eyewear === "blurring glasses" || slave.eyewear === "glasses") {
			r.push(`${He}'s wearing a pair of`);
			const clothing = App.Data.clothes.get(slave.clothes);
			if (clothing && clothing.desc && "upperFace" in clothing.desc) {
				r.push(clothing.desc.upperFace(slave));
			} else {
				switch (slave.clothes) {
					case "chains":
					case "shibari ropes":
					case "uncomfortable straps":
					case "a chattel habit":
					case "overalls":
					case "Western clothing":
						r.push(`sturdy glasses,`);
						break;
					case "restrictive latex":
						r.push(`glasses over the hood,`);
						break;
					case "a ball gown":
					case "conservative clothing":
					case "cutoffs and a t-shirt":
					case "a halter top dress":
					case "a maternity dress":
					case "a courtesan dress":
						r.push(`nice frameless glasses,`);
						break;
					case "body oil":
						r.push(`big retro glasses,`);
						break;
					case "slutty business attire":
						r.push(`horn-rimmed glasses to accent ${his} business attire,`);
						break;
					case "a schoolgirl outfit":
						r.push(`horn-rimmed glasses to improve ${his} schoolgirl look,`);
						break;
					case "nice business attire":
						r.push(`wire-frame glasses to accent ${his} business attire,`);
						break;
					case "attractive lingerie":
					case "attractive lingerie for a pregnant woman":
					case "an apron":
					case "a hijab and blouse":
						r.push(`feminine glasses,`);
						break;
					case "kitty lingerie":
						r.push(`cat-eye glasses,`);
						break;
					case "a succubus outfit":
						r.push(`severe steel-frame glasses,`);
						break;
					case "harem gauze":
					case "slutty jewelry":
						r.push(`glasses with golden wire frames,`);
						break;
					case "a burqa":
					case "a niqab and abaya":
					case "a penitent nuns habit":
					case "a klan robe":
					case "a slutty klan robe":
						r.push(`cheap glasses,`);
						break;
					case "a gothic lolita dress":
						r.push(`Victorian-styled glasses,`);
						break;
					case "a hanbok":
						r.push(`folding spectacle glasses,`);
						break;
					case "a police uniform":
						r.push(`aviator sunglasses,`);
						break;
					case "a Santa dress":
						r.push(`antique reading glasses,`);
						break;
					case "a bunny outfit":
					case "a monokini":
						r.push(`girly retro glasses,`);
						break;
					case "a hijab and abaya":
					case "a huipil":
					case "a kimono":
					case "a long qipao":
					case "a nice maid outfit":
					case "a slutty qipao":
					case "a slutty maid outfit":
						r.push(`an old fashioned pair of horn rimmed glasses,`);
						break;
					case "a fallen nuns habit":
					case "a cheerleader outfit":
					case "a slutty nurse outfit":
						r.push(`a daring pair of horn rimmed glasses,`);
						break;
					case "clubslut netting":
					case "a string bikini":
					case "striped panties":
					case "a bimbo outfit":
						r.push(`a pair of girly pastel glasses,`);
						break;
					case "a scalemail bikini":
						r.push(`a pair of ancient-looking glasses,`);
						break;
					case "a burkini":
					case "a one-piece swimsuit":
						r.push(`swim goggles,`);
						break;
					default:
						r.push(`simple wire-frame glasses,`);
				}
			}
			if (getBestVision(slave) === 0) {
				r.push(`which, since ${he} is <span class="red">blind,</span> are just for show. ${He} moves carefully as to not bump into things.`);
			} else {
				if (slave.eyewear === "blurring glasses") {
					if (anyVisionEquals(slave, 2)) {
						r.push(`which are designed to blur ${his} vision, making ${him} clumsy.`);
					} else {
						r.push(`which do nothing to help ${his} <span class="yellow">nearsightedness</span> and consequent clumsiness.`);
					}
				} else if (slave.eyewear === "corrective glasses") {
					if (anyVisionEquals(slave, 1)) {
						r.push(`which correct ${his} vision.`);
					} else {
						r.push(`which are just for show.`);
					}
				} else {
					r.push(`which are just for show.`);
				}
			}
		} else {
			if (!canSee(slave)) {
				r.push(`${He} is <span class="red">blind,</span> and moves very carefully as a result.`);
			} else if (!canSeePerfectly(slave)) {
				if (slave.eyewear === "blurring contacts") {
					r.push(`${He}'s wearing contacts designed to blur ${his} vision, making ${him} clumsy.`);
				} else {
					r.push(`${He}'s <span class="yellow">nearsighted,</span> and a bit clumsy as a result.`);
				}
			} else {
				if (slave.eyewear === "corrective contacts") {
					r.push(`${He}'s wearing contact lenses to correct ${his} <span class="yellow">nearsightedness.</span>`);
				}
			}
		}

		if (slave.earwear === "hearing aids" || slave.earwear === "muffling ear plugs" || slave.earwear === "deafening ear plugs") {
			r.push(`In ${his} ears, ${he} wears`);
			if (slave.earwear === "hearing aids") {
				r.push(`a pair of hearing aids,`);
				if (slave.hears > -1) {
					r.push(`which do little to correct ${his} already adequate hearing.`);
				} else if (slave.hears === -1) {
					r.push(`which are used to correct ${his} <span class="yellow">hearing impairment.</span>`);
				} else if (slave.hears < -1) {
					r.push(`which, due to ${his} <span class="red">deafness,</span> are useless.`);
				}
			} else if (slave.earwear === "muffling ear plugs") {
				r.push(`a pair of small foam ear plugs,`);
				if (slave.hears > -1) {
					r.push(`which noticeably <span class="yellow">muffle ${his} hearing.</span>`);
				} else if (slave.hears === -1) {
					r.push(`which are pointless, as ${he} is already <span class="yellow">hard of hearing.</span>`);
				} else if (slave.hears < -1) {
					r.push(`which are pointless, as ${he} is totally <span class="red">deaf.</span>`);
				}
			} else if (slave.earwear === "deafening ear plugs") {
				r.push(`a pair of large silicone ear plugs,`);
				if (slave.hears > -1) {
					r.push(`which <span class="red">nullify ${his} sense of hearing.</span>`);
				} else if (slave.hears === -1) {
					r.push(`which impair ${his} hearing to the point of <span class="red">deafness.</span>`);
				} else if (slave.hears < -1) {
					r.push(`which are pointless, as ${he} is already <span class="red">deaf.</span>`);
				}
			}
		} else {
			if (slave.hears === -1) {
				r.push(`${He}'s <span class="yellow">hard of hearing,</span> and a bit nervous as a result.`);
			} else if (slave.hears < -1) {
				r.push(`${He} is <span class="red">deaf,</span> and overly paranoid as a result.`);
			}
		}
	} else {
		r.push(`${His} face is featurelessly obscured by the Fuckdoll suit from the top of ${his} head down to ${his} face hole.`);
	}

	return r.join(" ");
};

license: mit


code:
/**
 * @param {App.Entity.SlaveState} slave
 * @returns {string}
 */
App.Desc.upperBack = function(slave) {
	const r = [];
	const {
		him, he, He, his, His, himself
	} = getPronouns(slave);

	r.push(`On ${his} back,`);

	if (slave.wingsShape === "angel") {
		r.push(`${he} has a pair of ${slave.appendagesColor} angelic wings${slave.appendagesEffect === "none" ? `` : ` that have ${slave.appendagesEffect} on them`}. They give ${him} a noble appearance.`);
	} else if (slave.wingsShape === "seraph") {
		r.push(`${he} has three pairs of majestic-looking, ${slave.appendagesColor} angel wings${slave.appendagesEffect === "none" ? `` : ` that have ${slave.appendagesEffect} on them`} and can move simultaneously.`);
	} else if (slave.wingsShape === "demon") {
		r.push(`${he} has a pair of sleek and sexy, ${slave.appendagesColor} demonic wings${slave.appendagesEffect === "none" ? `` : ` that have ${slave.appendagesEffect} on them`}. ${He} tends to wrap them around ${himself} when ${he}'s being flirty.`);
	} else if (slave.wingsShape === "dragon") {
		r.push(`${he} has a pair of imposing, ${slave.appendagesColor} draconic wings${slave.appendagesEffect === "none" ? `` : ` that have ${slave.appendagesEffect} on them`}; they tend to create a small breeze when ${he} flaps them.`);
	} else if (slave.wingsShape === "phoenix") {
		r.push(`${he} has a pair of magnificent, ${slave.appendagesColor} phoenix wings${slave.appendagesEffect === "none" ? `` : ` that have ${slave.appendagesEffect} on them`}; they give off a luminescent glow when shrouded in darkness.`);
	} else if (slave.wingsShape === "bird") {
		r.push(`${he} has a pair of soft ${slave.appendagesColor} feathered wings${slave.appendagesEffect === "none" ? `` : ` that have ${slave.appendagesEffect} on them`}.`);
	} else if (slave.wingsShape === "fairy") {
		r.push(`${he} has a pair of dainty and translucent, ${slave.appendagesColor} fairy wings${slave.appendagesEffect === "none" ? `` : ` that have ${slave.appendagesEffect} on them`}. They are shaped like leaves and tend to flutter when ${he}'s excited.`);
	} else if (slave.wingsShape === "butterfly") {
		r.push(`${he} has a pair of big and broad, ${slave.appendagesColor} butterfly wings${slave.appendagesEffect === "none" ? `` : ` that have ${slave.appendagesEffect}`} and have iridescent patterns on them. ${His} wings tend to flutter when excited.`);
	} else if (slave.wingsShape === "moth") {
		r.push(`${he} has a pair of big and soft, ${slave.appendagesColor} moth wings${slave.appendagesEffect === "none" ? `` : ` that have ${slave.appendagesEffect}`} and have distinct ${slave.patternColor} patterns on them. ${His} wings tend to flutter when excited.`);
	} else if (slave.wingsShape === "insect") {
		r.push(`${he} has a pair of delicate, transparent insect wings that tend to flutter when ${he}'s excited.`);
	} else if (slave.wingsShape === "evil") {
		r.push(`${he} has a pair of ${slave.appendagesColor} fiendish-looking wings${slave.appendagesEffect === "none" ? `` : ` that have ${slave.appendagesEffect} on them`}. They have a sinister and unsettling look to them.`);
	} else if (slave.appendages === "falcon") {
		r.push(`${he} has a pair of large, ${slave.appendagesColor} wings${slave.appendagesEffect === "none" ? `` : ` that have ${slave.appendagesEffect} on them`}. They're made of advanced synthetic alloys. The wings enable fast aerial movement, swiping at targets with its razor sharp edges and can be used to block projectiles.`);
	} else if (slave.appendages === "arachnid") {
		r.push(`${he} has a set of eight ${slave.appendagesColor} deadly spider legs. The legs are made of an advanced synthetic alloy. Being extremely durable in addition to very light, allows extension to thrice their original length. An built-in AI helps with combat, 3-dimensional maneuvering and appendage coordination.`);
	} else if (slave.appendages === "kraken") {
		r.push(`${he} has a set of eight, ${slave.appendagesColor} tentacles${slave.appendagesEffect === "none" ? `` : ` that have ${slave.appendagesEffect} on them`}. The tentacles are made of an advanced synthetic alloy. Being extremely durable in addition to very light, allows the tentacles to extend to thrice their original length. An built-in AI helps with combat, 3-dimensional maneuvering and appendage coordination.`);
	} else if (slave.appendages === "sex") {
		r.push(`${he} has a set of eight, ${slave.appendagesColor} pleasure appendages${slave.appendagesEffect === "none" ? `` : ` that have ${slave.appendagesEffect} on them`}. The lithe appendages all have different shaped tips with vibration and lube dispensation built-in.`);
	} else if (slave.appendages === "flight") {
		r.push(`${he} has a pair of large, ${slave.appendagesColor} metallic wings${slave.appendagesEffect === "none" ? `` : ` that have ${slave.appendagesEffect} on them`}. Its durable frame, made of advanced materials, is sufficiently lightweight to allow its small thrusters to support flight while being strong enough to sustain structural integrity.`);
	}

	if (slave.PBack === 0 && slave.wingsShape !== "none"){
		r.push(` ${He} was born with them and they are completely natural.`);
	}

	if (slave.fuckdoll > 0){
		r.push(` Since ${he}'s a fuckdoll, the ability to move ${his} wings on ${his} own has been disabled.`);
	}

	return r.join(" ");
};


code:
/**
 * @param {App.Entity.SlaveState} slave
 * @returns {string}
 */
App.Desc.waist = function(slave) {
	/**
	 * @type {Array<string>}
	 */
	const r = [];
	const {
		he, him, his, girl, He, His, woman
	} = getPronouns(slave);

	let belly;
	if (slave.belly >= 1500) {
		belly = bellyAdjective(slave);
	}

	r.push(`${He} has`);
	if (slave.waist > 95) {
		r.push(`a badly <span class="red">masculine waist</span> that ruins ${his}`);
		if (slave.weight > 30) {
			r.push(`figure and greatly exaggerates how fat ${he} is.`);
		} else if (slave.weight < -30) {
			r.push(`figure despite how thin ${he} is.`);
		} else {
			r.push(`figure.`);
		}
		if (slave.belly >= 1500) {
			if (slave.belly < 300000) {
				r.push(`${His} ${belly} belly is hidden by ${his} thick waist.`);
			} else if (slave.belly < 450000) {
				r.push(`${His} ${belly} belly can be seen around ${his} thick waist.`);
			} else if (slave.belly < 600000) {
				r.push(`${His} ${belly} belly can clearly be seen around ${his} thick waist.`);
				if (slave.preg > 3) {
					if (slave.belly > (slave.pregAdaptation * 1000)) {
						r.push(`${His} waist is swollen wider than usual by ${his} crowded womb in its search for more room, leaving ${his} original waistline only visible from behind.`);
					} else {
						r.push(`However, ${his} body is so adapted to pregnancy that ${his} womb rests forward enough to preserve the shape of ${his} waistline.`);
					}
				}
			} else if (slave.belly < 750000) {
				r.push(`${His} ${belly} belly lewdly bulges around ${his} thick waist.`);
				if (slave.preg > 3) {
					if (slave.belly > (slave.pregAdaptation * 1000)) {
						r.push(`${His} waist is greatly distended by ${his} overfilled womb in its desperate search for more room, leaving ${his} original waistline only visible from behind.`);
					} else {
						r.push(`However, ${his} body is so adapted to pregnancy that ${his} womb rests forward enough to preserve the shape of ${his} waistline.`);
					}
				}
			} else {
				r.push(`${His} ${belly} belly grotesquely bulges around ${his} thick waist.`);
				if (slave.preg > 3) {
					if (slave.belly > (slave.pregAdaptation * 1000)) {
						r.push(`${His} waist is horribly distended by ${his} bursting womb in a last ditch effort to find more room for ${his} children, leaving ${his} original waistline barely visible from behind.`);
					} else {
						r.push(`However, ${his} body is so adapted to pregnancy that ${his} womb rests forward enough to preserve the shape of ${his} waistline.`);
					}
				}
			}
		}
	} else if (slave.waist > 40) {
		r.push(`a broad, <span class="red">ugly waist</span> that makes ${him} look`);
		if (slave.weight > 30) {
			r.push(`mannish and exaggerates how fat ${he} is.`);
		} else if (slave.weight < -30) {
			r.push(`mannish despite how thin ${he} is.`);
		} else {
			r.push(`mannish.`);
		}
		if (slave.belly >= 1500) {
			if (slave.belly < 150000) {
				r.push(`${His} ${belly} belly is hidden by ${his} chunky waist.`);
			} else if (slave.belly < 450000) {
				r.push(`${His} ${belly} belly can be seen around ${his} chunky waist.`);
			} else if (slave.belly < 600000) {
				r.push(`${His} ${belly} belly can clearly be seen around ${his} chunky waist.`);
				if (slave.preg > 3) {
					if (slave.belly > (slave.pregAdaptation * 1000)) {
						r.push(`${His} waist is swollen wider than usual by ${his} crowded womb in its search for more room, leaving ${his} original waistline only visible from behind.`);
					} else {
						r.push(`However, ${his} body is so adapted to pregnancy that ${his} womb rests forward enough to preserve the shape of ${his} waistline.`);
					}
				}
			} else if (slave.belly < 750000) {
				r.push(`${His} ${belly} belly lewdly bulges around ${his} chunky waist.`);
				if (slave.preg > 3) {
					if (slave.belly > (slave.pregAdaptation * 1000)) {
						r.push(`${His} waist is greatly distended by ${his} overfilled womb in its desperate search for more room, leaving ${his} original waistline only visible from behind.`);
					} else {
						r.push(`However, ${his} body is so adapted to pregnancy that ${his} womb rests forward enough to preserve the shape of ${his} waistline.`);
					}
				}
			} else {
				r.push(`${His} ${belly} belly grotesquely bulges around ${his} chunky waist.`);
				if (slave.preg > 3) {
					if (slave.belly > (slave.pregAdaptation * 1000)) {
						r.push(`${His} waist is horribly distended by ${his} bursting womb in a last ditch effort to find more room for ${his} children, leaving ${his} original waistline barely visible from behind.`);
					} else {
						r.push(`However, ${his} body is so adapted to pregnancy that ${his} womb rests forward enough to preserve the shape of ${his} waistline.`);
					}
				}
			}
		}
	} else if (slave.waist > 10) {
		r.push(`an <span class="red">unattractive waist</span> that conceals ${his}`);
		if (slave.physicalAge <= 25) {
			r.push(`girlish`);
		} else {
			r.push(`womanly`);
		}
		if (slave.weight > 30) {
			r.push(`figure and accentuates how fat ${he} is.`);
		} else if (slave.weight < -30) {
			r.push(`figure despite how thin ${he} is.`);
		} else {
			r.push(`figure.`);
		}
		r.push(...normalWaistBelly());
	} else if (slave.waist >= -10) {
		let frag = `an average waist for a `;
		if (slave.physicalAge <= 25) {
			frag += `${girl}`;
		} else {
			frag += `${woman}`;
		}
		if (slave.weight > 30) {
			frag += `, though it looks broader since ${he}'s fat`;
		} else if (slave.weight < -30) {
			frag += `, though it looks narrower since ${he}'s thin`;
		}
		frag += `.`;
		r.push(frag);
		r.push(...normalWaistBelly());
	} else if (slave.waist >= -40) {
		r.push(`a nice <span class="pink">feminine waist</span> that gives ${him} a`);
		if (slave.physicalAge <= 25) {
			r.push(`girlish`);
		} else {
			r.push(`womanly`);
		}
		if (slave.weight > 30) {
			r.push(`figure despite ${his} extra weight.`);
		} else if (slave.weight < -30) {
			r.push(`figure and accentuates how thin ${he} is.`);
		} else {
			r.push(`figure.`);
		}
		r.push(...normalWaistBelly());
	} else if (slave.waist >= -95) {
		r.push(`a hot <span class="pink">wasp waist</span> that gives ${him} an hourglass`);
		if (slave.weight > 30) {
			r.push(`figure despite ${his} extra weight.`);
		} else if (slave.weight < -30) {
			r.push(`figure further accentuated by how thin ${he} is.`);
		} else {
			r.push(`figure.`);
		}
		if (slave.belly >= 1500) {
			if (slave.belly < 5000) {
				r.push(`From behind, ${his} narrow figure hides ${his} ${belly} belly.`);
			} else if (slave.belly < 80000) {
				r.push(`From behind, ${his} narrow figure barely hides ${his} ${belly} belly.`);
			} else if (slave.belly < 100000) {
				r.push(`${His} ${belly} belly can be seen around ${his} narrow waist.`);
			} else if (slave.belly < 450000) {
				r.push(`${His} ${belly} belly lewdly extends past ${his} narrow waist.`);
			} else {
				r.push(...narrowWaistLargeBelly());
			}
		}
	} else {
		r.push(`an <span class="pink">absurdly narrow waist</span> that gives ${him} a cartoonishly hourglass`);
		if (slave.weight > 30) {
			r.push(`figure made even more ludicrous by ${his} extra weight.`);
		} else if (slave.weight < -30) {
			r.push(`figure made even more ludicrous by how thin ${he} is.`);
		} else {
			r.push(`figure.`);
		}
		if (slave.belly >= 1500) {
			if (slave.belly < 2000) {
				r.push(`From behind, ${his} narrow figure hides ${his} ${belly} belly.`);
			} else if (slave.belly < 5000) {
				r.push(`From behind, ${his} narrow figure barely hides ${his} ${belly} belly.`);
			} else if (slave.belly < 8000) {
				r.push(`${His} ${belly} belly can be seen around ${his} narrow waist.`);
			} else if (slave.belly < 15000) {
				r.push(`${His} ${belly} belly lewdly extends past ${his} narrow waist.`);
			} else if (slave.belly < 45000) {
				r.push(`${His} ${belly} belly lewdly distends far to either side of ${his} narrow waist.`);
			} else {
				r.push(...narrowWaistLargeBelly());
			}
		}
	}
	return r.join(" ");

	/**
	 * @returns {Array<string>}
	 */
	function normalWaistBelly() {
		/** @type {Array<string>} */
		const r = [];
		if (slave.belly >= 1500) {
			if (slave.belly < 10000) {
				r.push(`From behind, ${his} figure hides ${his} ${belly} belly.`);
			} else if (slave.belly < 200000) {
				r.push(`From behind, ${his} figure barely hides ${his} ${belly} belly.`);
			} else if (slave.belly < 300000) {
				r.push(`${His} ${belly} belly can be seen around ${his} waist.`);
			} else if (slave.belly < 450000) {
				r.push(`${His} ${belly} belly can clearly be seen around ${his} waist.`);
			} else if (slave.belly < 600000) {
				r.push(`${His} ${belly} belly can clearly be seen around ${his} waist.`);
				if (slave.preg > 3) {
					if (slave.belly > (slave.pregAdaptation * 1000)) {
						r.push(`${His} waist is swollen wider than usual by ${his} crowded womb in its search for more room, leaving ${his} original waistline only visible from behind.`);
					} else {
						r.push(`However, ${his} body is so adapted to pregnancy that ${his} womb rests forward enough to preserve the shape of ${his} waistline.`);
					}
				}
			} else if (slave.belly < 750000) {
				r.push(`${His} ${belly} belly lewdly bulges around ${his} waist.`);
				if (slave.preg > 3) {
					if (slave.belly > (slave.pregAdaptation * 1000)) {
						r.push(`${His} waist is greatly distended by ${his} overfilled womb in its desperate search for more room, leaving ${his} original waistline only visible from behind.`);
					} else {
						r.push(`However, ${his} body is so adapted to pregnancy that ${his} womb rests forward enough to preserve the shape of ${his} waistline.`);
					}
				}
			} else {
				r.push(`${His} ${belly} belly grotesquely bulges around ${his} waist.`);
				if (slave.preg > 3) {
					if (slave.belly > (slave.pregAdaptation * 1000)) {
						r.push(`${His} waist is horribly distended by ${his} bursting womb in a last ditch effort to find more room for ${his} children, leaving ${his} original waistline barely visible from behind.`);
					} else {
						r.push(`However, ${his} body is so adapted to pregnancy that ${his} womb rests forward enough to preserve the shape of ${his} waistline.`);
					}
				}
			}
		}
		return r;
	}

	/**
	 * @returns {Array<string>}
	 */
	function narrowWaistLargeBelly() {
		/** @type {Array<string>} */
		const r = [];
		if (slave.belly < 600000) {
			r.push(`${His} ${belly} belly lewdly distends far to either side of ${his} narrow waist.`);
			if (slave.preg > 3) {
				if (slave.belly > (slave.pregAdaptation * 1000)) {
					r.push(`${His} waist is swollen wider than usual by ${his} crowded womb in its search for more room, leaving ${his} original waistline only visible from behind.`);
				} else {
					r.push(`However, ${his} body is so adapted to pregnancy that ${his} womb rests forward enough to preserve the shape of ${his} waistline.`);
				}
			}
		} else if (slave.belly < 750000) {
			r.push(`${His} ${belly} belly lewdly bulges to either side of ${his} narrow waist and continues for nearly half a`);
			if (V.showInches === 2) {
				r.push(`yard`);
			} else {
				r.push(`meter`);
			}
			r.push(`in both directions.`);
			if (slave.preg > 3) {
				if (slave.belly > (slave.pregAdaptation * 1000)) {
					r.push(`${His} waist is greatly distended by ${his} overfilled womb in its desperate search for more room, leaving ${his} original waistline barely visible from behind.`);
				} else {
					r.push(`However, ${his} body is so adapted to pregnancy that ${his} womb rests forward enough to preserve the shape of ${his} waistline.`);
				}
			}
		} else {
			r.push(`${His} ${belly} belly grotesquely bulges around ${his} narrow waist and continues`);
			if (slave.belly >= 1000000) {
				r.push(`quite the distance`);
			} else {
				r.push(`over half a`);
				if (V.showInches === 2) {
					r.push(`yard`);
				} else {
					r.push(`meter`);
				}
			}
			r.push(`farther to either side.`);
			if (slave.preg > 3) {
				if (slave.belly > (slave.pregAdaptation * 1000)) {
					r.push(`${His} waist is horribly distended by ${his} bursting womb in a last ditch effort to find more room for ${his} children, leaving ${his} original waistline barely visible from behind.`);
				} else {
					r.push(`However, ${his} body is so adapted to pregnancy that ${his} womb rests forward enough to preserve the shape of ${his} waistline.`);
				}
			}
		}
		return r;
	}
};


code:
/**
 * @param {App.Entity.SlaveState} slave
 * @param {DescType} [descType=DescType.NORMAL]
 * @returns {string}
 */
App.Desc.pregnancy = function(slave, descType = DescType.NORMAL) {
	const r = [];
	const {
		he, him, his, himself, He, His
	} = getPronouns(slave);
	let daddy;
	if (slave.pregSource > 0) {
		const lsd = findFather(slave.pregSource);
		if (lsd) {
			daddy = SlaveFullName(lsd);
		} else {
			daddy = "partner";
		}
	} else if (slave.pregSource in V.missingTable && V.showMissingSlaves) {
		daddy = V.missingTable[slave.pregSource].fullName;
	}

	if (slave.preg === -2 && slave.vagina < 0 && slave.mpreg === 0) {
		// TODO: write me
	} else if ((slave.preg <= -3) && (slave.ovaries === 1 || slave.mpreg === 1)) {
		r.push(`${He} is sterilized.`);
	} else if ((slave.preg <= -2) && (slave.ovaries === 1 || slave.mpreg === 1)) {
		r.push(`${He} is sterile.`);
	} else if ((slave.pregWeek < 0) && (slave.ovaries === 1 || slave.mpreg === 1)) {
		r.push(`${He} is recovering from ${his} recent pregnancy.`);
	} else if (slave.preg === 0 && slave.vagina > -1) {
		if (slave.readyOva > 30) {
			r.push(`${His} lower belly is noticeably bloated, ${his} breasts bigger and more sensitive, and ${his} pussy swollen and leaking fluids. ${He} desperately needs a dick in ${him} and reminds you of a bitch in heat.`);
		} else if (slave.readyOva > 20) {
			r.push(`${His} lower belly is noticeably bloated and ${his} pussy swollen and leaking fluids. ${He} is very ready to be seeded.`);
		} else if (slave.readyOva > 2) {
			r.push(`${His} lower belly is slightly bloated and ${his} pussy swollen and leaking fluids. ${He} is ready to be seeded.`);
		}
	} else if (slave.bellyPreg >= 1000000) {
		r.push(`${He} is <span class="pink">impossibly pregnant</span> with`);
		if (slave.preg >= slave.pregData.normalBirth * 1.375) {
			if (slave.pregType === 1) {
				r.push(`a single full grown child.`);
			} else if (slave.pregType >= 10) {
				r.push(`${slave.pregType} overgrown babies.`);
			} else {
				r.push(`overgrown ${pregNumberName(slave.pregType, 2)}.`);
			}
			r.push(`${He} is horrifically overdue; ${he} should have given birth a staggering ${(slave.preg - slave.pregData.normalBirth)} weeks ago.`);
		} else if (slave.preg >= slave.pregData.normalBirth * 1.25) {
			if (slave.pregType === 1) {
				r.push(`a single full grown child.`);
			} else if (slave.pregType >= 10) {
				r.push(`${slave.pregType} overgrown babies.`);
			} else {
				r.push(`overgrown ${pregNumberName(slave.pregType, 2)}.`);
			}
			r.push(`${He} is extremely overdue; ${he} should have given birth ${(slave.preg - slave.pregData.normalBirth)} weeks ago.`);
		} else if (slave.preg >= slave.pregData.normalBirth * 1.075) {
			if (slave.pregType === 1) {
				r.push(`a single full grown child.`);
			} else if (slave.pregType >= 10) {
				r.push(`${slave.pregType} overgrown babies.`);
			} else {
				r.push(`overgrown ${pregNumberName(slave.pregType, 2)}.`);
			}
			r.push(`${He} is very overdue; ${he} should have given birth ${(slave.preg - slave.pregData.normalBirth)} weeks ago.`);
		} else {
			r.push(`a staggering ${slave.pregType} babies.`);
		}
		r.push(App.Desc.superfetation(slave, descType));
	} else if (slave.bellyPreg >= 750000) {
		r.push(`${He} is`);
		if (slave.belly > (slave.pregAdaptation * 1000)) {
			r.push(`<span class="red">on the brink of bursting!</span> ${His} belly is painfully stretched and ${his} womb packed to capacity; the slightest provocation could cause ${him} to rupture.`);
		} else {
			r.push(`<span class="pink">unbelievably pregnant</span> with ${slave.pregType} babies.`);
		}
		if (slave.preg >= slave.pregData.normalBirth * 1.375) {
			r.push(`${He} is horrifically overdue; ${he} should have given birth a staggering ${(slave.preg - slave.pregData.normalBirth)} weeks ago.`);
		} else if (slave.preg >= slave.pregData.normalBirth * 1.25) {
			r.push(`${He} is extremely overdue; ${he} should have given birth ${(slave.preg - slave.pregData.normalBirth)} weeks ago.`);
		} else if (slave.preg >= slave.pregData.normalBirth * 1.075) {
			r.push(`${He} is very overdue; ${he} should have given birth ${(slave.preg - slave.pregData.normalBirth)} weeks ago.`);
		}
		r.push(App.Desc.superfetation(slave, descType));
	} else if (slave.bellyImplant >= 750000) {
		r.push(`${He} looks <span class="red">ready to pop!</span> ${His} middle is`);
		if (slave.belly > (slave.pregAdaptation * 1000)) {
			r.push(`painfully`);
		} else {
			r.push(`frighteningly`);
		}
		r.push(`stretched by ${his} straining ${slave.bellyImplant}cc belly implant. It is well past its recommended capacity and at risk of rupturing.`);
	} else if (slave.bellyPreg >= 600000) {
		r.push(`${He} is <span class="pink">dangerously pregnant,</span> ${his} overburdened womb is filled with`);
		fullBelly();
	} else if (slave.bellyImplant >= 600000) {
		r.push(`${He} looks <span class="pink">dangerously pregnant.</span> ${His} middle is massively stretched by ${his} absurdly overfilled ${slave.bellyImplant}cc belly implant.`);
	} else if (slave.bellyPreg >= 450000) {
		r.push(`${He} is <span class="pink">grotesquely pregnant,</span> ${his} womb is packed with`);
		fullBelly();
	} else if (slave.bellyImplant >= 450000) {
		r.push(`${He} looks <span class="pink">absurdly pregnant.</span> ${His} middle is massively stretched by ${his} overfilled ${slave.bellyImplant}cc belly implant.`);
	} else if (slave.bellyPreg >= 300000) {
		r.push(`${He} is <span class="pink">absurdly pregnant</span> with`);
		if (slave.preg >= slave.pregData.normalBirth * 1.375) {
			overgrownBaby1();
		} else if (slave.preg >= slave.pregData.normalBirth * 1.25) {
			overGrownBaby2();
		} else if (slave.preg >= slave.pregData.normalBirth * 1.075) {
			overgrownBaby3();
		} else {
			r.push(`${slave.pregType} children.`);
		}
		r.push(App.Desc.superfetation(slave, descType));
	} else if (slave.bellyImplant >= 300000) {
		r.push(`${He} looks <span class="pink">absurdly pregnant.</span> ${His} overburdened middle is filled by ${his} ${slave.bellyImplant}cc belly implant.`);
	} else if (slave.bellyPreg >= 120000) {
		r.push(`${He} is`);
		if (slave.preg >= slave.pregData.normalBirth * 1.375) {
			r.push(`<span class="pink">obscenely pregnant</span> with`);
			overgrownBaby1();
		} else if (slave.preg >= slave.pregData.normalBirth * 1.25) {
			r.push(`<span class="pink">obscenely pregnant</span> with`);
			overGrownBaby2();
		} else if (slave.preg >= slave.pregData.normalBirth * 1.075) {
			r.push(`<span class="pink">obscenely pregnant</span> with`);
			overgrownBaby3();
		} else if (slave.pregType > 9) {
			r.push(`<span class="pink">obscenely pregnant</span> with`);
			manyChildren();
		} else {
			r.push(`<span class="pink">obscenely pregnant:</span> ${he}'s`);
			if (slave.pregType === 9) {
				r.push(`almost ready to give birth to nonuplets.`);
			} else {
				r.push(`ready to give birth to octuplets.`);
			}
		}
		r.push(App.Desc.superfetation(slave, descType));
	} else if (slave.bellyImplant >= 120000) {
		r.push(`${He} looks <span class="pink">obscenely pregnant with octuplets.</span> ${His} overburdened middle is filled by ${his} ${slave.bellyImplant}cc belly implant.`);
	} else if (slave.bellyPreg >= 15000) {
		r.push(`${He} is`);
		if (slave.bellyPreg >= 105000) {
			if (slave.preg >= slave.pregData.normalBirth * 1.375) {
				massivelyPregnantOvergrownBaby1();
			} else if (slave.preg >= slave.pregData.normalBirth * 1.25) {
				massivelyPregnantOvergrownBaby2();
			} else if (slave.preg >= slave.pregData.normalBirth * 1.075) {
				massivelyPregnantOvergrownBaby3();
			} else if (slave.pregType > 8) {
				massivelyPregnantManyChildren();
			} else {
				r.push(`<span class="pink">massively pregnant:</span> ${he}'s`);
				if (slave.pregType === 8) {
					r.push(`almost ready to give birth to octuplets.`);
				} else {
					r.push(`ready to give birth to septuplets.`);
				}
			}
		} else if (slave.bellyPreg >= 90000) {
			if (slave.preg >= slave.pregData.normalBirth * 1.375) {
				massivelyPregnantOvergrownBaby1();
			} else if (slave.preg >= slave.pregData.normalBirth * 1.25) {
				massivelyPregnantOvergrownBaby2();
			} else if (slave.preg >= slave.pregData.normalBirth * 1.075) {
				massivelyPregnantOvergrownBaby3();
			} else if (slave.pregType > 7) {
				massivelyPregnantManyChildren();
			} else {
				r.push(`<span class="pink">massively pregnant:</span> ${he}'s`);
				if (slave.pregType === 7) {
					r.push(`almost ready to give birth to septuplets.`);
				} else if (slave.pregType === 3) {
					r.push(`ready to give birth to triplets.`);
				} else if (slave.pregType === 4) {
					r.push(`ready to give birth to quadruplets.`);
				} else if (slave.pregType === 5) {
					r.push(`ready to give birth to quintuplets.`);
				} else {
					r.push(`ready to give birth to sextuplets.`);
				}
			}
		} else if (slave.bellyPreg >= 75000) {
			if (slave.preg >= slave.pregData.normalBirth * 1.375) {
				massivelyPregnantOvergrownBaby1();
			} else if (slave.preg >= slave.pregData.normalBirth * 1.25) {
				massivelyPregnantOvergrownBaby2();
			} else if (slave.preg >= slave.pregData.normalBirth * 1.075) {
				massivelyPregnantOvergrownBaby3();
			} else if (slave.pregType > 6) {
				massivelyPregnantManyChildren();
			} else {
				r.push(`<span class="pink">massively pregnant:</span> ${he}'s`);
				if (slave.pregType === 6) {
					r.push(`almost ready to give birth to sextuplets.`);
				} else if (slave.pregType === 3) {
					r.push(`ready to give birth to triplets.`);
				} else {
					r.push(`ready to give birth to quintuplets.`);
				}
			}
		} else if (slave.bellyPreg >= 60000) {
			if (slave.preg >= slave.pregData.normalBirth * 1.375) {
				massivelyPregnantOvergrownBaby1();
			} else if (slave.preg >= slave.pregData.normalBirth * 1.25) {
				massivelyPregnantOvergrownBaby2();
			} else if (slave.preg >= slave.pregData.normalBirth * 1.075) {
				massivelyPregnantOvergrownBaby3();
			} else if (slave.pregType > 5) {
				massivelyPregnantManyChildren();
			} else {
				r.push(`<span class="pink">massively pregnant:</span> ${he}'s`);
				if (slave.pregType === 5) {
					r.push(`almost ready to give birth to quintuplets.`);
				} else if (slave.pregType === 2) {
					r.push(`ready to give birth to twins.`);
				} else if (slave.pregType === 3) {
					r.push(`ready to give birth to triplets.`);
				} else {
					r.push(`ready to give birth to quadruplets.`);
				}
			}
		} else if (slave.bellyPreg >= 45000) {
			if (slave.preg >= slave.pregData.normalBirth * 1.375) {
				massivelyPregnantOvergrownBaby1();
			} else if (slave.preg >= slave.pregData.normalBirth * 1.25) {
				massivelyPregnantOvergrownBaby2();
			} else if (slave.preg >= slave.pregData.normalBirth * 1.075) {
				massivelyPregnantOvergrownBaby3();
			} else if (slave.pregType > 4) {
				massivelyPregnantManyChildren();
			} else {
				r.push(`<span class="pink">massively pregnant:</span> ${he}'s`);
				if (slave.pregType === 4) {
					r.push(`almost ready to give birth to quadruplets.`);
				} else if (slave.pregType === 2) {
					r.push(`ready to give birth to twins.`);
				} else {
					r.push(`ready to give birth to triplets.`);
				}
			}
		} else if (slave.bellyPreg >= 30000) {
			if (slave.preg >= slave.pregData.normalBirth * 1.375) {
				massivelyPregnantOvergrownBaby1();
			} else if (slave.preg >= slave.pregData.normalBirth * 1.25) {
				massivelyPregnantOvergrownBaby2();
			} else if (slave.preg >= slave.pregData.normalBirth * 1.075) {
				massivelyPregnantOvergrownBaby3();
			} else if (slave.pregType > 3) {
				massivelyPregnantManyChildren();
			} else {
				r.push(`<span class="pink">massively pregnant:</span> ${he}'s`);
				if (slave.pregType === 3) {
					r.push(`almost ready to give birth to triplets.`);
				} else if (WombGetFetalSizeSum(slave) < 30000) {
					r.push(`ready to give birth.`);
				} else {
					r.push(`ready to give birth to twins.`);
				}
			}
		} else {
			if (slave.preg >= slave.pregData.normalBirth * 1.375) {
				massivelyPregnantOvergrownBaby1();
			} else if (slave.preg >= slave.pregData.normalBirth * 1.25) {
				massivelyPregnantOvergrownBaby2();
			} else if (slave.preg >= slave.pregData.normalBirth * 1.075) {
				massivelyPregnantOvergrownBaby3();
			} else if (slave.pregType > 2) {
				massivelyPregnantManyChildren();
			} else {
				r.push(`<span class="pink">massively pregnant:</span> ${he}'s`);
				if (slave.pregType === 2) {
					r.push(`almost ready to give birth to twins.`);
				} else {
					r.push(`ready to give birth.`);
				}
			}
		}
		r.push(App.Desc.superfetation(slave, descType));
	} else if (slave.bellyImplant >= 105000) {
		r.push(`${He} looks <span class="pink">massively pregnant with septuplets.</span> ${His} greatly rounded middle is filled by ${his} ${slave.bellyImplant}cc belly implant.`);
	} else if (slave.bellyImplant >= 90000) {
		r.push(`${He} looks <span class="pink">massively pregnant with sextuplets.</span> ${His} greatly rounded middle is filled by ${his} ${slave.bellyImplant}cc belly implant.`);
	} else if (slave.bellyImplant >= 75000) {
		r.push(`${He} looks <span class="pink">massively pregnant with quintuplets.</span> ${His} greatly rounded middle is filled by ${his} ${slave.bellyImplant}cc belly implant.`);
	} else if (slave.bellyImplant >= 60000) {
		r.push(`${He} looks <span class="pink">massively pregnant with quadruplets.</span> ${His} greatly rounded middle is filled by ${his} ${slave.bellyImplant}cc belly implant.`);
	} else if (slave.bellyImplant >= 45000) {
		r.push(`${He} looks <span class="pink">massively pregnant with triplets.</span> ${His} greatly rounded middle is filled by ${his} ${slave.bellyImplant}cc belly implant.`);
	} else if (slave.bellyImplant >= 30000) {
		r.push(`${He} looks <span class="pink">massively pregnant with twins.</span> ${His} greatly rounded middle is filled by ${his} ${slave.bellyImplant}cc belly implant.`);
	} else if (slave.bellyImplant >= 15000) {
		r.push(`${He} looks <span class="pink">massively pregnant.</span> ${His} greatly rounded middle is filled by ${his} ${slave.bellyImplant}cc belly implant.`);
	} else if (slave.bellyPreg >= 10000) {
		r.push(`${He} is`);
		if (slave.pregType > 2) {
			r.push(`<span class="pink">hugely pregnant,</span> despite how early in ${his} pregnancy ${he} is: ${he}'s carrying`);
			manyChildren();
		} else {
			r.push(`<span class="pink">hugely pregnant:</span> ${he}'s`);
			if (slave.pregType === 2) {
				r.push(`carrying twins.`);
			} else {
				r.push(`almost ready to give birth.`);
			}
		}
		r.push(App.Desc.superfetation(slave, descType));
	} else if (slave.bellyImplant >= 10000) {
		r.push(`${He} looks <span class="pink">hugely pregnant.</span> ${He} greatly rounded middle is filled by ${his} ${slave.bellyImplant}cc belly implant.`);
	} else if (slave.bellyPreg >= 5000) {
		r.push(`${He} is`);
		if (slave.pregType > 2) {
			r.push(`<span class="pink">very pregnant,</span> despite how early in ${his} pregnancy ${he} is: ${he}'s carrying`);
			manyChildren();
		} else {
			r.push(`<span class="pink">very pregnant:</span>`);
			if (slave.pregType === 2) {
				r.push(`${he}'s carrying twins.`);
			} else {
				r.push(`the baby inside ${him} is growing rapidly.`);
			}
		}
		r.push(App.Desc.superfetation(slave, descType));
	} else if (slave.bellyImplant >= 5000) {
		r.push(`${He} looks <span class="pink">very pregnant.</span> ${He} rounded middle is filled by ${his} ${slave.bellyImplant}cc belly implant.`);
	} else if (slave.bellyPreg >= 1500) {
		r.push(`${He} is`);
		if (slave.pregType > 2) {
			r.push(`<span class="pink">visibly pregnant,</span> despite how early in ${his} pregnancy ${he} is: ${he}'s carrying`);
			manyChildren();
		} else {
			r.push(`<span class="pink">visibly pregnant.</span>`);
		}
		r.push(App.Desc.superfetation(slave, descType));
	} else if (slave.bellyImplant >= 1500) {
		r.push(`${He} looks <span class="pink">visibly pregnant.</span> ${He} rounded middle is caused by ${his} ${slave.bellyImplant}cc belly implant.`);
	} else if (slave.bellyPreg >= 100) {
		r.push(`${He} is <span class="pink">pregnant</span> and just beginning to show, though it is hard to tell at a glance.`);
		r.push(App.Desc.superfetation(slave, descType));
	} else if (slave.bellyImplant > 0) {
		r.push(`${He} has an abdominal implant, though it doesn't round out ${his} belly too much yet at a tiny ${slave.bellyImplant}ccs.`);
	} else if (slave.bellyImplant === 0 && descType !== DescType.MARKET) {
		r.push(`${He} has an abdominal implant, but it is completely empty.`);
	} else if (slave.pregKnown === 1) {
		r.push(`${He} is <span class="pink">pregnant,</span> though it isn't visible yet.`);
		r.push(App.Desc.superfetation(slave, descType));
	} else if (slave.preg > 0 && slave.pregKnown === 0 && descType !== DescType.MARKET) {
		r.push(`${His} period is late.`);
	}
	if (slave.preg + 5 <= slave.pregWeek && slave.preg <= slave.pregData.normalBirth + 2 && slave.bellyPreg >= 100) {
		r.push(`Despite being pregnant for ${slave.pregWeek} weeks,`);
		if (slave.broodmother > 0) {
			if (slave.broodmotherOnHold > 0) {
				r.push(`${he} will be pregnant for another ${slave.broodmotherCountDown} weeks while ${his} remaining implant-induced pregnancies come to term.`);
			} else {
				r.push(`${he} will remain pregnant until ${his} broodmother implant is disabled.`);
			}
		} else if (slave.preg > slave.pregData.minLiveBirth && slave.preg + 10 <= slave.pregWeek) {
			r.push(`${his} pregnancy is finally nearing its end.`);
		} else if (slave.preg + slave.pregData.normalBirth <= slave.pregWeek) {
			if (slave.preg === slave.pregWeek / 2) {
				r.push(`${he} could shockingly pass for a girl half as far along.`);
			} else if (slave.preg === slave.pregWeek / 4) {
				r.push(`${he} could shockingly pass for a girl only a quarter as far along.`);
			} else {
				r.push(`${he} shockingly only looks like a girl on ${his} ${ordinalSuffix(Math.round(slave.preg))} week of pregnancy.`);
			}
		} else if (slave.preg + (slave.pregData.normalBirth / 2) <= slave.pregWeek) {
			if (slave.preg === slave.pregWeek / 2) {
				r.push(`${he} could surprisingly pass for a girl half as far along.`);
			} else if (slave.preg === slave.pregWeek / 4) {
				r.push(`${he} could surprisingly pass for a girl only a quarter as far along.`);
			} else {
				r.push(`${he} surprisingly only looks like a girl on ${his} ${ordinalSuffix(Math.round(slave.preg))} week of pregnancy.`);
			}
		} else if (slave.preg + (slave.pregData.normalBirth / 4) <= slave.pregWeek) {
			if (slave.preg === slave.pregWeek / 2) {
				r.push(`${he} could pass for a girl half as far along.`);
			} else if (slave.preg === slave.pregWeek / 4) {
				r.push(`${he} could pass for a girl only a quarter as far along.`);
			} else {
				r.push(`${he} only looks like a woman on ${his} ${ordinalSuffix(Math.round(slave.preg))} week of pregnancy.`);
			}
		} else {
			r.push(`${his} pregnancy is smaller than anticipated.`);
		}
	} else if (slave.preg > slave.pregWeek && slave.preg <= slave.pregData.normalBirth + 2 && slave.bellyPreg >= 100) {
		if (slave.preg > slave.pregData.minLiveBirth && slave.preg >= slave.pregWeek + 10) {
			r.push(`Even though ${he} is a mere ${slave.pregWeek} weeks along, ${his} pregnancy is at its end.`);
		} else if (slave.preg >= slave.pregWeek + (slave.pregData.normalBirth / 2.66)) {
			r.push(`Despite being pregnant for only ${slave.pregWeek} weeks,`);
			if (slave.preg === slave.pregWeek * 2) {
				r.push(`${he} could shockingly pass for a girl twice as far along.`);
			} else if (slave.preg === slave.pregWeek * 4) {
				r.push(`${he} could shockingly pass for a girl nearly four times as far along.`);
			} else {
				r.push(`${he} shockingly looks like a girl on ${his} ${ordinalSuffix(Math.round(slave.preg))} week of pregnancy.`);
			}
		} else if (slave.preg >= slave.pregWeek + (slave.pregData.normalBirth / 4)) {
			r.push(`Despite being pregnant for only ${slave.pregWeek} weeks,`);
			if (slave.preg === slave.pregWeek * 2) {
				r.push(`${he} could surprisingly pass for a girl twice as far along.`);
			} else if (slave.preg === slave.pregWeek * 4) {
				r.push(`${he} could surprisingly pass for a girl nearly four times as far along.`);
			} else {
				r.push(`${he} surprisingly looks like a girl on ${his} ${ordinalSuffix(Math.round(slave.preg))} week of pregnancy.`);
			}
		} else if (slave.preg >= slave.pregWeek + (slave.pregData.normalBirth / 8)) {
			r.push(`Despite being pregnant for only ${slave.pregWeek} weeks,`);
			if (slave.preg === slave.pregWeek * 2) {
				r.push(`${he} could pass for a girl twice as far along.`);
			} else if (slave.preg === slave.pregWeek * 4) {
				r.push(`${he} could pass for a girl nearly four times as far along.`);
			} else {
				r.push(`${he} looks like a woman on ${his} ${ordinalSuffix(Math.round(slave.preg))} week of pregnancy.`);
			}
		} else {
			r.push(`Despite being pregnant for only ${slave.pregWeek} weeks, ${his} pregnancy is larger than anticipated.`);
		}
	}
	if (slave.pregKnown === 1 && descType !== DescType.MARKET) {
		const slaveWD = WombGetLittersData(slave);
		if (slave.geneticQuirks.superfetation === 2 && slaveWD.litters.length > 1) {
			if (V.pregnancyMonitoringUpgrade !== 1) {
				const sameFatherID = slaveWD.litterData[0][0].fatherID;
				const sameFather = slaveWD.litterData.every(l => l[0].fatherID === sameFatherID);
				r.push(`${His} superfetation has resulted in multiple simultaneous pregnancies;`);
				if (!sameFather) {
					r.push(`tests report multiple different sources.`);
				} else {
					if (slaveWD.litterData[slaveWD.litters.length - 1][0].age <= slave.pregData.normalBirth / 8) {
						r.push(`all of them too young to tell the father of.`);
					} else if (slave.pregSource === -7) {
						r.push(`all of them modified children from the gene lab.`);
					} else if (slave.pregSource === -1) {
						r.push(`all of them yours.`);
					} else if (slave.pregSource === -2) {
						r.push(`all of them fathered by your citizens.`);
					} else if (slave.pregSource === -3) {
						r.push(`all of them fathered by your former Master. He was quite the busy man.`);
					} else if (slave.pregSource === -4) {
						r.push(`all of them fathered by another arcology owner.`);
					} else if (slave.pregSource === -5) {
						r.push(`all of them fathered by one of your clients.`);
					} else if (slave.pregSource === -6) {
						r.push(`all of them fathered by the Societal Elite.`);
					} else if (slave.pregSource === -9) {
						r.push(`all of them fathered by the Futanari Sisters, given how far along ${he} is and ${his} history.`);
					} else if (slave.pregSource === 0) {
						r.push(`all of them of unidentifiable sources.`);
					} else if (slave.pregSource === slave.ID) {
						r.push(`all of them ${his} own.`);
					} else {
						r.push(`all of them ${daddy}'s.`);
					}
				}
			}
		} else {
			if (slave.pregSource === -7) {
				r.push(`${His} womb contains`);
				if (slave.pregType > 1) {
					if (slave.pregType > 10) {
						r.push(`many`);
					}
					r.push(`modified children`);
				} else {
					r.push(`a modified child`);
				}
				r.push(`from the gene lab.`);
			} else if (slave.preg > slave.pregData.normalBirth / 8) {
				if (slave.pregSource === -1) {
					r.push(`Tests show ${his} womb contains`);
					if (slave.pregType > 1) {
						if (slave.pregType > 10) {
							r.push(`many of`);
						}
						r.push(`your growing children.`);
					} else {
						r.push(`your growing child.`);
					}
				} else if (slave.pregSource === -2) {
					r.push(`Tests show ${his} womb contains`);
					if (slave.pregType > 1) {
						if (slave.pregType > 10) {
							r.push(`many`);
						}
						r.push(`children`);
					} else {
						r.push(`a child`);
					}
					r.push(`fathered by one of your citizens.`);
				} else if (slave.pregSource === -3) {
					r.push(`Tests show ${his} womb contains`);
					if (slave.pregType > 1) {
						if (slave.pregType > 10) {
							r.push(`many`);
						}
						r.push(`children`);
					} else {
						r.push(`a child`);
					}
					r.push(`fathered by your former Master. He was quite the busy man.`);
				} else if (slave.pregSource === -4) {
					r.push(`Tests show ${his} womb contains`);
					if (slave.pregType > 1) {
						if (slave.pregType > 10) {
							r.push(`many`);
						}
						r.push(`children`);
					} else {
						r.push(`a child`);
					}
					r.push(`fathered by another arcology owner.`);
				} else if (slave.pregSource === -5) {
					r.push(`Tests show ${his} womb contains`);
					if (slave.pregType > 1) {
						if (slave.pregType > 10) {
							r.push(`many`);
						}
						r.push(`children`);
					} else {
						r.push(`a child`);
					}
					r.push(`fathered by one of your clients.`);
				} else if (slave.pregSource === -6) {
					r.push(`Tests show ${his} womb contains`);
					if (slave.pregType > 1) {
						if (slave.pregType > 10) {
							r.push(`many`);
						}
						r.push(`children`);
					} else {
						r.push(`a child`);
					}
					r.push(`fathered by the Societal Elite.`);
				} else if (slave.pregSource === -9) {
					r.push(`${His} womb contains`);
					if (slave.pregType > 1) {
						if (slave.pregType > 10) {
							r.push(`many`);
						}
						r.push(`children`);
					} else {
						r.push(`a child`);
					}
					r.push(`fathered by the Futanari Sisters, given how far along ${he} is and ${his} history.`);
				} else if (slave.pregSource === 0) {
					r.push(`Tests are inconclusive on who fathered the`);
					if (slave.pregType > 1) {
						if (slave.pregType > 10) {
							r.push(`many`);
						}
						r.push(`children`);
					} else {
						r.push(`child`);
					}
					r.push(`growing in ${his} womb.`);
				} else if (slave.pregSource === slave.ID) {
					r.push(`Tests show ${he} did this to ${himself}.`);
				} else {
					r.push(`Tests show ${his} womb contains`);
					if (slave.pregType > 1) {
						if (slave.pregType > 10) {
							r.push(`many of`);
						}
						r.push(`${daddy}'s growing children.`);
					} else {
						r.push(`${daddy}'s growing child.`);
					}
				}
			} else if (slave.partners.size === 1) {
				let daddy = slave.partners.values().next().value;

				if (daddy > 0) {
					if (daddy === slave.ID) {
						daddy = himself;
					} else {
						daddy = SlaveFullName(getSlave(daddy));
					}
				} else {
					let desc = {
						1: `you`,
						2: `one of the citizens of ${V.arcologies[0].name}`,
						3: `your former Master`,
						4: `the owner of another arcology`,
						6: `a member of the Societal Elite`,
						8: `one of your pets`,
						9: `a Futanari Sister`,
					};
					daddy = desc[Math.abs(daddy)];
				}

				r.push(`${His} ${slave.pregType > 1 ? `children were` : `child was`} fathered by ${daddy}.`);
			} else {
				r.push(`It is too early to tell who exactly fathered the child growing in ${his} womb.`);
			}
		}
	}
	if (slave.bellyPreg > (slave.pregAdaptation * 1000) || (slave.preg > slave.pregData.normalBirth / 2 && slave.womb.find((ft) => ft.genetics.geneticQuirks.polyhydramnios === 2 && ft.age >= 20))) {
		r.push(`${He} is undergoing a <span class="red">high risk pregnancy.</span>`);
	}

	if (slave.belly >= 10000) {
		r.push(`${His} belly is <span class="coral">large enough to be in the way,</span> both in daily affairs and during sex.`);
	}
	return r.join(" ");

	function fullBelly() {
		if (slave.preg >= slave.pregData.normalBirth * 1.375) {
			overgrownBaby1();
		} else if (slave.preg >= slave.pregData.normalBirth * 1.25) {
			overGrownBaby2();
		} else if (slave.preg >= slave.pregData.normalBirth * 1.075) {
			overgrownBaby3();
		} else {
			r.push(`${slave.pregType} babies.`);
		}
		r.push(App.Desc.superfetation(slave, descType));
	}

	function massivelyPregnantOvergrownBaby1() {
		r.push(`<span class="pink">massively pregnant</span> with`);
		overgrownBaby1();
	}

	function overgrownBaby1() {
		if (slave.pregType === 1) {
			r.push(`a single overgrown baby.`);
		} else if (slave.pregType >= 10) {
			r.push(`${slave.pregType} overgrown babies.`);
		} else {
			r.push(`overgrown ${pregNumberName(slave.pregType, 2)}.`);
		}
		r.push(`${He} is horrifically overdue; ${he} should have given birth a staggering ${(slave.preg - slave.pregData.normalBirth)} weeks ago.`);
	}

	function massivelyPregnantOvergrownBaby2() {
		r.push(`<span class="pink">massively pregnant</span> with`);
		overGrownBaby2();
	}

	function overGrownBaby2() {
		if (slave.pregType === 1) {
			r.push(`a single overgrown baby.`);
		} else if (slave.pregType >= 10) {
			r.push(`${slave.pregType} overgrown babies.`);
		} else {
			r.push(`overgrown ${pregNumberName(slave.pregType, 2)}.`);
		}
		r.push(`${He} is extremely overdue; ${he} should have given birth ${(slave.preg - slave.pregData.normalBirth)} weeks ago.`);
	}

	function massivelyPregnantOvergrownBaby3() {
		r.push(`<span class="pink">massively pregnant</span> with`);
		overgrownBaby3();
	}

	function overgrownBaby3() {
		if (slave.pregType === 1) {
			r.push(`a single overgrown baby.`);
		} else if (slave.pregType >= 10) {
			r.push(`${slave.pregType} overgrown babies.`);
		} else {
			r.push(`overgrown ${pregNumberName(slave.pregType, 2)}.`);
		}
		r.push(`${He} is very overdue; ${he} should have given birth ${(slave.preg - slave.pregData.normalBirth)} weeks ago.`);
	}

	function massivelyPregnantManyChildren() {
		r.push(`<span class="pink">massively pregnant</span> with`);
		manyChildren();
	}

	function manyChildren() {
		if (slave.pregType >= 50) {
			r.push(`an absurd number of children.`);
		} else if (slave.pregType >= 30) {
			r.push(`far too many children.`);
		} else if (slave.pregType >= 10) {
			r.push(`${slave.pregType} children.`);
		} else {
			r.push(`${pregNumberName(slave.pregType, 2)}.`);
		}
	}
};


code:
/**
 * @param {App.Entity.SlaveState} slave
 * @param {DescType} descType
 * @returns {string}
 */
App.Desc.superfetation = function(slave, descType) {
	function daddyName(daddyID) {
		if (daddyID > 0) {
			const lsd = findFather(daddyID);
			if (lsd) {
				return SlaveFullName(lsd);
			}
		} else if (daddyID in V.missingTable && V.showMissingSlaves) {
			return V.missingTable[daddyID].fullName;
		}
		return "another slave";
	}

	const r = [];
	const {
		his, His
	} = getPronouns(slave);
	const slaveWD = WombGetLittersData(slave);
	if (slave.geneticQuirks.superfetation === 2 && slaveWD.litters.length > 1 && V.pregnancyMonitoringUpgrade === 1 && descType !== DescType.MARKET) {
		r.push(`${His} womb contains ${num(slaveWD.litters.length)} separate pregnancies:`);
		for (let litCount = 0; litCount < slaveWD.litters.length; litCount++) {
			const countLitter = slaveWD.litterData[litCount].length;
			const is = countLitter > 1 ? "are" : "is";
			const was = countLitter > 1 ? "were" : "was";
			if (litCount === 0) {
				r.push(`the eldest`);
			} else if (litCount === slaveWD.litters.length - 1) {
				r.push(`and the youngest`);
			} else {
				r.push(`the next`);
			}
			if (countLitter > 1) {
				r.push(`set of ${num(countLitter)},`);
			} else {
				r.push(`one,`);
			}
			r.push(`at ${numberWithPluralOne(slaveWD.litters[litCount], "week")} of development,`);
			if (slaveWD.litterData[litCount][0].fatherID === -7) {
				r.push(`${is} from the gene lab,`);
			} else if (slaveWD.litterData[litCount][0].age > slave.pregData.normalBirth / 8) {
				if (slaveWD.litterData[litCount][0].fatherID === -1) {
					r.push(`${was} fathered by your seed,`);
				} else if (slaveWD.litterData[litCount][0].fatherID === -2) {
					r.push(`${was} fathered by one of your citizens,`);
				} else if (slaveWD.litterData[litCount][0].fatherID === -3) {
					r.push(`${was} fathered by your former Master,`);
				} else if (slaveWD.litterData[litCount][0].fatherID === -4) {
					r.push(`${was} fathered by another arcology owner,`);
				} else if (slaveWD.litterData[litCount][0].fatherID === -5) {
					r.push(`${was} fathered by one of your clients,`);
				} else if (slaveWD.litterData[litCount][0].fatherID === -6) {
					r.push(`${was} fathered by a member of the Societal Elite,`);
				} else if (slaveWD.litterData[litCount][0].fatherID === -9) {
					r.push(`${was} fathered by the Futanari Sisters,`);
				} else if (slaveWD.litterData[litCount][0].fatherID === 0) {
					r.push(`${is} from an unidentifiable source,`);
				} else if (slaveWD.litterData[litCount][0].fatherID === slave.ID) {
					r.push(`${is} from ${his} own handiwork,`);
				} else {
					r.push(`${was} fathered by ${daddyName(slaveWD.litterData[litCount][0].fatherID)}'s seed,`);
				}
			} else {
				r.push(`${is} too young to tell the father of,`);
			}
		}
	}
	return r.join(" ");
};