From 716cb51b50b6aa97536d743ef300a46714dbde80 Mon Sep 17 00:00:00 2001
From: DCoded <dcoded@live.com>
Date: Mon, 2 Nov 2020 23:47:23 -0500
Subject: [PATCH] Began JSifiying peConcubineInterview

---
 src/events/RESS/concubineInterview.js | 538 ++++++++++++++++++++++++++
 src/events/randomEvent.js             |   1 +
 2 files changed, 539 insertions(+)
 create mode 100644 src/events/RESS/concubineInterview.js

diff --git a/src/events/RESS/concubineInterview.js b/src/events/RESS/concubineInterview.js
new file mode 100644
index 00000000000..2f22a36bcde
--- /dev/null
+++ b/src/events/RESS/concubineInterview.js
@@ -0,0 +1,538 @@
+App.Events.RESSConcubineInterview = class RESSConcubineInterview extends App.Events.BaseEvent {
+	eventPrerequisites() {
+		return [
+			() => typeof S.Concubine !== "undefined",
+			() => canTalk(S.Concubine) && canHear(S.Concubine),
+		];
+	}
+
+	actorPrerequisites() {
+		return [];
+	}
+
+	execute(node) {
+		const [eventSlave] = this.actors.map(a => getSlave(a));
+		const {
+			He, he, his, him, girl, His
+		} = getPronouns(eventSlave);
+		const {title: Master} = getEnunciation(eventSlave);
+		const lisps = SlaveStatsChecker.checkForLisp(eventSlave);
+		const fluid = eventSlave.inflationType;
+		const arcology = V.arcologies[0];
+		const oldRep = V.rep;
+
+		const rep = val => repX(val, "concubine", eventSlave);
+		const speak = string => Spoken(eventSlave, string);
+
+		V.nextLink = "Next Week";
+
+		App.Events.drawEventArt(node, eventSlave);
+
+		let t = [];
+
+		t.push(`You receive an official communication from a popular talk show e-hosted in one of the old world's still-thriving first world countries. Your fame has become known even in the old world, and they'd like to interview ${App.UI.slaveDescriptionDialog(eventSlave)} about you. They frankly warn you that you'll have no right to review the interview and no ability to control what ${he} says, and that they'll be asking about anything the interviewer thinks is juicy. This could be great for your reputation, but it could be hazardous, too.`);
+
+		App.Events.addParagraph(node, t);
+
+		App.Events.addResponses(node, [
+			new App.Events.Result("Accept", accept),
+			new App.Events.Result("Decline", decline)
+		]);
+
+		function accept() {
+			t = [];
+
+			t.push(`The show is broadcast live; you head out onto a balcony to watch it on a big screen. It's been impossible to hide, and many of your citizens have taken a proprietary attitude towards your fame: they see your success as their success, too, and want to see ${eventSlave.slaveName} do well. The show introduction plays, introducing the host, a swishy, rail-thin gentleman with impeccable sartorial style and a close-cropped salt-and-pepper beard. He reviews who you are, giving equal time to your accomplishments and the inevitable criticisms from old world antislavery activists, and then calls ${eventSlave.slaveName} out.`);
+
+			App.Events.addParagraph(node, t);
+
+			t = [];
+
+			t.push(`${He} `);
+			if (eventSlave.bellyPreg > 1000000) {
+				t.push(`barely waddles out,${hasAnyArms(eventSlave) ? ` arm` : hasBothArms(eventSlave) ? `arms` : ``} resting atop ${his} _belly belly,<</if>>`);
+			} else if (eventSlave.bellyPreg > 750000) {
+				t.push(`barely waddles out,${hasAnyArms(eventSlave) ? ` arm` : hasBothArms(eventSlave) ? `arms` : ``} struggling to lift ${his} _belly, absolutely child stuffed belly as ${he} lewdly caresses it,<</if>>`);
+			} else if (eventSlave.bellyPreg > 600000) {
+				t.push(`waddles out,${hasAnyArms(eventSlave) ? ` arm` : hasBothArms(eventSlave) ? `arms` : ``} cradling ${his} _belly, absolutely child stuffed belly as best ${he} can as ${he} lewdly caresses its sides,<</if>>`);
+			} else if (eventSlave.bellyPreg > 450000) {
+				t.push(`waddles out,${hasAnyArms(eventSlave) ? ` arm` : hasBothArms(eventSlave) ? `arms` : ``} cradling ${his} _belly, absolutely child stuffed belly as ${he} lewdly sways it side to side,<<else>>lewdly swaying ${his} absolutely child stuffed belly from side to side<</if>>,`);
+			} else if (eventSlave.bellyPreg > 300000) {
+				t.push(`strides out,${hasAnyArms(eventSlave) ? ` arm` : hasBothArms(eventSlave) ? `arms` : ``} cradling ${his} _belly, absolutely child stuffed belly as ${he} lewdly sways it side to side<<else>>lewdly swaying ${his} absolutely child stuffed belly from side to side<</if>>,`);
+			} else if (eventSlave.bellyPreg > 150000) {
+				t.push(`strides out with an exaggerated gait, purposefully swaying ${his} _belly, child stuffed belly from side to side,`);
+			} else if (eventSlave.belly > 150000) {
+				t.push(`strides out, ${his} _belly belly swaying side to side lewdly,`);
+			} else if (eventSlave.belly > 5000) {
+				t.push(`strides out, sensually swaying ${his} round belly side to side,`);
+			} else {
+				t.push(`strides out`);
+			}
+			if (eventSlave.clothes === "no clothing") {
+				t.push(`in magnificent nudity. It's a shock to old world values, no doubt, but the titillation should counterbalance that.`);
+			} else {
+				t.push(`resplendent in ${eventSlave.clothes}.`);
+			}
+			if (eventSlave.skill.entertainment > 60) {
+				t.push(`${He}'s <span class="green">graceful and sensual,</span> and entirely at home.`);
+				rep(500);
+			} else if (eventSlave.skill.entertainment < 30) {
+				t.push(`${He}'s <span class="red">clumsy and nervous,</span> but does ${his} best to rally.`);
+				rep(-100);
+			} else {
+				t.push(`${He} manages ${his} entrance reasonably well, and conceals any nervousness.`);
+			}
+			if (eventSlave.geneticQuirks.neoteny === 2 && eventSlave.visualAge < V.minimumSlaveAge) {
+				t.push(`"My honey, aren't you a bit young for this sort of thing?${V.minimumSlaveAge < 16 ? ` I know things are a little different where you're from, but still, you're just a child!` : ``}"`);
+				if (eventSlave.intelligence + eventSlave.intelligenceImplant > 50) {
+					t.push(`${He} <span class="green">effortlessly diffuses the question.</span> ${speak(`"I'm really ${eventSlave.actualAge}. Most people would never consider a ${girl} with a genetic condition like mine, but my dear Master was able to see past it."`)}`);
+					rep(500);
+				} else if (eventSlave.intelligence + eventSlave.intelligenceImplant > 15) {
+					t.push(`${He} manages to sway the topic away from ${his} apparent underageness. ${speak(`"I'm really ${eventSlave.actualAge}, believe it or not. Wouldn't you like to know my secret?"`)}`);
+				} else {
+					t.push(`${He} manages to completely miss the insinuation and <span class="red">make things worse than they really are.</span> ${speak(`"Master loves the way I look, that's why I'm hisP favorite after all, but I'm still ${eventSlave.actualAge}-years old."`)}`);
+					rep(-100);
+				}
+			} else if (eventSlave.face > 95) {
+				t.push(`"Oh my God," exclaims the host reverently. "Honey, <span class="green">you are gorgeous.</span>" He turns to the camera. "Isn't ${he} just gorgeous?"`);
+			} else if (eventSlave.face < 10) {
+				t.push(`There is a distinct lack of response from the host; perhaps he was <span class="red">expecting ${him} to be prettier.</span>`);
+			} else {
+				t.push(`The host gives ${him} a perfunctory compliment on ${his} beauty.`);
+			}
+			t.push(`They seat themselves in comfortable leather chairs and the interview begins in earnest.`);
+
+			App.Events.addParagraph(node, t);
+
+			t = [];
+
+			t.push(`The host asks ${him} some soft, nonjudgmental questions about ${his} life and how ${he} became your slave. Then he hits ${him}: "So, ${eventSlave.slaveName}. Tell us about PlayerName()>>."`);
+			if (eventSlave.devotion > 95) {
+				t.push(`<span class="green">Without a moment's hesitation,</span> ${he} ${lisps ? `lisps` : `proclaims`}, "I love _himP. <<HeP>>'s so <<if $PC.title != 0>>handsome<<else>>pretty<</if>>, and," ${he} manages to blush prettily, "<<heP>>'s so good to me."`);
+				rep(500);
+			} else if (eventSlave.devotion < 60) {
+				t.push(`${He} struggles for an instant and then says <span class="red">unconvincingly</span> that ${he} loves you.`);
+				rep(-100);
+			} else {
+				t.push(`${He} recovers quickly and responds that ${he} loves you.`);
+			}
+
+			App.Events.addParagraph(node, t);
+
+			t = [];
+
+			t.push(`The host glances at the camera. "Wow." He presses on. "But you're _hisP slave, ${eventSlave.slaveName}. _HeP owns you. Isn't that hard for you?"`);
+
+			App.Events.addParagraph(node, t);
+
+			t = [];
+
+			t.push(`${He} shakes ${his} head.`);
+			if (eventSlave.trust > 95) {
+				t.push(`<span class="green">${He} responds confidently,</span> "My life with _himP is very different from anything you might find here in the old world. But I'm happy with _himP, and there's no one I'd rather be with, as a slave or not."`);
+				rep(500);
+			} else if (eventSlave.trust < 60) {
+				t.push(`${He} explains that it isn't hard to trust someone like you, but this <span class="red">falls a little flat.</span>`);
+				rep(-100);
+			} else {
+				t.push(`${He} explains earnestly that it isn't hard to trust someone like you, and explains some of the blander details about life as your slave.`);
+			}
+			if (eventSlave.belly > 1500) {
+				t.push(`The host places a hand on ${his} belly,`);
+				if (eventSlave.bellyPreg > 450000) {
+					t.push(`gasping at the tautness and the feeling of the child<<if ${eventSlave.pregType > 1}ren<</if>> distending the skin beneath his hand.`);
+				} else if (eventSlave.bellyPreg > 100000) {
+					t.push(`gasping at the flurry of kicks in response.`);
+				} else if (eventSlave.belly > 15000) {
+					t.push(`giving it a good groping.`);
+				} else if (eventSlave.belly > 5000) {
+					t.push(`giving it a good pat.`);
+				} else {
+					t.push(`giving it a good feel.`);
+				}
+				t.push(`"Now I'm sure our viewers are wondering," he says, patting the firm dome. "Is it PlayerName()>>'s?"`);
+				if (eventSlave.pregSource === -1) {
+					if (eventSlave.bellyPreg > 450000) {
+						t.push(`${speak(`"Of course they are!"`)} ${he} proclaims proudly as ${he} <<if hasAnyArms($eventSlave)>>runs ${his} hand<<if hasBothArms($eventSlave)>>s<</if>> across<<else>>stretches out to show off<</if>> ${his} quivering mass. "All ${eventSlave.pregType} of them!"`);
+					} else if (eventSlave.bellyPreg > 100000) {
+						t.push(`${speak(`"Of course they are!"`)} ${he} proclaims proudly as ${he} <<if hasAnyArms($eventSlave)>>runs ${his} hand<<if hasBothArms($eventSlave)>>s<</if>> across<<else>>stretches out to show off<</if>> ${his} belly. "All ${eventSlave.pregType} of them!"`);
+					} else if (eventSlave.bellyImplant > 1500) {
+						t.push(speak(`"It's fake. Pretty hard to tell though, isn't it?"`));
+					} else if (eventSlave.bellyPreg > 1500) {
+						t.push(speak(`"Of course ${eventSlave.pregType > 1 ? `they are` : `it is`}!"`));
+					} else if (eventSlave.bellyFluid > 100) {
+						t.push(speak(`"Nah. It's all ${fluid} inside me."`));
+					} else if (eventSlave.bellyImplant > -1) {
+						t.push(speak(`"It's fake. Pretty hard to tell though, isn't it?"`));
+					} else {
+						t.push(speak(`"Of course ${eventSlave.pregType > 1 ? `they are` : `it is`}!"`));
+					}
+				} else {
+					t.push(speak(`"That's for me and my ${Master} only," ${he} teases, sticking out ${his} tongue.`));
+				}
+			}
+			if (eventSlave.broodmother === 2 && eventSlave.preg > 37) {
+				t.push(`${He} grunts and struggles to <<if hasBothLegs($eventSlave)>>spread ${his} legs<<else>>get into position<</if>>. ${speak(`"I'm sorry, another one is coming out right now..."`)} ${he} <<say>>s, turning red. The host, at a loss for words, can only watch as`);
+				t.push(`a child is born into the world, live on screen.`);
+				t.push(`a child is born into ${his}`);
+
+				switch(eventSlave.clothes) {
+					case "a toga":
+						t.push(`toga.`);
+						break;
+					case "a huipil":
+						t.push(`huipil.`);
+						break;
+					case "a slutty qipao":
+						t.push(`slutty qipao.`);
+						break;
+					case "a penitent nuns habit":
+						t.push(`habit.`);
+						break;
+					case "a slave gown":
+					case "a ball gown":
+						t.push(`gown.`);
+						break;
+					case "a comfortable bodysuit":
+						t.push(`bodysuit.`);
+						break;
+					case "a leotard":
+						t.push(`leotard.`);
+						break;
+					case "a bunny outfit":
+						t.push(`bunny outfit.`);
+						break;
+					case "a nice nurse outfit":
+						t.push(`nurse outfit.`);
+						break;
+					case "a slutty nurse outfit":
+						t.push(`slutty nurse outfit.`);
+						break;
+					case "a schoolgirl outfit":
+						t.push(`school clothes.`);
+						break;
+					case "a hijab and abaya":
+					case "a niqab and abaya":
+						t.push(`abaya.`);
+						break;
+					case "a klan robe":
+						t.push(`robe.`);
+						break;
+					case "a hijab and blouse":
+						t.push(`skirt.`);
+						break;
+					case "a burqa":
+						t.push(`burqa.`);
+						break;
+					case "a burkini":
+						t.push(`burkini.`);
+						break;
+					case "a kimono":
+						t.push(`kimono.`);
+						break;
+					case "a hanbok":
+						t.push(`hanbok.`);
+						break;
+					case "a nice maid outfit":
+						t.push(`maid outfit.`);
+						break;
+					case "a slutty maid outfit":
+						t.push(`skimpy maid outfit.`);
+						break;
+					case "a gothic lolita dress":
+					case "a halter top dress":
+					case "a long qipao":
+					case "a maternity dress":
+					case "a mini dress":
+					case "a Santa dress":
+					case "a biyelgee costume":
+						t.push(`dress.`);
+						break;
+					case "a latex catsuit":
+						t.push(`latex catsuit.`);
+						break;
+					case "a military uniform":
+						t.push(`uniform.`);
+						break;
+					case "a schutzstaffel uniform":
+						t.push(`uniform.`);
+						break;
+					case "a slutty schutzstaffel uniform":
+						t.push(`slutty uniform.`);
+						break;
+					case "a red army uniform":
+						t.push(`uniform.`);
+						break;
+					case "spats and a tank top":
+						t.push(`spats.`);
+						break;
+					case "a monokini":
+						t.push(`monokini.`);
+						break;
+					case "a cybersuit":
+						t.push(`cybersuit.`);
+						break;
+					case "a tight Imperial bodysuit":
+						t.push(`bodysuit.`);
+						break;
+					case "battlearmor":
+						t.push(`armor.`);
+						break;
+					case "Imperial Plate":
+						t.push(`ultra-heavy armor.`);
+						break;
+					case "a skirt":
+						t.push(`dress.`);
+						break;
+					case "a mounty outfit":
+					case "a police uniform":
+						t.push(`uniform.`);
+						break;
+					case "lederhosen":
+						t.push(`shorts.`);
+						break;
+					case "a courtesan dress":
+						t.push(`layered skirt.`);
+						break;
+					case "a bimbo outfit":
+						t.push(`thong.`);
+						break;
+					default:
+						t.push(`${eventSlave.clothes}.`);
+						break;
+				}
+			}
+
+			App.Events.addParagraph(node, t);
+
+			t = [];
+
+			t.push(`The interview winds on, gradually descending into prurient territory. ${eventSlave.slaveName} answers readily, giving everyone watching quite a window into an oversexed slave society.`);
+			if (eventSlave.intelligence + eventSlave.intelligenceImplant > 15) {
+				t.push(`${He}'s clever enough to <span class="green">shock and titillate</span> at the same time; in response to a probing question about whether ${he} has any plans for the rest of the night, ${he} <<say>>s, ${speak(`"Of course my ${Master} makes the plans. But I hope I can get back to the arcology early."`)} ${He} shifts suggestively in ${his} chair. "I'm looking forward to getting fucked tonight."`);
+			} else {
+				t.push(`${He}'s rather blunt in ${his} responses, answering with a little too much detail; not that the audience minds.`);
+			}
+			t.push(`The host, taken off guard, laughs in surprise and says he envies you that. He asks a follow up question that hints at ${his} sexual preferences without coming straight out and asking how ${he} likes it.`);
+			if (eventSlave.intelligence + eventSlave.intelligenceImplant + eventSlave.skill.entertainment > 130 && !eventSlave.tankBaby) {
+				t.push(`${He} has enough knowledge of the old world to be able to answer without going too far, and <span class="green">subtly alludes</span> to how much ${he} enjoys`);
+				if (eventSlave.fetish === "submissive") {
+					t.push(`submitting to you in bed.`);
+				} else if (eventSlave.fetish === "cumslut") {
+					if (!V.PC.dick) {
+						t.push(`eating you out.`);
+					} else {
+						t.push(`sucking you off.`);
+					}
+				} else if (eventSlave.fetish === "humiliation") {
+					t.push(`it when you show ${him} off in public.`);
+				} else if (eventSlave.fetish === "buttslut") {
+					t.push(`anal sex.`);
+				} else if (eventSlave.fetish === "boobs") {
+					t.push(`anything that involves ${his} breasts.`);
+				} else if (eventSlave.fetish === "sadist") {
+					t.push(`it whenever you share a reluctant slave with ${him}.`);
+				} else if (eventSlave.fetish === "masochist") {
+					t.push(`a good spanking.`);
+				} else if (eventSlave.fetish === "dom") {
+					t.push(`sharing a submissive slave with you.`);
+				} else if (eventSlave.fetish === "pregnancy") {
+					if (eventSlave.pregKnown) {
+						t.push(`sex while pregnant.`);
+					} else if (eventSlave.vagina > 0) {
+						t.push(`bareback.`);
+					} else {
+						t.push(`sharing a pregnant slave with you.`);
+					}
+				} else if (eventSlave.energy > 95) {
+					t.push(`sex, regardless of what kind it is.`);
+				} else {
+					t.push(`sex in the missionary position.`);
+				}
+
+				rep(500);
+			} else {
+				t.push(`${His} answer betrays how <<if ${eventSlave.tankBaby} > 0>>little ${he} knows<<else>>much ${he}'s forgotten<</if>> about the old world: ${he} mildly shocks the studio audience by describing`);
+				if (eventSlave.fetish === "submissive") {
+					t.push(`how good it feels when you hold ${him} down and fuck ${him}`);
+				} else if (eventSlave.fetish === "cumslut") {
+					if (!V.PC.dick) {
+						t.push(`how much fun sucking your cock is`);
+					} else {
+						t.push(`how much fun polishing your pearl is`);
+					}
+				} else if (eventSlave.fetish === "humiliation") {
+					t.push(`how hot it is to get fucked in public`);
+				} else if (eventSlave.fetish === "buttslut") {
+					t.push(`how much ${he} loves the feeling of you stretching ${his} anal ring`);
+				} else if (eventSlave.fetish === "boobs") {
+					t.push(`how much ${he} loves having ${his} nipples tugged`);
+				} else if (eventSlave.fetish === "sadist") {
+					t.push(`how much ${he} loves molesting other slaves with you`);
+				} else if (eventSlave.fetish === "masochist") {
+					t.push(`how good it feels to be forced`);
+				} else if (eventSlave.fetish === "dom") {
+					t.push(`how much ${he} loves holding other slaves down for you`);
+				} else if (eventSlave.fetish === "pregnancy") {
+					if (eventSlave.pregKnown || eventSlave.counter.births > 0) {
+						t.push(`how good sex feels while pregnant`);
+					} else if (eventSlave.vagina > 0) {
+						t.push(`how good cum feels inside ${him}`);
+					} else {
+						t.push(`how much fun it is to fuck pregnant slaves`);
+					}
+				} else if (eventSlave.energy > 95) {
+					t.push(`the average number of sexual encounters ${he} has in a week`);
+				} else {
+					t.push(`${his} sex life with you`);
+				}
+				t.push(`in a matter-of-fact tone of voice.`);
+			}
+
+			App.Events.addParagraph(node, t);
+
+			t = [];
+
+			if (eventSlave.intelligence + eventSlave.intelligenceImplant > 50) {
+				t.push(`Only because you know ${him} so well are you able to perceive the instant of cold calculation before ${he} makes a <span class="green">perfect tactical decision</span> and turns directly to the camera. "Whatever you want," ${he} <<say>>s confidently, ${speak(`"You can find it in a Free Cities arcology like my ${Master}'s. Where I live, there's`)}`);
+				if (arcology.FSRestart > 0) {
+					t.push(speak(`the most interesting people,`));
+				}
+
+				if (arcology.FSPaternalist > 0) {
+					t.push(speak(`wonderful opportunities for everyone,`));
+				}
+
+				if (arcology.FSAssetExpansionist > 0) {
+					t.push(speak(`boobs the size of beach balls,`));
+				}
+
+				if (arcology.FSRepopulationFocus > 0) {
+					t.push(speak(`lots of bellies of all sizes,`));
+				}
+
+				if (arcology.FSBodyPurist === "unset") {
+					t.push(speak(`gorgeous tattoos and piercings,`));
+				} else if (arcology.FSTransformationFetishist > 0) {
+					t.push(speak(`new assets every day,`));
+				}
+
+				if (arcology.FSPastoralist > 0) {
+					t.push(speak(`milk straight from the nipple,`));
+				}
+
+				if (arcology.FSPhysicalIdealist > 0) {
+					t.push(speak(`the most incredible oiled-up muscles,`));
+				} else if (arcology.FSHedonisticDecadence > 0) {
+					t.push(speak(`the softest, most laid-back girls,`));
+				}
+
+				if (arcology.FSRomanRevivalist > 0) {
+					t.push(speak(`Rome come again,`));
+				} else if (arcology.FSNeoImperialist > 0) {
+					t.push(speak(`a New Imperium worthy of the ages,`));
+				} else if (arcology.FSAztecRevivalist > 0) {
+					t.push(speak(`Blood empire reborn,`));
+				} else if (arcology.FSEgyptianRevivalist > 0) {
+					t.push(speak(`the land of the Pharaohs reborn,`));
+				}
+
+				if (arcology.FSGenderRadicalist > 0) {
+					t.push(speak(`more ass than you can possibly fuck,`));
+				} else if (arcology.FSGenderFundamentalist > 0) {
+					t.push(speak(`so much pussy it's unbelievable,`));
+				}
+
+				if (arcology.FSIntellectualDependency > 0) {
+					t.push(speak(`slaves eager to get in your pants,`));
+				}
+
+				if (arcology.FSSlaveProfessionalism > 0) {
+					t.push(speak(`slaves you can have a conversation with,`));
+				}
+
+				if (arcology.FSPetiteAdmiration > 0) {
+					t.push(speak(`where even the shortest can stand tall,`));
+				} else if (arcology.FSStatuesqueGlorification > 0) {
+					t.push(speak(`plenty of mouths at crotch height,`));
+				}
+
+				if (arcology.FSChattelReligionist > 0) {
+					t.push(speak(`a fulfilling sexual and spiritual life,`));
+				}
+
+				if (arcology.FSDegradationist > 0) {
+					t.push(speak(`bitches you can just hold down and use,`));
+				}
+
+				if (arcology.FSSupremacist > 0) {
+					t.push(speak(`_race power,`));
+				}
+
+				if (arcology.FSSubjugationist > 0) {
+					t.push(speak(`_race girls to cater to your every whim,`));
+				}
+
+				t.push(speak(`girls in pretty dresses and girls in string bikinis and girls who haven't worn clothes in years,`));
+				if (V.seeDicks !== 0) {
+					t.push(speak(`girls with huge dicks you can assfuck until they cum buckets, girls with soft dicks and no balls,`));
+				}
+				if (V.seeDicks !== 0 && V.seeDicks !== 100) {
+					t.push(speak(`girls with dicks the size of clits and girls with clits the size of dicks,`));
+				}
+				if (V.seeDicks !== 100) {
+					t.push(speak(`young girls on their first pregnancy, MILFs on their tenth,`));
+				}
+				t.push(speak(`lips, tongues,`));
+				if (arcology.FSEgyptianRevivalistIncestPolicy === 1) {
+					t.push(speak(`incest,`));
+				}
+				if (arcology.FSSlimnessEnthusiast === "unset") {
+					t.push(speak(`huge breasts and plush asses,`));
+				} else if (arcology.FSAssetExpansionist === "unset") {
+					t.push(speak(`pert tits and cute butts,`));
+				}
+				t.push(speak(`and more. I wouldn't trade it for anything." The host politely regains control of his show, but there's a cautious respect in the rest of his questions.`));
+
+				rep(1500);
+
+				App.Events.addParagraph(node, t);
+
+				t = [];
+
+				t.push(`${eventSlave.slaveName} even manages to <span class="green">respond well</span> to a probing question about your gender. ${He} ${lisps ? `lisps` : `explains`}, ${speak(`"You have to understand that all that nonsense about men and women means less to us in the Free Cities. My ${Master} is a successful and powerful _womanP.`)}`);
+				if (!V.PC.dick) {
+					t.push(`${speak(`We just pay the right amount of attention to the success and the power.`)} ${He} quirks a corner of ${his} mouth. "I know //I// do."`);
+				} else {
+					t.push(`${He} quirks a corner of ${his} mouth. ${speak(`"And <<heP>> has a //wonderful// cock."`)}`);
+				}
+
+				rep(500);
+			}
+
+			App.Events.addParagraph(node, t);
+
+			t = [];
+
+			t.push(`At the conclusion, the host`);
+			if (V.rep - oldRep > 200) {
+				t.push(`seems <span class="green">impressed</span> and says sincerely,`);
+			} else if (V.rep - oldRep < 0) {
+				t.push(`seems <span class="red">unimpressed</span> and says mockingly,`);
+			} else {
+				t.push(`says jokingly,`);
+			}
+			t.push(`"My dear it's been a pleasure. If all Free Cities <<print ${girl}>>s are like you I might have to look into immigrating. Ladies and gentlemen, good night!"`);
+
+			return t;
+		}
+
+		function decline() {
+			t = [];
+
+			t.push(`You decline. The media representative of the show is understanding. "I'll be sure to contact you if we ever have another opening," she says. "You're pretty interesting, you know."`);
+
+			return t;
+		}
+	}
+};
diff --git a/src/events/randomEvent.js b/src/events/randomEvent.js
index be6a758b972..54a620376aa 100644
--- a/src/events/randomEvent.js
+++ b/src/events/randomEvent.js
@@ -13,6 +13,7 @@ App.Events.getIndividualEvents = function() {
 		new App.Events.RESSAssFitting(),
 		new App.Events.RESSCockFeederResistance(),
 		new App.Events.RESSComfortableSeat(),
+		new App.Events.RESSConcubineInterview(),
 		new App.Events.RESSDevotedAnalVirgin(),
 		new App.Events.RESSDevotedEducated(),
 		new App.Events.RESSDevotedShortstack(),
-- 
GitLab