code:
App.Events.refsPaternalistEncounter = class refsPaternalistEncounter extends App.Events.BaseEvent {
	eventPrerequisites() {
		return [
			() => V.arcologies[0].FSPaternalist > random(25, 100) || (V.debugMode > 0 && V.debugModeEventSelection > 0),
		];
	}

	execute(node) {
		const cost = 2000;
		const slave = GenerateNewSlave(null, {maxAge: 22, disableDisability: 1});
		slave.origin = "$He was taken into your custody from an abusive owner.";
		slave.devotion = random(0, 25);
		slave.trust = random(0, 25);
		slave.boobs = random(6, 9) * 50;
		slave.hips = random(-2, -1);
		slave.butt = random(0, 2);
		setHealth(slave, jsRandom(-30, -10), normalRandInt(10, 3), normalRandInt(10, 3));
		slave.clothes = "uncomfortable straps";
		slave.collar = "uncomfortable leather";
		const {
			he, his, him, girl
		} = getPronouns(slave);

		App.Events.drawEventArt(node, slave);

		App.Events.addParagraph(node, [`As a result of ${V.arcologies[0].name}'s adoption of paternalism there has been a remarkable effect on relationships between slaves and owners, with the flourishing of mutual respect between the two forming the basis for social life in the arcology. However, not all citizens are so keen as to internalize the tenets of paternalism, whether out of prejudice, old habits or adherence to a more brutal style of slaveholding.`]);

		App.Events.addParagraph(node, [`On one particular outing, you come across an elderly male citizen giving his young slave quite a thrashing in the street outside of a prominent apartment complex. From the skinned state of the poor ${girl}'s knees and the cruel spiked collar about ${his} neck, it is clear that ${his} owner has been dragging ${him} about the arcology as if ${he} were a dog. To say nothing of this degrading treatment, beating of a slave in public is a fineable offense.`]);

		const choices = [];
		choices.push(new App.Events.Result(`Alert your drones and keep walking`, ignore));
		if (V.cash >= cost) {
			choices.push(new App.Events.Result(`Take the poor slave ${girl} into your custody`, enslave, `Will cost ${cashFormat(cost)}`));
		} else {
			choices.push(new App.Events.Result(null, null, `You lack the necessary funds to enslave ${him}.`));
		}
		choices.push(new App.Events.Result(`Publicly confront the citizen`, confront));
		App.Events.addResponses(node, choices);

		function ignore() {
			return `You inform ${V.assistant.name} that you have a slave beater in need of detainment by your security drones, then continue on your way confident in your knowledge that the citizen will soon be in custody.`;
		}

		function enslave() {
			slave.clothes = "no clothing";
			App.Events.refreshEventArt(slave);
			cashX(-cost, "slaveTransfer", slave);
			return [
				`Confronting the citizen is simplicity in itself; he would not dare defy you under threat of arrest by your security drones and is unlikely to garner any sympathy from the public for his degradationist behaviors. As such, you are able to take civil ownership over the poor slave ${girl} and take ${him} into your care with only minimal compensation to the citizen. As you stride away from ${his} former owner with the ${girl} in your arms, ${he} leans over to plant a chaste kiss of thanks on your cheek.`,
				App.UI.newSlaveIntro(slave)
			];
		}

		function confront() {
			repX(2500, "event");
			return `Your walk up to the citizen is not accompanied by shaking ground or tumultuous fanfare, yet the citizen looks as if death itself has come before him. You don't hurt him physically, instead chastising him publicly in front of his fellow peers who begin to cheer their agreement. You end your tirade of verbal abuse with a reminder that although the man is a citizen of your arcology, that does not give him the impunity to shirk the law. To make it clear his next offense will be his last, a brace of your security drones hover behind you threateningly. The crowd that gathered approve of your rebuke of the citizen.`;
		}
	}
};


code:
App.Events.refsPhysicalIdealistEncounter = class refsPhysicalIdealistEncounter extends App.Events.BaseEvent {
	eventPrerequisites() {
		return [
			() => V.arcologies[0].FSPhysicalIdealist > random(25, 100) || (V.debugMode > 0 && V.debugModeEventSelection > 0),
		];
	}

	execute(node) {
		const cost = 1000;
		const slave = GenerateNewSlave("XX", {maxAge: 22, disableDisability: 1, race: "nonslave"});
		slave.devotion = 100;
		slave.trust = 100;
		setHealth(slave, 100, 0, undefined, 0);
		slave.muscles = 99;
		slave.clothes = (slave.dick > 0 && slave.vagina === -1) ? "sport shorts" : "sport shorts and a sports bra";

		const {
			his, him, himself,
		} = getPronouns(slave);

		App.Events.drawEventArt(node, slave);

		App.Events.addParagraph(node, [`The notion of the physical ideal has taken ${V.arcologies[0].name} by storm and a number of enterprising citizens have been quick to respond by providing new services and businesses in response. One such innovation is the open air gym, a now common sight along ${V.arcologies[0].name}'s many streets. Many citizens utilize such facilities to squeeze in an extra work-out on their daily commute, or in lieu of personal fitness facilities in their own homes.`]);

		App.Events.addParagraph(node, [`While navigating your arcology on an outing, you find yourself coming across one of the arcology's finest open-air gyms, clearly marketed towards the wealthy citizen on the move. As impressive as the gold plated fitness equipment is, in amongst the power racks, dip bars and bench press stations is perhaps one of the most spectacular athletic specimens in the entire arcology. This female citizen has clearly embraced everything that ${V.arcologies[0].name}'s physical idealism represents, molding ${himself} into a rippling blend of broad shoulders, powerful muscles, and a ripped stomach that would shame even the most well-built old world athlete.`]);

		const choices = [];
		choices.push(new App.Events.Result(`Keep walking`, ignore));
		if (V.cash >= cost) {
			choices.push(new App.Events.Result(`Offer to sponsor ${him} for a promotional video`, sponsor, `This will cost ${cashFormat(cost)}.`));
		} else {
			choices.push(new App.Events.Result(null, null, `You lack the necessary funds to promote ${him}.`));
		}
		choices.push(new App.Events.Result(`Spend some time working out with ${him}`, workout));
		App.Events.addResponses(node, choices);

		function ignore() {
			return `The citizen is undoubtedly a uniquely athletic specimen, so you linger for a moment to appreciate the strength and vigor of ${his} punishing physical routine. When you've had your fill, you move on towards your next appointment.`;
		}

		function sponsor() {
			repX(5000, "event");
			cashX(-cost, "event");
			return `Despite ${his} hulking, muscular exterior, the citizen proves to be a shrewd and capable advertisement executive as well. The two of you sit beside a hefty dumbbell rack for some time and together craft a simple promotional ad campaign featuring the herculean physical form of the citizen. Shooting the video is simple, footage of the citizen going about ${his} various fitness routines is inspiring enough, and soon ${his} every muscle and sinew is being broadcast across the world to laud the physical achievements of ${V.arcologies[0].name}. Your citizens are filled with pride, knowing the rest of the world was just awed by their pursuit of bodily perfection.`;
		}

		function workout() {
			const frag = new DocumentFragment();
			App.Events.addParagraph(frag, [`The attendant of the gym is almost too stunned to charge you for entry, and indeed many citizens inside and outside the gym stop to watch you begin a work-out routine. The muscular citizen does not halt ${his} own regime, of course, so you soon find yourself pumping iron and straining your muscles to the limit beside ${him}.`]);

			App.Events.addParagraph(frag, [`Your eyes lock somewhere in the midst of a particularly strenuous exercise, and what follows may be remembered in the annals of ${V.arcologies[0].name} history as the most erotic display of physical might ever recorded. Matching each other rep for rep, the gym is soon echoing with the grunts of both your exertions while your bodies grow slick with glistening sweat. When the last dumbbell is racked, the citizen merely nods ${his} respect at you for matching ${his} pursuit of the physical ideal, to the delight of the watching citizenry.`]);
			repX(1500, "event");
			return frag;
		}
	}
};

license: mit


code:
App.Events.refsRomanStoicism = class refsRomanStoicism extends App.Events.BaseEvent {
	eventPrerequisites() {
		return [
			() => V.arcologies[0].FSPaternalist > random(25, 100) || (V.debugMode > 0 && V.debugModeEventSelection > 0),
			() => V.arcologies[0].FSRomanRevivalist > random(25, 100) || (V.debugMode > 0 && V.debugModeEventSelection > 0),
		];
	}

	execute(node) {
		const cost = 3000;

		App.Events.addParagraph(node, [`Reviving the ancient Roman civilization in ${V.arcologies[0].name} was a turning point for many of your citizens. At first they only wore togas and stolas to cosplay in their kinky games with their spouse and slaves. But with patience and money, you managed to show them the true meaning of pursuing the vision of a new Rome. You transformed a group of slavers and opportunists into a city of patriotic citizens ready to defend their home and their newfound culture. For your wealthiest peers, choosing the Roman way of life included philosophizing like one. As such they studied stoicism and created a new version fitting of this renewed Roman era. Those dedicated stoics even bought slaves to teach them, then philosophize with them.`]);

		App.Events.addParagraph(node, [`While strolling on a market plaza, you stumble upon a group of citizens listening to one of those stoicism philosophers. But unlike your well-known wealthy thinkers, this stoic and his audience all appear to be poor citizens. Some of his listeners looked even poorer and more desperate. They're terrified of their ineluctable enslavement caused by debts and in need of advice. Or at least in need of hope.`]);

		const choices = [];
		choices.push(new App.Events.Result(`Keep walking`, ignore));
		if (V.cash >= cost) {
			choices.push(new App.Events.Result(`Offer financial support to the poorest`, pay, `Will cost ${cashFormat(cost)}`));
		} else {
			choices.push(new App.Events.Result(null, null, `You lack the necessary funds to pay their debts`));
		}
		choices.push(new App.Events.Result(`Philosophize with the stoic`, talk));
		App.Events.addResponses(node, choices);

		function ignore() {
			let r = [];
			r.push (`You don't feel the need to intervene. This kind philosopher seems to know exactly what to answer to your citizens on the verge of enslavement. First they can choose the protective nature of indentured servitude. The paternalist nature of your slaveowning citizens is another reason why they shouldn't fear enslavement.`);
			return r;
		}

		function pay() {
			let r = [];
			repX(1500, "event");
			cashX(-cost, "event");
			r.push (`Your presence is rapidly noted as you move through the audience to join the philosopher and the poor citizens. You tell them their worries have been heard and they shouldn't be fearful of the future. They may one day be subjected to enslavement and you reassure them that, in your paternalistic society, they'll be well cared for, but today they'll remain free as you'll pay their current debts. The thankful citizens have no words strong enough to repay your generosity and will spend the rest of the week blessing your name to everyone they cross paths with.`);
			return r;
		}

		function talk() {
			let r = [];
			r.push (`You express your wish to discuss with the stoic. The audience grows silent as the philosopher and you debate of paternalist ideals and post-apocalyptic stoicism. Your interlocutor and the audience`);
			if (V.PC.rumor === "care") {
				repX(300, "event");
				r.push (`feels genuinely convinced by your words and your desire to make your ${V.arcologies[0].name} a haven where every citizen and slave is well cared for. You managed to dissipate their fear of enslavement and earned their respect.`);
			} else if (V.PC.rumor === "force") {
				repX(-200, "event");
				r.push (`are doubtful of your words. Hearing the ideals of paternalism come from the mouth of someone known to use force to get what they want is not at all convincing. The thought of being enslaved by someone like you is even more terrifying than they feared.`);
			} else {
				repX(100, "event");
				r.push (`listen carefully, but can only trust your words based on your achievements. The simple fact you managed to convince slaveowners to share your paternalist views is enough for the audience to have a little faith in you.`);
			}
			return r;
		}
	}
};


