From 2984a454ecbe07175c381abb6080be44afbdf57a Mon Sep 17 00:00:00 2001
From: enbees <22363-en_bees@users.noreply.gitgud.io>
Date: Wed, 16 Jun 2021 21:32:20 +0000
Subject: [PATCH] typo fixes and misc

---
 CONTRIBUTING.md                               |  2 +-
 .../{eye functions.md => eyeFunctions.md}     |  0
 .../{limb functions.md => limbFunctions.md}   |  0
 devNotes/sanityCheck.md                       | 30 +++++++++----------
 src/Mods/Catmod/events/SoSassassin.tw         | 14 +++++++--
 src/endWeek/saRulesFunctions.js               |  2 +-
 src/events/RE/reBoomerang.js                  |  2 +-
 src/events/RETS/reCockmilkInterception.js     |  2 +-
 src/events/RETS/reIfYouEnjoyIt.js             |  4 +--
 src/events/gameover.tw                        |  8 +++--
 src/interaction/main/walkPast.js              |  2 +-
 src/npc/interaction/fDick.js                  | 18 +++++------
 src/npc/interaction/fLickPussy.js             | 20 ++++++-------
 src/npc/interaction/fondleButt.js             |  2 +-
 src/npc/interaction/fondleVagina.js           |  5 +---
 .../interaction/passage/fSlaveSlaveDick.js    | 19 ++++++------
 src/npc/interaction/passage/fSlaveSlaveVag.js |  8 ++---
 17 files changed, 75 insertions(+), 63 deletions(-)
 rename devNotes/{eye functions.md => eyeFunctions.md} (100%)
 rename devNotes/{limb functions.md => limbFunctions.md} (100%)

diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 577bcb95858..758a314f0e3 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -169,7 +169,7 @@ errors, it's not totally clean as is and there are a few false positives.
   * [Twine (Twine is being phased out of the project however the concepts are still relevant)](devNotes/scene-guide.txt)
   * [JavaScript](devNotes/jsEventCreationGuide.md)
 * [Exception handling](devNotes/exceptions.md)
-* [Sanity check](devNotes/exceptions.md)
+* [Sanity check](devNotes/sanityCheck.md)
 * [Slave List](devNotes/slaveListing.md)
 * [Pronouns](devNotes/Pronouns.md)
 * External function documentation
diff --git a/devNotes/eye functions.md b/devNotes/eyeFunctions.md
similarity index 100%
rename from devNotes/eye functions.md
rename to devNotes/eyeFunctions.md
diff --git a/devNotes/limb functions.md b/devNotes/limbFunctions.md
similarity index 100%
rename from devNotes/limb functions.md
rename to devNotes/limbFunctions.md
diff --git a/devNotes/sanityCheck.md b/devNotes/sanityCheck.md
index 9e13bcc2f27..0bbaf56c6ec 100644
--- a/devNotes/sanityCheck.md
+++ b/devNotes/sanityCheck.md
@@ -12,13 +12,13 @@ of `git grep` calls using regex to find typical errors. The second parts is a ja
 The java check has 3 main parts:
 
 1.  A checks for correct closure of all SugarCube macros and HTML tags in the
-	.tw files.
+    .tw files.
 
 2.  A check to find variable names that are only used once to find misspelled
-	variables and leftovers from removed variables.
+    variables and leftovers from removed variables.
 
 3.  A search through all files against a dictionary to find common misspellings
-	and deprecated code.
+    and deprecated code.
 
 ### Maintenance
 
@@ -26,28 +26,28 @@ In order to keep the number of false positives to a minimum this check has to be
 regularly maintained:
 
 1.  When new macros or HTML tags are introduced in the project code they have to
-	be added to `devTools/javaSanityCheck/twineTags` or
-	`devTools/javaSanityCheck/htmlTags`.
+    be added to `devTools/javaSanityCheck/twineTags` or
+    `devTools/javaSanityCheck/htmlTags`.
 
 2.  When removing variables they often have a reference left in some kind of BC
-	related code. This is a common example when a false positive occurs and that
-	variable has to be added to `devTools/javaSanityCheck/ignoredVariables`.
+    related code. This is a common example when a false positive occurs and that
+    variable has to be added to `devTools/javaSanityCheck/ignoredVariables`.
 
 3.  When fully removing variables that were ignored, they have to be removed
-	from `devTools/javaSanityCheck/ignoredVariables` too.
+    from `devTools/javaSanityCheck/ignoredVariables` too.
 
 4.  When adding variables it can happen that only one usage is identified by the
-	check, which means that it throws a false positive. To remove this add the
-	variable to `devTools/javaSanityCheck/ignoredVariables`. When the variable
-	is used in more places later and found more than once it has to be removed
-	again to keep the check as efficient as possible.
+    check, which means that it throws a false positive. To remove this add the
+    variable to `devTools/javaSanityCheck/ignoredVariables`. When the variable
+    is used in more places later and found more than once it has to be removed
+    again to keep the check as efficient as possible.
 
 5.  When you find common missspellings you can add them to
-	`devTools/dictionary_phrases.txt` or `devTools/dictionary_wholeWord.txt`.
+    `devTools/dictionary_phrases.txt` or `devTools/dictionary_wholeWord.txt`.
 
 6.  When a file produces so many false positives that they are impossible to
-	clean up it may be added to `devTools/javaSanityCheck/excluded`.
+    clean up it may be added to `devTools/javaSanityCheck/excluded`.
 
 ### Source code
 
