From ee20947457ec820fe9a95c73c1f486f32f0e5f4c Mon Sep 17 00:00:00 2001
From: Svornost <11434-svornost@users.noreply.gitgud.io>
Date: Mon, 31 Aug 2020 12:51:56 -0700
Subject: [PATCH] Spaces and other stuff

---
 src/npc/descriptions/belly/belly.js       |   2 +-
 src/npc/descriptions/describePiercings.js |   6 +-
 src/npc/descriptions/longSlave.js         |  84 ++++-----
 src/npc/descriptions/sceneIntro.js        |   2 +-
 src/npc/generate/newSlaveIntro.js         | 210 +++++++++++-----------
 src/uncategorized/RESS.tw                 |   2 +-
 6 files changed, 150 insertions(+), 156 deletions(-)

diff --git a/src/npc/descriptions/belly/belly.js b/src/npc/descriptions/belly/belly.js
index e611ce8452d..9273ceb2dd2 100644
--- a/src/npc/descriptions/belly/belly.js
+++ b/src/npc/descriptions/belly/belly.js
@@ -7309,7 +7309,7 @@ App.Desc.belly = function(slave, {market, eventDescription} = {}) {
 					if (slave.bellyFluid >= slave.bellyPreg && slave.bellyFluid >= slave.bellyImplant) {
 						r.push(`Traditional battle armor would be useless on ${slave.slaveName}'s unfathomable, hyper-swollen, ${slave.inflationType}-filled belly. Instead, ${he} wears armor more suited to protecting an industrial tanker truck rather than a human being, complete with an internal mechanical frame designed to draw the shock of physical blows away from ${his} dangerously pressurized ${slave.inflationType} and special hookups to optimize the value of mobility aids.`);
 					} else if (slave.bellyImplant > 0) {
-						r.push(`Traditional battle armor would be useless on ${slave.slaveName} 's unfathomable, hyper-swollen, implant-filled belly. Instead, ${he} wears armor more suited to protecting an industrial tanker truck rather than a human being, complete with an internal mechanical frame designed to draw the shock of physical blows away from ${his} dangerously pressurized implant and special hookups to optimize the value of mobility aids.`);
+						r.push(`Traditional battle armor would be useless on ${slave.slaveName}'s unfathomable, hyper-swollen, implant-filled belly. Instead, ${he} wears armor more suited to protecting an industrial tanker truck rather than a human being, complete with an internal mechanical frame designed to draw the shock of physical blows away from ${his} dangerously pressurized implant and special hookups to optimize the value of mobility aids.`);
 					} else {
 						r.push(`Traditional battle armor would be useless on ${slave.slaveName}'s unfathomable, hyper-swollen pregnant belly. Instead, ${he} wears armor more suited to protecting an industrial tanker truck rather than a human being, complete with an internal mechanical frame designed to draw the shock of physical blows away from ${his} dangerously pressurized womb and innumerable brood of squirming children, as well as special hookups to optimize the value of mobility aids.`);
 					}
diff --git a/src/npc/descriptions/describePiercings.js b/src/npc/descriptions/describePiercings.js
index d84364fb082..8b128f08b7b 100644
--- a/src/npc/descriptions/describePiercings.js
+++ b/src/npc/descriptions/describePiercings.js
@@ -470,9 +470,9 @@ App.Desc.piercing = function(slave, surface) {
 						r.push(`asshole.`);
 					}
 				} else if (slave.anusPiercing === 2) {
-					r.push(`${He} has a big ring between ${his} pussy and ${his} asshole`);
+					r.push(`${He} has a big ring between ${his} pussy and ${his} asshole,`);
 					if (slave.fuckdoll > 0) {
-						r.push(`, which helps keep the strip of material`);
+						r.push(`which helps keep the strip of material`);
 						if (slave.vagina > -1) {
 							r.push(`between ${his} holes`);
 						} else {
@@ -480,7 +480,7 @@ App.Desc.piercing = function(slave, surface) {
 						}
 						r.push(`in place,`);
 					}
-					r.push(`and studs in all around ${his} anus.`);
+					r.push(`and studs all around ${his} anus.`);
 				}
 			} else {
 				if (slave.anusPiercing === 1) {
diff --git a/src/npc/descriptions/longSlave.js b/src/npc/descriptions/longSlave.js
index e3f25897f72..995a2d04419 100644
--- a/src/npc/descriptions/longSlave.js
+++ b/src/npc/descriptions/longSlave.js
@@ -390,13 +390,13 @@ App.Desc.longSlave = function(slave = V.activeSlave, {market = 0, eventDescripti
 	let scarCounter = 0;
 	for (let scarName in slave.scar) {
 		if (slave.ID === V.BodyguardID && scarCounter > 1) {
-			r.push(`${His} scars make ${him} look even more menacing than ${he} actually is. `);
+			r.push(`${His} scars make ${him} look even more menacing than ${he} actually is.`);
 			break;
 		} else if ((slave.ID === V.BodyguardID) && slave.scar[scarName].menacing > 0) {
-			r.push(`${His} menacing scar makes ${him} look terrifying. `);
+			r.push(`${His} menacing scar makes ${him} look terrifying.`);
 			break;
 		} else if ((slave.ID === V.WardenessID) && scarCounter > 1) {
-			r.push(`${His} scars make ${him} look like ${he}'s in the right place. `);
+			r.push(`${His} scars make ${him} look like ${he}'s in the right place.`);
 			break;
 		}
 		scarCounter++;
@@ -404,28 +404,28 @@ App.Desc.longSlave = function(slave = V.activeSlave, {market = 0, eventDescripti
 
 	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. `);
+			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) {
-					r.push(`${His} tan is slightly uneven, since ${he} enjoys `);
+					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. `);
+						r.push(`letting other tanned slaves share a tanning bed with ${him} so they can sodomize ${him} while ${he} tans.`);
 					} else if ((slave.fetish === "cumslut")) {
-						r.push(`letting other tanned slaves share a tanning bed with ${him} so they get oral from ${him} while ${he} tans. `);
+						r.push(`letting other tanned slaves share a tanning bed with ${him} so they get oral from ${him} while ${he} tans.`);
 					} else if ((slave.fetish === "sadist")) {
-						r.push(`forcing inferior slaves into the tanning beds with ${him} so ${he} can sodomize them while ${he} tans. `);
+						r.push(`forcing inferior slaves into the tanning beds with ${him} so ${he} can sodomize them while ${he} tans.`);
 					} else if ((slave.fetish === "dom")) {
-						r.push(`bringing other slaves into the tanning beds with ${him} so ${he} can fuck them while ${he} tans. `);
+						r.push(`bringing other slaves into the tanning beds with ${him} so ${he} can fuck them while ${he} tans.`);
 					} else if ((slave.fetish === "masochist") || (slave.fetish === "submissive")) {
-						r.push(`letting other slaves into the tanning beds with ${him} so they can fuck ${him} while ${he} tans. `);
+						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. `);
+						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)) {
-						r.push(`letting slaves with dicks into the tanning beds with ${him} so they can cum inside ${him} while ${he} tans. `);
+						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. `);
+						r.push(`bringing other slaves into the tanning beds with ${him} to have sex while ${he} tans.`);
 					}
 				}
 			}
@@ -455,7 +455,7 @@ App.Desc.longSlave = function(slave = V.activeSlave, {market = 0, eventDescripti
 			if (slave.hLength >= 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. `);
+						r.push(`It goes perfectly with ${his} ${slave.skin} skin and freckles.`);
 					}
 				}
 			}
@@ -463,48 +463,48 @@ App.Desc.longSlave = function(slave = V.activeSlave, {market = 0, eventDescripti
 
 		const pubertyAge = Math.min(slave.pubertyAgeXX, slave.pubertyAgeXY);
 		if (slave.physicalAge < pubertyAge - 2) {
-			r.push(`${He} is too sexually immature to have armpit hair. `);
+			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. `);
+			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. `);
+			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) {
-				r.push(`${His} armpit hair has been removed to prevent chafing. `);
+				r.push(`${His} armpit hair has been removed to prevent chafing.`);
 			} else {
-				r.push(`${His} armpits are waxed and smooth. `);
+				r.push(`${His} armpits are waxed and smooth.`);
 			}
 		} 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.`);
 		} else if (slave.underArmHStyle === "shaved") {
-			r.push(`${His} armpits appear hairless, but closer inspection reveals light, ${slave.underArmHColor} stubble. `);
+			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 `);
+			r.push(`${His} armpit hair is neatly trimmed`);
 			if (!hasBothArms(slave)) {
-				r.push(`since `);
+				r.push(`since`);
 				if (hasAnyArms(slave)) {
-					r.push(`at least half `);
+					r.push(`at least half`);
 				} else {
-					r.push(`it `);
+					r.push(`it`);
 				}
-				r.push(`is always in full view. `);
+				r.push(`is always in full view.`);
 			} else {
-				r.push(`to not be visible unless ${he} lifts ${his} arms. `);
+				r.push(`to not be visible unless ${he} lifts ${his} arms.`);
 			}
 		} 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. `);
+				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} `);
+				r.push(`so it can be seen poking out from under ${his}`);
 				if (hasBothArms(slave)) {
-					r.push(`arms `);
+					r.push(`arms`);
 				} else {
-					r.push(`arm `);
+					r.push(`arm`);
 				}
-				r.push(`at all times. `);
+				r.push(`at all times.`);
 			}
 		}
 	}
@@ -541,7 +541,7 @@ App.Desc.longSlave = function(slave = V.activeSlave, {market = 0, eventDescripti
 	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. `);
