code:
/**
 * @param {App.Entity.SlaveState} slave
 * @returns {string}
 */
App.Desc.areolaPiercing = function(slave) {
	const {his, He, His} = getPronouns(slave);
	const nipColor = nippleColor(slave);
	let r = [];
	if (slave.fuckdoll === 0) {
		if (slave.piercing.areola.weight > 0) {
			switch (slave.areolae) {
				case 1:
					r.push(`${His} areolae form large, lovely circles of ${nipColor} skin around each nipple.`);
					r.push(`${He} has stud piercings around their borders, enhancing the contrast.`);
					break;
				case 2:
					r.push(`${His} areolae are unusually wide, eye-catching circles of ${nipColor} skin around each nipple.`);
					r.push(`${He} has stud piercings around their borders, enhancing the contrast.`);
					break;
				case 3:
					r.push(`${His} ${nipColor} areolae are unnaturally broad, covering much of the ${slave.boobShape === "saggy" ? 'bottom' : 'front'} of each breast.`);
					r.push(`${He} has many stud piercings around their edges, forming a metal border between ${nipColor} nipple and breast.`);
					break;
				case 4:
					r.push(`${His} ${nipColor} areolae are unnaturally huge, almost entirely covering the ${slave.boobShape === "saggy" ? 'bottom' : 'front'} of each breast.`);
					r.push(`${He} has many stud piercings around their edges, forming a metal border between ${nipColor} nipple and breast.`);
					break;
				default:
					r.push(`${He} has stud piercings in circles around the edges of ${his} minimal ${nipColor} areolae.`);
					r.push(`${His} ${slave.nipples} nipples are surrounded by a minimal ${nipColor} areolae.`);
			}
			if (slave.areolaeShape === "heart") {
				r.push(`${His} ${nipColor} areolae are heart-shaped, an obvious surgical alteration. Their borders are defined by stud piercings with pink stones.`);
				if (slave.boobShape === "saggy") {
					r.push(`${His} motherly boobs point downward, though, leaving only the curved top of each heart visible.`);
				}
			} else if (slave.areolaeShape === "star") {
				r.push(`${His} ${nipColor} areolae are star-shaped, an obvious surgical alteration. Their borders are defined by shiny stud piercings.`);
				if (slave.boobShape === "saggy") {
					r.push(`${His} motherly boobs point downward, though, leaving only the pointed top of each star visible.`);
				}
			} else if (slave.areolaeShape !== "circle") {
				r.push(`${His} ${nipColor} areolae are ${slave.areolaeShape}-shaped, an obvious surgical alteration. Their borders are defined by shiny stud piercings.`);
				if (slave.boobShape === "saggy") {
					r.push(`${His} motherly boobs point downward, though, leaving only the top of each ${slave.areolaeShape} visible.`);
				}
			}
		}
	}
	return r.join(' ');
};


code:
/**
 * @param {FC.GingeredSlave} slave
 * @param {DescType} [descType=DescType.NORMAL]
 * @returns {string}
 */
App.Desc.anus = function(slave, descType = DescType.NORMAL) {
	const r = [];
	const {
		he, his, He, His
	} = getPronouns(slave);
	let skinDesc;
	if (skinToneLevel(slave.skin) < 13) {
		skinDesc = "pink";
	} else if (slave.anusTat === "bleached") {
		skinDesc = slave.skin;
	} else if (skinToneLevel(slave.skin) > 19) {
		skinDesc = "dark";
	} else {
		skinDesc = "darker";
	}
	let analSkinDesc = either("crinkled", "puckered", "puffy");
	if (slave.anus === 0) {
		r.push(`${He} is an <span class="lime">anal virgin;</span> ${his} asshole is fresh and tight.`);
	} else if (slave.anus === 1) {
		r.push(`${His} ${either("anal opening", "anus", "asshole", "butthole")} is ${either("nice and", "very")} tight,`);
		if (slave.analArea - slave.anus > 3) {
			r.push(`but it's surrounded by a massive oval of ${analSkinDesc} ${skinDesc} skin that runs from ${his} tailbone all the way down to the`);
			if (slave.vagina > -1) {
				r.push(`bottom of ${his} pussy.`);
			} else {
				r.push(`base of ${his} cock.`);
			}
		} else if (slave.analArea - slave.anus > 2) {
			r.push(`but it's surrounded by an oval of ${analSkinDesc} ${skinDesc} skin that occupies ${his} entire ${either("asscrack", "buttcrack")}.`);
		} else if (slave.analArea - slave.anus > 1) {
			r.push(`but it's surrounded by a big ring of ${analSkinDesc} ${skinDesc} skin.`);
		} else if (slave.analArea - slave.anus > 0) {
			r.push(`and it's surrounded by a cute ${either("pucker", "ring", "rosebud")} of ${skinDesc} skin.`);
		} else {
			r.push(`and the ${skinDesc} skin around it is stretched smooth, since it's been deflowered only recently.`);
		}
	} else if (slave.anus === 2) {
		r.push(`${His} ${either("anal opening", "anus", "asshole", "asspussy", "butthole")} is`);
		if (slave.analArea - slave.anus > 1) {
			r.push(`only`);
		}
		r.push(either("relaxed", "loose", "accommodating"));
		if (slave.analArea - slave.anus > 2) {
			r.push(`but it's surrounded by a massive oval of ${analSkinDesc} ${skinDesc} skin that runs from ${his} tailbone all the way down to the`);
			if (slave.vagina > -1) {
				r.push(`bottom of ${his} pussy.`);
			} else {
				r.push(`base of ${his} cock.`);
			}
		} else if (slave.analArea - slave.anus > 1) {
			r.push(`but it's surrounded by an oval of ${analSkinDesc} ${skinDesc} skin that occupies ${his} entire ${either("asscrack", "buttcrack")}.`);
		} else if (slave.analArea - slave.anus > 0) {
			r.push(`and it's surrounded by a big ring of ${analSkinDesc} ${skinDesc} skin.`);
		} else {
			r.push(`and the ${skinDesc} skin around it is stretched smooth, suggesting it's getting used to being this way.`);
		}
	} else if (slave.anus === 3) {
		r.push(`${His} ${either("anal opening", "anus", "asshole", "asspussy", "butthole")} is a ${either("lewd", "loose", "relaxed", "welcoming")} slit`);
		if (slave.analArea - slave.anus > 1) {
			r.push(`and it's surrounded by a massive oval of ${analSkinDesc} ${skinDesc} skin that runs from ${his} tailbone all the way down to the`);
			if (slave.vagina > -1) {
				r.push(`bottom of ${his} pussy.`);
			} else {
				r.push(`base of ${his} cock.`);
			}
		} else if (slave.analArea - slave.anus > 0) {
			r.push(`and it's surrounded by an oval of ${analSkinDesc} ${skinDesc} skin that occupies ${his} entire ${either("asscrack", "buttcrack")}.`);
		} else {
			r.push(`and the ${skinDesc} skin around it is stretched smooth, suggesting ${he}'s getting used to having such a cock-hungry rear fuckhole.`);
		}
	} else {
		r.push(`${His} ${either("anal opening", "anal slit", "anus", "asshole", "asspussy", "butthole")} is a ${either("loose", "wide-open", "permanent", "relaxed")} gape,`);
		if (slave.analArea - slave.anus > 0) {
			r.push(`and it's surrounded by a massive oval of ${skinDesc} skin that runs from ${his} tailbone all the way down to the`);
			if (slave.vagina > -1) {
				r.push(`bottom of ${his} pussy.`);
			} else {
				r.push(`base of ${his} cock.`);
			}
		} else {
			r.push(`and the ${skinDesc} skin around it is stretched smooth, suggesting ${he}'s only recently had ${his} ass ruined.`);
		}
	}

	if (slave.pubicHStyle === "bushy" || slave.pubicHStyle === "very bushy") {
		if (slave.physicalAge >= 13) {
			r.push(`Since ${he} has been left natural, ${he} has some light ${slave.pubicHColor} pubic hair around ${his} ass.`);
		}
	}

	if (slave.minorInjury === "sore ass") {
		r.push(`${His} asshole has seen hard use lately and looks a little sore.`);
	}

	if (slave.gingering && slave.gingering.type === "ginger") {
		r.push(`${His} asshole looks unusually puffy and sore. ${He}'s either been cruelly assraped lately, or ${he}'s had an irritant placed in ${his} anus.`);
	}

	r.push(App.Desc.buttplug(slave, descType));

	r.push(App.Desc.mods(slave, "anus"));

	if (slave.fuckdoll > 0) {
		r.push(`As a Fuckdoll,`);
		if (slave.fuckdoll <= 45) {
			r.push(`${he} is only fit to be locked in place so ${his} rear hole can be raped.`);
		} else {
			r.push(`${he} can be instructed to rhythmically squeeze`);
			if (V.PC.dick !== 0) {
				r.push(`cocks`);
			} else {
				r.push(`anything`);
			}
			r.push(`inserted into ${his} rear hole.`);
			if (slave.fuckdoll <= 85) {
				r.push(`${He} can also be ordered to bounce atop objects in ${his} anus.`);
			}
		}
	} else {
		if (slave.skill.anal >= 100) {
			r.push(`${He} is a <span class="skill">masterful anal slut.</span>`);
		} else if (slave.skill.anal > 60) {
			r.push(`${He} is an <span class="skill">expert anal slut.</span>`);
		} else if (slave.skill.anal > 30) {
			r.push(`${He} is a <span class="skill">skilled anal slut.</span>`);
		} else if (slave.skill.anal > 10) {
			r.push(`${He} has <span class="skill">basic knowledge about anal.</span>`);
		} else {
			r.push(`${He} is unskilled at taking anal.`);
		}
	}
	return r.join(" ");
};

repo_name: Fanatey/fc

license: mit


code:
/**
 * @param {App.Entity.SlaveState} slave
 * @param {DescType} [descType=DescType.NORMAL]
 * @returns {string}
 */
