code:
App.Events.REBusyMasterSuite = class REBusyMasterSuite extends App.Events.BaseEvent {
	eventPrerequisites() {
		return [
			() => V.ConcubineID !== 0
		];
	}

	actorPrerequisites() {
		const req = [
			s => s.fuckdoll === 0,
			s => s.assignment === Job.MASTERSUITE,
			s => (
				(canDoAnal(s) && s.anus > 0) ||
				(canDoVaginal(s) && s.vagina > 0)
			),
		];

		return [ // Need at least three actors. Grab more later.
			req,
			req,
			req,
		];
	}

	execute(node) {
		V.nextButton = "Continue";
		V.nextLink = "RIE Eligibility Check";

		const msSlaves = V.slaves.filter((s) => s.fuckdoll === 0 && s.assignment === Job.MASTERSUITE)
			.map((s) => {
				/** @type {Array<FC.SlaveActs|"none">} */
				let options = [];
				if (canDoAnal(s) && s.anus > 0) {
					options.push("anal");
				}
				if (canDoVaginal(s) && s.vagina > 0) {
					options.push("vaginal");
				}
				if (options.length === 0) {
					options.push("none");
				}
				return {slave: s, mode: options.pluck()};
			});
		const [participants, nonparticipants] = _.partition(msSlaves, s => s.mode !== "none");
		const bottomSlave = participants.first().slave;
		let r = [];

		const {
			He,
			he, his, him, himself
		} = getPronouns(S.Concubine);

		const {
			his2, him2, he2
		} = getPronouns(bottomSlave).appendSuffix("2");

		r.push(`You have an extended meeting with a prominent citizen planned, from the start of business in the morning until you're done. That's likely to be in the late evening, since he's probably going to get into technical business proposals, and ${S.Concubine.slaveName} knows it. ${He} is surprised, therefore, when a minor business emergency calls your would-be interlocutor away, canceling the meeting and sending you home hours earlier than you'd planned. ${He}`);
		if (canTalk(S.Concubine)) {
			r.push(`giggles helplessly`);
		} else {
			r.push(`signs humorously`);
		}
		r.push(`at the surprise when you walk into your suite. Apparently, ${he} decided to while away the hours until you got back by having some truly grandiose group sex with all the slaves you have in the suite.`);

		App.Events.addParagraph(node, r);
		r = [];

		r.push(`${He} had to turn to greet you as you entered, since ${he} was facing away from the entry, and the reason why is rather obvious. Up near the opposite wall, ${bottomSlave.slaveName} is on the floor with ${his2} face down and ${his2} ass up.`);

		App.Events.addParagraph(node, r);

		/** helper function for train...identify the hole being penetrated by the next slave
		 * @param {App.Entity.SlaveState} slave
		 * @param {FC.SlaveActs} mode
		 */
		function hole(slave, mode) {
			if (mode === "vaginal") {
				if (slave.vagina > 2) {
					return "loose pussy";
				} else if (slave.vagina > 1) {
					return "pussy";
				} else {
					return "tight pussy";
				}
			} else if (mode === "anal") {
				if (slave.anus > 2) {
					return "asspussy";
				} else if (slave.anus > 1) {
					return "asshole";
				} else {
					return "tight butt";
				}
			}
		}

		/** helper function for train...identify the tool being used by the next slave to penetrate this slave
		 * @param {App.Entity.SlaveState} slave
		 * @param {FC.SlaveActs} mode
		 * @param {App.Entity.SlaveState} nextSlave
		 */
		function penetrator(slave, mode, nextSlave) {
			let t = ``;
			if (canPenetrate(nextSlave)) {
				t += nextSlave.slaveName + "'s ";
				if (nextSlave.dick > 3) {
					t += "painfully big";
				} else {
					t = "hard";
				}
				t += " dick";
			} else {
				t += "a ";
				const size = (mode === "vaginal" ? slave.vagina : slave.anus);
				if (size > 2) {
					t += "huge";
				} else if (size > 1) {
					t += "big";
				} else {
					t += "moderate";
				}
				t += " strap-on worn by " + nextSlave.slaveName;
			}
			return t;
		}

		App.Events.addParagraph(node, [
			/* build the train from all participating slaves */
			participants.reduce((acc, cur, i, arr) => {
				let r = ``;
				const {mode, slave} = cur;
				if (mode === "none") {
					throw new Error("Non-participating slave is participating"); // impossible, but needed for typechecking
				}
				const nextSlave = (i + 1 >= arr.length) ? S.Concubine : arr[i + 1].slave;

				if (i === 0) {
					return r; /* bottom slave already accounted for */
				} else if (i !== arr.length - 1) {
					/* middle slaves */
					r += `${slave.slaveName}'s ${hole(slave, mode)} is filled by ${penetrator(slave, mode, nextSlave)}, `;
					if (nextSlave.belly >= 150000) {
						r += `whose middle is so obscenely distended that ${slave.slaveName} is struggling to support it.`;
					} else if (nextSlave.belly >= 10000 || nextSlave.weight >= 160) {
						r += `whose middle is resting on ${slave.slaveName}'s ${slave.skin} back.`;
					} else if (nextSlave.boobs > 10000) {
						r += `whose tits are so unreasonably large they're resting on ${slave.slaveName}'s ${slave.skin} back.`;
					} else if (slave.butt > 4) {
						r += `well cushioned by ${slave.slaveName}'s huge ass.`;
					} else if (nextSlave.nipples === "huge") {
						r += `who is bending to rub ${getPronouns(nextSlave).his} enormous hard nipples across ${slave.slaveName}'s ${slave.skin} back.`;
					} else if (nextSlave.lips > 40) {
						r += `who is bending forward to nibble along ${slave.slaveName}'s ${slave.skin} neck.`;
					} else if (hasAnyArms(nextSlave)) {
						r += `who is reaching around to grope ${slave.slaveName}'s ${slave.skin} chest.`;
					} else {
						r += `who is propped up against ${slave.slaveName}'s ${slave.skin} butt.`;
					}
				} else {
					/* top slave */
					r += `Finally, ${slave.slaveName}'s ${hole(slave, mode)} is filled by ${penetrator(slave, mode, nextSlave)}, who has paused ${his} thrusting to issue a preemptory order to the slaves to stay where they are, before turning to greet you cheerfully.`;
				}
				seX(nextSlave, "penetrative", slave, mode, 1);
				return acc + ` ` + r;
			}, ``)
		]);
		/* and now describe what the non-participating slaves are doing */
		if (nonparticipants.length > 0) {
			App.Events.addParagraph(node, [
				`${toSentence(nonparticipants.map((s) => s.slave.slaveName))} can't participate in the train, so ${S.Concubine.slaveName} has them busy lying under the slaves who are, offering what oral stimulation they can manage.`
			]);
			for (const s of nonparticipants) {
				actX(s.slave, "oral");
			}
		}

		const top = participants.last();

		/** @type {FC.SlaveActs|"none"} */
		let concubineMode = "none";
		let concubineHole;
		if (canDoAnal(S.Concubine) && S.Concubine.anus > 0) {
			concubineMode = "anal";
			if (S.Concubine.anus > 2) {
				concubineHole = "loose anus";
			} else if (S.Concubine.anus > 1) {
				concubineHole = "asshole";
			} else {
				concubineHole = "tight little asshole";
			}
		} else if (canDoVaginal(S.Concubine) && S.Concubine.vagina > 0) {
			concubineMode = "vaginal";
			if (S.Concubine.vagina > 2) {
				concubineHole = "loose pussy";
			} else if (S.Concubine.vagina > 1) {
				concubineHole = "pussy";
			} else {
				concubineHole = "tight little pussy";
			}
		}

		const responses = [];
		if (concubineMode !== "none") {
			responses.push(new App.Events.Result("Slide in behind the concubine for some action", behindConcubine));
		}
		responses.push(new App.Events.Result("Slide in up at the head of the bed for some oral", bedHead));
		App.Events.addResponses(node, responses);

		function behindConcubine() {
			const frag = document.createDocumentFragment();
			const r = [];
			r.push(`${S.Concubine.slaveName} anticipates you, and is already sliding ${himself} partway out of ${top.slave.slaveName} and cocking ${his} hips to spread ${his}`);
			if (S.Concubine.butt > 15) {
				r.push(`immeasurable`);
			} else if (S.Concubine.butt > 10) {
				r.push(`expansive`);
			} else if (S.Concubine.butt > 7) {
				r.push(`enormous`);
			} else if (S.Concubine.butt > 5) {
				r.push(`huge`);
			} else if (S.Concubine.butt > 2) {
				r.push(`healthy`);
			} else {
				r.push(`trim`);
			}
			r.push(`buttocks as wide as ${he} can without disentangling ${himself} from the sex train. Up on the bed ${he}'s at just the right height, and ${he} winks ${his} ${concubineHole}`);
			if (canTalk(S.Concubine)) {
				r.push(`invitingly, laughing at the sheer decadence of it.`);
			} else {
				r.push(`invitingly.`);
			}

			if (V.PC.dick === 0) {
				r.push(`You pull on a strap-on and push it`);
			} else {
				r.push(`You push yourself`);
			}
			r.push(`home with some force, your concubine's extreme state of arousal leaving ${his} ass very relaxed and welcoming; the thrust shoves ${him} forward to hilt ${himself} in ${top.slave.slaveName}, and so on down the line, producing more giggling, some squealing, and much scrabbling for balance. It takes a while to find the rhythm, and while you wait for the inevitable tangles to be fixed you decide to challenge yourself. You reach around and`);
			if (S.Concubine.boobs > 10000) {
				r.push(`sink your hands into ${S.Concubine.slaveName}'s massive boobs,`);
			} else if (S.Concubine.boobs > 1000) {
				r.push(`heft ${S.Concubine.slaveName}'s heavy boobs,`);
			} else if (S.Concubine.boobs > 300) {
				r.push(`tease ${S.Concubine.slaveName}'s healthy breasts,`);
			} else {
				r.push(`massage ${S.Concubine.slaveName}'s flat chest,`);
			}
			r.push(`nibbling ${his} ${S.Concubine.skin} neck, and generally torturing ${him} with stimulation until ${he} climaxes to ${his} beloved ${getWrittenTitle(S.Concubine)}. When ${he} does, you extract yourself and pull ${him} unceremoniously off ${top.slave.slaveName}, replacing ${him} in ${top.slave.slaveName}'s`);

			if (top.mode === "anal") {
				r.push(`butt.`);
			} else {
				r.push(`pussy.`);
			}
			r.push(`You work your way down the line, orgasm by orgasm, delaying your own climax until the exhausted ${bottomSlave.slaveName} manages yet another orgasm by heroic efforts, and you're done. As you roll off ${him2}, panting, there is scattered applause and much congratulation from your harem of trusting slaves.`);
			S.Concubine.trust += 5;
			if (concubineMode !== "none") {
				seX(V.PC, "penetrative", S.Concubine, concubineMode);
			}
			for (const s of msSlaves) {
				s.slave.trust += 1;
				if (s.mode !== "none") {
					seX(V.PC, "penetrative", s.slave, s.mode);
				}
			}
			if (canImpreg(bottomSlave, V.PC)) {
				knockMeUp(bottomSlave, 10, 1, V.PC.ID);
			}

			App.Events.addParagraph(frag, r);
			return frag;
		}

		function bedHead() {
			const frag = document.createDocumentFragment();
			const r = [];
			r.push(`${bottomSlave.slaveName}'s ${App.Desc.eyesColor(bottomSlave)} widen when you push ${him2} upright for a moment and slide in under ${him2}, but ${he2} wraps ${his2}`);
			if (bottomSlave.lips > 95) {
				r.push(`facepussy`);
			} else if (bottomSlave.lips > 70) {
				r.push(`dick sucking lips`);
			} else if (bottomSlave.lips > 20) {
				r.push(`pretty lips`);
			} else {
				r.push(`lips`);
			}
			r.push(`around your`);
			if (V.PC.dick === 0) {
				r.push(`clit`);
			} else {
				r.push(`cock`);
				if (V.PC.vagina !== -1) {
					r.push(`and starts stroking your pussy`);
				}
			}
			r.push(`eagerly enough, even as ${msSlaves[1].slave.slaveName} goes back to fucking ${him2}. The sex train is fairly gentle, since anything too fast would disintegrate the gymnastic arrangement, but ${bottomSlave.slaveName} is still getting enough stimulation that ${he2} whimpers quietly into your`);
			if (V.PC.vagina !== -1) {
				r.push(`pussy,`);
			} else {
				r.push(`dick,`);
			}
			r.push(`a nice feeling. The blowjob is`);
			if (bottomSlave.skill.oral >= 100) {
				r.push(`masterful, despite the distraction,`);
			} else if (bottomSlave.skill.oral > 10) {
				r.push(`serviceable, despite the distraction,`);
			} else {
				r.push(`only mediocre, but serviceable enough,`);
			}
			r.push(`so you let ${him2} work for a while before gently shoving ${him2} off the side of the bed and telling ${him2} to get to the back of the line. The slaves all shuffle forward awkwardly, and inadvertently block your view so that you hear rather than see ${bottomSlave.slaveName} start groping your concubine ${S.Concubine.slaveName}'s`);
			if (S.Concubine.butt > 15) {
				r.push(`immeasurable`);
			} else if (S.Concubine.butt > 10) {
				r.push(`expansive`);
			} else if (S.Concubine.butt > 7) {
				r.push(`enormous`);
			} else if (S.Concubine.butt > 5) {
				r.push(`huge`);
			} else if (S.Concubine.butt > 2) {
				r.push(`healthy`);
			} else {
				r.push(`trim`);
			}
			r.push(`ass down near the foot of the bed. You climax, on occasion, but are enjoying yourself so immensely that you let the slaves continue the rotation until you're entirely spent, and they're entirely exhausted. You reach for a tablet to get some work done, in the center of a pile of sweaty, tired slaves, all of whom are resting with at least one body part in contact with their beloved ${properMaster()}.`);
			S.Concubine.devotion += 5;
			seX(V.PC, "penetrative", S.Concubine, "oral");
			for (const s of msSlaves) {
				s.slave.devotion += 1;
				seX(V.PC, "penetrative", s.slave, "oral", 2);
			}

			App.Events.addParagraph(frag, r);
			return frag;
		}
	}
};


