Skip to content
Snippets Groups Projects
Forked from pregmodfan / fc-pregmod
30032 commits behind the upstream repository.
descriptionWidgets.js 26.75 KiB
/**
 * @param {App.Entity.SlaveState} slave
 * @returns {string} Slave's eyes
 */
App.Desc.eyes = function(slave) {
	"use strict";
	const V = State.variables;
	let r = ``;
	/* eslint-disable no-unused-vars*/
	let pronouns = getPronouns(slave);
	let he = pronouns.pronoun;
	let him = pronouns.object;
	let his = pronouns.possessive;
	let hers = pronouns.possessivePronoun;
	let himself = pronouns.objectReflexive;
	let boy = pronouns.noun;
	let He = capFirstChar(he);
	let His = capFirstChar(his);
	/* eslint-enable */

	if (slave.eyes <= -2) {
		const HC = hasVisibleHeterochromia(slave) ? 1 : 0;
		if (slave.eyes === -2) {
			r += `${His} eyes are dull`;
			if (V.saleDescription && V.PC.medicine >= 50 || V.PC.slaving >= 50) {
				r += `, unfocused`;
				if (HC) {
					r += `, heterochromatic,`;
				}
				r += ` and clearly nonfunctional`;
			} else {
				if (HC) {
					r += `, heterochromatic,`;
				}
				r += ` and unfocused`;
			}
		} else if (slave.eyes === -3) {
			r += `${He} has ${slave.eyeColor} colored glass eyes`;
		} else {
			r += `${His} gaze is empty`;
		}
		r += `, `;
		if (slave.intelligence > 95) {
			r += `but ${his} facial expressions reveal ${he} is incisive, quick, cunning; `;
			if (slave.intelligence + slave.intelligenceImplant >= 130) {
				r += `with ${his} education, ${he} is so far <span class="deepskyblue">beyond brilliant</span> that ${he} is nearly peerless. `;
			} else if (slave.intelligenceImplant >= 15) {
				r += `${he} is both <span class="deepskyblue">brilliant</span> and `;
				if (slave.intelligenceImplant >= 30) {
					r += `well `;
				}
				r += `educated. `;
			} else {
				r += `${he} is so <span class="deepskyblue">brilliant</span> that ${his} `;
				if (slave.intelligenceImplant > 0) {
					r += `meager`;
				} else {
					r += `lack of`;
				}
				r += ` education is unimportant. `;
			}
		} else if (slave.intelligence > 50) {
			if (slave.intelligence + slave.intelligenceImplant > 95) {
				r += `but ${his} facial expressions reveal ${he} is incisive, quick, cunning; with ${his} education, ${he} can be considered <span class="deepskyblue">brilliant.</span>`;
			} else if (slave.intelligenceImplant >= 15) {
				r += `but ${his} face is alive with intelligence; ${he} is both <span class="deepskyblue">highly intelligent</span> and `;
				if (slave.intelligenceImplant >= 30) {
					r += `well `;
				}
				r += `educated. `;
			} else {
				r += `but ${his} face is alive with intelligence; ${he} is so <span class="deepskyblue">highly intelligent</span> that ${his} `;
				if (slave.intelligenceImplant > 0) {
					r += `meager`;
				} else {
					r += `lack of`;
				}
				r += ` education is unimportant. `;
			}
		} else if (slave.intelligence > 15) {
			if (slave.intelligence + slave.intelligenceImplant > 50) {
				r += `but ${his} face is alive with intelligence; with ${his} education, ${he} can be considered <span class="deepskyblue">highly intelligent.</span>`;
			} else if (slave.intelligenceImplant >= 15) {
				r += `but ${his} facial expressions reveal ${his} cleverness; ${he} is of <span class="deepskyblue">above average intelligence</span> and`;
				if (slave.intelligenceImplant >= 30) {
					r += `well `;
				}
				r += `educated. `;
			} else {
				r += `but ${his} facial expressions reveal ${his} cleverness; ${he} is of <span class="deepskyblue">above average intelligence</span> despite being undereducated. `;
			}
		} else if (slave.intelligence >= -15) {
			if (slave.intelligence + slave.intelligenceImplant > 15) {
				r += `but ${his} facial expressions reveal ${his} cleverness; with ${his} education, ${he} can be considered of <span class="deepskyblue">above average intelligence.</span>`;
			} else if (slave.intelligenceImplant >= 15) {
				r += `but ${his} facial expressions reveal ${his} alertness; ${he} is of average intelligence due to being `;
				if (slave.intelligenceImplant >= 30) {
					r += `well `;
				}
				r += `educated. `;
			} else {
				r += `but ${his} facial expressions reveal ${his} alertness; ${he} is of average intelligence and is undereducated. `;
			}
		} else if (slave.intelligence >= -50) {
			if (slave.intelligence + slave.intelligenceImplant >= -15) {
				r += `but ${his} facial expressions reveal ${his} alertness; with ${his} education, ${he} can be considered of average intelligence. `;
			} else if (slave.intelligenceImplant >= 15) {
				r += `but ${his} facial expressions reveal ${he} is rather dim; ${he} is of <span class="orangered">below average intelligence</span> despite having been `;
				if (slave.intelligenceImplant >= 30) {
					r += `thoroughly `;
				}
				r += `educated. `;
			} else {
				r += `but ${his} facial expressions reveal ${he} is rather dim; ${he} is of <span class="orangered">below average intelligence</span> and is poorly educated. `;
			}
		} else if (slave.intelligence >= -95) {
			if (slave.intelligence + slave.intelligenceImplant >= -50) {
				r += `but ${his} facial expressions reveal ${he} is rather dim; even with ${his} education, ${he} can only be considered of <span class="orangered">below average intelligence.</span>`;
			} else if (slave.intelligenceImplant >= 15) {
				r += `but ${his} facial expressions reveal ${he} is as dull as ${his} eyes; ${he} is <span class="orangered">quite stupid</span> despite having `;
				if (slave.intelligenceImplant >= 30) {
					r += `an advanced`;
				} else {
					r += `some`;
				}
				r += ` education. `;
			} else {
				r += `but ${his} facial expressions reveal ${he} is as dull as ${his} eyes; ${he} is <span class="orangered">quite stupid</span> and ignorant. `;
			}
		} else {
			r += `though you doubt it would be much different if (V.{he}) could see; `;
			if (slave.intelligence + slave.intelligenceImplant >= -95) {
				r += `even with ${his} education, ${he} is still <span class="orangered">really stupid.</span>`;
			} else if (slave.intelligenceImplant > 0) {
				r += `${he} is <span class="orangered">a moron,</span> yet somehow still remembers the basics of an education. `;
			} else {
				r += `${he} is <span class="orangered">a moron,</span> and ignorant to boot. `;
			}
		}
	} else {
		if (slave.intelligence > 95) {
			r += `${His} ${slave.eyeColor}-eyed gaze is incisive, quick, cunning; `;
			if (slave.intelligence + slave.intelligenceImplant >= 130) {
				r += `with ${his} education, ${he} is so far <span class="deepskyblue">beyond brilliant</span> that ${he} is nearly peerless. `;
			} else if (slave.intelligenceImplant >= 15) {
				r += `${he} is both <span class="deepskyblue">brilliant</span> and `;
				if (slave.intelligenceImplant >= 30) {
					r += `well `;
				}
				r += `educated. `;
			} else {
				r += `${he} is so <span class="deepskyblue">brilliant</span> that ${his} `;
				if (slave.intelligenceImplant > 0) {
					r += `meager`;
				} else {
					r += `lack of`;
				}
				r += ` education is unimportant. `;
			}
		} else if (slave.intelligence > 50) {
			if (slave.intelligence + slave.intelligenceImplant > 95) {
				r += `${His} ${slave.eyeColor}-eyed gaze is incisive, quick, cunning; with ${his} education, ${he} can be considered <span class="deepskyblue">brilliant.</span>`;
			} else if (slave.intelligenceImplant >= 15) {
				r += `${His} ${slave.eyeColor} eyes are alive with intelligence; ${he} is both <span class="deepskyblue">highly intelligent</span> and `;
				if (slave.intelligenceImplant >= 30) {
					r += `well `;
				}
				r += `educated. `;
			} else {
				r += `${His} ${slave.eyeColor} eyes are alive with intelligence; ${he} is so <span class="deepskyblue">highly intelligent</span> that ${his} `;
				if (slave.intelligenceImplant > 0) {
					r += `meager`;
				} else {
					r += `lack of`;
				}
				r += ` education is unimportant. `;
			}
		} else if (slave.intelligence > 15) {
			r += `${His} ${slave.eyeColor} eyes are `;
			if (slave.intelligence + slave.intelligenceImplant > 50) {
				r += `alive with intelligence; with ${his} education, ${he} can be considered <span class="deepskyblue">highly intelligent.</span>`;
			} else if (slave.intelligenceImplant >= 15) {
				r += `clever; ${he} is of <span class="deepskyblue">above average intelligence</span> and `;
				if (slave.intelligenceImplant >= 30) {
					r += `well `;
				}
				r += `educated. `;
			} else {
				r += `clever; ${he} is of <span class="deepskyblue">above average intelligence</span> despite being undereducated. `;
			}
		} else if (slave.intelligence >= -15) {
			r += `${His} ${slave.eyeColor} eyes are `;
			if (slave.intelligence + slave.intelligenceImplant > 15) {
				r += `clever; with ${his} education, ${he} can be considered of <span class="deepskyblue">above average intelligence.</span>`;
			} else if (slave.intelligenceImplant >= 15) {
				r += `alert; ${he} is of average intelligence due to being `;
				if (slave.intelligenceImplant >= 30) {
					r += `well `;
				}
				r += `educated. `;
			} else {
				r += `alert; ${he} is of average intelligence and is undereducated. `;
			}
		} else if (slave.intelligence >= -50) {
			r += `${His} ${slave.eyeColor} eyes are `;
			if (slave.intelligence + slave.intelligenceImplant >= -15) {
				r += `alert; with ${his} education, ${he} can be considered of average intelligence. `;
			} else if (slave.intelligenceImplant >= 15) {
				r += `dim; ${he} is of <span class="orangered">below average intelligence</span> despite having been `;
				if (slave.intelligenceImplant >= 30) {
					r += `thoroughly `;
				}
				r += `educated. `;
			} else {
				r += `dim; ${he} is of <span class="orangered">below average intelligence</span> and is poorly educated. `;
			}
		} else if (slave.intelligence >= -95) {
			r += `${His} ${slave.eyeColor} eyes are `;
			if (slave.intelligence + slave.intelligenceImplant >= -50) {
				r += `dim; even with ${his} education, ${he} can only be considered of <span class="orangered">below average intelligence.</span>`;
			} else if (slave.intelligenceImplant >= 15) {
				r += `dull; ${he} is <span class="orangered">quite stupid</span> despite having `;
				if (slave.intelligenceImplant >= 30) {
					r += `an advanced`;
				} else {
					r += `some`;
				}
				r += ` education. `;
			} else {
				r += `dull; ${he} is <span class="orangered">quite stupid</span> and ignorant. `;
			}
		} else {
			r += `${His} ${slave.eyeColor}-eyed gaze betrays near-total insensibility; `;
			if (slave.intelligence + slave.intelligenceImplant >= -95) {
				r += `even with ${his} education, ${he} is still <span class="orangered">really stupid.</span>`;
			} else if (slave.intelligenceImplant > 0) {
				r += `${he} is <span class="orangered">a moron,</span> yet somehow still remembers the basics of an education. `;
			} else {
				r += `${he} is <span class="orangered">a moron,</span> and ignorant to boot. `;
			}
		}
	}
	return r;
};

