code:
App.Events.RECIButthole = class RECIButthole 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 => V.REButtholeCheckinIDs.includes(s.ID),
				s => s.assignment !== Job.QUARTER,
				s => s.devotion > 50,
				s => s.trust > 50,
				canTalk,
				canWalk,
				canSee,
				canHear,
				s => s.anus > 1 && s.anus < 4,
				s => s.analArea > 1,
			]
		];
	}

	execute(node) {
		/** @type {Array<App.Entity.SlaveState>} */
		let [eventSlave] = this.actors.map(a => getSlave(a));
		const {
			// eslint-disable-next-line no-unused-vars
			He, he, His, his, hers, him, himself, girl, woman, loli
		} = getPronouns(eventSlave);
		const {title: Master, say: say} = getEnunciation(eventSlave);
		const belly = bellyAdjective(eventSlave);
		const hands = hasBothArms(eventSlave) ? "hands" : "hand";
		const skinDesc = (skinToneLevel(eventSlave.skin) < 10)
			? "pink"
			: (skinToneLevel(eventSlave.skin) < 10)
				? "dark brown"
				: "brown";

		V.nextLink = "Next Week";
		V.REButtholeCheckinIDs.deleteWith((s) => s === eventSlave.ID);

		let artDiv = document.createElement("div"); // named container so we can replace it later
		App.Events.drawEventArt(artDiv, eventSlave, "no clothing");
		node.appendChild(artDiv);

		let t = [];
		t.push(`The slave bathrooms are designed to completely eliminate privacy. There are few partitions, and those are glass. Your better-behaved slaves have all long since lost any hesitation about performing their ablutions nude. As you pass through the area, you notice`);
		t.push(App.UI.DOM.slaveDescriptionDialog(eventSlave));
		t.push(`checking out ${his} own anus in the bathroom mirror`);
		App.Events.addParagraph(node, t);

		t = [];
		t.push(`There's no other way to describe what ${he}'s doing: the ${SlaveTitle(eventSlave)}`);
		if (eventSlave.belly >= 300000) {
			t.push(`is leaning over ${his} ${belly} belly with ${his} feet planted on the counter,`);
		} else if (eventSlave.height < 140) {
			t.push(`is on a step stool with ${his} back to the mirror,`);
		} else if (eventSlave.height < 160) {
			t.push(`has ${his} back to the mirror and is up on tiptoe to bring ${his} butthole into view,`);
		} else {
			t.push(`has ${his} back to the mirror,`);
		}
		t.push(`and ${he}'s`);
		if (eventSlave.butt > 6) {
			if (hasBothArms(eventSlave)) {
				t.push(`using both hands to`);
			} else if (hasAnyArms(eventSlave)) {
				t.push(`using ${his} hand to`);
			} else if (eventSlave.belly >= 300000) {
				t.push(`letting gravity`);
			} else {
				t.push(`using the edge of the sink to`);
			}
			t.push(`pull ${his} massive buttcheeks apart to`);
		} else if (eventSlave.butt > 3) {
			 if (hasAnyArms(eventSlave)) {
				t.push(`using ${his} ${hands} to`);
			} else if (eventSlave.belly >= 300000) {
				t.push(`letting gravity`);
			} else {
				t.push(`using the edge of the sink to`);
			}
			t.push(`spread ${his} healthy buttcheeks to`);
		} else {
			t.push(`got ${his} hips cocked to spread ${his} sleek butt and`);
		}
		t.push(`reveal ${his} backdoor. Your slaves are trained to check themselves daily,`);
		if (eventSlave.chastityAnus) {
			t.push(`including those assigned to wear anal chastity,`);
		}
		t.push(`but ${he} seems fascinated. As you pause to watch, ${he} begins to clench and relax ${his}`);
		if (eventSlave.anus > 2) {
			t.push(`loose`);
		} else {
			t.push(`cute`);
		}
		t.push(`hole,`);
		if ((eventSlave.analArea - eventSlave.anus) > 1) {
			t.push(`lewdly flexing`);
		} else {
			t.push(`alternately puckering and relaxing`);
		}
		t.push(`the ${skinDesc} skin around it. ${He} giggles self-consciously at the sight, and then relaxes all the way, causing ${his} asspussy to open into a`);
		if (eventSlave.anus > 2) {
			if (V.PC.dick !== 0) {
				t.push(`cock-hungry`);
			} else {
				t.push(`dildo-hungry`);
			}
		} else {
			t.push(`slight`);
		}
		t.push(`gape. ${He} notices you out of the corner of ${his} eye and`);
		if (eventSlave.butt > 6) {
			if (eventSlave.belly >= 300000) {
				t.push(`slides back onto ${his} feet`);
			} else if (hasAnyArms(eventSlave)) {
				t.push(`releases ${his} grip on ${his} heavy buttocks`);
			} else {
				t.push(`slides ${his} heavy buttocks off the counter`);
			}
			t.push(`to turn and greet you, letting`);
			if (eventSlave.belly >= 300000) {
				t.push(`${his} heavy buttocks`);
			} else {
				t.push(`them`);
			}
			t.push(`clap gently together and conceal ${his} asshole again.`);
		} else if (eventSlave.butt > 3) {
			if (eventSlave.belly >= 300000) {
				t.push(`slides back onto ${his} feet`);
			} else if (hasAnyArms(eventSlave)) {
				t.push(`lets ${his} butt go`);
			} else {
				t.push(`slides ${his} butt off the counter`);
			}
			t.push(`to turn and greet you, mostly hiding ${his} asshole from the mirror.`);
		} else {
			if (eventSlave.belly >= 300000) {
				t.push(`slides back onto ${his} feet and`);
			}
			t.push(`turns to greet you, ${his} pretty rear only partially concealing ${his} asshole in the mirror.`);
		}
		App.Events.addParagraph(node, t);

		t = [];
		t.push(Spoken(eventSlave, `"Hi ${Master},"`));
		t.push(`${he} ${say}s cheerfully.`);
		t.push(Spoken(eventSlave, `"I was just noticing how much my butt has changed. I check it every day, but I hadn't really looked at it in a while, you know? It used to be so tight, and now`));
		if (eventSlave.anus > 2) {
			t.push(Spoken(eventSlave, `I've got a rear pussy."`));
		} else {
			t.push(Spoken(eventSlave, `it's obviously a fuckhole."`));
		}
		if (eventSlave.belly >= 300000) {
			t.push(`${He} struggles to hike ${his} knee over ${his} extreme gravidity without losing balance.`);
		} else {
			t.push(`${He} turns to face the mirror,`);
			if (eventSlave.belly >= 10000) {
				t.push(`slowly hiking one knee up onto the bathroom counter in front of it while giving ${his}`);
				if (eventSlave.belly >= 10000) {
					if (eventSlave.bellyPreg >= 3000) {
						t.push(`pregnancy`);
					} else {
						t.push(`greatly bloated middle`);
					}
					t.push(`room to hang.`);
				}
			} else {
				t.push(`hiking one knee up onto the bathroom counter in front of it.`);
			}
		}
		t.push(`${He}`);
		if (eventSlave.butt > 6) {
			t.push(`reaches around to pull a buttock aside and starts blatantly winking ${his} anus for`);
			if (hasAnyArms(eventSlave)) {
				t.push(`you, using ${his}`);
				if (hasBothArms(eventSlave)) {
					t.push(`other`);
				}
				t.push(`hand to`);
				if (eventSlave.nipples !== "fuckable") {
					t.push(`tweak`);
				} else {
					t.push(`finger`);
				}
				t.push(`a nipple.`);
			} else {
				t.push(`you.`);
			}
		} else if (eventSlave.butt > 3) {
			t.push(`spreads ${himself} and starts blatantly winking ${his} anus for`);
			if (hasAnyArms(eventSlave)) {
				t.push(`you, using ${his} ${hands} to`);
				if (eventSlave.nipples !== "fuckable") {
					t.push(`tweak`);
				} else {
					t.push(`finger`);
				}
				t.push(`${his} nipples.`);
			} else {
				t.push(`you.`);
			}
		} else {
			t.push(`cocks ${his} hips again and starts blatantly winking ${his} anus for you`);
			if (hasAnyArms(eventSlave)) {
				t.push(`you, using ${his} ${hands} to`);
				if (eventSlave.nipples !== "fuckable") {
					t.push(`tweak`);
				} else {
					t.push(`finger`);
				}
				t.push(`${his} nipples.`);
			} else {
				t.push(`you.`);
			}
		}
		if (eventSlave.analArea > 3) {
			t.push(`The huge area of ${skinDesc} anus around ${his} actual hole certainly draws the eye towards its center, though the way ${he}'s using ${his} sphincter as a come-on does enhance the effect.`);
		}
		t.push(Spoken(eventSlave, `"Please, ${Master},"`));
		if (eventSlave.fetish === "buttslut") {
			t.push(`${he} begins to beg.`);
			t.push(Spoken(eventSlave, `"I can't wait to feel ${V.PC.dick !== 0 ? 'your cock' : 'you'} inside me."`));
		} else {
			t.push(`${he} ${say}s.`);
			t.push(Spoken(eventSlave, `"Use me."`));
		}
		App.Events.addParagraph(node, t);

		App.Events.addResponses(node, [
			(eventSlave.chastityAnus)
				? new App.Events.Result(`Remind ${him} of ${his} chastity`, chaste)
				: new App.Events.Result(),
			(S.HeadGirl && eventSlave.ID !== V.HeadGirlID)
				? new App.Events.Result(`Double anal with the Head Girl`, () => DoubleTeam(S.HeadGirl))
				: new App.Events.Result(),
			(S.Concubine && eventSlave.ID !== V.ConcubineID && hasAnyLegs(S.Concubine) && hasAnyArms(S.Concubine) && S.Concubine.fetish !== "mindbroken")
				? new App.Events.Result(`Double anal with your Concubine`, () => DoubleTeam(S.Concubine))
				: new App.Events.Result(),
			(S.Bodyguard && eventSlave.ID !== V.BodyguardID)
				? new App.Events.Result(`Double anal with your Body Guard`, () => DoubleTeam(S.Bodyguard))
				: new App.Events.Result(),
			new App.Events.Result(`Chat about ${his} ass`, talk),
			(eventSlave.anus < 3)
				? new App.Events.Result(`Change it some more`, assFuck)
				: new App.Events.Result(),
			new App.Events.Result(`Don't like anal`, wrongHole),
		]);

		function chaste() {
			const totalIntel = eventSlave.intelligence + eventSlave.intelligenceImplant;

			t = [];
			t.push(`You ask if ${he} is forgetting anything.`);
			if (totalIntel > 95) {
				t.push(Spoken(eventSlave, `"Ah! Forgive me ${Master}! I'll put it on right away!"`));
				t.push(`${he} ${say}s, hurrying to fasten ${his} anal chastity, a hint of fear on ${his} face. You tell ${him} it is fine, ${he} was only performing ${his} daily ablutions after all.`);
			} else if (totalIntel > 15) {
				t.push(Spoken(eventSlave, `"Um? No...? I don't think I'm forgetting anything?"`));
				t.push(`${he} states with a look of confusion. You press ${him}, asking if ${he} forgot the rules.`);
				t.push(Spoken(eventSlave, `"Ah! I'm not supposed to be offering my asshole so freely! ${Master}, please forgive me! I'll put it on right away!"`));
				t.push(`${he} shouts, hurrying to fasten ${his} anal chastity, a hint of fear on ${his} face. You tell ${him} it is fine, if you want ${his} ass, you will have it, chastity be damned. ${He} lets out a sigh of relief.`);
				eventSlave.trust -= 2;
			} else if (totalIntel >= -15) {
				t.push(Spoken(eventSlave, `"Um? No...? I don't think I'm forgetting anything?"`));
				t.push(`${he} states with a look of confusion. You press ${him}, asking if ${he} forgot the rules.`);
				t.push(Spoken(eventSlave, `"I need to inspect my anus for damage, elasticity and cleanliness each and every morning."`));
				t.push(`You stare ${him} down, making it clear that was not the right answer.`);
				t.push(Spoken(eventSlave, `"Um, ${Master}, I shouldn't be offering my ass to you, I'm sorry..."`));
				t.push(`${he} limply ${say}s, fear spreading across ${his} face. You tell ${him} it is fine, ${he} did not violate the rules, after all. Though ${he}'d best pay more attention in the future.`);
				eventSlave.trust -= 2;
			} else if (totalIntel >= -95) {
				t.push(Spoken(eventSlave, `"Um? No...? I pretty sure I'm not forgetting anything..."`));
				t.push(`${he} states with a look of confusion. You press ${him}, asking if ${he} forgot the rules.`);
				t.push(Spoken(eventSlave, `"Make sure your asspussy is nice and pretty each and every day!"`));
				t.push(`You stare ${him} down, making it clear that was not the right answer. ${He} wracks ${his} brain, desperately trying to figure out what ${he} could be missing.`);
				t.push(Spoken(eventSlave, `"I offered my ass to you, so that couldn't be it..."`));
				t.push(`${His} cluelessness is starting to get on your nerves. You clear your throat and gesture at the anal chastity left forgotten in the sink.`);
				t.push(Spoken(eventSlave, `"Huh? Is that mine? Wait... Oh, no... I'm sorry ${Master}... Please forgive me..."`));
				t.push(`${he} ${say}s, tears beginning to well up in ${his} eyes. You tell ${him} it is fine, ${he} did not violate the rules, after all. Though ${he}'d best pay more attention in the future. Also not to leave ${his} chastity in the sink, you don't need to be replacing them all the time.`);
				eventSlave.trust -= 2;
			} else {
				t.push(Spoken(eventSlave, `"Um? No?"`));
				t.push(`${he} states with a look of confusion. You press ${him}, asking if ${he} forgot the rules.`);
				t.push(Spoken(eventSlave, `"Look at your butt!"`));
				t.push(`You stare ${him} down, making it clear that was not the right answer. ${He} wracks ${his} brain, desperately trying to figure out what ${he} could be missing.`);
				t.push(Spoken(eventSlave, `"You don't like this position...?"`));
				t.push(`${His} cluelessness is starting to get on your nerves. You clear your throat and gesture at the anal chastity left forgotten on the counter.`);
				t.push(Spoken(eventSlave, `"Huh? You want me to put that away?"`));
				t.push(`You struggle to calmly explain that ${he} is supposed to be wearing anal chastity, not begging for a dick up ${his} ass.`);
				t.push(Spoken(eventSlave, `"So a toy is better?"`));
				t.push(`You fasten the belt around ${his} rear and silently leave the room before you lose it.`);
				t.push(Spoken(eventSlave, `"So you'll fuck my butt later?"`));
				t.push(`${he} shouts after you, still completely oblivious.`);
			}

			return t;
		}

		function DoubleTeam(partner) {
			let container = document.createDocumentFragment();
			const partnerSlave = partner;
			const {
				// eslint-disable-next-line no-unused-vars
				He2, he2, His2, his2, hers2, him2, himself2, girl2
			} = getPronouns(partnerSlave).appendSuffix('2');
			const {title: Master2} = getEnunciation(partnerSlave);

			// replace slave art
			$(artDiv).empty();
			App.Events.drawEventArt(artDiv, [eventSlave, partnerSlave], "no clothing");

			t = [];
			t.push(`You tell ${him} ${he}'s got a nice asspussy, and grope ${him} thoroughly, cupping ${his} buttocks with one hand and squeezing a breast with the other. ${eventSlave.slaveName} looks`);
			if (eventSlave.fetish === "buttslut") {
				t.push(`desperately eager,`);
			} else {
				t.push(`ready and willing,`);
			}
			t.push(`and angles ${himself} just right, but you administer a light slap to ${his} ${eventSlave.skin} ass and continue, telling ${him} that it's so nice you feel like sharing it. ${He}'s`);
			if (eventSlave.fetish === "buttslut" || eventSlave.energy > 95) {
				t.push(`so ready to fuck ${he} can't quite think of what to say,`);
			} else {
				t.push(`not quite sure how to respond,`);
			}
			t.push(`and before ${he} can figure it out, ${partnerSlave.slaveName} hurries in, responding to your summons. Of course, ${eventSlave.slaveName} is no stranger to ${partnerSlave.slaveName}, who takes in the situation at a glance and`);
			if (canAchieveErection(partnerSlave)) {
				t.push(`instantly achieves a painfully hard erection.`);
			} else {
				t.push(`immediately flushes with arousal.`);
			}
			if (partnerSlave.weight > 160 || partnerSlave.belly >= 10000 || partnerSlave.boobs >= 50000 || partnerSlave.balls >= 50) {
				if (!canPenetrate(partnerSlave)) {
					t.push(`${partnerSlave.slaveName} dons a strap-on before you help ${him2}`);
				} else {
					t.push(`You help support ${partnerSlave.slaveName} as ${he2} struggles`);
				}
			} else {
				t.push(`${partnerSlave.slaveName}`);
				if (!canPenetrate(partnerSlave)) {
					t.push(`dons a strap-on and`);
				}
				t.push(`clambers`);
			}
			t.push(`up onto the (strongly built) bathroom counter. Since saliva is plenty of lube for ${eventSlave.slaveName}'s experienced ass, ${he2} points a meaningful finger at`);
			if (!canPenetrate(partnerSlave)) {
				t.push(`the phallus,`);
			} else {
				t.push(`${his2} cock,`);
			}
			t.push(`and ${eventSlave.slaveName} begins to suck it enthusiastically, trying to get it as wet as possible for the sake of ${his} butt.`);
			seX(eventSlave, "oral", partnerSlave, "penetrative");
			App.Events.addParagraph(container, t);

			t = [];
			t.push(`Since ${eventSlave.slaveName} is being so good, you decide to help get ${him} ready, and push`);
			if (eventSlave.belly < 100000) {
				t.push(`${him} sideways so`);
				if (eventSlave.belly >= 3000) {
					t.push(`${he}'s forced to heft ${his}`);
					if (eventSlave.bellyPreg >= 3000) {
						t.push(`pregnancy`);
					} else {
						t.push(`greatly bloated middle`);
					}
					t.push(`onto the counter.`);
				} else {
					t.push(`${he} straddles the counter's edge.`);
				}
				t.push(`${He} whimpers into the`);
				if (!canPenetrate(partnerSlave)) {
					t.push(`dildo`);
				} else {
					t.push(`dick`);
				}
				t.push(`in ${his} mouth as ${he} feels ${his}`);
				if (eventSlave.dick > 0) {
					if (eventSlave.chastityPenis === 1) {
						t.push(`chastity cage`);
					} else if (eventSlave.hormoneBalance >= 100 || eventSlave.balls === 0 || eventSlave.ballType === "sterile") {
						t.push(`soft dickclit`);
					} else if (!canAchieveErection(eventSlave)) {
						t.push(`oversized cock`);
					} else {
						t.push(`hard cock`);
					}
				} else {
					t.push(`mons`);
				}
				t.push(`graze the hard counter, and then stiffens as you penetrate ${his} bottom.`);
			} else {
				if (eventSlave.bellyPreg >= 3000) {
					t.push(`the obscenely pregnant`);
				} else {
					t.push(`the obscenely swollen`);
				}
				t.push(`${girl} to properly spitroast ${him}. ${He} whimpers into the`);
				if (!canPenetrate(partnerSlave)) {
					t.push(`dildo`);
				} else {
					t.push(`dick`);
				}
				t.push(`in ${his} mouth as ${his} body stiffens from your invading`);
				if (V.PC.dick !== 0) {
					t.push(`cock`);
				} else {
					t.push(`strap-on`);
				}
				t.push(`stretching ${his} anus.`);
			}
			seX(eventSlave, "anal", V.PC, "penetrative");
			t.push(`When you judge that ${partner.slaveName} is wet enough, you nod to ${him2}, and ${he2} takes ${eventSlave.slaveName} by the hand, pulling ${him} up onto ${his2} lap.`);
			if (partnerSlave.belly + eventSlave.belly > 5000 || partnerSlave.weight > 95 || eventSlave.weight > 95) {
				t.push(`There is no chance that the pair of them will manage to stay on that counter without hurting themselves or breaking something, so you quickly help them down onto a bathroom bench before the moment is ruined.`);
			} else if (partnerSlave.boobs > 4000 && eventSlave.boobs > 4000) {
				t.push(`Their tits are so huge that they can't reach each other to kiss, chest-to-chest like that. ${partnerSlave.slaveName} settles for blowing the other slave an exaggerated kiss, which makes ${him} laugh.`);
			} else {
				t.push(`The slaves start making out, showing no signs of breaking their lip lock as they arrange themselves for penetration.`);
			}
			t.push(`${partnerSlave.slaveName} guides ${his2}`);
			if (!canPenetrate(partnerSlave)) {
				t.push(`strap-on`);
			} else {
				t.push(`cock`);
			}
			t.push(`inside the`);
			if (eventSlave.fetish === "buttslut") {
				t.push(`enthusiastic`);
			} else {
				t.push(`compliant`);
			}
			t.push(`${eventSlave.slaveName}, who begins to ride it, enjoying both the`);
			if (eventSlave.prostate > 0) {
				t.push(`prostate`);
			} else {
				t.push(`anal`);
			}
			t.push(`stimulation and the feeling of ${his}`);
			if (eventSlave.dick > 0) {
				if (eventSlave.chastityPenis === 1) {
					t.push(`midsection`);
				} else if (eventSlave.hormoneBalance >= 100 || eventSlave.balls === 0 || eventSlave.ballType === "sterile") {
					t.push(`soft dick`);
				} else if (!canAchieveErection(eventSlave)) {
					t.push(`oversized cock`);
				} else {
					t.push(`erection`);
				}
				t.push(`trapped between ${him} and`);
			} else {
				t.push(`pussy pressed against`);
			}
			t.push(`${partnerSlave.slaveName}.`);
			seX(eventSlave, "anal", partnerSlave, "penetrative");
			t.push(`${partnerSlave.slaveName} smacks the humping`);
			if (eventSlave.physicalAge > 30) {
				t.push(`${woman}'s`);
			} else if (eventSlave.physicalAge > 17) {
				t.push(`${girl}'s`);
			} else if (eventSlave.physicalAge > 12) {
				t.push(`teen's`);
			} else {
				t.push(`${loli}'s`);
			}
			t.push(`butt to get ${him} to stop, and slides an index finger up ${his} ass alongside the`);
			if (!canPenetrate(partnerSlave)) {
				t.push(`phallus.`);
			} else {
				t.push(`cock.`);
			}
			t.push(`${eventSlave.slaveName} shudders, and then begins to whine as ${partnerSlave.slaveName} pulls ${his} sphincter wider.`);
			App.Events.addParagraph(container, t);

			t = [];
			t.push(Spoken(eventSlave, `"Please,"`));
			t.push(`the slave begs incoherently as you press your`);
			if (V.PC.dick !== 0) {
				t.push(`dick`);
			} else {
				t.push(`strap-on`);
			}
			t.push(`against ${partnerSlave.slaveName}'s finger. It's not clear whether ${he}'s begging you to DP ${his} anus, or begging you not to, but whichever it is, ${partnerSlave.slaveName} withdraws ${his2} finger and you shove yourself inside. ${eventSlave.slaveName} jerks with discomfort and gives a gasping "Oh f-fuck-k" that`);
			if (eventSlave.anus > 2) {
				t.push(`${he} repeats over and over`);
			} else {
				t.push(`is followed by some minor struggling`);
			}
			t.push(`as you begin to fuck ${him}.`);
			seX(eventSlave, "anal", V.PC, "penetrative");
			seX(eventSlave, "anal", partnerSlave, "penetrative");
			if (V.PC.belly + eventSlave.belly + partnerSlave.belly >= 7500) {
				t.push(`The only position you can all manage to squeeze in together doesn't quite allow either of you to pound ${eventSlave.slaveName} as hard as you'd like, but you and ${partnerSlave.slaveName} do your best.`);
			} else {
				t.push(`From ${his2} angle, ${partnerSlave.slaveName} can't pound ${eventSlave.slaveName} quite as hard as you can, but ${he2} does ${his2} best.`);
			}
			t.push(`When you've both had your fun, extracted yourselves, and let the exhausted, gaped bitch collapse onto the floor, ${partnerSlave.slaveName} gives you a naughty wink.`);
			t.push(`<span class="devotion inc">`);
			if (canTalk(partnerSlave)) {
				t.push(Spoken(partnerSlave, `"That was fun, ${Master2}!"`));
			} else {
				t.push(`${He2} quite enjoyed ${himself2}`);
			}
			t.push(`</span>`);
			if (canTalk(partnerSlave)) {
				t.push(`${he2} ${say}s.`);
				t.push(Spoken(partnerSlave, `"Shall we flip ${him} over and go again?"`));
			} else {
				t.push(`and would be happy to go for round two.`);
			}
			t.push(`<span class="devotion inc">`);
			t.push(Spoken(eventSlave, `"Please nooo,"`));
			t.push(`</span>`);
			t.push(`comes a quiet wail from the floor.`);
			if (canImpreg(eventSlave, V.PC)) {
				knockMeUp(eventSlave, 10, 1, -1);
			}
			if (canImpreg(eventSlave, partnerSlave)) {
				knockMeUp(eventSlave, 10, 1, partnerSlave.ID);
			}
			App.Events.addParagraph(container, t);

			eventSlave.devotion += 2;
			partnerSlave.devotion += 2;

			return container;
		}

		function talk() {
			let container = document.createDocumentFragment();
			const {heP} = getSpokenPronouns(V.PC, eventSlave).appendSuffix('P');
			t = [];

			t.push(`You head into the bathroom, shedding clothing as you go. ${He} stares at you as you advance, ${his} eyes fixing on your`);
			if (V.PC.boobs >= 1400) {
				t.push(`enormous tits as you reveal them,`);
			} else if (V.PC.boobs >= 1200) {
				t.push(`huge tits as you reveal them,`);
			} else if (V.PC.boobs >= 1000) {
				t.push(`big tits as you reveal them,`);
			} else if (V.PC.boobs >= 300) {
				t.push(`tits as you reveal them,`);
			} else if (V.PC.belly >= 100000) {
				t.push(`massive pregnancy as it becomes visible,`);
			} else if (V.PC.belly >= 60000) {
				t.push(`giant pregnancy as it becomes visible,`);
			} else if (V.PC.belly >= 15000) {
				t.push(`advanced pregnancy as it becomes visible,`);
			} else if (V.PC.belly >= 10000) {
				t.push(`big baby bump as it becomes visible,`);
			} else if (V.PC.belly >= 5000) {
				t.push(`baby bump as it becomes visible,`);
			} else if (V.PC.belly >= 1500) {
				t.push(`rounded middle as it becomes visible,`);
			} else {
				if (V.PC.title === 0) {
					t.push(`flat chest as you reveal it,`);
				} else {
					t.push(`ripped abs as they become visible,`);
				}
			}
			t.push(`and ${his} lips part slightly. ${His} gaze only shifts when you disrobe completely, revealing your`);
			if (V.PC.dick !== 0) {
				t.push(`hardening`);
				if (V.PC.vagina !== -1) {
					t.push(`dick and`);
				} else {
					t.push(`dick;`);
				}
			} else if (V.PC.vagina !== -1) {
				t.push(`flushed womanhood;`);
			}
			t.push(`${he} licks ${his} lips unconsciously. You grab a towel off the counter, spread it on a bathroom bench, and recline on`);
			if (V.PC.belly < 5000) {
				t.push(`it with your back against the wall.`);
			} else {
				t.push(`it.`);
			}
			t.push(`You pat your`);
			// consider muscles and weight here
			if (V.PC.title === 1) {
				t.push(`hard`);
			} else {
				t.push(`pretty`);
			}
			t.push(`thighs, and ${he} hurries over,`);
			if (eventSlave.fetish === "buttslut" || (eventSlave.fetish === "pregnancy" && V.PC.belly >= 5000)) {
				t.push(`eagerly`);
			} else {
				t.push(`carefully`);
			}
			t.push(`swinging ${his} leg over the bench and seating ${himself} in your`);
			if (V.PC.belly >= 60000) {
				t.push(`lap, getting comfortable against your underbelly.`);
			} else {
				t.push(`lap.`);
			}
			if (V.PC.dick !== 0) {
				t.push(`Your cock slides easily up ${his} whorish butt. One of your arms`);
			} else {
				t.push(`You decided not to bother with a strap-on, so you slide a couple of fingers inside ${him}, and ${he} reciprocates by working a hand under ${himself} to attend to your pussy. Your free arm`);
			}
			if (V.PC.belly < 5000) {
				t.push(`wraps around`);
				if (eventSlave.boobs > 4000) {
					t.push(`${him} and under ${his} heavy tits, resting in a cocoon of soft breastflesh.`);
				} else if (eventSlave.boobs > 800) {
					t.push(`${his} heavy breasts, hefting their weight and eliciting a sigh from the slave.`);
				} else if (eventSlave.belly >= 5000) {
					if (eventSlave.bellyPreg > 3000) {
						t.push(`${his} waist to support ${his} pregnancy.`);
					} else if (eventSlave.bellyImplant > 3000) {
						t.push(`${his} waist to support the weight of ${his} belly.`);
					} else {
						t.push(`${his} waist to stabilize ${his} bloated middle.`);
					}
				} else if (eventSlave.weight > 95) {
					t.push(`${his} stomach to better support ${his} weight.`);
				} else if (eventSlave.boobs > 400) {
					t.push(`${him} to support ${his} chest.`);
				} else {
					t.push(`${him} to support ${his} weight.`);
				}
			} else {
				t.push(`grabs as good a hold as you can get in your state on`);
				if (eventSlave.weight > 95) {
					t.push(`${his} love handle.`);
				} else if (eventSlave.hips > 2) {
					t.push(`${his} massive hip.`);
				} else if (eventSlave.hips >= 2) {
					t.push(`${his} wide hip.`);
				} else if (eventSlave.hips >= 1) {
					t.push(`${his} womanly hip.`);
				} else if (eventSlave.hips >= 0) {
					t.push(`${his} hip.`);
				} else if (eventSlave.hips >= -1) {
					t.push(`${his} narrow hip.`);
				} else {
					t.push(`what should be a hip.`);
				}
			}
			t.push(`Being held this way, ${he} can't really`);
			if (V.PC.dick !== 0) {
				t.push(`bounce on your dick, so ${he} just wiggles ${his} butt into you to seat it a bit deeper`);
			} else {
				t.push(`grind against your fingers`);
			}
			t.push(`and sighs contentedly. You instruct ${him} to elaborate on what ${he} said earlier.`);
			App.Events.addParagraph(container, t);

			t = [];
			t.push(Spoken(eventSlave, `"Yes ${Master},"`));
			t.push(`${he} ${say}s automatically, and then pauses.`);
			t.push(Spoken(eventSlave, `"Hmm. I try not to think about back, you know, before."`));
			t.push(`${He} squeezes ${his} buttocks against your`);
			if (V.PC.dick !== 0) {
				t.push(`crotch.`);
			} else {
				t.push(`hand.`);
			}
			t.push(Spoken(eventSlave, `"But I guess back then I didn't really think about my butthole, much? Like, I went to the bathroom, and washed it in the shower, and that was it. But with the liquid slave food, I don't — sorry, ${Master}, I'm being silly. You know all about that."`));
			t.push(`You tell ${him} to explain it anyway. ${He} looks puzzled for a moment, but <span class="trust inc">remembers ${he} can trust you,</span> and twists around to plant an awkward kiss on your`);
			if (V.PC.belly >= 5000) {
				t.push(`navel`);
			} else {
				t.push(`chin`);
			}
			t.push(`before continuing.`);
			t.push(Spoken(eventSlave, `"Well,"`));
			t.push(`${he} ${say}s, with mock seriousness.`);
			t.push(Spoken(eventSlave, `"Here in the arcology, we slaves eat a very special liquid diet that keeps us healthy and fit and ready to fuck. And, it's absorbed completely, so our butts are always nice and clean. That way, ${Master} can -"`));
			t.push(`${he} clenches ${his} sphincter`);
			if (V.PC.dick !== 0) {
				t.push(`around the base of your cock — "fuck`);
			} else {
				t.push(`against your invading fingers — "play with`);
			}
			t.push(Spoken(eventSlave, `our asses"`));
			t.push(`— clench —`);
			t.push(Spoken(eventSlave, `"whenever"`));
			t.push(`— clench —`);
			t.push(Spoken(eventSlave, `"${heP}"`));
			t.push(`— clench —`);
			t.push(Spoken(eventSlave, `"wants!"`));
			t.push(`${He} squeals as you use your encircling arm to hoist ${his} torso up a bit higher, and mercilessly`);
			if (V.PC.dick !== 0) {
				t.push(`fuck`);
			} else {
				t.push(`fingerfuck`);
			}
			t.push(`${his} ass. Many of your other slaves came and went during this, and none of them saw anything unusual about you molesting ${eventSlave.slaveName}'s bottom in a corner of the restroom.`);
			t.push(VCheck.Anal(eventSlave, 1));
			eventSlave.trust += 4;
			App.Events.addParagraph(container, t);

			return container;
		}

		function assFuck() {
			let container = document.createDocumentFragment();

			t = [];
			t.push(`You tell ${him} that since ${he} appreciates how ${his} ass has changed, ${he} won't be surprised if you treat it like the fuckhole it is. Something in your tone makes ${him} cautious, but ${he}'s a good ${girl} and ${say}s`);
			t.push(Spoken(eventSlave, `"Yes, ${Master},"`));
			t.push(`automatically. You pass ${V.assistant.name} wardrobe orders for the poor`);
			if (eventSlave.physicalAge > 30) {
				t.push(`${woman},`);
			} else if (eventSlave.physicalAge > 17) {
				t.push(`${girl},`);
			} else if (eventSlave.physicalAge > 12) {
				t.push(`teen,`);
			} else {
				t.push(`${loli},`);
			}
			t.push(`and instructions to have ${him} report to your office once ${he}'s dressed. A few minutes later, ${eventSlave.slaveName} walks up to your desk, stark naked except for a buttplug that comfortably fills ${his} rectum and a sturdy leather collar attached to a leash. You snap your fingers, pointing at the ground, and ${he}`);
			if (eventSlave.belly >= 30000) {
				t.push(`struggles`);
			} else {
				t.push(`scrambles`);
			}
			if (hasAllLimbs(eventSlave)) {
				t.push(`to ${his} hands and knees`);
			} else {
				t.push(`downwards`);
			}
			t.push(`and`);
			if (hasAnyArms(eventSlave)) {
				t.push(`removes ${his} plug.`);
			} else {
				t.push(`presents ${his} plug for removal.`);
			}
			t.push(`After ${he}'s taken a harsh buttfuck, you`);
			if (V.PC.dick !== 0) {
				t.push(`push the plug back in without letting any of your cum escape`);
			} else {
				t.push(`plug ${him} up again`);
			}
			t.push(`and attach the leash to your belt. You ignore your anal toy completely, letting ${him} kneel next to you as you work — ${he} doesn't seem to want to sit, for some reason. For the rest of the day, ${his} anus takes the full force of your libido. You fuck nothing else, confining your efforts to ${his} backdoor, keeping ${him} plugged when you aren't penetrating ${him}. When you're bored, you hand ${him} a dildo and tell ${him} to take care of it ${himself}.`);
			App.Events.addParagraph(container, t);

			t = [];
			t.push(`${He}'s quite exhausted by the end of the day,`);
			if (eventSlave.belly >= 10000) {
				t.push(`waddling`);
			} else {
				t.push(`walking`);
			}
			t.push(`dumbly along behind you, leashed to your belt and wondering tiredly when ${his} next reaming is coming. ${He} doesn't notice that you're bringing ${him} back to stand in front of the mirror until ${he}'s there. You push ${his} compliant body into an approximation of ${his} position from the`);
			if (hasAnyArms(eventSlave)) {
				t.push(`morning and tell ${him} to remove ${his} plug and`);
			} else {
				t.push(`morning, pull out ${his} plug, and tell ${him} to`);
			}
			t.push(`look at ${his} asshole.`);
			t.push(Spoken(eventSlave, `"Yes, ${Master},"`));
			t.push(`${he} ${say}s, and obeys.`);
			if (V.PC.dick !== 0 && V.PC.balls > 0) {
				t.push(`This releases`);
				if (V.PC.balls >= 30) {
					t.push(`an obscene amount of ejaculate as ${his} stomach deflates slowly.`);
				} else if (V.PC.balls >= 14) {
					t.push(`a flood of ejaculate.`);
				} else if (V.PC.balls >= 9) {
					t.push(`a torrent of ejaculate.`);
				} else {
					t.push(`quite a rush of ejaculate.`);
				}
			}
			t.push(`${His} anus is very loose, a lewd, gaping fuckhole hungry for toys, fingers, and dick. You tell ${him} that, and ask whether ${he} agrees. `);
			t.push(Spoken(eventSlave, `"Yes, ${Master},"`));
			t.push(`${he} ${say}s.</span>`);
			eventSlave.devotion += 4;
			eventSlave.anus = 3;
			t.push(VCheck.Anal(eventSlave, 2));
			App.Events.addParagraph(container, t);

			return [container];
		}

		function wrongHole() {
			t = [];
			t.push(`You make it abundantly clear that you and you alone choose what hole you fuck and when, and it will not be ${his} loose asshole.`);
			t.push(Spoken(eventSlave, `"Ah! I-I'm sorry ${Master}, I went too far."`));
			t.push(`<span class="devotion dec">${He} looks crestfallen</span> as you take your leave.`);
			eventSlave.devotion -= 2;
			return t;
		}
	}
};