code:
App.Events.REBusyServantsQuarters = class REBusyServantsQuarters extends App.Events.BaseEvent {
	eventPrerequisites() {
		return [
			() => App.Entity.facilities.servantsQuarters.employeesIDs().size > 3
		];
	}

	execute(node) {
		V.nextButton = "Continue";
		V.nextLink = "RIE Eligibility Check";
		App.Events.addParagraph(node, [`Your penthouse is very well staffed with servants. The trend in modern buildings is to design around automatic cleaning systems. Dusting, mopping, and polishing are no longer really necessary when machines that do them more cheaply and thoroughly than any human are readily available. Keeping slaves to clean is an ostentation, and visitors to your quarters are often surprised and gratified to see a sex slave working away in the old way.`]);
		App.Events.addParagraph(node, [`The busy servants' quarters are a reservoir of slaves that can be used for almost any whim that occurs to you.`]);

		repX(500, "event");

		App.Events.addResponses(node, [
			new App.Events.Result("Share the servants' quarters with your more favored slaves", share),
		]);

		function share() {
			for (const slave of V.slaves) {
				if (slave.assignment !== Job.QUARTER) {
					slave.devotion += 4;
					if (canPenetrate(slave)) {
						actX(slave, "penetrative", 2);
						if (canDoVaginal(slave)) {
							actX(slave, "vaginal", 1);
						} else {
							actX(slave, "penetrative", 1);
						}
					} else if (canDoVaginal(slave)) {
						actX(slave, "vaginal", 2);
						actX(slave, "penetrative", 1);
					} else {
						actX(slave, "penetrative", 3);
					}
				} else {
					slave.devotion -= 5;
					if (canDoVaginal(slave) && slave.vagina > 0) {
						actX(slave, "vaginal");
					} else if (canDoAnal(slave) && slave.anus > 0) {
						actX(slave, "anal");
					}
					actX(slave, "oral", 5);
				}
			}
			return `The poor slaves in the servants' quarters are lower than almost any others, and they know it. Unfortunately for them, they're about to spend a long weekend knowing it unusually well. Sleeping time is usually nearly inviolate; you are the only person in the penthouse who is permitted to wake a sleeping slave for any but emergency reasons. Not now. You haunt the servants' quarters, using and abusing at will, and encourage your better slaves to follow your example. They quickly take the opportunity to be better than someone for once, and compete with each other in sexual harassment of the servants. They appreciate having targets for their frustrations.`;
		}
	}
};

repo_name: Elohiem/fc

license: mit