/**
 * @param {App.Entity.SlaveState} slave
 * @returns {string} Slave's eye color
 */
App.Desc.eyeColor = function(slave) {
	"use strict";
	let r;

	if (slave.eyes === -4) {
		r = "empty";
	} else if (hasVisibleHeterochromia(slave)) {
		r = `heterochromatic ${slave.eyeColor} and ${slave.geneticQuirks.heterochromia}`;
	} else {
		r = `${slave.eyeColor}`;
	}
	return r;
};

/**
 * @param {App.Entity.SlaveState} slave
 * @returns {string} Slave's age and health
 */
App.Desc.ageAndHealth = function(slave) {
	"use strict";
	const V = State.variables;
	let r = ``;
	let woman;
	/* eslint-disable no-unused-vars*/
	let pronouns = getPronouns(slave);
	let he = pronouns.he;
	let him = pronouns.him;
	let his = pronouns.his;
	let hers = pronouns.hers;
	let himself = pronouns.himself;
	let boy = pronouns.boy;
	let He = pronouns.He;
	let His = pronouns.His;
	let girl = pronouns.girl;
	/* eslint-enable */
	let age;
	let birthday = "";
	if (V.seeAge !== 0) {
		if (slave.birthWeek === 51) {
			birthday = `; ${his} birthday is next week`;
		} else {
			birthday = `; ${his} birthday is in ${52-slave.birthWeek} weeks`;
		}
	}

	woman = (boy === "girl" ? "woman" : "man");

	if (!slave.fuckdoll) {
		if (slave.health < -90) {
			r += `${He} is nearly unresponsive. ${He}'s obviously <span class="red">dangerously sick,</span>`;
		} else if (slave.health < -50) {
			r += `${He} seems <span class="red">very sick,</span>`;
		} else if (slave.health < -20) {
			r += `${He} seems <span class="red">ill,</span>`;
		} else if (slave.health <= 20) {
			r += `${He} seems reasonably <span class="yellow">healthy,</span>`;
		} else if (slave.health <= 50) {
			r += `${He} shines with <span class="green">good health,</span>`;
		} else {
			r += `${He} almost gleams; ${he}'s in the absolute <span class="green">best of health,</span>`;
		}
		age = slave.actualAge + 1;
		r += ` and ${he}'s `;
		if (slave.birthWeek >= 52 && V.seeAge) {
			r += `going to turn ${age} this week,`;
		} else if (slave.actualAge < 3) {
			r += `an infant, only `;
			if (V.showAgeDetail) {
				if (!slave.actualAge) {
					r += `${0 + V.week-slave.weekAcquired} weeks old${birthday}. `;
				} else if (slave.actualAge) {
					r += `${num(slave.actualAge)} year old${birthday}. `;
				} else {
					r += `${num(slave.actualAge)} years old${birthday}. `;
				}
			} else {
				if (!slave.actualAge) {
					r += `${0 + V.week-slave.weekAcquired} weeks old. `;
				} else if (slave.actualAge) {
					r += `${num(slave.actualAge)} year old. `;
				} else {
					r += `${num(slave.actualAge)} years old. `;
				}
			}
		} else if (slave.actualAge < 5) {
			r += `a toddler, `;
			if (V.showAgeDetail) {
				r += `${num(slave.actualAge)} years old${birthday}. `;
			} else {
				r += `only ${num(slave.actualAge)} years old. `;
			}
		} else if (slave.actualAge < 13) {
			r += `a little ${girl}, `;
			if (V.showAgeDetail) {
				r += `${num(slave.actualAge)} years old${birthday}. `;
			} else {
				r += `only ${num(slave.actualAge)} years old. `;
			}
		} else if (slave.actualAge < 16) {
			r += `almost a child, `;
			if (V.showAgeDetail) {
				r += `${num(slave.actualAge)} years old${birthday}. `;
			} else {
				r += `less than 17 years old. `;
			}
		} else if (slave.actualAge < 17) {
			r += `young and fresh at ${num(slave.actualAge)}${birthday}. `;
		} else if (slave.actualAge < 18) {
			r += `young, fresh, and nearly 18`;
			if (V.showAgeDetail && V.seeAge !== 0) {
				if (slave.birthWeek === 51) {
					r += `; ${his} birthday is next week`;
					if (V.seeAge) {
						r += ` and people are already beginning to eye ${him}`;
					}
				}
			}
			r += `. `;
		} else if (slave.actualAge < 19) {
			if (!slave.birthWeek && V.seeAge) {
				r += `just turned ${num(slave.actualAge)} this week, which many citizens find especially appealing. `;
			} else if (slave.birthWeek < 4 && V.seeAge) {
				r += `only turned ${num(slave.actualAge)} this month. `;
			} else {
				r += `${num(slave.actualAge)} years old${birthday}. `;
			}
		} else if (slave.actualAge < 20) {
			r += `in ${his} final year as a teenager at age 19${birthday}. `;
		} else if (slave.actualAge < 26) {
			r += `a young ${woman}, `;
			if (V.showAgeDetail) {
				r += `${num(slave.actualAge)} years old${birthday}. `;
			} else {
				r += `in ${his} early twenties. `;
			}
		} else if (slave.actualAge < 30) {
			r += `a younger ${woman}, `;
			if (V.showAgeDetail) {
				r += `${num(slave.actualAge)} years old${birthday}. `;
			} else {
				r += `in ${his} late twenties. `;
			}
		} else if (slave.actualAge < 36) {
			if (V.showAgeDetail) {
				r += `${num(slave.actualAge)} years old${birthday}. `;
			} else {
				r += `in ${his} early thirties. `;
			}
		} else if (slave.actualAge < 40) {
			r += `middle-aged for a slave, `;
			if (V.showAgeDetail) {
				r += `at ${num(slave.actualAge)} years old${birthday}. `;
			} else {
				r += `in ${his} late thirties. `;
			}
		} else {
			r += `old for a slave, `;
			if (V.showAgeDetail) {
				r += `at ${num(slave.actualAge)} years old${birthday}. `;
			} else {
				if (slave.actualAge < 50) {
					r += `in ${his} forties. `;
				} else if (slave.actualAge < 60) {
					r += `in ${his} fifties. `;
				} else if (slave.actualAge < 70) {
					r += `extremely old for a slave, in ${his} 60s. `;
				} else if (slave.actualAge < 80) {
					r += `extremely old for a slave, in ${his} ${num(70)}s. `;
				} else if (slave.actualAge < 90) {
					r += `extremely old for a slave, in ${his} r += ${num(80)}s. `;
				} else if (slave.actualAge < 100) {
					r += `extremely old for a slave, in ${his} r += ${num(90)}s. `;
				} else if (slave.actualAge >= 100) {
					r += `ancient by any measure, over a century old. `;
				}
			}
			if (slave.actualAge !== slave.physicalAge) {
				r += ` However, ${he} has the body of a ${num(slave.physicalAge)}-year-old; `;
				if (slave.physicalAge < 18 && slave.actualAge >= 18) {
					r += `a stark contrast given ${his} maturity. `;
				} else if (slave.physicalAge < 18 && slave.actualAge < 18) {
					r += `a noticeable difference thanks to ${his} immaturity. `;
				} else if (slave.physicalAge <= slave.actualAge - 20 || slave.physicalAge >= slave.actualAge + 20) {
					r += `a shocking difference from ${his} actual age. `;
				} else if (slave.physicalAge <= slave.actualAge - 10 || slave.physicalAge >= slave.actualAge + 10) {
					r += `a noticeable difference from ${his} actual age. `;
				} else if (slave.physicalAge <= slave.actualAge - 5 || slave.physicalAge >= slave.actualAge + 5) {
					r += `a barely noticeable difference from ${his} actual age. `;
				} else {
					r += `though it is hard to tell the difference from ${his} actual age. `;
				}
			}
			/*
			 ** This section replaces the age/therapy texts, giving more details for the NCS condition.
			 */
			if (slave.geneMods.NCS) {
				let bodyNCS;
				if (slave.vagina < 0 && slave.dick <= 0) {
					bodyNCS = "childlike";
				} else if (slave.vagina < 0 && slave.dick > 0) {
					bodyNCS = "shota";
				} else if (slave.vagina > 0 && slave.dick <= 0) {
					bodyNCS = "loli";
				} else {
					bodyNCS = "loli/shota";
				}
				r += ` ${He} appears to be slave.visualAge years old and ${he} `;
				if (slave.visualAge <= 8) {
					r += `has induced <span class="orange">NCS</span> and will always have a ${bodyNCS} body, no matter how long ${he} lives. `;
				} else if (slave.visualAge < 13) {
					r += `has induced <span class="orange">NCS</span> and will have a ${bodyNCS} body for the rest of ${his} life. `;
				} else if (slave.visualAge < 20) {
					r += `still has a teen body for now, but with ${his} <span class="orange">NCS,</span> ${he} will eventually regress in age to look like a little ${girl} again. `;
				} else {
					r += `still has the body of an adult, but ${his} <span class="orange">NCS</span> has `;
					if (slave.physicalAge - slave.visualAge <= 5) {
						r += `not really begun to youthen ${his} appearance yet. `;
					} else if (slave.physicalAge - slave.visualAge <= 10) {
						r += `clearly been at work on ${him}, making ${him} appear younger. `;
					} else if (slave.physicalAge - slave.visualAge <= 20) {
						r += `obviously helped take more than a decade off of ${his} age. `;
					} else {
						r += `intensely youthened ${him}. `;
					}
				}
			} else if (slave.physicalAge !== slave.visualAge) {
				if (slave.visualAge <= slave.physicalAge - 20 || slave.visualAge >= slave.physicalAge + 20) {
					r += ` ${He} has undergone radical age therapy that makes ${him} look `;
				} else if (slave.visualAge <= slave.physicalAge - 10 || slave.visualAge >= slave.physicalAge + 10) {
					r += ` ${He} has undergone drastic age therapy that makes ${him} look `;
				} else if (slave.visualAge <= slave.physicalAge - 5 || slave.visualAge >= slave.physicalAge + 5) {
					r += ` ${He} has undergone noticeable age therapy that makes ${him} look `;
				} else {
					r += ` For various reasons, ${he} looks `;
				}
				if (slave.physicalAge > slave.visualAge) {
					if (slave.physicalAge < slave.visualAge + 5) {
						r += `a slightly younger ${slave.visualAge}. `;
					} else if (slave.visualAge < 20) {
						r += `like ${he}'s barely an adult. `;
					} else if (slave.visualAge < 25) {
						r += `barely into ${his} early twenties. `;
					} else if (slave.visualAge < 30) {
						r += `like ${he}'s still in ${his} twenties. `;
					} else if (slave.visualAge < 35) {
						r += `barely thirty. `;
					} else if (slave.visualAge < 40) {
						r += `still in ${his} thirties. `;
					} else if (slave.visualAge < 45) {
						r += `barely forty. `;
					} else if (slave.visualAge < 50) {
						r += `still in ${his} forties. `;
					} else if (slave.visualAge < 55) {
						r += `barely fifty. `;
					} else if (slave.visualAge < 60) {
						r += `still in ${his} fifties. `;
					} else if (slave.visualAge < 65) {
						r += `barely sixty. `;
					} else if (slave.visualAge < 70) {
						r += `still in ${his} sixties. `;
					} else if (slave.visualAge < 75) {
						r += `barely seventy. `;
					} else if (slave.visualAge < 80) {
						r += `still in ${his} seventies. `;
					} else {
						r += `a younger ${slave.visualAge}. `;
					}
				} else {
					if (slave.physicalAge > slave.visualAge - 5) {
						r += `a slightly older ${slave.visualAge}. `;
					} else if (slave.visualAge < 20) {
						r += `like a fresh adult. `;
					} else if (slave.visualAge < 25) {
						r += `just over twenty. `;
					} else if (slave.visualAge < 30) {
						r += `nearly thirty. `;
					} else if (slave.visualAge < 35) {
						r += `just over thirty. `;
					} else if (slave.visualAge < 40) {
						r += `nearly forty. `;
					} else if (slave.visualAge < 45) {
						r += `just over forty. `;
					} else if (slave.visualAge < 50) {
						r += `nearly fifty. `;
					} else if (slave.visualAge < 55) {
						r += `just over fifty. `;
					} else if (slave.visualAge < 60) {
						r += `nearly sixty. `;
					} else if (slave.visualAge < 65) {
						r += `just over sixty. `;
					} else if (slave.visualAge < 70) {
						r += `nearly seventy. `;
					} else if (slave.visualAge < 75) {
						r += `just over seventy. `;
					} else if (slave.visualAge < 80) {
						r += `nearly eighty. `;
					} else {
						r += `an ancient ${slave.visualAge}. `;
					}
				}
			}
		}
	} else {
		r += ` The Fuckdoll gives no external indication of ${his} health or age, but upon query ${his} systems reports that ${he} is`;
		if (slave.health < -90) {
			r += `<span class="red">dangerously sick</span>`;
		} else if (slave.health < -50) {
			r += `<span class="red">very sick</span>`;
		} else if (slave.health < -20) {
			r += `<span class="red">ill</span>`;
		} else if (slave.health <= 20) {
			r += `<span class="yellow">healthy</span>`;
		} else if (slave.health <= 50) {
			r += `<span class="green">very health</span>`;
		} else {
			r += `<span class="green">extremely healthy</span>`;
		}
		r += ` and ${slave.physicalAge} years old. `;
	}
	return r;
};

