code:
/**
 * @param {App.Entity.SlaveState} slave
 * @param {object} params
 * @param {number} [params.market]
 * @param {number} [params.eventDescription]
 * @returns {string}
 */
App.Desc.anus = function(slave, {market, eventDescription} = {}) {
	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")} ass.`);
		} 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", "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 (market && V.gingering === "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, {market: market}));

	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="aquamarine">masterful anal slut.</span>`);
		} else if (slave.skill.anal > 60) {
			r.push(`${He} is an <span class="aquamarine">expert anal slut.</span>`);
		} else if (slave.skill.anal > 30) {
			r.push(`${He} is a <span class="aquamarine">skilled anal slut.</span>`);
		} else if (slave.skill.anal > 10) {
			r.push(`${He} has <span class="aquamarine">basic knowledge about anal.</span>`);
		} else {
			r.push(`${He} is unskilled at taking anal.`);
		}
	}
	return r.join(" ");
};


code:
/**
 * @param {App.Entity.SlaveState} slave
 * @param {object} params
 * @param {number} [params.market]
 * @param {number} [params.eventDescription]
 * @returns {string}
 */
App.Desc.butt = function(slave, {market, eventDescription} = {}) {
	const r = [];
	const {
		he, him, his, girl, He, His
	} = getPronouns(slave);
	if (V.showClothing === 1 && !market) {
		if (V.surgeryDescription === 0) {
			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 slave gown":
					r.push(`${His} slave gown`);
					if (slave.butt > 10) {
						r.push(`is tailored as tastefully as possible for ${his} inhuman`);
					} else if (slave.butt > 6) {
						r.push(`is tailored as tastefully as possible for ${his} massive`);
					} else if (slave.butt > 3) {
						r.push(`is tailored to flatter ${his} big`);
					} else {
						r.push(`tastefully clings to ${his}`);
					}
					r.push(`buttocks.`);
					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 "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 "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 > 6) {
						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;
				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("rounded, small", "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("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 === "work in the 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 === "work in the 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 === "work in the 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 > 6 && 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) {
		if (slave.butt >= 8) {
			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}`);
						if (hasBothArms(slave)) {
							r.push(`hands`);
						} else {
							r.push(`hand`);
						}
						r.push(`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 (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.`);
				}
			}
		}
	} else if (slave.physicalAge <= 12) {
		if (slave.butt >= 12) {
			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}`);
						if (hasBothArms(slave)) {
							r.push(`hands`);
						} else {
							r.push(`hand`);
						}
						r.push(`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 (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.`);
				}
			}
		}
	} else if (slave.physicalAge > 12) {
		if (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}`);
						if (hasBothArms(slave)) {
							r.push(`hands`);
						} else {
							r.push(`hand`);
						}
						r.push(`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 (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 === "neko") {
		r.push(`${He} has a long, slender, ${slave.tailColor} cat tail which tends to sway side to side when ${he} is focused on a task.`);
	} else if (slave.tailShape === "inu") {
		r.push(`${He} has a bushy, ${slave.tailColor} dog tail which tends to wag energetically when ${he} gets exited.`);
	} else if (slave.tailShape === "kit") {
		r.push(`${He} has a soft, fluffy, ${slave.tailColor} fox tail.`);
	} else if (slave.tailShape === "kitsune") {
		r.push(`${He} has three incredibly soft, fluffy, ${slave.tailColor} fox tails; they feel heavenly to the touch.`);
	} else if (slave.tailShape === "tanuki") {
		r.push(`${He} has a long, fluffy, ${slave.tailColor} tanuki tail with a dark stripe running down the middle.`);
	} else if (slave.tailShape === "ushi") {
		r.push(`${He} has a long, ${slave.tailColor} cow tail; it has a small tuft of hair at the end and tends to swat at things absentmindedly.`);
	} else if (slave.tailShape === "usagi") {
		r.push(`${He} has a short and fluffy ${slave.tailColor} rabbit tail.`);
	} else if (slave.tailShape === "risu") {
		r.push(`${He} has a big and bushy ${slave.tailColor} squirrel tail.`);
	} else if (slave.tailShape === "uma") {
		r.push(`${He} has a long horse tail consisting of consisting of ${slave.tailColor} hair.`);
	} else if (slave.tail === "combat") {
		r.push(`${He} has a very long ${slave.tailColor} metallic tail that can lash out, constrict, and deploy razor sharp spikes on command.`);
	} else if (slave.tail === "sex") {
		r.push(`${He} has a long, slender, ${slave.tailColor} tail. 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(" ");
};

repo_name: NovX/fc

license: mit


code:
/**
 * @param {App.Entity.SlaveState} slave
 * @param {object} params
 * @param {number} [params.market]
 * @param {number} [params.eventDescription]
 * @returns {string}
 */
App.Desc.buttplug = function(slave, {market, eventDescription} = {}) {
	const r = [];
	const {
		he, him, his, He, His
	} = getPronouns(slave);
	if (slave.assignment === "work in the 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 && !market) {
			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 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 ${his}`);
					if (slave.chastityAnus) {
						r.push(`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 slave gown":
					if (slave.chastityAnus) {
						r.push(`${His} pretty gown hides ${his} anal chastity accessory underneath.`);
					} else {
						r.push(`Though ${his} gown is very pretty, ${his} asshole is bare beneath it.`);
					}
					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 "huipil":
				case "cutoffs and a t-shirt":
				case "battledress":
				case "battlearmor":
				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;
			}
		}
	}

	switch (slave.buttplug) {
		case "plug":
			r.push(`It's filled by a standard`);
			if (slave.anus > 2) {
				r.push(`buttplug, which is on the verge of falling out.`);
			} else {
				r.push(`buttplug.`);
			}
			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.`);
			}
			break;
		case "long plug":
			r.push(`It's filled by a standard sized, overly long`);
			if (slave.anus > 2) {
				r.push(`buttplug, which is on the verge of sliding out ${his} rear.`);
			} else {
				r.push(`buttplug.`);
			}
			r.push(`It causes a noticeable bulge in ${his} belly.`);
			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.`);
			}
			break;
		case "large plug":
			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`);
			}
			r.push(`by a large buttplug.`);
			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 "long, large plug":
			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`);
			}
			r.push(`by a large and long buttplug. It causes a noticeable bulge in ${his} belly.`);
			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 "huge plug":
			if (slave.anus < 4) {
				r.push(`It's agonizingly stretched by a plug so huge ${his} anus is probably being stretched into a permanent gape.`);
				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.`);
					}
				}
			} else {
				r.push(`Its ridiculous gape is comfortably filled by a huge buttplug.`);
			}
			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 "long, huge plug":
			if (slave.anus < 4) {
				r.push(`It's agonizingly stretched by a plug so huge it causes ${his} belly to bulge and is likely stretching ${his} anus into a permanent gape.`);
				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.`);
					}
				}
			} else {
				r.push(`Its ridiculous gape is comfortably filled by a wide and long buttplug. It causes a noticeable bulge in ${his} belly.`);
			}
			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.`);
			}
	}
	return r.join(" ");
};


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

	if (slave.fuckdoll === 0) {
		if (slave.career !== 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 ${him}self 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 (setup.bodyguardCareers.includes(slave.career)) {
					r.push(`${career}, giving ${him} potential as a Bodyguard.`);
				} else if (setup.wardenessCareers.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 (setup.attendantCareers.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 (setup.matronCareers.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 (setup.nurseCareers.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 (setup.schoolteacherCareers.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 (setup.stewardessCareers.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 (setup.milkmaidCareers.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 (setup.farmerCareers.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 (setup.madamCareers.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 (setup.DJCareers.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 (setup.HGCareers.includes(slave.career)) {
					r.push(`${career}, giving ${him} potential as a Head Girl.`);
				} else if (setup.recruiterCareers.includes(slave.career)) {
					r.push(`${career}, giving ${him} potential as a recruiter.`);
				} else if (setup.entertainmentCareers.includes(slave.career)) {
					r.push(`${career}, giving ${him} a slight edge at entertainment.`);
				} else if (setup.whoreCareers.includes(slave.career)) {
					r.push(`${career}, giving ${him} a slight edge at sexual commerce.`);
				} else if (setup.gratefulCareers.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 (setup.menialCareers.includes(slave.career)) {
					r.push(`${career}, giving ${him} experience following orders.`);
				} else if (setup.servantCareers.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 (!setup.entertainmentCareers.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 (!setup.whoreCareers.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: "Head Girl"},
		{prop: "recruiter", val: "Recruiter"},
		{prop: "bodyguard", val: "Bodyguard"},
		{prop: "madam", val: "Madam"},
		{prop: "DJ", val: "DJ"},
		{prop: "nurse", val: "Nurse"},
		{prop: "teacher", val: "Schoolteacher"},
		{prop: "attendant", val: "Attendant"},
		{prop: "matron", val: "Matron"},
		{prop: "stewardess", val: "Stewardess"},
		{prop: "milkmaid", val: "Milkmaid"},
		{prop: "farmer", val: "Farmer"},
		{prop: "wardeness", val: "Wardeness"},
		{prop: "servant", val: "Servant"},
		{prop: "entertainer", val: "Entertainer"},
		{prop: "whore", val: "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 a ${careersArray.reduce((res, ch, i, arr) => res + (i === arr.length-1 ? ' and ' : ', ') + ch)}.`);
	}
	return r.join(" ");
};