code:
App.Events.RECitizenHookup = class RECitizenHookup extends App.Events.BaseEvent {
	eventPrerequisites() {
		return [
			() => V.policies.regularParties === 1,
		];
	}

	execute(node) {
		let r = [];
		let repopHookupPregnant;
		V.nextButton = "Continue";
		V.nextLink = "RIE Eligibility Check";

		const fsArray = [];
		for (const FS of App.Data.FutureSociety.fsNames) {
			if (V.arcologies[0][FS] !== "unset") {
				fsArray.push(FS);
			}
		}
		const FS = fsArray.random();
		console.log(FS);
		const fsAdj = (fsArray.length > 0) ? App.Data.FutureSociety.records[FS].adj : "none";

		r.push(`At night, the best living areas in the arcology offer a constant mélange of selective entertainments. There's a perpetual social scrum of who is to be invited to what going on, and you occupy a preeminent place atop it, mostly aloof from the struggles of your citizens for recognition and influence. You're invited to almost everything, since everyone who lives here knows the value of being in favor with the owner of the arcology. Invitations to your parties, of course, are some of the most valuable social currency in the arcology and one of ${V.assistant.name}'s most important duties is to help you manage them without wasting your valuable time. It's not actually necessary for you to attend your own parties, since almost everyone will be glad to be seen in the entertainment area of the penthouse whether or not the`);
		if (V.PC.title === 1) {
			r.push(`proprietor`);
		} else {
			r.push(`proprietress`);
		}
		r.push(`is actually present.`);
		App.Events.addParagraph(node, r);
		r = [];
		r.push(`But tonight, you've put in an appearance. Your citizens are drinking your`);
		if (V.arcologies[0].FSPastoralist !== "unset") {
			r.push(`milk`);
		} else if (V.arcologies[0].FSRestart !== "unset") {
			r.push(`finest alcohol`);
		} else {
			r.push(`alcohol`);
		}
		r.push(`and eating your food, though of course they helped pay for it through their rent. They're performing a complex dance of social dominance, and it all radiates around you, with complex unspoken rules of collective approval governing which citizens cycle past you for a word, and for how long. During a low point in the ebb and flow,`);
		switch (fsAdj) {
			case "Subjugationist":
			case "Supremacist":
				r.push(`a pretty, racially pure young woman`);
				break;
			case "Gender Radicalist":
				r.push(`a beautiful young futa`);
				break;
			case "Gender Fundamentalist":
				r.push(`a good-looking young lady`);
				break;
			case "Repopulationist":
				if (V.arcologies[0].FSRepopulationFocusLaw === 1 && (random(1, 10) > 3)) {
					repopHookupPregnant = 1;
					r.push(`a heavily pregnant young lady`);
				} else {
					repopHookupPregnant = 0;
					r.push(`a pretty, fertile young woman with wide, child-bearing hips`);
				}
				break;
			case "Eugenics":
				r.push(`a stunningly gorgeous woman`);
				break;
			case "Paternalist":
				r.push(`a pretty, cheerful young woman`);
				break;
			case "Degradationist":
				r.push(`a confident girl`);
				break;
			case "Body Purist":
				r.push(`a clean-looking young woman`);
				break;
			case "Transformation Fetishist":
				r.push(`a nicely augmented girl`);
				break;
			case "Youth Preferentialist":
				if (V.minimumSlaveAge < 13) {
					r.push(`an adorable little loli`);
				} else if (V.minimumSlaveAge < 18) {
					r.push(`a pretty teenage girl`);
				} else {
					r.push(`a nice looking girl`);
				}
				break;
			case "Maturity Preferentialist":
				r.push(`an attractive, mature woman`);
				break;
			case "Slimness Enthusiast":
				r.push(`a slim young thing`);
				break;
			case "Asset Expansionist":
				r.push(`curvaceous young woman`);
				break;
			case "Pastoralist":
				r.push(`a hot little lady`);
				break;
			case "Physical Idealist":
				r.push(`a hot little amazon`);
				break;
			case "Hedonistic":
				r.push(`a plump little cutey`);
				break;
			case "Chattel Religionist":
				r.push(`a pretty, devout-looking young woman`);
				break;
			case "Roman Revivalist":
				r.push(`a proper young Roman lady`);
				break;
			case "Neo-Imperialism":
				r.push(`a gorgeous young Imperial Knight with flowing blonde hair and a scarred face`);
				break;
			case "Aztec Revivalist":
				r.push(`a natural Aztec beauty`);
				break;
			case "Egyptian Revivalist":
				r.push(`a pretty, sun-kissed lady`);
				break;
			case "Edo Revivalist":
				r.push(`a proper Edo lady`);
				break;
			case "Arabian Revivalist":
				r.push(`a pretty Arabian princess`);
				break;
			case "Chinese Revivalist":
				r.push(`a pretty Chinese lady`);
				break;
			case "Intellectual Dependency":
				r.push(`a cute party girl`);
				break;
			case "Slave Professionalism":
				r.push(`an elegant woman`);
				break;
			case "Petite Admiration":
				r.push(`a delightfully short young lady`);
				break;
			case "Statuesque Glorification":
				r.push(`a towering figure`);
				break;
			default:
				r.push(`a pretty young woman`);
		}
		r.push(`sidles up to you. She begins to introduce herself, but one of the advantages of your connection to the arcology is that you always know who everyone is, and you greet her by name, which people have never learned not to be impressed by. She gushes about some of your recent`);
		if (fsAdj !== "none") {
			r.push(fsAdj);
		}
		r.push(`actions, displaying an unusual grasp of what you've been planning. Despite her sincere interest, she's obviously got something else on her mind.`);
		App.Events.addParagraph(node, r);
		r = [];
		r.push(`She's yours for the taking, if you want her, and if her praise and proximity weren't enough to make that clear, she manages to`);
		switch (fsAdj) {
			case "Subjugationist":
			case "Supremacist":
				r.push(`give you an excellent view straight down her ethnically superior cleavage, straining against the top of her fashionable dress.`);
				break;
			case "Gender Radicalist":
				r.push(`simultaneously give you an excellent view straight down her cleavage, and bring the material of her sheer dress tight across her legs in a way that outlines her dick.`);
				break;
			case "Gender Fundamentalist":
				r.push(`press her flirting as far she can decorously take it, batting her eyes at you coquettishly.`);
				break;
			case "Repopulationist":
				if (repopHookupPregnant === 1) {
					r.push(`lean back just far enough that her full term, triplets rounded middle splits the front of her overly tight dress.`);
				} else {
					r.push(`press her hips up against your own, before leaning in and whispering`);
					if (V.arcologies[0].FSRepopulationFocusLaw === 1) {
						r.push(`"My womb is ready to do its duty."`);
					} else {
						r.push(`"I'm ripe for breeding right now."`);
					}
				}
				break;
			case "Eugenics":
				r.push(`give you an excellent view straight down her perfect cleavage, straining against the top of her name-brand dress.`);
				break;
			case "Paternalist":
				r.push(`brush her breasts against your arm, presuming on the egalitarian nature of your Paternalist society to flirt a little aggressively.`);
				break;
			case "Degradationist":
				r.push(`raise one shoulder far enough that her breast on that side pulls its nipple just clear of her tight leather dress, revealing a spiked piercing.`);
				break;
			case "Body Purist":
				r.push(`arch her back with such warm propinquity that her natural breasts almost spill out of her tight little dress, and actually reveal the upper edges of their areolae.`);
				break;
			case "Transformation Fetishist":
				r.push(`pop her huge fake boobs entirely out of her tight little evening dress without even using her hands.`);
				break;
			case "Youth Preferentialist":
				r.push(`perfectly balance her youthful, innocent appeal with the proper decorum between you and a citizen.`);
				break;
			case "Maturity Preferentialist":
				r.push(`perfectly balance her matronly, sensual appeal with the proper decorum between you and a citizen.`);
				break;
			case "Slimness Enthusiast":
				r.push(`turn from side to side as she flirts with you in a way that shows off the coquettish forum under her tight dress to great effect.`);
				break;
			case "Asset Expansionist":
				r.push(`arch her back with such warm propinquity that her huge breasts spill out of her tight little dress, springing clear to offer themselves glorious and nude.`);
				break;
			case "Pastoralist":
				r.push(`let you know that she's almost entirely milk-fed, while giving you quite an eyeful of her straining cleavage.`);
				break;
			case "Physical Idealist":
				r.push(`get a pretty good flex going without being obvious about it, outlining her abs against the sheer midsection of her tight dress.`);
				break;
			case "Hedonistic":
				r.push(`lean her chubby body back far enough to pop the buttons off her top and allow her ample breasts and armful of a belly to hang free.`);
				break;
			case "Chattel Religionist":
				r.push(`assume just a hint of a Chattel Religionist devotional pose used to request penetration. It's heavy flirting, of a modern religious sort.`);
				break;
			case "Roman Revivalist":
				r.push(`hint that her pudicitia, that is her purity, would be if anything enhanced by sexual commerce with someone as powerful as you.`);
				break;
			case "Neo-Imperialism":
				r.push(`hint that as a Knight under your banner, to serve you in *any* way would be among the greatest of honors.`);
				break;
			case "Aztec Revivalist":
				r.push(`hint that her devotion, which is the most important thing, cannot be besmirched by tasting your divine power.`);
				break;
			case "Egyptian Revivalist":
				r.push(`hint that she would like nothing better than to bask in the pharaonic light in the arcology, very close to its source, while loosening her linen dress a little.`);
				break;
			case "Edo Revivalist":
				r.push(`allude to the refined pleasures, while assuming a slightly less dignified posture in her gorgeous kimono.`);
				break;
			case "Arabian Revivalist":
				r.push(`reference young Scheherazade and mighty Shahryar in a way that suggests she's quite willing to play the former.`);
				break;
			case "Chinese Revivalist":
				r.push(`allude to the divinity that resides with the powerful, implying that she'd very much like to come closer to it.`);
				break;
			case "Intellectual Dependency":
				r.push(`hint that she forgot to put on panties and that she needs that dripping sound checked out.`);
				break;
			case "Slave Professionalism":
				r.push(`bring you fully erect with a single, masterful stroke of her fingers.`);
				break;
			case "Petite Admiration":
				r.push(`give the bulge in your pants a quick kiss.`);
				break;
			case "Statuesque Glorification":
				r.push(`affectionately rest her breasts on your head.`);
				break;
			default:
				r.push(`flirt with you quite hard without crossing any lines between a citizen and an arcology owner.`);
		}
		r.push(`She's clearly attracted to you; even the most consummate actress would have difficulty fooling you, and her breath is a little quick, her pupils are a bit dilated, and she's blushing cutely. But she's no fool, either. A casual liaison with ${PCTitle()} would be a tremendous social boost for her.`);
		App.Events.addParagraph(node, r);

		const choices = [
			new App.Events.Result(`Keep aloof without offending her`, aloof),
			new App.Events.Result(`To them that hath, it shall be given`, give)
		];
		if (fsAdj !== "none") {
			choices.push(new App.Events.Result(`Emphasize her societal style with exhibitionism`, exhibitionism));
		}
		App.Events.addResponses(node, choices);

		function aloof() {
			const frag = new DocumentFragment();
			let r = [];
			r.push(`You thank her for her praise, weighting the words in just the right way to communicate that you consider her flirtations worthy compliments, and nothing more. She understands immediately, communicating acceptance and pleasure at her own daring with nothing more than a thankful look in your eyes. This is how you approach matters like this. You are the ruler of this place and it behooves you to maintain a balance atop all your citizens without showing any susceptibility to solicitation. A little incident like this has little effect on its own, but your habit of maintaining proper reserve creates a reputation for judiciousness that businesspeople consider attractive for arcology investment.`);
			V.arcologies[0].prosperity += 3;
			App.Events.addParagraph(frag, r);
			return frag;
		}

		function give() {
			const frag = new DocumentFragment();
			let r = [];
			r.push(`You're not exactly starved for casual sex, but you've never thought there was any such thing as too much of a good thing. You place a`);
			if (V.PC.title === 1) {
				r.push(`masculine`);
			} else {
				r.push(`feminine`);
			}
			r.push(`hand against the small of her back, feeling the warmth of her through the material of her evening wear. You hear a slight gasp from her as she realizes that her gambit has succeeded with more immediate effect than she expected. She shivers with anticipation as you steer her back through a side door, making a discreet exit towards your private suite.`);
			if (S.Concubine) {
				const {
					he, his
				} = getPronouns(S.Concubine);
				if (S.Concubine.intelligence+S.Concubine.intelligenceImplant > 50) {
					r.push(`${S.Concubine.slaveName} is there, of course, and ${he} instantly`);
					if (canSee(S.Concubine)) {
						r.push(`sees`);
					} else {
						r.push(`realizes`);
					}
					r.push(`that ${his} continued presence for a ménage à trois is wanted by both you and your guest.`);
				} else if (S.Concubine.intelligence+S.Concubine.intelligenceImplant < -50) {
					r.push(`${S.Concubine.slaveName} is there, of course, absentmindly doing whatever it is ${he} does when you are not around, and unsurprisingly fails to`);
					if (canSee(S.Concubine)) {
						r.push(`see`);
					} else {
						r.push(`realize`);
					}
					r.push(`that ${his} presence might not be wanted.`);
				} else if (S.Concubine.fetish === "mindbroken") {
					r.push(`${S.Concubine.slaveName} is there, of course, completely indifferent to you or your guest's presence.`);
				}
			}
			r.push(`Your guest restrains her eager praise now that you're in private, but her wide-eyed appreciation of your domain is compliment enough. Once in your suite, she strips, revealing`);
			switch (fsAdj) {
				case "Subjugationist":
				case "Supremacist":
					r.push(`her fresh, pure body.`);
					break;
				case "Gender Radicalist":
					r.push(`perky young breasts, a pretty pussy, and a stiff dick above it.`);
					break;
				case "Gender Fundamentalist":
					r.push(`perky young breasts and an elegantly coiffed strip of hair that perfectly highlights her demure pussy.`);
					break;
				case "Repopulationist":
					if (repopHookupPregnant === 1) {
						if (random(1, 10) > 7) {
							r.push(`an experienced body, comfortable with the burdens of pregnancy.`);
						} else {
							r.push(`an inexperienced body undergoing its very first pregnancy.`);
						}
						r.push(`She's taken good care of herself; not a single stretch mark can be seen across her proportionally giant belly.`);
					} else {
						if (V.arcologies[0].FSRepopulationFocusLaw === 1) {
							r.push(`an experienced body, ready and eager to grow fecund once more.`);
						} else {
							r.push(`an inexperienced body, but one with potential for becoming quite fecund.`);
						}
					}
					break;
				case "Eugenics":
					r.push(`a near flawless body; the only distinguishable mark on it: a small tattoo of a prestigious school.`);
					break;
				case "Paternalist":
					r.push(`a nice young body, with all the little attractions and flaws of a free girl's.`);
					break;
				case "Degradationist":
					r.push(`a taut body covered in dominant tattoos and spiky piercings.`);
					break;
				case "Body Purist":
					r.push(`a delectably curvaceous young body unmarred by any trace of surgical intervention.`);
					break;
				case "Transformation Fetishist":
					r.push(`a massive fake bubble butt to go with her fake boobs.`);
					break;
				case "Youth Preferentialist":
					r.push(`that her whole body looks fresh, untouched, and quite young.`);
					break;
				case "Maturity Preferentialist":
					r.push(`a big pair of motherly tits, generous hips, a broad ass, and total self confidence.`);
					break;
				case "Slimness Enthusiast":
					r.push(`perky little breasts, a smooth waist, trim hips, and a cute little ass.`);
					break;
				case "Asset Expansionist":
					r.push(`an inhumanly enormous ass to match her similarly improbable boobs.`);
					break;
				case "Pastoralist":
					r.push(`amply milk-fed assets.`);
					break;
				case "Physical Idealist":
					r.push(`the dimples that form on the sides of her cute buttocks when she flexes.`);
					break;
				case "Hedonistic":
					r.push(`well-fed and delightfully jiggly assets.`);
					break;
				case "Chattel Religionist":
					r.push(`a fresh and ready body, adorned here and there with sensual devotional jewelry.`);
					break;
				case "Roman Revivalist":
					r.push(`a graceful, milk-pale vision of classical beauty.`);
					break;
				case "Neo-Imperialism":
					r.push(`a statuesque body, corded with fit musculature made for practical service.`);
					break;
				case "Aztec Revivalist":
					r.push(`a strong, tight, bronze body.`);
					break;
				case "Egyptian Revivalist":
					r.push(`a perfect expanse of smooth, warm, tanned skin.`);
					break;
				case "Edo Revivalist":
					r.push(`a graceful form so perfectly pale that her face requires almost no whitening at all.`);
					break;
				case "Arabian Revivalist":
					r.push(`a nubile young body perfectly formed for a Sultan's bed.`);
					break;
				case "Chinese Revivalist":
					r.push(`a pretty young body that would not look out of place in an Imperial bed.`);
					break;
				case "Intellectual Dependency":
					r.push(`a young body practically begging you for dick.`);
					break;
				case "Slave Professionalism":
					r.push(`an elegant, mature body that knows its way around the bedroom.`);
					break;
				case "Petite Admiration":
					r.push(`an adorably petite figure.`);
					break;
				case "Statuesque Glorification":
					r.push(`that you have to crane your neck back to take in her full stature.`);
					break;
				default:
					r.push(`a hot young body.`);
			}
			r.push(`Citizens like her often appreciate a good hard fuck, since regular submission to a pounding from sex slaves would be a scandal. There's little opprobrium waiting for you if it's known you had her, though, and she's deliciously eager as you press her down onto the bed${(V.PC.dick === 0) ? " and pull on your usual harness" : ""}. She ruts herself hard back against you as you thrust into her, moaning, and after a short while she begs for it even harder, so you flip her over and mount her like a bitch, making her scream.`);
			if (S.Concubine) {
				const {
					his, him
				} = getPronouns(S.Concubine);
				r.push(`The view of your conquest's rutting back is nice, of course, but after enjoying it for a few moments you pull ${S.Concubine.slaveName} in`);
				if (S.Concubine.intelligence+S.Concubine.intelligenceImplant > 50) {
					r.push(`and kiss your favorite deeply, playing with ${him} as you fuck.`);
				} else if (S.Concubine.intelligence+S.Concubine.intelligenceImplant < -50) {
					r.push(`and kiss your favorite idiot deeply, keeping ${him} from feeling left out as you fuck.`);
				} else if (S.Concubine.fetish === "mindbroken") {
					r.push(`and play with ${his} body as you fuck.`);
				}
			}
			r.push(`When your guest is finally spent, she showers, dresses, and leaves discreetly, offering you a proper thank you. This is the kind of thing that builds a lasting reputation in the Free Cities.`);
			repX(5000, "event");
			if (fsAdj === "Repopulationist" && V.PC.dick !== 0 && repopHookupPregnant === 0 && (random(1, 100) > 40)) {
				V.trinkets.push(`a tasteful morning-after message, with attached positive pregnancy test, from a pretty ${fsAdj} citizen you bred`);
			} else if (fsAdj !== "none") {
				V.trinkets.push(`a tasteful morning-after message from a pretty ${fsAdj} citizen`);
			} else {
				V.trinkets.push("a tasteful morning-after message from a pretty citizen");
			}
			App.Events.addParagraph(frag, r);
			return frag;
		}

		function exhibitionism() {
			const frag = new DocumentFragment();
			let r = [];
			r.push(`You turn to face her straight on, and something about the look in your eye fills her with mixed apprehension and anticipation. You agree with her banter and praise her for being so forward-thinking, before transitioning to more direct praise of her style and then her body. You're speaking in a tone that cuts through the room, and by the time you kiss your willing conquest, there's not a person in the room who isn't paying attention. They all understand the message: this gathering is turning into something else, now. Those few who aren't willing to fuck in public withdraw, and everyone who didn't come with a sexual partner sends urgent messages to have appropriate slaves brought from their apartments. You make out with her for a while, letting everyone make arrangements, and then pull her clothes off, making sure her`);
			if (fsAdj !== "none") {
				V.arcologies[0][FS] += 5;
			}
			switch (fsAdj) {
				case "Subjugationist":
				case "Supremacist":
					r.push(`superior body`);
					break;
				case "Gender Radicalist":
					r.push(`tits and stiff dick`);
					break;
				case "Gender Fundamentalist":
					r.push(`femininity`);
					break;
				case "Repopulationist":
					if (repopHookupPregnant === 1) {
						r.push(`fecund body`);
					} else {
						r.push(`ready-to-be-bred body`);
					}
					break;
				case "Eugenics":
					r.push(`perfect body`);
					break;
				case "Paternalist":
					r.push(`appealing body`);
					break;
				case "Degradationist":
					r.push(`dominant form`);
					break;
				case "Body Purist":
					r.push(`natural body`);
					break;
				case "Transformation Fetishist":
					r.push(`fake butt`);
					break;
				case "Youth Preferentialist":
					r.push(`young body`);
					break;
				case "Maturity Preferentialist":
					r.push(`mature body`);
					break;
				case "Slimness Enthusiast":
					r.push(`slender body`);
					break;
				case "Asset Expansionist":
					r.push(`curvaceous form`);
					break;
				case "Pastoralist":
					r.push(`milk-fed assets`);
					break;
				case "Physical Idealist":
					r.push(`muscular body`);
					break;
				case "Hedonistic":
					r.push(`plump body`);
					break;
				case "Chattel Religionist":
					r.push(`divine sexuality`);
					break;
				case "Roman Revivalist":
					r.push(`elegant form`);
					break;
				case "Neo-Imperialism":
					r.push(`chiseled body`);
					break;
				case "Aztec Revivalist":
					r.push(`well-built form`);
					break;
				case "Egyptian Revivalist":
					r.push(`beautiful tanned body`);
					break;
				case "Arabian Revivalist":
				case "Chinese Revivalist":
				case "Edo Revivalist":
					r.push(`graceful form`);
					break;
				case "Intellectual Dependency":
					r.push(`extreme horniness`);
					break;
				case "Slave Professionalism":
					r.push(`experienced body`);
					break;
				case "Petite Admiration":
					r.push(`tiny form`);
					break;
				case "Statuesque Glorification":
					r.push(`towering form`);
					break;
				default:
					r.push(`hot young body`);
			}
			r.push(`is obvious to everyone. The message is clear, and your guest of honor is the center of attention as you take her there in view of the arcology's leading citizens. Naturally, the story percolates, making it clear that there's nothing you won't do to further acceptance of ${fsAdj} principles.`);

			App.Events.addParagraph(frag, r);
			return frag;
		}
	}
};