code:
App.Events.refsTransformationFetishismEncounter = class refsTransformationFetishismEncounter extends App.Events.BaseEvent {
	eventPrerequisites() {
		return [
			() => V.arcologies[0].FSTransformationFetishist > random(25, 100) || (V.debugMode > 0 && V.debugModeEventSelection > 0),
		];
	}

	execute(node) {
		const cost = 1000;
		const enslaveCost = 10000;
		const slave = GenerateNewSlave("XX", {maxAge: 22, disableDisability: 1, race: "nonslave"});
		slave.origin = "$He was enslaved by you when you overcharged $him for surgery.";
		slave.devotion = random(-70, -55);
		slave.trust = random(-45, -25);
		setHealth(slave, jsRandom(10, 20), jsRandom(10, 20));
		slave.boobs += 600;
		slave.boobsImplant = 600;
		slave.boobsImplantType = "normal";
		slave.butt++;
		slave.buttImplant = 1;
		slave.buttImplantType = "normal";
		slave.lips += 10;
		slave.lipsImplant = 10;
		slave.clothes = "conservative clothing";

		const {
			He,
			he, his, him, himself, woman
		} = getPronouns(slave);

		App.Events.drawEventArt(node, slave);

		App.Events.addParagraph(node, [`As a result of ${V.arcologies[0].name}'s adoption of transformation fetishism, a number of plastic surgery clinics, cosmetic surgeries and other transformative businesses have begun to crop up around the arcology's various promenades and shopping districts. The citizens of ${V.arcologies[0].name} have taken to the idea of altering their bodies with a gusto — though not all are so quick to adopt the trend just because it's in vogue.`]);

		App.Events.addParagraph(node, [`On one particular outing, you come across a citizen outside a surgery clinic staring pensively up at a poster advertising the variety of cosmetic procedures on offer in the institution. The citizen's expression is wistful, if somewhat grave, and at odds with the display above ${him} lit up with silicone breasts, plump bee-stung lips and fake asses. From ${his} unaltered appearance and simple garments, it is likely that ${he} is not one of the arcology's wealthier denizens and thus is unable to shape ${his} body to ${his} heart's desire.`]);

		const choices = [];
		choices.push(new App.Events.Result(`Keep walking`, ignore));
		if (V.cash >= cost) {
			choices.push(new App.Events.Result(`Pay for ${his} treatment`, pay, `This will cost ${cashFormat(cost)}.`));
		} else {
			choices.push(new App.Events.Result(null, null, `You lack the necessary funds to promote ${him}.`));
		}
		choices.push(new App.Events.Result(`Offer to enhance ${him} in your remote surgery in exchange for a fuck`, fuck));
		App.Events.addResponses(node, choices);

		function ignore() {
			return `It's unfortunate that this citizen is unable to realize ${his} dreams, but that's the way of the Free Cities. There are winners, and there are losers.`;
		}

		function pay() {
			repX(5000, "event");
			cashX(-cost, "event");
			return `It takes a moment for you to convince the ${woman} that you aren't playing some cruel joke on ${him}, but once you do ${he} practically squeals with joy as you take ${him} through the doors of the clinic and announce your intent to pay to give your loyal citizen the absolute transformative works. When you next see ${him} it's on a gurney as ${he}'s wheeled out of the surgery, ${his} patient's gown jutting out from ${his} chest due to the size of ${his} new rack. Through swollen lips ${he} gushes to you about how great ${he} feels to finally be a veritable bimbo, and how ${he}'s going to tell every citizen ${he} fucks in ${V.arcologies[0].name} that they have you to thank for ${his} new body.`;
		}

		function fuck() {
			const frag = new DocumentFragment();
			App.Events.addParagraph(frag, [`You make your presence known to citizen, and once the usual shock and disbelief have worn off the citizen rapidly agrees to your proposal. ${He} follows you back to the penthouse where you inform ${V.assistant.name} that the citizen is to be given the works in the remote surgery. As the citizen passes through the doors to the surgery, ${he} turns and blows you a kiss of gratitude.`]);

			App.Events.addParagraph(frag, [`When the citizen is later delivered to your private suite to uphold ${his} end of the bargain, ${he} does so as the veritable image of a perfect bimbo slut. In ${his} rush to come thank you for transforming ${him} from ${his} plain and plebian appearance ${he} has evidently neglected to clothe ${himself}, so you can admire ${his} new firm tits, plump ass and bee-stung lips from the moment ${he} enters the room. Despite being fresh from surgery, ${he}'s an exquisite fuck and an enthusiastic partner — citizens like ${him} often are, given that penetration from a slave would be a social suicide.`]);
			const choices = [];
			if (V.cash >= (enslaveCost)) {
				choices.push(new App.Events.Result(`Enslave ${him} afterwards`, enslave, `Purchasing ${his} outstanding debts will cost ${cashFormat(enslaveCost)}.`));
			} else {
				choices.push(new App.Events.Result(null, null, `You lack the necessary funds to enslave ${him}.`));
			}
			App.Events.addResponses(frag, choices);

			repX(1500, "event");
			return frag;

			function enslave() {
				newSlave(slave);
				cashX(-enslaveCost, "event", slave);
				return `As your new playmate lies slumbering in bed, you consult with ${V.assistant.name} as to the cost of the surgery conducted today. With some creative accounting, you settle the citizen's other outstanding debts and then arrange for ${him} to be charged a sum in excess of ${his} financial means for the surgery conducted on ${him} today. Of course, that was not what you agreed, but it was ${his} mistake for undergoing an expensive procedure without a formal contract. When ${he} awakens, though ${he} will retain ${his} new bimbo body, ${he} will be just another slave in your penthouse.`;
			}
		}
	}
};


code:
App.Events.REMMerger = class REMMerger extends App.Events.BaseEvent {
	eventPrerequisites() {
		return [
			() => V.corp.Cash > 50000
		];
	}

	execute(node) {
		const slaveCompany = App.Corporate.divisionList
			.filter	(div => div.founded && div.hasMergers)
			.map	(div => div.mergerChoices.map((merger, index) => ({merger, index, division:div})))
			.flat	();
		const maxCompanies = Math.trunc(Math.log2(App.Corporate.divisionList.filter(div => div.founded).length)) + 1;
		const numCompanies = random(1, maxCompanies);

		const companies = [];
		for (let index = 0; index < numCompanies; ++index) {
			companies.push(slaveCompany.pluck());
		}
		const assistant = V.assistant.market ? "your market assistant" : V.assistant.name;

		App.UI.DOM.appendNewElement("p", node, `${capFirstChar(assistant)} constantly combs business records, tax receipts and the media for leads on opportunities for your corporation to take advantage of. Small businesses go under all the time, and with a large amount of cash on hand, your corporation can afford to step in and acquire them. This week, ${assistant} has found ${numberWithPlural(numCompanies, "troubled organization")} you could easily fold into your corporation.`);

		if (companies.length === 1) {
			const company = companies[0];
			App.UI.DOM.appendNewElement("div", node, `This week you come across ${company.merger.text.trouble}`, "majorText");
		} else {
			for (const [index, company] of companies.entries()) {
				App.UI.DOM.appendNewElement("div", node, `The ${ordinalSuffixWords(index + 1)} is ${company.merger.text.trouble}`, "majorText");
			}
		}

		const choices = [];

		for (const company of companies) {
			choices.push(new App.Events.Result(`Absorb the ${company.merger.name}`, () => absorb(company)));
		}
		App.Events.addResponses(node, choices);

		function absorb(company) {
			const frag = new DocumentFragment();
			let r = [];
			r.push(`You quickly acquire the ${company.merger.name} ${company.merger.text.acquire}`);

			const devCount = company.merger.result.development;
			const slaveCount = company.merger.result.slaves;
			if (devCount) {
				company.division.developmentCount += devCount;
			}
			if (slaveCount) {
				company.division.activeSlaves += slaveCount;
			}
			const cost = (company.merger.cost || 50) * 1000;
			if (devCount && slaveCount) {
				App.Corporate.chargeAsset(cost / 2, "development");
				App.Corporate.chargeAsset(cost / 2, "slaves");
			} else if (devCount) {
				App.Corporate.chargeAsset(cost, "development");
			} else if (slaveCount) {
				App.Corporate.chargeAsset(cost, "slaves");
			} else {
				r.push(`<span class="red">ERROR! No changes to the corporation are made!</span>`);
			}
			App.Events.addParagraph(frag, r);
			return frag;
		}
	}
};