App.Desc.butt = function(slave, descType = DescType.NORMAL) {
	const r = [];
	const {
		he, him, his, girl, He, His
	} = getPronouns(slave);
	const hands = (hasBothArms(slave)) ? "hands" : "hand";
	if (V.showClothing === 1 && descType !== DescType.MARKET && descType !== DescType.SURGERY) {
		const clothing = App.Data.clothes.get(slave.clothes);
		if (clothing && clothing.desc && "butt" in clothing.desc) {
			r.push(clothing.desc.butt(slave));
		} else {
			switch (slave.clothes) {
				case "a Fuckdoll suit":
					r.push(`The suit`);
					if (slave.butt > 10) {
						r.push(`hugs each of its massive buttocks individually, permitting`);
					} else if (slave.butt > 6) {
						r.push(`hugs each of its enormous buttocks individually, permitting`);
					} else if (slave.butt > 3) {
						r.push(`cups each of its big buttocks, permitting`);
					} else {
						r.push(`fits its little buttocks closely, offering`);
					}
					r.push(`easy access to the rear hole.`);
					break;
				case "conservative clothing":
					r.push(`${His} slacks are pressed and`);
					if (slave.butt > 10) {
						r.push(`well-tailored, but strain at the seams trying to hold back ${his} massive ass.`);
					} else if (slave.butt > 6) {
						r.push(`well-tailored, but can't hide the huge size of ${his} ass.`);
					} else if (slave.butt > 3) {
						r.push(`well-tailored, but can't hide the huge size of ${his} ass.`);
					} else {
						r.push(`well-tailored.`);
					}
					break;
				case "a nice nurse outfit":
					r.push(`${His} trousers are`);
					if (slave.butt > 10) {
						r.push(`well-tailored, but strain at the seams trying to hold back ${his} massive ass.`);
					} else if (slave.butt > 6) {
						r.push(`well-tailored, but can't hide the huge size of ${his} ass.`);
					} else if (slave.butt > 3) {
						r.push(`well-tailored, but can't hide the huge size of ${his} ass.`);
					} else {
						r.push(`well-tailored.`);
					}
					break;
				case "chains":
					r.push(`Each buttock has a length of chain`);
					if (slave.butt > 3) {
						r.push(`disappearing`);
					} else {
						r.push(`running tightly`);
					}
					r.push(`under it.`);
					break;
				case "Western clothing":
					r.push(`${His} chaps are assless, and ${his}`);
					if (slave.butt > 10) {
						r.push(`butt is so massive it seems to explode out of the hole left for it.`);
					} else if (slave.butt > 6) {
						r.push(`butt is so big it seems to explode out of the hole left for it.`);
					} else if (slave.butt > 3) {
						r.push(`big butt is bare.`);
					} else {
						r.push(`butt is bare.`);
					}
					break;
				case "body oil":
					r.push(`${His} buttocks are shiny with oil.`);
					break;
				case "a toga":
					r.push(`${His} toga`);
					if (slave.butt > 10) {
						r.push(`barely covers ${his} ass, it does nothing to conceal its absurd size.`);
					} else if (slave.butt > 6) {
						r.push(`covers ${his} ass, though it cannot conceal its absurd size.`);
					} else {
						r.push(`covers ${his} ass.`);
					}
					break;
				case "a huipil":
					r.push(`${His} huipil`);
					if (slave.butt > 10) {
						r.push(`disappears between ${his} monstrous asscheeks.`);
					} else if (slave.butt > 6) {
						r.push(`covers ${his} butt, though it cannot stop it from spilling from the sides.`);
					} else {
						r.push(`covers ${his} butt.`);
					}
					break;
				case "kitty lingerie":
					r.push(`${His}`);
					if (slave.butt > 10) {
						r.push(`panties' strings struggle to stay tied.`);
					} else if (slave.butt > 6) {
						r.push(`huge buttocks stretches the fabric of ${his} lingerie.`);
					} else if (slave.butt > 3) {
						r.push(`big butt is snug within ${his} panties.`);
					} else {
						r.push(`silken panties accentuate ${his} behind.`);
					}
					break;
				case "attractive lingerie for a pregnant woman":
					r.push(`${His} pretty silken panties`);
					if (slave.butt > 10) {
						r.push(`disappear between ${his} inhuman buttocks.`);
					} else if (slave.butt > 6) {
						r.push(`disappear between ${his} huge buttocks.`);
					} else if (slave.butt > 3) {
						r.push(`peek out from between ${his} big buttocks.`);
					} else {
						r.push(`makes ${his} buttocks especially delectable.`);
					}
					break;
				case "a maternity dress":
					r.push(`${His}`);
					if (slave.butt > 10) {
						r.push(`massive buttocks strains the seams of ${his} dress considerably.`);
					} else if (slave.butt > 6) {
						r.push(`huge buttocks stretches the fabric of ${his} dress considerably.`);
					} else if (slave.butt > 3) {
						r.push(`big ass fills out ${his} dress nicely.`);
					} else {
						r.push(`dress completely hides ${his} butt.`);
					}
					break;
				case "stretch pants and a crop-top":
					r.push(`${His}`);
					if (slave.butt > 10) {
						r.push(`massive buttocks strains the seams of ${his} stretch pants considerably; ${he} can only manage to pull them halfway over it, creating plenty of jiggly ass cleavage to spill out over the elastic waist.`);
					} else if (slave.butt > 6) {
						r.push(`huge buttocks stretch the fabric of ${his} stretch pants considerably, ${he} can barely manage to pull them over it.`);
					} else if (slave.butt > 3) {
						r.push(`big ass fills out ${his} stretch pants nicely.`);
					} else {
						r.push(`stretch pants tightly hug ${his} trim`);
						if (hasAnyLegs(slave)) {
							if (hasBothLegs(slave)) {
								r.push(`legs`);
							} else {
								r.push(`leg`);
							}
							r.push(`and`);
						}
						r.push(`rear.`);
					}
					switch (slave.sexualFlaw) {
						case "neglectful":
							r.push(`"For Your Pleasure"`);
							break;
						case "cum addict":
							r.push(`"Cum Deep Inside"`);
							break;
						case "anal addict":
							r.push(`"Stick It In"`);
							break;
						case "attention whore":
							r.push(`"Have a Look"`);
							break;
						case "breast growth":
							r.push(`"Action Around Front"`);
							break;
						case "abusive":
							r.push(`"No Escape"`);
							break;
						case "malicious":
							r.push(`"Ball Breaker"`);
							break;
						case "self hating":
							r.push(`"Ride Me Dry"`);
							break;
						case "breeder":
							r.push(`"Wrong Hole"`);
							break;
						default:
							if (slave.fetishKnown === 1) {
								switch (slave.fetish) {
									case "submissive":
										r.push(`"Bend Me Over"`);
										break;
									case "cumslut":
										r.push(`"Cum Hither"`);
										break;
									case "humiliation":
										r.push(`"Pants Me"`);
										break;
									case "buttslut":
										r.push(`"Your Hands Here"`);
										break;
									case "boobs":
										r.push(`"Grope My Tits"`);
										break;
									case "sadist":
										r.push(`"Crush Warning"`);
										break;
									case "masochist":
										r.push(`"I've Been Bad"`);
										break;
									case "dom":
										r.push(`"Always On Top"`);
										break;
									case "pregnancy":
										r.push(`"Knock Me Up"`);
										break;
									case "mindbroken":
										r.push(`"No Objections"`);
										break;
									default:
										r.push(`"Fuck My Ass"`);
										break;
								}
							} else {
								r.push(App.Desc.inscrip(slave));
							}
					}
					r.push(`is written across the seat of ${his} pants in large, vibrant letters.`);
					break;
				case "a kimono":
					r.push(`${His} kimono demurely covers ${his}`);
					if (slave.butt > 10) {
						r.push(`ass, it does nothing to conceal its absurd size.`);
					} else if (slave.butt > 6) {
						r.push(`butt, though it cannot conceal its absurd size.`);
					} else if (slave.butt > 3) {
						r.push(`big butt.`);
					} else {
						r.push(`butt.`);
					}
					break;
				case "a slutty qipao":
					r.push(`${His} qipao is slit up the side,`);
					if (slave.butt > 10) {
						r.push(`and ${his} ass is so massive that the rear part of the qipao rests meekly atop it.`);
					} else if (slave.butt > 6) {
						r.push(`and ${his} ass is so big that the rear part of the qipao only covers its top half.`);
					} else {
						r.push(`baring quite a bit of the side of each buttock.`);
					}
					break;
				case "uncomfortable straps":
					r.push(`${His} slave outfit's`);
					if (slave.butt > 10) {
						r.push(`straining straps frame ${his} colossal rear, with a strap disappearing under each inhuman buttock.`);
					} else if (slave.butt > 6) {
						r.push(`straining straps frame ${his} enormous rear, with a strap disappearing under each massive buttock.`);
					} else if (slave.butt > 3) {
						r.push(`straining straps frame ${his} enormous buttocks, with a strap passing uncomfortably under each one.`);
					} else {
						r.push(`straps frame ${his} buttocks, with a strap passing uncomfortably between them.`);
					}
					break;
				case "shibari ropes":
					r.push(`${His}`);
					if (slave.butt > 10) {
						r.push(`inhuman ass strains the tight ropes that frame it. Ass flesh bulges from between the ropes.`);
					} else if (slave.butt > 6) {
						r.push(`massive ass almost explodes out of the tight ropes that frame it.`);
					} else if (slave.butt > 3) {
						r.push(`big buttocks are deliciously framed by tight ropes.`);
					} else {
						r.push(`cute buttocks are each lifted by a rope that passes under them.`);
					}
					break;
				case "restrictive latex":
					if (slave.butt > 10) {
						r.push(`The latex creaks ominously as it is strained by ${his} inhuman ass.`);
					} else if (slave.butt > 6) {
						r.push(`The latex creaks ominously as it is strained by ${his} massive ass.`);
					} else if (slave.butt > 3) {
						r.push(`${His} big buttocks strain the latex.`);
					} else {
						r.push(`The latex makes ${his} ass look even shapelier.`);
					}
					break;
				case "attractive lingerie":
					r.push(`${His} pretty lace g-string`);
					if (slave.butt > 10) {
						r.push(`disappears between ${his} inhuman buttocks.`);
					} else if (slave.butt > 6) {
						r.push(`disappears between ${his} huge buttocks.`);
					} else if (slave.butt > 3) {
						r.push(`peeks out from between ${his} big buttocks.`);
					} else {
						r.push(`makes ${his} buttocks especially delectable.`);
					}
					break;
				case "a succubus outfit":
					r.push(`A tail sprouts from under ${his} little leather skirt, curving upward to end in a spade tip. It holds the skirt up in back, leaving ${his} ass totally bare.`);
					break;
				case "a slutty maid outfit":
					r.push(`${His} maid dress`);
					if (slave.butt > 10) {
						r.push(`fails to cover any of ${his} inhuman`);
					} else if (slave.butt > 6) {
						r.push(`only covers the top quarter of ${his} massive`);
					} else if (slave.butt > 3) {
						r.push(`ends halfway down ${his} big`);
					} else {
						r.push(`ends three-quarters of the way down ${his}`);
					}
					r.push(`buttocks.`);
					break;
				case "a nice maid outfit":
					r.push(`${His} maid dress`);
					if (slave.butt > 10) {
						r.push(`strains at the seams holding back ${his} massive`);
					} else if (slave.butt > 6) {
						r.push(`struggles to conceal ${his} huge`);
					} else if (slave.butt > 3) {
						r.push(`accentuates the curves of ${his} big`);
					} else {
						r.push(`demurely covers ${his}`);
					}
					r.push(`buttocks.`);
					break;
				case "a string bikini":
					r.push(`${His}`);
					if (slave.butt > 10) {
						r.push(`slutty string bikini bottom disappears between ${his} inhuman`);
					} else if (slave.butt > 6) {
						r.push(`slutty string bikini bottom disappears between ${his} huge`);
					} else if (slave.butt > 3) {
						r.push(`slutty string bikini bottom peeks out from between ${his} big`);
					} else {
						r.push(`string bikini bottom runs enticingly down between ${his}`);
					}
					r.push(`buttocks.`);
					break;
				case "a scalemail bikini":
					r.push(`${His}`);
					if (slave.butt > 10) {
						r.push(`barbaric scalemail bikini bottom barely covers ${his} inhuman`);
					} else if (slave.butt > 6) {
						r.push(`barbaric scalemail bikini bottom only somewhat covers ${his} huge`);
					} else if (slave.butt > 3) {
						r.push(`barbaric scalemail bikini bottom enticingly covers ${his} big`);
					} else {
						r.push(`scalemail bikini bottom completely covers ${his}`);
					}
					r.push(`buttocks.`);
					break;
				case "striped panties":
					r.push(`${His}`);
					if (slave.butt > 10) {
						r.push(`cute panties barely covers ${his} inhuman`);
					} else if (slave.butt > 6) {
						r.push(`cute panties only somewhat covers ${his} huge`);
					} else if (slave.butt > 3) {
						r.push(`cute panties enticingly covers ${his} big`);
					} else {
						r.push(`cute panties completely covers ${his}`);
					}
					r.push(`buttocks.`);
					break;
				case "spats and a tank top":
					r.push(`${His}`);
					if (slave.butt > 10) {
						r.push(`huge rear threatens to tear apart ${his} spats upon any movement.`);
					} else if (slave.butt > 6) {
						r.push(`large ass is constrained by ${his} tightly-worn spats.`);
					} else if (slave.butt > 3) {
						r.push(`spats snugly fit around ${his} big butt.`);
					} else {
						r.push(`spats snugly fit ${his} butt.`);
					}
					break;
				case "lederhosen":
					r.push(`${His}`);
					if (slave.butt > 10) {
						r.push(`huge rear threatens to tear apart ${his} shorts upon any movement.`);
					} else if (slave.butt > 6) {
						r.push(`large ass is constrained by ${his} tightly-worn shorts.`);
					} else if (slave.butt > 3) {
						r.push(`shorts snugly fit around ${his} big butt.`);
					} else {
						r.push(`shorts snugly fit ${his} butt.`);
					}
					break;
				case "a cheerleader outfit":
					r.push(`${His} pleated cheerleader skirt rests`);
					if (slave.butt > 10) {
						r.push(`atop ${his} massive ass.`);
					} else if (slave.butt > 6) {
						r.push(`atop ${his} huge ass.`);
					} else if (slave.butt > 3) {
						r.push(`over ${his} plump butt.`);
					} else {
						r.push(`over ${his} cute butt.`);
					}
					break;
				case "clubslut netting":
					r.push(`${His} netting`);
					if (slave.butt > 6) {
						r.push(`strains to support ${his} massive behind.`);
					} else if (slave.butt > 3) {
						r.push(`strains to restrain ${his} big behind.`);
					} else {
						r.push(`technically covers ${his} cute butt, but it's all visible.`);
					}
					break;
				case "cutoffs and a t-shirt":
					r.push(`${His} cutoffs`);
					if (slave.butt > 10) {
						r.push(`fail to cover ${his} massive buttocks, with the jean material disappearing between them.`);
					} else if (slave.butt > 6) {
						r.push(`fail to cover ${his} huge buttocks, with the jean material almost disappearing between them.`);
					} else if (slave.butt > 3) {
						r.push(`bare the bottom of each of ${his} big buttocks.`);
					} else {
						r.push(`bare a little buttock in back.`);
					}
					break;
				case "a slutty outfit":
					if (slave.butt > 5) {
						r.push(`Many of ${his} choices of slutty outfit leave all or part of ${his} huge buttocks bare.`);
					} else {
						r.push(`Some of ${his} choices of slutty outfit reveal part of ${his} buttocks.`);
					}
					break;
				case "a slutty nurse outfit":
					r.push(`${His}`);
					if (slave.butt > 10) {
						r.push(`massive buttocks are easily visible below the hem of ${his} tight skirt.`);
					} else if (slave.butt > 6) {
						r.push(`huge buttocks are easily visible below the hem of ${his} tight skirt.`);
					} else if (slave.butt > 3) {
						r.push(`big butt is just visible past the hem of ${his} tight skirt.`);
					} else {
						r.push(`tight skirt comes down to just below the bottom of ${his} buttocks.`);
					}
					break;
				case "a schoolgirl outfit":
					r.push(`${His} skirt`);
					if (slave.butt > 10) {
						r.push(`can't begin to cover ${his} massive butt, and just rests on top of ${his} buttocks, leaving virtually ${his} entire behind`);
					} else if (slave.butt > 6) {
						r.push(`can't begin to cover ${his} huge butt, and just rests on top of ${his} buttocks, leaving virtually ${his} entire behind`);
					} else if (slave.butt > 3) {
						r.push(`only covers the top of ${his} big butt, leaving most of ${his} bottom`);
					} else {
						r.push(`only covers the top half of ${his} butt, leaving the bottom half of ${his} behind`);
					}
					r.push(`bare.`);
					break;
				case "a fallen nuns habit":
					r.push(`${His} latex habit parts to leave ${his}`);
					if (slave.butt > 10) {
						r.push(`inhuman`);
					} else if (slave.butt > 6) {
						r.push(`massive`);
					} else if (slave.butt > 3) {
						r.push(`big`);
					}
					r.push(`buttocks bare.`);
					break;
				case "a chattel habit":
					r.push(`The belt around ${his} ribs has two long strips of white fabric hanging from it, down ${his} front and back, leaving ${his} sides bare from ${his} flanks down to ${his} hips. ${His}`);
					if (slave.butt > 10) {
						r.push(`massive buttocks have a way of trapping the strip of fabric in back between them.`);
					} else if (slave.butt > 6) {
						r.push(`huge buttocks have a way of trapping the strip of fabric in back between them.`);
					} else if (slave.butt > 3) {
						r.push(`big buttocks force the strip of fabric in back to swoop out over them.`);
					} else {
						r.push(`cute buttocks are just curved enough to push the strip in back out a bit.`);
					}
					break;
				case "a halter top dress":
					r.push(`${His} beautiful halter top dress is`);
					if (slave.butt > 10) {
						r.push(`tailored, but still strains at the seams to hold ${his} inhuman`);
					} else if (slave.butt > 6) {
						r.push(`tailored as possible for ${his} massive`);
					} else if (slave.butt > 3) {
						r.push(`tailored to flatter ${his} big`);
					} else {
						r.push(`almost sculpted over ${his}`);
					}
					r.push(`buttocks.`);
					break;
				case "a dirndl":
					r.push(`${His} beautiful dirndl is`);
					if (slave.butt > 10) {
						r.push(`tailored, but still strains at the seams to hold ${his} inhuman`);
					} else if (slave.butt > 6) {
						r.push(`tailored as possible for ${his} massive`);
					} else if (slave.butt > 3) {
						r.push(`tailored to flatter ${his} big`);
					} else {
						r.push(`almost sculpted over ${his}`);
					}
					r.push(`buttocks.`);
					break;
				case "a biyelgee costume":
					r.push(`${His} beautiful costume is`);
					if (slave.butt > 10) {
						r.push(`tailored, but still strains at the seams to hold ${his} inhuman`);
					} else if (slave.butt > 6) {
						r.push(`tailored as possible for ${his} massive`);
					} else if (slave.butt > 3) {
						r.push(`tailored to flatter ${his} big`);
					} else {
						r.push(`almost sculpted over ${his}`);
					}
					r.push(`buttocks.`);
					break;
				case "a ball gown":
					r.push(`${His} fabulous silken ball gown is draped`);
					if (slave.butt > 10) {
						r.push(`as tastefully as possible for ${his} inhuman`);
					} else if (slave.butt > 6) {
						r.push(`as tastefully as possible for ${his} massive`);
					} else if (slave.butt > 3) {
						r.push(`around ${his} big`);
					} else {
						r.push(`around ${his}`);
					}
					r.push(`buttocks.`);
					break;
				case "nice business attire":
					r.push(`${His} suit skirt`);
					if (slave.butt > 10) {
						r.push(`is tailored but still strains to restrain ${his} massive buttocks.`);
					} else if (slave.butt > 6) {
						r.push(`is tailored as tastefully as possible to restrain ${his} huge buttocks.`);
					} else if (slave.butt > 3) {
						r.push(`is tailored to flatter ${his} big buttocks.`);
					} else {
						r.push(`tastefully hugs ${his} derrière.`);
					}
					break;
				case "slutty business attire":
					r.push(`${His} skirt is so short that`);
					if (slave.butt > 10) {
						r.push(`quite a lot of inhumanly large`);
					} else if (slave.butt > 6) {
						r.push(`quite a lot of massive`);
					} else if (slave.butt > 3) {
						r.push(`more than a hint of`);
					} else {
						r.push(`a hint of`);
					}
					r.push(`buttock is visible in back.`);
					break;
				case "a comfortable bodysuit":
					r.push(`${His} bodysuit comfortably hugs ${his}`);
					if (slave.butt > 10) {
						r.push(`massive`);
					}
					r.push(`butt.`);
					break;
				case "a latex catsuit":
					if (slave.butt > 10) {
						r.push(`The latex creaks ominously as it is strained by ${his} inhuman ass.`);
					} else if (slave.butt > 6) {
						r.push(`The latex creaks ominously as it is strained by ${his} massive ass.`);
					} else if (slave.butt > 3) {
						r.push(`${His} latex covered big buttocks are shapely and smooth.`);
					} else {
						r.push(`${His} latex covered buttocks are shapely and smooth.`);
					}
					break;
				case "a military uniform":
					r.push(`${His} uniform skirt`);
					if (slave.butt > 10) {
						r.push(`is tailored as tastefully as possible to restrain ${his} enormous buttocks, though its massive size strains the seams.`);
					} else if (slave.butt > 6) {
						r.push(`is tailored as tastefully as possible to restrain ${his} huge buttocks.`);
					} else if (slave.butt > 3) {
						r.push(`is tailored to flatter ${his} big buttocks.`);
					} else {
						r.push(`tastefully hugs ${his} derrière.`);
					}
					break;
				case "a mounty outfit":
					r.push(`${His} uniform slacks`);
					if (slave.butt > 10) {
						r.push(`are tailored as tastefully as possible to restrain ${his} enormous buttocks, though its massive size strains the seams.`);
					} else if (slave.butt > 6) {
						r.push(`are tailored as tastefully as possible to restrain ${his} huge buttocks.`);
					} else if (slave.butt > 3) {
						r.push(`are tailored to flatter ${his} big buttocks.`);
					} else {
						r.push(`tastefully hug ${his} derrière.`);
					}
					break;
				case "a schutzstaffel uniform":
					r.push(`${His} uniform trousers`);
					if (slave.butt > 10) {
						r.push(`are tailored as tastefully as possible to restrain ${his} enormous buttocks, though its massive size strains the seams.`);
					} else if (slave.butt > 6) {
						r.push(`are tailored as tastefully as possible to restrain ${his} huge buttocks.`);
					} else if (slave.butt > 3) {
						r.push(`are tailored to flatter ${his} big buttocks.`);
					} else {
						r.push(`tastefully hug ${his} derrière.`);
					}
					break;
				case "a slutty schutzstaffel uniform":
					r.push(`${His} uniform miniskirt`);
					if (slave.butt > 10) {
						r.push(`is tailored as tastefully as possible to restrain ${his} enormous buttocks, though its massive size strains the seams.`);
					} else if (slave.butt > 6) {
						r.push(`is tailored as tastefully as possible to restrain ${his} huge buttocks.`);
					} else if (slave.butt > 3) {
						r.push(`is tailored to flatter ${his} big buttocks.`);
					} else {
						r.push(`tastefully hug ${his} derrière.`);
					}
					break;
				case "a red army uniform":
					r.push(`${His} uniform skirt`);
					if (slave.butt > 10) {
						r.push(`is tailored as tastefully as possible to restrain ${his} enormous buttocks, though its massive size strains the seams.`);
					} else if (slave.butt > 6) {
						r.push(`is tailored as tastefully as possible to restrain ${his} huge buttocks.`);
					} else if (slave.butt > 3) {
						r.push(`is tailored to flatter ${his} big buttocks.`);
					} else {
						r.push(`tastefully hugs ${his} derrière.`);
					}
					break;
				case "a mini dress":
					r.push(`${His} scandalously short dress`);
					if (slave.butt > 10) {
						r.push(`is impossible to pull over ${his} enormous buttocks, leaving ${his} behind entirely exposed.`);
					} else if (slave.butt > 6) {
						r.push(`is at constant risk of sliding above ${his} huge butt and leaving ${his} behind entirely exposed.`);
					} else if (slave.butt > 3) {
						r.push(`barely covers half of ${his} ample buttocks.`);
					} else {
						r.push(`barely manages to cover ${his} buttocks.`);
					}
					break;
				case "an apron":
					r.push(`${His} girly, frilly apron offers no protection in the back, leaving ${his}`);
					if (slave.butt > 10) {
						r.push(`enormous buttocks`);
					} else if (slave.butt > 6) {
						r.push(`huge buttocks`);
					} else if (slave.butt > 3) {
						r.push(`ample buttocks`);
					} else {
						r.push(`buttocks`);
					}
					r.push(`completely exposed.`);
					break;
				case "a leotard":
					r.push(`${His} high-sided leotard leaves ${his} hips totally bare, and`);
					if (slave.butt > 10) {
						r.push(`disappears completely between ${his} enormous buttocks.`);
					} else if (slave.butt > 6) {
						r.push(`disappears completely between ${his} buttocks.`);
					} else if (slave.butt > 3) {
						r.push(`almost disappears between ${his} buttocks.`);
					} else {
						r.push(`leaves ${his} buttocks bare.`);
					}
					break;
				case "a monokini":
					r.push(`${His} monokini covers ${his} buttocks fully, the fabric clinging to each`);
					if (slave.butt > 10) {
						r.push(`gargantuan cheek.`);
					} else if (slave.butt > 6) {
						r.push(`giant cheek.`);
					} else if (slave.butt > 3) {
						r.push(`substantial cheek.`);
					} else {
						r.push(`cheek.`);
					}
					break;
				case "a cybersuit":
					r.push(`${His} bodysuit covers ${his} buttocks fully, the material stretching tightly against ${his}`);
					if (slave.butt > 10) {
						r.push(`gargantuan assflesh.`);
					} else if (slave.butt > 6) {
						r.push(`giant assflesh.`);
					} else if (slave.butt > 3) {
						r.push(`substantial assflesh.`);
					} else {
						r.push(`assflesh.`);
					}
					break;
				case "a tight Imperial bodysuit":
					r.push(`${His} cybernetic bodysuit covers ${his} butt fully, the material unapologetically riding up ${his}`);
					if (slave.butt > 10) {
						r.push(`gargantuan ass, showing off every last dimple as it wobbles.`);
					} else if (slave.butt > 6) {
						r.push(`massive rear, showing off every last dimple as it jiggles.`);
					} else if (slave.butt > 3) {
						r.push(`heavy rear, showing off every last dimple as ${he} moves.`);
					} else {
						r.push(`slender asscheeks, showing off every last dimple as ${he} moves.`);
					}
					break;
				case "battlearmor":
					r.push(`${His} armor covers ${his} buttocks fully, stretching tightly against ${his}`);
					if (slave.butt > 10) {
						r.push(`gargantuan assflesh.`);
					} else if (slave.butt > 6) {
						r.push(`giant assflesh.`);
					} else if (slave.butt > 3) {
						r.push(`substantial assflesh.`);
					} else {
						r.push(`assflesh.`);
					}
					break;
				case "Imperial Plate":
					r.push(`${His} ultra-heavy armor completely covers ${his} rear,`);
					if (slave.butt > 10) {
						r.push(`but is clearly distinct anyway, ${his} undeniable assmeat creating two gargantuan plated globes in the back.`);
					} else if (slave.butt > 6) {
						r.push(`but ${his} huge ass makes itself known anyway, each cheek requiring an individually rounded plate that seems to somehow wobble even underneath the ludicrously heavy armor.`);
					} else if (slave.butt > 3) {
						r.push(`but ${his} heavy butt pushes out the massive plating a little slightly, making its large size obvious.`);
					} else {
						r.push(`creating an elegant, slim set of aerodynamic plate in the back.`);
					}
					break;
				case "a bunny outfit":
					r.push(`${His} teddy is actually quite modest in back, covering ${his} buttocks in tight satin with a fluffy white cottontail positioned over ${his} tailbone.`);
					break;
				case "harem gauze":
					r.push(`${His} harem gauze filmily covers`);
					if (slave.butt > 10) {
						r.push(`the acres of assflesh.`);
					} else if (slave.butt > 6) {
						r.push(`the expanse of ${his} assflesh.`);
					} else if (slave.butt > 3) {
						r.push(`${his} big buttocks.`);
					} else {
						r.push(`${his} buttocks.`);
					}
					break;
				case "slutty jewelry":
					r.push(`${His} bangles include a loose chain about ${his} waist that`);
					if (slave.butt > 10) {
						r.push(`${he} constantly has to fish out of the cleft between ${his} inhuman`);
					} else if (slave.butt > 6) {
						r.push(`${he} constantly has to fish out of the cleft between ${his} massive`);
					} else if (slave.butt > 3) {
						r.push(`dips seductively down toward the cleft between ${his} big`);
					} else {
						r.push(`dips seductively down toward the cleft between ${his}`);
					}
					r.push(`buttocks.`);
					break;
				case "overalls":
					r.push(`${His} overalls decently cover ${his}`);
					if (slave.butt > 10) {
						r.push(`ass, but they do nothing to conceal its absurd size.`);
					} else if (slave.butt > 6) {
						r.push(`butt, though they cannot conceal its absurd size.`);
					} else if (slave.butt > 3) {
						r.push(`big butt.`);
					} else {
						r.push(`butt.`);
					}
					break;
				case "a hijab and abaya":
				case "a niqab and abaya":
					r.push(`${His} abaya modestly covers ${his}`);
					if (slave.butt > 10) {
						r.push(`ass, but it does nothing to conceal its absurd size.`);
					} else if (slave.butt > 6) {
						r.push(`butt, though it cannot conceal its absurd size.`);
					} else if (slave.butt > 3) {
						r.push(`big butt.`);
					} else {
						r.push(`butt.`);
					}
					break;
				case "a klan robe":
					r.push(`${His} robe modestly covers ${his}`);
					if (slave.butt > 10) {
						r.push(`ass, but it does nothing to conceal its absurd size.`);
					} else if (slave.butt > 6) {
						r.push(`butt, though it cannot conceal its absurd size.`);
					} else if (slave.butt > 3) {
						r.push(`big butt.`);
					} else {
						r.push(`butt.`);
					}
					break;
				case "a hijab and blouse":
					r.push(`${His} skirt modestly covers ${his}`);
					if (slave.butt > 8) {
						r.push(`ass, but it does nothing to conceal its absurd size.`);
					} else if (slave.butt > 5) {
						r.push(`butt, though it cannot conceal its absurd size.`);
					} else if (slave.butt > 3) {
						r.push(`big butt.`);
					} else {
						r.push(`butt.`);
					}
					break;
				case "a burqa":
					r.push(`${His} burqa modestly covers ${his}`);
					if (slave.butt > 10) {
						r.push(`ass, but it does nothing to conceal its absurd size.`);
					} else if (slave.butt > 7) {
						r.push(`butt, though it cannot conceal its absurd size.`);
					} else if (slave.butt > 3) {
						r.push(`big butt.`);
					} else {
						r.push(`butt.`);
					}
					break;
				case "a tube top and thong":
				case "a thong":
				case "a slutty klan robe":
				case "a t-shirt and thong":
					r.push(`${His} thong leaves ${his}`);
					if (slave.butt > 10) {
						r.push(`butt completely bare, as it has long since been lost in its absurd size.`);
					} else if (slave.butt > 7) {
						r.push(`butt completely bare, as its enormity has since devoured it.`);
					} else if (slave.butt > 3) {
						r.push(`big butt completely visible.`);
					} else {
						r.push(`butt completely visible.`);
					}
					break;
				case "a button-up shirt and panties":
				case "a sweater and panties":
				case "panties and pasties":
				case "a t-shirt and panties":
				case "a tank-top and panties":
				case "striped underwear":
				case "panties":
					r.push(`${His} panties partially cover ${his}`);
					if (slave.butt > 10) {
						r.push(`ass, but does nothing to conceal its absurd size.`);
					} else if (slave.butt > 7) {
						r.push(`butt, though it does not conceal its absurd size.`);
					} else if (slave.butt > 3) {
						r.push(`big butt.`);
					} else {
						r.push(`butt.`);
					}
					break;
				case "a bra":
				case "a button-up shirt":
				case "a sweater":
				case "a tank-top":
				case "a tube top":
				case "a striped bra":
				case "an oversized t-shirt":
				case "a t-shirt":
				case "a sports bra":
				case "pasties":
					r.push(`${His} clothing leaves ${his}`);
					if (slave.butt > 10) {
						r.push(`mammoth ass completely bare.`);
					} else if (slave.butt > 7) {
						r.push(`huge ass completely bare.`);
					} else if (slave.butt > 3) {
						r.push(`big ass completely bare.`);
					} else {
						r.push(`ass completely bare.`);
					}
					break;
				case "a gothic lolita dress":
					r.push(`${His} dress modestly covers ${his}`);
					if (slave.butt > 10) {
						r.push(`ass, but it does nothing to conceal its absurd size.`);
					} else if (slave.butt > 7) {
						r.push(`butt, though it cannot conceal its absurd size.`);
					} else if (slave.butt > 3) {
						r.push(`big butt.`);
					} else {
						r.push(`butt.`);
					}
					break;
				case "a hanbok":
					r.push(`${His} hanbok modestly covers ${his}`);
					if (slave.butt > 10) {
						r.push(`ass, but it does nothing to conceal its absurd size.`);
					} else if (slave.butt > 7) {
						r.push(`butt, though it cannot conceal its absurd size.`);
					} else if (slave.butt > 3) {
						r.push(`big butt.`);
					} else {
						r.push(`butt.`);
					}
					break;
				case "a police uniform":
					r.push(`${His} police trousers modestly cover ${his}`);
					if (slave.butt > 10) {
						r.push(`ass, but it does nothing to conceal its absurd size.`);
					} else if (slave.butt > 7) {
						r.push(`butt, though it cannot conceal its absurd size.`);
					} else if (slave.butt > 3) {
						r.push(`big butt.`);
					} else {
						r.push(`butt.`);
					}
					break;
				case "a nice pony outfit":
				case "a slutty pony outfit":
					r.push(`${His} outfit immodestly covers ${his}`);
					if (slave.butt > 10) {
						r.push(`ass, and does nothing to conceal its absurd size.`);
					} else if (slave.butt > 7) {
						r.push(`butt, and does nothing to conceal its absurd size.`);
					} else if (slave.butt > 3) {
						r.push(`big butt.`);
					} else {
						r.push(`butt.`);
					}
					break;
				case "a one-piece swimsuit":
					r.push(`${His} swimsuit modestly covers ${his}`);
					if (slave.butt > 10) {
						r.push(`ass, but it does nothing to conceal its absurd size.`);
					} else if (slave.butt > 7) {
						r.push(`butt, though it cannot conceal its absurd size.`);
					} else if (slave.butt > 3) {
						r.push(`big butt.`);
					} else {
						r.push(`butt.`);
					}
					break;
				case "a t-shirt and jeans":
				case "cutoffs":
				case "jeans":
				case "a sweater and cutoffs":
					r.push(`${His} jeans modestly cover ${his}`);
					if (slave.butt > 10) {
						r.push(`ass, but it does nothing to conceal its absurd size.`);
					} else if (slave.butt > 7) {
						r.push(`butt, though it cannot conceal its absurd size.`);
					} else if (slave.butt > 3) {
						r.push(`big butt.`);
					} else {
						r.push(`butt.`);
					}
					break;
				case "a skimpy loincloth":
					r.push(`${His} loincloth barely covers ${his}`);
					if (slave.butt > 10) {
						r.push(`ass, but it does nothing to conceal its absurd size.`);
					} else if (slave.butt > 7) {
						r.push(`butt, though it cannot conceal its absurd size.`);
					} else if (slave.butt > 3) {
						r.push(`big butt.`);
					} else {
						r.push(`butt.`);
					}
					break;
				case "an oversized t-shirt and boyshorts":
				case "boyshorts":
					r.push(`${His} boy shorts modestly cover ${his}`);
					if (slave.butt > 10) {
						r.push(`ass, but it does nothing to conceal its absurd size.`);
					} else if (slave.butt > 7) {
						r.push(`butt, though it cannot conceal its absurd size.`);
					} else if (slave.butt > 3) {
						r.push(`big butt.`);
					} else {
						r.push(`butt.`);
					}
					break;
				case "sport shorts and a t-shirt":
				case "sport shorts and a sports bra":
				case "sport shorts":
					r.push(`${His} shorts cling tightly to ${his}`);
					if (slave.butt > 10) {
						r.push(`ass, but do nothing to conceal its absurd size.`);
					} else if (slave.butt > 7) {
						r.push(`butt, though they cannot conceal its absurd size.`);
					} else if (slave.butt > 3) {
						r.push(`big butt.`);
					} else {
						r.push(`butt.`);
					}
					break;
				case "leather pants and pasties":
				case "leather pants":
				case "leather pants and a tube top":
					r.push(`${His} leather pants snugly cover ${his}`);
					if (slave.butt > 10) {
						r.push(`curvaceously mammoth ass, but do nothing to conceal its absurd size.`);
					} else if (slave.butt > 7) {
						r.push(`curvaceously huge ass, though it cannot conceal its absurd size.`);
					} else if (slave.butt > 3) {
						r.push(`curvaceous big ass.`);
					} else {
						r.push(`curvaceous ass.`);
					}
					break;
				case "a burkini":
					r.push(`${His}`);
					if (slave.butt > 9) {
						r.push(`giant ass pushes up ${his} swimsuit's tunic.`);
					} else if (slave.butt > 6) {
						r.push(`large butt is accentuated by ${his} swimsuit.`);
					} else if (slave.butt > 3) {
						r.push(`big bottom is modestly covered by ${his} swimsuit.`);
					} else {
						r.push(`rear is modestly covered by ${his} swimsuit.`);
					}
					break;
				case "a long qipao":
					r.push(`${His} qipao modestly covers ${his}`);
					if (slave.butt > 10) {
						r.push(`ass, but it does nothing to conceal its absurd size.`);
					} else if (slave.butt > 6) {
						r.push(`butt, though it cannot conceal its absurd size.`);
					} else if (slave.butt > 3) {
						r.push(`big butt.`);
					} else {
						r.push(`butt.`);
					}
					break;
				case "a Santa dress":
					r.push(`The hemline of ${his} dress is intentionally too high,`);
					if (slave.butt > 10) {
						r.push(`leaving the entirety of ${his} massive ass exposed.`);
					} else if (slave.butt > 6) {
						r.push(`covering only the topmost portion of ${his} giant rear.`);
					} else if (slave.butt > 3) {
						r.push(`only managing to cover half of ${his} big butt.`);
					} else if (slave.butt > 2) {
						r.push(`exposing the very bottom of ${his} asscheeks.`);
					} else {
						r.push(`just barely managing to cover ${his} rear.`);
					}
					break;
				case "a courtesan dress":
					r.push(`${His} dress elegantly drapes across ${his}`);
					if (slave.butt > 10) {
						r.push(`inhuman buttocks, fanning wide as it travels down the lewd masses.`);
					} else if (slave.butt > 6) {
						r.push(`massive buttocks, giving a tantalizing view as it parts ever so slightly.`);
					} else if (slave.butt > 3) {
						r.push(`buttocks, making it look larger than it already is.`);
					} else {
						r.push(`buttocks.`);
					}
					break;
				case "a bimbo outfit":
					r.push(`${His} scandalously short miniskirt`);
					if (slave.butt > 10) {
						r.push(`is impossible to pull over ${his} enormous buttocks, leaving ${his} behind entirely exposed. The only hint of ${his} thong are a pair of straps disappearing into ${his} crack.`);
					} else if (slave.butt > 6) {
						r.push(`is impossible to pull over ${his} huge butt, leaving ${his} behind entirely exposed as its enormity has since devoured ${his} thong.`);
					} else if (slave.butt > 3) {
						r.push(`is constantly sliding up ${his} ample buttocks, leaving ${his} thong completely visible.`);
					} else {
						r.push(`barely manages to cover even half ${his} buttocks, leaving ${his} thong completely visible.`);
					}
					break;
				case "battledress":
					r.push(`${His} fatigue pants`);
					if (slave.butt > 10) {
						r.push(`are tailored as tastefully as possible to restrain ${his} enormous buttocks, though its massive size strains the seams.`);
					} else if (slave.butt > 6) {
						r.push(`are tailored as tastefully as possible to restrain ${his} huge buttocks.`);
					} else if (slave.butt > 3) {
						r.push(`are tailored to flatter ${his} big buttocks.`);
					} else {
						r.push(`tastefully hug ${his} derrière.`);
					}
					break;
				default:
			}
		}
	}

	r.push(App.Desc.mods(slave, "lower back"));

	r.push(`${He}'s got a`);
	if (slave.butt <= 1) {
		r.push(`flat and`);
		if (V.arcologies[0].FSSlimnessEnthusiast > 20 && V.arcologies[0].FSHedonisticDecadence === "unset") {
			r.push(either("attractive", "enticing", "fashionable"));
		} else {
			r.push(either("skinny", "slim", "taut"));
		}
		r.push(`ass,`);
	} else if (slave.butt <= 2) {
		if (V.arcologies[0].FSSlimnessEnthusiast > 20 && V.arcologies[0].FSHedonisticDecadence === "unset") {
			r.push(either("fashionable", "sleek and attractive", "small and enticing"));
		} else {
			r.push(either("small, rounded", "small but rounded", "small, sleek"));
		}
		r.push(`rear end,`);
	} else if (slave.butt <= 3) {
		r.push(`${either("big and healthy", "curved and plump", "healthy and plump")} derrière,`);
	} else if (slave.butt <= 4) {
		r.push(`${either("big bubble", "curvy and enticing", "juicy and large")} butt,`);
	} else if (slave.butt <= 5) {
		r.push(`${either("huge", "juicy and huge", "massive and undeniable")} rear end,`);
	} else if (slave.butt <= 6) {
		r.push(`${either("rather enormous", "truly massive")} posterior,`);
	} else if (slave.butt <= 7) {
		r.push(`${either("gigantic", "titanic")} ass,`);
	} else if (slave.butt <= 10) {
		r.push(`${either("gigantic", "titanic")} ass,`);
		if (slave.assignment === Job.DAIRY && V.dairyStimulatorsSetting > 1) {
			r.push(`so big it jiggles as the machine rapes ${his} asshole,`);
		} else if (!canWalk(slave)) {
			r.push(`so big it would jiggle as ${he} walked — if ${he} could walk —`);
		} else {
			r.push(`so big it jiggles as ${he} walks,`);
		}
	} else if (slave.butt <= 14) {
		r.push(`${either("cushion-like", "hall-crowding")} ass,`);
		if (slave.assignment === Job.DAIRY && V.dairyStimulatorsSetting > 1) {
			r.push(`so big it massively jiggles as the machine rapes ${his} asshole,`);
		} else if (!canWalk(slave)) {
			r.push(`so big it would jiggle nonstop as ${he} walked — if ${he} could walk —`);
		} else {
			r.push(`so big it jiggles nonstop as ${he} walks,`);
		}
	} else {
		r.push(`${either("bean bag sized", "room-crowding")} ass,`);
		if (slave.assignment === Job.DAIRY && V.dairyStimulatorsSetting > 1) {
			r.push(`so massive it jiggles endlessly as the machine rapes ${his} asshole,`);
		} else if (!canWalk(slave)) {
			r.push(`so massive it would jiggle endlessly as ${he} walked — if ${he} could walk —`);
		} else {
			r.push(`so massive it jiggles endlessly as ${he} walks,`);
		}
	}

	r.push(App.Desc.hips(slave));

	if (V.showImplantEffects === 1) {
		if (slave.fuckdoll > 0) {
			r.push(`The tight suit forces ${his} ass into the most attractive shape possible and keeps it there regardless of position.`);
		} else {
			if (slave.buttImplant === 1) {
				r.push(`${His} butt implants make ${his} ass look especially pert no matter how ${he} moves.`);
			} else if (slave.buttImplant === 2) {
				r.push(`${His} big butt implants make ${his} ass jut out curvaceously whatever pose ${he}'s in.`);
			} else if (slave.buttImplant > 2) {
				r.push(`${He} has`);
				if (slave.buttImplantType === "string") {
					r.push(`engorged string`);
				} else if (slave.buttImplantType === "normal") {
					r.push(`butt`);
				} else {
					r.push(`fillable butt`);
				}
				r.push(`implants, and it shows. Whatever ${his} position, ${his} ass looks just as artificially enticing.`);
			} else if (slave.buttImplant > 7) {
				r.push(`${He} has oversized`);
				if (slave.buttImplantType === "string") {
					r.push(`engorged string`);
				} else if (slave.buttImplantType === "normal") {
					r.push(`silicone butt`);
				} else {
					r.push(`fillable butt`);
				}
				r.push(`implants, and it is completely obvious. Whatever ${his} position, ${his} ass looks like someone shoved a pair of overinflated beachballs in ${his} buttcheeks.`);
			} else if (slave.buttImplant > 12) {
				r.push(`${He} has oversized`);
				if (slave.buttImplantType === "string") {
					r.push(`engorged string`);
				} else {
					r.push(`fillable butt`);
				}
				r.push(`implants, and it is completely obvious. Whatever ${his} position, ${his} ass looks like someone shoved a pair of ready to burst weather balloons in ${his} buttcheeks.`);
			} else if (slave.buttImplant > 17) {
				r.push(`${He} has oversized`);
				if (slave.buttImplantType === "string") {
					r.push(`engorged string`);
				} else {
					r.push(`fillable butt`);
				}
				r.push(`implants, and it is completely obvious. Whatever ${his} position, ${his} immense ass dominates ${his} surroundings with its unyielding mass.`);
			}
		}
		if (V.arcologies[0].FSTransformationFetishist !== "unset") {
			if (slave.buttImplant > 0) {
				r.push(`${His} rear is about ${Math.floor((slave.buttImplant / slave.butt) * 100)}% implant.`);
			}
		}
		if (V.arcologies[0].FSTransformationFetishist > 20) {
			const buttThreshold = V.arcologies[0].FSSlimnessEnthusiast !== "unset" ? 3 : 6;
			if (slave.butt >= buttThreshold) {
				if (slave.buttImplant / slave.butt < .25) {
					r.push(`${His} ass is <span class="red">disgustingly natural</span> for its size.`);
				} else {
					r.push(`${His} asscheeks are <span class="green">obviously implants,</span> as they should be.`);
				}
			}
		}
	}

	if (V.arcologies[0].FSGenderFundamentalistLawBeauty + V.arcologies[0].FSGenderRadicalistLawBeauty > 0) {
		if (slave.butt > 8 && V.arcologies[0].FSAssetExpansionist !== "unset") {
			r.push(`It's too big for the fashionable feminine ideal.`);
		} else if (slave.butt > 4 && V.arcologies[0].FSAssetExpansionist !== "unset") {
			r.push(`It's bigger than expected for the fashionable feminine ideal, but your arcology loves huge butts, so it's not a surprise.`);
		} else if (slave.butt > 4) {
			r.push(`It's too big for the fashionable feminine ideal.`);
		} else if (slave.butt < 3) {
			r.push(`It's too small for the fashionable feminine ideal.`);
		}
	} else if (V.arcologies[0].FSSlimnessEnthusiastLaw === 1 && (slave.butt > 1)) {
		r.push(`It's way too big for the fashionable feminine ideal.`);
	} else if (V.arcologies[0].FSHedonisticDecadenceLaw2 === 1 && (slave.butt < 5)) {
		r.push(`It's too small for the fashionable feminine ideal.`);
	}

	if ((slave.physicalAge <= 3 && slave.butt >= 8) ||
		(slave.physicalAge <= 12 && slave.butt >= 12) ||
		(slave.physicalAge > 12 && slave.butt > 17)
	) {
		if (slave.fuckdoll > 0) {
			r.push(`The difficulties of having a gigantic ass is greatly reduced for a Fuckdoll, since ${he}'s almost always restrained, stationary, or both.`);
		} else {
			if (canWalk(slave)) {
				r.push(`${His} butt is so massive that it is difficult for ${him} to move.`);
				if (slave.muscles > 95) {
					r.push(`However, ${he} is so powerfully built that ${he} can manage it with effort, using ${his}`);
					if (hasBothArms(slave)) {
						r.push(`arms`);
					} else {
						r.push(`arm`);
					}
					r.push(`to support them.`);
				} else if (slave.muscles > 30) {
					r.push(`${He} can barely manage to get to ${his} feet unaided, and usually walks with ${his} ${hands} sunk into ${his} buttcheeks to help take their weight.`);
				} else if (slave.muscles > 5) {
					r.push(`${He} requires assistance to get to ${his} feet, and tries to rest ${his} huge cheeks on whatever nearby surfaces ${he} can.`);
				} else {
					r.push(`${He} cannot get to ${his} feet unaided, and prefers to remain seated on ${his} enormous rear rather than stand.`);
				}
			} else {
				r.push(`Together it is nearly the same size as ${his} torso, making ${him} about half butt.`);
			}
			if (slave.butt > 15) {
				if (V.buttAccessibility === 1) {
					r.push(`Fortunately for ${him}, the penthouse is adapted for daily life with a rear`);
				} else {
					if (descType === DescType.MARKET) {
						r.push(`${He}'ll have`);
					} else {
						r.push(`${He} has`);
					}
					r.push(`trouble living in your penthouse, which is not designed for ${girl}s with buttcheeks`);
				}
				r.push(`wider than a standard doorway.`);
			}
		}
	}

	if (slave.fuckdoll === 0) {
		if (slave.markings === "heavily freckled") {
			r.push(`${His} freckles are particularly dense across ${his} lower back.`);
		} else if (slave.markings === "freckles") {
			r.push(`${His} lower back is covered in a light speckling of freckles.`);
		}
	}

	if (slave.tailShape === "cat") {
		r.push(`${He} has a long and slender, ${slave.tailEffect === "none" ? `${slave.tailColor} ${App.Utils.translate("cat")} tail` : `${slave.tailColor} colored ${App.Utils.translate("cat")} tail with ${slave.tailEffect},`} that tends to sway side to side when ${he} is focused on a task.`);
	} else if (slave.tailShape === "leopard") {
		r.push(`${He} has a long, white-tipped and ${slave.tailEffect === "none" ? `${slave.tailColor} leopard tail` : `${slave.tailColor} colored leopard tail with ${slave.tailEffect}`}. It's white underneath and covered in ${slave.patternColor} spots that form incomplete bands toward the tails end. The tail tends to sway side to side when ${he} is focused on a task.`);
	} else if (slave.tailShape === "tiger") {
		r.push(`${He} has a long ${slave.tailEffect === "none" ? `${slave.tailColor} tiger tail` : `${slave.tailColor} colored tiger tail with ${slave.tailEffect}`}, that's about half the length of ${his} body and covered in distinct ${slave.patternColor} vertical stripes. The tail tends to sway side to side when ${he} is focused on a task.`);
	} else if (slave.tailShape === "jaguar") {
		r.push(`${He} has a long, black-tipped and ${slave.tailEffect === "none" ? `${slave.tailColor} jaguar tail` : `${slave.tailColor} colored jaguar tail with ${slave.tailEffect}, that's`} covered in ${slave.patternColor} rosettes. ${He} tends to sway it from side to side when ${he} is focused on a task.`);
	} else if (slave.tailShape === "lion") {
		r.push(`${He} has a long ${slave.tailEffect === "none" ? `${slave.tailColor} lion tail that ends` : `${slave.tailColor} colored lion tail with ${slave.tailEffect}, ending`} in a ${slave.hColor} tuft of hair. It can be seen swaying from side to side when ${he} is focusing on a task.`);
	} else if (slave.tailShape === "dog") {
		r.push(`${He} has a bushy, ${slave.tailEffect === "none" ? `${slave.tailColor} ${App.Utils.translate("dog")} tail` : `${slave.tailColor} colored ${App.Utils.translate("dog")} tail with ${slave.tailEffect}`}. ${He} tends to wag it energetically when ${he} gets exited.`);
	} else if (slave.tailShape === "wolf") {
		r.push(`${He} has a long and fluffy wolf tail, that's covered in dense ${slave.tailEffect === "none" ? `${slave.tailColor} fur` : `${slave.tailColor} colored fur with ${slave.tailEffect}`}. It tends to wag energetically when ${he} gets exited.`);
	} else if (slave.tailShape === "jackal") {
		r.push(`${He} has a bushy, black-tipped and ${slave.tailEffect === "none" ? `${slave.tailColor} jackal tail` : `${slave.tailColor} colored jackal tail with ${slave.tailEffect}`}. It tends to wag energetically when ${he} gets exited.`);
	} else if (slave.tailShape === "fox") {
		r.push(`${He} has a soft and fluffy, ${slave.tailEffect === "none" ? `${slave.tailColor} ${App.Utils.translate("fox")} tail` : `${slave.tailColor} colored ${App.Utils.translate("fox")} tail with ${slave.tailEffect}`}.`);
	} else if (slave.tailShape === "kitsune") {
		r.push(`${He} has nine incredibly soft and fluffy, ${slave.tailEffect === "none" ? `${slave.tailColor} ${App.Utils.translate("fox")} tails` : `${slave.tailColor} colored ${App.Utils.translate("fox")} tails with ${slave.tailEffect}`}; they feel heavenly to the touch.`);
	} else if (slave.tailShape === "tanuki") {
		r.push(`${He} has a long and fluffy, ${slave.tailEffect === "none" ? `${slave.tailColor} tanuki tail with` : `${slave.tailColor} colored tanuki tail with ${slave.tailEffect} and`} a ${slave.patternColor} stripe running down the middle.`);
	} else if (slave.tailShape === "raccoon") {
		r.push(`${He} has a long and fluffy, ${slave.tailEffect === "none" ? `${slave.tailColor} raccoon tail with` : `${slave.tailColor} colored raccoon tail with ${slave.tailEffect} and`} ${slave.patternColor} rings running along its length.`);
	} else if (slave.tailShape === "rabbit") {
		r.push(`${He} has a short and fluffy, ${slave.tailEffect === "none" ? `${slave.tailColor} ${App.Utils.translate("rabbit")} tail` : `${slave.tailColor} colored ${App.Utils.translate("rabbit")} tail with ${slave.tailEffect}`}.`);
	} else if (slave.tailShape === "squirrel") {
		r.push(`${He} has a big and bushy, ${slave.tailEffect === "none" ? `${slave.tailColor} ${App.Utils.translate("squirrel")} tail` : `${slave.tailColor} colored ${App.Utils.translate("squirrel")} tail with ${slave.tailEffect}`}.`);
	} else if (slave.tailShape === "horse") {
		r.push(`${He} has a long ${App.Utils.translate("horse")} tail consisting of ${slave.hColor} hair.`);
	} else if (slave.tailShape === "bird") {
		r.push(`${He} has a bundle of soft, ${slave.tailEffect === "none" ? `${slave.tailColor} tail feathers` : `${slave.tailColor} colored tail feathers with ${slave.tailEffect}`}. The tail is graduated, meaning that the feathers are longest in the middle and decrease in length the further away they go from the middle.`);
	} else if (slave.tailShape === "phoenix") {
		r.push(`${He} has a bundle of magnificent, ${slave.tailEffect === "none" ? `${slave.tailColor} tail feathers that` : `${slave.tailColor} colored tail feathers with ${slave.tailEffect}. They`} give off a luminescent glow when in the dark. The tail is graduated, meaning that the feathers are longest in the middle and decrease in length the further away they go from the middle.`);
	} else if (slave.tailShape === "peacock") {
		r.push(`${He} has a bundle of iridescent, ${slave.tailEffect === "none" ? `${slave.tailColor} peacock tail feathers` : `${slave.tailColor} colored peacock tail feathers with ${slave.tailEffect}`}; ${his} tail can fan out to proudly display ${his} pretty feathers.`);
	} else if (slave.tailShape === "raven") {
		r.push(`${He} has a bundle of ${slave.tailEffect === "none" ? `${slave.tailColor} raven tail feathers` : `${slave.tailColor} colored raven tail feathers with ${slave.tailEffect}`}. The tail is graduated, meaning that the feathers are longest in the middle and decrease in length the further away they go from the middle.`);
	} else if (slave.tailShape === "swan") {
		r.push(`${He} has a small bundle of short ${slave.tailEffect === "none" ? `${slave.tailColor} swan tail feathers that` : `${slave.tailColor} colored swan tail feathers with ${slave.tailEffect}, they`} have a slight upwards curve to them. The tail is graduated, meaning that the feathers are longest in the middle and decrease in length the further away they go from the middle.`);
	} else if (slave.tailShape === "sheep") {
		r.push(`${He} has a short and soft ${slave.tailEffect === "none" ? `${slave.tailColor} sheep tail` : `${slave.tailColor} colored sheep tail with ${slave.tailEffect}`}.`);
	} else if (slave.tailShape === "cow") {
		r.push(`${He} has a long ${slave.tailEffect === "none" ? `${slave.tailColor} ${App.Utils.translate("cow")} tail with` : `${slave.tailColor} colored ${App.Utils.translate("cow")} tail with ${slave.tailEffect} and`} a small tuft of ${slave.hColor} hair at its end; ${he} tends to swat at things absentmindedly.`);
	} else if (slave.tailShape === "gazelle") {
		r.push(`${He} has a short and silky, ${slave.tailEffect === "none" ? `${slave.tailColor} gazelle tail with` : `${slave.tailColor} colored gazelle tail with ${slave.tailEffect} and`} a ${slave.patternColor} stripe running down its middle.`);
	} else if (slave.tailShape === "deer") {
		r.push(`${He} has a short and soft, ${slave.tailEffect === "none" ? `${slave.tailColor} deer tail` : `${slave.tailColor} colored deer tail with ${slave.tailEffect},`} that tends to wiggle when ${he} gets exited.`);
	} else if (slave.tailShape === "succubus") {
		r.push(`${He} has a long and slim, ${slave.skin} succubus tail; the tail ends in a soft ${slave.tailEffect === "none" ? `${slave.tailColor} heart shape` : `${slave.tailColor} colored heart shape with ${slave.tailEffect}`}.`);
	} else if (slave.tailShape === "dragon") {
		r.push(`${He} has a long and thick draconic tail; the tail is covered in ${slave.tailEffect === "none" ? `${slave.tailColor} scales` : `${slave.tailColor} colored scales with ${slave.tailEffect}`}.`);
	} else if (slave.tail === "stinger") {
		r.push(`${He} has a long and segmented, ${slave.tailEffect === "none" ? `${slave.tailColor} scorpion tail` : `${slave.tailColor} colored scorpion tail with ${slave.tailEffect}`} made of advanced synthetic alloys. The tail ends in a sharp stinger that can fire projectiles. Its projectiles can kill or incapacitate.`);
	} else if (slave.tail === "combat") {
		r.push(`${He} has a very long, ${slave.tailEffect === "none" ? `${slave.tailColor} metallic tail that` : `${slave.tailColor} colored metallic tail with ${slave.tailEffect}. It`} can lash out, constrict, and deploy razor sharp spikes on command.`);
	} else if (slave.tail === "sex") {
		r.push(`${He} has a long and slender, ${slave.tailEffect === "none" ? `${slave.tailColor} tail` : `${slave.tailColor} colored tail with ${slave.tailEffect}`}. While not strong, it is very dexterous and has a small fleshy spade-shaped tip that can vibrate and dispense lube on command.`);
	}

	r.push(App.Desc.mods(slave, "buttock"));
	return r.join(" ");
};


code:
/**
 * @param {App.Entity.SlaveState} slave
 * @param {DescType} [descType=DescType.NORMAL]
 * @returns {string}
 */
App.Desc.buttplug = function(slave, descType = DescType.NORMAL) {
	const r = [];
	const {
		he, him, his, He, His
	} = getPronouns(slave);
	if (slave.assignment === Job.DAIRY && V.dairyRestraintsSetting > 1) {
		r.push(`${slave.slaveName}'s anus is`);
		if (V.dairyStimulatorsSetting > 1) {
			r.push(`filled by an enormous dildo`);
			if (slave.balls > 0) {
				r.push(`which is sodomizing ${him} vigorously to force ejaculation.`);
			} else {
				r.push(`which is filling ${his} rectum with curative fluids.`);
			}
		} else {
			r.push(`being penetrated by ${his} milking machine for curative delivery.`);
		}
	} else {
		if (V.showClothing === 1 && descType !== DescType.MARKET) {
			const clothing = App.Data.clothes.get(slave.clothes);
			if (clothing && clothing.desc && "buttplug" in clothing.desc) {
				r.push(clothing.desc.buttplug(slave));
			} else {
				switch (slave.clothes) {
					case "a Fuckdoll suit":
						r.push(`The suit has a wide opening for its rear hole, leaving the anus bare and unprotected.`);
						break;
					case "chains":
						if (slave.chastityAnus) {
							r.push(`${His} anal chastity belt is completely visible and a chain runs down around it.`);
						} else {
							r.push(`Another chain runs down ${his}`);
							if (slave.anus > 2) {
								r.push(`asscrack; ${his} asshole is so huge that it occasionally threatens to swallow one of the links.`);
							} else {
								r.push(`asscrack.`);
							}
						}
						break;
					case "Western clothing":
						if (slave.chastityAnus) {
							r.push(`${His} anal chastity belt is completely visible from the rear.`);
						} else {
							r.push(`With ${his} ass bare,`);
							if (slave.anus > 2) {
								r.push(`${his} huge asshole is very visible from the rear.`);
							} else if (slave.anus > 1) {
								r.push(`${his} roomy asshole is very visible from the rear.`);
							} else {
								r.push(`there is an occasional glimpse of ${his} asshole.`);
							}
						}
						break;
					case "body oil":
						if (slave.chastityAnus) {
							r.push(`${His} anal chastity belt is visible from the rear.`);
						} else {
							r.push(`With ${his} butt bare,`);
							if (slave.anus > 2) {
								r.push(`${his} huge, well-oiled asshole is very visible from the rear.`);
							} else if (slave.anus > 1) {
								r.push(`${his} roomy, well-oiled asshole is very visible from the rear.`);
							} else {
								r.push(`there is an occasional glimpse of ${his} well-oiled asshole.`);
							}
						}
						break;
					case "attractive lingerie for a pregnant woman":
						if (slave.chastityAnus) {
							r.push(`${His} anal chastity belt is quite visible under ${his} silken panties.`);
						} else {
							r.push(`${His}`);
							if (slave.anus > 3) {
								r.push(`gaping asshole can easily be discerned though ${his} panties.`);
							} else {
								r.push(`panties completely hide ${his} asshole.`);
							}
						}
						break;
					case "kitty lingerie":
						if (slave.chastityAnus) {
							r.push(`${His} anal chastity belt is quite visible under ${his} silken panties.`);
						} else {
							r.push(`${His} silken panties cover ${his}`);
							if (slave.anus > 3) {
								r.push(`gaping asshole.`);
							} else {
								r.push(`asshole.`);
							}
						}
						break;
					case "a maternity dress":
						if (slave.chastityAnus) {
							r.push(`${His} maternity dress hides ${his} anal chastity accessory underneath.`);
						} else {
							r.push(`Though ${his} dress covers ${his} rear, ${his} asshole is bare beneath it.`);
						}
						break;
					case "stretch pants and a crop-top":
						if (slave.chastityAnus) {
							r.push(`${His} tight, form-fitting pants highlight the chastity device hidden beneath them.`);
						} else {
							r.push(`${His} tight, form-fitting pants conceal ${his} asshole, but even a cursory fondle reveals ${he} isn't wearing any underwear.`);
						}
						break;
					case "spats and a tank top":
						if (slave.chastityAnus) {
							r.push(`${His} tight, form-fitting shorts make ${his} chastity device obvious.`);
						} else {
							r.push(`${His} tight, form-fitting shorts hug ${his} asshole so closely that ${his} anus is distinctly visible through the material.`);
						}
						break;
					case "a slutty qipao":
						if (slave.chastityAnus) {
							r.push(`${His} anal chastity belt is barely covered from the rear.`);
						} else {
							if (slave.butt > 6) {
								r.push(`The rear hem of ${his} qipao is so inadequate to cover ${his} butt that`);
								if (slave.anus > 2) {
									r.push(`${his} huge asshole is very visible from the rear.`);
								} else if (slave.anus > 1) {
									r.push(`${his} roomy asshole is very visible from the rear.`);
								} else {
									r.push(`there is an occasional glimpse of ${his} asshole.`);
								}
							}
						}
						break;
					case "uncomfortable straps":
						if (slave.chastityAnus) {
							r.push(`${His} anal chastity belt is completely visible. ${His} straps come down around it between ${his} buttocks.`);
						} else {
							r.push(`The strap between ${his} buttocks has a steel ring over ${his}`);
							if (slave.anus > 2) {
								r.push(`butthole to admit cock. Amusingly, the ring is probably more restrictive than ${his} loose ass.`);
							} else {
								r.push(`asshole to admit cock.`);
							}
						}
						break;
					case "shibari ropes":
						if (slave.chastityAnus) {
							r.push(`${His} anal chastity belt is completely visible. ${His} rope passes around it between ${his} buttocks.`);
						} else {
							r.push(`The rope between ${his} buttocks passes`);
							if (slave.anus > 2) {
								r.push(`over ${his} asshole, but ${his} lewd anus is so big that it's visible to either side of it.`);
							} else {
								r.push(`tightly over ${his} asshole.`);
							}
						}
						break;
					case "restrictive latex":
						if (slave.chastityAnus) {
							r.push(`${His} anal chastity belt can be barely made out through the latex.`);
						} else {
							r.push(`${His}`);
							if (slave.anus > 1) {
								r.push(`well-fucked`);
							} else {
								r.push(`tight`);
							}
							r.push(`asshole is visible through a hole in the latex, left expressly to admit cock.`);
						}
						break;
					case "attractive lingerie":
						if (slave.chastityAnus) {
							r.push(`${His} anal chastity belt is on display.`);
						} else {
							r.push(`${His} g-string`);
							if (slave.anus > 1) {
								r.push(`cannot conceal ${his} well-fucked`);
							} else {
								r.push(`shows only a hint of ${his} tight`);
							}
							r.push(`asshole.`);
						}
						break;
					case "a burkini":
					case "a monokini":
						if (slave.chastityAnus) {
							r.push(`${His} anal chastity device is concealed by ${his} swimsuit.`);
						} else {
							r.push(`${His} swimsuit fully conceals ${his}`);
							if (slave.anus > 1) {
								r.push(`well-fucked asshole.`);
							} else {
								r.push(`tight butthole.`);
							}
						}
						break;
					case "overalls":
						if (slave.chastityAnus) {
							r.push(`${His} anal chastity device is concealed by ${his} overalls.`);
						} else {
							r.push(`${His} overalls give no hint of the`);
							if (slave.anus > 1) {
								r.push(`well-fucked butthole`);
							} else {
								r.push(`tight asshole`);
							}
							r.push(`underneath.`);
						}
						break;
					case "an apron":
						if (slave.chastityAnus) {
							r.push(`Since ${he} is nude under ${his} apron, ${his} anal chastity device is on open display.`);
						} else {
							r.push(`Since ${he} is nude under ${his} apron, ${his}`);
							if (slave.anus > 1) {
								r.push(`well-fucked asshole`);
							} else {
								r.push(`tight butthole`);
							}
							r.push(`is on open display.`);
						}
						break;
					case "a cybersuit":
						if (slave.chastityAnus) {
							r.push(`${His} anal chastity device is integrated into ${his} bodysuit.`);
						} else {
							r.push(`${His} bodysuit fully conceals ${his}`);
							if (slave.anus > 1) {
								r.push(`well-fucked asshole.`);
							} else {
								r.push(`tight butthole.`);
							}
						}
						break;
					case "a tight Imperial bodysuit":
						if (slave.chastityAnus) {
							r.push(`${His} anal chastity device is integrated into ${his} high-tech bodysuit.`);
						} else {
							r.push(`${His} bodysuit fully conceals ${his}`);
							if (slave.anus > 1) {
								r.push(`well-fucked asshole.`);
							} else {
								r.push(`tight butthole.`);
							}
						}
						break;
					case "a string bikini":
						if (slave.chastityAnus) {
							r.push(`${His} anal chastity belt is integrated into ${his} bikini.`);
						} else {
							r.push(`${His}`);
							if (slave.anus > 1) {
								r.push(`well-fucked asshole makes a mockery of ${his} string bikini, which cannot begin to conceal it.`);
							} else {
								r.push(`string bikini shows more than a hint of ${his} tight asshole.`);
							}
						}
						break;
					case "a scalemail bikini":
						if (slave.chastityAnus) {
							r.push(`${His} anal chastity belt is integrated into ${his} bikini.`);
						} else {
							r.push(`${His}`);
							if (slave.anus > 1) {
								r.push(`well-fucked asshole is concealed by ${his} scalemail bikini.`);
							} else {
								r.push(`scalemail bikini conceals ${his} tight asshole.`);
							}
						}
						break;
					case "striped panties":
						if (slave.chastityAnus) {
							r.push(`${His} anal chastity belt is integrated into ${his} panties.`);
						} else {
							r.push(`${His}`);
							if (slave.anus > 1) {
								r.push(`well-fucked asshole is concealed by ${his} cute panties.`);
							} else {
								r.push(`cute panties conceal ${his} tight asshole.`);
							}
						}
						break;
					case "clubslut netting":
						if (slave.chastityAnus) {
							r.push(`${His} anal chastity belt is fully visible through the netting.`);
						} else {
							r.push(`There's a hole in ${his} netting right over ${his}`);
							if (slave.anus > 1) {
								r.push(`big`);
							} else {
								r.push(`tight`);
							}
							r.push(`butthole.`);
						}
						break;
					case "a cheerleader outfit":
						r.push(`If ${he} bends over even slightly, the hem of ${his} skirt rides up to reveal`);
						if (slave.chastityAnus) {
							r.push(`${his} anal chastity belt.`);
						} else {
							if (slave.anus > 1) {
								r.push(`${his} lewd butthole.`);
							} else {
								r.push(`a hint of ${his} tight anus.`);
							}
						}
						break;
					case "harem gauze":
						r.push(`${His}`);
						if (slave.chastityAnus) {
							r.push(`anal chastity belt is clearly`);
						} else {
							if (slave.anus > 1) {
								r.push(`well-fucked asshole is clearly`);
							} else {
								r.push(`tight ass is tantalizingly`);
							}
						}
						r.push(`visible through ${his} gauze.`);
						break;
					case "a fallen nuns habit":
						if (slave.chastityAnus) {
							r.push(`${His} uncovered butt shows off ${his} anal chastity belt clearly when ${he} bends over.`);
						} else {
							r.push(`With ${his} butt uncovered, committing the sin of sodomy with this nun is as easy as bending ${him} over.`);
						}
						break;
					case "a chattel habit":
						if (slave.chastityAnus) {
							r.push(`Underneath ${his} chattel habit, ${his} anal chastity belt prevents anal.`);
						} else {
							r.push(`The strip of cloth over ${his} rear hole can be flipped up for anal, or tucked up under the belt for prolonged sodomy.`);
						}
						break;
					case "a penitent nuns habit":
						if (slave.chastityAnus) {
							r.push(`Underneath ${his} habit, ${his} anal chastity belt prevents anal.`);
						} else {
							r.push(`${His} poor sinful asshole is terribly chafed by ${his} habit.`);
						}
						break;
					case "a slutty outfit":
						r.push(`${His} slutty outfits`);
						if (slave.chastityAnus) {
							r.push(`betray ${his} anal chastity belt.`);
						} else {
							r.push(`are designed for easy access to ${his} asshole.`);
						}
						break;
					case "a halter top dress":
						if (slave.chastityAnus) {
							r.push(`${His} beautiful halter top dress hides ${his} anal chastity accessory underneath.`);
						} else {
							r.push(`Though ${his} halter top dress is very beautiful, ${his} asshole is bare beneath it.`);
						}
						break;
					case "a ball gown":
						if (slave.chastityAnus) {
							r.push(`${His} fabulous silken ball gown hides ${his} anal chastity accessory underneath.`);
						} else {
							r.push(`Though ${his} silken ball gown is fabulous, ${his} asshole is bare beneath it.`);
						}
						break;
					case "a comfortable bodysuit":
						r.push(`${His} bodysuit is so form-fitting that the shape of ${his}`);
						if (slave.chastityAnus) {
							r.push(`anal chastity accessory is clearly`);
						} else {
							r.push(`anus is distinctly`);
						}
						r.push(`visible.`);
						break;
					case "a latex catsuit":
						r.push(`${His} crotch zipper`);
						if (slave.chastityAnus) {
							r.push(`does nothing as ${his} anal chastity accessory is underneath it.`);
						} else {
							r.push(`gives ready access to ${his} asshole.`);
						}
						break;
					case "a leotard":
						r.push(`The thin strip of leotard running between`);
						if (slave.chastityAnus) {
							r.push(`${his}`);
							if (hasBothLegs(slave)) {
								r.push(`legs`);
							} else {
								r.push(`hips`);
							}
							r.push(`are so thin that ${his} anal chastity accessory is clearly visible underneath.`);
						} else {
							r.push(`${his} buttocks are so thin and snug that the outline of ${his} anus is clearly`);
							if (slave.butt > 3) {
								r.push(`visible if ${he}'s spread.`);
							} else {
								r.push(`visible.`);
							}
						}
						break;
					case "a mini dress":
						r.push(`If ${he} bends over even slightly, the hem of ${his} short dress rides up to reveal ${his}`);
						if (slave.chastityAnus) {
							r.push(`anal chastity accessory underneath.`);
						} else {
							if (slave.anus > 1) {
								r.push(`lewd butthole.`);
							} else {
								r.push(`tight anus.`);
							}
						}
						break;
					case "a slutty nurse outfit":
						if (slave.chastityAnus) {
							r.push(`The very tight skirt covers ${his} anal chastity accessory.`);
						} else {
							r.push(`The skirt is tight enough that lifting it to fuck ${his} butt is an amusing wrestling match.`);
						}
						break;
					case "a schoolgirl outfit":
						r.push(`The skirt is so short that it`);
						if (slave.chastityAnus) {
							r.push(`reveals ${his} anal chastity accessory.`);
						} else {
							r.push(`doesn't even have to be lifted to fuck ${his} schoolgirl ass.`);
						}
						break;
					case "a hijab and blouse":
						r.push(`${His} long skirt may be modest, but it's also loose and easy to lift, allowing access to`);
						if (slave.chastityAnus) {
							r.push(`${his} anal chastity accessory.`);
						} else {
							r.push(`${his} anus.`);
						}
						break;
					case "a hijab and abaya":
					case "a niqab and abaya":
						r.push(`The abaya may be modest, but it's also loose and easy to lift, allowing access to`);
						if (slave.chastityAnus) {
							r.push(`${his} anal chastity accessory.`);
						} else {
							r.push(`${his} anus.`);
						}
						break;
					case "a klan robe":
						r.push(`The robe fully covers ${his} body, but it's also loose and easy to lift, allowing access to`);
						if (slave.chastityAnus) {
							r.push(`${his} anal chastity accessory.`);
						} else {
							r.push(`${his} anus.`);
						}
						break;
					case "a slutty klan robe":
						r.push(`The skimpy robe fails to cover most of ${his} body, allowing easy access to`);
						if (slave.chastityAnus) {
							r.push(`${his} anal chastity accessory.`);
						} else {
							r.push(`${his} anus.`);
						}
						break;
					case "a burqa":
						r.push(`The burqa's heavy fabric makes it somewhat difficult to lift, which helps to conceal ${his}`);
						if (slave.chastityAnus) {
							r.push(`anal chastity accessory.`);
						} else {
							if (slave.anus > 2) {
								r.push(`immorally used asshole.`);
							} else {
								r.push(`naked asshole.`);
							}
						}
						break;
					case "a slutty maid outfit":
						r.push(`The short skirt of ${his} maid dress`);
						if (slave.chastityAnus) {
							r.push(`covers ${his} anal chastity accessory.`);
						} else {
							r.push(`is made to be easily liftable for access to ${his} anus.`);
						}
						break;
					case "a nice maid outfit":
						r.push(`As conservative as ${his} dress is,`);
						if (slave.chastityAnus) {
							r.push(`${his} anal chastity accessory still hides under it.`);
						} else {
							r.push(`${his} anus is still bare beneath it.`);
						}
						break;
					case "a kimono":
						r.push(`As demure as the kimono is,`);
						if (slave.chastityAnus) {
							r.push(`${his} anal chastity accessory still lies beneath it.`);
						} else {
							r.push(`${his} anus is still bare underneath it.`);
						}
						break;
					case "a Santa dress":
						r.push(`The short hem of ${his} festive dress`);
						if (slave.chastityAnus) {
							r.push(`fails to fully cover ${his} anal chastity device.`);
						} else {
							r.push(`allows easy access to ${his} anus.`);
						}
						break;
					case "a long qipao":
						r.push(`The qipao may be modest, but it's also loose and easy to lift, allowing access to`);
						if (slave.chastityAnus) {
							r.push(`${his} anal chastity accessory.`);
						} else {
							r.push(`${his} anus.`);
						}
						break;
					case "a courtesan dress":
						if (slave.chastityAnus) {
							r.push(`${His} layered skirt, when unparted, hides ${his} anal chastity accessory.`);
						} else {
							r.push(`${His} skirt may look fancy, but it allows easy access to ${his} bare anus.`);
						}
						break;
					case "a bimbo outfit":
					case "a tube top and thong":
					case "a thong":
					case "a t-shirt and thong":
						if (slave.chastityAnus) {
							r.push(`${His} anal chastity belt keeps ${his} thong from riding up on ${him}.`);
						} else {
							r.push(`${His} thong can easily be slipped aside to expose ${his} anus.`);
						}
						break;
					case "conservative clothing":
					case "a toga":
					case "a huipil":
					case "cutoffs and a t-shirt":
					case "battledress":
					case "battlearmor":
					case "Imperial Plate":
					case "a mounty outfit":
					case "lederhosen":
					case "a dirndl":
					case "a biyelgee costume":
					case "slutty business attire":
					case "nice business attire":
					case "a military uniform":
					case "a bunny outfit":
					case "a nice nurse outfit":
					case "a schutzstaffel uniform":
					case "a slutty schutzstaffel uniform":
					case "a red army uniform":
					case "a button-up shirt and panties":
					case "a gothic lolita dress":
					case "a hanbok":
					case "a bra":
					case "a button-up shirt":
					case "a nice pony outfit":
					case "a sweater":
					case "a tank-top":
					case "a tube top":
					case "a one-piece swimsuit":
					case "a police uniform":
					case "a striped bra":
					case "a skimpy loincloth":
					case "a slutty pony outfit":
					case "a sports bra":
					case "a sweater and panties":
					case "a t-shirt":
					case "a tank-top and panties":
					case "an oversized t-shirt and boyshorts":
					case "an oversized t-shirt":
					case "a t-shirt and jeans":
					case "boyshorts":
					case "cutoffs":
					case "leather pants and pasties":
					case "leather pants":
					case "panties":
					case "sport shorts and a t-shirt":
					case "a t-shirt and panties":
					case "panties and pasties":
					case "pasties":
					case "striped underwear":
					case "sport shorts and a sports bra":
					case "jeans":
					case "a sweater and cutoffs":
					case "leather pants and a tube top":
					case "sport shorts":
						/* We could use chastity belt descriptions! */
						break;
					default:
						if (slave.anus > 2) {
							if (slave.chastityAnus) {
								r.push(`${His} bare buttocks and ${his} anal chastity accessory are very visible from the rear.`);
							} else {
								r.push(`With ${his} ass bare, ${his} huge asshole is very visible from the rear.`);
							}
						} else if (slave.anus > 1) {
							if (slave.chastityAnus) {
								r.push(`${His} bare buttocks and ${his} anal chastity accessory are very visible from the rear.`);
							} else {
								r.push(`With ${his} ass bare, ${his} loose asshole is visible from the rear.`);
							}
						} else {
							if (slave.chastityAnus) {
								r.push(`${His} bare buttocks and ${his} anal chastity accessory are visible.`);
							} else {
								r.push(`With ${his} ass bare, there is an occasional glimpse of ${his} asshole.`);
							}
						}
						break;
				}
			}
		}
	}
	const buttplug = App.Data.buttplug.get(slave.buttplug) || V.customItem.buttplug.get(slave.buttplug);
	if (buttplug.width === 1) {
		if (buttplug.length === 1) {
			r.push(`It's filled by a standard sized`);
			if (slave.anus > 2) {
				r.push(`${slave.buttplug}, which is on the verge of falling out.`);
			} else {
				r.push(`${slave.buttplug}.`);
			}
		} else {
			const plug = slave.buttplug.startsWith("long ") ? slave.buttplug.slice(5) : slave.buttplug;
			r.push(`It's filled by a standard sized, overly long`);
			if (slave.anus > 2) {
				r.push(`${plug}, which is on the verge of sliding out ${his} rear.`);
			} else {
				r.push(`${plug}.`);
			}
			r.push(`It causes a noticeable bulge in ${his} belly.`);
		}
	} else if (buttplug.width === 2) {
		r.push(`It's`);
		if (slave.anus < 2) {
			r.push(`agonizingly stretched`);
		} else if (slave.anus < 3) {
			r.push(`uncomfortably stretched`);
		} else {
			r.push(`comfortably stretched`);
		}
		if (buttplug.length === 1) {
			r.push(`by a large ${slave.buttplug}.`);
		} else {
			r.push(`by a large and long ${slave.buttplug}. It causes a noticeable bulge in ${his} belly.`);
		}
	} else if (buttplug.width === 3) {
		if (buttplug.length === 1) {
			if (slave.anus < 4) {
				r.push(`It's agonizingly stretched by a ${slave.buttplug} so huge ${his} anus is probably being stretched into a permanent gape.`);
			} else {
				r.push(`Its ridiculous gape is comfortably filled by a huge ${slave.buttplug}.`);
			}
		} else {
			if (slave.anus < 4) {
				r.push(`It's agonizingly stretched by a ${slave.buttplug} so huge it causes ${his} belly to bulge and is likely stretching ${his} anus into a permanent gape.`);
			} else {
				r.push(`Its ridiculous gape is comfortably filled by a wide and long ${slave.buttplug}. It causes a noticeable bulge in ${his} belly.`);
			}
		}
		if (slave.anus < 4) {
			if (slave.fuckdoll === 0) {
				if (slave.fetish === "masochist" && slave.fetishKnown === 1 && slave.fetishStrength > 60) {
					r.push(`${He}'s frequently in tears from the pain, which is so sharp it often tips ${him} over into spontaneous orgasm.`);
				} else {
					r.push(`${He} spends much of ${his} time sobbing with anal pain and fear at having ${his} hole ruined.`);
				}
			}
		}
	}

	switch (buttplug.width) {
		case 3:
			if (slave.buttplugAttachment === "tail") {
				r.push(`${He} sways the tail back and forth with every ginger movement of ${his} rear.`);
			} else if (slave.buttplugAttachment === "fox tail") {
				r.push(`${He} sways the bushy ${slave.hColor} tail back and forth with every ginger movement of ${his} rear.`);
			} else if (slave.buttplugAttachment === "cow tail") {
				r.push(`${He} sways the spotted tail back and forth with every ginger movement of ${his} rear.`);
			} else if (slave.buttplugAttachment === "cat tail") {
				r.push(`${He} jiggles the tail back and forth with every ginger movement of ${his} rear.`);
			}
			break;
		case 2:
			if (slave.buttplugAttachment === "tail") {
				r.push(`${He} swings the tail from side to side with every shift of ${his} rear.`);
			} else if (slave.buttplugAttachment === "fox tail") {
				r.push(`${He} swings the bushy ${slave.hColor} tail from side to side with every shift of ${his} rear.`);
			} else if (slave.buttplugAttachment === "cow tail") {
				r.push(`${He} swings the spotted tail from side to side with every shift of ${his} rear.`);
			} else if (slave.buttplugAttachment === "cat tail") {
				r.push(`${He} bounces the tail from side to side with every shift of ${his} rear.`);
			}
			break;
		case 1:
			if (slave.buttplugAttachment === "tail") {
				r.push(`A tail protrudes from the back of the plug and dangles from ${his} rear.`);
			} else if (slave.buttplugAttachment === "fox tail") {
				r.push(`A bushy ${slave.hColor} tail with a white tip protrudes from the back of the plug and dangles from ${his} rear.`);
			} else if (slave.buttplugAttachment === "cow tail") {
				r.push(`A slim, spotted tail with a cute tuft at its tip protrudes from the back of the plug and dangles from ${his} rear.`);
			} else if (slave.buttplugAttachment === "cat tail") {
				r.push(`A tail protrudes from the back of the plug and springs upwards from ${his} rear.`);
			}
	}

	return r.join(" ");
};


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

	if (slave.fuckdoll === 0) {
		if (slave.career === "a slave") {
			r.push(`${He} was a slave long before you obtained ${him}.`);
		} else if (slave.career === "a slave since birth") {
			r.push(`${He}'s been your slave ${his} entire life.`);
		} else if (slave.career === "a meat toilet" || slave.career === "a cum dump") {
			r.push(`${He} sees ${himself} as a cum receptacle.`);
		} else if (slave.career === "a dairy cow") {
			r.push(`${He}'s been broken into the belief that ${he} is nothing more than a cow to be milked and bred.`);
		} else if (slave.career === "a breeding bull") {
			r.push(`${He}'s been broken into the belief that ${he} is nothing more than a bull destined to fill fertile wombs with calves.`);
		} else if (slave.career === "a breeder") {
			r.push(`Before you obtained ${him}, ${he} was a breeding slave.`);
		} else if (slave.career === "a bioreactor") {
			r.push(`${He} has spent time as a cow in an industrial dairy, an experience that marked ${him} deeply.`);
		} else {
			r.push(`Before ${he} was a slave, ${he} was`);
			if (App.Data.Careers.Leader.bodyguard.includes(slave.career)) {
				r.push(`${career}, giving ${him} potential as a Bodyguard.`);
			} else if (App.Data.Careers.Leader.wardeness.includes(slave.career)) {
				r.push(`${career}, giving ${him} potential as a Wardeness for`);
				if (V.cellblock === 0) {
					r.push(`a Cellblock.`);
				} else {
					r.push(`${V.cellblockName}.`);
				}
			} else if (App.Data.Careers.Leader.attendant.includes(slave.career)) {
				r.push(`${career}, giving ${him} potential as an Attendant for`);
				if (V.spa === 0) {
					r.push(`a Spa.`);
				} else {
					r.push(`${V.spaName}.`);
				}
			} else if (App.Data.Careers.Leader.matron.includes(slave.career)) {
				r.push(`${career}, giving ${him} potential as a Matron for`);
				if (V.nursery === 0 && V.nurseryNannies === 0) {
					r.push(`a Nursery.`);
				} else {
					r.push(`${V.nurseryName}.`);
				}
			} else if (App.Data.Careers.Leader.nurse.includes(slave.career)) {
				r.push(`${career}, giving ${him} potential as a Nurse for`);
				if (V.clinic === 0) {
					r.push(`a Clinic.`);
				} else {
					r.push(`${V.clinicName}.`);
				}
			} else if (App.Data.Careers.Leader.schoolteacher.includes(slave.career)) {
				r.push(`${career}, giving ${him} potential as a Schoolteacher for`);
				if (V.schoolroom === 0) {
					r.push(`a Schoolroom.`);
				} else {
					r.push(`${V.schoolroomName}.`);
				}
			} else if (App.Data.Careers.Leader.stewardess.includes(slave.career)) {
				r.push(`${career}, giving ${him} potential as a Stewardess for`);
				if (V.servantsQuarters === 0) {
					r.push(`a Servant's Quarters.`);
				} else {
					r.push(`${V.servantsQuartersName}.`);
				}
			} else if (App.Data.Careers.Leader.milkmaid.includes(slave.career)) {
				r.push(`${career}, giving ${him} potential as a Milkmaid for`);
				if (V.dairy === 0) {
					r.push(`a Dairy.`);
				} else {
					r.push(`${V.dairyName}.`);
				}
			} else if (App.Data.Careers.Leader.farmer.includes(slave.career)) {
				r.push(`${career}, giving ${him} potential as a Farmer for`);
				if (V.farmyard === 0) {
					r.push(`a Farmyard.`);
				} else {
					r.push(`${V.farmyardName}.`);
				}
			} else if (App.Data.Careers.Leader.madam.includes(slave.career)) {
				r.push(`${career}, giving ${him} potential as a Madam for`);
				if (V.brothel === 0) {
					r.push(`a Brothel.`);
				} else {
					r.push(`${V.brothelName}.`);
				}
			} else if (App.Data.Careers.Leader.DJ.includes(slave.career)) {
				r.push(`${career}, giving ${him} potential as a DJ for`);
				if (V.club === 0) {
					r.push(`a Club.`);
				} else {
					r.push(`${V.clubName}.`);
				}
			} else if (App.Data.Careers.Leader.HG.includes(slave.career)) {
				r.push(`${career}, giving ${him} potential as a Head Girl.`);
			} else if (App.Data.Careers.Leader.recruiter.includes(slave.career)) {
				r.push(`${career}, giving ${him} potential as a recruiter.`);
			} else if (App.Data.Careers.General.entertainment.includes(slave.career)) {
				r.push(`${career}, giving ${him} a slight edge at entertainment.`);
			} else if (App.Data.Careers.General.whore.includes(slave.career)) {
				r.push(`${career}, giving ${him} a slight edge at sexual commerce.`);
			} else if (App.Data.Careers.General.grateful.includes(slave.career)) {
				r.push(`${career}, so ${he} can remember what it's like`);
				if (slave.career === "prisoner") {
					r.push(`no one looking out for you.`);
				} else {
					r.push(`to have the freedom to starve.`);
				}
			} else if (App.Data.Careers.General.menial.includes(slave.career)) {
				r.push(`${career}, giving ${him} experience following orders.`);
			} else if (App.Data.Careers.General.servant.includes(slave.career)) {
				r.push(`${career}, giving ${him} a slight edge in housekeeping.`);
			} else {
				r.push(`${career}.`);
			}
		}
		if (V.week - slave.weekAcquired >= 20 && slave.skill.entertainment >= 100) {
			if (!App.Data.Careers.General.entertainment.includes(slave.career)) {
				r.push(`${He} has gotten enough experience to be as charismatic as any professional`);
				if (slave.counter.oral + slave.counter.anal + slave.counter.vaginal + slave.counter.mammary + slave.counter.penetrative > 1000) {
					r.push(`entertainer, and has been fucked so many times that a free sex worker could teach ${him} nothing.`);
				} else {
					r.push(`entertainer.`);
				}
			}
		} else if (slave.counter.oral + slave.counter.anal + slave.counter.vaginal + slave.counter.mammary + slave.counter.penetrative > 1000) {
			if (!App.Data.Careers.General.whore.includes(slave.career)) {
				r.push(`${He} has been fucked so many times that a free sex worker could teach ${him} nothing.`);
			}
		}
	}

	const careerMap = [
		{prop: "headGirl", val: "a Head Girl"},
		{prop: "recruiter", val: "a Recruiter"},
		{prop: "bodyguard", val: "a Bodyguard"},
		{prop: "madam", val: "a Madam"},
		{prop: "DJ", val: "a DJ"},
		{prop: "nurse", val: "a Nurse"},
		{prop: "teacher", val: "a Schoolteacher"},
		{prop: "attendant", val: "an Attendant"},
		{prop: "matron", val: "a Matron"},
		{prop: "stewardess", val: "a Stewardess"},
		{prop: "milkmaid", val: "a Milkmaid"},
		{prop: "farmer", val: "a Farmer"},
		{prop: "wardeness", val: "a Wardeness"},
		{prop: "servant", val: "a servant"},
		{prop: "entertainer", val: "an entertainer"},
		{prop: "whore", val: "a whore"}
	];
	const careersArray = careerMap.filter((o) => (slave.skill[o.prop] >= V.masteredXP)).map((o) => o.val);
	if (careersArray.length > 0) {
		r.push(`${He} has working experience as ${toSentence(careersArray)}.`);
	}
	return r.join(" ");
};