code:
App.Events.REDevotedTwins = class REDevotedTwins extends App.Events.BaseEvent {
	eventPrerequisites() {
		// Conditional example
		return [
			() => V.seeIncest === 1
		];
	}

	actorPrerequisites() {
		return [
			[
				s => s.fetish !== "mindbroken",
				s => s.sisters > 0,
				s => s.devotion > 50,
				canWalk,
				hasAnyArms
			],
			[
				s => s.fetish !== "mindbroken",
				s => areSisters(s, getSlave(this.actors[0])) === 1,
				s => s.rivalTarget !== this.actors[0],
				s => s.devotion > 50,
				canWalk,
				hasAnyArms,
				isSlaveAvailable
			]
		];
	}

	execute(node) {
		/** @type {Array<App.Entity.SlaveState>} */
		let [alphaTwin, betaTwin] = this.actors.map(a => getSlave(a));

		V.nextButton = "Continue";
		V.nextLink = "RIE Eligibility Check";

		App.Events.drawEventArt(node, [alphaTwin, betaTwin]);

		let t = [];

		t.push(`${alphaTwin.slaveName} and ${betaTwin.slaveName} are such good and devoted slaves that they happily do everything together. They sleep ${hasBothArms(alphaTwin) && hasBothArms(betaTwin) ? "in each other's arms" : 'together'}, bathe together, work together whenever they can, and fuck together. For a while they masturbated together until they became so habituated to sexual slavery that they stopped seeing much distinction between masturbation and sex with one another. At the moment, they're getting ready for their day, chatting quietly and helping each other.`);

		App.Events.addParagraph(node, t);

		App.Events.addResponses(node, [
			new App.Events.Result(`Take them out for the morning`, morningWalk),
			new App.Events.Result(`Use them side by side`, threesome)
		]);

		function morningWalk() {
			t = [];
			t.push(`You head out of your penthouse with a pretty sex slave under each arm. They're attentive companions, doing everything they can to mirror each other as they show off their bodies to onlookers.`);
			if (V.weatherToday.severity <= 2) {
				t.push(`It's a bright, sunny day, so you walk them up and down a busy glassed-in galleria.`);
			} else {
				t.push(`It's a particularly nasty day, so you stick to walking them up and down the crowded interior malls.`);
			}
			t.push(`They clearly expect you to fuck them in public, but for once you just enjoy a couple of hours with them. They start disappointed that you aren't going to use them, but they quickly get over it and enjoy preening under your arms. They have both become more trusting of you, and your reputation has increased considerably.`);

			for (const slave of [alphaTwin, betaTwin]) {
				slave.trust += 4;
				repX(2500, "event", slave);
			}
			return t;
		}

		function threesome() {
			const alphaVaginal = canDoVaginal(alphaTwin) && alphaTwin.vagina > 0;
			const alphaAnal = canDoAnal(alphaTwin) && alphaTwin.anus > 0;
			const betaVaginal = canDoVaginal(betaTwin) && betaTwin.vagina > 0;
			const betaAnal = canDoAnal(betaTwin) && betaTwin.anus > 0;
			t = [];
			t.push(`Slave twins inevitably get used to threesomes with their sibling, and ${alphaTwin.slaveName} and ${betaTwin.slaveName} are no exception. They greet you with every appearance of arousal and begin a carefully balanced routine — foreplay with you, of course, but whatever parts of them aren't working on you work on the other slave. They stroke you while making out, stroke each other while`);
			if (V.PC.dick > 0) {
				t.push(`sucking you to rock hardness,`);
			} else {
				t.push(`building your arousal,`);
			}
			if (canDoVaginal(alphaTwin) && canDoVaginal(betaTwin)) {
				t.push(`and finger each others' holes`);
			} else if (alphaTwin.dick > 0 && alphaTwin.chastityPenis === 0 && betaTwin.dick > 0 && betaTwin.chastityPenis === 0) {
				t.push(`and fondle each others' dicks`);
			} else {
				t.push(`and fondle each other`);
			}
			t.push(`while`);
			if (V.PC.dick > 0) {
				if (alphaTwin.boobs > 300 && betaTwin.boobs > 300 && (alphaTwin.boobs <= betaTwin.boobs + 800 && alphaTwin.boobs >= betaTwin.boobs - 800) || (alphaTwin.boobs > 10000 && betaTwin.boobs > 10000)) {
					t.push(`rubbing four breasts up and down your dick.`);
				} else if (alphaTwin.belly > 5000 && betaTwin.belly > 5000) {
					t.push(`rubbing two bulging bellies up and down your dick.`);
				} else if (alphaTwin.weight > 95 && betaTwin.weight > 95) {
					t.push(`rubbing your dick between two soft bellies.`);
				} else {
					t.push(`running two tongues up and down your dick.`);
				}
				t.push(`Since you only have one cock, the symmetry ends when you start fucking them.`);
				if ((alphaVaginal || alphaAnal) && (betaVaginal || betaAnal)) {
					t.push(`As you switch from hole to hole, whichever twin isn't getting fucked at the moment uses their mouth and hands to stimulate your balls and their twin's fuckhole as you pound it. When you finally cum in ${betaTwin.slaveName}, ${alphaTwin.slaveName} sucks it out and they kiss deeply to share your ejaculate.`);
					if (alphaVaginal) {
						actX(alphaTwin, "vaginal");
					}
					if (alphaAnal) {
						actX(alphaTwin, "anal");
					}
					if (betaVaginal) {
						actX(betaTwin, "vaginal");
					}
					if (betaAnal) {
						actX(betaTwin, "anal");
					}
					actX(V.PC, "penetrative");
				} else {
					t.push(`As you switch from throat to throat, whichever twin isn't getting facefucked at the moment uses their hands to stimulate your balls and their twin's body. When you finally cum in ${betaTwin.slaveName} mouth, they turn and deeply kiss to share your ejaculate.`);
					actX(alphaTwin, "oral");
					actX(betaTwin, "oral");
					actX(V.PC, "penetrative");
				}
			} else {
				t.push(`crowding their faces against your pussy. You reach down and seize a nipple in each hand, pulling them upward so they can suck your nipples instead; they use manual stimulation to keep you going while they do. With one straddling each of your thighs, grinding shamelessly, you can reach around and molest their butts with your own hands.`);
				seX(alphaTwin, "oral", V.PC, "vaginal");
				seX(betaTwin, "oral", V.PC, "vaginal");
			}
			t.push(`<span class="devotion inc">They have both become more devoted to you.</span>`);

			alphaTwin.devotion += 4;
			betaTwin.devotion += 4;

			return t;
		}
	}
};