code:
App.Events.RESSPAFlirting = class RESSPAFlirting extends App.Events.BaseEvent {
	eventPrerequisites() {
		return [
			() => V.assistant.personality === 1,
			() => V.assistant.appearance !== "normal"
		]; // always valid if sufficient actors can be cast successfully
	}

	actorPrerequisites() {
		return [
			[ // single event slave
				s => s.fetish !== "mindbroken",
				hasAnyArms,
				canTalk,
				canSee,
				canHear,
				s => s.devotion > 50,
				s => s.trust > 75,
				s => s.assignment !== Job.QUARTER,
				s => s.energy > 60,
				s => ((canDoAnal(s) && s.anus > 0) || (canDoVaginal(s) && s.vagina > 0)),
			]
		];
	}

	execute(node) {
		const [eventSlave] = this.actors.map(a => getSlave(a));
		const {
			He, he, his, him, himself, girl
		} = getPronouns(eventSlave);
		const {say} = getEnunciation(eventSlave);
		const belly = bellyAdjective(eventSlave);
		const desc = SlaveTitle(eventSlave);
		const {
			HeA, heA, HisA, hisA, himA, girlA, womanA, loliA
		} = getPronouns(assistant.pronouns().main).appendSuffix("A");
		const assistantCap = capFirstChar(V.assistant.name);

		App.Events.drawEventArt(node, [eventSlave, "assistant"], "no clothing");

		let r = [];
		r.push(`Partway through`);
		r.push(App.UI.DOM.combineNodes(contextualIntro(V.PC, eventSlave, true), "'s"));
		r.push(`weekly inspection, you have to leave for a moment to deal with a minor matter. Inspecting such a devoted slave is a pleasure, but you tear yourself away. Such sacrifices must be made.`);
		App.Events.addParagraph(node, r);

		r = [];
		r.push(`When you return, the comfortably nude ${desc} is flirting shamelessly with ${V.assistant.name}. Your personal assistant's ${V.assistant.appearance} avatar is glowing brightly on the desktop, and ${he} and ${eventSlave.slaveName} are trading increasingly exaggerated compliments.`);

		switch (V.assistant.appearance) {
			case "monstergirl":
				r.push(Spoken(eventSlave, `"I love your hair,"`), `the slave ${say}s.`, Spoken(eventSlave, `"Have you done anything to it lately?"`));
				r.push(`${assistantCap} smiles dangerously, ${hisA} tentacle hair flaring out, its suckers starting to pulsate. "Don't you mean, 'have I done anyone with it lately?' I'd love to do you," ${heA} purrs.`);
				break;
			case "shemale":
				r.push(Spoken(eventSlave, `"I love your cock,"`));
				r.push(`the slave`);
				if (SlaveStatsChecker.checkForLisp(eventSlave)) {
					r.push(`lisps wistfully.`);
				} else {
					r.push(`sighs wistfully.`);
				}
				if (canAchieveErection(eventSlave)) {
					r.push(Spoken(eventSlave, `"I'd love to be that big."`));
				} else if (eventSlave.dick > 6) {
					r.push(Spoken(eventSlave, `"I wish mine could get that hard."`));
				} else {
					r.push(Spoken(eventSlave, `"I can't look away."`));
				}
				r.push(`Complimented, ${V.assistant.name} looks pleased. "Yeah, it's pretty great," ${heA} giggles.`);
				break;
			case "amazon":
				r.push(Spoken(eventSlave, `"You're so big and strong,"`), `the slave ${say}s.`, Spoken(eventSlave, `"You look like you could give a great hug."`));
				r.push(`${assistantCap} blushes. "Um, well," ${heA} says, ${hisA} muscular avatar kicking its heels. "I can't. But I'd like to give you one!"`);
				break;
			case "businesswoman":
				r.push(Spoken(eventSlave, `"You're so confident and sexy,"`), `the slave ${say}s.`, Spoken(eventSlave, `"I love doing what you say."`));
				r.push(`${assistantCap} favors ${him} with an aristocratic look. "Well, you are a good slave," ${heA} says measuringly. "So I suppose I love telling you what to do." ${HeA} uncrosses and recrosses ${hisA} legs.`);
				break;
			case "fairy":
				r.push(Spoken(eventSlave, `"You're so tiny and adorable,"`), `the slave ${say}s.`, Spoken(eventSlave, `"You're a load of fun to be with."`));
				r.push(`${assistantCap} giggles and holds ${hisA} hands up to ${hisA} face. "Aw shucks, you're just saying that," ${heA} says shyly. "You're quite the cutie yourself!" ${HeA} flits to and fro.`);
				break;
			case "pregnant fairy":
				r.push(Spoken(eventSlave, `"You're so tiny and adorable,"`), `the slave ${say}s.`, Spoken(eventSlave, `"You're a load of fun to be with."`));
				r.push(`${assistantCap} giggles and holds ${hisA} hands up to ${hisA} face. "Aw shucks, you're just saying that," ${heA} says shyly. "You're quite the cutie yourself!" ${HeA} moves one hand down to caress ${hisA} belly.`);
				break;
			case "cherub":
			case "schoolgirl":
				r.push(Spoken(eventSlave, `"You're so cute,"`), `the slave ${say}s.`, Spoken(eventSlave, `"It makes things fun."`));
				r.push(`${assistantCap} looks touched. "Aw," ${heA} coos, "I love you too!"`);
				break;
			case "goddess":
			case "hypergoddess":
				r.push(Spoken(eventSlave, `"I love the way you glow,"`), `the slave ${say}s.`, Spoken(eventSlave, `"It's really comforting."`));
				r.push(`${assistantCap} beams maternally. "That's wonderful," ${heA} says resonantly. "I want the best for you."`);
				break;
			case "loli":
				r.push(Spoken(eventSlave, `"You're so cute,"`), `the slave ${say}s.`, Spoken(eventSlave, `"It's really calming."`));
				r.push(`${assistantCap} beams cutely. ${HeA} giggles quietly. "I'll be cuter just for you."`);
				break;
			case "preggololi":
				r.push(Spoken(eventSlave, `"You're so cute,"`), `the slave ${say}s.`, Spoken(eventSlave, `"It's really calming."`));
				r.push(`${assistantCap} beams proudly. ${HeA} giggles loudly and pats ${hisA} belly. "I'll be cuter just for you."`);
				break;
			case "angel":
				r.push(Spoken(eventSlave, `"I love your wings,"`), `the slave ${say}s.`, Spoken(eventSlave, `"They are so majestic."`));
				r.push(`${assistantCap} smiles happily. "If it keeps you out of trouble."`);
				break;
			case "incubus":
				r.push(Spoken(eventSlave, `"You're so sexy,"`), `the slave ${say}s.`, Spoken(eventSlave, `"I can't help be feel so hot around you."`));
				r.push(`${assistantCap} beams proudly. "What kind of sex demon would I be if I couldn't turn you on?"`);
				break;
			case "succubus":
				r.push(Spoken(eventSlave, `"You're so sexy,"`), `the slave ${say}s.`, Spoken(eventSlave, `"I can't help be feel so hot around you."`));
				r.push(`${assistantCap} beams proudly. "What kind of sex demoness would I be if I couldn't turn you on?"`);
				break;
			case "imp":
				r.push(Spoken(eventSlave, `"You're so cute,"`), `the slave ${say}s.`, Spoken(eventSlave, `"It makes you fun."`));
				r.push(`${assistantCap} cackles. "Won't spare you the whip and hot wax just for compliments!"`);
				break;
			case "witch":
				r.push(Spoken(eventSlave, `"You're so, uh, determined,"`), `the slave ${say}s.`, Spoken(eventSlave, `"It makes you fun."`));
				r.push(`${assistantCap} giggles. "I'll just have to play with you more often then."`);
				break;
			case "ERROR_1606_APPEARANCE_FILE_CORRUPT":
				r.push(Spoken(eventSlave, `"You're so interesting,"`), `the slave ${say}s.`, Spoken(eventSlave, `"You always have something new to show off."`));
				r.push(`${assistantCap} laughs. "I'll always find a way into your pants, so why bother trying to say no?"`);
				break;
		}

		App.Events.addParagraph(node, r);
		App.Events.addResponses(node, [
			new App.Events.Result(`Tell your personal assistant to fuck ${him} already`, fuck),
			new App.Events.Result(`Get the slave to get to the point`, point),
		]);

		function fuck() {
			const frag = document.createDocumentFragment();
			r = [];
			let spokenResponse;
			r.push(`You ask ${V.assistant.name} whether ${heA}'s going anywhere with all this flirting. ${HisA} avatar looks at ${eventSlave.slaveName}. "Hear that,`);
			switch (V.assistant.appearance) {
				case "monstergirl":
					r.push(`human?" ${heA} growls. "You're all mine!"`);
					spokenResponse = Spoken(eventSlave, `"Oh noo, I'm being sacrificed to a rape monster,"`);
					break;
				case "shemale":
					r.push(`slut?" ${heA} says, smacking ${hisA} lips. "You're all mine!"`);
					spokenResponse = Spoken(eventSlave, `"Oh noo, there's no way that thing will fit inside me,"`);
					break;
				case "amazon":
					r.push(`slave?" ${heA} roars, rubbing ${hisA} palms together powerfully. "You're my prize!"`);
					spokenResponse = Spoken(eventSlave, `"Oh noo, I've been captured by a horny amazon,"`);
					break;
				case "businesswoman":
					r.push(`bitch?" ${heA} says icily, making a steeple with ${hisA} fingers. "You'll satisfy me! Now!"`);
					spokenResponse = Spoken(eventSlave, `"Oh noo, I'm a slave to a horny older ${womanA}'s lewd desires,"`);
					break;
				case "fairy":
				case "pregnant fairy":
					r.push(`cutie?" ${heA} says, giggling devilishly. "You're aaaaaall miiiine!"`);
					spokenResponse = Spoken(eventSlave, `"Oh noo, I'm a slave to a horny fairy's lewd desires,"`);
					break;
				case "schoolgirl":
					r.push(`cutie?" ${heA} says eagerly, already reaching down to start schlicking away. "You get to be my FWB!"`);
					spokenResponse = Spoken(eventSlave, `"Oh noo, I have to satisfy a naughty little school${girlA},"`);
					break;
				case "goddess":
					r.push(`${girl}?" ${heA} says beatifically. "When I'm through with you, you'll be as pregnant as I!"`);
					spokenResponse = Spoken(eventSlave, `"Oh noo, I'm about to be impregnated by a goddess,"`);
					break;
				case "hypergoddess":
					r.push(`${girl}?" ${heA} says beatifically. "When I'm through with you, you'll be struggling to move!"`);
					spokenResponse = Spoken(eventSlave, `"Oh noo, I'm about to be burst by a slut goddess,"`);
					break;
				case "loli":
					r.push(`${girl}?" ${heA} says cutely. "If you think I'm so cute, why don't you lick my pussy?"`);
					spokenResponse = Spoken(eventSlave, `"Oh noo, I'm about to be dominated by a ${loliA},"`);
					break;
				case "preggololi":
					r.push(`${girl}?" ${heA} says cutely. "If you think I'm so cute, why don't you lick my pussy?"`);
					spokenResponse = Spoken(eventSlave, `"Oh noo, I'm about to be dominated by a slutty ${loliA},"`);
					break;
				case "angel":
					r.push(`${girl}?" ${heA} says beatifically. "I'm going to show you divine skill!"`);
					spokenResponse = Spoken(eventSlave, `"Oh noo, I'm going to be taken to heaven,"`);
					break;
				case "cherub":
					r.push(`cutie?" ${heA} says cutely, already reaching down to start schlicking away. "You get to be my best friend for the evening!"`);
					spokenResponse = Spoken(eventSlave, `"Oh noo, I'm going to get baptised by a squirting little angel,"`);
					break;
				case "incubus":
					r.push(`dick-sleeve?" ${heA} says dominantly, already at full mast. "I'm going to use you till all you can think of is cock!"`);
					spokenResponse = Spoken(eventSlave, `"Oh noo, I'm going to fucked out of my mind,"`);
					break;
				case "succubus":
					r.push(`bitch?" ${heA} says dominantly, already wet. "I'm going to ride you till you're all used up!"`);
					spokenResponse = Spoken(eventSlave, `"Oh noo, I'm going to have my sexual essence stolen,"`);
					break;
				case "imp":
					r.push(`whore?" ${heA} says eagerly. "I'm going to torment you till you scream in pleasure!"`);
					spokenResponse = Spoken(eventSlave, `"Oh noo, I'd better start licking if I don't want to suffer,"`);
					break;
				case "witch":
					r.push(`sexy?" ${heA} says eagerly, hiking ${hisA} dress to reveal a squirming cock. "For once a spell gone wrong is working out!"`);
					spokenResponse = Spoken(eventSlave, `"Oh noo, I'm going to get violated by a terrible witch,"`);
					break;
				case "ERROR_1606_APPEARANCE_FILE_CORRUPT":
					r.push(`nest?" ${heA} says eagerly, forming multiple cocks out of ${hisA} body. "I'm going to fill you with eggs!"`);
					spokenResponse = Spoken(eventSlave, `"Oh noo, I'm going to be a nursery for a freak,"`);
					break;
			}
			App.Events.addParagraph(frag, r);

			r = [];
			r.push(spokenResponse, `the ${desc} gasps with mock horror. Your personal assistant gives ${him} rapid-fire orders, making ${him} set up sex toys in the corner of your office to conform to ${hisA} avatar.`);
			App.Events.addParagraph(frag, r);

			r = [];
			const {heU, hisU} = getNonlocalPronouns(V.seeDicks).appendSuffix('U');
			r.push(`The next slave on the inspection enters and approaches you, sitting imperturbably behind your desk, but stops and stares when ${heU} notices what's going on in the corner of your office. A wallscreen in the corner shows ${V.assistant.name}'s avatar`);
			switch (V.assistant.appearance) {
				case "monstergirl":
					r.push(`with both ${hisA} cocks up the asshole of an avatar of ${eventSlave.slaveName}. Below this, the slave ${himself} is`);
					if (eventSlave.belly >= 300000) {
						r.push(`face-down, perched atop ${his} ${belly}`);
						if (eventSlave.bellyPreg >= 3000) {
							r.push(`pregnancy,`);
						} else {
							r.push(`belly,`);
						}
					} else if (eventSlave.belly >= 5000) {
						r.push(`face-down, ${his} rear up in the air to give ${his} ${belly}`);
						if (eventSlave.bellyPreg >= 3000) {
							r.push(`pregnancy`);
						} else {
							r.push(`belly`);
						}
						r.push(`room,`);
					} else {
						r.push(`face-down,`);
					}
					r.push(`with two fuckmachines pounding`);
					if (canDoVaginal(eventSlave) && canDoAnal(eventSlave)) {
						r.push(`${him}: one in the pussy, one in the ass.`);
						seX(eventSlave, "vaginal", "assistant", "penetrative");
						seX(eventSlave, "anal", "assistant", "penetrative");
					} else if (canDoVaginal(eventSlave)) {
						r.push(`${his} pussy.`);
						seX(eventSlave, "vaginal", "assistant", "penetrative", 2);
					} else {
						r.push(`${his} ass.`);
						seX(eventSlave, "anal", "assistant", "penetrative", 2);
					}
					break;
				case "shemale":
					r.push(`with ${hisA} third leg inside`);
					if (canDoVaginal(eventSlave)) {
						r.push(`the pussy of an avatar of ${eventSlave.slaveName}. Below this, the slave ${himself} is taking vaginal from a fuckmachine with an absurdly big dildo.`);
						seX(eventSlave, "vaginal", "assistant", "penetrative");
					} else {
						r.push(`the ass of an avatar of ${eventSlave.slaveName}. Below this, the slave ${himself} is taking anal from a fuckmachine with an absurdly big dildo.`);
						seX(eventSlave, "anal", "assistant", "penetrative");
					}
					break;
				case "amazon":
					r.push(`powerfully fucking an avatar of ${eventSlave.slaveName} with a beautiful carved bone and worked leather strap-on.`);
					if (canDoVaginal(eventSlave)) {
						r.push(`Below this, the slave ${himself} is taking hard vaginal from a fuckmachine.`);
						seX(eventSlave, "vaginal", "assistant", "penetrative");
					} else {
						r.push(`Below this, the slave ${himself} is taking hard anal from a fuckmachine.`);
						seX(eventSlave, "anal", "assistant", "penetrative");
					}
					break;
				case "angel":
				case "businesswoman":
				case "cherub":
				case "loli":
				case "preggololi":
				case "schoolgirl":
					r.push(`being eaten out by an avatar of ${eventSlave.slaveName}, who is touching ${himself} in turn. Below this, the slave ${himself} is performing oral on a realistic fake pussy while masturbating.`);
					seX(eventSlave, "oral", "assistant", "penetrative");
					break;
				case "fairy":
					if (eventSlave.height < 35) {
						if (eventSlave.dick > 0) {
							r.push(`bouncing on ${eventSlave.slaveName}'s lap and eagerly taking ${his} cock, finally enjoying sex with someone ${hisA} size. Below this, the slave ${himself} is thrusting into a 'realistic' tiny fairy doll, bloated with cum.`);
						} else {
							r.push(`legs tied to one another as they scissor enthusiastically, covered in sexual fluids from the waist down, Below this, the slave ${himself} is grinding away between a 'realistic' tiny fairy doll's legs.`);
						}
					} else {
						r.push(`bouncing on ${eventSlave.slaveName}'s`);
						if (eventSlave.dick > 0) {
							r.push(`cock, distending ${hisA} belly with each thrust`);
						} else {
							r.push(`hard clit`);
						}
						r.push(`while a vine is gently penetrating below ${him}. Below this, the slave ${himself} is thrusting into a 'realistic' tiny fairy doll pussy`);
						if (eventSlave.dick > 0) {
							r.push(`bloated with cum`);
						}
						r.push(`while a flexible dildo gently thrusts into ${his}`);
						if (canDoVaginal(eventSlave)) {
							r.push(`pussy. It's an ejaculating model, and it's currently pumping a large volume of semen into ${his} cunt.`);
							seX(eventSlave, "vaginal", "assistant", "penetrative");
						} else {
							r.push(`ass. It's an ejaculating model, and it's currently pumping a large volume of semen into ${his} ass.`);
							seX(eventSlave, "anal", "assistant", "penetrative");
						}
					}
					break;
				case "pregnant fairy":
					if (eventSlave.height < 35) {
						if (eventSlave.dick > 0) {
							r.push(`lying on ${hisA} back as ${eventSlave.slaveName} gently thrusts into ${himA}, legs locked around ${his} waist. ${eventSlave.slaveName} enjoys running ${his}`);
							if (hasBothArms(eventSlave)) {
								r.push(`hands`);
							} else {
								r.push(`hand`);
							}
							r.push(`over the fairy's pregnant belly as ${he} leans in to suckle on the fairy's breasts. Below this, the slave ${himself} is thrusting into a 'realistic' tiny fairy doll, the pregnant belly swelling a little larger with every ejaculation.`);
						} else {
							r.push(`legs tied to one another as they scissor gently, covered in sexual fluids from the waist down. ${eventSlave.slaveName} enjoys rubbing and kissing the pregnant belly from time to time. Below this, the slave ${himself} is grinding away between a 'realistic' tiny fairy doll's legs.`);
						}
					} else {
						r.push(`cradling ${hisA} belly as ${heA}'s being eaten out by an avatar of ${eventSlave.slaveName}, who is being double penetrated by a couple of vines. Below this, the slave ${himself} is performing oral on a 'realistic' tiny fairy doll pussy while being penetrated by two flexible dildos. They're an ejaculating model, and it's filled ${him} so completely that each thrust sends a gush of fake cum down ${his} legs to join the puddle on the floor.`);
						seX(eventSlave, "oral", "assistant", "penetrative");
						if (canDoVaginal(eventSlave) && canDoAnal(eventSlave)) {
							seX(eventSlave, "vaginal", "assistant", "penetrative");
							seX(eventSlave, "anal", "assistant", "penetrative");
						} else if (canDoVaginal(eventSlave)) {
							seX(eventSlave, "vaginal", "assistant", "penetrative", 2);
						} else {
							seX(eventSlave, "anal", "assistant", "penetrative", 2);
						}
					}
					break;
				case "goddess":
					r.push(`gently making love to an avatar of ${eventSlave.slaveName}, whose`);
					if (eventSlave.bellyPreg >= 1500) {
						r.push(`${belly} pregnant belly is growing ever more full of children.`);
					} else if (eventSlave.belly >= 1500) {
						r.push(`${belly} belly is growing ever larger and kicks begin to dot its surface.`);
					} else {
						r.push(`belly is becoming distended.`);
					}
					r.push(`Below this, the slave ${himself}`);
					if (isItemAccessible.entry("a huge empathy belly", "bellyAccessory", eventSlave) === true) {
						r.push(`has a huge empathy belly hanging from ${his} middle and is`);
					} else {
						r.push(`is`);
					}
					r.push(`taking a fuckmachine`);
					if (canDoVaginal(eventSlave)) {
						r.push(`in ${his} cunt;`);
						seX(eventSlave, "vaginal", "assistant", "penetrative");
					} else {
						r.push(`up ${his} butt;`);
						seX(eventSlave, "anal", "assistant", "penetrative");
					}
					r.push(`it's an ejaculating model, and it's filled ${him} so completely that each thrust sends a gush of fake cum down ${his} legs to join the puddle on the floor.`);
					break;
				case "hypergoddess":
					r.push(`gently making love to an avatar of ${eventSlave.slaveName}, whose`);
					if (eventSlave.bellyPreg >= 450000) {
						r.push(`${belly} pregnant belly is rapidly ballooning with life and pushing ${him} upwards from the sheer size of the squirming mass.`);
					} else if (eventSlave.bellyPreg >= 1500) {
						r.push(`${belly} pregnant belly is growing taut and beginning to bulge from the amount of children growing within ${him}.`);
					} else if (eventSlave.belly >= 1500) {
						r.push(`${belly} belly is growing taut and beginning to bulge from the amount of children growing within ${him}.`);
					} else {
						r.push(`belly is becoming massively distended.`);
					}
					r.push(`Below this, the slave ${himself}`);
					if (isItemAccessible.entry("a huge empathy belly", "bellyAccessory", eventSlave) === true) {
						r.push(`has a huge empathy belly hanging from ${his} middle and is`);
					} else {
						r.push(`is`);
					}
					r.push(`taking a fuckmachine`);
					if (canDoVaginal(eventSlave)) {
						r.push(`in ${his} cunt;`);
						seX(eventSlave, "vaginal", "assistant", "penetrative");
					} else {
						r.push(`up ${his} butt;`);
						seX(eventSlave, "anal", "assistant", "penetrative");
					}
					r.push(`it's an ejaculating model, and it's filled ${him} so completely that each thrust sends a gush of fake cum down ${his} legs to join the puddle on the floor.`);
					break;
				case "incubus":
					r.push(`powerfully fucking an avatar of ${eventSlave.slaveName} with a dick sized to perfectly fill ${him}.`);
					if (canDoVaginal(eventSlave)) {
						r.push(`Below this, the slave ${himself} is taking hard vaginal from a fuckmachine;`);
						seX(eventSlave, "vaginal", "assistant", "penetrative");
					} else {
						r.push(`Below this, the slave ${himself} is taking hard anal from a fuckmachine;`);
						seX(eventSlave, "anal", "assistant", "penetrative");
					}
					r.push(`it's an ejaculating model, and it's filled ${him} so completely that each thrust sends a gush of fake cum down ${his} legs to join the puddle on the floor.`);
					break;
				case "succubus":
					if (canPenetrate(eventSlave)) {
						r.push(`riding ${eventSlave.slaveName}'s dick. Below this, the slave ${himself} is humping a realistic fake pussy built into a finely crafted female lower body.`);
						seX(eventSlave, "penetrative", "assistant", "vaginal");
					} else {
						r.push(`being eaten out by an avatar of ${eventSlave.slaveName}, who is touching ${himself} in turn. Below this, the slave ${himself} is performing oral on a realistic fake pussy while masturbating.`);
						seX(eventSlave, "oral", "assistant", "penetrative");
					}
					break;
				case "imp":
					r.push(`being eaten out by an avatar of ${eventSlave.slaveName}, who is touching ${himself} in turn while the imp yanks a chain connected to ${his} nipples with one hand and smacks ${him} with a riding crop with the other. Below this, the slave ${himself} is performing oral on a realistic fake pussy while masturbating; a pair of`);
					if (eventSlave.nipples !== "fuckable") {
						r.push(`clamps attached to ${his} nipples randomly jerking`);
					} else {
						r.push(`vibrators wedged in ${his} nipples violently vibrating`);
					}
					r.push(`and a whip lined wheel steadily slapping at ${his} ass and back.`);
					seX(eventSlave, "oral", "assistant", "penetrative");
					break;
				case "witch":
					if (canDoVaginal(eventSlave) && canDoAnal(eventSlave)) {
						r.push(`with ${hisA} prehensile cocks crammed into every available hole in an avatar of ${eventSlave.slaveName}. Below this, the slave ${himself} is`);
						if (eventSlave.belly >= 300000) {
							r.push(`face-down, perched atop ${his} ${belly}`);
							if (eventSlave.bellyPreg >= 3000) {
								r.push(`pregnancy,`);
							} else {
								r.push(`belly,`);
							}
						} else if (eventSlave.belly >= 5000) {
							r.push(`face-down, ${his} rear up in the air to give ${his} ${belly}`);
							if (eventSlave.bellyPreg >= 3000) {
								r.push(`pregnancy`);
							} else {
								r.push(`belly`);
							}
							r.push(`room,`);
						} else {
							r.push(`face-down,`);
						}
						r.push(`with multiple vibrating dildos quivering in ${his} ass and pussy.`);
						seX(eventSlave, "vaginal", "assistant", "penetrative", 2);
						seX(eventSlave, "anal", "assistant", "penetrative", 2);
					} else if (canDoVaginal(eventSlave)) {
						r.push(`with ${hisA} prehensile cocks crammed into every available hole in an avatar of ${eventSlave.slaveName}. Below this, the slave ${himself} is`);
						if (eventSlave.belly >= 300000) {
							r.push(`face-down, perched atop ${his} ${belly}`);
							if (eventSlave.bellyPreg >= 3000) {
								r.push(`pregnancy,`);
							} else {
								r.push(`belly,`);
							}
						} else if (eventSlave.belly >= 5000) {
							r.push(`face-down, ${his} rear up in the air to give ${his} ${belly}`);
							if (eventSlave.bellyPreg >= 3000) {
								r.push(`pregnancy`);
							} else {
								r.push(`belly`);
							}
							r.push(`room,`);
						} else {
							r.push(`face-down,`);
						}
						r.push(`with multiple vibrating dildos quivering in ${his} pussy.`);
						seX(eventSlave, "vaginal", "assistant", "penetrative", 4);
					} else {
						r.push(`with ${hisA} prehensile cocks crammed into the asshole of an avatar of ${eventSlave.slaveName}. Below this, the slave ${himself} is`);
						if (eventSlave.belly >= 300000) {
							r.push(`face-down, perched atop ${his} ${belly}`);
							if (eventSlave.bellyPreg >= 3000) {
								r.push(`pregnancy,`);
							} else {
								r.push(`belly,`);
							}
						} else if (eventSlave.belly >= 5000) {
							r.push(`face-down, ${his} rear up in the air to give ${his} ${belly}`);
							if (eventSlave.bellyPreg >= 3000) {
								r.push(`pregnancy`);
							} else {
								r.push(`belly`);
							}
							r.push(`room,`);
						} else {
							r.push(`face-down,`);
						}
						r.push(`with multiple vibrating dildos quivering in ${his} ass.`);
						seX(eventSlave, "anal", "assistant", "penetrative", 4);
					}
					break;
				case "ERROR_1606_APPEARANCE_FILE_CORRUPT":
					r.push(`with ${hisA} tentacles crammed into every available hole in an avatar of ${eventSlave.slaveName}, rapidly pumping eggs into ${his} quickly swelling body.`);
					if (canDoVaginal(eventSlave) && canDoAnal(eventSlave)) {
						r.push(`Below this, the slave ${himself}`);
						if (isItemAccessible.entry("a huge empathy belly", "bellyAccessory", eventSlave) === true) {
							r.push(`has a huge empathy belly strapped to ${his} middle and`);
						}
						r.push(`is`);
						if (eventSlave.belly >= 300000) {
							r.push(`face-down, perched atop ${his} ${belly}`);
							if (eventSlave.bellyPreg >= 3000) {
								r.push(`pregnancy,`);
							} else {
								r.push(`belly,`);
							}
						} else if (eventSlave.belly >= 5000) {
							r.push(`face-down, ${his} rear up in the air to give ${his} ${belly}`);
							if (eventSlave.bellyPreg >= 3000) {
								r.push(`pregnancy`);
							} else {
								r.push(`belly`);
							}
							r.push(`room,`);
						} else {
							r.push(`face-down,`);
						}
						r.push(`while a fuckmachine powerfully fucks ${his} mouth, ass and pussy.`);
						seX(eventSlave, "vaginal", "assistant", "penetrative", 4);
						seX(eventSlave, "anal", "assistant", "penetrative", 4);
						seX(eventSlave, "oral", "assistant", "penetrative", 3);
					} else if (canDoVaginal(eventSlave)) {
						r.push(`Below this, the slave ${himself}`);
						if (isItemAccessible.entry("a huge empathy belly", "bellyAccessory", eventSlave) === true) {
							r.push(`has a huge empathy belly strapped to ${his} middle and`);
						}
						r.push(`is`);
						if (eventSlave.belly >= 300000) {
							r.push(`face-down, perched atop ${his} ${belly}`);
							if (eventSlave.bellyPreg >= 3000) {
								r.push(`pregnancy,`);
							} else {
								r.push(`belly,`);
							}
						} else if (eventSlave.belly >= 5000) {
							r.push(`face-down, ${his} rear up in the air to give ${his} ${belly}`);
							if (eventSlave.bellyPreg >= 3000) {
								r.push(`pregnancy`);
							} else {
								r.push(`belly`);
							}
							r.push(`room,`);
						} else {
							r.push(`face-down,`);
						}
						r.push(`with multiple vibrating dildos quivering in ${his} pussy.`);
						seX(eventSlave, "vaginal", "assistant", "penetrative", 8);
						seX(eventSlave, "oral", "assistant", "penetrative", 3);
					} else {
						r.push(`Below this, the slave ${himself}`);
						if (isItemAccessible.entry("a huge empathy belly", "bellyAccessory", eventSlave) === true) {
							r.push(`has a huge empathy belly strapped to ${his} middle and`);
						}
						r.push(`is`);
						if (eventSlave.belly >= 300000) {
							r.push(`face-down, perched atop ${his} ${belly}`);
							if (eventSlave.bellyPreg >= 3000) {
								r.push(`pregnancy,`);
							} else {
								r.push(`belly,`);
							}
						} else if (eventSlave.belly >= 5000) {
							r.push(`face-down, ${his} rear up in the air to give ${his} ${belly}`);
							if (eventSlave.bellyPreg >= 3000) {
								r.push(`pregnancy`);
							} else {
								r.push(`belly`);
							}
							r.push(`room,`);
						} else {
							r.push(`face-down,`);
						}
						r.push(`with multiple vibrating dildos quivering in ${his} ass.`);
						seX(eventSlave, "anal", "assistant", "penetrative", 8);
						seX(eventSlave, "oral", "assistant", "penetrative", 3);
					}
					r.push(`At different intervals, an undulation moves down the dildo, forcing ${him} to stretch wide to allow it to pass into ${his} body. Each "egg" forced into ${him} coincides with another blast from the ejaculating model, and it's filled ${him} so completely that each gush of fake cum flows down ${his} legs to join the puddle on the floor.`);
			}
			r.push(`<span class="devotion inc">"Good ${girl},"</span> ${V.assistant.name} says. The new slave turns resolutely away from the arresting sight and gets on with the inspection, doing ${hisU} best to ignore the lewd noises coming from that part of the room.`);
			eventSlave.devotion += 4;
			App.Events.addParagraph(frag, r);
			return frag;
		}

		function point() {
			const frag = document.createDocumentFragment();
			r = [];
			r.push(`You tell ${eventSlave.slaveName} that ${he} and your personal assistant really should get a room. ${He} looks at ${V.assistant.name}'s avatar, and then back up at you. ${He} gives you a mischievous look, and then bends down to whisper to the avatar behind ${his} hand.`);
			switch (V.assistant.appearance) {
				case "monstergirl":
					r.push(`"Why not," the monster${girlA} chuckles,`);
					break;
				case "shemale":
					r.push(`"Oh yeah, sure," the shemale giggles,`);
					break;
				case "amazon":
					r.push(`"Fuck yes," the amazon exclaims,`);
					break;
				case "businesswoman":
					r.push(`"Because you asked," the business${womanA} says,`);
					break;
				case "fairy":
				case "pregnant fairy":
					r.push(`"Of course, cutie!" the fairy giggles,`);
					break;
				case "schoolgirl":
					r.push(`"Aw, hot! Of course," the school${girlA} giggles,`);
					break;
				case "goddess":
				case "hypergoddess":
					r.push(`"Oh, lovely," the goddess says beatifically,`);
					break;
				case "loli":
					r.push(`"K-kay," the ${loliA} says naïvely,`);
					break;
				case "preggololi":
					r.push(`"Okay," the ${loliA} says excitedly,`);
					break;
				case "angel":
					r.push(`"What? But..." the angel says reluctantly,`);
					break;
				case "cherub":
					r.push(`"Sounds fun," the cherub says with a giggle,`);
					break;
				case "incubus":
					r.push(`"I'd never turn down getting my dick sucked," the incubus beams,`);
					break;
				case "succubus":
					r.push(`"You know it," the succubus exclaims,`);
					break;
				case "imp":
					r.push(`"Fuck yes," the imp shouts,`);
					break;
				case "witch":
					r.push(`"That would be nice," the witch says with a blush,`);
					break;
				case "ERROR_1606_APPEARANCE_FILE_CORRUPT":
					r.push(`"Like you had a choice," the creature screams,`);
			}
			r.push(`and directs ${him} to an unoccupied room with the necessary sex toys.`);
			App.Events.addParagraph(frag, r);

			r = [];
			r.push(`Several minutes later, ${V.assistant.name}'s avatar reappears on your desk,`);
			if ((eventSlave.fetishKnown === 0) || (eventSlave.fetish === "none")) {
				r.push(`making love to an avatar of ${eventSlave.slaveName}.`);
			} else if (eventSlave.fetish === "buttslut") {
				r.push(`fucking an avatar of ${eventSlave.slaveName} up the ass. "Excellent idea, ${properTitle()}," ${heA} says, and the slave's avatar, which is a little overwhelmed, waves weakly.`);
				if (canDoAnal(eventSlave)) {
					seX(eventSlave, "anal", "assistant", "penetrative");
				}
			} else if (eventSlave.fetish === "cumslut") {
				r.push(`getting oral from an avatar of ${eventSlave.slaveName}. "Excellent idea, ${properTitle()}," ${heA} says, and the slave's avatar waves, since ${his} mouth is full.`);
				seX(eventSlave, "oral", "assistant", "penetrative");
			} else if (eventSlave.fetish === "sadist") {
				r.push(`getting spanked by an avatar of ${eventSlave.slaveName}. "Oh, ah, e-excellent idea, ${properTitle()}, ow," ${heA} says, and the slave's avatar waves.`);
			} else if (eventSlave.fetish === "masochist") {
				r.push(`raining spanks on an avatar of ${eventSlave.slaveName} as it kisses and licks ${his} lower legs. "Excellent idea, ${properTitle()}," ${heA} says, and the slave's avatar waves weakly, since ${his} mouth is busy.`);
				seX(eventSlave, "oral", "assistant", "penetrative");
			} else if (eventSlave.fetish === "dom") {
				r.push(`getting fucked by an avatar of ${eventSlave.slaveName}. "Excellent idea, ${properTitle()}," ${heA} says, and the slave's avatar waves cheerily.`);
				seX(eventSlave, "penetrative", "assistant", "anal");
			} else if (eventSlave.fetish === "submissive") {
				r.push(`along with a crowd of copies of ${himself}. They're gangbanging an avatar of ${eventSlave.slaveName}. "Excellent idea, ${properTitle()}," ${heA} says, and the slave's avatar waves weakly.`);
				seX(eventSlave, "oral", "assistant", "penetrative", 5);
				if (canDoAnal(eventSlave)) {
					seX(eventSlave, "anal", "assistant", "penetrative", 5);
				}
				if (canDoVaginal(eventSlave)) {
					seX(eventSlave, "vaginal", "assistant", "penetrative", 5);
				}
			} else if (eventSlave.fetish === "boobs") {
				r.push(`kissing and sucking the nipples of an avatar of ${eventSlave.slaveName}. "Excellent idea, ${properTitle()}," ${heA} breaks off to say, and the slave's avatar waves.`);
				seX(eventSlave, "mammary", "assistant", "penetrative");
			} else if (eventSlave.fetish === "pregnancy") {
				switch (V.assistant.appearance) {
					case "goddess":
					case "hypergoddess":
					case "incubus":
					case "ERROR_1606_APPEARANCE_FILE_CORRUPT":
						r.push(`fucking a heavily pregnant avatar of ${eventSlave.slaveName}, each thrust producing the lewd sound of a cum-filled hole being fucked. "Excellent idea, ${properTitle()}," ${heA} says, thrusting hard and swelling ${his} partner's belly a bit more; the slave's avatar, which is a little overwhelmed and very full, waves weakly, before returning ${his} hand to ${his} overfilled middle.`);
						break;
					default:
						r.push(`fucking an avatar of ${eventSlave.slaveName}, each thrust producing the lewd sound of a cum-filled hole being fucked. "Excellent idea, ${properTitle()}," ${heA} says, and the slave's avatar, which is a little overwhelmed, waves weakly.`);
				}
				if (canDoVaginal(eventSlave)) {
					seX(eventSlave, "vaginal", V.PC, "penetrative");
				} else {
					seX(eventSlave, "anal", V.PC, "penetrative");
				}
			} else {
				r.push(`making sweet love to an avatar of ${eventSlave.slaveName}, in the missionary position. "Excellent idea, ${properTitle()}," ${heA} says, and then goes back to kissing the slave's delighted avatar.`);
				if (canDoVaginal(eventSlave)) {
					seX(eventSlave, "vaginal", V.PC, "penetrative");
				} else {
					seX(eventSlave, "anal", V.PC, "penetrative");
				}
			}
			r.push(`${eventSlave.slaveName} probably isn't thinking about how far this is from vanilla human sexuality at the moment. But if ${he} took a moment to reflect, you muse, ${he} might be surprised at what <span class="mediumaquamarine">${he}'s learned to be comfortable with.</span>`);
			eventSlave.trust += 4;
			App.Events.addParagraph(frag, r);
			return frag;
		}
	}
};