/**
 * @param {App.Entity.SlaveState} slave
 * @returns {string} Slave's brand
 */
App.Desc.brand = function(slave, surface) {
	"use strict";
	let r = ``;
	let bellyAccessory;
	/* eslint-disable no-unused-vars*/
	let pronouns = getPronouns(slave);
	let he = pronouns.pronoun;
	let him = pronouns.object;
	let his = pronouns.possessive;
	let hers = pronouns.possessivePronoun;
	let himself = pronouns.objectReflexive;
	let boy = pronouns.noun;
	let He = capFirstChar(he);
	let His = capFirstChar(his);
	/* eslint-enable */
	if (State.variables.showBodyMods === 1) {
		if (surface) {
			if (slave.brand[surface]) {
				r += `${He} has ${slave.brand[surface]} branded into the flesh of ${his} ${surface}. `;
			}
			return r;
		}

		if (slave.brand) {
			bellyAccessory = slave.bellyAccessory;
			if (setup.fakeBellies.includes(bellyAccessory) && slave.brand.belly) {
				r += `${His} fake belly has ${slave.brand.belly} branded on it. `;
			} else {
				for (let [key, value] of Object.entries(slave.brand)) {
					if (r === ``) {
						r += `${He} has `;
					}
					r += `${value} branded into the flesh of ${his} ${key}, `;
				}
				if (r !== ``) {
					r += `marking him as yours. `;
				} else {
					r += `${His} body is unmarked by brands. `;
				}
			}
		}
		return r;
	}
};