code:
App.Events.REDevotees = class REDevotees extends App.Events.BaseEvent {
	eventPrerequisites() {
		return []; // always valid if sufficient actors can be cast successfully
	}

	actorPrerequisites() {
		const devoteeRequirements = [
			s => s.devotion > 50,
			canWalk,
			isSlaveAvailable
		];
		return [ // total of four actors, identical requirements for each
			devoteeRequirements,
			devoteeRequirements,
			devoteeRequirements,
			devoteeRequirements
		];
	}

	execute(node) {
		let devotees = this.actors.map(a => getSlave(a)); // for this event, they're fine as an array

		V.nextLink = "RIE Eligibility Check";

		App.Events.drawEventArt(node, devotees);

		const slaveList = devotees.map(s => s.slaveName).reduce((res, ch, i, arr) => res + (i === arr.length - 1 ? ' and ' : ', ') + ch);

		let t = [];
		t.push(`You have a mature, well-trained household of slaves. ${slaveList} are all devoted to you. There are all manner of ways you could display this coterie of loyal sex slaves to show off your wealth and power.`);
		App.Events.addParagraph(node, t);

		App.Events.addResponses(node, [
			new App.Events.Result("See an operetta with four attendants", opera),
			new App.Events.Result("Visit a casino in good company", casino),
		]);

		function opera() {
			let t = [];
			t.push(`You reserve a box at an upcoming operetta; classical Italian music is enjoying a renaissance these days. The doormen at the fashionable opera house promptly widen the velvet ropes so that you and your party may proceed unimpeded. Their quick thinking is necessary, since there are five of you walking sedately up the steps: you in the middle, impeccable in`);
			if (V.PC.title === 1) {
				t.push(`gentleman's evening wear, complete with gloves and cane;`);
			} else {
				t.push(`a fine and noble lady's tuxedo;`);
			}
			t.push(`and ${slaveList}, all dressed in the gorgeous fashion of the seventeenth century, all plunging necklines, piled hair, and ruffled petticoats. The splendid master of ceremonies clears his throat and announces in a sonorous voice, "${PCTitle()}." The ostentation turns every head and catches every eye.`);
			for (const s of devotees) {
				repX(600, "event", s);
			}
			return t;
		}

		function casino() {
			let t = [];
			t.push(`The croupiers, bouncers and regulars down at the nearest casino hardly know what to think when you appear with a chit full of cash and twice as many partners as you have arms. You live the night big, starting at the poker table with so many tits and asses on display behind you that, baby, you make a killing. ${slaveList} quickly catch the rhythm of the place: slaves can get away with a little more in the smoky, whiskey soaked, money tinted atmosphere, and they enjoy themselves immensely. They flirt, flash, giggle, kiss each other, and generally destroy the concentration of everyone within twenty ${V.showInches === 2 ? "yards" : "meters"} — except you. Ring-a-ding-ding.`);
			const inc = random(30, 100)*3;
			for (const s of devotees) {
				cashX(inc, "event", s);
				s.devotion += 4;
			}
			return t;
		}
	}
};