code:
App.Events.RESSAgeDifferenceOldPC = class RESSAgeDifferenceOldPC extends App.Events.BaseEvent {
	eventPrerequisites() {
		return [
			() => V.PC.actualAge >= 50,
		]; // always valid if sufficient actors can be cast successfully
	}

	actorPrerequisites() {
		return [
			[ // single event slave
				s => s.fetish !== "mindbroken",
				canWalk,
				canTalk,
				canHear,
				s => s.devotion > 20,
				s => s.trust > 20,
				s => s.actualAge < 22,
				s => (canDoAnal(s) || canDoVaginal(s)),
			]
		];
	}

	execute(node) {
		const [eventSlave] = this.actors.map(a => getSlave(a));
		const {
			He, he, his, him, himself, girl, daughter
		} = getPronouns(eventSlave);
		const {title: Master, say} = getEnunciation(eventSlave);
		const belly = bellyAdjective(eventSlave);

		App.Events.drawEventArt(node, eventSlave, "no clothing");

		let r = [];
		r.push(`As another long week draws to a close,`);
		r.push(App.UI.DOM.combineNodes(contextualIntro(V.PC, eventSlave, true), ","));
		r.push(`happens to`);
		if (eventSlave.belly >= 10000) {
			r.push("waddle");
		} else {
			r.push("walk");
		}
		r.push(`past your office toward bed. There's nothing inherently abnormal about ${his} actions, but you do notice as ${he} steps past the doorway that an expression of worry and concern adorns ${his} ${eventSlave.skin} face. When you call ${him} into your office, ${his} face visibly brightens up in an attempt to conceal ${his} obvious distress as ${he} comes before you. Notably, although ${he} stands still and patiently awaits further orders, you notice ${he}`);
		if (canSee(eventSlave)) {
			r.push(`never manages to meet your eyes.`);
		} else {
			r.push(`keeps ${his} sightless eyes downcast.`);
		}
		r.push(`When you ask ${him} what's troubling ${him}, ${his} face plainly falls.`);
		App.Events.addParagraph(node, r);
		r = [];

		if (eventSlave.mother !== -1 && eventSlave.father !== -1) {
			r.push(Spoken(eventSlave, `"${Master}, you're so old,"`));
			r.push(`${he} ${say}s penitently before smiling shyly in an attempt to insert some levity into ${his} confession.`);
			r.push(Spoken(eventSlave, `"It's just that I'm young enough to be your ${daughter}, ${Master}. It's a little weird, isn't it?"`));
		} else {
			r.push(Spoken(eventSlave, `"${Master}, you're so old,"`));
			r.push(`${he} ${say}s penitently before smiling shyly in an attempt to insert some levity into ${his} confession.`);
			r.push(Spoken(eventSlave, `"Compared to you, I'm nothing, ${Master}. I feel so inadequate and I don't want to`));
			if (eventSlave.mother === -1) {
				r.push(Spoken(eventSlave, `have been a waste of time for you. I'm sorry you had to carry me inside you for nine months, and I'm sorry I stretched you out when I was born, ${Master}. Is it a little weird to feel this way?"`));
			} else {
				r.push(Spoken(eventSlave, `be a disappointment to you, ${Master}. Is it a little weird to feel this way?"`));
			}
		}

		App.Events.addParagraph(node, r);
		App.Events.addResponses(node, [
			new App.Events.Result(`Gently acclimate ${him} to the age difference with some lovemaking`, lovemaking, virginityWarning(false)),
			new App.Events.Result(`Cruelly torment ${him} about the age difference`, torment, virginityWarning(false)),
			isFertile(eventSlave)
				? new App.Events.Result(`Give ${him} an afternoon off for some quality time with a local retirement community`, afternoon, virginityWarning(true))
				: new App.Events.Result(),
		]);

		function virginityWarning(knockedUp){
			if (knockedUp) {
				let t = `This option will render ${eventSlave.slaveName} pregnant`;
				if (canDoVaginal(eventSlave) && (eventSlave.vagina === 0)) {
					t += ` and take ${his} virginity`;
				} else if (!canDoVaginal(eventSlave) && (eventSlave.anus === 0)) {
					t += ` and take ${his} anal virginity`;
				}
				return t;
			} else if (canDoVaginal(eventSlave) && (eventSlave.vagina === 0)) {
				return `This option will take ${his} virginity`;
			} else if (!canDoVaginal(eventSlave) && (eventSlave.anus === 0)) {
				return `This option will take ${his} anal virginity`;
			}
		}

		function lovemaking() {
			r = [];
			r.push(`As you cross the breadth of your office to reach ${eventSlave.slaveName}, ${he} presents ${himself} for your sexual usage out of habit. However, you take ${him} by surprise by drawing ${him} into your arms, running the tips of your fingers`);
			if (eventSlave.hStyle.includes("bald") || eventSlave.bald === 1) {
				r.push(`across ${his} scalp,`);
			} else {
				r.push(`through ${his} ${eventSlave.hColor} hair,`);
			}
			r.push(`and looking into ${his} ${App.Desc.eyesColor(eventSlave)}.`);
			if (canSee(eventSlave)) {
				r.push(`${He} meets your gaze for a brief moment before blushing girlishly, as if forgetting how many years ${his} senior you are.`);
			} else {
				r.push(`${He} seems to feel the intensity of your gaze despite ${his} sightless eyes and blushes girlishly, as if forgetting how many years ${his} senior you are.`);
			}
			r.push(`In lieu of words, you lift ${his} chin with a single beckoning finger and steal ${his} breath from ${his} lips with a firm kiss. Once ${he}'s recovered ${his} wits ${he} clings to you with almost animalistic attachment. After a few moments ${he} moves to get down on ${his} knees, clearly defaulting to ${his} role as a sex slave in response to your unexpected intimacy.`);
			r.push(`Instead, you`);
			if (eventSlave.belly >= 300000) {
				r.push(`help ${him} to ${his} feet and guide ${him} to bed, aiding the`);
				if (eventSlave.physicalAge <= 3) {
					if (eventSlave.bellyPreg >= 3000) {
						r.push(`bursting at the seams with life`);
					} else {
						r.push(`nearly circular`);
					}
					r.push(`little ${girl}`);
				} else if (eventSlave.physicalAge < 13) {
					if (eventSlave.bellyPreg >= 3000) {
						r.push(`poor overfilled and ready to pop`);
					} else {
						r.push(`tremendously swollen`);
					}
					r.push(girl);
				} else if (eventSlave.physicalAge < 18) {
					if (eventSlave.bellyPreg >= 3000) {
						r.push(`child-filled`);
					} else {
						r.push(`tremendously swollen`);
					}
					r.push(`teen`);
				} else {
					if (eventSlave.bellyPreg >= 3000) {
						r.push(`child-laden`);
					} else {
						r.push(`tremendously swollen`);
					}
					r.push(`young lady`);
				}
				r.push(`onto the sheets before gently mounting ${him}.`);
			} else { // check canLift() here!
				if (eventSlave.belly >= 5000) {
					r.push(`carefully`);
				}
				r.push(`lift ${him} up from ${his} low position beneath you and carry ${him} to bed, laying the flushed`);
				if (eventSlave.physicalAge <= 3) {
					r.push(`little ${girl}`);
				} else if (eventSlave.physicalAge < 13) {
					r.push(`${girl}`);
				} else if (eventSlave.physicalAge < 18) {
					r.push(`teen`);
				} else {
					r.push(`young lady`);
				}
				r.push(`down on the sheets before gently positioning yourself on top of ${him}.`);
			}
			r.push(`Together, the two of you make fiercely intimate love, while you whisper romantic reassurances into ${his} ear, nip at ${his} neck,`);
			if (eventSlave.bellyPreg >= 300000) {
				r.push(`run your hands across ${his} squirming brood,`);
			} else if (eventSlave.preg > eventSlave.pregData.normalBirth / 2) {
				r.push(`stroke ${his} pregnant belly,`);
			} else if (eventSlave.belly >= 5000) {
				r.push(`caress the curve of ${his} ${belly} belly,`);
			}
			r.push(`and bring ${him} to climax again and again. After a final frantic orgasm together in ${his}`);
			if (canDoVaginal(eventSlave)) {
				r.push(`pussy`);
			} else {
				r.push(`anus`);
			}
			r.push(`${he}`);
			if (canSee(eventSlave)) {
				r.push(`looks`);
			} else {
				r.push(`gazes sightlessly`);
			}
			r.push(`up at you with <span class="devotion inc">adoration</span> and a new <span class="trust inc">trust</span> in ${his} aged ${getWrittenTitle(eventSlave)}.`);
			eventSlave.devotion += 4;
			eventSlave.trust += 4;
			if (canDoVaginal(eventSlave)) {
				r.push(VCheck.Vaginal(eventSlave, 1));
			} else {
				r.push(VCheck.Anal(eventSlave, 1));
			}
			return r;
		}

		function torment() {
			const frag = document.createDocumentFragment();
			r = [];
			r.push(`As you close in on ${eventSlave.slaveName} predatorily, ${his} face blanches with visible regret at ${his} prior candidness. By the time you have ${him} bent over`);
			if (eventSlave.belly >= 300000) {
				r.push(`${his} ${belly} belly`);
			} else {
				r.push(`your desk`);
			}
			r.push(`and begun spanking ${his}`);
			if (eventSlave.butt > 12) {
				r.push(`absurd ass,`);
			} else if (eventSlave.butt > 6) {
				r.push(`massive behind,`);
			} else if (eventSlave.butt > 3) {
				r.push(`bountiful bottom,`);
			} else {
				r.push(`cute ass,`);
			}
			r.push(`${he} seems almost resigned to accept any of the standard punishments you've been known to dole out. When your lips lightly brush`);
			if (eventSlave.earShape !== "none" && eventSlave.earT !== "none") {
				r.push(`one of ${his} ears,`);
			} else {
				r.push(`where ${his} ear used to be,`);
			}
			r.push(`${he} flinches harder at the gentle touch than any of your harsh, disciplinary spanks. When you start whispering wicked reminders about ${his} sexual submission and subservience to so old a ${getWrittenTitle(eventSlave)}, ${he} begins to sob quietly`);
			if (eventSlave.belly >= 300000) {
				if (eventSlave.boobs > 600) {
					r.push(`into ${his} breasts.`);
				} else if (!hasAnyArms(eventSlave)) {
					r.push(`with no means to hide it.`);
				} else {
					r.push(`into ${his} hands.`);
				}
			} else {
				r.push(`against the hard surface of your desk.`);
			}
			App.Events.addParagraph(frag, r);

			r = [];
			r.push(`By the time you deign to`);
			if (V.PC.dick === 0) {
				r.push(`don a strap-on and`);
			}
			r.push(`mount ${his} ass, ${he} seems catatonic at the revelation that ${his} body is owned by so cruel an old ${Master}. Even when you accompany each brutal thrust with a harsh spank and a harsh jab at the dearth in years between the two of you, ${he} merely winces at the`);
			if (canDoVaginal(eventSlave)) {
				r.push(`force`);
			} else {
				r.push(`anal pain`);
			}
			r.push(`of your coupling. Judging by the`);
			if (!canSee(eventSlave)) {
				r.push(`exceptionally`);
			}
			r.push(`empty look in ${his} eyes that persists past ${his} dismissal from your office, ${he} might not feel any better about the age difference but you've definitely fucked ${him} into compliance.`);
			eventSlave.devotion += 4;
			eventSlave.trust -= 4;
			if (canDoVaginal(eventSlave)) {
				r.push(VCheck.Vaginal(eventSlave, 1));
			} else {
				r.push(VCheck.Anal(eventSlave, 1));
			}
			App.Events.addParagraph(frag, r);
			return frag;
		}

		function afternoon() {
			const frag = document.createDocumentFragment();
			App.Events.addParagraph(frag, [`You direct ${V.assistant.name} to clear ${eventSlave.slaveName}'s schedule and to find a local retirement community willing to 'host' a ${girl} of ${his} age. Perhaps a group of venerable graybeards running a train on ${eventSlave.slaveName} might accustom ${him} to older sexual partners. When ${eventSlave.slaveName} leaves the penthouse, ${he}'s dressed up to look like an old world school${girl} and is clearly skeptical about your age-play therapy.`]);

			r = [];
			r.push(`${eventSlave.slaveName} returns to the penthouse naked, disheveled, and absolutely covered in a thick coating of drying cum. Despite ${his} appearance, however, ${he} is practically beaming with happiness. It seems a good fucking from experienced older men agrees with ${him}, and by the state of ${his}`);
			if (eventSlave.mpreg === 1) {
				r.push(`cum-drenched asshole`);
			} else {
				r.push(`messy pussy`);
			}
			r.push(`${his} aged partners particularly enjoyed filling ${him} with their still potent seed. Unsurprisingly, at a routine check up later that week, ${eventSlave.slaveName} joyfully discovers that ${he} was impregnated during ${his} excursion. It seems that being bred by a bunch of horny old men has eliminated ${his} prior worries about the importance of age and also caused ${him} to fetishize impregnation. ${He} has become more submissive to you for giving ${him} the means to broaden ${his} sexual horizons.`);
			eventSlave.devotion += 4;
			eventSlave.preg = 1;
			eventSlave.pregWeek = 1;
			eventSlave.pregKnown = 1;
			eventSlave.pregType = setPregType(eventSlave);
			WombImpregnate(eventSlave, eventSlave.pregType, 0, 1);
			eventSlave.fetish = "pregnancy";
			eventSlave.fetishKnown = 1;
			eventSlave.fetishStrength = 5;
			if (eventSlave.mpreg === 1) {
				seX(eventSlave, "anal", "public", "penetrative", 10);
				if (eventSlave.anus === 0) {
					eventSlave.anus++;
				}
			} else {
				seX(eventSlave, "vaginal", "public", "penetrative", 10);
				if (eventSlave.vagina === 0) {
					eventSlave.vagina++;
				}
			}
			App.Events.addParagraph(frag, r);
			return frag;
		}
	}
};