/**
 * @param {App.Entity.SlaveState} slave
 * @returns {string} Description of slave's amputation, if present
 */
App.Desc.amputee = function(slave) {
	"use strict";
	let r = ``;
	/* eslint-disable no-unused-vars*/
	let pronouns = getPronouns(slave);
	let he = pronouns.pronoun;
	let him = pronouns.object;
	let his = pronouns.possessive;
	let hers = pronouns.possessivePronoun;
	let himself = pronouns.objectReflexive;
	let boy = pronouns.noun;
	let He = capFirstChar(he);
	let His = capFirstChar(his);
	/* eslint-enable */

	if (slave.amp) {
		if (slave.amp === -1) {
			r += `${slave.slaveName} is a <span class="pink">quadruple amputee,</span> but ${he}'s equipped with a set of modern prosthetic limbs that allow ${him} a fairly normal life. `;
		} else if (slave.amp === -2) {
			r += `${slave.slaveName} is a <span class="pink">quadruple amputee,</span> but ${he}'s equipped with P-Limbs customized for sex. ${His} fingertips vibrate, ${his} finger joints are masked to prevent pinching, and ${his} hands can dispense lube. `;
		} else if (slave.amp === -3) {
			r += `${slave.slaveName} is a <span class="pink">quadruple amputee,</span> but ${he}'s equipped with P-Limbs customized to look natural. They are covered in a material that closely mimics living ${slave.skin} skin, and their servos are noise dampened. `;
		} else if (slave.amp === -4) {
			r += `${slave.slaveName} is a <span class="pink">quadruple amputee,</span> but ${he}'s equipped with P-Limbs customized for combat. They're hardened, strengthened, and more responsive, and they conceal taser knuckles and extensible forearm blades. `;
		} else if (slave.amp === -5) {
			r += `${slave.slaveName} is a <span class="pink">quadruple amputee,</span> but ${he}'s equipped with advanced cybernetic P-Limbs. The ultimate fusion of combat effectiveness and instruments of pleasure, they're capable of performing multiple functions. They can enhance sex through ${his} vibrating hands and increase ${his} combat skills with hardened, yet flexible artificial muscles. They have an advanced artificial skin that can send electrical impulses that can cause stimulation or extreme pain. `;
		} else if (slave.amp > 0) {
			r += `${slave.slaveName} is a <span class="pink">quadruple amputee,</span> making ${him} a convenient torso-only sex toy. `;
		} else {
			r += `The most obvious thing about ${slave.slaveName} is that ${he} is a <span class="pink">quadruple amputee:</span> ${he} has neither arms nor legs. `;
		}
		return r;
	}
};

/**
 * @param {App.Entity.SlaveState} slave
 * @returns {string}
 */
App.Desc.inscrip = function(slave) {
	const V = State.variables;

	function fetishToObject() {
		switch (slave.fetish) {
			case "buttslut":
				return "Buttsex!";
			case "cumslut":
				return "Cum!";
			case "masochist":
			case "sadist":
				return "Rape!";
			case "dom":
				return "Topping!";
			case "submissive":
				return "Subbing!";
			case "boobs":
				return "Tits!";
			case "pregnancy":
				return "Sperm!";
		}
		if (slave.energy > 95) {
			return "Cock!";
		}
		return null;
	}

	let object = slave.fetishKnown === 1 ? fetishToObject() : null;
	if (!object) {
		object = V.PC.title === 0 ? "Mistress!" : "Master!";
	}
	return `"I <3 ${object}"`;
};