code:
App.Events.RECIFeminization = class RECIFeminization extends App.Events.BaseEvent {
	eventPrerequisites() {
		return [];
	}

	actorPrerequisites() {
		return [
			[ // single event slave
				s => s.fetish !== "mindbroken",
				s => V.REFeminizationCheckinIDs.includes(s.ID),
				s => s.assignment !== Job.QUARTER,
				s => s.devotion >= 10,
				s => s.dick > 0,
				s => s.vagina < 0,
				s => s.attrXY > 65,
				s => s.energy > 60,
				s => s.faceShape !== "masculine",
				s => s.belly <= 0,
				s => s.bodySwap === 0,
				s => s.anus > 0,
				s => s.sexualFlaw !== "hates anal",
				s => s.butt > 0,
				canStand,
				canDoAnal,
				canTalk,
				canHear,
				hasAnyArms,
			]
		];
	}

	execute(node) {
		/** @type {Array<App.Entity.SlaveState>} */
		let [eventSlave] = this.actors.map(a => getSlave(a));
		const {
			// eslint-disable-next-line no-unused-vars
			He, he, His, his, hers, him, himself, girl
		} = getPronouns(eventSlave);
		const {title: Master, say: say} = getEnunciation(eventSlave);
		const desc = SlaveTitle(eventSlave);
		const legs = hasBothLegs(eventSlave) ? "legs" : "leg";

		V.nextLink = "Next Week";
		V.REFeminizationCheckinIDs.deleteWith((s) => s === eventSlave.ID);

		let artDiv = document.createElement("div"); // named container so we can replace it later
		App.Events.drawEventArt(artDiv, eventSlave, "no clothing");
		node.appendChild(artDiv);

		let t = [];
		t.push(App.UI.DOM.slaveDescriptionDialog(eventSlave));
		t.push(`is standing before your desk for an inspection. The ${desc} is naked, of course, and is devoted enough to find the situation arousing: ${he}'s being inspected by ${his} ${getWrittenTitle(eventSlave)} in the nude, which is sexual enough, and past inspections have often led to a quick fuck. The horny bitch obviously wants it;`);
		if (eventSlave.chastityPenis === 1) {
			t.push(`${his} chastity cage is dribbling precum, and ${he}'s clearly uncomfortable with simultaneous arousal and unwillingness to suffer a hard-on inside it.`);
		} else if (canAchieveErection(eventSlave)) {
			t.push(`${his} cock is painfully erect.`);
		} else if (eventSlave.dick > 6) {
			t.push(`${his} inhuman cock is swollen and leaking precum.`);
		} else if (eventSlave.dick > 0) {
			t.push(`${his} pathetically limp dick is practically dripping precum.`);
		}
		t.push(`Your inspections require the slave to offer each of ${his} body parts to your view, and when the routine reaches ${his} anus, the slut obediently turns ${his} back to you, bends at the waist, and`);
		if (eventSlave.butt > 10) {
			t.push(`struggles to spread ${his} immense asscheeks far enough apart to even give you a view of`);
		} else if (eventSlave.butt > 5) {
			t.push(`prises ${his} massive buttocks apart to reveal`);
		} else if (eventSlave.butt > 2) {
			t.push(`pulls ${his} buttocks apart to show off`);
		} else {
			t.push(`spreads ${his} cute buttocks to show off`);
		}
		t.push(`${his}`);
		if (eventSlave.anus > 2) {
			t.push(`asshole, which is so relaxed it's begging for cock.`);
		} else if (eventSlave.anus > 1) {
			t.push(`butthole, which ${he} winks invitingly at you.`);
		} else {
			t.push(`tight anus, which ${he} winks invitingly at you.`);
		}
		App.Events.addParagraph(node, t);

		t = [];
		t.push(`You often pepper slaves with questions during this inspection; it helps you gauge their mental state, and it's just as important to verbally inspect slaves' minds as it is to visually inspect their backdoors. You remember with sudden clarity what ${eventSlave.slaveName} was like when you acquired ${him}. ${He} wasn't as enthusiastic then. The first time you inspected ${him}, ${he} certainly wasn't so excited about getting buttfucked. You ask ${him} if ${he} remembers that too. ${He} hesitates, wondering how to answer, but decides that honesty is the best policy and ${say}s,`);
		t.push(Spoken(eventSlave, `"I remember, ${Master}. It was hard for me, becoming a girl.`));
		if ((eventSlave.fetish === "buttslut" || eventSlave.energy > 95)) {
			t.push(Spoken(eventSlave, `But, ${Master}, girls get fucked. And I love getting fucked in the butt so much. If that makes me a girl then I'm happy being a girl.`));
		} else if (eventSlave.fetish === "cumslut" && eventSlave.fetishStrength > 60) {
			t.push(Spoken(eventSlave, `But, ${Master}, girls suck cock. And I love sucking cock so much. If that makes me a girl then I'm happy being a girl.`));
		} else if (eventSlave.fetish === "pregnancy" && eventSlave.fetishStrength > 60) {
			t.push(Spoken(eventSlave, `But, ${Master}, girls get bred. And I love being held down and bred. If that makes me a girl then I'm happy being a girl.`));
		} else if ((eventSlave.fetish === "submissive" || eventSlave.fetish === "masochist") && eventSlave.fetishStrength > 60) {
			t.push(Spoken(eventSlave, `But, ${Master}, girls get held down and fucked. And I love being used so much. If that makes me a girl then I'm happy being a girl.`));
		} else if (eventSlave.boobs > 400) {
			t.push(Spoken(eventSlave, `Getting a girl's body made it easier for me, though. When I`));
			if (canSee(eventSlave)) {
				t.push(Spoken(eventSlave, `see myself in the mirror, I see`));
			} else {
				t.push(Spoken(eventSlave, `feel myself up, I feel`));
			}
			t.push(Spoken(eventSlave, `a girl with a body made for getting fucked.`));
		} else if (eventSlave.balls === 0) {
			t.push(Spoken(eventSlave, `Not having balls makes it easier for me, though. The only way my soft girldick will come is when I take cock.`));
		} else {
			t.push(Spoken(eventSlave, `But the training and the rules pushed me through it.`));
		}
		t.push(Spoken(eventSlave, `I try to be a good slave girl for you, ${Master}. Can I — can I be a good slave girl for you? Right now? Please?"`));
		t.push(`${He} twists ${his} ${eventSlave.skin} body suggestively,`);
		if (eventSlave.chastityPenis === 1) {
			t.push(`offering you ${his} rear hole, the only hope the chastity caged ${girl} has of release.`);
		} else if (canAchieveErection(eventSlave)) {
			t.push(`hard dick wagging with the motion, offering you ${his} rear.`);
		} else if (eventSlave.dick > 6) {
			t.push(`engorged dick wobbling with the motion, offering you ${his} rear.`);
		} else if (eventSlave.dick > 0) {
			t.push(`soft dick flopping with the motion, offering you ${his} rear.`);
		}

		App.Events.addResponses(node, [
			new App.Events.Result(`Yes ${he} can`, gentleSex),
			new App.Events.Result(`${He}'s a good slave girl all the time, not just right now`, poundingSex),
			(canImpreg(eventSlave, V.PC))
				? new App.Events.Result(`Girls should be naked, barefoot and pregnant`, breedingSex)
				: new App.Events.Result(),
			new App.Events.Result(`Good slave girls earn money`, partyGirl),
		]);

		function gentleSex() {
			t = [];
			t.push(`When ${he}`);
			if (canSee(eventSlave)) {
				t.push(`sees`);
			} else {
				t.push(`hears`);
			}
			t.push(`you stand up from behind your`);
			if (V.PC.dick === 0) {
				t.push(`desk and pull on a strap-on,`);
			} else {
				t.push(`desk,`);
			}
			t.push(`${he} turns fully away from you, cocking ${his}`);
			if (eventSlave.hips > 0) {
				t.push(`womanly`);
			}
			t.push(`hips at just the right angle to offer you ${his} anus, without any preamble or foreplay. But you come up behind ${him} and encircle ${his}`);
			if (eventSlave.weight > 95) {
				t.push(`bountiful belly`);
			} else if (eventSlave.weight > 30) {
				t.push(`soft stomach`);
			} else if (eventSlave.muscles > 95) {
				t.push(`ripped abs`);
			} else if (eventSlave.weight > 10) {
				t.push(`plush belly`);
			} else if (eventSlave.muscles > 30) {
				t.push(`muscular waist`);
			} else if (eventSlave.muscles > 5) {
				t.push(`firm stomach`);
			} else {
				t.push(`trim waist`);
			}
			t.push(`with your capable hands, your lips nibbling along the line of ${his}`);
			if (eventSlave.weight > 95) {
				t.push(`soft`);
			} else if (eventSlave.muscles > 30) {
				t.push(`strong`);
			} else if (eventSlave.muscles > 5) {
				t.push(`toned`);
			} else {
				t.push(`soft`);
			}
			t.push(`shoulders and neck. ${He} shudders as the embrace brings your`);
			if (V.PC.dick === 0) {
				t.push(`strap-on`);
			} else {
				t.push(`dick`);
			}
			if (eventSlave.height >= V.PC.height + 15) {
				if (hasBothLegs(eventSlave)) {
					t.push(`slipping between ${his} thighs,`);
				} else {
					t.push(`slapping against ${his} thigh,`);
				}
				t.push(`since ${he}'s taller than you.`);
			} else if (eventSlave.height >= V.PC.height) {
				t.push(`up between ${his} buttocks, since ${he}'s as tall as you.`);
			} else if (eventSlave.height >= V.PC.height - 15) {
				t.push(`pressing into ${his} asscrack, since ${he}'s shorter than you.`);
			} else if (eventSlave.height >= V.PC.height - 30) {
				t.push(`nestling down into ${his} asscrack, since ${he}'s so much shorter than you.`);
			} else {
				t.push(`sliding down ${his} back, since there is a considerable size difference between you.`);
			}
			t.push(`You whisper that a good slave girl doesn't have to touch ${himself} to come when ${his} ${getWrittenTitle(eventSlave)} fucks ${his} butt, and ask whether ${he}'s a good slave girl. ${He} shivers and promises that ${he} is, rubbing ${his} asshole against your`);
			if (V.PC.dick === 0) {
				t.push(`phallus.`);
			} else {
				t.push(`cockhead.`);
			}
			t.push(`${He} gives a`);
			if (eventSlave.voice > 1) {
				t.push(`feminine`);
			} else {
				t.push(`unbecomingly deep`);
			}
			t.push(`sigh as it slides into ${him}, and moves softly within your embrace, doing ${his} best to pleasure you with ${his} girly ass. ${He} was already very close, and your loving touch so aroused ${him} that ${he} gasps and stiffens after only a few thrusts,`);
			if (eventSlave.chastityPenis === 1) {
				t.push(`shuddering`);
			} else if (canAchieveErection(eventSlave)) {
				t.push(`${his} dick twitching`);
			} else if (eventSlave.dick > 6) {
				t.push(`${his} fat dick twitching slightly.`);
			} else if (eventSlave.dick > 0) {
				t.push(`${his} soft dick twitching softly`);
			}
			t.push(`with a weak orgasm. ${He} giggles self-consciously and keeps humping back into you. ${He} is a good slave girl once more before going to rinse ${himself} off in the shower, so much so that you follow ${him} so ${he} can be a good slave girl in the shower, too.`);
			eventSlave.devotion += 4;
			seX(eventSlave, "anal", V.PC, "penetrative", 3);
			if (canImpreg(eventSlave, V.PC)) {
				knockMeUp(eventSlave, 15, 1, -1);
			}
			return t;
		}

		function poundingSex() {
			t = [];
			t.push(`You tell ${him} that ${he} doesn't have to prove anything to you right now; ${he}'s shown that ${he}'s a good slave girl already. ${He} looks shocked for a moment before blushing and turning ${his} gaze down at ${his} feet.`);
			t.push(Spoken(eventSlave, `"T-thanks ${Master},"`));
			t.push(`${he} stammers. Since ${he} asked so nicely, though, you continue; you will fuck ${his} butt. ${He} giggles and`);
			if (canWalk(eventSlave)) {
				t.push(`hurries`);
			} else {
				t.push(`crawls`);
			}
			t.push(`over to you in response to a crooked finger, curling up in your lap for a nice makeout session. When the next slave scheduled for an examination comes through the door, it's to the sight of ${eventSlave.slaveName} holding ${his} body sideways in the air over the`);
			if (hasBothLegs(eventSlave)) {
				t.push(`couch: ${he} has one knee down on the cushions, and is doing the splits with the other leg running up`);
				if (V.PC.boobs >= 300) {
					t.push(`between your breasts.`);
				} else if (V.PC.title === 0) {
					t.push(`your flat chest.`);
				} else {
					t.push(`your muscular chest.`);
				}
			} else {
				t.push(`couch.`);
			}
			t.push(`Your`);
			if (V.PC.dick === 0) {
				t.push(`strap-on`);
			} else {
				t.push(`dick`);
			}
			t.push(`is up ${his} ass, and you're giving it to ${him} hard.`);
			if (eventSlave.boobs > 25000) {
				t.push(`${His} immense breasts wobble beside ${him}, absorbing the impact of each thrust.`);
			} else if (eventSlave.boobs > 1000) {
				t.push(`${His} huge breasts are bouncing back and forth with the motion, almost hitting ${himself} in the face.`);
			} else if (eventSlave.weight > 10) {
				t.push(`${His} generous curves lend the motion weight, and each thrust reams ${his} ass hard.`);
			} else if (eventSlave.hLength >= 60) {
				t.push(`${His} long hair flies around ${his} face in a maelstrom of sexual energy.`);
			} else {
				t.push(`The leather couch creaks with an obscurely sexual rhythm.`);
			}
			t.push(`${He}'s being fucked so hard that ${his}`);
			if (eventSlave.chastityPenis === 1) {
				t.push(`cock is being forced to half-hardness inside its chastity cage, making ${him} writhe with mixed anal pleasure and dick pain.`);
			} else if (canAchieveErection(eventSlave)) {
				if (eventSlave.dick > 3) {
					t.push(`massive erection is slapping wetly against ${his} stomach, spattering ejaculate from a previous orgasm everywhere,`);
				} else if (eventSlave.dick > 1) {
					t.push(`hard-on is helicoptering around wildly, spattering ejaculate from a previous orgasm everywhere`);
				} else {
					t.push(`tiny erection is scattering ejaculate from a previous orgasm everywhere.`);
				}
			} else if (eventSlave.dick > 6) {
				t.push(`${his} swollen cock is swaying along to the pounding, slapping heavily against anything it hits.`);
			} else if (eventSlave.dick > 3) {
				t.push(`huge soft cock is flopping at random, slapping against ${his} stomach and ${his} ${legs}.`);
			} else if (eventSlave.dick > 1) {
				t.push(`${his} impotent dick has been forced to a state of half-hardness.`);
			} else {
				t.push(`${his} pathetic little dick has been forced into a state of half-hardness.`);
			}
			t.push(`${He}'s so far gone into a state of`);
			if (eventSlave.prostate > 0) {
				t.push(`prostate stimulation induced bliss`);
			} else {
				t.push(`bliss from having ${his} insides stirred up`);
			}
			t.push(`that ${he}'s drooling a little.`);
			eventSlave.trust += 4;
			seX(eventSlave, "anal", V.PC, "penetrative");
			if (canImpreg(eventSlave, V.PC)) {
				knockMeUp(eventSlave, 10, 1, -1);
			}
			return t;
		}

		function breedingSex() {
			t = [];
			t.push(`You tell ${him} that a proper girl should be naked, barefoot, and pregnant. ${He} thinks for a moment and ${say}s,`);
			t.push(Spoken(eventSlave, `"Well I'm already naked... And I'm not wearing any shoes... So that just leaves getting knocked up..."`));
			t.push(`${He} giggles, lowers ${himself} to the ground and`);
			if (eventSlave.butt > 10) {
				t.push(`bounces ${his} ridiculous ass at you,`);
			} else if (eventSlave.butt > 3) {
				t.push(`jiggles ${his} huge butt at you,`);
			} else {
				t.push(`wiggles ${his} butt at you,`);
			}
			t.push(`inviting you to mount ${him}.`);
			t.push(Spoken(eventSlave, `"Which won't be a problem at a—!"`));
			t.push(`${He} is cut short as you hilt your dick in ${his} ass, push ${his} face to the floor, and being pounding ${his}`);
			if (eventSlave.anus > 2) {
				t.push(`slutty asspussy.`);
			} else if (eventSlave.anus > 1) {
				t.push(`loose hole.`);
			} else {
				t.push(`tight hole.`);
			}
			t.push(`${He} bucks against you like a bitch in heat,`);
			if (eventSlave.chastityPenis === 1) {
				t.push(`despite the pain caused by ${his} chastity bound hardness,`);
			} else if (canAchieveErection(eventSlave)) {
				t.push(`${his} throbbing erection smearing precum across ${his} belly,`);
			} else if (eventSlave.dick > 6) {
				t.push(`${his} swollen cock wobbling with your thrusts,`);
			} else if (eventSlave.dick > 1) {
				t.push(`${his} soft cock flopping against ${his} belly to your thrusts,`);
			} else {
				t.push(`${his} pathetic little dick flopping around forgotten beneath ${him},`);
			}
			t.push(`until ${he} feels the warmth of your fresh load deposited in the depths of ${his} rear. You help ${him} onto the couch, where ${he} gently massages ${his} lower belly, marveling at what it means to be your girl.`);
			t.push(Spoken(eventSlave, `"I'm going to have ${Master}'s babies... It's like a dream,"`));
			t.push(`${he} babbles incoherently. This is just the first of many breedings ${he}'ll undergo this week as you finish ${his} transformation into the perfect slave girl; it will be a surprise if ${he} doesn't come out of this pregnant.`);
			eventSlave.devotion += 2;
			seX(eventSlave, "anal", V.PC, "penetrative", 10);
			if (canImpreg(eventSlave, V.PC)) {
				knockMeUp(eventSlave, 95, 1, -1);
			}
			return t;
		}

		function partyGirl() {
			// replace slave art
			$(artDiv).empty();
			App.Events.drawEventArt(artDiv, eventSlave, "a mini dress");

			t = [];
			t.push(`You tell ${him} that you've hired ${him} out for a party a prominent citizen is throwing, and that ${he} should be a good slave girl by saving ${himself} for that. ${He} trips all over ${himself} promising that ${he} will. You check in on ${him} later, using the video feeds, and are treated to the sight of ${him} wearing a slinky cocktail dress, although wearing is perhaps the wrong term. ${He}'s bent over a barstool with the top of the dress pulled down`);
			if (eventSlave.boobs > 10000) {
				t.push(`to let ${his} massive chest wobble freely`);
			} else if (eventSlave.boobs > 1000) {
				t.push(`over ${his} huge tits`);
			} else if (eventSlave.boobs > 300) {
				t.push(`to bare ${his} boobs`);
			} else {
				t.push(`to reveal ${his} sissy chest`);
			}
			t.push(`and the bottom of ${his} dress hiked up so a guest can fuck ${his} ass. ${He}'s obviously enjoying ${himself}, happy to be getting some at last. ${His} fee for the night is substantial, and the host attaches a note to the payment, complimenting ${his} eagerness to get assfucked and ${his} willingness to suck cock, and asking when ${he}'ll be available next.`);
			cashX(500, "event", eventSlave);
			seX(eventSlave, "anal", "publicUse", "penetrative", 5);
			seX(eventSlave, "oral", "publicUse", "penetrative", 5);
			if (canGetPregnant(eventSlave) && eventSlave.eggType === "human") {
				knockMeUp(eventSlave, 10, 1, -2);
			}
			return t;
		}
	}
};

