From 061332f1e2def412ef8a5a04e6d15d3851bf491a Mon Sep 17 00:00:00 2001
From: lowercasedonkey <lowercasedonkey@gmail.com>
Date: Sat, 13 Jun 2020 23:56:41 -0400
Subject: [PATCH] start

---
 src/npc/descriptions/longSlave.js         | 507 +++++++++++-----------
 src/uncategorized/longSlaveDescription.tw |   2 +-
 2 files changed, 253 insertions(+), 256 deletions(-)

diff --git a/src/npc/descriptions/longSlave.js b/src/npc/descriptions/longSlave.js
index b520898d761..1d6f12e6d9b 100644
--- a/src/npc/descriptions/longSlave.js
+++ b/src/npc/descriptions/longSlave.js
@@ -2,49 +2,49 @@
  * @param {App.Entity.SlaveState} slave
  * @returns {string}
  */
-App.Desc.longSlave = function(slave) {
+App.Desc.longSlave = function({slave = V.activeSlave, saleDescription = false, showClothing = true} = {}) {
 	const r = [];
 	const {
-		He, him, he, his
+		He, His, him, he, his
 	} = getPronouns(slave);
 
 
 	SlaveStatClamp(slave);
-	
+
 	r.push(`<span id="artFrame">`);
-		 if (V.seeImages === 1 && V.eventDescription !== 1 && passage() !== "Slave Interact") {
-			 if (V.imageChoice === 1) {
-				r.push(`<div class="imageRef lrgVector"><div class="mask">&nbsp;</div>${SlaveArt(slave, 3, 0)}</div>`);
-			} else {
-				r.push(`<div class="imageRef lrgRender"><div class="mask">&nbsp;</div>${SlaveArt(slave, 3, 0)}</div>`);
-			}
+	if (V.seeImages === 1 && V.eventDescription !== 1 && passage() !== "Slave Interact") {
+		if (V.imageChoice === 1) {
+			r.push(`<div class="imageRef lrgVector"><div class="mask">&nbsp;</div>${SlaveArt(slave, 3, 0)}</div>`);
+		} else {
+			r.push(`<div class="imageRef lrgRender"><div class="mask">&nbsp;</div>${SlaveArt(slave, 3, 0)}</div>`);
 		}
-		r.push(`</span>`);
-	
-		r.push(`<span style="font-weight:bold"><span class="pink">${SlaveFullName(slave)}</span></span>`);
-	
-	 if (slave.custom.label) {
+	}
+	r.push(`</span>`);
+
+	r.push(`<span style="font-weight:bold"><span class="pink">${SlaveFullName(slave)}</span></span>`);
+
+	if (slave.custom.label) {
 		r.push(`(<span class="yellow"><span style="font-weight:bold">${slave.custom.label}</span></span>)`);
 	}
-	
+
 	if (V.ui === "start") {
 	} else if (V.saleDescription === 1) {
-		 if (V.applyLaw === 1) {
+		if (V.applyLaw === 1) {
 			r.push(`has passed inspection to be sold in your arcology.`);
-			r.push(App.Desc.lawCompliance(slave)) /* includes CheckForGingering */
+			r.push(App.Desc.lawCompliance(slave)); // includes CheckForGingering
 		} else {
 			r.push(`is for sale and is available to inspect.`);
-			 if (V.prisonCrime) {
-		/* reports a slave's crime in the criminal market */
+			if (V.prisonCrime) {
+				// reports a slave's crime in the criminal market
 				r.push(`${He} ${V.prisonCrime}`);
 				V.prisonCrime = 0;
 			}
 		}
 		r.push(`<br>&nbsp;&nbsp;&nbsp;&nbsp;<span style="font-weight:bold">${slave.slaveName}</span>`);
 	}
-	
+
 	r.push(`is`);
-	 if (slave.devotion < -95) {
+	if (slave.devotion < -95) {
 		r.push(`a <span class="darkviolet">hate-filled,</span>`);
 	} else if (slave.devotion < -50) {
 		r.push(`a <span class="darkviolet">hateful,</span>`);
@@ -59,7 +59,7 @@ App.Desc.longSlave = function(slave) {
 	} else {
 		r.push(`a <span class="magenta">worshipful,</span>`);
 	}
-	 if (slave.trust < -95) {
+	if (slave.trust < -95) {
 		r.push(`<span class="goldenrod">abjectly terrified</span>`);
 	} else if (slave.trust < -50) {
 		r.push(`<span class="goldenrod">terrified</span>`);
@@ -68,40 +68,40 @@ App.Desc.longSlave = function(slave) {
 	} else if (slave.trust < 20) {
 		r.push(`<span class="yellow">fearful</span>`);
 	} else if (slave.trust <= 50) {
-		 if (slave.devotion < -20) {
+		if (slave.devotion < -20) {
 			r.push(`<span class="orange">careful</span>`);
 		} else {
 			r.push(`<span class="mediumaquamarine">careful</span>`);
 		}
 	} else if (slave.trust < 95) {
-		 if (slave.devotion < -20) {
+		if (slave.devotion < -20) {
 			r.push(`<span class="orangered">bold</span>`);
 		} else {
 			r.push(`<span class="mediumseagreen">trusting</span>`);
 		}
 	} else {
-		 if (slave.devotion < -20) {
+		if (slave.devotion < -20) {
 			r.push(`<span class="darkred">defiant</span>`);
 		} else {
 			r.push(`<span class="seagreen">profoundly trusting</span>`);
 		}
 	}
-	
+
 	V.desc = SlaveTitle(slave);
 	r.push(`<span style="font-weight:bold"><span class="coral">V.desc.</span></span>`);
-	
-	 if (slave.indenture > -1) {
+
+	if (slave.indenture > -1) {
 		r.push(`${His} `);
-	 if (slave.indentureRestrictions > 1) {
-		r.push(`restrictive`);
-	} else if (slave.indentureRestrictions > 0) {
-		r.push(`protective`);
-	} else {
-		r.push(`unrestricted`);
-	}
+		if (slave.indentureRestrictions > 1) {
+			r.push(`restrictive`);
+		} else if (slave.indentureRestrictions > 0) {
+			r.push(`protective`);
+		} else {
+			r.push(`unrestricted`);
+		}
 		r.push(` indenture`);
-		 if (slave.indenture > 0) {
-			 if (slave.indenture > 1) {
+		if (slave.indenture > 0) {
+			if (slave.indenture > 1) {
 				r.push(`has ${slave.indenture} weeks left to run.`);
 			} else {
 				r.push(`expires next week.`);
@@ -110,34 +110,34 @@ App.Desc.longSlave = function(slave) {
 			r.push(`expires this week.`);
 		}
 	}
-	
+
 	r.push(App.Desc.sceneIntro(slave));
-	
+
 	r.push(App.Desc.name(slave));
-	
+
 	r.push(App.Desc.ageAndHealth(slave));
-	
-	 if (V.saleDescription !== 1) {
-		 if (V.clinic !== 0 && V.clinicUpgradeScanner === 1) {
-			 if (slave.chem > 15) {
-				r.push(`${V.clinicNameCaps}'s scanners score long term carcinogenic buildup in ${his} body at <span class="cyan">${Math.ceil(slave.chem/10)}.</span>`);
+
+	if (V.saleDescription !== 1) {
+		if (V.clinic !== 0 && V.clinicUpgradeScanner === 1) {
+			if (slave.chem > 15) {
+				r.push(`${V.clinicNameCaps}'s scanners score long term carcinogenic buildup in ${his} body at <span class="cyan">${Math.ceil(slave.chem / 10)}.</span>`);
 			} else {
 				r.push(`${V.clinicNameCaps}'s scanners confirm that ${he} has good prospects for long term health.`);
 			}
 		}
-	
+
 		r.push(App.Desc.geneticQuirkAssessment(slave));
-	
-		 if (V.showSexualHistory === 1 && V.ui !== "start") {
+
+		if (V.showSexualHistory === 1 && V.ui !== "start") {
 			r.push(App.Desc.sexualHistory(slave));
 		}
 	}
-	
+
 	r.push(App.Desc.mind(slave));
-	
-	 if (V.saleDescription === 0) {
-		 if (V.eventDescription === 0) {
-			 if (canSee(slave)) {
+
+	if (V.saleDescription === 0) {
+		if (V.eventDescription === 0) {
+			if (canSee(slave)) {
 				if (slave.attrKnown === 1) {
 					if (slave.assignment !== "work in the dairy" || V.dairyRestraintsSetting > 1) {
 						if (slave.attrXX > 85 && V.PC.boobs >= 400) {
@@ -152,47 +152,47 @@ App.Desc.longSlave = function(slave) {
 			}
 		}
 	}
-	
+
 	r.push(App.Desc.family(slave));
-	
+
 	r.push(App.Desc.relationRival(slave));
-	
-	 if (slave.bodySwap > 0) {
-		 if (slave.origBodyOwner !== "") {
+
+	if (slave.bodySwap > 0) {
+		if (slave.origBodyOwner !== "") {
 			r.push(`${He} currently possesses ${slave.origBodyOwner}'s body.`);
 		}
-		 if (slave.fetish !== "mindbroken" && slave.fuckdoll === 0 && slave.origBodyOwnerID > 0) {
+		if (slave.fetish !== "mindbroken" && slave.fuckdoll === 0 && slave.origBodyOwnerID > 0) {
 			let _lsd = V.slaveIndices[slave.origBodyOwnerID];
-			 if (_lsd) {
+			if (_lsd) {
 				r.push(`${He} is fully aware that ${SlaveFullName(V.slaves[_lsd])} is in ${his} old body.`);
 			}
 		}
 	}
-	
+
 	r.push(`<br>&nbsp;&nbsp;&nbsp;&nbsp;`);
-	
-	 if (V.saleDescription === 0) {
-		 if (slave.origin !== 0) {
+
+	if (V.saleDescription === 0) {
+		if (slave.origin !== 0) {
 			r.push(`${slave.origin}`);
 		}
 	}
-	
+
 	r.push(App.Desc.career(slave));
-	
+
 	r.push(App.Desc.prestige(slave));
-	
+
 	r.push(App.Desc.skills(slave));
-	
-	if (slave.custom.desc !== "" &&  slave.custom.desc) {
+
+	if (slave.custom.desc !== "" && slave.custom.desc) {
 		r.push(slave.custom.desc);
 	}
-	
-	 if (V.arcologies[0].FSGenderFundamentalistLawBeauty + V.arcologies[0].FSGenderRadicalistLawBeauty > 0) {
-		 if (genderLawPass(slave) === 1) {
+
+	if (V.arcologies[0].FSGenderFundamentalistLawBeauty + V.arcologies[0].FSGenderRadicalistLawBeauty > 0) {
+		if (genderLawPass(slave) === 1) {
 			r.push(`${His} body is a perfect example of the fashionable feminine ideal.`);
 		}
 	} else if (V.arcologies[0].FSSlimnessEnthusiastLaw === 1) {
-		 if (slimLawPass(slave) === 1) {
+		if (slimLawPass(slave) === 1) {
 			r.push(`${His} body is a perfect example of the fashionable ideal flat body.`);
 		}
 	} else if (V.arcologies[0].FSHedonisticDecadenceLaw2 === 1) {
@@ -200,117 +200,120 @@ App.Desc.longSlave = function(slave) {
 			r.push(`${His} body is a perfect example of the fashionable plump body.`);
 		}
 	}
-	
-	 if (V.arcologies[0].FSRestartSMR > 0 && V.arcologies[0].FSRestart > 80 && (slave.dick === 0) && (slave.balls === 0) && (slave.ovaries === 0) && (slave.mpreg === 0) && (slave.vagina < 0)) {
+
+	if (V.arcologies[0].FSRestartSMR > 0 && V.arcologies[0].FSRestart > 80 && (slave.dick === 0) && (slave.balls === 0) && (slave.ovaries === 0) && (slave.mpreg === 0) && (slave.vagina < 0)) {
 		r.push(`${His} body is a perfect example of a subhuman who has accepted their place in society.`);
 	}
-	
-	 if (V.arcologies[0].FSIntellectualDependencyLawBeauty === 1) {
+
+	if (V.arcologies[0].FSIntellectualDependencyLawBeauty === 1) {
 		r.push(`${He} currently is graded`);
 		switch (bimboScore(slave)) {
-		case 6:
-			r.push(`an S-class`);
-		case 5:
-			r.push(`an A-class`);
-		case 4:
-			r.push(`a B-class`);
-		case 3:
-			r.push(`a C-class`);
-		case 2:
-			r.push(`a D-class`);
-		case 1:
-			r.push(`an E-class`);
-		default:
-			r.push(`an F-class`);
+			case 6:
+				r.push(`an S-class`);
+				break;
+			case 5:
+				r.push(`an A-class`);
+				break;
+			case 4:
+				r.push(`a B-class`);
+				break;
+			case 3:
+				r.push(`a C-class`);
+				break;
+			case 2:
+				r.push(`a D-class`);
+				break;
+			case 1:
+				r.push(`an E-class`);
+				break;
+			default:
+				r.push(`an F-class`);
 		}
 		r.push(`bimbo by societal trends.`);
 	}
-	
+
 	if (V.showScores !== 0) {
 		r.push(`Currently, ${he} has an`);
 		r.push(`<span class="pink">`);
 		r.push(`<span style="font-weight:bold">`);
-				r.push(`attractiveness score`);
-				r.push(`</span>`);
-			r.push(`of`);
-			r.push(`<span class="text-decoration-line: underline">`)
-			r.push(`<span id="BeautyTooltip" style="font-weight:bold">`);
-					 if (V.cheatMode || V.debugMode) {
-						r.push(App.UI.link(Beauty(slave), () => BeautyTooltip(slave)));
-					} else {
-						r.push(Beauty(slave));
-					}
-					r.push(`</span>`);
-					r.push(`</span>`);
-					r.push(`</span>`);
+		r.push(`attractiveness score`);
+		r.push(`</span>`);
+		r.push(`of`);
+		r.push(`<span class="text-decoration-line: underline">`);
+		r.push(`<span id="BeautyTooltip" style="font-weight:bold">`);
+		if (V.cheatMode || V.debugMode) {
+			r.push(App.UI.link(Beauty(slave), () => BeautyTooltip(slave)));
+		} else {
+			r.push(Beauty(slave));
+		}
+		r.push(`</span>`);
+		r.push(`</span>`);
+		r.push(`</span>`);
 		r.push(`and a`);
 		r.push(`<span class="lightcoral">`);
 		r.push(`<span style="font-weight:bold">`);
-				r.push(`sexual score`);
-				r.push(`</span>`);
-			r.push(`of`);
-			r.push(`<span class="text-decoration-line: underline">`);
-				r.push(`<span id="FResultTooltip" style="font-weight:bold">`);
-					 if (V.cheatMode || V.debugMode) {
-						r.push(App.UI.link(FResult(slave), () => FResultTooltip(slave)));
-					} else {
-						r.push(`${FResult(slave)}.`);
-					}
-					r.push(`</span>`);
-				r.push(`</span>`);
-			r.push(`</span>`);
+		r.push(`sexual score`);
+		r.push(`</span>`);
+		r.push(`of`);
+		r.push(`<span class="text-decoration-line: underline">`);
+		r.push(`<span id="FResultTooltip" style="font-weight:bold">`);
+		if (V.cheatMode || V.debugMode) {
+			r.push(App.UI.link(FResult(slave), () => FResultTooltip(slave)));
+		} else {
+			r.push(`${FResult(slave)}.`);
+		}
+		r.push(`</span>`);
+		r.push(`</span>`);
+		r.push(`</span>`);
 	}
-	
+
 	r.push(`<br>&nbsp;&nbsp;&nbsp;&nbsp;`);
-	
+
 	r.push(App.Desc.limbs(slave));
-	
+
 	r.push(App.Desc.clothing(slave));
 	r.push(App.Desc.armwear(slave));
-	 if (V.showBodyMods === 1) {
+	if (V.showBodyMods === 1) {
 		r.push(App.Desc.clothingCorset(slave));
 	}
-	
+
 	if (V.showClothing === 1 && V.saleDescription === 0) {
 		r.push(`${He}`);
 	} else {
 		r.push(`${slave.slaveName}`);
 	}
-	
+
 	r.push(App.Desc.dimensions(slave));
-	
+
 	r.push(App.Desc.bodyguard(slave));
-	
+
 	if ((slave.counter.pitWins + slave.counter.pitLosses) > 0) {
 		r.push(`${He} has participated in ${num(slave.counter.pitWins + slave.counter.pitLosses)} pit fights, with ${slave.counter.pitWins} wins and ${slave.counter.pitLosses} losses.`);
 	}
-	
-	 if (slave.counter.pitKills > 0) {
+
+	if (slave.counter.pitKills > 0) {
 		r.push(`${slave.counter.pitKills} slaves have died by ${his} hand in pit fights.`);
 	}
-	
+
 	r.push(App.Desc.piercing(slave, "corset"));
-	
+
 	r.push(App.Desc.pregnancy(slave));
-	
+
 	r.push(App.Desc.legs(slave));
-	
+
 	r.push(App.Desc.mods(slave, "thigh"));
 	r.push(App.Desc.mods(slave, "calf"));
 	r.push(App.Desc.mods(slave, "ankle"));
 	r.push(App.Desc.mods(slave, "foot"));
 	r.push(App.Desc.heels(slave, "foot"));
 	r.push(App.Desc.skin(slave));
-	
-	 if (V.saleDescription === 1) {
-	
+
+	if (V.saleDescription === 1) {
 		r.push(App.Desc.accent(slave));
-	
 	}
-	
+
 	let scarCounter = 0;
-	//for (let _scarName _scar range slave.scar) {
-	for (scarName in slave.scar) {
+	for (let scarName in slave.scar) {
 		if (slave.ID === V.Bodyguard.ID && scarCounter > 1) {
 			r.push(`${His} scars make ${him} look even more menacing than ${he} actually is.`);
 			break;
@@ -319,17 +322,18 @@ App.Desc.longSlave = function(slave) {
 			break;
 		} else if ((slave.ID === V.Wardeness.ID) && scarCounter > 1) {
 			r.push(`${His} scars make ${him} look like ${he}'s in the right place.`);
+			break;
 		}
 		scarCounter++;
 	}
-	
-	 if (slave.fuckdoll === 0) {
-		 if (slave.markings === "birthmark" && slave.prestige === 0 && slave.porn.prestige < 2) {
+
+	if (slave.fuckdoll === 0) {
+		if (slave.markings === "birthmark" && slave.prestige === 0 && slave.porn.prestige < 2) {
 			r.push(`${He} has a large, liver-colored birthmark, detracting from ${his} beauty.`);
 		}
 		if (slave.skin === "sun tanned") {
 			if ((slave.rules.release.slaves === 1) || App.Utils.hasFamilySex(slave)) {
-				if (slave.fetishStrength > 60) && (slave.fetishKnown === 1) {
+				if (slave.fetishStrength > 60 && slave.fetishKnown === 1) {
 					r.push(`${His} tan is slightly uneven, since ${he} enjoys`);
 					if (slave.fetish === "buttslut") {
 						r.push(`letting other tanned slaves share a tanning bed with ${him} so they can sodomize ${him} while ${he} tans.`);
@@ -343,7 +347,7 @@ App.Desc.longSlave = function(slave) {
 						r.push(`letting other slaves into the tanning beds with ${him} so they can fuck ${him} while ${he} tans.`);
 					} else if ((slave.fetish === "boobs")) {
 						r.push(`bringing other slaves into the tanning beds with ${him} so ${he} can tittyfuck them while ${he} tans.`);
-					} else if ((slave.fetish === "pregnancy") && (jsRandom(0,99) < V.seeDicks)) {
+					} else if ((slave.fetish === "pregnancy") && (jsRandom(0, 99) < V.seeDicks)) {
 						r.push(`letting slaves with dicks into the tanning beds with ${him} so they can cum inside ${him} while ${he} tans.`);
 					} else {
 						r.push(`bringing other slaves into the tanning beds with ${him} to have sex while ${he} tans.`);
@@ -352,53 +356,48 @@ App.Desc.longSlave = function(slave) {
 			}
 		}
 	}
-	
-	 if (slave.fuckdoll === 0) {
-		/* Describe any brands that are not directly addressed elsewhere in longSlave */
+
+	if (slave.fuckdoll === 0) {
+		// Describe any brands that are not directly addressed elsewhere in longSlave
 		r.push(App.Desc.mods(slave, "extra"));
 	}
-	
-	if (V.showClothing === 1) && (V.saleDescription === 0) {
-	
+
+	if (V.showClothing === 1 && V.saleDescription === 0) {
 		r.push(App.Desc.ears(slave));
-	
 		r.push(App.Desc.upperFace(slave));
-	
 		r.push(App.Desc.hair(slave));
-	
 	} else {
-		r.push(`${His} hair is ${slave.hColor`);
+		r.push(`${His} hair is ${slave.hColor}`);
 	} if (slave.hColor !== slave.eyebrowHColor) {
 		r.push(`, with ${slave.eyebrowHColor} eyebrows`);
 	}
-		r.push(`.`);
-	}
-	
-	 if (slave.fuckdoll === 0) {
+	r.push(`.`);
+
+	if (slave.fuckdoll === 0) {
 		if (slave.hColor === "red") {
 			if (slave.hLength >= 10) {
-				if (slave.markings === "freckles") || (slave.markings === "heavily freckled") {
-					if (skinToneLevel(slave.skin) > 5) && (skinToneLevel(slave.skin) < 10) {
+				if (slave.markings === "freckles" || slave.markings === "heavily freckled") {
+					if (skinToneLevel(slave.skin) > 5 && skinToneLevel(slave.skin) < 10) {
 						r.push(`It goes perfectly with ${his} ${slave.skin} skin and freckles.`);
 					}
 				}
 			}
 		}
-	
+
 		let _pubertyAge = Math.min(slave.pubertyAgeXX, slave.pubertyAgeXY);
-		if (slave.physicalAge < _pubertyAge-2) {
+		if (slave.physicalAge < _pubertyAge - 2) {
 			r.push(`${He} is too sexually immature to have armpit hair.`);
 		} else if (slave.underArmHStyle === "hairless") {
 			r.push(`${His} armpits are perfectly smooth and naturally hairless.`);
 		} else if (slave.underArmHStyle === "bald") {
 			r.push(`${His} armpits no longer grow hair, leaving them smooth and hairless.`);
-		} else if ((slave.underArmHStyle === "waxed")) {
-			if (slave.assignment === "work in the dairy") && (V.dairyRestraintsSetting > 1) {
+		} else if (slave.underArmHStyle === "waxed") {
+			if (slave.assignment === "work in the dairy" && V.dairyRestraintsSetting > 1) {
 				r.push(`${His} armpit hair has been removed to prevent chafing.`);
 			} else {
 				r.push(`${His} armpits are waxed and smooth.`);
 			}
-		} else if ((slave.physicalAge < _pubertyAge-1)) {
+		} else if ((slave.physicalAge < _pubertyAge - 1)) {
 			r.push(`${He} has a few ${slave.underArmHColor} wisps of armpit hair.`);
 		} else if ((slave.physicalAge < _pubertyAge)) {
 			r.push(`${He} is on the verge of puberty and has a small patch of ${slave.underArmHColor} armpit hair.`);
@@ -406,52 +405,52 @@ App.Desc.longSlave = function(slave) {
 			r.push(`${His} armpits appear hairless, but closer inspection reveals light, ${slave.underArmHColor} stubble.`);
 		} else if (slave.underArmHStyle === "neat") {
 			r.push(`${His} armpit hair is neatly trimmed `);
-	 if (!hasBothArms(slave)) {
-		r.push(`since `);
-	 if (hasAnyArms(slave)) {
-		r.push(`at least half`);
-	} else {
-		r.push(`it`);
-	}
-		r.push(` is always in full view`);
-	} else {
-		r.push(`to not be visible unless ${he} lifts ${his} arms`);
-	}
-		r.push(`.`);
+			if (!hasBothArms(slave)) {
+				r.push(`since `);
+				if (hasAnyArms(slave)) {
+					r.push(`at least half`);
+				} else {
+					r.push(`it`);
+				}
+				r.push(` is always in full view`);
+			} else {
+				r.push(`to not be visible unless ${he} lifts ${his} arms`);
+			}
+			r.push(`.`);
 		} else if (slave.underArmHStyle === "bushy") {
 			r.push(`${His} ${slave.underArmHColor} armpit hair has been allowed to grow freely, `);
-	 if (!hasAnyArms(slave)) {
-		r.push(`creating two bushy patches under where ${his} arms used to be`);
-	} else {
-		r.push(`so it can be seen poking out from under ${his} arm`);
-	 if (hasBothArms(slave)) {
-		r.push(`s`);
-	}
-		r.push(` at all times`);
-	}
-		r.push(`.`);
+			if (!hasAnyArms(slave)) {
+				r.push(`creating two bushy patches under where ${his} arms used to be`);
+			} else {
+				r.push(`so it can be seen poking out from under ${his} arm`);
+				if (hasBothArms(slave)) {
+					r.push(`s`);
+				}
+				r.push(` at all times`);
+			}
+			r.push(`.`);
 		}
 	}
-	
-	 if (slave.voice === 0) {
+
+	if (slave.voice === 0) {
 		r.push(`${He} is <span class="pink">completely silent,</span> which is understandable, since ${he}'s mute.`);
 	} else {
-		 if (slave.lips > 95) {
+		if (slave.lips > 95) {
 			r.push(`${He} is <span class="pink">effectively mute,</span> since ${his} lips are so large that ${he} can no longer speak intelligibly. ${He} can still `);
-	 if (slave.devotion > 50) {
-		r.push(`moan`);
-	} else if (slave.devotion > 20) {
-		r.push(`whimper`);
-	} else {
-		r.push(`scream`);
-	}
-		r.push(` through them, though.`);
+			if (slave.devotion > 50) {
+				r.push(`moan`);
+			} else if (slave.devotion > 20) {
+				r.push(`whimper`);
+			} else {
+				r.push(`scream`);
+			}
+			r.push(` through them, though.`);
 		}
 	}
-	
-	 if (V.showBodyMods === 1) {
-		 if (slave.fuckdoll > 0) {
-			 if (slave.earPiercing+slave.eyebrowPiercing+slave.nosePiercing > 0) {
+
+	if (V.showBodyMods === 1) {
+		if (slave.fuckdoll > 0) {
+			if (slave.earPiercing + slave.eyebrowPiercing + slave.nosePiercing > 0) {
 				r.push(`The piercings on ${his} head run through ${his} suit, helping secure the material to ${his} head.`);
 			}
 		} else {
@@ -460,52 +459,50 @@ App.Desc.longSlave = function(slave) {
 			r.push(App.Desc.mods(slave, "eyebrow"));
 			r.push(App.Desc.mods(slave, "cheek"));
 			r.push(App.Desc.mods(slave, "neck"));
-			if (slave.custom.tattoo !== "") && (def slave.custom.tattoo) {
+			if (slave.custom.tattoo !== "" && slave.custom.tattoo) {
 				r.push(slave.custom.tattoo);
 			}
 		}
 	}
-	
+
 	r.push(App.Desc.horns(slave));
 	r.push(App.Desc.face(slave));
 	r.push(App.Desc.mouth(slave));
-	
-	if (V.showClothing === 1) && (V.saleDescription === 0) {
-	
-		 if (slave.fuckdoll === 0) {
+
+	if (V.showClothing === 1 && V.saleDescription === 0) {
+		if (slave.fuckdoll === 0) {
 			r.push(App.Desc.collar(slave));
 			r.push(App.Desc.faceAccessory(slave));
 			r.push(App.Desc.mouthAccessory(slave));
 			if (slave.relationship > 4) {
-				 if (hasAnyArms(slave)) {
+				if (hasAnyArms(slave)) {
 					r.push(`${He} has a simple gold band on the little finger of ${his} `);
-	 if (!hasLeftArm(slave)) {
-		r.push(`right`);
-	} else {
-		r.push(`left`);
-	}
-		r.push(` hand.`);
+					if (!hasLeftArm(slave)) {
+						r.push(`right`);
+					} else {
+						r.push(`left`);
+					}
+					r.push(` hand.`);
 				} else {
 					r.push(`${He} has a simple gold band on a length of chain around ${his} neck.`);
 				}
 			} else if ((slave.relationship === -3)) {
-				 if (hasAnyArms(slave)) {
+				if (hasAnyArms(slave)) {
 					r.push(`${He} has a simple steel band on the little finger of ${his} `);
-	 if (!hasLeftArm(slave)) {
-		r.push(`right`);
-	} else {
-		r.push(`left`);
-	}
-		r.push(` hand.`);
+					if (!hasLeftArm(slave)) {
+						r.push(`right`);
+					} else {
+						r.push(`left`);
+					}
+					r.push(` hand.`);
 				} else {
 					r.push(`${He} has a simple steel band on a length of cord around ${his} neck.`);
 				}
 			}
 		}
-	
 	}
-	
-	 if (slave.fuckdoll === 0) {
+
+	if (slave.fuckdoll === 0) {
 		r.push(App.Desc.nails(slave));
 	}
 	r.push(App.Desc.mods(slave, "back"));
@@ -514,40 +511,40 @@ App.Desc.longSlave = function(slave) {
 	r.push(App.Desc.mods(slave, "lower arm"));
 	r.push(App.Desc.mods(slave, "hand"));
 	r.push(App.Desc.mods(slave, "wrist"));
-	
-	 if (slave.fuckdoll === 0) {
-		 if (slave.minorInjury !== 0) {
-			 if (slave.minorInjury !== "sore ass") {
+
+	if (slave.fuckdoll === 0) {
+		if (slave.minorInjury !== 0) {
+			if (slave.minorInjury !== "sore ass") {
 				r.push(`${He} is sporting a <span class="red">${slave.minorInjury},</span> covered by makeup.`);
 			}
 		}
 	}
-	 if (slave.health.illness > 0) {
-		 if (slave.fuckdoll === 0) {
+	if (slave.health.illness > 0) {
+		if (slave.fuckdoll === 0) {
 			r.push(`${He}`);
 		} else {
 			r.push(`${His} suit reports that ${he}`);
 		}
 		if (slave.health.illness === 1) {
-			 if (slave.fuckdoll === 0) {
+			if (slave.fuckdoll === 0) {
 				r.push(`is <span class="red">feeling under the weather.</span>`);
 			} else {
 				r.push(`has <span class="red">fallen ill.</span>`);
 			}
-		} else if ((slave.health.illness === 2)) {
+		} else if (slave.health.illness === 2) {
 			r.push(`is <span class="red">somewhat ill.</span>`);
-		} else if ((slave.health.illness === 3)) {
+		} else if (slave.health.illness === 3) {
 			r.push(`is <span class="red">sick.</span>`);
-		} else if ((slave.health.illness === 4)) {
+		} else if (slave.health.illness === 4) {
 			r.push(`is <span class="red">very sick.</span>`);
-		} else if ((slave.health.illness === 5)) {
+		} else if (slave.health.illness === 5) {
 			r.push(`is <span class="red">terribly ill.</span>`);
 		}
 	}
-	
-	<br>&nbsp;&nbsp;&nbsp;&nbsp;
-	
-	/* Calling all boob widgets */
+
+	r.push(`<br>&nbsp;&nbsp;&nbsp;&nbsp;`);
+
+	// Calling all boob widgets
 	r.push(App.Desc.boobs(slave));
 	r.push(App.Desc.boobsShape(slave));
 	r.push(App.Desc.boobsExtra(slave));
@@ -558,9 +555,9 @@ App.Desc.longSlave = function(slave) {
 	r.push(App.Desc.mods(slave, "nipple"));
 	r.push(App.Desc.areola(slave));
 	r.push(App.Desc.mods(slave, "areolae"));
-	
-	 if (slave.inflation > 0) {
-		r.push(` /* to be obsoleted with phase 4 */`);
+
+	if (slave.inflation > 0) {
+		// to be obsoleted with phase 4
 		r.push(App.Desc.bellyInflation(slave));
 	} else if (slave.bellyImplant >= 2000) {
 		r.push(App.Desc.bellyImplant(slave));
@@ -568,25 +565,25 @@ App.Desc.longSlave = function(slave) {
 		r.push(App.Desc.belly(slave));
 	}
 	r.push(App.Desc.mods(slave, "belly"));
-	/*${App.Desc.mods(slave, "navel")} Currently contained in App.Desc.belly()*/
 	r.push(App.Desc.butt(slave));
-	
-	<br>&nbsp;&nbsp;&nbsp;&nbsp;
-	
+
+	r.push(`<br>&nbsp;&nbsp;&nbsp;&nbsp;`);
+
 	r.push(App.Desc.crotch(slave));
 	r.push(App.Desc.dick(slave));
 	r.push(App.Desc.vagina(slave));
-	
+
 	r.push(App.Desc.anus(slave));
-	
-	 if (slave.fuckdoll === 0) {
-		<br>&nbsp;&nbsp;&nbsp;&nbsp;
+
+	if (slave.fuckdoll === 0) {
+		r.push(`<br>&nbsp;&nbsp;&nbsp;&nbsp;`);
 		r.push(App.Desc.drugs(slave));
 	}
-	
-	V.saleDescription = 0, V.applyLaw = 0;
-		r.push(` /* clear sale and law flags, if set */`);
-	
+
+	V.saleDescription = 0;
+	V.applyLaw = 0;
+	// clear sale and law flags, if set
+
 	return r.join(" ");
 };
 
diff --git a/src/uncategorized/longSlaveDescription.tw b/src/uncategorized/longSlaveDescription.tw
index 3c5549db26d..bc90a11ad18 100644
--- a/src/uncategorized/longSlaveDescription.tw
+++ b/src/uncategorized/longSlaveDescription.tw
@@ -1,2 +1,2 @@
 :: Long Slave Description [nobr]
-<<= App.Desc.longSlave($activeSlave)>>
\ No newline at end of file
+<<= App.Desc.longSlave({slave: $activeSlave, saleDescription: false, showClothing: true})>>
\ No newline at end of file
-- 
GitLab