-The source code can either be found at [gitgud.io](https://gitgud.io/Arkerthan/twine-sanitycheck). 
+The source code can be found at [gitgud.io](https://gitgud.io/Arkerthan/twine-sanitycheck).
diff --git a/src/Mods/Catmod/events/SoSassassin.tw b/src/Mods/Catmod/events/SoSassassin.tw
index 2aa578b2521..cf5746fa5ae 100644
--- a/src/Mods/Catmod/events/SoSassassin.tw
+++ b/src/Mods/Catmod/events/SoSassassin.tw
@@ -68,7 +68,13 @@ As you stroll through your market district in the afternoon, checking up on your
         <</if>>
     <<else>>
         <<if $PC.skill.warfare >= 100 && $personalArms > 0>>
-			There's nothing standing between you two. You level your handgun onto her, but she's just a microsecond faster, kicking the gun out of your hand with a painfully powerful strike that sends the pistol clattering onto the ground a few feet away. Before you can dive for it, she's thrusting her knife up towards your throat. Your combat instincts kick in and you wrench your head to the side, the blade nicking you on the cheek, and grab her by the wrist, throwing a hard punch into her ribcage. The assassin forces her hand free and stumbles back, seemingly surprised that you're holding your own against her. "Bhalwi al-sham asmik qalbik. I was told you could fight." She mumbles. You glance at your handgun on the ground as she drops into a combat stance and lunges towards you a second time. You barely catch her wrist as she thrusts the knife at your stomach, forcing her hand off to the side, and she responds by slamming a kick into your ankle, rearing her hand back for another strike as you reel. You narrowly deflect strike after strike as she jabs the knife towards your vitals, the sharp steel cutting and scraping your skin as you hold off the better-armed assailant, until she pulls back and brutally kicks you in the ribs as you block a jab, sending you slamming against the hard ground of the marketplace. Coughing a trace of blood, you roll to the side towards your discarded handgun as the assassin lunges atop you, pinning you down. She's got an insane look in her pretty eyes as she raises the knife, shouting "Abna Sakhmat damkun!" You reach your hand to the side as far as you can get it, narrowly grasp your fingers around your handgun, and whip it back to fire a single round, the last round in the magazine, through the assassin straddling your chest. She gasps once, and then slumps off, an instant before having plunged the knife into your heart. Covered in blood, you push the corpse off, stand up, brush yourself off, and tell the @@.green;shocked and amazed@@ citizens of the marketplace that this is just another day in your life. Someone awkwardly applauds as the security drones arrive.
+			There's nothing standing between you two. You level your handgun onto her, but she's just a microsecond faster, kicking the gun out of your hand with a painfully powerful strike that sends the pistol clattering onto the ground a few feet away. Before you can dive for it, she's thrusting her knife up towards your throat. Your combat instincts kick in and you wrench your head to the side, the blade nicking you on the cheek, and grab her by the wrist, throwing a hard punch into her ribcage. The assassin forces her hand free and stumbles back, seemingly surprised that you're holding your own against her.
+			<br>
+			"Bhalwi al-sham asmik qalbik. I was told you could fight." She mumbles.
+			<br>
+			You glance at your handgun on the ground as she drops into a combat stance and lunges towards you a second time. You barely catch her wrist as she thrusts the knife at your stomach, forcing her hand off to the side, and she responds by slamming a kick into your ankle, rearing her hand back for another strike as you reel. You narrowly deflect strike after strike as she jabs the knife towards your vitals, the sharp steel cutting and scraping your skin as you hold off the better-armed assailant, until she pulls back and brutally kicks you in the ribs as you block a jab, sending you slamming against the hard ground of the marketplace. Coughing a trace of blood, you roll to the side towards your discarded handgun as the assassin lunges atop you, pinning you down. She's got an insane look in her pretty eyes as she raises the knife, shouting "Abna Sakhmat damkun!" You reach your hand to the side as far as you can get it, narrowly grasp your fingers around your handgun, and whip it back to fire a single round, the last round in the magazine, through the assassin straddling your chest. She gasps once, and then slumps off, an instant before having plunged the knife into your heart.
+			<br>
+			Covered in blood, you push the corpse off, stand up, brush yourself off, and tell the @@.green;shocked and amazed@@ citizens of the marketplace that this is just another day in your life. Someone awkwardly applauds as the security drones arrive.
 			<<run cashX(-1000, "event")>>
 			<<run repX(2500, "event")>>
         <<else>>
@@ -119,7 +125,11 @@ As you stroll through your market district in the afternoon, checking up on your
 			<<run cashX(-1000, "event", _S.Bodyguard)>>
 			<<run repX(2500, "event", _S.Bodyguard)>>
         <<elseif $personalArms > 0 && $PC.skill.warfare >= 60>>
-			The two killers clash, but it's immediately apparent who's better trained. The assassin blocks every strike coming from _S.Bodyguard.slaveName and hits back twice as hard, forcing $him on the defensive. When _S.Bodyguard.slaveName stumbles, the assassin furiously kicks the blade out from $his hand and leaps atop $him, slashing _S.Bodyguard.slaveName's throat in a single, clean motion as you clutch your arm on the ground and fumble with your handgun, grimacing from the pain. Covered in blood, the assassin stands over _S.Bodyguard.slaveName's corpse and approaches you, smiling psychotically. "Bhalwi al-sham asmik qalbik, dog." The assassin spits, lunging towards you. You can barely muster the strength to raise your handgun, one bullet left in the chamber, and blow a round through her chest before she lands. Killed in midair, the assassin's corpse falls against you as you pass out from blood loss, citizens in the marketplace rushing to your unconscious body and calling for medical help. You'll live, but your bodyguard @@.red;wasn't so lucky.@@
+			The two killers clash, but it's immediately apparent who's better trained. The assassin blocks every strike coming from _S.Bodyguard.slaveName and hits back twice as hard, forcing $him on the defensive. When _S.Bodyguard.slaveName stumbles, the assassin furiously kicks the blade out from $his hand and leaps atop $him, slashing _S.Bodyguard.slaveName's throat in a single, clean motion as you clutch your arm on the ground and fumble with your handgun, grimacing from the pain. Covered in blood, the assassin stands over _S.Bodyguard.slaveName's corpse and approaches you, smiling psychotically.
+			<br>
+			"Bhalwi al-sham asmik qalbik, dog." The assassin spits, lunging towards you.
+			<br>
+			You can barely muster the strength to raise your handgun, one bullet left in the chamber, and blow a round through her chest before she lands. Killed in midair, the assassin's corpse falls against you as you pass out from blood loss, citizens in the marketplace rushing to your unconscious body and calling for medical help. You'll live, but your bodyguard @@.red;wasn't so lucky.@@
 			<<run cashX(-1000, "event", _S.Bodyguard), healthDamage(_S.Bodyguard, 1000)>>
 			<<= removeSlave(_S.Bodyguard)>>
         <<else>>
diff --git a/src/endWeek/saRulesFunctions.js b/src/endWeek/saRulesFunctions.js
index 8cec6e1cd83..9a9f3ee3068 100644
--- a/src/endWeek/saRulesFunctions.js
+++ b/src/endWeek/saRulesFunctions.js
@@ -309,7 +309,7 @@ App.EndWeek.Rules.playerDrugEffects = function(slave) {
 					slave.trust += 2;
 				} else {
 					el.append(`${His} terribly swollen balls force ${him} to come to you for release several times a day, and ${he} `);
-					App.UI.DOM.appendNewElement("span", el, `learns to rely`, "mediumaquamarine");
+					App.UI.DOM.appendNewElement("span", el, `learns to rely `, "mediumaquamarine");
 					if (slave.anus > 0 && canDoAnal(slave) && App.EndWeek.saVars.freeSexualEnergy > 0) {
 						el.append(`on your `);
 						if (V.PC.dick === 0) {
diff --git a/src/events/RE/reBoomerang.js b/src/events/RE/reBoomerang.js
index e2734356d57..990907e9bde 100644
--- a/src/events/RE/reBoomerang.js
+++ b/src/events/RE/reBoomerang.js
@@ -740,7 +740,7 @@ App.Events.REBoomerang = class REBoomerang extends App.Events.BaseEvent {
 				}
 				break;
 			case "monster movie":
-				r.push(`You sold ${him} to a film studio to act as a double for a famous actress where ${he} was used installed with a massive fake pregnancy for the ending.`);
+				r.push(`You sold ${him} to a film studio to act as a double for a famous actress where ${he} was installed with a massive fake pregnancy for the ending.`);
 				r.push(Spoken(slave, `"It's too big... Can't breath right... Was going to be sold... Since I was a disposable prop... I'd rather be your prop."`));
 				r.push(`${He} returns to wheezing against the solid mass bulging from ${his} middle.`);
 				healthDamage(slave, random(60, 70));
diff --git a/src/events/RETS/reCockmilkInterception.js b/src/events/RETS/reCockmilkInterception.js
index b8e6b31138a..b41c2dc5200 100644
--- a/src/events/RETS/reCockmilkInterception.js
+++ b/src/events/RETS/reCockmilkInterception.js
@@ -215,7 +215,7 @@ App.Events.RETSCockmilkInterception = class RETSCockmilkInterception extends App
 			} else if (!canAchieveErection(subSlave)) {
 				t.push(`Since ${slave.slaveName} can't jack off a soft shaft, ${he}'s using one hand to stroke the soft, precum-slick skin below ${subSlave.slaveName}'s anus.`);
 			} else {
-				t.push(`{He}'s using one hand to stroke the hard shaft outside ${his} wet lips, using ${his} saliva and ${subSlave.slaveName}'s precum to perform a messy handjob.`);
+				t.push(`${He}'s using one hand to stroke the hard shaft outside ${his} wet lips, using ${his} saliva and ${subSlave.slaveName}'s precum to perform a messy handjob.`);
 			}
 		}
 		if (hasBothArms(slave)) {
diff --git a/src/events/RETS/reIfYouEnjoyIt.js b/src/events/RETS/reIfYouEnjoyIt.js
index 25990d6d28c..f88d45b98f6 100644
--- a/src/events/RETS/reIfYouEnjoyIt.js
+++ b/src/events/RETS/reIfYouEnjoyIt.js
@@ -183,7 +183,7 @@ App.Events.RETSIfYouEnjoyIt = class RETSIfYouEnjoyIt extends App.Events.BaseEven
 			App.Events.addParagraph(frag, t);
 			t = [];
 
-			t.push(`${eventSlave.slaveName} laughs unpleasantly at the desperately uncomfortable eventSlave, and ${say}s,`);
+			t.push(`${eventSlave.slaveName} laughs unpleasantly at the desperately uncomfortable ${subSlave.slaveName}, and ${say}s,`);
 			t.push(Spoken(eventSlave, `"Tell you what, slut. I'll leave you alone if this doesn't get you off."`));
 			t.push(`Already realizing ${his2} predicament, ${subSlave.slaveName} begins to protest, but ${eventSlave.slaveName} cuts ${him2} off.`);
 			t.push(Spoken(eventSlave, `"Shut your fucking cockholster, bitch, I'm talking. I'll leave you alone if this doesn't get you off, but if you come, you've obviously been lying to me, and you obviously want me to buttfuck you all night long."`));
@@ -217,7 +217,7 @@ App.Events.RETSIfYouEnjoyIt = class RETSIfYouEnjoyIt extends App.Events.BaseEven
 		function join() {
 			t= [];
 
-			t.push(`You advance on the slaves. ${eventSlave.slaveName}, who has a devoted eventSlave's sixth sense about ${his} ${getWrittenTitle(eventSlave)}'s presence, realizes you're there and turns toward you.`);
+			t.push(`You advance on the slaves. ${eventSlave.slaveName}, who has a devoted slave's sixth sense about ${his} ${getWrittenTitle(eventSlave)}'s presence, realizes you're there and turns toward you.`);
 			if (canSee(eventSlave)) {
 				t.push(`Silently but forcefully, you use a simple hand gesture to instruct ${him} unequivocally`);
 			} else {
diff --git a/src/events/gameover.tw b/src/events/gameover.tw
index 02c75526319..c8d85fc4c14 100644
--- a/src/events/gameover.tw
+++ b/src/events/gameover.tw
@@ -21,7 +21,9 @@
 		<br><br>
 		The instant your eyes leave the pretty woman, $assistant.name pings an alarm in your ear and two men on opposite sides of the marketplace spin on their heels towards you, pulling compact battle rifles from inside their jackets and screaming something in a foreign language. Your bodyguard quickly fires into the first assassin's chest, then snaps around and blasts the second one before either man can fire.
 		<br>
-		As the two would-be assassins collapse, the pretty woman draws a vicious-looking curved knife from her sleeve, swears in a foreign language, and lunges towards you. She's intercepted by _S.Bodyguard.slaveName, who drops $his empty firearm on the ground to pull $his own sword free. The two killers clash, but it's immediately apparent who's better trained. The assassin blocks every strike coming from _S.Bodyguard.slaveName and hits back twice as hard, forcing $him on the defensive. When _S.Bodyguard.slaveName stumbles, the assassin furiously kicks the blade out from $his hand and leaps atop $him, slashing _S.Bodyguard.slaveName's throat in a single, clean motion as you clutch your arm on the ground and fumble with your handgun, grimacing from the pain. Covered in blood, the assassin stands over _S.Bodyguard.slaveName's corpse and approaches you, smiling psychotically. "Bhalwi al-sham asmik qalbik, dog." The assassin spits, lunging towards you.
+		As the two would-be assassins collapse, the pretty woman draws a vicious-looking curved knife from her sleeve, swears in a foreign language, and lunges towards you. She's intercepted by _S.Bodyguard.slaveName, who drops $his empty firearm on the ground to pull $his own sword free. The two killers clash, but it's immediately apparent who's better trained. The assassin blocks every strike coming from _S.Bodyguard.slaveName and hits back twice as hard, forcing $him on the defensive. When _S.Bodyguard.slaveName stumbles, the assassin furiously kicks the blade out from $his hand and leaps atop $him, slashing _S.Bodyguard.slaveName's throat in a single, clean motion as you clutch your arm on the ground and fumble with your handgun, grimacing from the pain. Covered in blood, the assassin stands over _S.Bodyguard.slaveName's corpse and approaches you, smiling psychotically.
+		<br>
+		"Bhalwi al-sham asmik qalbik, dog." The assassin spits, lunging towards you.
 		<br>
 		In your last moments alive before the Sekhmeti assassin straddles you and plunges her knife into your heart in front of your watching marketplace, you idly wish that you'd bought a handgun.
 
@@ -32,7 +34,9 @@
 		<br><br>
 		The instant your eyes leave the pretty woman, $assistant.name pings an alarm in your ear and two men on opposite sides of the marketplace spin on their heels towards you, pulling compact battle rifles from inside their jackets and screaming something in a foreign language. You snap your handgun out of its holster and fire three rounds into one of their chests.
 		<br>
-		As the two would-be assassins collapse, the pretty woman draws a vicious-looking curved knife from her sleeve, swears in a foreign language, and lunges towards you. There's nothing standing between you two. You level your handgun onto her, but she's like a blur, kicking it out of your hand with enough force it feels like your hand shattered. The assassin grins psychotically at you and flourishes her curved knife as you reel back. "Bhalwi al-sham asmik qalbik, dog." The Sekhmeti assassin spits, before lunging forward one last time to slash her knife up into your throat. A moment later, everything goes black.
+		As the two would-be assassins collapse, the pretty woman draws a vicious-looking curved knife from her sleeve, swears in a foreign language, and lunges towards you. There's nothing standing between you two. You level your handgun onto her, but she's like a blur, kicking it out of your hand with enough force it feels like your hand shattered. The assassin grins psychotically at you and flourishes her curved knife as you reel back.
+		<br>
+		"Bhalwi al-sham asmik qalbik, dog." The Sekhmeti assassin spits, before lunging forward one last time to slash her knife up into your throat. A moment later, everything goes black.
 
 	<<case "snipedbysons">>
 		It's a particularly nice day out and you've decided to visit some of the more prominent citizens of your arcology, the kind of people you might call 'friends' if genuine friendship wasn't a quick way to get stabbed in the back in the Free Cities. As you're having a pleasant conversation with one of these notables on the raised porch of his luxurious apartment, $assistant.name pings you with an urgent message: DUCK.
diff --git a/src/interaction/main/walkPast.js b/src/interaction/main/walkPast.js
index 554c566d7a3..d69c1a22a1e 100644
--- a/src/interaction/main/walkPast.js
+++ b/src/interaction/main/walkPast.js
@@ -2615,7 +2615,7 @@ globalThis.walkPast = (function() {
 				t += `As ${he} moves, ${his} clubslut netting moves with ${him}, leaving nothing to the imagination.`;
 				break;
 			case "a cheerleader outfit":
-				t += `As ${he} moves, ${his} pleated cheerleader bounces up and down flirtatiously.`;
+				t += `As ${he} moves, ${his} pleated cheerleader skirt bounces up and down flirtatiously.`;
 				break;
 			case "cutoffs and a t-shirt":
 				t += `As ${he} moves, ${his} cutoffs hug ${his} butt.`;
diff --git a/src/npc/interaction/fDick.js b/src/npc/interaction/fDick.js
index 987b2df3703..fee933a5de7 100644
--- a/src/npc/interaction/fDick.js
+++ b/src/npc/interaction/fDick.js
@@ -177,7 +177,7 @@ App.Interact.fDick = function(slave) {
 				} else {
 					r.push(`rectal`);
 				}
-				r.push(`spasms, and unloads${_load} inside of you before apologizing submissively.`);
+				r.push(`spasms, and unloads ${_load} inside of you before apologizing submissively.`);
 			} else if (slave.trust <= 20) {
 				r.push(`Having followed your instructions quickly and obediently, ${he} tries ${his} best to please you while you bounce`);
 				if (V.PC.belly >= 5000) {
@@ -189,7 +189,7 @@ App.Interact.fDick = function(slave) {
 				} else {
 					r.push(`rectal`);
 				}
-				r.push(`spasms, and unloads${_load} into you before helping you up.`);
+				r.push(`spasms, and unloads ${_load} into you before helping you up.`);
 			} else {
 				r.push(`Having followed your instructions with gusto, ${he} energetically pounds you while you bounce`);
 				if (V.PC.belly >= 5000) {
@@ -201,7 +201,7 @@ App.Interact.fDick = function(slave) {
 				} else {
 					r.push(`rectal`);
 				}
-				r.push(`spasms, and unloads${_load} into you before pulling you into a post coitus embrace.`);
+				r.push(`spasms, and unloads ${_load} into you before pulling you into a post coitus embrace.`);
 			}
 		} else if (slave.devotion >= -20) {
 			if (slave.trust < -20) {
@@ -215,7 +215,7 @@ App.Interact.fDick = function(slave) {
 				} else {
 					r.push(`rectal`);
 				}
-				r.push(`spasms, and blows${_load} in you like a good little slave.`);
+				r.push(`spasms, and blows ${_load} in you like a good little slave.`);
 			} else if (slave.trust <= 20) {
 				r.push(`Having obediently followed your instructions, ${he} lies as still as ${he} can beneath you while you bounce`);
 				if (V.PC.belly >= 5000) {
@@ -227,7 +227,7 @@ App.Interact.fDick = function(slave) {
 				} else {
 					r.push(`rectal`);
 				}
-				r.push(`spasms and boldness, and blows${_load} in you during the confusion.`);
+				r.push(`spasms and boldness, and blows ${_load} in you during the confusion.`);
 			} else {
 				r.push(`Having obediently followed your instructions, ${he} energetically pounds you while you bounce`);
 				if (V.PC.belly >= 5000) {
@@ -253,7 +253,7 @@ App.Interact.fDick = function(slave) {
 				} else {
 					r.push(`rectal`);
 				}
-				r.push(`spasms, and unloads${_load} inside of you despite ${his} fear.`);
+				r.push(`spasms, and unloads ${_load} inside of you despite ${his} fear.`);
 			} else if (slave.trust <= 20) {
 				r.push(`Having followed your instructions as quickly as ${he} could, ${he} lies as still as ${he} can beneath you while you bounce`);
 				if (V.PC.belly >= 5000) {
@@ -265,12 +265,12 @@ App.Interact.fDick = function(slave) {
 				} else {
 					r.push(`rectal`);
 				}
-				r.push(`spasms, and unloads${_load} deep inside you without warning. ${He} <span class="orangered">smirks a little</span> as you glare daggers at ${him}.`);
+				r.push(`spasms, and unloads ${_load} deep inside you without warning. ${He} <span class="orangered">smirks a little</span> as you glare daggers at ${him}.`);
 				slave.trust++;
 			} else if (overpowerCheck(slave, V.PC) < random(1, 100)) {
 				r.push(`Without warning, ${he} flips you onto your side and, still hilted,`);
 				if (slave.belly >= 300000) {
-					r.push(`repositions you onto your hands and knees while using ${his}${_belly} belly to pin you under ${him}.`);
+					r.push(`repositions you onto your hands and knees while using ${his} ${_belly} belly to pin you under ${him}.`);
 				} else if (V.PC.belly >= 5000) {
 					r.push(`rolls you into missionary while pinning your arms and legs.`);
 				} else if (V.PC.boobs >= 1000) {
@@ -373,7 +373,7 @@ App.Interact.fDick = function(slave) {
 		r.push(`You reach back`);
 
 		if (slave.scrotum > 0) {
-			r.push(`and stroke ${his}${_nutte} balls.`);
+			r.push(`and stroke ${his} ${_nutte} balls.`);
 		} else if (slave.vagina > -1) {
 			r.push(`and tease ${his} neglected pussy.`);
 		} else {
diff --git a/src/npc/interaction/fLickPussy.js b/src/npc/interaction/fLickPussy.js
index e68c79a7bc3..334f90f4e41 100644
--- a/src/npc/interaction/fLickPussy.js
+++ b/src/npc/interaction/fLickPussy.js
@@ -77,13 +77,13 @@ App.Interact.fLickPussy = function(slave) {
 	} else if (slave.weight > 95) {
 		r.push(`as you get familiar with ${his} fat belly.`);
 	} else if (slave.muscles > 30) {
-		r.push(`as you get familiar with ${his} prominent abs.`)
+		r.push(`as you get familiar with ${his} prominent abs.`);
 	} else if (slave.weight > 30) {
-		r.push(`as you get familiar with ${his} soft belly.`)
+		r.push(`as you get familiar with ${his} soft belly.`);
 	} else if (slave.muscles > 10) {
-		r.push(`as you get familiar with ${his} toned, smooth belly.`)
+		r.push(`as you get familiar with ${his} toned, smooth belly.`);
 	} else {
-		r.push(`as you get familiar with ${his} smooth belly.`)
+		r.push(`as you get familiar with ${his} smooth belly.`);
 	}
 
 	r.push(`Looking ${him} directly in the eyes, you begin to run your tongue along ${his} labia, drawing a`);
@@ -96,17 +96,17 @@ App.Interact.fLickPussy = function(slave) {
 	if (areRelated(slave, V.PC)) {
 		r.push(`${his} ${relativeTerm(slave, V.PC)}`);
 	} else {
-		r.push(`the ${womanP} ${he}`);
+		r.push(`the ${womanP}`);
 		if (_devotion > 95) {
-			r.push(`loves`);
+			r.push(`${he} loves`);
 		} else if (_devotion > 50) {
-			r.push(`'s accepted as ${his} ${getWrittenTitle(slave)}`);
+			r.push(`${he}'s accepted as ${his} ${getWrittenTitle(slave)}`);
 		} else if (_devotion < -50) {
-			r.push(`hates`);
+			r.push(`${he} hates`);
 		} else if (slave.trust < -50) {
-			r.push(`fears`);
+			r.push(`${he} fears`);
 		} else {
-			r.push(`is enslaved to`)
+			r.push(`${he} is enslaved to`);
 		}
 	}
 	r.push(`makes ${him} blush, but you don't let up.`);
diff --git a/src/npc/interaction/fondleButt.js b/src/npc/interaction/fondleButt.js
index 1962ccbbd35..54b0eb0a2d1 100644
--- a/src/npc/interaction/fondleButt.js
+++ b/src/npc/interaction/fondleButt.js
@@ -672,7 +672,7 @@ App.Interact.fondleButt = function(slave) {
 		} else {
 			r.push(`angles ${his} head to face you`);
 		}
-		r.push(`ecstatically${hasAnyLegs(slave) ? `as ${he} stands up` : ``}, eager for more.`);
+		r.push(`ecstatically${hasAnyLegs(slave) ? ` as ${he} stands up` : ``}, eager for more.`);
 	}
 	App.Events.addParagraph(node, r);
 	return node;
diff --git a/src/npc/interaction/fondleVagina.js b/src/npc/interaction/fondleVagina.js
index 444d1d1a0dc..dfbe707e48f 100644
--- a/src/npc/interaction/fondleVagina.js
+++ b/src/npc/interaction/fondleVagina.js
@@ -657,10 +657,7 @@ App.Interact.fondleVagina = function(slave) {
 		}
 		r.push(`as your hand nears it. ${He}`);
 		if (hasAnyLegs(slave)) {
-			r.push(`squeezes ${his} thigh`);
-			if (hasBothLegs(slave)) {
-				r.push(`s`);
-			}
+			r.push(`squeezes ${his} thighs${hasBothLegs(slave) ? `s` : ``}`);
 		} else {
 			r.push(`pushes`);
 		}
diff --git a/src/npc/interaction/passage/fSlaveSlaveDick.js b/src/npc/interaction/passage/fSlaveSlaveDick.js
index 3cbb861ba79..e2506bc63e1 100644
--- a/src/npc/interaction/passage/fSlaveSlaveDick.js
+++ b/src/npc/interaction/passage/fSlaveSlaveDick.js
@@ -268,12 +268,12 @@ App.Interact.fSlaveSlaveDick = function(slave) {
 		}
 
 		App.Events.addParagraph(el, r);
-		r= [];
+		r = [];
 
 		r.push(`You call ${rapist.slaveName} into the room.`);
 
 		App.Events.addParagraph(el, r);
-		r= [];
+		r = [];
 
 		if (slave.fetish === "mindbroken" && slave.career !== "a dairy cow" && slave.career !== "a breeding bull") {
 			r.push(`${slave.slaveName} doesn't even notice`);
@@ -464,6 +464,7 @@ App.Interact.fSlaveSlaveDick = function(slave) {
 						}
 					}
 				} else {
+					r.push(`${his} chosen partner.`);
 					if (slave.devotion > 95) {
 						r.push(`${His} deep acceptance of slavery means ${he} is eager to please you,`);
 						if (slave.clit >= 4) {
@@ -505,7 +506,7 @@ App.Interact.fSlaveSlaveDick = function(slave) {
 		}
 
 		App.Events.addParagraph(el, r);
-		r= [];
+		r = [];
 
 		if (rapist.fetish === "mindbroken" && rapist.career !== "a dairy cow" && rapist.career !== "a breeding bull") {
 			r.push(`${rapist.slaveName} stares blankly, and needs to be deliberately guided to straddle ${slave.slaveName}.`);
@@ -581,7 +582,7 @@ App.Interact.fSlaveSlaveDick = function(slave) {
 							_incestMood = "Both";
 						} else {
 							_incestMood = "Top";
-							r.push(`as well as ${his} worried expressions. ${rapist.slaveName} seems aroused and determined to show ${him} how a proper slave should act.`);
+							r.push(`as well as ${his} worried expression. ${rapist.slaveName} seems aroused and determined to show ${him} how a proper slave should act.`);
 						}
 					} else if (rapist.devotion > 60) {
 						if (_incestMood === "BottomFragile") {
@@ -633,7 +634,7 @@ App.Interact.fSlaveSlaveDick = function(slave) {
 						}
 					} else if (rapist.devotion > 20) {
 						if (_incestMood === "BottomFragile") {
-							 _incestMood = "";
+							_incestMood = "";
 						}
 						r.push(`and after figuring out they're just as superficially prepared as ${he2} is, resolves ${himself2} to try and make it pleasurable.`);
 					} else {
@@ -701,7 +702,7 @@ App.Interact.fSlaveSlaveDick = function(slave) {
 		}
 
 		App.Events.addParagraph(el, r);
-		r= [];
+		r = [];
 
 		if (slave.devotion < -20 && rapist.devotion < -20) {
 			r.push(`Since you have two restrained slaves, it's up to you to do all the work. Since ${slave.slaveName} is already lying on the bed, you maneuver ${rapist.slaveName}'s pussy into place. The two slaves make no further moves until you deal ${rapist.slaveName} a terrific swat across the ass and promise to give ${him2} more of the same until ${he2} gets going. ${rapist.slaveName} starts lowering ${himself2} very slowly, pulling back every time ${slave.slaveName}'s dick prods ${his2} womanhood. After watching the sad display for a while, you grab ${him2} by the hips and slam ${him2} down onto ${slave.slaveName}, hilting ${him2} in one, scream-inducing move.`);
@@ -841,7 +842,7 @@ App.Interact.fSlaveSlaveDick = function(slave) {
 				}
 			}/* closes losing virginity */
 
-			r.push(`${He2} begins playing with ${him} immediately, slapping, pinching and licking ${his} boobs while bouncing on the meaty shaft. Occasionally ${he2} stops, denying ${slave.slaveName} release by painfully squeezing and smacking the sensitive shaft. By the end of the session ${slave.slaveName}'s abused, pent-up penis has shot several massive and painful loads into the blissfully satisfied ${rapist.slaveName}, leaving ${him} lying on the bed, shaking in horror and <span class="health dec">utter exhaustion,</span> while rapist.slaveName reaps the opportunity to continue painfully tormenting ${him}.`);
+			r.push(`${He2} begins playing with ${him} immediately, slapping, pinching and licking ${his} boobs while bouncing on the meaty shaft. Occasionally ${he2} stops, denying ${slave.slaveName} release by painfully squeezing and smacking the sensitive shaft. By the end of the session ${slave.slaveName}'s abused, pent-up penis has shot several massive and painful loads into the blissfully satisfied ${rapist.slaveName}, leaving ${him} lying on the bed, shaking in horror and <span class="health dec">utter exhaustion,</span> while ${rapist.slaveName} reaps the opportunity to continue painfully tormenting ${him}.`);
 
 			healthDamage(slave, 10);
 			slave.counter.penetrative += 3;
@@ -1229,7 +1230,7 @@ App.Interact.fSlaveSlaveDick = function(slave) {
 				rapist.counter.anal++;
 				V.analTotal++;
 				if (canImpreg(rapist, V.PC)) {
-					knockMeUp(rapist, 5, 1, -1, true);
+					knockMeUp(rapist, 5, 1, -1);
 				}
 			} else if (canDoVaginal(slave)) {
 				r.push(`penetrate ${slave.slaveName}'s free pussy with your`);
@@ -1257,7 +1258,7 @@ App.Interact.fSlaveSlaveDick = function(slave) {
 		}
 
 		App.Events.addParagraph(el, r);
-		r= [];
+		r = [];
 
 		slave.counter.penetrative += 1;
 		V.penetrativeTotal += 1;
diff --git a/src/npc/interaction/passage/fSlaveSlaveVag.js b/src/npc/interaction/passage/fSlaveSlaveVag.js
index e8a4820a47b..5285c5432fe 100644
--- a/src/npc/interaction/passage/fSlaveSlaveVag.js
+++ b/src/npc/interaction/passage/fSlaveSlaveVag.js
@@ -354,7 +354,7 @@ App.Interact.fSlaveSlaveVag = function(slave) {
 		} else if (tooBigBreasts(slave)) {
 			r.push(`You set ${him} up for ${rapist.slaveName}, face-down so the weight of ${his} tits pins ${him} helplessly in place.`);
 		} else if (tooBigButt(slave)) {
-			r.push(`You set ${him} up for ${rapist.slaveName}, face-down so the weight of ${his} giant ass pins ${him} helplessly in place and gives rapist.slaveName a lovely cushion to thrust against.`);
+			r.push(`You set ${him} up for ${rapist.slaveName}, face-down so the weight of ${his} giant ass pins ${him} helplessly in place and gives ${rapist.slaveName} a lovely cushion to thrust against.`);
 		} else if (tooBigDick(slave)) {
 			r.push(`You set ${him} up for ${rapist.slaveName}, face-up so ${he} is pinned under the weight of ${his} giant cock.`);
 		} else if (tooBigBalls(slave)) {
@@ -379,7 +379,7 @@ App.Interact.fSlaveSlaveVag = function(slave) {
 			} else {
 				r.push(`strap-on`);
 			}
-			r.push(`into place. The two slaves make no further moves until you deal ${rapist.slaveName} a terrific swat across the ass and promise to give ${him2} more of the same until ${he2} gets going. rapist.slaveName starts moving very slowly, barely prodding. After watching them mechanically go at it for a while, you use your leg to suddenly push ${him2} deep into ${slave.slaveName}, fully hilting ${him2} in one motion. You occasionally prod them with an electrical jolt to keep them going at a faster pace. Both slaves resent what you made them do for you and fear you'll make them do it again.`);
+			r.push(`into place. The two slaves make no further moves until you deal ${rapist.slaveName} a terrific swat across the ass and promise to give ${him2} more of the same until ${he2} gets going. ${rapist.slaveName} starts moving very slowly, barely prodding. After watching them mechanically go at it for a while, you use your leg to suddenly push ${him2} deep into ${slave.slaveName}, fully hilting ${him2} in one motion. You occasionally prod them with an electrical jolt to keep them going at a faster pace. Both slaves resent what you made them do for you and fear you'll make them do it again.`);
 		} else if (rapist.devotion < -20) {
 			r.push(`Since your dick slave is restrained, you order ${slave.slaveName} to present ${himself} on the bed, and then maneuver ${rapist.slaveName}'s`);
 			if (rapist.dick > 0) {
@@ -389,7 +389,7 @@ App.Interact.fSlaveSlaveVag = function(slave) {
 			}
 			r.push(`into place. ${slave.slaveName} does ${his} best to hump ${himself} against the unwilling cock until you deal ${rapist.slaveName} a terrific swat across the ass and promise to give ${him2} more of the same until ${he2} gets going. ${He2} is still unenthusiastic, so you have ${him2} lie down and have ${slave.slaveName} ride ${himself} to orgasm. ${He2} resents what you made ${him2} do and fears you'll force ${him2} to do it again. Though ${slave.slaveName} accepts the situation, ${he} looks into ${rapist.slaveName}'s eyes with obvious apology.`);
 		} else if (rapist.fetish === "dom" && rapist.fetishStrength > 20 && rapist.devotion > 20) {
-			r.push(`${slave.slaveName} is tied and placed on the bed with ${his} pussy defenseless and available, and then you tell the randy ${rapist.slaveName} that it's all ${hers2}. The slave life has so affected rapist.slaveName that ${he2} is quite eager to rape another slave for ${his2} pleasure. ${He2} penetrates ${him2} immediately, fondling, pinching and licking while pistoning away, fully enjoying ${his2} dominant role, edging ${his2} poor toy again and again and making ${him2} beg for release.`);
+			r.push(`${slave.slaveName} is tied and placed on the bed with ${his} pussy defenseless and available, and then you tell the randy ${rapist.slaveName} that it's all ${hers2}. The slave life has so affected ${rapist.slaveName} that ${he2} is quite eager to rape another slave for ${his2} pleasure. ${He2} penetrates ${him2} immediately, fondling, pinching and licking while pistoning away, fully enjoying ${his2} dominant role, edging ${his2} poor toy again and again and making ${him2} beg for release.`);
 			if (slave.fetish === "dom") {
 				if (slave.devotion < -20) {
 					r.push(`By the end of the day ${slave.slaveName}'s abused cunt is`);
@@ -433,7 +433,7 @@ App.Interact.fSlaveSlaveVag = function(slave) {
 			}
 			r.push(`${rapist.slaveName} is lying next to ${him} on the bed in a state of obvious satiation and bliss.`);
 		} else if (rapist.energy > 95 && rapist.devotion > 20 && slave.devotion < -20) {
-			r.push(`${slave.slaveName} is tied and placed on the bed with ${his} pussy defenseless and available, and then you tell the randy ${rapist.slaveName} that it's all ${hers2}. The slave life has so affected rapist.slaveName that ${he2} is quite eager to rape another slave, just for the perverted novelty of the act. ${His} high libido keeps ${him} going for a long time, bringing the helpless toy to one forced orgasm after another. By the end of the day ${slave.slaveName} is lying on the bed, all worn out, ${his} cunt`);
+			r.push(`${slave.slaveName} is tied and placed on the bed with ${his} pussy defenseless and available, and then you tell the randy ${rapist.slaveName} that it's all ${hers2}. The slave life has so affected ${rapist.slaveName} that ${he2} is quite eager to rape another slave, just for the perverted novelty of the act. ${His} high libido keeps ${him} going for a long time, bringing the helpless toy to one forced orgasm after another. By the end of the day ${slave.slaveName} is lying on the bed, all worn out, ${his} cunt`);
 			if (rapist.dick > 0) {
 				r.push(`dripping with cum`);
 			} else {
-- 
GitLab