repo_name: Welptard/fc

license: mit


code:
App.Events.RECIFuta = class RECIFuta extends App.Events.BaseEvent {
	eventPrerequisites() {
		return [];
	}

	actorPrerequisites() {
		return [
			[ // single event slave
				s => s.fetish !== "mindbroken",
				s => V.REFutaSisterCheckinIDs.includes(s.ID),
				s => s.assignment !== Job.QUARTER,
				s => s.trust >= 10,
				s => s.dick > 0,
				s => s.balls > 0,
				s => s.vagina >= 0,
				canStand,
				canAchieveErection,
				canTalk,
				canHear,
				hasAllNaturalLimbs,
			]
		];
	}

	execute(node) {
		/** @type {Array<App.Entity.SlaveState>} */
		let [eventSlave] = this.actors.map(a => getSlave(a));
		const {
			He, he, His, his, hers, him, himself, girl
		} = getPronouns(eventSlave);
		const {title: Master, say: say} = getEnunciation(eventSlave);
		const belly = bellyAdjective(eventSlave);

		V.nextLink = "Next Week";
		V.REFutaSisterCheckinIDs.deleteWith((s) => s === eventSlave.ID);

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

		let t = [];
		t.push(`You're just finishing up`);
		let possessiveName = new DocumentFragment;
		possessiveName.append(App.UI.DOM.slaveDescriptionDialog(eventSlave));
		possessiveName.append("'s");
		t.push(possessiveName);
		t.push(`weekly inspection. The`);
		if (eventSlave.face >= -10) {
			t.push(`pretty`);
		} else {
			t.push(`perky`);
		}
		t.push(`futa is standing obediently before you, answering the usual questions with enthusiasm. ${He} gestures animatedly as ${he} talks, making ${his}`);
		if (eventSlave.boobs > 8000) {
			t.push(`mind-blowing`);
		} else if (eventSlave.boobs > 4000) {
			t.push(`monstrous`);
		} else if (eventSlave.boobs > 2000) {
			t.push(`enormous`);
		} else if (eventSlave.boobs > 800) {
			t.push(`big`);
		}
		if (eventSlave.boobs >= 300) {
			t.push(`boobs jiggle slightly, and ${his}`);
		}
		if (eventSlave.dick > 5) {
			t.push(`incredible, erect penis wave from side to side.`);
		} else if (eventSlave.dick > 3) {
			t.push(`big cock wave from side to side.`);
		} else if (eventSlave.dick > 1) {
			t.push(`dick stick out stiffly.`);
		} else {
			t.push(`tiny hard-on wiggle lewdly.`);
		}
		t.push(`${He} doesn't seem to notice, probably because this state of obvious arousal is more or less permanent for ${him}. After all, this is what the ex-Futanari Sister wanted.`);
		App.Events.addParagraph(node, t);

		t = [];
		t.push(`Apparently, ${he} has something to say. When you've asked ${him} your last question and are considering whether to dismiss ${him} or fuck ${him} and then dismiss ${him}, ${he} speaks up confidently.`);
		t.push(Spoken(eventSlave, `"${Master},"`));
		t.push(`${he} ${say}s.`);
		t.push(Spoken(eventSlave, `"I want to thank you. When our group of Futa Sisters here failed, I was so scared. We all were! We didn't know what was going to happen, whether we were going to be raped or cut up or worse. But you saved us ${Master}, and you saved me. I'm just as happy with you as I was with the Sisters. I thought I'd have to wake up from the dream I was in, but I'm still dreaming. Thank you."`));
		t.push(`${He} gives you a pretty half-curtsy, half-bow that manages to be both graceful and appealingly sexual.`);
		App.Events.addParagraph(node, t);

		t = [];
		t.push(`${His} ${eventSlave.skin} face displays nothing but honest gratitude and devotion. ${He} does not know that the reason ${his} community of Futanari Sisters failed is that you cleverly undermined its finances, forcing it into ruin and its members into slavery. ${He} does not know that the reason ${he} lost years of idyllic transformation and sexual freedom within a group of like-minded women is that you stole them from ${him}. And ${he} does not know that the person ${he} just thanked for saving ${him} from the consequences of the worst thing that ever happened to ${him} was its author.`);
		t.push(Spoken(eventSlave, `"I love you, ${Master},"`));
		t.push(`${he} concludes, smiling expectantly at you.`);
		App.Events.addParagraph(node, t);

		App.Events.addResponses(node, [
			new App.Events.Result(`Love ${him} back`, love, virginityWarningSingle()),
			new App.Events.Result(`Break ${him} with the truth`, hate, virginityWarningDouble()),
		]);

		function love() {
			t = [];
			t.push(`You swing your legs up onto your desk and`);
			if (V.PC.belly < 5000) {
				t.push(`jump`);
			} else {
				t.push(`heft yourself`);
			}
			t.push(`up onto its smooth surface, ${his} eyes tracking the`);
			if (V.PC.belly >= 5000) {
				t.push(`delicate, yet determined, motions you take to accommodate your pregnancy.`);
			} else if (V.PC.boobs >= 300) {
				t.push(`way it makes your breasts move.`);
			} else {
				t.push(`powerful way your muscles move your body.`);
			}
			t.push(`When you pat the tops of your`);
			if (V.PC.title === 1) {
				t.push(`hard`);
			} else {
				t.push(`soft`);
			}
			t.push(`thighs meaningfully, ${he} giggles happily and skips forward to clamber up and sit on your lap. The bouncing and climbing creates quite a nice spectacle of`);
			if (eventSlave.boobs >= 300) {
				t.push(`jiggling tits and`);
			}
			t.push(`waving cock, and ${he} manages to get up on the desk in such a way that you get a solid eyeful of first ${his} wet pussy and then ${his} ready anus.`);
			if (V.PC.belly + eventSlave.belly >= 10000) {
				t.push(`${He} positions ${himself} so that`);
				if (eventSlave.belly >= 8000) {
					t.push(`${his}`);
					if (eventSlave.bellyPreg >= 3000) {
						t.push(`pregnancy`);
					} else {
						t.push(`swollen middle`);
					}
					t.push(`will allow ${his} hermaphroditic genitalia to meet the`);
					if (V.PC.dick !== 0) {
						t.push(`hardness of your`);
						if (V.PC.vagina !== -1) {
							t.push(`erection and the warmth further down.`);
						} else {
							t.push(`erection.`);
						}
					} else {
						t.push(`warmth of your arousal.`);
					}
				} else if (V.PC.belly >= 8000) {
					t.push(`${He} slides ${himself} beneath your bump with a coo, feeling the`);
					if (V.PC.dick !== 0) {
						t.push(`hardness of your erection`);
						if (V.PC.vagina !== -1) {
							t.push(`and the warmth further down`);
						}
					} else {
						t.push(`warmth of your arousal`);
					}
					t.push(`against ${his} hermaphroditic genitalia.`);
				} else {
					t.push(`It takes a moment for both of you to find a position where ${his} hermaphroditic genitalia are able to cross paths with the`);
					if (V.PC.dick !== 0) {
						t.push(`hardness of your`);
						if (V.PC.vagina !== -1) {
							t.push(`erection and the warmth further down`);
						} else {
							t.push(`erection`);
						}
					} else {
						t.push(`warmth of your arousal`);
					}
					t.push(`without both of your bellies getting in the way.`);
				}
			} else {
				t.push(`${He} settles ${himself} onto your lap with a coo, feeling the`);
				if (V.PC.dick !== 0) {
					t.push(`hardness of your erection`);
					if (V.PC.vagina !== -1) {
						t.push(`and the warmth further down`);
					}
				} else {
					t.push(`warmth of your arousal`);
				}
				t.push(`against ${his} hermaphroditic genitalia.`);
			}
			t.push(`${He} starts to grind ${himself} lasciviously against you, but stops when you seize ${his} face and kiss ${him} deeply. ${He} moans back into you, returning the kiss with intensity.`);
			if (eventSlave.boobs > 25000) {
				t.push(`${His} udders are so huge the two of you have to press your torsos hard together to make out, a delightful struggle that stimulates ${his} nipples quite a lot, to go by the way ${he} squeaks and giggles into your mouth.`);
			} else if (eventSlave.boobs > 4000) {
				t.push(`${His} bosom is so big that making out face to face presses it quite hard between your torsos, which stimulates ${his} nipples quite a lot, to go by the way ${he} squeaks and giggles into your mouth.`);
			} else if (eventSlave.boobs + V.PC.boobs > 4000 && V.PC.boobs >= 1000) {
				t.push(`The amount of breast flesh between you forces you and ${him} to press your torsos hard together to make out, a delightful struggle that stimulates both party's nipples quite a lot, to go by the way ${he} squeaks and giggles into your mouth, and you into ${hers}.`);
			} else if (V.PC.boobs >= 300 || V.PC.title === 0) {
				t.push(`You undress without breaking your lip lock, bringing your bare breasts against ${hers} in a warm, loving embrace.`);
			} else {
				t.push(`You strip without breaking your lip lock, bringing your heavily muscled chest against ${his} soft breasts in a tender, loving embrace.`);
			}
			t.push(`${His} arousal builds rapidly and ${he} goes back to grinding,`);
			if (V.PC.dick !== 0) {
				t.push(`eventually getting ${himself} so hot that your dick slides into ${him} almost without either of you meaning to make it happen. ${He} climaxes with you shortly, cumming all over ${his} own breasts.`);
			} else {
				t.push(`bringing you both to a shaking climax. ${He} cums all over ${his} own breasts, coating them in glistening ejaculate.`);
			}
			t.push(`As ${he} relaxes back against the desk, ${his} panting making ${his} cum-glazed tits rise and fall, you reflect that you just lied by omission, letting`);
			if (eventSlave.face >= -10) {
				t.push(`a pretty`);
			} else {
				t.push(`a trusting`);
			}
			t.push(`${girl} maintain ${his} delusions and <span class="devotion inc">${his} love for you.</span> Of all your sins, this is perhaps the smallest.`);
			eventSlave.devotion += 4;
			t.push(VCheck.Vaginal(eventSlave, 1));

			return t;
		}

		function hate() {
			t = [];
			t.push(`You point at`);
			if (eventSlave.belly >= 300000) {
				t.push(`${his} stomach, and ${he} leans forward onto ${his} ${belly} belly, giggling with ${his} butt stuck out invitingly.`);
			} else {
				t.push(`the couch, and ${he}`);
				if (canWalk(eventSlave)) {
					t.push(`skips over to it with a giggle,`);
					if (eventSlave.boobs >= 300) {
						t.push(`boobs bouncing.`);
					} else if (eventSlave.weight > 95) {
						t.push(`belly bouncing.`);
					}
				} else {
					t.push(`crawls over to it with a giggle.`);
				}
				t.push(`${He} hops up onto the cushions, kneeling with ${his} butt stuck out invitingly and ${his} torso bent over its back.`);
			}
			t.push(`${He} reaches around to pull one`);
			if (eventSlave.butt > 12) {
				t.push(`massive`);
			} else if (eventSlave.butt > 8) {
				t.push(`giant`);
			} else if (eventSlave.butt > 5) {
				t.push(`huge`);
			} else if (eventSlave.butt > 2) {
				t.push(`heavy`);
			} else {
				t.push(`cute`);
			}
			t.push(`buttock to one side,`);
			if (eventSlave.anus > 2) {
				t.push(`stretching ${his} lewd backdoor into a gape`);
			} else if (eventSlave.anus > 1) {
				t.push(`stretching ${his} backdoor lewdly`);
			} else {
				t.push(`highlighting ${his} tight anus`);
			}
			t.push(`and showing off ${his}`);
			if (eventSlave.labia > 1) {
				t.push(`dangling`);
			} else if (eventSlave.labia > 0) {
				t.push(`generous`);
			} else if (eventSlave.vaginaLube > 0) {
				t.push(`wet`);
			}
			t.push(`pussylips. You enter ${him} from behind, your`);
			if (V.PC.dick !== 0) {
				t.push(`turgid dick`);
			} else {
				t.push(`strap-on`);
			}
			t.push(`sliding easily into ${his} cunt. Your hands slide around ${him} to hold ${his} shoulders in a gentle lock, and you whisper secrets into ${his} ear. You tell ${him} that the Futanari Sisters here failed because you undermined them. You tell ${him} that ${he} is a slave because you planned and executed ${his} enslavement. And you tell ${him} that no slave will `);
			if (V.enduringDevotion > 20) {
				t.push(`believe ${him} if ${he} tells them the truth, since they love you just like ${he} did.`);
			} else {
				t.push(`listen to ${him} if ${he} tells them the truth, since they aren't as naive as ${he} was.`);
			}
			t.push(`As you pour this poison into ${him}, ${he} remains perfectly still, processing the revelation; the only clue to ${his} feelings is ${his} rapidly softening cock. When it has become completely, pathetically limp, a huge sob tears its way out of ${him}. You switch to ${his} anus and assrape ${him} without mercy, forcing ${his} limp torso halfway around so you can press a kiss on ${his} bawling mouth. ${He} does not resist, even when you begin to taste the salty tears that stream down ${his}`);
			if (eventSlave.face >= -10) {
				t.push(`pretty`);
			} else {
				t.push(`broken`);
			}
			t.push(`face. ${He} will remain devoted to you, mostly from a lack of alternatives, but ${his} trust in you has <span class="trust dec">suffered immensely.</span>`);
			eventSlave.trust = jsRandom(-90, -75);
			t.push(VCheck.Both(eventSlave, 1, 1));

			return t;
		}

		function virginityWarningSingle() {
			if (V.PC.dick >= 0 && eventSlave.vagina === 0) {
				return `This option will take ${his} virginity`;
			}
			return null;
		}

		function virginityWarningDouble() {
			if (eventSlave.vagina === 0 && eventSlave.anus === 0) {
				return `This option will take both ${his} virginities`;
			} else if (eventSlave.vagina === 0) {
				return `This option will take ${his} virginity`;
			} else if (eventSlave.anus === 0) {
				return `This option will take ${his} anal virginity`;
			}
			return null;
		}
	}
};