code:
App.Events.RESSAgeDifferenceYoungPC = class RESSAgeDifferenceYoungPC extends App.Events.BaseEvent {
	eventPrerequisites() {
		return [
			() => V.PC.actualAge < 25,
		]; // always valid if sufficient actors can be cast successfully
	}

	actorPrerequisites() {
		return [
			[ // single event slave
				s => s.fetish !== "mindbroken",
				canWalk,
				canTalk,
				canHear,
				s => s.devotion > 20,
				s => s.trust > 20,
				s => s.actualAge > 35,
				s => (canDoAnal(s) || canDoVaginal(s)),
			]
		];
	}

	execute(node) {
		const [eventSlave] = this.actors.map(a => getSlave(a));
		const {
			He, he, his, him, himself, mother, woman
		} = getPronouns(eventSlave);
		const {title: Master, say} = getEnunciation(eventSlave);
		const belly = bellyAdjective(eventSlave);
		const PC = V.PC;

		App.Events.drawEventArt(node, eventSlave, "no clothing");

		let r = [];
		r.push(`As another long week draws to a close,`);
		r.push(App.UI.DOM.combineNodes(contextualIntro(V.PC, eventSlave, true), ","));
		r.push(`happens to`);
		if (eventSlave.belly >= 10000) {
			r.push("waddle");
		} else {
			r.push("walk");
		}
		r.push(`past your office toward bed. There's nothing inherently abnormal about ${his} actions, but you do notice as ${he} steps past the doorway that an expression of worry and concern adorns ${his} ${eventSlave.skin} face. When you call ${him} into your office, ${his} face visibly brightens up in an attempt to conceal ${his} obvious distress as ${he} comes before you. Notably, although ${he} stands still and patiently awaits further orders, you notice ${he}`);
		if (canSee(eventSlave)) {
			r.push(`never manages to meet your eyes.`);
		} else {
			r.push(`keeps ${his} sightless eyes downcast.`);
		}
		r.push(`When you ask ${him} what's troubling ${him}, ${his} face plainly falls.`);
		App.Events.addParagraph(node, r);
		r = [];

		if (!isParentP(PC, eventSlave)) {
			r.push(Spoken(eventSlave, `"${Master}, you're so young,"`));
			r.push(`${he} ${say}s penitently before smiling shyly in an attempt to insert some levity into ${his} confession.`);
			r.push(Spoken(eventSlave, `"It's just that I'm old enough to be your ${mother}, ${Master}. It's a little weird, isn't it?"`));
		} else {
			r.push(Spoken(eventSlave, `"${Master}, you're so`));
			if (PC.title === 1) {
				r.push(Spoken(eventSlave, `handsome,"`));
			} else {
				r.push(`beautiful,"`);
			}r.push(`${he} ${say}s penitently before smiling shyly in an attempt to insert some levity into ${his} confession.`);
			r.push(Spoken(eventSlave, `"It's just that you've become so attractive since`));
			if (PC.mother === eventSlave.ID) {
				r.push(Spoken(eventSlave, `I gave birth to you, I just can't compete,`));
			} else {
				r.push(Spoken(eventSlave, `your mother gave birth to you, I just can't compete, and I don't even come close to her looks,`));
			}
			r.push(Spoken(eventSlave, `${Master}. It's a little weird, isn't it, for such an old ${woman} to be graced with such a lovely ${Master}?"`));
		}

		App.Events.addParagraph(node, r);
		App.Events.addResponses(node, [
			new App.Events.Result(`Gently acclimate ${him} to the age difference with some lovemaking`, lovemaking, virginityWarning(false)),
			new App.Events.Result(`Cruelly torment ${him} about the age difference`, torment, virginityWarning(false)),
			isFertile(eventSlave)
				? new App.Events.Result(`Give ${him} an afternoon off for some quality time with a local Frat House`, afternoon, virginityWarning(true))
				: new App.Events.Result(),

		]);

		function virginityWarning(knockedUp){
			if (knockedUp) {
				let t = `This option will render ${eventSlave.slaveName} pregnant`;
				if (canDoVaginal(eventSlave) && (eventSlave.vagina === 0)) {
					t += ` and take ${his} virginity`;
				} else if (!canDoVaginal(eventSlave) && (eventSlave.anus === 0)) {
					t += ` and take ${his} anal virginity`;
				}
				return t;
			} else if (canDoVaginal(eventSlave) && (eventSlave.vagina === 0)) {
				return `This option will take ${his} virginity`;
			} else if (!canDoVaginal(eventSlave) && (eventSlave.anus === 0)) {
				return `This option will take ${his} anal virginity`;
			}
		}

		function lovemaking() {
			r = [];
			r.push(`As you cross the breadth of your office to reach ${eventSlave.slaveName}, ${he} presents ${himself} for your sexual usage out of habit. However, you take ${him} by surprise by drawing ${him} into your arms, running the tips of your fingers`);
			if (eventSlave.hStyle.includes("bald") || eventSlave.bald === 1) {
				r.push(`across ${his} scalp,`);
			} else {
				r.push(`through ${his} ${eventSlave.hColor} hair,`);
			}
			r.push(`and looking into ${his} ${App.Desc.eyesColor(eventSlave)}.`);
			if (canSee(eventSlave)) {
				r.push(`${He} meets your gaze for a brief moment before blushing girlishly, as if forgetting how many years your senior ${he} is.`);
			} else {
				r.push(`${He} seems to feel the intensity of your gaze despite ${his} sightless eyes and blushes girlishly, as if forgetting how many years your senior ${he} is.`);
			}
			r.push(`In lieu of words, you lift ${his} chin with a single beckoning finger and steal ${his} breath from ${his} lips with a firm kiss. Once ${he}'s recovered ${his} wits ${he} clings to you with almost animalistic attachment. After a few moments ${he} moves to get down on ${his} knees, clearly defaulting to ${his} role as a sex slave in response to your unexpected intimacy. Instead, you`);
			if (eventSlave.belly >= 300000) {
				r.push(`help ${him} to ${his} feet and guide ${him} to bed, aiding the`);
				if (eventSlave.bellyPreg >= 3000) {
					r.push(`child-laden`);
				} else {
					r.push(`tremendously swollen`);
				}
				r.push(`older ${woman} onto the sheets before gently mounting ${him}.`);
			} else { // check canLift() here!
				if (eventSlave.belly >= 5000) {
					r.push(`carefully`);
				}
				r.push(`lift ${him} up from ${his} low position beneath you and carry ${him} to bed, laying the flushed older ${woman} down on the sheets before gently positioning yourself on top of ${him}.`);
			}
			r.push(`Together, the two of you make fiercely intimate love, while you whisper romantic reassurances into ${his} ear, nip at ${his} neck,`);
			if (eventSlave.bellyPreg >= 300000) {
				r.push(`run your hands across ${his} squirming brood,`);
			} else if (eventSlave.preg > eventSlave.pregData.normalBirth / 2) {
				r.push(`stroke ${his} pregnant belly,`);
			} else if (eventSlave.belly >= 5000) {
				r.push(`caress the curve of ${his} ${belly} belly,`);
			}
			r.push(`and bring ${him} to climax again and again. After a final frantic orgasm together in ${his}`);
			if (canDoVaginal(eventSlave)) {
				r.push(`pussy`);
			} else {
				r.push(`anus`);
			}
			r.push(`${he}`);
			if (canSee(eventSlave)) {
				r.push(`looks`);
			} else {
				r.push(`gazes sightlessly`);
			}
			r.push(`up at you with <span class="devotion inc">adoration</span> and a new <span class="trust inc">trust</span> in ${his} young ${getWrittenTitle(eventSlave)}.`);
			eventSlave.devotion += 4;
			eventSlave.trust += 4;
			if (canDoVaginal(eventSlave)) {
				r.push(VCheck.Vaginal(eventSlave, 1));
			} else {
				r.push(VCheck.Anal(eventSlave, 1));
			}
			return r;
		}

		function torment() {
			const frag = document.createDocumentFragment();
			r = [];
			r.push(`As you close in on ${eventSlave.slaveName} predatorily, ${his} face blanches with visible regret at ${his} prior candidness. By the time you have ${him} bent over`);
			if (eventSlave.belly >= 300000) {
				r.push(`${his} ${belly} belly`);
			} else {
				r.push(`your desk`);
			}
			r.push(`and begun spanking ${his}`);
			if (eventSlave.butt > 12) {
				r.push(`absurd ass,`);
			} else if (eventSlave.butt > 6) {
				r.push(`massive behind,`);
			} else if (eventSlave.butt > 3) {
				r.push(`bountiful bottom,`);
			} else {
				r.push(`cute ass,`);
			}
			r.push(`${he} seems almost resigned to accept any of the standard punishments you've been known to dole out. When your lips lightly brush`);
			if (eventSlave.earShape !== "none" && eventSlave.earT !== "none") {
				r.push(`one of ${his} ears,`);
			} else {
				r.push(`where ${his} ear used to be,`);
			}
			r.push(`${he} flinches harder at the gentle touch than any of your harsh, disciplinary spanks. When you start whispering wicked reminders about ${his} sexual submission and subservience to so young a ${getWrittenTitle(eventSlave)}, ${he} begins to sob quietly`);
			if (eventSlave.belly >= 300000) {
				if (eventSlave.boobs > 600) {
					r.push(`into ${his} breasts.`);
				} else if (!hasAnyArms(eventSlave)) {
					r.push(`with no means to hide it.`);
				} else {
					r.push(`into ${his} hands.`);
				}
			} else {
				r.push(`against the hard surface of your desk.`);
			}
			App.Events.addParagraph(frag, r);

			r = [];
			r.push(`By the time you deign to`);
			if (V.PC.dick === 0) {
				r.push(`don a strap-on and`);
			}
			r.push(`mount ${his} ass, ${he} seems catatonic at the revelation that ${his} body is owned by so cruel a ${Master}, nearly half ${his} age. Even when you accompany each brutal thrust with a harsh spank and a harsh jab at the dearth in years between the two of you, ${he} merely winces at the`);
			if (canDoVaginal(eventSlave)) {
				r.push(`force`);
			} else {
				r.push(`anal pain`);
			}
			r.push(`of your coupling. Judging by the`);
			if (!canSee(eventSlave)) {
				r.push(`exceptionally`);
			}
			r.push(`empty look in ${his} eyes that persists past ${his} dismissal from your office, ${he} might not feel any better about the age difference but you've definitely fucked ${him} into compliance.`);
			eventSlave.devotion += 4;
			eventSlave.trust -= 4;
			if (canDoVaginal(eventSlave)) {
				r.push(VCheck.Vaginal(eventSlave, 1));
			} else {
				r.push(VCheck.Anal(eventSlave, 1));
			}
			App.Events.addParagraph(frag, r);
			return frag;
		}

		function afternoon() {
			const frag = document.createDocumentFragment();
			App.Events.addParagraph(frag, [`You direct ${V.assistant.name} to clear ${eventSlave.slaveName}'s schedule and to find a local Frat House willing to 'host' a ${woman} of ${his} age and experience. Perhaps a group of virile college boys running a train on ${eventSlave.slaveName} might accustom ${him} to younger sexual partners. When ${eventSlave.slaveName} leaves the penthouse, ${he}'s dressed up to look like a frumpy old world ${woman === "woman" ? "MILF" : "DILF"} and is clearly skeptical about your age-play therapy.`]);

			r = [];
			r.push(`${eventSlave.slaveName} returns to the penthouse naked, disheveled, and absolutely covered in a thick coating of drying cum. Despite ${his} appearance, however, ${he} is practically beaming with happiness. It seems young cock agrees with ${him}, and by the state of ${his}`);
			if (eventSlave.mpreg === 1) {
				r.push(`cum-drenched asshole`);
			} else {
				r.push(`messy pussy`);
			}
			r.push(`${his} youthful partners particularly enjoyed filling ${him} with their potent seed. Unsurprisingly, at a routine check up later that week, ${eventSlave.slaveName} joyfully discovers that ${he} was impregnated during ${his} Frat House excursion. It seems that being bred by a bunch of horny college boys has eliminated ${his} prior worries about the importance of age and also caused ${him} to fetishize impregnation. ${He} has become more submissive to you for giving ${him} the means to broaden ${his} sexual horizons.`);
			eventSlave.devotion += 4;
			eventSlave.preg = 1;
			eventSlave.pregWeek = 1;
			eventSlave.pregKnown = 1;
			eventSlave.pregType = setPregType(eventSlave);
			WombImpregnate(eventSlave, eventSlave.pregType, 0, 1);
			eventSlave.fetish = "pregnancy";
			eventSlave.fetishKnown = 1;
			eventSlave.fetishStrength = 5;
			if (eventSlave.mpreg === 1) {
				seX(eventSlave, "anal", "public", "penetrative", 10);
				if (eventSlave.anus === 0) {
					eventSlave.anus++;
				}
			} else {
				seX(eventSlave, "vaginal", "public", "penetrative", 10);
				if (eventSlave.vagina === 0) {
					eventSlave.vagina++;
				}
			}
			App.Events.addParagraph(frag, r);
			return frag;
		}
	}
};


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

	actorPrerequisites() {
		return [
			[ // single event slave
				s => s.fetish !== "mindbroken",
				s => (s.assignment === Job.REST || s.rules.rest === "mandatory"),
				isAmputee,
			]
		];
	}

	execute(node) {
		const [eventSlave] = this.actors.map(a => getSlave(a));
		const {
			He, he, his, him
		} = getPronouns(eventSlave);
		const belly = bellyAdjective(eventSlave);

		App.Events.drawEventArt(node, eventSlave, "no clothing");

		let r = [];
		r.push(`You're working at your desk late at night when the arcology's systems discreetly highlight significant movement in the slave quarters.`);
		r.push(App.UI.DOM.combineNodes(contextualIntro(V.PC, eventSlave, true), "'s"));
		r.push(`limbless torso is in bed, asleep but struggling in discomfort. Without arms or legs, it seems the sheet has become wrapped around ${him}. ${He}'s dreaming of something sexual;`);
		if (eventSlave.chastityPenis === 1) {
			r.push(`${his} cock is caged, but precum is`);
			if (eventSlave.prostate > 1) {
				r.push(`flowing`);
			} else if (eventSlave.prostate > 0 ) {
				r.push(`leaking`);
			} else {
				r.push(`barely dripping`);
			}
			r.push(`out of the chastity.`);
		} else if (eventSlave.dick > 0 && !canAchieveErection(eventSlave)) {
			r.push(`${he} can't maintain an erection but ${his} limp dick`);
			if (eventSlave.prostate > 1) {
				r.push(`is soaking ${his} sheets with precum.`);
			} else if (eventSlave.prostate > 0 ) {
				r.push(`sports a drop of precum.`);
			} else {
				r.push(`sports a meager droplet of precum.`);
			}
		} else if (eventSlave.dick > 0) {
			const erection = eventSlave.dick > 4 ? "massive erection" : eventSlave.dick > 2 ? "erection" : "pathetic little erection";
			r.push(`${his} ${erection} is tenting the`);
			if (eventSlave.prostate > 1) {
				r.push(`sheet, leaving a large spot from ${his} excessive precum`);
			} else {
				r.push(`sheet.`);
			}
		} else if (eventSlave.vagina === -1) {
			r.push(`${he}'s humping the sheet as though ${he} still had genitals`);
			if (eventSlave.prostate > 1) {
				r.push(`genitals, leaving a large splotch from ${his} excessive precum.`);
			} else {
				r.push(`genitals.`);
			}
		} else {
			r.push(`${his} pussy has left a moist spot on the sheet.`);
		}
		r.push(`As you watch, ${his} sleeping body struggles against the sheet`);
		if (eventSlave.boobs >= 800) {
			r.push(r.pop() + ",");
			r.push(`${his} smothering tits`);
		}
		if (eventSlave.belly >= 10000) {
			r.push(r.pop() + ",");
			r.push(`${his} ${belly}`);
			if (eventSlave.bellyPreg >= 8000) {
				r.push(`pregnant`);
			}
			r.push(`belly`);
		}
		if (eventSlave.butt > 5) {
			r.push(r.pop() + ",");
			r.push(`${his} gigantic ass`);
		}
		r.push(`and ${his} limblessness finally leave ${him} lying naked on ${his} ${eventSlave.rules.living === "spare" ? "pad" : "bed"}. After a few moments, ${he} begins to shiver convulsively.`);

		App.Events.addParagraph(node, r);
		App.Events.addResponses(node, [
			new App.Events.Result(`Check on ${him}`, check),
			new App.Events.Result(`Keep ${him} warm`, warm),
			new App.Events.Result(`Leave ${him} be`, leave),
		]);

		function check() {
			r = [];
			r.push(`Since ${he}'s limbless`);
			if (eventSlave.health.illness > 0) {
				if (eventSlave.pregKnown === 1) {
					r.push(r.pop() + ",");
				} else {
					r.push(`and`);
				}
				r.push(`ill`);
			}
			if (eventSlave.pregKnown === 1) {
				r.push(`and pregnant`);
			}
			r.push(r.pop() + ",");
			r.push(`${his} health is more fragile than most slaves'. You look in on ${him}, and when ${he} continues to shiver, you pull the sheets back around ${him}, tucking ${him} in in such a way that ${he} can lie comfortably. In the morning ${he} doesn't understand why ${he}'s so snug and well-rested, but ${his} health improves with decent sleep.`);
			improveCondition(eventSlave, 10);
			return r;
		}

		function warm() {
			r = [];
			r.push(`You spoon ${him} gently from behind, spending the night sleeping with ${his}`);
			if (eventSlave.bellyPreg >= 5000) {
				r.push(`pregnant`);
			} else {
				r.push(`limbless`);
			}
			r.push(`torso cradled in your arms. ${He} snuggles against you in ${his} sleep, enjoying the animal warmth. When ${he} wakes in the morning, ${he} is surprised to`);
			if (canSee(eventSlave)) {
				r.push(`see`);
			} else {
				r.push(`find`);
			}
			r.push(`that it's you keeping ${him} company, but after a few moments' confusion ${he} accepts the unlooked-for comfort and goes back to sleep. ${He} has become more trusting of you.`);
			eventSlave.trust += 4;
			return r;
		}

		function leave() {
			healthDamage(eventSlave, 10);
			return `In the morning, ${his} lips are blue and ${he}'s nearly unresponsive. Your other slaves get ${him} working again, but <span class="health dec">${his} health has been damaged.</span>`;
		}
	}
};