code:
App.Events.REFSNonconformist = class REFSNonconformist extends App.Events.BaseEvent {
	eventPrerequisites() {
		return [
			() => !!(this.getNonconformistFS())
		];
	}

	getNonconformistFS() {
		const permittedFSes = Object.keys(App.Data.FutureSociety.records);
		permittedFSes.delete("FSNull"); // Multiculturalism doesn't have nonconformity
		return permittedFSes.filter(fs => V.arcologies[0][fs] < 95 && V.arcologies[0][fs] > 50).random();
	}

	actorPrerequisites() {
		return [];
	}

	execute(node) {
		let r = [];
		V.nextButton = " ";
		V.nextLink = "RIE Eligibility Check";

		/** @type {FC.FutureSocietyAdj} */
		const FSNonconformist = App.Data.FutureSociety.records[this.getNonconformistFS()].adj;
		if (V.arcologies[0].FSRestart !== "unset") {
			r.push(`A group of the Societal Elite arrives at your penthouse and is quickly ushered into your office. They're among the best members of the society you're building, uniformly wealthy, influential, and deeply`);
		} else {
			r.push(`A deputation of your citizens arrives at your penthouse and asks to see you. They're among the best members of the society you're building, uniformly wealthy, influential, and deeply`);
		}
		if (FSNonconformist === "Pastoralist") {
			r.push(`committed to making the future of the arcology a creamy one. They're looking quite grim, an unusual mood for a group of oligarchs more inclined to spend their time planning milk orgies,`);
		} else if (FSNonconformist === "Supremacist") {
			r.push(`committed to the ascendancy of the ${V.arcologies[0].FSSupremacistRace} race. They're looking quite grim, an unusual mood for a group of oligarchs more inclined to spend their time eagerly debating revisionist histories,`);
		} else if (FSNonconformist === "Subjugationist") {
			r.push(`involved in the subjugation of the ${V.arcologies[0].FSSubjugationistRace} race. They're looking quite grim, an unusual mood for a group of oligarchs more inclined to spend their time competing to come up with ever more extreme ways to degrade mongrels,`);
		} else if (FSNonconformist === "Repopulationist") {
			r.push(`committed to perpetuating humanity. They're looking quite grim, an unusual mood for a group of oligarchs more inclined to spend their time impregnating fertile women,`);
		} else if (FSNonconformist === "Eugenics") {
			r.push(`committed to restarting humanity. They're looking quite furious, an unusual mood for those with power second only to yours,`);
		} else if (FSNonconformist === "Gender Radicalist") {
			r.push(`committed to the redefinition of gender around power. They're looking quite grim, an unusual mood for a group of oligarchs more inclined to spend their time cheerfully sodomizing their slaves,`);
		} else if (FSNonconformist === "Gender Fundamentalist") {
			r.push(`committed to traditional gender roles. They're looking quite grim, an unusual mood for a group of oligarchs more inclined to spend their time basking in the attentions of their women,`);
		} else if (FSNonconformist === "Paternalist") {
			r.push(`committed to slave advancement. They're looking quite grim, an unusual mood for a group of oligarchs whose various projects to improve the lives of their chattel makes them quite self-assured,`);
		} else if (FSNonconformist === "Degradationist") {
			r.push(`committed to the comprehensive degradation of slaves. They're looking quite grim, an unusual mood for a group of oligarchs more inclined to spend their time cheerfully raping their slaves,`);
		} else if (FSNonconformist === "Intellectual Dependency") {
			r.push(`committed to slave advancement. They're looking quite grim, an unusual mood for a group of oligarchs more inclined to spend their time being fawned over by horny sluts,`);
		} else if (FSNonconformist === "Slave Professional") {
			r.push(`committed to crafting perfect slaves. They're looking quite grim, an unusual mood for a group of oligarchs with nothing short of masterful sources of stress release,`);
		} else if (FSNonconformist === "Body Purist") {
			r.push(`committed to body purism. They're looking quite grim, an unusual mood for a group of oligarchs whose various projects to improve the health of their chattel make them quite self-righteous,`);
		} else if (FSNonconformist === "Transformation Fetishist") {
			r.push(`committed to extreme transformation. They're looking quite grim, an unusual mood for a group of oligarchs more inclined to spend their time obsessing over improvements to their favorite slaves,`);
		} else if (FSNonconformist === "Slimness Enthusiast") {
			r.push(`addicted to slim female bodies. They're looking quite grim, an unusual mood for a group of oligarchs more inclined to spend their time cavorting with their harems,`);
		} else if (FSNonconformist === "Asset Expansionist") {
			r.push(`addicted to tits and ass. They're looking quite grim, an unusual mood for a group of oligarchs more inclined to spend their time having sex with their grandiosely endowed girls,`);
		} else if (FSNonconformist === "Youth Preferentialist") {
			r.push(`committed to the fashion for young girls. They're looking quite grim, an unusual mood for a group of oligarchs more inclined to spend their time enjoying their slaves' fresh bodies,`);
		} else if (FSNonconformist === "Maturity Preferentialist") {
			r.push(`committed to the fashion for mature slaves. They're looking quite grim, an unusual mood for a group of oligarchs more inclined to spend their time enjoying their slaves' experience,`);
		} else if (FSNonconformist === "Petite Admiration") {
			r.push(`committed to the fashion for short slaves. They're looking quite grim, an unusual mood for a group of oligarchs more inclined to spend their time enjoying their fun-sized slaves,`);
		} else if (FSNonconformist === "Statuesque Glorification") {
			r.push(`obsessed with tallness. They're looking quite grim, an unusual mood for a group of oligarchs more inclined to spend their time flaunting their stature,`);
		} else if (FSNonconformist === "Physical Idealist") {
			r.push(`involved in physical idealism. They're looking quite grim, an unusual mood for a group of oligarchs more inclined to spend their time lifting, tanning, and giving each other fist-bumps and bro-nods,`);
		} else if (FSNonconformist === "Decadent Hedonist") {
			r.push(`committed to hedonistic decadence. They're looking quite grim, an unusual mood for a group of oligarchs who spend most of their time indulging themselves by any, and every, means possible,`);
		} else if (FSNonconformist === "Chattel Religionist") {
			r.push(`committed to the new faith. They're looking quite grim, an unusual mood for a group of oligarchs who occupy favored places in a new religious hierarchy that affords them ample pleasure,`);
		} else if (FSNonconformist === "Roman Revivalist") {
			r.push(`involved in your Revivalist vision. They're looking quite grim, an unusual mood for a group of oligarchs who compete with each other to project the upper-class Roman virtues of stoicism and self-possession,`);
		} else if (FSNonconformist === "Neo-Imperialist") {
			r.push(`involved in your new Imperial vision. They're looking quite grim, an unusual mood for a group of noble oligarchs in a society that views them and their children as socially, physically, and even religiously superior to the serf-like masses,`);
		} else if (FSNonconformist === "Aztec Revivalist") {
			r.push(`involved in your Revivalist vision. They're looking quite grim, an unusual mood for a group of oligarchs who compete with each other to project the bloody virtues of their proud society,`);
		} else if (FSNonconformist === "Edo Revivalist") {
			r.push(`involved in your Revivalist vision. They're looking quite grim, an unusual mood for a group of oligarchs who compete with each other to project the traditional Japanese virtue of stoicism,`);
		} else if (FSNonconformist === "Arabian Revivalist") {
			r.push(`involved in your Revivalist vision. They're looking quite grim, an unusual mood for a group of oligarchs who do their best to embody the confidence of the early Caliphate,`);
		} else if (FSNonconformist === "Chinese Revivalist") {
			r.push(`involved in your Revivalist vision. They're looking quite grim, an unusual mood for a group of oligarchs who do their best to project complete confidence that the arcology possesses the Mandate of Heaven,`);
		} else if (FSNonconformist === "Egyptian Revivalist") {
			r.push(`involved in your Revivalist vision. They're looking quite grim, an unusual mood for a group of oligarchs who partake of your serene confidence that your arcology is coming into a place as stable and long-lived as that of Ancient Egypt,`);
		} else {
			throw Error(`FS "${FSNonconformist}" not found `);
		}
		if (V.arcologies[0].FSRestart !== "unset") {
			r.push(`so you hear them out. Apparently, they're here about a peer, another member of the Elite, who has chosen to perform certain undesirable actions. ${capFirstChar(V.assistant.name)} helpfully supplies a biography, but you were previously aware of the situation.`);
		} else {
			r.push(`so you hear them out. Apparently, they're here about a peer, a fellow citizen with money and power who does not support your vision for the arcology's future. ${capFirstChar(V.assistant.name)} helpfully supplies a biography, but you were previously aware of the situation.`);
		}
		App.Events.addParagraph(node, r);
		r = [];
		r.push(`The nonconformist`);
		if (FSNonconformist === "Pastoralist") {
			r.push(`has long been a vocal skeptic of the tastefulness of grown citizens drinking milk from slaves' breasts. Unfortunately, it seems that they've now edged over into open revolt against pastoralism. They're planning to publish an exposé that purports to reveal abuses in the human milk industry.`);
		} else if (FSNonconformist === "Supremacist") {
			r.push(`is a hardline egalitarianist who believes that all men are created equal, even if some then become slaves. They themselves are not ${V.arcologies[0].FSSupremacistRace}, and they insist on flaunting their ${V.arcologies[0].FSSupremacistRace} slaves. Unfortunately, it seems that they've now edged over into open revolt against ${V.arcologies[0].FSSupremacistRace} supremacism. After a brutal but deserved public punishment of a non-${V.arcologies[0].FSSupremacistRace} slave by one of the group of concerned citizens, the nonconformist is planning on visiting the same horrors on one of their ${V.arcologies[0].FSSupremacistRace} slaves, on a very weak pretext.`);
		} else if (FSNonconformist === "Subjugationist") {
			r.push(`is a hardline egalitarianist who believes that all men are created equal, even if some then become slaves. They themselves are ${V.arcologies[0].FSSubjugationistRace}, and they insist on flaunting their non-${V.arcologies[0].FSSubjugationistRace} slaves. Unfortunately, it seems that they've now edged over into open revolt against ${V.arcologies[0].FSSubjugationistRace} inferiority. After a brutal but deserved public punishment of a ${V.arcologies[0].FSSubjugationistRace} slave by one of the group of concerned citizens, the nonconformist is planning on visiting the same horrors on one of their non-${V.arcologies[0].FSSubjugationistRace} slaves, on a very weak pretext.`);
		} else if (FSNonconformist === "Repopulationist") {
			r.push(`has long been skeptical of the point of your repopulation efforts when the world is not stable and the arcology only so big. They plan to publish information regarding overpopulation, the negatives of chain pregnancies, the dangers of inbreeding and the risks of having so high a concentration of slaves.`);
		} else if (FSNonconformist === "Eugenics") {
			r.push(`has recently knocked up his favorite pet, and instead of responsibly aborting the bastard, has freed and married her. Allowing such actions to come to the public's attention will create a huge scandal and massive trouble for the Societal Elite, as well as undoing much of the progress you've made towards a better future.`);
		} else if (FSNonconformist === "Gender Radicalist") {
			r.push(`has never been quiet about their belief that slaves with dicks are not girls. Unfortunately, it seems that they've now edged over into open revolt against gender radicalism. They've purchased a highly feminized slave one of the group of concerned citizens sold to a third party, and are rumored to be returning the slave to her natural state. The oligarchs are worried that they plan to publicize this project, or worse, possibly even free the slave.`);
		} else if (FSNonconformist === "Gender Fundamentalist") {
			r.push(`has never been quiet about their belief that anything with an asshole counts as a slave girl. Unfortunately, it seems that they've now edged over into open revolt against gender traditionalism. They've been accumulating a number of sexually skilled slaves with dicks, and the oligarchs are worried that some sort of public event involving free sex with these slaves is planned to sway lower class opinion.`);
		} else if (FSNonconformist === "Paternalist") {
			r.push(`has never been shy about their belief that true trust between slave and master is impossible. Unfortunately, it seems that they've now edged over into open revolt against paternalism. They're rumored to run a household in which slaves are required to beat miscreants without mercy or be savaged themselves. There are indications that they may intend to make these spectacles public.`);
		} else if (FSNonconformist === "Degradationist") {
			r.push(`has never been shy about their belief that slaves are people too, and should be treated with respect. Unfortunately, it seems that they've now edged over into open revolt against degradationism. They're rumored to allow their slaves to decline sex. This perversion is bad enough, but the oligarchs are concerned that they may intend to take this practice public, setting favored slaves up with their own apartments and livelihoods.`);
		} else if (FSNonconformist === "Intellectual Dependency") {
			r.push(`has never been quiet about their grievances with having such a concentration of morons in one place. Unfortunately, it seems that they've now edged over into open revolt against intellectual dependency. They're planning to publish an exposé that reveals that the recent rise in prices is directly related to the number of accidents caused by the sheer lack of brains in the slave population.`);
		} else if (FSNonconformist === "Slave Professional") {
			r.push(`has never been shy about their paranoia over the dangers of a smart slave population. Unfortunately, it seems that they've now edged out of sanity and into open revolt against slave professionalism. They're rumored to be training slaves to carry out their fears. There are indications that they may intend to set loose these slaves to wreak havoc and prove their point.`);
		} else if (FSNonconformist === "Body Purist") {
			r.push(`has always been known for their harem of implant-filled silicone dolls. Unfortunately, it seems that they've now edged over into open revolt against body purism. They've purchased a wonderfully healthy and pure slave one of the group of concerned citizens sold to a third party, and it's rumored that the slave has been outfitted with cutting-edge gradually expanding breast implants with no effective maximum size. The oligarchs are disgusted and mortified lest this project become public.`);
		} else if (FSNonconformist === "Transformation Fetishist") {
			r.push(`has always been known for their harem of natural girls. Unfortunately, it seems that they've now edged over into open revolt against transformation. They've purchased a heavily implanted slave one of the group of concerned citizens sold to a third party, and it's rumored that the slave is being painstakingly returned to her natural, implant-free appearance. The oligarchs are concerned that the nonconformist may be planning some sort of public reveal of her naturalist makeover.`);
		} else if (FSNonconformist === "Slimness Enthusiast") {
			r.push(`has always been known for their harem of disgusting hambeasts. Unfortunately, it seems that they've now edged over into open revolt against the fashion for slimness. They've purchased a notoriously graceful slave one of the group of concerned citizens sold to a third party, and it's rumored that the slave is being force-fed in private as preparation for some kind of insulting public reveal. The oligarchs are mortally offended without even seeing the final product.`);
		} else if (FSNonconformist === "Asset Expansionist") {
			r.push(`has always been known for their harem of disgusting beanpoles. Unfortunately, it seems that they've now edged over into open revolt against the fashion for big tits. They've purchased a slave with famously magnificent boobs one of the group of concerned citizens sold to a third party, and it's rumored that the slave has undergone a radical breast reduction as preparation for some kind of insulting public reveal. The oligarchs are mortally offended without even seeing the final product.`);
		} else if (FSNonconformist === "Youth Preferentialist") {
			r.push(`has never missed an opportunity to share their belief that a mature woman who knows her way around a dick is a better fuck than a virgin. Unfortunately, it seems that they've now edged over into open revolt against the fashion for youth and freshness. They're holed up in their luxurious apartments, preparing a large number of older, sexually experienced slaves for something big. The oligarchs suspect that some sort of event involving free sex may be planned to sway lower class opinion.`);
		} else if (FSNonconformist === "Maturity Preferentialist") {
			r.push(`has never missed an opportunity to share their belief that a fresh girl is infinitely preferable to an old whore. Unfortunately, it seems that they've now edged over into open revolt against the fashion for maturity and experience. They're holed up in their luxurious apartments, preparing a large number of virgin slaves for something big. The oligarchs suspect that some sort of event involving free sex may be planned to sway lower class opinion.`);
		} else if (FSNonconformist === "Petite Admiration") {
			r.push(`has never missed an opportunity to share their belief that being able to look into your lover's eyes while you fuck is the greatest thing in the world. Unfortunately, it seems that they've now edged over into open revolt against the fashion for mixing big and small. They're holed up in their luxurious apartments, preparing a large number of tall, undeniably gorgeous slaves for something big. The oligarchs suspect that some sort of event involving free sex may be planned to sway lower class opinion.`);
		} else if (FSNonconformist === "Statuesque Glorification") {
			r.push(`is an advocate for short slaves. They themselves stand barely over the acceptable threshold, and they insist on flaunting their midget slaves. Unfortunately, it seems that they've now edged over into open revolt against tall superiority. After a brutal but deserved public humiliation of a slave owner caught lying about their chattel's height by a group of concerned citizens, the nonconformist is planning on visiting the same horrors on some of their gorgeously tall slaves, on a very weak pretext.`);
		} else if (FSNonconformist === "Physical Idealist") {
			r.push(`rarely misses a chance to lecture on the perils of toxic masculinity and excessive public standards of beauty. Unfortunately, it seems that they've now edged over into open revolt against the Valhalla of physical perfection the arcology is rapidly becoming. They're rumored to be preparing a manifesto on beauty at any size, along with the necessary funds to bribe neutral third parties into going along.`);
		} else if (FSNonconformist === "Decadent Hedonist") {
			r.push(`has long been a vocal opponent of over-indulgence and its effects on society. Unfortunately, it seems that they've now edged over into open revolt against hedonism. They're planning to publish an exposé that reveals numerous statistics regarding average health and lifespans, the rising maintenance costs to accommodate the widening population, and a rather alarming report that the arcology has in fact <i>sunk</i> several`);
			if (V.showInches === 2) {
				r.push(`inches`);
			} else {
				r.push(`centimeters`);
			}
			r.push(`since hedonism became commonplace among the citizenry.`);
		} else if (FSNonconformist === "Chattel Religionist") {
			r.push(`originally moved to the Free Cities to get away from religion entirely, and has never missed a chance to register disdain for the new faith. Unfortunately, it seems that they've now edged over into open heresy. Typically, they're going about it in a hypocritical way. It's rumored that they've engaged the services of a charismatic itinerant preacher of one of the more popular old world faiths, and intend to bring him to the arcology to inveigh against the chattel religion.`);
		} else if (FSNonconformist === "Roman Revivalist") {
			r.push(`has been a longtime skeptic of historical revivalism, publicly deploring it as a childish game of dress-up. This never got much traction, since Rome has become quite fashionable here. Frustrated, they're rumored to be planning a change of approach. Despairing of getting the population to give up the Roman project, they're going to set up a competing Gaulish Revivalism. The quixotic effort is almost certainly doomed to fail, but the oligarchs fear it will be a distraction.`);
		} else if (FSNonconformist === "Neo-Imperialist") {
			r.push(`has been a staunch and lifelong egalitarian, despite holding slaves for most of their later life, committed to the tenets of a free democratic society. They have loudly and openly criticzed Imperial society and its relegation of the lower classes to serfdom and subservience for the benefit of your Knights and Barons; now you hear they're planning to set up a competing societal design they call Neo-Republicanism, modifying the old world Republican style into a directly democratic arcology governance. The Barons fear that this might rile up a number of serfs against Imperial society.`);
		} else if (FSNonconformist === "Aztec Revivalist") {
			r.push(`has been a longtime skeptic of historical revivalism, publicly deploring it as a childish game of dress-up. This never got much traction, since Aztec has become quite fashionable here. Frustrated, they're rumored to be planning a change of approach. Despairing of getting the population to give up the Aztec project, they're going to set up a competing Spanish Revivalism. The quixotic effort is almost certainly doomed to fail, but the oligarchs fear it will be a distraction.`);
		} else if (FSNonconformist === "Edo Revivalist") {
			r.push(`has been a longtime skeptic of historical revivalism, publicly deploring it as a childish game of dress-up. This never got much traction, since Edo Japan has become quite fashionable here. Frustrated, they're rumored to be planning a change of approach. Despairing of getting the population to give up the Japanese project, they're going to set up a competing Korean Revivalism. The quixotic effort is almost certainly doomed to fail, but the oligarchs fear it will be a distraction.`);
		} else if (FSNonconformist === "Arabian Revivalist") {
			r.push(`has been a longtime skeptic of historical revivalism, publicly deploring it as a childish game of dress-up. This never got much traction, since the golden age of the Caliphate has become quite fashionable here. Frustrated, they're rumored to be planning a change of approach. Despairing of getting the population to give up the Arabian project, they're going to set up a competing Byzantine Revivalism. The quixotic effort is almost certainly doomed to fail, but the oligarchs fear it will be a distraction.`);
		} else if (FSNonconformist === "Chinese Revivalist") {
			r.push(`has been a longtime skeptic of historical revivalism, publicly deploring it as a childish game of dress-up. This never got much traction, since ancient China has become quite fashionable here. Frustrated, they're rumored to be planning a change of approach. Despairing of getting the population to give up the imperial project, they're going to set up a competing Mongol Revivalism. The quixotic effort is almost certainly doomed to fail, but the oligarchs fear it will be a distraction.`);
		} else if (FSNonconformist === "Egyptian Revivalist"){
			r.push(`has been a longtime skeptic of historical revivalism, publicly deploring it as a childish game of dress-up. This never got much traction, since the land of the Pharaohs has become quite fashionable here. Frustrated, they're rumored to be planning a change of approach. Despairing of getting the population to give up the Egyptian project, they're going to set up a competing Ancient Greek Revivalism. The quixotic effort is almost certainly doomed to fail, but the oligarchs fear it will be a distraction.`);
		} else {
			throw Error(`FS "${FSNonconformist}" not found `);
		}
		if (V.arcologies[0].FSRestart !== "unset") {
			r.push(`Faced with such a threat, the Elite naturally came to you. They ask you, as leader of the arcology, to both cover up the event and deal with the disgraced Elite.`);
		} else {
			r.push(`Faced with such a threat, the citizens naturally came to you. They ask you, as leader of the arcology, to both prevent the plan and get the nonconformist to move out.`);
		}
		App.Events.addParagraph(node, r);
		r = [];
		r.push(`The nonconformist is far too prominent and prosperous to make this an easy dilemma to resolve. Your societal goals are at stake, as is your reputation among some of your best citizens, but the nonconformist has significant sway in the arcology's economy. Merely forcing them out of the arcology would damage its prosperity, and more decisive action could have more serious consequences still.`);
		App.Events.addParagraph(node, r);

		const choices = [];
		choices.push(new App.Events.Result(`Ignore the situation`, ignore));
		choices.push(new App.Events.Result(`Throw the nonconformist out of the arcology`, throwOut));
		if (V.PC.rumor === "force") {
			choices.push(new App.Events.Result(`Leverage your reputation with some credible threats`, leverage));
		} else if (V.cash > 10000) {
			choices.push(new App.Events.Result(`Quickly manage a nuanced response`, nuance, `This will cost ${cashFormat(10000)}`));
		} else {
			choices.push(new App.Events.Result(null, null, `You lack the necessary ready cash to manage a nuanced solution`));
		}

		App.Events.addResponses(node, choices);

		function ignore() {
			const frag = new DocumentFragment();
			let r = [];
			repX(-250, "event");
			r.push(`You communicate polite concern, but offer no specific plans. The prominent citizens go away muttering, <span class="red">very disappointed</span> that you are not taking their concerns seriously. The nonconformist`);
			if (FSNonconformist === "Pastoralist") {
				r.push(`publishes the exposé, <span class="red">setting back adoption</span> of pastoralism.`);
				V.arcologies[0].FSPastoralist -= 10;
			} else if (FSNonconformist === "Supremacist") {
				r.push(`publicly flogs one of their ${V.arcologies[0].FSSupremacistRace} slaves halfway to exsanguination, <span class="red">setting back acceptance</span> of ${V.arcologies[0].FSSupremacistRace} supremacy.`);
				V.arcologies[0].FSSupremacist -= 10;
			} else if (FSNonconformist === "Subjugationist") {
				r.push(`publicly flogs one of their non-${V.arcologies[0].FSSubjugationistRace} slaves halfway to exsanguination, <span class="red">setting back acceptance</span> of ${V.arcologies[0].FSSubjugationistRace} inferiority.`);
				V.arcologies[0].FSSubjugationist -= 10;
			} else if (FSNonconformist === "Gender Radicalist") {
				r.push(`reveals the defeminized slave and then frees her, completing her return to maleness according to Gender Radicalism's own tenets, <span class="red">setting back acceptance</span> of the society model.`);
				V.arcologies[0].FSGenderRadicalist -= 10;
			} else if (FSNonconformist === "Repopulationist") {
				r.push(`publishes his information, <span class="red">greatly hindering</span> the adoption of mass reproduction.`);
				if (V.PC.belly >= 1000) {
					r.push(`Your own fecundity is brought into question as well, <span class="red">hurting your public opinion.</span>`);
					repX(forceNeg(V.PC.preg*10), "event");
				}
				V.arcologies[0].FSRepopulationFocus -= 10;
			} else if (FSNonconformist === "Eugenics") {
				r.push(`hosts a public wedding commemorating their love. This <span class="red">sets back acceptance</span> of your class system and hinders Eugenics.`);
				if (V.eugenicsFullControl !== 1) {
					r.push(`The Societal Elite are <span class="red">furious</span> at your inaction.`);
					V.failedElite += 100;
				}
				V.arcologies[0].FSRestart -= 20;
			} else if (FSNonconformist === "Gender Fundamentalist") {
				r.push(`hosts a huge public party in a lower-class area of the arcology, staffing it with a large number of slaves with dicks. They're so filled with aphrodisiacs that they orgasm constantly when citizens use their asses. This <span class="red">setts back acceptance</span> of gender traditionalism.`);
				V.arcologies[0].FSGenderFundamentalist -= 10;
			} else if (FSNonconformist === "Paternalist") {
				r.push(`begins requiring his slaves to beat each other in public for the entertainment of passersby, <span class="red">setting back acceptance</span> of paternalism.`);
				V.arcologies[0].FSPaternalist -= 10;
			} else if (FSNonconformist === "Degradationist") {
				r.push(`begins building independent little lives for a few of their best slaves, <span class="red">setting back acceptance</span> of degradationism.`);
				V.arcologies[0].FSDegradationist -= 10;
			} else if (FSNonconformist === "Intellectual Dependency") {
				r.push(`publishes the exposé, <span class="red">setting back acceptance</span> of a totally dependent slave population as citizens scramble to slave-proof their homes.`);
				V.arcologies[0].FSIntellectualDependency -= 10;
			} else if (FSNonconformist === "Slave Professional") {
				r.push(`hosts a public display of just how easy it would be to turn a slave into an effective assassin, striking fear into the citizenry and <span class="red">setting back acceptance</span> of slave professionalism.`);
				V.arcologies[0].FSSlaveProfessionalism -= 10;
			} else if (FSNonconformist === "Body Purist") {
				r.push(`is soon accompanied around the arcology by a slave with ten-liter breast implants, <span class="red">setting back acceptance</span> of body purism.`);
				V.arcologies[0].FSBodyPurist -= 10;
			} else if (FSNonconformist === "Transformation Fetishist") {
				r.push(`is soon accompanied around the arcology by the successfully made-over slave, whose transformation they never tire of extolling. This <span class="red">setting back acceptance</span> of transformation.`);
				V.arcologies[0].FSTransformationFetishist -= 10;
			} else if (FSNonconformist === "Slimness Enthusiast") {
				r.push(`soon reveals their little project. The once-beautiful slave is now so fat she can scarcely walk; the unanswered insult <span class="red">sets back the fashion</span> for slim slaves.`);
				V.arcologies[0].FSSlimnessEnthusiast -= 10;
			} else if (FSNonconformist === "Asset Expansionist") {
				r.push(`soon reveals their little project. A pair of the arcology's finest tits are gone forever; the unanswered insult <span class="red">sets back the fashion</span> for stacked slaves.`);
				V.arcologies[0].FSAssetExpansionist -= 10;
			} else if (FSNonconformist === "Youth Preferentialist") {
				r.push(`hosts a huge public party in a lower-class area of the arcology, staffing it with a large number of older slaves. They're so filled with aphrodisiacs that they eagerly fuck anyone who shows the slightest interest. This <span class="red">dims the fashion</span> for fresh slaves.`);
				V.arcologies[0].FSYouthPreferentialist -= 10;
			} else if (FSNonconformist === "Maturity Preferentialist") {
				r.push(`hosts a huge public party in a lower-class area of the arcology, staffing it with a large number of young slaves. They're virgins, though not for very long. This <span class="red">dims the fashion</span> for mature slaves.`);
				V.arcologies[0].FSMaturityPreferentialist -= 10;
			} else if (FSNonconformist === "Petite Admiration") {
				r.push(`hosts a fancy ball in a lower-class area of the arcology, staffing it with a large number of tall slaves. After a pleasant dance with a partner actually capable of it, many opt to share a second dance beneath the sheets. This <span class="red">dims the fashion</span> for short slaves.`);
				V.arcologies[0].FSPetiteAdmiration -= 10;
			} else if (FSNonconformist === "Statuesque Glorification") {
				r.push(`publicly berates each of their tall slaves to complete tears. As the group begins to gleefully join in, glorification of the tall <span class="red">becomes more a joke than a fashion.</span>`);
				V.arcologies[0].FSStatuesqueGlorification -= 10;
			} else if (FSNonconformist === "Physical Idealist") {
				r.push(`publishes their screed, and spreads money around to ensure its widespread dissemination. This <span class="red">sets back acceptance</span> of physical idealism.`);
				V.arcologies[0].FSPhysicalIdealist -= 10;
			} else if (FSNonconformist === "Decadent Hedonist") {
				r.push(`publishes their findings causing a tremendous panic, several heart attacks and a large number of clogged hallways, but ultimately a resurgence of healthy living practices. This <span class="red">sets back acceptance</span> of hedonistic decadence.`);
				V.arcologies[0].FSHedonisticDecadence -= 10;
			} else if (FSNonconformist === "Chattel Religionist") {
				r.push(`brings in their pet dissenting preacher, whose clever invectives <span class="red">set back acceptance</span> of the new religion.`);
				V.arcologies[0].FSChattelReligionist -= 10;
			} else if (FSNonconformist === "Roman Revivalist") {
				r.push(`offers their Gaulish Revivalism alternative with great fanfare. It fizzles out within a week, mostly because its main backer is privately against all revivalism, but during that time it serves as a focal point for many citizens who are privately impatient with Roman revivalism. This imbroglio <span class="red">sets back acceptance</span> of your revivalist project.`);
				V.arcologies[0].FSRomanRevivalist -= 10;
			} else if (FSNonconformist === "Neo-Imperialist") {
				r.push(`presents their Neo-Republicanism to society with great fanfare. While the slave population is much too indoctrinated to pay these ridiculous precepts much heed, Republican ideals stir debate and rabblerousing among a portion of the free serfs, before your guards brusquely push their preachers off the street and tear down the Republican posters littered around the arcology. This imbroglio <span class="red">sets back acceptance</span> of your Imperial Society.`);
				V.arcologies[0].FSNeoImperialist -= 10;
			} else if (FSNonconformist === "Aztec Revivalist") {
				r.push(`offers their Spanish Revivalism alternative with great fanfare. It fizzles out within a week, mostly because its main backer is privately against all revivalism, but during that time it serves as a focal point for many citizens who are privately impatient with Aztec revivalism. This imbroglio <span class="red">sets back acceptance</span> of your revivalist project.`);
				V.arcologies[0].FSAztecRevivalist -= 10;
			} else if (FSNonconformist === "Edo Revivalist") {
				r.push(`offers their Korean Revivalism alternative with great fanfare. It fizzles out within a week, mostly because its main backer is privately against all revivalism, but during that time it serves as a focal point for many citizens who are privately impatient with Edo revivalism. This imbroglio <span class="red">sets back acceptance</span> of your revivalist project.`);
				V.arcologies[0].FSEdoRevivalist -= 10;
			} else if (FSNonconformist === "Arabian Revivalist") {
				r.push(`offers their Byzantine Revivalism alternative with great fanfare. It fizzles out within a week, mostly because its main backer is privately against all revivalism, but during that time it serves as a focal point for many citizens who are privately impatient with Arabian revivalism. This imbroglio <span class="red">sets back acceptance</span> of your revivalist project.`);
				V.arcologies[0].FSArabianRevivalist -= 10;
			} else if (FSNonconformist === "Chinese Revivalist") {
				r.push(`offers their Mongol Revivalism alternative with great fanfare. It fizzles out within a week, mostly because its main backer is privately against all revivalism, but during that time it serves as a focal point for many citizens who are privately impatient with Chinese revivalism. This imbroglio <span class="red">sets back acceptance</span> of your revivalist project.`);
				V.arcologies[0].FSChineseRevivalist -= 10;
			} else {
				r.push(`offers their Ancient Greek Revivalism alternative with great fanfare. It fizzles out within a week, mostly because its main backer is privately against all revivalism, but during that time it serves as a focal point for many citizens who are privately impatient with Egyptian revivalism. This imbroglio <span class="red">sets back acceptance</span> of your revivalist project.`);
				V.arcologies[0].FSEgyptianRevivalist -= 10;
			}
			V.nextButton = "Continue";
			App.Utils.updateUserButton();/* unlock Continue button */

			App.Events.addParagraph(frag, r);
			return frag;
		}

		function throwOut() {
			const frag = new DocumentFragment();
			let r = [];
			V.arcologies[0].prosperity -= 10;
			r.push(`You agree with the prominent citizens, and promise to apply all of your considerable contractual and business power to get the nonconformist out of the arcology before they can put their plan into action. You manage it, but only just. Opinion on your actions is mixed: the oligarchs who came to you are pleased you satisfied their requests, but your maneuvers were offensive to the general preference for freedom. The impact on the arcology's economy on the other hand is entirely negative, since the sudden loss of a major player within the arcology's business field <span class="red">damages its prosperity.</span>`);
			V.nextButton = "Continue";
			App.Utils.updateUserButton();/* unlock Continue button */

			App.Events.addParagraph(frag, r);
			return frag;
		}

		function leverage() {
			const frag = new DocumentFragment();
			let r = [];
			repX(500, "event");
			r.push(`Resolving the situation takes you one call. Exactly what happened to your predecessor as owner of the arcology has never become publicly known, but your method of replacing them is rumored to have been somewhat ballistic in nature. It doesn't take much inflection in your voice to communicate threat, and the nonconformist hastily promises to abandon their plans and be less annoying in the future. The oligarchs are somewhat frightened by the rapidity with which you sorted things out, but they can't argue with the results and their <span class="green">respect for you deepens.</span>`);
			V.nextButton = "Continue";
			App.Utils.updateUserButton();/* unlock Continue button */
			App.Events.addParagraph(frag, r);
			return frag;
		}

		function nuance() {
			const frag = new DocumentFragment();
			let r = [];
			cashX(-10000, "event");
			if (V.arcologies[0].FSRestart !== "unset") {
				r.push(`You promise to deal with the situation. The Societal Elite trust you to not fail, and they are not disappointed. The fallen Elite`);
			} else {
				r.push(`You promise to deal with the situation. The prominent citizens trust you enough to leave the problem in your hands, and they are not disappointed. The nonconformist`);
			}
			if (FSNonconformist === "Pastoralist") {
				r.push(`publishes the exposé, but finds it effectively defused by a nuanced pro-dairy campaign leveraging your dominance of the arcology's media.`);
			} else if (FSNonconformist === "Supremacist") {
				r.push(`is intent on publicly flogging the unfortunate ${V.arcologies[0].FSSupremacistRace} slave, but quickly finds that you've manipulated their contracts with you to forbid such displays. Frustrated, they subside for now.`);
			} else if (FSNonconformist === "Subjugationist") {
				r.push(`is intent on publicly flogging the unfortunate non-${V.arcologies[0].FSSubjugationistRace} slave, but quickly finds that you've manipulated their contracts with you to forbid such displays. Frustrated, they subside for now.`);
			} else if (FSNonconformist === "Repopulationist") {
				r.push(`publishes their information about pregnancy, but it has little effect thanks to a preemptive campaign leveraging your dominance over the arcology's media. Your reputation is protected by the promises of a large stock of future slaves, securing both money and ensuring a stable population in case of disaster. You also pointed out all the other slaveowners also partaking in the pleasures of a pregnant woman. Plus, what could a flock of heavily pregnant slaves do to overthrow their masters?`);
			} else if (FSNonconformist === "Eugenics") {
				r.push(`is ejected from the elite class following a leak of evidence proving he wasn't fit to be a member of the Societal Elite. Evidence tailored by you. Unfortunately, he was ready for this move; he and his wife had already fled the arcology. You did your job adequately, and managed to suppress any possible outrage in the city.`);
			} else if (FSNonconformist === "Gender Radicalist") {
				r.push(`finds that you've manipulated their contracts with you to forbid them from showing off nonconforming slaves within the arcology. Frustrated, they subside for now.`);
			} else if (FSNonconformist === "Gender Fundamentalist") {
				r.push(`hosts a huge public party in a lower-class area of the arcology, staffing it with a large number of slaves with dicks. However, they're surprised by an unexpected lack of interest in the event, which is only explained when they find that you've organized a much superior event featuring real girls in the main plaza, at the same time.`);
			} else if (FSNonconformist === "Paternalist") {
				r.push(`finds that you've manipulated their contracts with you to forbid them from displaying public slave beatings within the arcology. Frustrated, they subside for now.`);
			} else if (FSNonconformist === "Degradationist") {
				r.push(`discovers that you've hastily set up subtle clauses within the rental contracts that make it all but inevitable that girls sent out on their own would be confiscated. Frustrated, they subside for now.`);
			} else if (FSNonconformist === "Intellectual Dependency") {
				r.push(`publishes the exposé, but finds it effectively ignored while the public's attention is focused on a record breaking slave orgy. Some fruity drinks and club music were all it took.`);
			} else if (FSNonconformist === "Slave Professional") {
				r.push(`hosts a public display of just how easy it would be to turn a slave into an effective assassin, but finds you've prepared a counter for each of his arguments. He's no fool and backs down before he makes things worse for himself.`);
			} else if (FSNonconformist === "Body Purist") {
				r.push(`finds that a mysterious actor has raised serious safety concerns about the new implant technology, causing a minor public outcry against them. The altered slave is not publicly displayed.`);
			} else if (FSNonconformist === "Transformation Fetishist") {
				r.push(`finds that you've manipulated their contracts with you to forbid them from showing off nonconforming slaves within the arcology. Frustrated, they subside for now.`);
			} else if (FSNonconformist === "Slimness Enthusiast") {
				r.push(`finds that you've manipulated their contracts with you to forbid them from showing off fat-bodied slaves within the arcology. Frustrated, they subside for now.`);
			} else if (FSNonconformist === "Asset Expansionist") {
				r.push(`finds that you've manipulated their contracts with you to forbid them from showing off ruined slaves within the arcology. Frustrated, they subside for now.`);
			} else if (FSNonconformist === "Youth Preferentialist") {
				r.push(`hosts a huge public party in a lower-class area of the arcology, staffing it with a large number of older slaves. However, they're surprised by an unexpected lack of interest in the event, which is only explained when they find that you've organized a much superior event featuring fresh virgins in the main plaza, at the same time.`);
			} else if (FSNonconformist === "Maturity Preferentialist") {
				r.push(`hosts a huge public party in a lower-class area of the arcology, staffing it with a large number of young slaves. However, they're surprised by an unexpected lack of interest in the event, which is only explained when they find that you've organized a much superior event featuring famous MILF whores in the main plaza, at the same time.`);
			} else if (FSNonconformist === "Petite Admiration") {
				r.push(`hosts a huge public ball in a lower-class area of the arcology, staffing it with a large number of tall slaves. However, they're surprised by an unexpected lack of interest in the event, which is only explained when they find that you've organized a much superior event featuring famous shortstacks in the main plaza, at the same time.`);
			} else if (FSNonconformist === "Statuesque Glorification") {
				r.push(`is intent on publicly berating the unfortunate giants into mental breakdowns, but quickly finds that you've manipulated their contracts with you to forbid such displays. Frustrated, but thankful you kept their true height out of it, they subside for now.`);
			} else if (FSNonconformist === "Physical Idealist") {
				r.push(`publishes their screed, and soon receives a challenge from you to a brief public debate. They offer a brief rant, to which you respond by removing your suit jacket and flexing, which almost pops the seams of your formal shirt. The public loses interest in the manifesto in the amusement.`);
			} else if (FSNonconformist === "Decadent Hedonist") {
				r.push(`publishes their report and immediately hosts a speech. This is easily countered; you throw a massive party for the arcology's citizens complete with all you can eat buffets, a variety of drugs and a massive orgy to top it off. While the citizens are distracted, the nonconformist's words go unheard and their report is quietly swept under the rug. Not that your population will care as long as there is adequate entertainment to keep their minds off any potential problems.`);
			} else if (FSNonconformist === "Chattel Religionist") {
				r.push(`brings in their pet dissenting preacher, who finds himself caught in a duel from the pulpit with a noted cleric of the slave religion, brought in from outside the arcology on short notice. The debate receives a great deal of attention, and is generally agreed to have been a close-fought draw.`);
			} else if (FSNonconformist === "Roman Revivalist") {
				r.push(`offers their Gaulish Revivalism alternative with fanfare, but fanfare is something that the Romans could certainly manage. The nasty little attempt is forgotten in a day of public gladiatorial combat, chariot racing, and giveaways for the poorer citizens.`);
			} else if (FSNonconformist === "Neo-Imperialist") {
				r.push(`offers their Neo-Republican alternative with fanfare, but their fanfare pales before the magnificence of your Imperial rule. The well-trained, heavily-armored, and socially pampered Imperial Knights of your arcology react to the mere proposal with an outrage so intense that the backers almost immediately retreat into hiding from your furious citizens.`);
			} else if (FSNonconformist === "Aztec Revivalist") {
				r.push(`offers their Spanish Revivalism alternative with fanfare, but fanfare is something that the Aztecs would never acknowledge. The nasty little attempt does nothing after a day of prayer, bloodletting and slave sacrifice.`);
			} else if (FSNonconformist === "Edo Revivalist") {
				r.push(`offers their Korean Revivalism alternative with fanfare, but fanfare is inelegant next to Edo revivalism. The nasty little attempt has its day, but looks gauche next to the stately grace of your project.`);
			} else if (FSNonconformist === "Arabian Revivalist") {
				r.push(`offers their Byzantine Revivalism alternative with fanfare, but jihad may be waged with diplomacy as much as with the sword. The nasty little attempt founders on the growing conservatism of the arcology, whose citizens rally to you as their proper leader.`);
			} else if (FSNonconformist === "Chinese Revivalist") {
				r.push(`offers their Mongol Revivalism alternative with fanfare, but judicious strengthening of your imperial authority sees it off without trouble. The influence of Confucian ideas is spreading through your arcology, making it resistant to radical departures.`);
			} else {
				r.push(`offers their Ancient Greek Revivalism alternative with fanfare, but fanfare is something that the Egyptians could certainly manage. The nasty little attempt is barely noticed over the perfume and noise of a long and beautiful festival.`);
			}
			r.push(`The oligarchy is pleased by how you managed to defuse the situation without causing a spectacle. They're disappointed that you permitted their nonconforming peer to remain in the arcology's upper echelons for the time being, but they accept your solution to the problem.`);
			V.nextButton = "Continue";
			App.Utils.updateUserButton();/* unlock Continue button */

			App.Events.addParagraph(frag, r);
			return frag;
		}
	}
};