code:
App.Events.RECIMilf = class RECIMilf extends App.Events.BaseEvent {
	eventPrerequisites() {
		return [];
	}

	actorPrerequisites() {
		return [
			[ // single event slave
				s => s.fetish !== "mindbroken",
				s => V.REMILFCheckinIDs.includes(s.ID),
				s => s.assignment !== Job.QUARTER,
				s => s.devotion >= 10,
				s => s.energy > 60,
				s => s.bodySwap === 0,
				s => (canDoAnal(s) || canDoVaginal(s)),
				canStand,
				canTalk,
				canHear,
				hasAnyArms,
				hasAnyLegs,
			]
		];
	}

	execute(node) {
		/** @type {Array<App.Entity.SlaveState>} */
		let [eventSlave] = this.actors.map(a => getSlave(a));
		const {
			// eslint-disable-next-line no-unused-vars
			He, he, His, his, hers, him, himself, girl
		} = getPronouns(eventSlave);
		const {title: Master, say: say} = getEnunciation(eventSlave);
		const {womenP} = getSpokenPronouns(V.PC, eventSlave).appendSuffix('P');
		const belly = bellyAdjective(eventSlave);
		const desc = SlaveTitle(eventSlave);
		const hands = hasBothArms(eventSlave) ? "hands" : "hand";
		const legs = hasBothLegs(eventSlave) ? "legs" : "leg";
		const ankles = hasBothLegs(eventSlave) ? "ankles" : "ankle";

		V.nextLink = "Next Week";
		V.REMILFCheckinIDs.deleteWith((s) => s === eventSlave.ID);

		let artDiv = document.createElement("div"); // named container so we can replace it later
		App.Events.drawEventArt(artDiv, eventSlave, "no clothing");
		node.appendChild(artDiv);

		let t = [];
		t.push(App.UI.DOM.slaveDescriptionDialog(eventSlave));
		t.push(`is standing before your desk for an inspection. The ${desc} is naked, of course, and is devoted enough to find the situation arousing: ${he}'s being inspected by ${his} ${getWrittenTitle(eventSlave)} in the nude, which is sexual enough, and past inspections have often led to a quick fuck. The horny bitch obviously wants it;`);
		if (eventSlave.chastityPenis === 1) {
			t.push(`${his} chastity cage is dribbling precum, and ${he}'s clearly uncomfortable with simultaneous arousal and unwillingness to suffer a hard-on inside it.`);
		} else if (canAchieveErection(eventSlave)) {
			t.push(`${his} cock is painfully erect.`);
		} else if (eventSlave.dick > 6) {
			t.push(`${his} inhuman cock is swollen and leaking precum.`);
		} else if (eventSlave.dick > 0) {
			t.push(`${his} pathetically limp dick is practically dripping precum.`);
		} else if (eventSlave.clit > 0) {
			t.push(`${his} clit is big enough to be visibly erect when ${he}'s willing and ready.`);
		} else if (canDoVaginal(eventSlave)) {
			t.push(`a sheen is visible on ${his} pussylips, and ${he}'s smiling hopefully at you.`);
		} else {
			t.push(`the scent of arousal fills the air, and ${he}'s smiling hopefully at you.`);
		}
		t.push(`Your inspections require the slave to offer each of ${his} body parts to your view, and when the routine reaches ${his} crotch,`);
		if (eventSlave.belly >= 600000) {
			t.push(`${he} obediently turns around, gingerly leans forward onto ${his} ${belly} middle, hikes`);
			if (hasBothLegs(eventSlave)) {
				t.push(`a`);
			} else {
				t.push(`${his}`);
			}
			t.push(`leg onto ${his} bulk, and displays ${his}`);
			if (eventSlave.chastityPenis === 1) {
				t.push(`chastity caged dick.`);
			} else if (canAchieveErection(eventSlave)) {
				t.push(`erect cock pressing hard against ${his} underbelly.`);
			} else if (eventSlave.dick > 6) {
				t.push(`fat member against ${his} underbelly.`);
			} else if (eventSlave.dick > 0) {
				t.push(`poor flaccid member dangling pitifully against ${his} underbelly.`);
			} else if (eventSlave.labia > 0 && canDoVaginal(eventSlave)) {
				t.push(`pussy, whose lips are so generous that ${he}`);
				if (hasBothArms(eventSlave)) {
					t.push(`uses both hands`);
				} else {
					t.push(`uses ${his} hand`);
				}
				t.push(`to peel them apart.`);
			} else if (canDoVaginal(eventSlave)) {
				if (eventSlave.vagina > 1) {
					t.push(`nice big cunt, which ${he} spreads shamelessly for you.`);
				} else if (eventSlave.vagina > 0) {
					t.push(`tight pussy.`);
				} else {
					t.push(`virgin pussy.`);
				}
			} else {
				if (eventSlave.anus > 1) {
					t.push(`experienced anus, which ${he} winks shamelessly for you.`);
				} else if (eventSlave.vagina > 0) {
					t.push(`tight anus.`);
				} else {
					t.push(`virgin anus.`);
				}
			}
		} else if (eventSlave.belly >= 100000) {
			t.push(`${he} obediently turns around, steadies ${himself}, and leans forward to display ${his}`);
			if (eventSlave.chastityPenis === 1) {
				t.push(`chastity caged dick`);
			} else if (canAchieveErection(eventSlave)) {
				t.push(`erect cock`);
			} else if (eventSlave.dick > 6) {
				t.push(`fat member`);
			} else if (eventSlave.dick > 0) {
				t.push(`poor flaccid member`);
			} else if (canDoVaginal(eventSlave)) {
				if (eventSlave.vagina > 1) {
					t.push(`nice big cunt, which ${he} spreads shamelessly for you,`);
				} else if (eventSlave.vagina > 0) {
					t.push(`tight pussy`);
				} else {
					t.push(`virgin pussy`);
				}
			} else {
				if (eventSlave.anus > 1) {
					t.push(`experienced anus, which ${he} winks shamelessly for you,`);
				} else if (eventSlave.vagina > 0) {
					t.push(`tight anus`);
				} else {
					t.push(`virgin anus`);
				}
			}
			t.push(`without ${his} ${belly} belly in the way.`);
		} else {
			t.push(`${he} obediently backs up to sit down on the couch, spread ${his} ${legs},`);
			if (eventSlave.belly >= 5000 || eventSlave.weight > 95) {
				t.push(`lift ${his} belly,`);
			}
			t.push(`and display ${his}`);
			if (eventSlave.chastityPenis === 1) {
				t.push(`chastity caged dick.`);
			} else if (canAchieveErection(eventSlave)) {
				t.push(`erect cock, which ${he} doesn't have to touch to keep upright.`);
			} else if (eventSlave.dick > 6) {
				t.push(`fat member, which takes ${his} entire hand to shove upright.`);
			} else if (eventSlave.dick > 0) {
				t.push(`poor flaccid member, which ${he} uses a thumb and forefinger to pull upright.`);
			} else if (eventSlave.labia > 0 && canDoVaginal(eventSlave)) {
				t.push(`pussy, whose lips are so generous that ${he}`);
				if (hasBothArms(eventSlave)) {
					t.push(`uses both hands`);
				} else {
					t.push(`uses ${his} hand`);
				}
				t.push(`to peel them apart.`);
			} else if (canDoVaginal(eventSlave)) {
				if (eventSlave.vagina > 1) {
					t.push(`nice big cunt, which ${he} spreads shamelessly for you.`);
				} else if (eventSlave.vagina > 0) {
					t.push(`tight pussy.`);
				} else {
					t.push(`virgin pussy.`);
				}
			} else {
				if (eventSlave.anus > 1) {
					t.push(`experienced anus, which ${he} winks shamelessly for you.`);
				} else if (eventSlave.vagina > 0) {
					t.push(`tight anus.`);
				} else {
					t.push(`virgin anus.`);
				}
			}
		}
		App.Events.addParagraph(node, t);

		t = [];
		t.push(`You often pepper slaves with questions during this inspection; it helps you gauge their mental state, and it's just as important to verbally inspect slaves' minds as it is to visually inspect their parts. You remember with sudden clarity what ${eventSlave.slaveName} was like when you acquired ${him}. ${He} seemed older then.`);
		if (eventSlave.faceImplant > 0) {
			t.push(`${His} face has been improved since then, of course, making ${him} a good deal prettier.`);
		}
		if (eventSlave.ageImplant > 0) {
			t.push(`The age lift ${he} received has certainly hidden some of the most evident signs of ${his} years.`);
		} else if (eventSlave.geneMods.NCS === 1) {
			t.push(`The artificially induced NCS is peeling back the years, as expected.`);
		} else if (eventSlave.visualAge < eventSlave.physicalAge) {
			t.push(`The age reducing creams ${he} uses have certainly hidden some of the most evident signs of ${his} years.`);
		}
		t.push(`Decent care, diet, and exercise have done wonders. But more than all of that trivial physical stuff, the sexual hunger visible in ${his} ${App.Desc.eyesColor(eventSlave)} makes ${him} look like a teenager. You ask ${him} if ${he} remembers what ${he} was like when you enslaved ${him}. ${He} hesitates, wondering how to answer, but decides that honesty is the best policy and ${say}s,`);
		t.push(Spoken(eventSlave, `"I remember it every day, ${Master}. I'm grateful. I didn't think of myself as too pretty, then."`));
		t.push(`${He} giggles.`);
		t.push(Spoken(eventSlave, `"Becoming a fuckslave really improved my self esteem.`));
		if (eventSlave.energy > 95) {
			t.push(Spoken(eventSlave, `I can't imagine going back to having as little sex as I used to have. It would be awful.`));
		} else if (eventSlave.fetish === "cumslut" && eventSlave.fetishStrength > 60) {
			t.push(Spoken(eventSlave, `I can't imagine going back to not sucking dicks all the time. It would be awful.`));
		} else if (eventSlave.fetish === "buttslut" && eventSlave.fetishStrength > 60) {
			t.push(Spoken(eventSlave, `I can't imagine going back to a life of so little assplay. It would be awful.`));
		} else {
			t.push(Spoken(eventSlave, `I didn't have much of a sex life back then either, not compared to now.`));
		}
		t.push(Spoken(eventSlave, `And, ${Master}."`));
		if (eventSlave.belly >= 600000) {
			t.push(`${He} shifts ${his} weight fully onto ${his} ${eventSlave.bellyPreg >= 2000 ? `pregnant` : `gravid`} swell, angling ${his} crotch upwards and showing off everything ${he} has.`);
		} else if (eventSlave.belly >= 100000) {
			t.push(`${He} arches ${his} back prettily and leans even further forward, ${his} ${eventSlave.bellyPreg >= 2000 ? `pregnant` : `gravid`} swell forcing ${his} ${legs} wide, showing off everything ${he} has.`);
		} else {
			t.push(`${He} arches ${his} back prettily and then scoots ${himself} down the couch cushions, taking ${his} ${hands} away from ${his} crotch to spread ${his} ${legs} even wider, showing off everything ${he} has.`);
		}
		t.push(Spoken(eventSlave, `"I didn't really appreciate being fucked by ${V.PC.title !== 0 ? `gorgeous` : `hot`}  ${womenP} then, either. Not like I do now..."`));
		App.Events.addParagraph(node, t);

		App.Events.addResponses(node, [
			new App.Events.Result(`Then ${he} can appreciate a nice struggle fuck`, roughSex, virginityWarning()),
			new App.Events.Result(`Appreciate ${his} body`, gentleSex, virginityWarning()),
			new App.Events.Result(`Put the horny old ${girl} to work`, partyGirl, virginityWarningDouble()),
		]);

		function roughSex() {
			let virginityLoss = 0;
			let inHole = "";

			t = [];
			t.push(`When ${he}`);
			if (canSee(eventSlave)) {
				t.push(`sees`);
			} else {
				t.push(`hears`);
			}
			t.push(`you stand up from behind your desk`);
			if (V.PC.dick === 0) {
				t.push(`desk and pull on a strap-on,`);
			} else {
				t.push(`desk,`);
			}
			t.push(`${he} smiles invitingly at you and relaxes. But as you approach, ${he}`);
			if (canSee(eventSlave)) {
				t.push(`sees a dangerous glint in your eyes.`);
			} else {
				t.push(`hears a menacing cadence to your footstep.`);
			}
			t.push(`One corner of ${his} mouth flaws upward with anticipation, and ${he} plays along.`);
			if (eventSlave.belly < 600000) {
				if (eventSlave.belly >= 100000) {
					t.push(`${He} stumbles face first into the couch, managing to somehow end up with ${his}`);
				} else {
					t.push(`${He} immediately curls up into a ball on the couch, managing to end up with ${his}`);
				}
				if (eventSlave.weight > 30) {
					t.push(`fat ass squashed enticingly against the seat back.`);
				} else if (eventSlave.butt > 5) {
					t.push(`absurd ass squashed enticingly against the seat back.`);
				} else if (eventSlave.butt > 2) {
					t.push(`healthy ass pushed against the seat back.`);
				} else {
					t.push(`trim ass against the seat back.`);
				}
			}
			t.push(`${He} looks up at you with feigned terror and begs,`);
			t.push(Spoken(eventSlave, `"Please, ${Master}, I'm just an innocent little ${girl}. Please don't rape my poor little butt!"`));
			t.push(`You grab ${his} ${ankles} and`);
			if (eventSlave.belly >= 100000 || eventSlave.weight > 160) { // muscles check here!
				t.push(`pull yourself onto ${his}`);
			} else {
				t.push(`haul ${his}`);
			}
			if (eventSlave.weight > 160) {
				t.push(`rippling`);
			} else if (eventSlave.weight > 95) {
				t.push(`thick`);
			} else if (eventSlave.weight > 30) {
				t.push(`chubby`);
			} else if (eventSlave.muscles > 95) {
				t.push(`ripped`);
			} else if (eventSlave.muscles > 30) {
				t.push(`muscled`);
			} else if (eventSlave.weight > 10) {
				t.push(`plush`);
			} else if (eventSlave.muscles > 5) {
				t.push(`toned`);
			} else {
				t.push(`slender`);
			}
			if (eventSlave.belly >= 750000) {
				if (eventSlave.bellyPreg > 0) {
					t.push(`grotesquely pregnant`);
				} else {
					t.push(`grotesquely inflated`);
				}
			} else if (eventSlave.belly >= 600000) {
				if (eventSlave.bellyPreg > 0) {
					t.push(`dangerously pregnant`);
				} else {
					t.push(`dangerously distended`);
				}
			} else if (eventSlave.belly >= 450000) {
				if (eventSlave.bellyPreg > 0) {
					t.push(`immensely pregnant`);
				} else {
					t.push(`immensely distended`);
				}
			} else if (eventSlave.belly >= 150000) {
				if (eventSlave.bellyPreg > 0) {
					t.push(`massively pregnant`);
				} else {
					t.push(`massively distended`);
				}
			} else if (eventSlave.belly >= 120000) {
				if (eventSlave.bellyPreg > 0) {
					t.push(`enormously pregnant`);
				} else {
					t.push(`greatly gravid`);
				}
			} else if (eventSlave.belly >= 10000) {
				if (eventSlave.bellyPreg > 3000) {
					t.push(`heavily pregnant`);
				} else if (eventSlave.bellyImplant > 3000) {
					t.push(`very gravid`);
				} else {
					t.push(`taut`);
				}
			} else if (eventSlave.belly >= 5000) {
				if (eventSlave.bellyPreg > 3000) {
					t.push(`very pregnant`);
				} else if (eventSlave.bellyImplant > 3000) {
					t.push(`gravid`);
				} else {
					t.push(`distended`);
				}
			} else if (eventSlave.belly >= 1500) {
				if (eventSlave.bellyPreg > 0) {
					t.push(`slightly pregnant`);
				} else if (eventSlave.bellyImplant > 0) {
					t.push(`slightly distended`);
				} else {
					t.push(`bloated`);
				}
			}
			t.push(`${eventSlave.skin}`);
			if (eventSlave.belly >= 100000 || eventSlave.weight > 160) {
				t.push(`body,`);
			} else {
				t.push(`body toward you, dragging ${him} across the couch,`);
				if (eventSlave.belly >= 5000) {
					t.push(`and then pin ${him},`);
				} else {
					t.push(`and then half-fall atop ${him},`);
				}
			}
			t.push(`pushing`);
			if (V.PC.dick === 0) {
				t.push(`the strap-on`);
			} else {
				t.push(`your hard cock`);
			}
			if (canDoVaginal(eventSlave) && (!canDoAnal(eventSlave) || eventSlave.anus === 0 || eventSlave.vagina > 0)) {
				t.push(`into the wriggling ${girl}'s`);
				if (eventSlave.vagina === 0) {
					t.push(`virgin`);
					virginityLoss = 1;
				}
				t.push(`pussy.`);
				inHole = "pussy";
			} else {
				t.push(`up the wriggling ${girl}'s`);
				if (eventSlave.anus === 0) {
					t.push(`virgin`);
					virginityLoss = 2;
				}
				t.push(`butt.`);
				inHole = "ass";
			}
			t.push(`${He} keeps begging and whining, but`);
			if (hasBothArms(eventSlave)) {
				t.push(`${he}'s managed to bring a hand under ${himself} and is`);
				if (eventSlave.belly >= 100000 || eventSlave.fetish === "boobs") {
					if (eventSlave.nipples === "fuckable") {
						t.push(`frantically fingering ${his} nipple.`);
					} else if (eventSlave.boobs >= 400) {
						t.push(`enthusiastically kneading ${his} breasts.`);
					} else {
						t.push(`frantically tweaking ${his} nipples.`);
					}
				} else if (canDoVaginal(eventSlave) && inHole === "ass" && eventSlave.dick === 0) {
					t.push(`schlicking away.`);
				} else if (eventSlave.chastityPenis && !canDoVaginal(eventSlave)) {
					t.push(`frantically rubbing ${his} taint.`);
				} else if (canAchieveErection(eventSlave)) {
					t.push(`jacking off to your rhythm.`);
				} else if (eventSlave.dick > 6) {
					t.push(`rubbing as much of ${his} engorged cock as ${he} can reach.`);
				} else if (eventSlave.dick > 0) {
					t.push(`rubbing ${his} submissive little bitch dick.`);
				} else {
					t.push(`massaging ${his} pubic mound, and what's beneath it, to your thrusts.`);
				}
			} else {
				t.push(`there's no stopping ${him} from grinding against you.`);
			}
			if ((inHole === "ass" && eventSlave.skill.anal > 30) || (inHole === "pussy" && eventSlave.skill.vaginal > 30)) {
				t.push(`${He} periodically manages to get`);
			} else {
				t.push(`${He} sometimes accidentally pulls`);
			}
			t.push(`${his}`);
			if (inHole === "ass") {
				if (eventSlave.anus > 2) {
					t.push(`loose`);
				} else if (eventSlave.anus > 1) {
					t.push(`practiced`);
				} else {
					t.push(`tight`);
				}
				t.push(`anus`);
			} else {
				if (eventSlave.vagina > 2) {
					t.push(`loose`);
				} else if (eventSlave.vagina > 1) {
					t.push(`practiced`);
				} else {
					t.push(`tight`);
				}
				t.push(`vagina`);
			}
			t.push(`off your thrusting`);
			if (V.PC.dick === 0) {
				t.push(`phallus,`);
			} else {
				t.push(`penis,`);
			}
			t.push(`but that just gives you the pleasure of forcing it`);
			if (inHole === "ass") {
				t.push(`up ${his} ass`);
			} else {
				t.push(`into ${his} cunt`);
			}
			t.push(`again to the accompaniment of pretended girlish protests. ${He} does ${his} best to maintain the pretense, but soon the best ${he} can come up with is a ridiculous`);
			if (inHole === "ass") {
				t.push(Spoken(eventSlave, `"${Master}, please don't make me come! Not from anal!"`));
			} else {
				t.push(Spoken(eventSlave, `"${Master}, don't cum in me! It's a dangerous day! I'll get pregnant!"`));
			}
			t.push(`${He}'s`);
			if (virginityLoss > 0) {
				t.push(`quite sore from`);
				if (virginityLoss === 2) {
					t.push(`<span class="virginity loss">losing ${his} anal cherry in such a rough way</span>`);
					eventSlave.anus = 1;
				} else {
					t.push(`<span class="virginity loss">${his} first time being so rough</span>`);
					eventSlave.vagina = 1;
				}
			} else {
				t.push(`a little sore,`);
			}
			t.push(`and winces stiffly when ${he}`);
			if (eventSlave.belly < 600000) {
				t.push(`gets up off the couch,`);
			} else {
				t.push(`shoves ${himself} back upright`);
			}
			t.push(`but shakes it off and <span class="devotion inc">gives you a kiss</span> with surprising shyness for a mature slave whose`);
			if (inHole === "ass") {
				t.push(`anus you just fucked.`);
				seX(eventSlave, "anal", V.PC, "penetrative");
				if (canImpreg(eventSlave, V.PC)) {
					knockMeUp(eventSlave, 10, 1, -1);
				}
			} else {
				t.push(`pussy you just dominated.`);
				seX(eventSlave, "vaginal", V.PC, "penetrative");
				if (canImpreg(eventSlave, V.PC)) {
					knockMeUp(eventSlave, 10, 0, -1);
				}
			}
			eventSlave.devotion += 4;
			return t;
		}

		function gentleSex() {
			let inHole = "";

			t = [];
			t.push(`You stand up from behind your`);
			if (V.PC.dick === 0) {
				t.push(`desk, pull on a strap-on,`);
			} else {
				t.push(`desk`);
			}
			t.push(`and approach ${him}, appreciating ${his} gorgeous body,`);
			if (eventSlave.belly >= 600000) {
				t.push(`perfectly laid out across ${his} own bulk`);
			} else if (eventSlave.belly >= 100000) {
				t.push(`glowing with maternity and all stretched out`);
			} else {
				t.push(`all laid out across the couch`);
			}
			t.push(`for your perusal. When you reach ${him}, you hold out a hand for`);
			if (hasBothArms(eventSlave)) {
				t.push(`one of`);
			}
			t.push(`${hers}; ${he} takes it <span class="trust inc">trustingly,</span> ${his} grip`);
			if (eventSlave.muscles > 50) {
				t.push(`powerful and decisive.`);
			} else if (eventSlave.muscles > 30) {
				t.push(`strong and sure.`);
			} else if (eventSlave.weight > 160) {
				t.push(`excessively soft.`);
			} else if (eventSlave.muscles > 5) {
				t.push(`firm and warm.`);
			} else if (eventSlave.muscles < -95) {
				t.push(`almost nonexistent.`);
			} else if (eventSlave.muscles < -30) {
				t.push(`weak and submissive.`);
			} else {
				t.push(`soft and feminine.`);
			}
			t.push(`You pull ${him} up to kneel on the couch cushions, facing a mirrored wall of the room.`);
			if (canSee(eventSlave)) {
				t.push(`${He}'s treated to a view of ${his} own face`);
			} else {
				t.push(`Your treated to the sight of ${his} blind face`);
			}
			t.push(`as you`);
			if (V.PC.belly >= 100000) {
				t.push(`awkwardly`);
			} else {
				t.push(`gently`);
			}
			t.push(`penetrate ${him} from behind,`);
			if (V.PC.belly >= 100000) {
				t.push(`your massive baby bump rubbing erotically`);
			} else if (V.PC.belly >= 30000) {
				t.push(`your baby bump uncomfortably squished`);
			} else if (V.PC.belly >= 1500) {
				t.push(`holding the curve of your pregnancy`);
			} else if (V.PC.boobs >= 300) {
				t.push(`holding your`);
				if (V.PC.boobsImplant / V.PC.boobs >= .60) {
					t.push(`firm`);
				} else {
					t.push(`soft`);
				}
				t.push(`breasts hard`);
			} else if (V.PC.title === 1) {
				t.push(`holding your strong chest hard`);
			} else {
				t.push(`holding your flat chest hard`);
			}
			t.push(`against ${his}`);
			if (eventSlave.weight > 160) {
				t.push(`rippling backfat.`);
			} else if (eventSlave.weight > 130) {
				t.push(`soft backfat.`);
			} else if (eventSlave.weight > 95) {
				t.push(`soft back.`);
			} else if (eventSlave.muscles > 95) {
				t.push(`ripped back.`);
			} else if (eventSlave.muscles > 30) {
				t.push(`strong back.`);
			} else if (eventSlave.muscles > 5) {
				t.push(`toned back.`);
			} else {
				t.push(`warm back.`);
			}
			t.push(`Once you're seated in ${his}`);
			if (canDoVaginal(eventSlave) && (!canDoAnal(eventSlave) || eventSlave.anus === 0 || eventSlave.vagina > 0)) {
				if (eventSlave.vagina === 0) {
					t.push(`virgin`);
				}
				t.push(`womanhood,`);
				inHole = "pussy";
			} else {
				if (eventSlave.anus === 0) {
					t.push(`virgin`);
				}
				t.push(`anus,`);
				inHole = "ass";
			}
			t.push(`you let your hands rove across ${his}`);
			if (eventSlave.weight > 95) {
				t.push(`luscious`);
			}
			t.push(`body, resting your chin on one of ${his} shoulders to`);
			if (canSee(eventSlave)) { // height concerns!
				t.push(`watch the view with ${him}.`);
			} else {
				t.push(`get a better view of ${him}.`);
			}
			t.push(`You run your fingers`);
			if (eventSlave.hLength < 10) {
				t.push(`across ${his} scalp, eliciting a sigh.`);
			} else if (eventSlave.hLength < 50) {
				t.push(`through ${his} short hair and across ${his} scalp, eliciting a sigh.`);
			} else if (eventSlave.hLength < 100) {
				t.push(`all through ${his} long, luxurious hair.`);
			} else {
				t.push(`down the immense length of ${his} hair, bringing it around to cascade down`);
				if (eventSlave.boobs > 300) {
					t.push(`between ${his}`);
					if (eventSlave.belly >= 5000 || eventSlave.weight > 95) {
						t.push(`breasts and around ${his} stomach.`);
					} else {
						t.push(`breasts.`);
					}
				} else if (eventSlave.belly >= 5000 || eventSlave.weight > 95) {
					t.push(`${his} front and around ${his} stomach.`);
				} else {
					t.push(`${his} chest.`);
				}
			}
			t.push(`Your fingers`);
			if (eventSlave.faceShape === "cute" || eventSlave.weight > 97) {
				t.push(`caress ${his} soft cheeks,`);
			} else {
				t.push(`trace ${his} cheekbones,`);
			}
			if (eventSlave.weight > 130) {
				t.push(`the roll of ${his} extra chin,`);
			} else if (eventSlave.faceShape === "masculine") {
				t.push(`the chiseled cut of ${his} jaw,`);
			} else {
				t.push(`the line of ${his} jaw,`);
			}
			t.push(`and the`);
			if (eventSlave.lips > 95) {
				t.push(`dominant feature of ${his} face; ${his} immensely inflated lips.`);
			} else if (eventSlave.lips > 70) {
				t.push(`pouting prominence of ${his} huge lips.`);
			} else if (eventSlave.lips > 40) {
				t.push(`plush softness of ${his} plump lips.`);
			} else if (eventSlave.lips > 20) {
				t.push(`soft outline of ${his} pretty mouth.`);
			} else if (eventSlave.lips > 10) {
				t.push(`soft outline of ${his} cute lips.`);
			} else {
				t.push(`outline of ${his} mouth.`);
			}
			t.push(`Your hands`);
			if (eventSlave.boobs >= 25000) {
				t.push(`grope as much of ${his} unbelievable breasts as you can reach, before diving into the warm depths beneath ${his} immense udders.`);
			} else if (eventSlave.boobs >= 10000) {
				t.push(`struggle to heft ${his} bountiful breasts, and then allow themselves to be enveloped by the copious amount of flesh that makes up ${his} udders.`);
			} else if (eventSlave.boobs >= 2000) {
				t.push(`heft ${his} enormous breasts, and then bury themselves in the warm surroundings of the spaces between ${his} udders and ${his} ribcage.`);
			} else if (eventSlave.boobs >= 1000) {
				t.push(`heft ${his} big breasts measuringly.`);
			} else if (eventSlave.boobs >= 300) {
				t.push(`cup ${his} healthy breasts, feeling their weight.`);
			} else {
				t.push(`massage ${his} flat chest.`);
			}
			if (eventSlave.boobs >= 25000 || V.PC.belly >= 30000) {
				t.push(`It takes some effort but you manage to`);
			} else {
				t.push(`You`);
			}
			if (eventSlave.nipplesPiercing > 0) {
				t.push(`gently tug on ${his} nipple piercings, earning a gentle intake of breath.`);
			} else if (eventSlave.nipples === "huge") {
				t.push(`run a feather-light touch along ${his} long nipples, earning a gasp as they stiffen.`);
			} else {
				t.push(`run a feather-light touch over ${his} nipples, earning a gasp as they`);
				if (eventSlave.nipples !== "fuckable") {
					t.push(`stiffen.`);
				} else {
					t.push(`tighten.`);
				}
			}
			t.push(`You slide further down,`);
			if (eventSlave.bellyPreg >= 750000) {
				t.push(`running your hands across the countless infants that stretch ${his} uterus to its very limit.`);
			} else if (eventSlave.bellyPreg >= 600000) {
				t.push(`running your hands across the sides of ${his} belly, enjoying the bulging infants beneath your palms reacting to your touch.`);
			} else if (eventSlave.bellyPreg >= 450000) {
				t.push(`running your hands across the sides of ${his} belly, marveling at the feelings of life just beneath your palms.`);
			} else if (eventSlave.belly >= 60000) {
				t.push(`massaging the sides of ${his} sensitive midriff as you try to meet your hands around the imposing bump.`);
			} else if (eventSlave.belly >= 10000) {
				if (eventSlave.bellyPreg >= 2000) {
					t.push(`massaging the stretched skin of ${his} pregnancy before teasing ${his} popped navel.`);
				} else if (eventSlave.bellyImplant >= 2000) {
					t.push(`massaging the taut skin of ${his} belly before teasing ${his} popped navel.`);
				} else {
					t.push(`cupping the hugely bloated expanse of ${his} fluid filled middle.`);
				}
			} else if (eventSlave.weight > 130) {
				t.push(`fondling and groping the soft mass of ${his} hugely fat belly.`);
			} else if (eventSlave.weight > 95) {
				t.push(`fondling ${his} fat belly and exploring its soft folds.`);
			} else if (eventSlave.belly >= 1500) {
				if (eventSlave.bellyPreg >= 2000) {
					t.push(`running your hands over the life growing inside ${him}.`);
				} else if (eventSlave.bellyImplant >= 2000) {
					t.push(`running your hands across the curve of ${his} stomach.`);
				} else {
					t.push(`enjoying the way ${his} fluid-filled belly jiggles in your hands.`);
				}
			} else if (eventSlave.muscles > 30) {
				t.push(`fondling ${his} tight abs and flanks.`);
			} else if (eventSlave.weight > 30) {
				t.push(`fondling ${his} plush belly and deep navel.`);
			} else if (eventSlave.bellySag > 0) {
				t.push(`rubbing and teasing ${his} loose stomach.`);
			} else {
				t.push(`rubbing ${his} flat stomach and trim sides.`);
			}
			t.push(`${He}'s so mesmerized by your manual tour of ${his} mature body that it's almost a surprise to ${him} when ${he} tips over into a strong orgasm that obliges you to grip ${him} and hold on while ${he} shakes.`);
			eventSlave.trust += 4;
			if (inHole === "ass") {
				if (eventSlave.anus === 0) {
					t.push(`${He}'ll remember <span class="virginity loss">losing ${his} anal virginity</span> in <span class="devotion inc">such an intimate way.</span>`);
					eventSlave.devotion += 4;
					eventSlave.anus++;
				}
				seX(eventSlave, "anal", V.PC, "penetrative");
				if (canImpreg(eventSlave, V.PC)) {
					knockMeUp(eventSlave, 10, 1, -1);
				}
			} else {
				if (eventSlave.vagina === 0) {
					t.push(`${He}'ll remember <span class="virginity loss">losing ${his} virginity</span> in <span class="devotion inc">such an intimate way.</span>`);
					eventSlave.devotion += 4;
					eventSlave.vagina++;
				}
				seX(eventSlave, "vaginal", V.PC, "penetrative");
				if (canImpreg(eventSlave, V.PC)) {
					knockMeUp(eventSlave, 10, 0, -1);
				}
			}
			return t;
		}

		function partyGirl() {
			// replace slave art
			$(artDiv).empty();
			App.Events.drawEventArt(artDiv, eventSlave, "a t-shirt");

			t = [];
			t.push(`You tell ${him} that you've hired ${him} out for a party hosted by a prominent citizen's son, home from college, and that ${he} should be saving it for that. ${He} promises that ${he} will,`);
			if (eventSlave.belly >= 600000) {
				t.push(`wiggling atop ${his} mass`);
			} else if (eventSlave.belly >= 100000) {
				t.push(`straightening up`);
			} else if (hasBothLegs(eventSlave)) {
				t.push(`relaxing ${his} leg`);
			} else {
				t.push(`bringing ${his} legs together again`);
			}
			t.push(`and clearly already imagining it. You check in on ${him} later, using the video feeds, and are treated to the sight of ${him} wearing a recently-acquired, too-tight t-shirt with an old world college's mascot on it as ${he}`);
			if ((canDoAnal(eventSlave) && eventSlave.anus === 0) || (canDoVaginal(eventSlave) && eventSlave.vagina === 0)) {
				t.push(`<span class="virginity loss">is deflowered</span> by`);
			} else {
				t.push(`rides`);
			}
			t.push(`a dick young enough to be ${his} son's. There's some drunken yelling, which ${he} responds to by blowing kisses and licking ${his}`);
			if (eventSlave.lips > 95) {
				t.push(`absurd`);
			} else if (eventSlave.lips > 70) {
				t.push(`huge`);
			} else if (eventSlave.lips > 40) {
				t.push(`plump`);
			} else if (eventSlave.lips > 20) {
				t.push(`pretty`);
			} else if (eventSlave.lips <= 10) {
				t.push(`thin`);
			}
			t.push(`lips until another cock finds its way into ${his} mouth. ${His} fee for the night is <span class="cash inc">substantial,</span> and the student's father attaches a note to the payment. Apparently ${he} got him too, and he's interested in hiring ${him} for a business meeting next month.`);
			cashX(500, "event", eventSlave);
			if (canDoVaginal(eventSlave)) {
				seX(eventSlave, "vaginal", "publicUse", "penetrative", 5);
				if (eventSlave.vagina === 0) {
					eventSlave.vagina++;
				}
				if (canGetPregnant(eventSlave) && eventSlave.eggType === "human") {
					knockMeUp(eventSlave, 10, 0, -2);
				}
			}
			if (canDoAnal(eventSlave)) {
				seX(eventSlave, "anal", "publicUse", "penetrative", 5);
				if (eventSlave.anus === 0) {
					eventSlave.anus++;
				}
				if (canGetPregnant(eventSlave) && eventSlave.eggType === "human") {
					knockMeUp(eventSlave, 10, 1, -2);
				}
			}
			seX(eventSlave, "oral", "publicUse", "penetrative", 5);
			return t;
		}

		function virginityWarning() {
			if (canDoVaginal(eventSlave) && (eventSlave.vagina === 0)) {
				if (!canDoAnal(eventSlave) || eventSlave.anus === 0) {
					return `This option will take ${his} virginity`;
				}
			} else if (!canDoVaginal(eventSlave) && canDoAnal(eventSlave) && (eventSlave.anus === 0)) {
				return `This option will take ${his} anal virginity`;
			}
			return null;
		}

		function virginityWarningDouble() {
			if (eventSlave.vagina === 0 && canDoVaginal(eventSlave) && eventSlave.anus === 0 && canDoAnal(eventSlave)) {
				return `This option will take both ${his} virginities`;
			} else if (eventSlave.vagina === 0 && canDoVaginal(eventSlave)) {
				return `This option will take ${his} virginity`;
			} else if (eventSlave.anus === 0 && canDoAnal(eventSlave)) {
				return `This option will take ${his} anal virginity`;
			}
			return null;
		}
	}
};