+				r.push(`The piercings on ${his} head run through ${his} suit, helping secure the material to ${his} head.`);
 			}
 		} else {
 			r.push(App.Desc.mods(slave, "ear"));
@@ -566,27 +566,27 @@ App.Desc.longSlave = function(slave = V.activeSlave, {market = 0, eventDescripti
 			r.push(App.Desc.mouthAccessory(slave));
 			if (slave.relationship > 4) {
 				if (hasAnyArms(slave)) {
-					r.push(`${He} has a simple gold band on the little finger of ${his} `);
+					r.push(`${He} has a simple gold band on the little finger of ${his}`);
 					if (!hasLeftArm(slave)) {
-						r.push(`right `);
+						r.push(`right`);
 					} else {
-						r.push(`left `);
+						r.push(`left`);
 					}
-					r.push(`hand. `);
+					r.push(`hand.`);
 				} else {
-					r.push(`${He} has a simple gold band on a length of chain around ${his} neck. `);
+					r.push(`${He} has a simple gold band on a length of chain around ${his} neck.`);
 				}
 			} else if (slave.relationship === -3) {
 				if (hasAnyArms(slave)) {
-					r.push(`${He} has a simple steel band on the little finger of ${his} `);
+					r.push(`${He} has a simple steel band on the little finger of ${his}`);
 					if (!hasLeftArm(slave)) {
-						r.push(`right `);
+						r.push(`right`);
 					} else {
-						r.push(`left `);
+						r.push(`left`);
 					}
-					r.push(`hand. `);
+					r.push(`hand.`);
 				} else {
-					r.push(`${He} has a simple steel band on a length of cord around ${his} neck. `);
+					r.push(`${He} has a simple steel band on a length of cord around ${his} neck.`);
 				}
 			}
 		}
diff --git a/src/npc/descriptions/sceneIntro.js b/src/npc/descriptions/sceneIntro.js
index 159e1cbb6dd..136a4151102 100644
--- a/src/npc/descriptions/sceneIntro.js
+++ b/src/npc/descriptions/sceneIntro.js
@@ -258,7 +258,7 @@ App.Desc.sceneIntro = function(slave, {market, eventDescription} = {}) {
 			if (slave.rules.relationship === "restrictive") {
 				r.push(`The rules forbid ${him} from associating freely with other slaves.`);
 			} else if (slave.career === "a Futanari Sister") {
-				r.push(`The rules encourage ${him} to form friendships with other slaves, but ${he} seems disinclined to do so.${He}'s both friendly with them and eagerly sexual with them when allowed, but ${he} seems to be waiting for someone, deep down.`);
+				r.push(`The rules encourage ${him} to form friendships with other slaves, but ${he} seems disinclined to do so. ${He}'s both friendly with them and eagerly sexual with them when allowed, but ${he} seems to be waiting for someone, deep down.`);
 			} else if (slave.rules.relationship === "just friends") {
 				r.push(`The rules encourage ${him} to form friendships with other slaves.`);
 			} else {
diff --git a/src/npc/generate/newSlaveIntro.js b/src/npc/generate/newSlaveIntro.js
index a9eaff98265..1e3bf75d5af 100644
--- a/src/npc/generate/newSlaveIntro.js
+++ b/src/npc/generate/newSlaveIntro.js
@@ -1290,10 +1290,7 @@ App.UI.newSlaveIntro = function(slave, slave2 = V.eventSlave) {
 								r.push(`sees ${himself}`);
 							} else {
 								if (hasAnyArms(slave)) {
-									r.push(`tenderly uses ${his} hand`);
-									if (hasBothArms(slave)) {
-										r.push(`s`);
-									}
+									r.push(`tenderly uses ${his} hand${hasBothArms(slave) ? 's' : ''}`);
 									r.push(`and finds ${himself}`);
 								} else {
 									r.push(`stoically waits while you vividly describe ${his} new appearance. One`);
@@ -1394,14 +1391,14 @@ App.UI.newSlaveIntro = function(slave, slave2 = V.eventSlave) {
 						},
 						result: function(slave) {
 							const r = [];
-							const {He2, he2, his2, him2} = getPronouns(slave2).appendSuffix('2');
-							r.push(`Your new slave appears `);
+							const {He2, he2, his2, him2, sister2} = getPronouns(slave2).appendSuffix('2');
+							r.push(`Your new slave appears`);
 							if (slave.devotion < -10) {
 								r.push(`reluctant to assume ${his} new duties.`);
 							} else {
 								r.push(`unsure what ${his} new duties are.`);
 							}
-							r.push(`You gesture towards ${slave2.slaveName}. ${He2} is `);
+							r.push(`You gesture towards ${slave2.slaveName}. ${He2} is`);
 							if (slave2.intelligence + slave2.intelligenceImplant > 15) {
 								r.push(`bright enough`);
 							} else if ((slave2.skill.vaginal + slave2.skill.anal + slave2.skill.oral) > 100) {
@@ -1409,7 +1406,7 @@ App.UI.newSlaveIntro = function(slave, slave2 = V.eventSlave) {
 							} else {
 								r.push(`obedient enough`);
 							}
-							r.push(` to understand you mean a demonstration is in order. ${slave2.slaveName} starts things off with a `);
+							r.push(`to understand you mean a demonstration is in order. ${slave2.slaveName} starts things off with a`);
 							if (slave2.skill.entertainment >= 100) {
 								r.push(`masterful`);
 							} else if (slave2.skill.entertainment > 10) {
@@ -1417,29 +1414,29 @@ App.UI.newSlaveIntro = function(slave, slave2 = V.eventSlave) {
 							} else {
 								r.push(`passable`);
 							}
-							r.push(` striptease, culminating in ${him2} `);
+							r.push(`striptease, culminating in ${him2}`);
 							if (slave2.anus > 0 && slave2.fetish !== "cumslut") {
 								r.push(`bending over`);
 							} else {
 								r.push(`kneeling`);
 							}
-							r.push(` in front of you. ${He2} eagerly moans as you enter ${him2}, begging for your seed`);
+							r.push(`in front of you. ${He2} eagerly moans as you enter ${him2}, begging for your seed`);
 							if (slave2.energy > 95) {
-								r.push(` like the slut ${he2} is`);
+								r.push(`like the slut ${he2} is.`);
 							} else if (slave2.skill.whoring > 30) {
-								r.push(` like the whore ${he2} is`);
+								r.push(`like the whore ${he2} is.`);
 							} else if ((slave2.assignment === "serve in the master suite") || (slave2.assignment === "please you")) {
-								r.push(` like the fucktoy ${he2} is`);
+								r.push(`like the fucktoy ${he2} is.`);
 							}
-							r.push(`. As you finish, ${he2} `);
+							r.push(`As you finish, ${he2}`);
 							if (slave2.fetish === "cumslut") {
-								r.push(`opens ${his2} mouth and savors your gift, thanking you once ${he2}'s swallowed enough to be able to talk again`);
+								r.push(`opens ${his2} mouth and savors your gift, thanking you once ${he2}'s swallowed enough to be able to talk again.`);
 							} else if ((slave2.fetish === "buttslut") || (slave2.fetish === "submissive")) {
-								r.push(`collapses on the floor with ${his2} ass high in the air, thanking you for painting ${his2} hole white`);
+								r.push(`collapses on the floor with ${his2} ass high in the air, thanking you for painting ${his2} hole white.`);
 							} else {
-								r.push(`thanks you`);
+								r.push(`thanks you.`);
 							}
-							r.push(`. Witnessing this display of servitude from ${his} big _sister2 <span class="hotpink">eases ${slave.slaveName} into ${his} new life,</span> and <span class="mediumaquamarine">gives ${him} hope</span> ${he} can find a place here.`);
+							r.push(`Witnessing this display of servitude from ${his} big ${sister2} <span class="hotpink">eases ${slave.slaveName} into ${his} new life,</span> and <span class="mediumaquamarine">gives ${him} hope</span> ${he} can find a place here.`);
 							if (slave.anus > 0 && slave.fetish !== "cumslut") {
 								actX(slave2, "anal");
 							} else {
@@ -1460,14 +1457,14 @@ App.UI.newSlaveIntro = function(slave, slave2 = V.eventSlave) {
 						},
 						result: function(slave) {
 							const r = [];
-							const {He2, he2, his2, him2} = getPronouns(slave2).appendSuffix('2');
-							r.push(`Your new slave appears `);
+							const {He2, he2, his2, him2, sister2} = getPronouns(slave2).appendSuffix('2');
+							r.push(`Your new slave appears`);
 							if (slave.devotion < -10) {
-								r.push(`reluctant to assume ${his} new duties`);
+								r.push(`reluctant to assume ${his} new duties.`);
 							} else {
-								r.push(`unsure what ${his} new duties are`);
+								r.push(`unsure what ${his} new duties are.`);
 							}
-							r.push(`. You gesture towards ${slave2.slaveName}. ${He2} is `);
+							r.push(`You gesture towards ${slave2.slaveName}. ${He2} is`);
 							if (slave2.intelligence + slave2.intelligenceImplant > 15) {
 								r.push(`bright enough`);
 							} else if (((slave2.skill.vaginal + slave2.skill.anal + slave2.skill.oral) > 100)) {
@@ -1475,7 +1472,7 @@ App.UI.newSlaveIntro = function(slave, slave2 = V.eventSlave) {
 							} else {
 								r.push(`obedient enough`);
 							}
-							r.push(` to understand you mean a demonstration is in order. ${slave2.slaveName} starts things off with a `);
+							r.push(`to understand you mean a demonstration is in order. ${slave2.slaveName} starts things off with a`);
 							if (slave2.skill.entertainment >= 100) {
 								r.push(`masterful`);
 							} else if (slave2.skill.entertainment > 10) {
@@ -1483,29 +1480,29 @@ App.UI.newSlaveIntro = function(slave, slave2 = V.eventSlave) {
 							} else {
 								r.push(`passable`);
 							}
-							r.push(` striptease, culminating in ${him2} `);
+							r.push(`striptease, culminating in ${him2}`);
 							if (slave2.anus > 0 && slave2.fetish !== "cumslut") {
 								r.push(`bending over`);
 							} else {
 								r.push(`kneeling`);
 							}
-							r.push(` in front of you. ${He2} eagerly moans as you enter ${him2}, begging for your seed`);
+							r.push(`in front of you. ${He2} eagerly moans as you enter ${him2}, begging for your seed`);
 							if (slave2.energy > 95) {
-								r.push(` like the slut ${he2} is`);
+								r.push(`like the slut ${he2} is.`);
 							} else if (slave2.skill.whoring > 30) {
-								r.push(` like the whore ${he2} is`);
+								r.push(`like the whore ${he2} is.`);
 							} else if ((slave2.assignment === "serve in the master suite") || (slave2.assignment === "please you")) {
-								r.push(` like the fucktoy ${he2} is`);
+								r.push(`like the fucktoy ${he2} is.`);
 							}
-							r.push(`. As you finish, ${he2} `);
+							r.push(`As you finish, ${he2}`);
 							if (slave2.fetish === "cumslut") {
-								r.push(`opens ${his2} mouth and savors your gift, thanking you once ${he2}'s swallowed enough to be able to talk again`);
+								r.push(`opens ${his2} mouth and savors your gift, thanking you once ${he2}'s swallowed enough to be able to talk again.`);
 							} else if ((slave2.fetish === "buttslut") || (slave2.fetish === "submissive")) {
-								r.push(`collapses on the floor with ${his2} ass high in the air, thanking you for painting ${his2} hole white`);
+								r.push(`collapses on the floor with ${his2} ass high in the air, thanking you for painting ${his2} hole white.`);
 							} else {
-								r.push(`thanks you`);
+								r.push(`thanks you.`);
 							}
-							r.push(`. Witnessing this display of servitude from ${his} little _sister2 <span class="hotpink">eases ${slave.slaveName} into ${his} new life,</span> and <span class="mediumaquamarine">gives ${him} hope</span> ${he} can find a place here.`); if (slave.anus > 0 && slave.fetish !== "cumslut") {
+							r.push(`Witnessing this display of servitude from ${his} little ${sister2} <span class="hotpink">eases ${slave.slaveName} into ${his} new life,</span> and <span class="mediumaquamarine">gives ${him} hope</span> ${he} can find a place here.`); if (slave.anus > 0 && slave.fetish !== "cumslut") {
 								actX(slave2, "anal");
 							} else {
 								actX(slave2, "oral");
@@ -1525,14 +1522,14 @@ App.UI.newSlaveIntro = function(slave, slave2 = V.eventSlave) {
 						},
 						result: function(slave) {
 							const r = [];
-							const {He2, he2, his2, him2} = getPronouns(slave2).appendSuffix('2');
-							r.push(`Your new slave appears `);
+							const {He2, he2, his2, him2, sister2} = getPronouns(slave2).appendSuffix('2');
+							r.push(`Your new slave appears`);
 							if (slave.devotion < -10) {
 								r.push(`reluctant to assume ${his} new duties.`);
 							} else {
 								r.push(`unsure what ${his} new duties are.`);
 							}
-							r.push(`You gesture towards ${slave2.slaveName}. ${He2} is `);
+							r.push(`You gesture towards ${slave2.slaveName}. ${He2} is`);
 							if (slave2.intelligence + slave2.intelligenceImplant > 15) {
 								r.push(`bright enough`);
 							} else if (((slave2.skill.vaginal + slave2.skill.anal + slave2.skill.oral) > 100)) {
@@ -1540,7 +1537,7 @@ App.UI.newSlaveIntro = function(slave, slave2 = V.eventSlave) {
 							} else {
 								r.push(`obedient enough`);
 							}
-							r.push(` to understand you mean a demonstration is in order. ${slave2.slaveName} starts things off with a `);
+							r.push(`to understand you mean a demonstration is in order. ${slave2.slaveName} starts things off with a`);
 							if (slave2.skill.entertainment >= 100) {
 								r.push(`masterful`);
 							} else if (slave2.skill.entertainment > 10) {
@@ -1548,21 +1545,21 @@ App.UI.newSlaveIntro = function(slave, slave2 = V.eventSlave) {
 							} else {
 								r.push(`passable`);
 							}
-							r.push(` striptease, culminating in ${him2} `);
+							r.push(`striptease, culminating in ${him2}`);
 							if (slave2.anus > 0 && slave2.fetish !== "cumslut") {
 								r.push(`bending over`);
 							} else {
 								r.push(`kneeling`);
 							}
-							r.push(` in front of you. ${He2} eagerly moans as you enter ${him2}, begging for your seed`);
+							r.push(`in front of you. ${He2} eagerly moans as you enter ${him2}, begging for your seed`);
 							if (slave2.energy > 95) {
-								r.push(` like the slut ${he2} is`);
+								r.push(`like the slut ${he2} is.`);
 							} else if (slave2.skill.whoring > 30) {
-								r.push(` like the whore ${he2} is`);
+								r.push(`like the whore ${he2} is.`);
 							} else if ((slave2.assignment === "serve in the master suite") || (slave2.assignment === "please you")) {
-								r.push(` like the fucktoy ${he2} is`);
+								r.push(`like the fucktoy ${he2} is.`);
 							}
-							r.push(`. As you finish, ${he2} `);
+							r.push(`As you finish, ${he2}`);
 							if (slave2.fetish === "cumslut") {
 								r.push(`opens ${his2} mouth and savors your gift, thanking you once ${he2}'s swallowed enough to be able to talk again`);
 							} else if ((slave2.fetish === "buttslut") || (slave2.fetish === "submissive")) {
@@ -1570,7 +1567,7 @@ App.UI.newSlaveIntro = function(slave, slave2 = V.eventSlave) {
 							} else {
 								r.push(`thanks you`);
 							}
-							r.push(`. Witnessing this display of servitude from ${his} twin _sister2 <span class="hotpink">eases ${slave.slaveName} into ${his} new life,</span> and <span class="mediumaquamarine">gives ${him} hope</span> ${he} can find a place here.`);
+							r.push(`Witnessing this display of servitude from ${his} twin ${sister2} <span class="hotpink">eases ${slave.slaveName} into ${his} new life,</span> and <span class="mediumaquamarine">gives ${him} hope</span> ${he} can find a place here.`);
 							if (slave.anus > 0 && slave.fetish !== "cumslut") {
 								actX(slave2, "anal");
 							} else {
@@ -1589,7 +1586,7 @@ App.UI.newSlaveIntro = function(slave, slave2 = V.eventSlave) {
 						result: function(slave) {
 							const r = [];
 							const {He2, he2, his2, him2} = getPronouns(slave2).appendSuffix('2');
-							r.push(`You gesture towards ${slave2.slaveName}. ${He2} is `);
+							r.push(`You gesture towards ${slave2.slaveName}. ${He2} is`);
 							if (slave2.intelligence + slave2.intelligenceImplant > 15) {
 								r.push(`bright enough`);
 							} else if ((slave2.skill.vaginal + slave2.skill.anal + slave2.skill.oral) > 100) {
@@ -1597,7 +1594,7 @@ App.UI.newSlaveIntro = function(slave, slave2 = V.eventSlave) {
 							} else {
 								r.push(`obedient enough`);
 							}
-							r.push(` to understand you mean a demonstration is in order. ${slave2.slaveName} starts things off with a `);
+							r.push(`to understand you mean a demonstration is in order. ${slave2.slaveName} starts things off with a`);
 							if (slave2.skill.entertainment >= 100) {
 								r.push(`masterful`);
 							} else if (slave2.skill.entertainment > 10) {
@@ -1605,35 +1602,35 @@ App.UI.newSlaveIntro = function(slave, slave2 = V.eventSlave) {
 							} else {
 								r.push(`passable`);
 							}
-							r.push(` striptease, culminating in ${him2} `);
+							r.push(`striptease, culminating in ${him2}`);
 							if (slave2.anus > 0 && slave2.fetish !== "cumslut") {
 								r.push(`bending over`);
 							} else {
 								r.push(`kneeling`);
 							}
-							r.push(` in front of you. ${He2} eagerly moans as you enter ${him2}, begging for your seed`);
+							r.push(`in front of you. ${He2} eagerly moans as you enter ${him2}, begging for your seed`);
 							if (slave2.energy > 95) {
-								r.push(` like the slut ${he2} is`);
+								r.push(`like the slut ${he2} is.`);
 							} else if (slave2.skill.whoring > 30) {
-								r.push(` like the whore ${he2} is`);
+								r.push(`like the whore ${he2} is.`);
 							} else if ((slave2.assignment === "serve in the master suite") || (slave2.assignment === "please you")) {
-								r.push(` like the fucktoy ${he2} is`);
+								r.push(`like the fucktoy ${he2} is.`);
 							}
-							r.push(`. As you finish, ${he2} `);
+							r.push(`As you finish, ${he2}`);
 							if (slave2.fetish === "cumslut") {
-								r.push(`opens ${his2} mouth and savors your gift, thanking you once ${he2}'s swallowed enough to be able to talk again`);
+								r.push(`opens ${his2} mouth and savors your gift, thanking you once ${he2}'s swallowed enough to be able to talk again.`);
 							} else if ((slave2.fetish === "buttslut") || (slave2.fetish === "submissive")) {
-								r.push(`collapses on the floor with ${his2} ass high in the air, thanking you for painting ${his2} hole white`);
+								r.push(`collapses on the floor with ${his2} ass high in the air, thanking you for painting ${his2} hole white.`);
 							} else {
-								r.push(`thanks you`);
+								r.push(`thanks you.`);
 							}
-							r.push(`. Witnessing this display of servitude from ${his} `);
+							r.push(`Witnessing this display of servitude from ${his}`);
 							if (slave.mother === slave2.ID) {
 								r.push(`mother`);
 							} else {
 								r.push(`father`);
 							}
-							r.push(` <span class="hotpink">eases ${slave.slaveName} into ${his} new life,</span> and <span class="mediumaquamarine">gives ${him} hope</span> ${he} can find a place here.`);
+							r.push(`<span class="hotpink">eases ${slave.slaveName} into ${his} new life,</span> and <span class="mediumaquamarine">gives ${him} hope</span> ${he} can find a place here.`);
 							if (slave.anus > 0 && slave.fetish !== "cumslut") {
 								actX(slave2, "anal");
 							} else {
@@ -1654,8 +1651,8 @@ App.UI.newSlaveIntro = function(slave, slave2 = V.eventSlave) {
 						},
 						result: function(slave) {
 							const r = [];
-							const {He2, he2, his2, him2} = getPronouns(slave2).appendSuffix('2');
-							r.push(`You gesture towards ${slave2.slaveName}. ${He2} is `);
+							const {He2, he2, his2, him2, daughter2} = getPronouns(slave2).appendSuffix('2');
+							r.push(`You gesture towards ${slave2.slaveName}. ${He2} is`);
 							if (slave2.intelligence + slave2.intelligenceImplant > 15) {
 								r.push(`bright enough`);
 							} else if (((slave2.skill.vaginal + slave2.skill.anal + slave2.skill.oral) > 100)) {
@@ -1663,7 +1660,7 @@ App.UI.newSlaveIntro = function(slave, slave2 = V.eventSlave) {
 							} else {
 								r.push(`obedient enough`);
 							}
-							r.push(` to understand you mean a demonstration is in order. ${slave2.slaveName} starts things off with a `);
+							r.push(`to understand you mean a demonstration is in order. ${slave2.slaveName} starts things off with a`);
 							if (slave2.skill.entertainment >= 100) {
 								r.push(`masterful`);
 							} else if (slave2.skill.entertainment > 10) {
@@ -1671,29 +1668,29 @@ App.UI.newSlaveIntro = function(slave, slave2 = V.eventSlave) {
 							} else {
 								r.push(`passable`);
 							}
-							r.push(` striptease, culminating in ${him2} `);
+							r.push(`striptease, culminating in ${him2}`);
 							if (slave2.anus > 0 && slave2.fetish !== "cumslut") {
 								r.push(`bending over`);
 							} else {
 								r.push(`kneeling`);
 							}
-							r.push(` in front of you. ${He2} eagerly moans as you enter ${him2}, begging for your seed`);
+							r.push(`in front of you. ${He2} eagerly moans as you enter ${him2}, begging for your seed`);
 							if (slave2.energy > 95) {
-								r.push(` like the slut ${he2} is`);
+								r.push(`like the slut ${he2} is.`);
 							} else if (slave2.skill.whoring > 30) {
-								r.push(` like the whore ${he2} is`);
+								r.push(`like the whore ${he2} is.`);
 							} else if ((slave2.assignment === "serve in the master suite") || (slave2.assignment === "please you")) {
-								r.push(` like the fucktoy ${he2} is`);
+								r.push(`like the fucktoy ${he2} is.`);
 							}
-							r.push(`. As you finish, ${he2} `);
+							r.push(`As you finish, ${he2}`);
 							if (slave2.fetish === "cumslut") {
-								r.push(`opens ${his2} mouth and savors your gift, thanking you once ${he2}'s swallowed enough to be able to talk again`);
+								r.push(`opens ${his2} mouth and savors your gift, thanking you once ${he2}'s swallowed enough to be able to talk again.`);
 							} else if ((slave2.fetish === "buttslut") || (slave2.fetish === "submissive")) {
-								r.push(`collapses on the floor with ${his2} ass high in the air, thanking you for painting ${his2} hole white`);
+								r.push(`collapses on the floor with ${his2} ass high in the air, thanking you for painting ${his2} hole white.`);
 							} else {
-								r.push(`thanks you`);
+								r.push(`thanks you.`);
 							}
-							r.push(`. Witnessing this display of servitude from ${his} _daughter2 <span class="hotpink">eases ${slave.slaveName} into ${his} new life,</span> and <span class="mediumaquamarine">gives ${him} hope</span> ${he} can find a place here.`);
+							r.push(`Witnessing this display of servitude from ${his} ${daughter2} <span class="hotpink">eases ${slave.slaveName} into ${his} new life,</span> and <span class="mediumaquamarine">gives ${him} hope</span> ${he} can find a place here.`);
 							if (slave.anus > 0 && slave.fetish !== "cumslut") {
 								actX(slave, "anal");
 							} else {
@@ -2858,22 +2855,23 @@ App.UI.newSlaveIntro = function(slave, slave2 = V.eventSlave) {
 					result(slave) {
 						const r = [];
 						const num = jsRandom(1, 100);
-						r.push(`${He} seems reasonably obedient, so you give ${him} a chance to impress.You remain seated and offer ${him} your`);
+						r.push(`${He} seems reasonably obedient, so you give ${him} a chance to impress. You remain seated and offer ${him} your`);
 						if (V.PC.dick !== 0) {
-							r.push(`half - erect cock`);
+							r.push(`half-cock`);
 							if (V.PC.vagina !== -1) {
 								r.push(`and ready pussy`);
 							}
 						} else {
 							r.push(`pussy, wet with arousal at the prospect of breaking in a new slut`);
 						}
-						r.push(`.${He} comes over obediently and gets`);
+						r.push(r.pop() + ".");
+						r.push(`${He} comes over obediently and gets`);
 						if (hasBothLegs(slave)) {
-							r.push(`on ${his} knees`);
+							r.push(`on ${his} knees.`);
 						} else {
-							r.push(`into position`);
+							r.push(`into position.`);
 						}
-						r.push(`.${He} works hard and is clearly doing ${his} absolute best to please, so you ${him} finish you with ${his} mouth.`);
+						r.push(`${He} works hard and is clearly doing ${his} absolute best to please, so you ${him} finish you with ${his} mouth.`);
 						if (V.PC.dick !== 0) {
 							if (num > 20) {
 								r.push(`${He}`);
@@ -2895,13 +2893,14 @@ App.UI.newSlaveIntro = function(slave, slave2 = V.eventSlave) {
 						} else {
 							r.push(`${He} worked ${his} tongue hard and did ${his} best`);
 						}
-						r.push(`.You spend the rest of the day with ${him}`);
+						r.push(`You spend the rest of the day with ${him}`);
+						r.push(r.pop() + ".");
 						if (hasAnyLegs(slave)) {
 							r.push(`kneeling`);
 						} else {
 							r.push(`resting`);
 						}
-						r.push(`on a cushion next to your chair.${He} learns obedience, but also learns that you are < span class="mediumaquamarine" > fair</span > and < span class="hotpink" > reasonable.</span >`);
+						r.push(`on a cushion next to your chair. ${He} learns obedience, but also learns that you are <span class="mediumaquamarine"> fair</span> and <span class="hotpink">reasonable.</span>`);
 						slave.devotion += 4;
 						slave.trust += 4;
 						actX(slave, "oral");
@@ -2917,7 +2916,7 @@ App.UI.newSlaveIntro = function(slave, slave2 = V.eventSlave) {
 						linkName: `Make sure ${he} knows pregnant women can still enjoy sex`,
 						result(slave) {
 							const r = [];
-							r.push(`You introduce ${him} to obedience and proper manners regarding ${his} ${WrittenMaster(slave)} before sending ${him} off for a physical.That night, ${he} 's returned to your room, and finds you doing business on a tablet in bed. ${He} looks doubtful, but obeys when you direct ${him} to get into bed${V.PC.dick === 0 ? `, even after ${he} realizes you're wearing a strap-on` : ``}. You turn out the light and spoon ${him} from behind, kissing ${his} neck and ears, cupping ${his} swollen breasts, and running your hands across ${his} pregnant belly with its taut ${slave.skin} skin. ${He}'s awkward at first but ${his} body responds to the tenderness. Before long ${he}'s humping ${his} pussy back and forth against`);
+							r.push(`You introduce ${him} to obedience and proper manners regarding ${his} ${WrittenMaster(slave)} before sending ${him} off for a physical. That night, ${he}'s returned to your room, and finds you doing business on a tablet in bed. ${He} looks doubtful, but obeys when you direct ${him} to get into bed${V.PC.dick === 0 ? `, even after ${he} realizes you're wearing a strap-on` : ``}. You turn out the light and spoon ${him} from behind, kissing ${his} neck and ears, cupping ${his} swollen breasts, and running your hands across ${his} pregnant belly with its taut ${slave.skin} skin. ${He}'s awkward at first but ${his} body responds to the tenderness. Before long ${he}'s humping ${his} pussy back and forth against`);
 							if (V.PC.dick !== 0) {
 								r.push(`your cock.`);
 							} else {
@@ -2953,7 +2952,7 @@ App.UI.newSlaveIntro = function(slave, slave2 = V.eventSlave) {
 						} else {
 							r.push(`force the reluctant ${desc}`);
 						}
-						r.push(`to lie atop your desk in front of you and go back to business.After a few minutes, you extend an idle hand and begin to fondle ${his}`);
+						r.push(`to lie atop your desk in front of you and go back to business. After a few minutes, you extend an idle hand and begin to fondle ${his}`);
 						if (slave.boobs > 2000) {
 							r.push(`massive tits,`);
 						} else if (slave.boobs > 400) {
@@ -2961,7 +2960,7 @@ App.UI.newSlaveIntro = function(slave, slave2 = V.eventSlave) {
 						} else {
 							r.push(`cute little boobs,`);
 						}
-						r.push(`continuing your work with your other hand.You quickly focus your fiddling on ${his} ${slave.nipples} nipples, the stimulation`);
+						r.push(`continuing your work with your other hand. You quickly focus your fiddling on ${his} ${slave.nipples} nipples, the stimulation`);
 						if (slave.nipples === "fuckable") {
 							if (slave.devotion > 20) {
 								r.push(`quickly engorging them around your fingers.`);
@@ -2979,7 +2978,7 @@ App.UI.newSlaveIntro = function(slave, slave2 = V.eventSlave) {
 						if (slave.devotion > 20) {
 							if (slave.fetish === "boobs") {
 								if (slave.fetishKnown === 0) {
-									r.push(`The slave quickly becomes aroused.Before long, an orgasm convulses ${his} entire body, jiggling the feminine flesh under your hand delightfully. < span class="green" > ${He} 's a breast fetishist!</span>`);
+									r.push(`The slave quickly becomes aroused. Before long, an orgasm convulses ${his} entire body, jiggling the feminine flesh under your hand delightfully. <span class="green"> ${He}'s a breast fetishist!</span>`);
 									slave.fetishKnown = 1;
 								} else {
 									r.push(`${His} breast fixation makes this teasing quite pleasurable for ${him}, almost as good as a handjob. Before long, an orgasm convulses ${his} entire body, jiggling the feminine flesh under your hand delightfully.`);
@@ -3050,7 +3049,7 @@ App.UI.newSlaveIntro = function(slave, slave2 = V.eventSlave) {
 							if (V.PC.dick !== 0) {
 								r.push(`and to finish off ${his} twitching dick`);
 							}
-							r.push(`${he} <span class="hotpink">complies meekly,</span> knowing you are the < span class="gold" > dominant force</span > in ${his} life now.`);
+							r.push(`${he} <span class="hotpink">complies meekly,</span> knowing you are the <span class="gold"> dominant force</span> in ${his} life now.`);
 							slave.devotion += 5;
 							slave.trust -= 3;
 							return r.join(" ");
@@ -3113,13 +3112,11 @@ App.UI.newSlaveIntro = function(slave, slave2 = V.eventSlave) {
 										} else {
 											r.push(`You knew ${he} had a pregnancy fetish and the look on ${his} face confirms it.`);
 										}
-										r.push(`A kick from within startles you from your thoughts; it would appear your child`);
+										r.push(`A kick from within startles you from your thoughts; it would appear your`);
 										if (V.PC.pregType > 1) {
-											r.push(`ren`);
-										}
-										r.push(`agree`);
-										if (V.PC.pregType === 1) {
-											r.push(`s`);
+											r.push(`children agree`);
+										} else {
+											r.push(`child agrees`);
 										}
 										r.push(`that you'll have to have another ride sometime.`);
 										slave.devotion += 15;
@@ -3148,9 +3145,9 @@ App.UI.newSlaveIntro = function(slave, slave2 = V.eventSlave) {
 										}
 										r.push(`milk laden breasts.`);
 									} else if (V.PC.boobs >= 1200) {
-										r.push(`huge, `);
+										r.push(`huge,`);
 										if (V.PC.boobsImplant > 0) {
-											r.push(`fake, `);
+											r.push(`fake,`);
 										}
 										r.push(`milk laden breasts.`);
 									} else if (V.PC.boobs >= 1000) {
@@ -3487,10 +3484,7 @@ App.UI.newSlaveIntro = function(slave, slave2 = V.eventSlave) {
 					linkName: `Tie ${him} up and give ${him} a good whipping`,
 					result(slave) {
 						const r = [];
-						r.push(`You cuff ${his} wrist`);
-						if (hasBothArms(slave)) {
-							r.push(`s`);
-						}
+						r.push(`You cuff ${his} wrist${hasBothArms(slave) ? 's' : ''}`);
 						r.push(`and tie the cuffs to a hook in the ceiling so ${he}'s forced up on tiptoe. Reflecting that sometimes the old ways are best, you take a whip to ${him}. It's soft leather and you have some skill, so ${his} skin isn't broken, but you lash ${his} buttocks and every stroke draws a scream. After a while, the pain grows dull for ${him} and ${he} slumps in ${his} bindings, moaning. You switch to ${his} nipples, bringing ${him} back to howling life as ${he} dances on tiptoe and tries to dodge.`);
 						if (slave.dick !== 0) {
 							r.push(`You finish by taking the whip to ${his} penis, leaving ${him} sobbing and begging.`);
@@ -3513,19 +3507,19 @@ App.UI.newSlaveIntro = function(slave, slave2 = V.eventSlave) {
 							const r = [];
 							r.push(`${He}'s not a virgin anywhere, so you'll have to go more extreme to provide a properly introductory level of sexual torture equivalent to defloration. You tie your new slave down on`);
 							if (hasAnyArms(slave)) {
-								r.push(`hand`);
 								if (hasBothArms(slave)) {
-									r.push(`s`);
+									r.push(`hands`);
+								} else {
+									r.push(`hand`);
 								}
 								if (hasAnyLegs(slave)) {
 									r.push(`and`);
 								}
 							}
-							if (hasAnyLegs(slave)) {
+							if (hasBothLegs(slave)) {
+								r.push(`knees`);
+							} else if (hasAnyLegs(slave)) {
 								r.push(`knee`);
-								if (hasBothLegs(slave)) {
-									r.push(`s`);
-								}
 							}
 							r.push(`and bring a fuckmachine up from storage. It fits over ${him} as ${he} whimpers down there on`);
 							if (hasAllLimbs(slave)) {
@@ -3558,19 +3552,19 @@ App.UI.newSlaveIntro = function(slave, slave2 = V.eventSlave) {
 							const r = [];
 							r.push(`${He}'s not an anal virgin, so you'll have to go more extreme to provide an introductory level of sexual torture equivalent to defloration. You tie your new slave down on`);
 							if (hasAnyArms(slave)) {
-								r.push(`hand`);
 								if (hasBothArms(slave)) {
-									r.push(`s`);
+									r.push(`hands`);
+								} else {
+									r.push(`hand`);
 								}
 								if (hasAnyLegs(slave)) {
 									r.push(`and`);
 								}
 							}
-							if (hasAnyLegs(slave)) {
+							if (hasBothLegs(slave)) {
+								r.push(`knees`);
+							} else if (hasAnyLegs(slave)) {
 								r.push(`knee`);
-								if (hasBothLegs(slave)) {
-									r.push(`s`);
-								}
 							}
 							r.push(`and bring a fuckmachine up from storage. It fits over ${him} as ${he} whimpers down there on`);
 							if (hasAllLimbs(slave)) {
diff --git a/src/uncategorized/RESS.tw b/src/uncategorized/RESS.tw
index 9e6128a4681..a43a9b14f7f 100644
--- a/src/uncategorized/RESS.tw
+++ b/src/uncategorized/RESS.tw
@@ -7017,7 +7017,7 @@ brought in to you. This time <<= App.UI.slaveDescriptionDialog($activeSlave)>> h
 		<</if>>
 	<</replace>>
 <</link>>
-<<if $activeSlave.buttPlug == "none" && ($activeSlave.vagina < 0 || ($activeSlave.vaginalAccessory == "none" && $activeSlave.vaginalAttachment == "none"))>>
+<<if $activeSlave.buttplug == "none" && ($activeSlave.vagina < 0 || ($activeSlave.vaginalAccessory == "none" && $activeSlave.vaginalAttachment == "none"))>>
 	<br><<link "Add dildos to $his gear">>
 		<<replace "#result">>
 			You tell $him that you understand, and that you will get $him some new clothing. $He is thrilled, but $his pleasure turns to horror when $he sees that the new clothes are a version of the same slave bondage gear, just with inward-facing dildos for $his <<if $activeSlave.vagina > -1>>pussy and <</if>> asshole.
-- 
GitLab