From ab3597aaedf91006901ea0a8ab843df1eb4e1c9a Mon Sep 17 00:00:00 2001
From: klorpa <30924131+klorpa@users.noreply.github.com>
Date: Mon, 3 Sep 2018 19:46:59 -0500
Subject: [PATCH] Vignette4

---
 devNotes/twine JS.txt    | 603 ++++++++++++++++++++++++++++-----------
 src/endWeek/saServant.tw |   2 +-
 src/js/utilJS.tw         |  24 +-
 3 files changed, 455 insertions(+), 174 deletions(-)

diff --git a/devNotes/twine JS.txt b/devNotes/twine JS.txt
index b1869c4e2b6..d6ac2583448 100644
--- a/devNotes/twine JS.txt	
+++ b/devNotes/twine JS.txt	
@@ -1437,7 +1437,7 @@ window.setPregType = function(actor) {
 
 	if(actor.broodmother < 1) { /* Broodmothers should be not processed here. Necessary now.*/
 		if(typeof actor.readyOva == "number" && actor.readyOva != 0) {
-			ovum = actor.readyOva;  /*just single override; for delayed impregnation cases */
+			ovum = actor.readyOva; /*just single override; for delayed impregnation cases */
 		} else if(actor.ID == -1) {
 			if(actor.birthMaster > 0) { // Predisposed to twins
 				if(actor.fertDrugs == 1) {
@@ -3665,18 +3665,18 @@ window.ValidateFacilityDecoration = function ValidateFacilityDecoration(decorati
 };
 
 window.ordinalSuffix = function ordinalSuffix(i) {
-    var j = i % 10,
-        k = i % 100;
-    if (j == 1 && k != 11) {
-        return i + "st";
-    }
-    if (j == 2 && k != 12) {
-        return i + "nd";
-    }
-    if (j == 3 && k != 13) {
-        return i + "rd";
-    }
-    return i + "th";
+	var j = i % 10,
+		k = i % 100;
+	if (j == 1 && k != 11) {
+		return i + "st";
+	}
+	if (j == 2 && k != 12) {
+		return i + "nd";
+	}
+	if (j == 3 && k != 13) {
+		return i + "rd";
+	}
+	return i + "th";
 }
 
 /*:: Span Macro JS [script]*/
@@ -10800,7 +10800,7 @@ window.saServant = function saServant(slave) {
 					t += ` However, ${his} inability to hear often leaves ${him} oblivious to ${V.Stewardess.slaveName}'s orders, limiting their meaningful interactions.`;
 					V.cash += (V.stewardessBonus/4);
 				} else if ((slave.hears == -1 && slave.earwear != "hearing aids") || (slave.hears == 0 && slave.earwear == "muffling ear plugs")) {
-					t += `  However, ${he} often doesn't catch what ${V.Stewardess.slaveName} says, leading to frustration, confusion and less work done.`;
+					t += ` However, ${he} often doesn't catch what ${V.Stewardess.slaveName} says, leading to frustration, confusion and less work done.`;
 					V.cash += (V.stewardessBonus/2);
 				} else {
 					V.cash += V.stewardessBonus;
@@ -25361,6 +25361,11 @@ window.GetVignette = function GetVignette(slave) {
 						type: "rep",
 						effect: -1,
 					});
+					vignettes.push({
+						text: `an overeager sadistic costumer roughed ${him} up more than a normal submissive like ${him} is used to,`,
+						type: "health",
+						effect: -1,
+					});
 					break;
 				case "cumslut":
 					vignettes.push({
@@ -25459,6 +25464,11 @@ window.GetVignette = function GetVignette(slave) {
 						type: "rep",
 						effect: -1,
 					});
+					vignettes.push({
+						text: `"a group of overzealous customers gangbanging ${him} got a little too excited hearing ${him} get off on abuse, leaving ${him} sore and injured,`,
+						type: "health",
+						effect: -1,
+					});
 					break;
 				case "dom":
 					vignettes.push({
@@ -25499,6 +25509,11 @@ window.GetVignette = function GetVignette(slave) {
 					type: "rep",
 					effect: -1,
 				});
+				vignettes.push({
+					text: `${he} was slapped by a customer who was angry at ${his} rude remarks,`,
+					type: "health",
+					effect: -1,
+				});
 				break;
 			case "odd":
 				vignettes.push({
@@ -25582,6 +25597,11 @@ window.GetVignette = function GetVignette(slave) {
 					type: "cash",
 					effect: -1,
 				});
+				vignettes.push({
+					text: `a customer impatient with how slowly ${he} was disrobing ripped off ${his} clothes and roughed ${him} up,`,
+					type: "health",
+					effect: -1,
+				});
 				break;
 			case "idealistic":
 				vignettes.push({
@@ -25702,6 +25722,11 @@ window.GetVignette = function GetVignette(slave) {
 					type: "rep",
 					effect: 1,
 				});
+				vignettes.push({
+					text: `${he} adoringly kisses the feet of a local socialite who leaves ${him} a generous tip,`,
+					type: "cash",
+					effect: 1,
+				});
 				break;
 			case "adores men":
 				vignettes.push({
@@ -25709,6 +25734,11 @@ window.GetVignette = function GetVignette(slave) {
 					type: "rep",
 					effect: 1,
 				});
+				vignettes.push({
+					text: `${he} practically worships a minor celebrity, eagerly slobbering over his cock and covering ${himself} with his cum,`,
+					type: "rep",
+					effect: 1,
+				});
 				break;
 			case "insecure":
 				vignettes.push({
@@ -25730,6 +25760,16 @@ window.GetVignette = function GetVignette(slave) {
 					type: "cash",
 					effect: 1,
 				});
+				vignettes.push({
+					text: `${he} manages to convince a skeptical businessman about the merits of using slaves,`,
+					type: "rep",
+					effect: 1,
+				});
+				vignettes.push({
+					text: `${his} enthusiastic discussion of the merits of slavery convinced a young woman to sell herself into slavery, so the new owner gave you a finder's fee,`,
+					type: "cash",
+					effect: 1,
+				});
 		}
 		switch (slave.sexualQuirk) {
 			case "gagfuck queen":
@@ -25764,6 +25804,11 @@ window.GetVignette = function GetVignette(slave) {
 					type: "rep",
 					effect: 1,
 				});
+				vignettes.push({
+					text: `a few partygoers were so impressed with ${his} provocative teasing that they left ${him} a sizeable tip,`,
+					type: "cash",
+					effect: 1,
+				});
 				break;
 			case "romantic":
 				vignettes.push({
@@ -26047,11 +26092,11 @@ window.GetVignette = function GetVignette(slave) {
 				});
 			}
 		}
-		if (slave.balls > 3) {
+		if (slave.balls == 0 && slave.dick > 0) {
 			vignettes.push({
-				text: `${he} loses a customer who wants ${him} to look like a natural girl, since ${his} balls are too big to be hidden,`,
+				text: `a slave trainer privately studied ${him} as an example of a slave with well done gelding surgery,`,
 				type: "cash",
-				effect: -1,
+				effect: 1,
 			});
 		}
 		if (canDoVaginal(slave)) {
@@ -26162,7 +26207,7 @@ window.GetVignette = function GetVignette(slave) {
 		}
 		if (slave.amp === 1) {
 			vignettes.push({
-				text: `${he} disappointed a customer who thought they would enjoy fucking an amputee, but found it revolting,`,
+				text: `${he} disappointed a customer who thought they would enjoy fucking a quadruple amputee, but found it revolting,`,
 				type: "rep",
 				effect: -1,
 			});
@@ -26269,6 +26314,13 @@ window.GetVignette = function GetVignette(slave) {
 				effect: 1,
 			});
 		}
+		if (slave.collar === "shock punishment") {
+			vignettes.push({
+				text: `a customer discovered that the remote control for his video screen also worked on ${his} shock collar,`,
+				type: "trust",
+				effect: -1,
+			});
+		}
 		if (slave.fetish === "mindbroken") {
 			vignettes.push({
 				text: `a customer really enjoyed being able to treat ${him} however they liked without eliciting a reaction,`,
@@ -26283,6 +26335,13 @@ window.GetVignette = function GetVignette(slave) {
 				effect: -1,
 			});
 		}
+		if (slave.accent > 2) {
+			vignettes.push({
+				text: `a wealthy foreign tourist was so glad to hear somebody speaking his native language that he hired ${him} for the whole week,`,
+				type: "cash",
+				effect: 1,
+			});
+		}
 		if (slave.face > 10 && canDoAnal(slave)) {
 			if (slave.dick > 0) {
 				if (slave.fetish === "buttslut" && jsRandom(0, 100) < 50) {
@@ -26364,19 +26423,42 @@ window.GetVignette = function GetVignette(slave) {
 			});
 		}
 
-		if (V.arcologies[0].FSSupremacist !== "unset" && slave.race === V.arcologies[0].FSSupremacistRace) {
-			vignettes.push({
-				text: `${he} lost a customer who couldn't bear to see a beautiful ${V.arcologies[0].FSSupremacistRace} be a whore,`,
-				type: "cash",
-				effect: -1,
-			});
+		if (V.arcologies[0].FSSupremacist !== "unset") {
+			if (slave.race === V.arcologies[0].FSSupremacistRace) {
+				vignettes.push({
+					text: `${he} lost a customer who couldn't bear to see a beautiful ${V.arcologies[0].FSSupremacistRace} be a whore,`,
+					type: "cash",
+					effect: -1,
+				});
+			}
+			if (V.arcologies[0].FSSupremacistRace === "asian") {
+				vignettes.push({
+					text: `${he} was hired to be the special guest at a rather unconvential seijin-shiki celebration party,`,
+					type: "cash",
+					effect: 1,
+				});
+			} else if (V.arcologies[0].FSSupremacistRace === "semitic") {
+				vignettes.push({
+					text: `${he} was hired to be the special guest at a rather unconvential bar mitzvah celebration party,`,
+					type: "cash",
+					effect: 1,
+				});
+			} else if (V.arcologies[0].FSSupremacistRace === "white") {
+				vignettes.push({
+					text: `${he} was hired to be the special guest at a rather unconvential Jugendweihe celebration party,`,
+					type: "cash",
+					effect: 1,
+				});
+			}
 		}
-		if (V.arcologies[0].FSSubjugationist !== "unset" && slave.race === V.arcologies[0].FSSubjugationistRace) {
-			vignettes.push({
-				text: `${he} had a bad time in general, since most of ${his} customers didn't care about a ${V.arcologies[0].FSSubjugationistRace} prostitute's health or well-being,`,
-				type: "health",
-				effect: -1,
-			});
+		if (V.arcologies[0].FSSubjugationist !== "unset") {
+			if (slave.race === V.arcologies[0].FSSubjugationistRace) {
+				vignettes.push({
+					text: `${he} had a bad time in general, since most of ${his} customers didn't care about a ${V.arcologies[0].FSSubjugationistRace} prostitute's health or well-being,`,
+					type: "health",
+					effect: -1,
+				});
+			}
 		}
 		if (V.arcologies[0].FSYouthPreferentialist !== "unset") {
 			if (slave.visualAge > 35) {
@@ -26403,12 +26485,14 @@ window.GetVignette = function GetVignette(slave) {
 					effect: 1,
 				});
 			}
-		} else if (V.arcologies[0].FSGenderFundamentalist !== "unset" && slave.visualAge > 25) {
-			vignettes.push({
-				text: `${he} got repeat business from a customer who thinks ${he} resembles their ex-wife, who would never let them fuck her butt,`,
-				type: "cash",
-				effect: 1,
-			});
+		} else if (V.arcologies[0].FSGenderFundamentalist !== "unset") {
+			if (slave.visualAge > 25) {
+				vignettes.push({
+					text: `${he} got repeat business from a customer who thinks ${he} resembles their ex-wife, who would never let them fuck her butt,`,
+					type: "cash",
+					effect: 1,
+				});
+			}
 		}
 		if (V.arcologies[0].FSRepopulationFocus !== "unset") {
 			if (slave.pregType > 1 && slave.pregKnown > 1 && slave.belly >= 10000) {
@@ -26418,12 +26502,21 @@ window.GetVignette = function GetVignette(slave) {
 					effect: 1,
 				});
 			}
-		} else if (V.arcologies[0].FSRestart !== "unset" && canGetPregnant(slave)) {
-			vignettes.push({
-				text: `${he} got repeat business from a customer who misses the risk of getting a ${boy} pregnant,`,
-				type: "cash",
-				effect: 3,
-			});
+			if (slave.preg > 10 && slave.pregKnown > 1 && slave.bellyPreg >= 5000) {
+				vignettes.push({
+					text: `a customer loved ${his} pregnant belly so much that he came back for repeat business,`,
+					type: "cash",
+					effect: 1,
+				});
+			}
+		} else if (V.arcologies[0].FSRestart !== "unset") {
+			if (canGetPregnant(slave)) {
+				vignettes.push({
+					text: `${he} got repeat business from a customer who misses the risk of getting a ${boy} pregnant,`,
+					type: "cash",
+					effect: 3,
+				});
+			}
 		}
 		if (V.arcologies[0].FSPaternalist !== "unset") {
 			if (slave.intelligence > 1) {
@@ -26433,12 +26526,14 @@ window.GetVignette = function GetVignette(slave) {
 					effect: 1,
 				});
 			}
-		} else if (V.arcologies[0].FSDegradationist !== "unset" && canTalk(slave) && slave.voice > 2) {
-			vignettes.push({
-				text: `${he} got repeat business from a customer who prefers ${boy}s with high-pitched screams,`,
-				type: "cash",
-				effect: 1,
-			});
+		} else if (V.arcologies[0].FSDegradationist !== "unset") {
+			if (canTalk(slave) && slave.voice > 2) {
+				vignettes.push({
+					text: `${he} got repeat business from a customer who prefers ${boy}s with high-pitched screams,`,
+					type: "cash",
+					effect: 1,
+				});
+			}
 		}
 		if (V.arcologies[0].FSBodyPurist !== "unset") {
 			if (slave.boobsImplant > 0) {
@@ -26448,12 +26543,21 @@ window.GetVignette = function GetVignette(slave) {
 					effect: 1,
 				});
 			}
-		} else if (V.arcologies[0].FSTransformationFetishist !== "unset" && slave.boobsImplant === 0) {
-			vignettes.push({
-				text: `${he} got repeat business from a customer who wants to keep their fetish for natural breasts in the closet,`,
-				type: "cash",
-				effect: 1,
-			});
+		} else if (V.arcologies[0].FSTransformationFetishist !== "unset") {
+			if (slave.boobsImplant === 0) {
+				vignettes.push({
+					text: `${he} got repeat business from a customer who wants to keep their fetish for natural breasts in the closet,`,
+					type: "cash",
+					effect: 1,
+				});
+			}
+			if (slave.boobsImplant >= 500) {
+				vignettes.push({
+					text: `a photographer won an award for an artistic close up of one of ${his} implant-heavy tits,`,
+					type: "rep",
+					effect: 1,
+				});
+			}
 		}
 		if (V.arcologies[0].FSSlimnessEnthusiast !== "unset") {
 			if (canTalk(slave) && slave.voice > 2) {
@@ -26470,12 +26574,14 @@ window.GetVignette = function GetVignette(slave) {
 					effect: -1,
 				});
 			}
-		} else if (V.arcologies[0].FSAssetExpansionist !== "unset" && slave.boobs < 300) {
-			vignettes.push({
-				text: `${he} got repeat business from a customer who wants to keep their fetish for flat chested ${boy}s in the closet,`,
-				type: "cash",
-				effect: 1,
-			});
+		} else if (V.arcologies[0].FSAssetExpansionist !== "unset") {
+			if (slave.boobs < 300) {
+				vignettes.push({
+					text: `${he} got repeat business from a customer who wants to keep their fetish for flat chested ${boy}s in the closet,`,
+					type: "cash",
+					effect: 1,
+				});
+			}
 		}
 		if (V.arcologies[0].FSPastoralist !== "unset") {
 			if (slave.lactation === 0) {
@@ -26493,33 +26599,41 @@ window.GetVignette = function GetVignette(slave) {
 				});
 			}
 		}
-		if (V.arcologies[0].FSPhysicalIdealist !== "unset" && slave.muscles <= 95) {
-			vignettes.push({
-				text: `${he} lost a customer who could barely believe that ${he} wasn't capable of holding ${himself} in a handstand,`,
-				type: "cash",
-				effect: -1,
-			});
+		if (V.arcologies[0].FSPhysicalIdealist !== "unset") {
+			if (slave.muscles <= 95) {
+				vignettes.push({
+					text: `${he} lost a customer who could barely believe that ${he} wasn't capable of holding ${himself} in a handstand,`,
+					type: "cash",
+					effect: -1,
+				});
+			}
 		}
-		if (V.arcologies[0].FSChattelReligionist !== "unset" && slave.behavioralFlaw === "devout") {
-			vignettes.push({
-				text: `${he} got repeat business from a customer who desperately wants their cock to be the one that converts ${him},`,
-				type: "cash",
-				effect: 1,
-			});
+		if (V.arcologies[0].FSChattelReligionist !== "unset") {
+			if (slave.behavioralFlaw === "devout") {
+				vignettes.push({
+					text: `${he} got repeat business from a customer who desperately wants their cock to be the one that converts ${him},`,
+					type: "cash",
+					effect: 1,
+				});
+			}
 		}
-		if (V.arcologies[0].FSRomanRevivalist !== "unset" && slave.race === "white" && slave.height >= 185) {
-			vignettes.push({
-				text: `${he} attracted a customer who thought ${his} appearance worthy of a lusty northern barbarian,`,
-				type: "cash",
-				effect: 1,
-			});
+		if (V.arcologies[0].FSRomanRevivalist !== "unset") {
+			if (slave.race === "white" && slave.height >= 185) {
+				vignettes.push({
+					text: `${he} attracted a customer who thought ${his} appearance worthy of a lusty northern barbarian,`,
+					type: "cash",
+					effect: 1,
+				});
+			}
 		}
-		if (V.arcologies[0].FSAztecRevivalist !== "unset" && slave.devotion > 75 && slave.intelligence >= 2) {
-			vignettes.push({
-				text: `${he} indulged a citizen by following a fertility ritual completely,`,
-				type: "rep",
-				effect: 1,
-			});
+		if (V.arcologies[0].FSAztecRevivalist !== "unset") {
+			if (slave.devotion > 75 && slave.intelligence >= 2) {
+				vignettes.push({
+					text: `${he} indulged a citizen by following a fertility ritual completely,`,
+					type: "rep",
+					effect: 1,
+				});
+			}
 		}
 		if (V.arcologies[0].FSEgyptianRevivalist !== "unset") {
 			vignettes.push({
@@ -26528,16 +26642,39 @@ window.GetVignette = function GetVignette(slave) {
 				effect: 1,
 			});
 		}
-		if (V.arcologies[0].FSEdoRevivalist !== "unset" && slave.face > 40 && slave.intelligence > 1) {
+		if (V.arcologies[0].FSEdoRevivalist !== "unset") {
+			if (slave.face > 40 && slave.intelligence > 1) {
+				vignettes.push({
+					text: `${he} got repeat business from a customer who wished to do nothing more than converse with a beautiful and intelligent ${boy},`,
+					type: "cash",
+					effect: 1,
+				});
+			}
 			vignettes.push({
-				text: `${he} got repeat business from a customer who wished to do nothing more than converse with a beautiful and intelligent ${boy},`,
+				text: `${he} was hired to be the special guest at a rather unconvential genpuku celebration party,`,
 				type: "cash",
 				effect: 1,
 			});
 		}
-		if (V.arcologies[0].FSArabianRevivalist !== "unset" && slave.entertainSkill >= 100 && canTalk(slave) && slave.voice > 0 && slave.accent < 2) {
+		if (V.arcologies[0].FSArabianRevivalist !== "unset") {
+			if (slave.entertainSkill >= 100 && canTalk(slave) && slave.voice > 0 && slave.accent < 2) {
+				vignettes.push({
+					text: `${he} got repeat business from a customer who prefers prostitutes who can tell lovely stories,`,
+					type: "cash",
+					effect: 1,
+				});
+			}
+		}
+		if (V.arcologies[0].FSChineseRevivalist !== "unset") {
+			if (slave.dick > 0 && slave.balls == 2) {
+				vignettes.push({
+					text: `a citizen admired ${his} lack of balls and praised ${him} for being like the eunuchs in Chinese history,`,
+					type: "cash",
+					effect: 1,
+				});
+			}
 			vignettes.push({
-				text: `${he} got repeat business from a customer who prefers prostitutes who can tell lovely stories,`,
+				text: `${he} was hired to be the special guest at a rather unconvential Guan Li celebration party,`,
 				type: "cash",
 				effect: 1,
 			});
@@ -26742,6 +26879,11 @@ window.GetVignette = function GetVignette(slave) {
 						type: "rep",
 						effect: -1,
 					});
+					vignettes.push({
+						text: `an overeager sadistic costumer roughed ${him} up more than a normal submissive like ${him} is used to,`,
+						type: "health",
+						effect: -1,
+					});
 					break;
 				case "cumslut":
 					vignettes.push({
@@ -26840,6 +26982,11 @@ window.GetVignette = function GetVignette(slave) {
 						type: "rep",
 						effect: -1,
 					});
+					vignettes.push({
+						text: `a group of overzealous citizens gangbanging ${him} got a little too excited hearing ${him} get off on abuse, leaving ${him} sore and injured,`,
+						type: "health",
+						effect: -1,
+					});
 					break;
 				case "dom":
 					vignettes.push({
@@ -26880,6 +27027,11 @@ window.GetVignette = function GetVignette(slave) {
 					type: "rep",
 					effect: -1,
 				});
+				vignettes.push({
+					text: `${he} was slapped by a citizen who was angry at ${his} rude remarks,`,
+					type: "health",
+					effect: -1,
+				});
 				break;
 			case "odd":
 				vignettes.push({
@@ -26963,6 +27115,11 @@ window.GetVignette = function GetVignette(slave) {
 					type: "rep",
 					effect: -1,
 				});
+				vignettes.push({
+					text: `a citizen impatient with how slowly ${he} was disrobing ripped off ${his} clothes and roughed ${him} up,`,
+					type: "health",
+					effect: -1,
+				});
 				break;
 			case "idealistic":
 				vignettes.push({
@@ -27083,6 +27240,11 @@ window.GetVignette = function GetVignette(slave) {
 					type: "rep",
 					effect: 1,
 				});
+				vignettes.push({
+					text: `${he} adoringly kisses the feet of a local socialite who leaves ${him} a generous tip,`,
+					type: "cash",
+					effect: 1,
+				});
 				break;
 			case "adores men":
 				vignettes.push({
@@ -27090,6 +27252,11 @@ window.GetVignette = function GetVignette(slave) {
 					type: "rep",
 					effect: 1,
 				});
+				vignettes.push({
+					text: `${he} practically worships a minor celebrity, eagerly slobbering over his cock and covering ${himself} with his cum,`,
+					type: "rep",
+					effect: 1,
+				});
 				break;
 			case "insecure":
 				vignettes.push({
@@ -27111,6 +27278,16 @@ window.GetVignette = function GetVignette(slave) {
 					type: "rep",
 					effect: 1,
 				});
+				vignettes.push({
+					text: `${he} manages to convince a skeptical businessman about the merits of using slaves,`,
+					type: "rep",
+					effect: 1,
+				});
+				vignettes.push({
+					text: `${his} enthusiastic discussion of the merits of slavery convinced a young woman to sell herself into slavery, so the new owner gave you a finder's fee,`,
+					type: "cash",
+					effect: 1,
+				});
 		}
 		switch (slave.sexualQuirk) {
 			case "gagfuck queen":
@@ -27136,12 +27313,17 @@ window.GetVignette = function GetVignette(slave) {
 				break;
 			case "tease":
 				vignettes.push({
-					text: `${he} convinces a citizen who's never had sex with a street slut to patronize ${his} with some truly inspired flirting,`,
+					text: `${he} convinces a citizen who's never had sex with a street slut to patronize ${him} with some truly inspired flirting,`,
 					type: "rep",
 					effect: 1,
 				});
 				vignettes.push({
-					text: `a few partygoers were so impressed with ${his} provocative teasing that they left ${his} sizeable tip,`,
+					text: `a few partiers were so impressed with ${his} provocative teasing that they repeated ${his} wit to friends,`,
+					type: "rep",
+					effect: 1,
+				});
+				vignettes.push({
+					text: `a few partygoers were so impressed with ${his} provocative teasing that they left ${him} a sizeable tip,`,
 					type: "cash",
 					effect: 1,
 				});
@@ -27428,6 +27610,13 @@ window.GetVignette = function GetVignette(slave) {
 				});
 			}
 		}
+		if (slave.balls == 0 && slave.dick > 0) {
+			vignettes.push({
+				text: `a slave trainer pointed ${him} out as an example of a slave with well done gelding surgery,`,
+				type: "rep",
+				effect: 1,
+			});
+		}
 		if (slave.balls > 3) {
 			vignettes.push({
 				text: `${he} disappoints a citizen who wants ${him} to look like a natural girl, since ${his} balls are too big to be hidden,`,
@@ -27543,7 +27732,7 @@ window.GetVignette = function GetVignette(slave) {
 		}
 		if (slave.amp === 1) {
 			vignettes.push({
-				text: `${he} disappointed a citizen who thought they would enjoy fucking an amputee, but found it revolting,`,
+				text: `${he} disappointed a citizen who thought they would enjoy fucking a quadruple amputee, but found it revolting,`,
 				type: "rep",
 				effect: -1,
 			});
@@ -27570,6 +27759,13 @@ window.GetVignette = function GetVignette(slave) {
 				effect: 1,
 			});
 		}
+		if (slave.collar === "shock punishment") {
+			vignettes.push({
+				text: `a citizen discovered that the remote control for his video screen also worked on ${his} shock collar,`,
+				type: "trust",
+				effect: -1,
+			});
+		}
 		if (slave.fetish === "mindbroken") {
 			vignettes.push({
 				text: `a citizen really enjoyed being able to treat ${him} however they liked without eliciting a reaction,`,
@@ -27584,6 +27780,13 @@ window.GetVignette = function GetVignette(slave) {
 				effect: -1,
 			});
 		}
+		if (slave.accent > 2) {
+			vignettes.push({
+				text: `a wealthy immigrant was so glad to hear somebody speaking his native language that he hired ${him} for the whole week,`,
+				type: "rep",
+				effect: 1,
+			});
+		}
 		if (slave.face > 10 && canDoAnal(slave)) {
 			if (slave.dick > 0) {
 				if (slave.fetish === "buttslut" && jsRandom(0, 100) < 50) {
@@ -27665,19 +27868,42 @@ window.GetVignette = function GetVignette(slave) {
 			});
 		}
 
-		if (V.arcologies[0].FSSupremacist !== "unset" && slave.race === V.arcologies[0].FSSupremacistRace) {
-			vignettes.push({
-				text: `${he} disappointed a citizen who couldn't bear to see a beautiful ${V.arcologies[0].FSSupremacistRace} be a public slut,`,
-				type: "rep",
-				effect: -1,
-			});
+		if (V.arcologies[0].FSSupremacist !== "unset") {
+			if (slave.race === V.arcologies[0].FSSupremacistRace) {
+				vignettes.push({
+					text: `${he} disappointed a citizen who couldn't bear to see a beautiful ${V.arcologies[0].FSSupremacistRace} be a public slut,`,
+					type: "rep",
+					effect: -1,
+				});
+			}
+			if (V.arcologies[0].FSSupremacistRace === "asian") {
+				vignettes.push({
+					text: `${he} was invited to and livened up a rather unconvential seijin-shiki celebration party,`,
+					type: "rep",
+					effect: 1,
+				});
+			} else if (V.arcologies[0].FSSupremacistRace === "semitic") {
+				vignettes.push({
+					text: `${he} was invited to and livened up a rather unconvential bar mitzvah celebration party,`,
+					type: "rep",
+					effect: 1,
+				});
+			} else if (V.arcologies[0].FSSupremacistRace === "white") {
+				vignettes.push({
+					text: `${he} was invited to and livened up a rather unconvential Jugendweihe celebration party,`,
+					type: "rep",
+					effect: 1,
+				});
+			}
 		}
-		if (V.arcologies[0].FSSubjugationist !== "unset" && slave.race === V.arcologies[0].FSSubjugationistRace) {
-			vignettes.push({
-				text: `${he} had a bad time in general, since most of the citizens who used ${him} didn't care about a ${V.arcologies[0].FSSubjugationistRace} prostitute's health or well-being,`,
-				type: "health",
-				effect: -1,
-			});
+		if (V.arcologies[0].FSSubjugationist !== "unset") {
+			if (slave.race === V.arcologies[0].FSSubjugationistRace) {
+				vignettes.push({
+					text: `${he} had a bad time in general, since most of the citizens who used ${him} didn't care about a ${V.arcologies[0].FSSubjugationistRace} prostitute's health or well-being,`,
+					type: "health",
+					effect: -1,
+				});
+			}
 		}
 		if (V.arcologies[0].FSYouthPreferentialist !== "unset") {
 			if (slave.visualAge > 35) {
@@ -27704,12 +27930,14 @@ window.GetVignette = function GetVignette(slave) {
 					effect: 1,
 				});
 			}
-		} else if (V.arcologies[0].FSGenderFundamentalist !== "unset" && slave.visualAge > 25) {
-			vignettes.push({
-				text: `${he} gratified a citizen who thinks ${he} resembles his ex-wife, who would never let him fuck her butt,`,
-				type: "rep",
-				effect: 1,
-			});
+		} else if (V.arcologies[0].FSGenderFundamentalist !== "unset") {
+			if (slave.visualAge > 25) {
+				vignettes.push({
+					text: `${he} gratified a citizen who thinks ${he} resembles his ex-wife, who would never let him fuck her butt,`,
+					type: "rep",
+					effect: 1,
+				});
+			}
 		}
 		if (V.arcologies[0].FSRepopulationFocus !== "unset") {
 			if (slave.pregType > 1 && slave.pregKnown > 1 && slave.belly >= 10000) {
@@ -27719,12 +27947,21 @@ window.GetVignette = function GetVignette(slave) {
 					effect: 1,
 				});
 			}
-		} else if (V.arcologies[0].FSRestart !== "unset" && canGetPregnant(slave)) {
-			vignettes.push({
-				text: `${he} gratified a citizen who misses the risk of getting a ${boy} pregnant,`,
-				type: "rep",
-				effect: 1,
-			});
+			if (slave.preg > 10 && slave.pregKnown > 1 && slave.bellyPreg >= 5000) {
+				vignettes.push({
+					text: `a citizen loved ${his} pregnant belly so much that he came back for repeat service,`,
+					type: "rep",
+					effect: 1,
+				});
+			}
+		} else if (V.arcologies[0].FSRestart !== "unset") {
+			if (canGetPregnant(slave)) {
+				vignettes.push({
+					text: `${he} gratified a citizen who misses the risk of getting a ${boy} pregnant,`,
+					type: "rep",
+					effect: 1,
+				});
+			}
 		}
 		if (V.arcologies[0].FSPaternalist !== "unset") {
 			if (slave.intelligence > 1) {
@@ -27734,12 +27971,14 @@ window.GetVignette = function GetVignette(slave) {
 					effect: 1,
 				});
 			}
-		} else if (V.arcologies[0].FSDegradationist !== "unset" && canTalk(slave) && slave.voice > 2) {
-			vignettes.push({
-				text: `${he} gratified a citizen who prefers ${boy} with high-pitched screams,`,
-				type: "rep",
-				effect: 1,
-			});
+		} else if (V.arcologies[0].FSDegradationist !== "unset") {
+			if (canTalk(slave) && slave.voice > 2) {
+				vignettes.push({
+					text: `${he} gratified a citizen who prefers ${boy} with high-pitched screams,`,
+					type: "rep",
+					effect: 1,
+				});
+			}
 		}
 		if (V.arcologies[0].FSBodyPurist !== "unset") {
 			if (slave.boobsImplant > 0) {
@@ -27749,12 +27988,21 @@ window.GetVignette = function GetVignette(slave) {
 					effect: 1,
 				});
 			}
-		} else if (V.arcologies[0].FSTransformationFetishist !== "unset" && slave.boobsImplant === 0) {
-			vignettes.push({
-				text: `${he} gratified a citizen who wants to keep his fetish for natural breasts in the closet,`,
-				type: "rep",
-				effect: 1,
-			});
+		} else if (V.arcologies[0].FSTransformationFetishist !== "unset") {
+			if (slave.boobsImplant === 0) {
+				vignettes.push({
+					text: `${he} gratified a citizen who wants to keep his fetish for natural breasts in the closet,`,
+					type: "rep",
+					effect: 1,
+				});
+			}
+			if (slave.boobsImplant >= 500) {
+				vignettes.push({
+					text: `a photographer won an award for an artistic close up of one of ${his} implant-heavy tits,`,
+					type: "rep",
+					effect: 1,
+				});
+			}
 		}
 		if (V.arcologies[0].FSSlimnessEnthusiast !== "unset") {
 			if (canTalk(slave) && slave.voice > 2) {
@@ -27771,12 +28019,14 @@ window.GetVignette = function GetVignette(slave) {
 					effect: -1,
 				});
 			}
-		} else if (V.arcologies[0].FSAssetExpansionist !== "unset" && slave.boobs < 300) {
-			vignettes.push({
-				text: `${he} gratified a citizen who wants to keep his fetish for flat chested ${boy}s in the closet,`,
-				type: "rep",
-				effect: 1,
-			});
+		} else if (V.arcologies[0].FSAssetExpansionist !== "unset") {
+			if (slave.boobs < 300) {
+				vignettes.push({
+					text: `${he} gratified a citizen who wants to keep his fetish for flat chested ${boy}s in the closet,`,
+					type: "rep",
+					effect: 1,
+				});
+			}
 		}
 		if (V.arcologies[0].FSPastoralist !== "unset") {
 			if (slave.lactation === 0) {
@@ -27794,33 +28044,41 @@ window.GetVignette = function GetVignette(slave) {
 				});
 			}
 		}
-		if (V.arcologies[0].FSPhysicalIdealist !== "unset" && slave.muscles <= 95) {
-			vignettes.push({
-				text: `${he} disappointed a citizen who could barely believe that ${he} wasn't capable of holding ${himself} in a handstand,`,
-				type: "rep",
-				effect: -1,
-			});
+		if (V.arcologies[0].FSPhysicalIdealist !== "unset") {
+			if (slave.muscles <= 95) {
+				vignettes.push({
+					text: `${he} disappointed a citizen who could barely believe that ${he} wasn't capable of holding ${himself} in a handstand,`,
+					type: "rep",
+					effect: -1,
+				});
+			}
 		}
-		if (V.arcologies[0].FSChattelReligionist !== "unset" && slave.behavioralFlaw === "devout") {
-			vignettes.push({
-				text: `${he} gratified a citizen who desperately wants his cock to be the one that converts ${him},`,
-				type: "rep",
-				effect: 1,
-			});
+		if (V.arcologies[0].FSChattelReligionist !== "unset") {
+			if (slave.behavioralFlaw === "devout") {
+				vignettes.push({
+					text: `${he} gratified a citizen who desperately wants his cock to be the one that converts ${him},`,
+					type: "rep",
+					effect: 1,
+				});
+			}
 		}
-		if (V.arcologies[0].FSRomanRevivalist !== "unset" && slave.race === "white" && slave.height >= 185) {
-			vignettes.push({
-				text: `${he} gratified a citizen who thought ${his} appearance worthy of a lusty northern barbarian,`,
-				type: "rep",
-				effect: 1,
-			});
+		if (V.arcologies[0].FSRomanRevivalist !== "unset") {
+			if (slave.race === "white" && slave.height >= 185) {
+				vignettes.push({
+					text: `${he} gratified a citizen who thought ${his} appearance worthy of a lusty northern barbarian,`,
+					type: "rep",
+					effect: 1,
+				});
+			}
 		}
-		if (V.arcologies[0].FSAztecRevivalist !== "unset" && slave.devotion > 75 && slave.intelligence >= 2) {
-			vignettes.push({
-				text: `${he} indulged a citizen by following a fertility ritual completely,`,
-				type: "rep",
-				effect: 1,
-			});
+		if (V.arcologies[0].FSAztecRevivalist !== "unset") {
+			if (slave.devotion > 75 && slave.intelligence >= 2) {
+				vignettes.push({
+					text: `${he} indulged a citizen by following a fertility ritual completely,`,
+					type: "rep",
+					effect: 1,
+				});
+			}
 		}
 		if (V.arcologies[0].FSEgyptianRevivalist !== "unset") {
 			vignettes.push({
@@ -27829,16 +28087,39 @@ window.GetVignette = function GetVignette(slave) {
 				effect: 1,
 			});
 		}
-		if (V.arcologies[0].FSEdoRevivalist !== "unset" && slave.face > 40 && slave.intelligence > 1) {
+		if (V.arcologies[0].FSEdoRevivalist !== "unset") {
+			if (slave.face > 40 && slave.intelligence > 1) {
+				vignettes.push({
+					text: `${he} gratified a citizen who wished to do nothing more than converse with a beautiful and intelligent ${boy},`,
+					type: "rep",
+					effect: 1,
+				});
+			}
 			vignettes.push({
-				text: `${he} gratified a citizen who wished to do nothing more than converse with a beautiful and intelligent ${boy},`,
+				text: `${he} was invited to and livened up a rather unconvential genpuku celebration party,`,
 				type: "rep",
 				effect: 1,
 			});
 		}
-		if (V.arcologies[0].FSArabianRevivalist !== "unset" && slave.entertainSkill >= 100 && canTalk(slave) && slave.voice > 0 && slave.accent < 2) {
+		if (V.arcologies[0].FSArabianRevivalist !== "unset") {
+			if (slave.entertainSkill >= 100 && canTalk(slave) && slave.voice > 0 && slave.accent < 2) {
+				vignettes.push({
+					text: `${he} gratified a citizen who prefers prostitutes who can tell lovely stories,`,
+					type: "rep",
+					effect: 1,
+				});
+			}
+		}
+		if (V.arcologies[0].FSChineseRevivalist !== "unset") {
+			if (slave.dick > 0 && slave.balls == 2) {
+				vignettes.push({
+					text: `a citizen admired ${his} lack of balls and praised ${him} for being like the eunuchs in Chinese history,`,
+					type: "rep",
+					effect: 1,
+				});
+			}
 			vignettes.push({
-				text: `${he} gratified a citizen who prefers prostitutes who can tell lovely stories,`,
+				text: `${he} was invited to and livened up a rather unconvential Guan Li celebration party,`,
 				type: "rep",
 				effect: 1,
 			});
diff --git a/src/endWeek/saServant.tw b/src/endWeek/saServant.tw
index 0662f9407d8..9a873a7fbf8 100644
--- a/src/endWeek/saServant.tw
+++ b/src/endWeek/saServant.tw
@@ -28,7 +28,7 @@ window.saServant = function saServant(slave) {
 					t += ` However, ${his} inability to hear often leaves ${him} oblivious to ${V.Stewardess.slaveName}'s orders, limiting their meaningful interactions.`;
 					V.cash += (V.stewardessBonus/4);
 				} else if ((slave.hears == -1 && slave.earwear != "hearing aids") || (slave.hears == 0 && slave.earwear == "muffling ear plugs")) {
-					t += `  However, ${he} often doesn't catch what ${V.Stewardess.slaveName} says, leading to frustration, confusion and less work done.`;
+					t += ` However, ${he} often doesn't catch what ${V.Stewardess.slaveName} says, leading to frustration, confusion and less work done.`;
 					V.cash += (V.stewardessBonus/2);
 				} else {
 					V.cash += V.stewardessBonus;
diff --git a/src/js/utilJS.tw b/src/js/utilJS.tw
index 2e11e7356cf..b52094281fa 100644
--- a/src/js/utilJS.tw
+++ b/src/js/utilJS.tw
@@ -781,16 +781,16 @@ window.ValidateFacilityDecoration = function ValidateFacilityDecoration(decorati
 };
 
 window.ordinalSuffix = function ordinalSuffix(i) {
-    var j = i % 10,
-        k = i % 100;
-    if (j == 1 && k != 11) {
-        return i + "st";
-    }
-    if (j == 2 && k != 12) {
-        return i + "nd";
-    }
-    if (j == 3 && k != 13) {
-        return i + "rd";
-    }
-    return i + "th";
+	var j = i % 10,
+		k = i % 100;
+	if (j == 1 && k != 11) {
+		return i + "st";
+	}
+	if (j == 2 && k != 12) {
+		return i + "nd";
+	}
+	if (j == 3 && k != 13) {
+		return i + "rd";
+	}
+	return i + "th";
 }
\ No newline at end of file
-- 
GitLab