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

	actorPrerequisites() {
		return [
			[ // single event slave
				s => s.fetish !== "mindbroken",
				hasAnyArms,
				hasAnyLegs,
				canTalk,
				s => s.lactation > 0,
				s => s.boobs > 800,
				s => s.nipples !== "fuckable",
				s => s.devotion > 20,
				s => s.trust > 20,
			]
		];
	}

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

		App.Events.drawEventArt(node, eventSlave);

		const r = new SpacedTextAccumulator(node);
		r.push(
			`Heading back towards your office after seeing to a minor matter, you encounter`,
			contextualIntro(PC, eventSlave, true)
		);
		r.addToLast(`, heading for the penthouse milkers.`);
		if (eventSlave.assignment === Job.MILKED) {
			r.push(`Though it's ${his} job to be a human cow, ${he}'s allowed to roam as ${he} pleases when ${he}'s not getting milked, being fed, or otherwise occupied, and ${he} must have been elsewhere.`);
		} else {
			r.push(`${He}'s not assigned to be a human cow full time, since it's ${his} main focus to ${eventSlave.assignment}, but ${he}'s still obliged to visit the milkers regularly.`);
		}
		r.push(`In any case, ${he}'s obviously in desperate need of a milking. ${He}'s hurrying along with ${his}`);
		if (eventSlave.boobs > 4000) {
			r.push(`absurd`);
		} else {
			r.push(`heavy`);
		}
		r.push(`udders cradled in both arms, trying desperately to shield them from the uncomfortable motion of walking.`);
		r.toParagraph();

		if (canSee(eventSlave)) {
			r.push(`Seeing`);
		} else {
			r.push(`Noticing`);
		}
		r.push(`you, ${he} stops short and then winces as ${his} milk-filled breasts slosh to a stop, too.`);
		if (!canTalk(eventSlave)) {
			r.push(`${He} gestures a submissive greeting and then hesitates, catching ${his} lower lip cutely behind ${his} upper teeth. Then ${he} politely asks if you would milk ${him}.`);
		} else {
			r.push(
				Spoken(eventSlave, `"Hi ${Master},"`),
				`${he} ${say}s in greeting, and then hesitates, catching ${his} lower lip cutely behind ${his} upper teeth.`,
				Spoken(eventSlave, `"Um, would you please milk me?"`)
			);
		}
		if (eventSlave.fetish === "boobs") {
			r.push(`The shamelessly breast obsessed cow rarely misses an opportunity to ask for mammary intercourse, or anything remotely like it. Something as intimate as having you tug the ${milkFlavor(eventSlave)}milk from ${his} nipples would definitely qualify.`);
		} else {
			r.push(`${He}'s not exactly a breast fetishist, but milking is nonetheless a deeply important activity for ${him}, emotionally; the neurochemical effects of continual lactation are strong. ${He}'s so devoted to you that ${he} probably considers this a reassuringly intimate act.`);
		}

		r.toParagraph();
		App.Events.addResponses(node, [
			new App.Events.Result(`Treat ${him} right`, right),
			new App.Events.Result(`Treat ${him} like a cow`, cow, virginityWarning())
		]);

		function right() {
			const r = new SpacedTextAccumulator();
			r.push(`You give ${him} a reassuring swat across the rump and tell ${him} you'd be happy to. You head toward the utility area with the milkers, and ${he} follows eagerly behind you,`);
			if (eventSlave.fetish === "boobs") {
				r.push(`very ready to have you touch ${his} favorite part of ${his} body.`);
			} else {
				r.push(`pleased you'd do this for ${him} and very ready to relieve the pressure in ${his} tits.`);
			}
			r.push(`To ${his} surprise, you seat yourself on a stool and draw ${him} onto your lap rather than sitting ${him} at a milking machine. Reaching behind yourself, you give the ${SlaveTitle(eventSlave)} on your lap a broad bucket, and tell ${him} to hold it`);
			if (eventSlave.belly >= 5000) {
				r.push(`under ${his} breasts as best ${he} can, given ${his}`);
				if (eventSlave.bellyPreg >= 3000) {
					r.push(`pregnant`);
				} else {
					r.push(belly);
				}
				r.push(`belly.`);
			} else {
				r.push(`on ${his} lap.`);
			}
			r.push(`Then you reach around ${him} and take ${his}`);
			if (eventSlave.boobs > 6000) {
				r.push(`gargantuan`);
			} else if (eventSlave.boobs > 2000) {
				r.push(`huge`);
			} else {
				r.push(`heavy`);
			}
			r.push(`udders in your hands. ${He} gasps as ${he} realizes exactly how you plan to do this, and adjusts the bucket so it's below both of ${his} nipples at once.`);
			r.toParagraph();

			r.push(`${He} instinctually expects the rhythmic tugging that the milkers usually produce, but what ${he} gets is a methodical massage of ${his} breasts, both at once. They're large enough to be more than a single handful, so you go bit by bit, ensuring that no part of ${his} udders goes untouched. ${His} nipples start to gush ${milkFlavor(eventSlave)}milk without help after a few moments of this, and ${he} groans with relief and satisfaction as ${he} feels ${his} breasts begin to empty and enjoys the sensation of the massage.`);
			if (eventSlave.fetish === "boobs") {
				r.push(`${He} orgasms strongly soon after the first jet of ${milkFlavor(eventSlave)}milk, producing an especially thick squirt.`);
			}
			r.push(`After you're satisfied, you move your hands to ${his} nipples and milk ${him} like a cow, getting the last drops of ${milkFlavor(eventSlave)}milk out of ${him}`);
			if (eventSlave.fetish === "boobs") {
				r.push(`and producing a shuddering series of aftershocks.`);
			} else {
				r.push(`and bringing ${him} to a surprise orgasm.`);
			}
			r.push(`When ${he}'s done, ${he} leans back into you for a moment before setting the milk bucket down, a wordless gesture of considerable trust. It means a lot to ${him} that you would milk ${him} yourself.`);
			eventSlave.trust += 4;
			seX(eventSlave, "mammary", V.PC, "penetrative");
			eventSlave.lactationDuration = 2;
			eventSlave.boobs -= eventSlave.boobsMilk;
			eventSlave.boobsMilk = 0;
			r.toParagraph();
			return r.container();
		}

		function cow() {
			const hands = hasBothArms(eventSlave) ? "hands" : "hand";
			const r = new SpacedTextAccumulator();
			r.push(`You ask ${him} if ${he} really wants to be treated like a cow. ${He} nods, a bit hesitantly, sensing a certain danger but not really knowing what else to do. You lead ${him} to the utility area of the penthouse, where the milkers are, but stop ${him} when ${he} starts for one. Instead, you`);
			if (eventSlave.belly >= 300000) {
				r.push(`pull ${him} over ${his} ${belly} belly with ${his} udders hanging beneath ${his}`);
				if (eventSlave.boobs > 5000) {
					r.addToLast(`, the twin masses of female flesh almost reaching the floor`);
				}
				r.addToLast(`.`);
			} else {
				r.push(`fetch a pair of low stools, make ${him} kneel on one, and put ${his} ${hands} on the other, so ${he}'s`);
				if (hasAllLimbs(eventSlave)) {
					r.push(`on all fours`);
				} else {
					r.push(`bent over`);
				}
				r.push(`with ${his} udders hanging beneath ${him}`);
				if (eventSlave.boobs > 5000) {
					r.addToLast(`, the twin masses of female flesh almost reaching the floor`);
				}
				r.addToLast(`.`);
			}
			r.toParagraph();

			r.push(`You swing a bucket under ${his} nipples and milk ${him} by hand, as though ${he} were a cow. This isn't exactly what ${he} had in mind, but the feeling of your hands on ${his} nipples, tugging the streams of ${milkFlavor(eventSlave)}milk out of ${him} and into the bucket beneath`);
			if (eventSlave.fetish === "boobs") {
				r.push(`brings ${him} very close to orgasm.`);
			} else {
				r.push(`eventually relaxes ${him}.`);
			}
			r.push(`Seeing this, you muse aloud, as though to yourself, that a little farmyard bestiality wouldn't hurt, since there's no one here but you and a dairy cow. Pawing the cow's behind possessively, you finger ${him} aggressively before deciding on`);
			if (canDoVaginal(eventSlave) && V.PC.dick !== 0) {
				r.push(`a little cow pussy. You walk around behind ${him} and fuck ${him} hard enough to shake the drops of ${milkFlavor(eventSlave)}milk still clinging to ${his} sore nipples down and into the bucket below.`);
				r.push(VCheck.Vaginal(eventSlave, 1));
				r.push(`When you're finished, you step away, leaving your cum to run out of ${his} cunt and down ${his} thighs,`);
			} else if (canDoAnal(eventSlave) && V.PC.dick !== 0) {
				r.push(`some cow ass. You walk around behind ${him} and buttfuck ${his} hard enough to shake the drops of ${milkFlavor(eventSlave)}milk still clinging to ${his} sore nipples down and into the bucket below.`);
				r.push(VCheck.Anal(eventSlave, 1));
				r.push(`When you're finished, you step away, leaving your cum to drip out of ${his} gaped asshole,`);
			} else {
				r.push(`a little cow tongue action.`);
				if (V.PC.vagina !== -1) {
					r.push(`You stand up and grind your pussy against the cow's upturned mouth, humping ${his} face hard enough to shake the drops of ${milkFlavor(eventSlave)}milk still clinging to ${his} sore nipples down and into the bucket below.`);
					if (V.PC.dick !== 0) {
						r.push(`You pull away when you're about halfway there, only to shove your cock down ${his} throat instead.`);
					}
					r.push(`When you're finished, you step away, leaving ${his} face thoroughly coated in girlcum`);
					if (V.PC.dick !== 0) {
						r.push(`and ${his} mouth full of your load`);
					}
					r.addToLast(`,`);
				} else { // do nothing
				}
				seX(eventSlave, "oral", V.PC, "penetrative");
			}
			r.push(`and ask ${him} what cows say. "Um, moo?" ${he} responds in a small,`);
			r.push(`<span class="devotion inc">submissive</span> voice.`);
			eventSlave.devotion += 4;
			seX(eventSlave, "mammary", V.PC, "penetrative");
			eventSlave.lactationDuration = 2;
			eventSlave.boobs -= eventSlave.boobsMilk;
			eventSlave.boobsMilk = 0;
			r.toParagraph();
			return r.container();
		}

		function virginityWarning() {
			if (V.PC.dick !== 0) {
				if (canDoVaginal(eventSlave) && (eventSlave.vagina === 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`;
				}
			}
		}
	}
};


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

	actorPrerequisites() {
		return [
			[ // single event slave
				s => s.fetish !== "mindbroken",
				s => s.devotion > 20,
				s => s.fetishKnown === 1,
				s => [Job.PUBLIC, Job.WHORE, Job.GLORYHOLE].includes(s.assignment),
				s => s.fetish === "cumslut" || s.energy > 95, // Add condition !== "hates oral" ?
			]
		];
	}

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

		App.Events.drawEventArt(node, eventSlave);

		let r = [];
		r.push(
			`Late at night,`,
			contextualIntro(V.PC, eventSlave, true),
			`returns to the living area of the penthouse. It's the end of ${his} day as a working girl, and despite being obviously tired, ${he}'s smiling with obvious sexual satiation. Every so often, ${he}'ll get a dreamy expression and lick ${his} lips. ${He} fetishizes cum to the extent that getting to eat a`
		);
		if (V.showInches === 2) {
			r.push(`mile`);
		} else {
			r.push(`kilometer`);
		}
		r.push(`of dick really satisfies ${him}.`);

		App.Events.addParagraph(node, r);
		App.Events.addResponses(node, [
			new App.Events.Result(`${He} must have at least a little room left`, room),
			new App.Events.Result(`Cum in ${his} mouth all night`, night),
			cumSlaves().length >= 5
				? new App.Events.Result(`Give ${him} access to the Dairy's cockmilk`, cockmilk)
				: new App.Events.Result()
		]);

		function room() {
			r = [];
			r.push(`You call ${eventSlave.slaveName} in and ask how full ${he} is. ${He} looks confused for a moment but soon figures out what you mean.`);
			if (!canTalk(eventSlave) && (!hasAnyArms(eventSlave))) {
				r.push(`As a mute amputee ${he} communicates poorly,`);
				if (eventSlave.inflationType === "cum") {
					if (eventSlave.bellyFluid >= 10000) {
						r.push(`but ${he} sticks out ${his} hugely bloated cum-belly and opens wide, ${his} intent clear.`);
					} else if (eventSlave.bellyFluid >= 5000) {
						r.push(`but ${he} wiggles around so ${his} cum-filled belly sloshes audibly before opening wide.`);
					} else {
						r.push(`but ${he} sticks out ${his} cum-swollen belly and opens wide, ${his} intent clear.`);
					}
				} else {
					r.push(`but ${he} does manage to look hungry.`);
				}
			} else if (!canTalk(eventSlave)) {
				if (eventSlave.inflationType === "cum") {
					if (eventSlave.bellyFluid >= 10000) {
						r.push(`${He} strokes ${his} hugely bloated cum-belly, makes a sign for "never," and then makes a sign for "enough."`);
					} else if (eventSlave.bellyFluid >= 5000) {
						r.push(`${He} jiggles ${his} cum-filled belly lewdly, makes a sign for "need," and then makes a sign for "more."`);
					} else {
						r.push(`${He} pats ${his} cum-swollen belly, makes a sign for "much," and then makes a sign for "room."`);
					}
				} else {
					r.push(`${He} gestures at ${his}`);
					if (eventSlave.belly >= 1500) {
						r.push(belly);
					}
					r.push(`stomach, makes a sign for "full," and then makes a sign for "never."`);
				}
			} else {
				if (eventSlave.inflationType === "cum") {
					if (eventSlave.bellyFluid >= 10000) {
						r.push(
							`${He} strokes ${his} hugely bloated cum-belly,`,
							Spoken(eventSlave, `"Oh ${Master}, I've had so much cum already today, but I can't help myself if you're offering me even more. I'll find some room in there,"`)
						);
					} else if (eventSlave.bellyFluid >= 5000) {
						r.push(
							`${He} jiggles ${his} cum-filled belly lewdly,`,
							Spoken(eventSlave, `"Oh ${Master}, there's so much already in me, but I feel so empty still."`)
						);
					} else {
						r.push(
							`${He} pats ${his} cum-swollen stomach,`,
							Spoken(eventSlave, `"Oh ${Master}, this little belly is nothing, I always have room for more,"`)
						);
					}
				} else {
					r.push(Spoken(eventSlave, `"Oh ${Master}, I'll never be full again,"`));
				}
				r.push(`${he} ${say}s`);
				if (eventSlave.lips > 70) {
					r.push(`past ${his} enormous lips`);
				} else if (eventSlave.piercing.lips.weight+eventSlave.piercing.tongue.weight > 2) {
					r.push(`past ${his} mouthful of piercings`);
				}
				r.push(r.pop() + `.`);
			}
			r.push(`${He} comes eagerly over and sucks you off with enthusiasm. As you cum, ${he} orgasms quickly at the`);
			if (canTaste(eventSlave)) {
				r.push(`taste`);
			} else {
				r.push(`feeling`);
			}
			r.push(`of the stuff hitting ${his}`);
			if (V.PC.balls >= 10) {
				r.push(`mouth, even as your load keeps flowing into ${his} gullet`);
				if (V.PC.balls >= 30) {
					r.push(`steadily bloated the poor ${girl}`);
				}
			} else {
				r.push(`mouth.`);
			}
			if (!canTalk(eventSlave)) {
				r.push(`${He}`);
				if (!canTaste(eventSlave)) {
					r.push(`(rather ironically)`);
				}
				r.push(`signs that you taste great.`);
			} else {
				r.push(
					Spoken(eventSlave, `"${Master}, you taste great,"`),
					`${he}`
				);
				if (!canTaste(eventSlave)) {
					r.push(`(rather ironically)`);
				}
				r.push(`purrs.`);
			}
			r.push(`<span class="trust inc">${He} has become more trusting</span> in your willingness to give ${him} what ${he} wants.`);
			eventSlave.trust += 4;
			seX(eventSlave, "oral", V.PC, "penetrative");
			return r;
		}

		function night() {
			r = [];
			r.push(`You've had a busy day, so you've been unusually remiss in fucking your slaves. Naturally, this means you'll be spending the evening wandering around your home using your living sexual appliances. ${eventSlave.slaveName} is instructed to follow you and assist. ${He}'s tired, so`);
			if (!hasAnyArms(eventSlave)) {
				r.push(`you bring`);
				if (isAmputee(eventSlave)) {
					r.push(`${his} limbless torso`);
				} else {
					r.push(`${him}`);
				}
				r.push(`along as a cum receptacle. Whenever you're about to finish in another slave, you pull out and fill ${his} mouth instead.`);
			} else {
				r.push(`you let ${him} tag meekly along, masturbating gently as you use other slaves or just watching lazily. But whenever you're on the point of coming, you switch to ${his} mouth and let ${him} finish you with a few sucks and pumps of ${his} fatigued ${hands}.`);
			}
			r.push(`By the time you put the exhausted ${eventSlave.slaveName} to bed ${he}'s in a haze of cum-induced pleasure. <span class="devotion inc">${He} has become more submissive to you.</span>`);
			eventSlave.devotion += 4;
			seX(eventSlave, "oral", V.PC, "penetrative", 5);
			return r;
		}

		function cockmilk() {
			eventSlave.devotion += 10;
			cashX(random(500, 1000), "event", eventSlave);
			return `You let ${him} know you have a sexual accessory for ${him} to use. This isn't too unusual, so ${he} comes to your office without much anticipation. ${He} doesn't understand why you have an enormous sealed canister of fresh cum on your desk, but when you explain that it's ${hers} to play with on the job, ${he} starts to bounce with excitement. Not all of ${his} customers are interested in cum play, but quite a few are, and ${he} spends almost as much time cleaning up the gorgeous messes that get made as ${he} does making them. It's a valuable and profitable whore who looks forward to ${his} next customer.`;
		}
	}
};

license: mit


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

	actorPrerequisites() {
		return [
			[ // single event slave
				s => s.fetish !== "mindbroken",
				hasAnyArms,
				hasAnyLegs,
				canTalk,
				s => s.assignment !== Job.QUARTER,
				s => s.dick === 0,
				s => s.vagina === -1,
				canDoAnal,
				s => s.energy > 20,
				s => s.devotion >= -50,
				s => s.fetish !== "buttslut" || s.fetishStrength <= 20,
				s => s.nipples !== "fuckable",
			]
		];
	}

	execute(node) {
		const [eventSlave] = this.actors.map(a => getSlave(a));
		const {
			He, he, his, him, himself
		} = getPronouns(eventSlave);
		const {title: Master} = getEnunciation(eventSlave);
		const arms = hasBothArms(eventSlave) ? "arms" : "arm";
		const PC = V.PC;

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

		const r = new SpacedTextAccumulator(node);
		r.push(
			`You're inspecting`,
			contextualIntro(PC, eventSlave, true)
		);
		r.addToLast(`, and ${he}'s an unhappy little null today.`);
		if (eventSlave.devotion > 50) {
			r.push(`${He}'s devoted to you, so that's not the problem;`);
		} else if (eventSlave.devotion > 20) {
			r.push(`${He} accepts ${his} place, so that's not the problem;`);
		} else if (eventSlave.devotion >= -50) {
			r.push(`${He}'s not being especially defiant right now;`);
		} else {
			r.push(`It's not ${his} hatred of you;`);
		}
		r.push(`it's that ${he}'s experiencing extreme sexual frustration. It's not obvious, despite ${his} nakedness. ${He} has no`);
		if (V.seeDicks !== 0) {
			r.push(`cock to get hard`);
		}
		if (V.seeDicks !== 100) {
			if (V.seeDicks !== 0) {
				r.push(`or`);
			}
			r.push(`pussy to get wet`);
		}
		r.push(`to advertise ${his} uncomfortable state. Most slaves have obvious visual cues like that to do their sexual begging for them, but not ${him}. All ${he}'s got to show how pent up ${he} is is the stiffness of ${his} ${eventSlave.nipples} nipples, goosebumps all over ${his} areolae despite the warmth of your office, and a tiny bead of clear fluid at the little hole`);
		if (eventSlave.scrotum > 0) {
			r.push(`above ${his} lonely, abandoned ballsack.`);
		} else if (eventSlave.genes === "XX") {
			r.push(`where ${his} pussy used to be.`);
		} else {
			r.push(`where the base of ${his} penis used to be.`);
		}
		if (["whore", "serve the public", "work in the brothel", "serve in the club"].includes(eventSlave.assignment)) {
			r.push(`It's not like ${his} ass isn't sold to hundreds of different customers, but ${he} apparently isn't enough of a buttslut to get much sexual satisfaction from it.`);
		}
		r.toParagraph();
		r.push(
			`${He} does ${his} very best to get through the inspection without disgrace, hugging ${himself} uncomfortably and shivering. You let ${him} suffer through it, deferring the delicious choice about how to take advantage of ${his} situation until the inspection is done. ${He} breaks before then, though, suddenly falling to ${his} knees and starting to cry.`,
			Spoken(eventSlave, `"Please, ${Master},"`),
			`${he} begs piteously.`,
			Spoken(eventSlave, `Please help me! I can't t-take it! It's s-so f-fucking f-frustrating,"`),
			`${he} moans, trailing off, clasping ${his} hands in supplication as ${he}`);
		if (canSee(eventSlave)) {
			r.push(`looks up at`);
		} else {
			r.push(`faces`);
		}
		r.push(`you desperately.`);

		r.toParagraph();
		App.Events.addResponses(node, [
			new App.Events.Result(`Take pity`, pity, eventSlave.anus === 0 ? `This option will take ${his} anal virginity` : null),
			new App.Events.Result(`Assrape ${him}`, assrape, eventSlave.anus === 0 ? `This option will take ${his} anal virginity` : null),
			new App.Events.Result(`Ignore ${his} pleas`, ignore, eventSlave.anus === 0 ? `This option will take ${his} anal virginity` : null)
		]);

		function pity() {
			const r = new SpacedTextAccumulator();
			r.push(`Deciding to take pity, you stand up`);
			if (V.PC.dick === 0) {
				r.addToLast(`, pull on a strap-on,`);
			}
			r.push(`and approach ${his} crumpled, weeping form. You reach down and take ${his} clasped hands in yours, pulling ${him} gently`);
			if (hasBothLegs(eventSlave)) {
				r.push(`to ${his} feet`);
			} else {
				r.push(`upright`);
			}
			r.push(`and giving ${him} a quick cuddle. You make it just long enough to reassure ${him} that you care for ${him}, but not long enough to frustrate ${him} even further; ${his} extreme horniness is only sharpened by the hug and the way it traps ${his} ${arms} between ${his}`);
			if (eventSlave.boobsImplant/eventSlave.boobs >= .60) {
				r.push(`fake boobs`);
			} else if (eventSlave.boobs > 4000) {
				r.push(`monstrous udders`);
			} else if (eventSlave.boobs > 800) {
				r.push(`big soft breasts`);
			} else if (eventSlave.boobs > 300) {
				r.push(`tits`);
			} else {
				r.push(`flat chest`);
			}
			r.push(`and your`);
			if (V.PC.boobs >= 300) {
				r.push(`bosom.`);
			} else if (V.PC.title === 0) {
				r.push(`chest.`);
			} else {
				r.push(`hard pectorals.`);
			}
			r.push(`${He} sniffles, trying to restrain ${his} hopes. You push ${him} backwards toward the couch, giving ${him} a kiss to really bring ${him} to the height of anticipation before laying ${him} down and sliding your`);
			if (V.PC.dick !== 0) {
				r.push(`cock`);
			} else {
				r.push(`strap-on`);
			}
			if (eventSlave.anus > 1) {
				r.push(`inside ${his} soft asshole.`);
			} else {
				r.push(`up ${his} tight little butt.`);
			}
			if (eventSlave.prostate !== 0) {
				r.push(`The instant`);
				if (V.PC.dick !== 0) {
					r.push(`your hard dickhead`);
				} else {
					r.push(`the hard tip of your phallus`);
				}
				r.push(`presses against ${his} prostate, ${he} orgasms, squirting`);
				if (eventSlave.balls === 0) {
					r.push(`translucent fluid.`);
				} else {
					r.push(`cum.`);
				}
				r.push(`${He} looks like ${he} wants to say something, or maybe even apologize, so you shush ${him} with a gentle hand and pull out, letting the fluid run down`);
				if (eventSlave.scrotum > 0) {
					r.push(`${his} soft scrotum`);
				} else {
					r.push(`the pretty skin between ${his} cumhole and ${his} anus`);
				}
				r.push(`until it glazes ${his} asspussy. You use`);
				if (V.PC.dick !== 0) {
					r.push(`the tip of your cock`);
				} else {
					r.push(`the head of the strap-on`);
				}
				r.push(`to massage the fluid into the hole before penetrating it again with the extra lubrication.`);
			} else {
				r.push(`Without a prostate or a strong anal fetish, ${he}'ll have trouble climaxing to nothing but buttsex, so you make sure to tend to every erogenous zone ${he} has left. You guide one of ${his} hands down so ${he} can rub`);
				if (eventSlave.scrotum > 0) {
					r.push(`${his} scrotum,`);
				} else {
					r.push(`the skin between ${his} legs,`);
				}
				r.push(`and make ${his} stimulate one of ${his} nipples with the other. You`);
				if (eventSlave.nipples !== "fuckable") {
					r.push(`pinch and rub`);
				} else {
					r.push(`finger`);
				}
				r.push(`${his} other nipple, and push two fingers of your other hand into ${his} mouth, making ${him} suck them. So completely stimulated, ${he} finally manages to orgasm.`);
			}
			r.push(`You make love to ${him} until ${he}'s satisfied, and then carry ${him} to the shower to wash ${him} off. Under the warm water, ${he} stays trustingly close to your naked body, without even thinking about it.`);
			eventSlave.trust += 5;
			r.push(VCheck.Anal(eventSlave, 1));
			r.toParagraph();
			return r.container();
		}

		function assrape() {
			const r = new SpacedTextAccumulator();
			r.push(`${He}'s an anal sex toy, and you decide to use ${him} like one. You walk over, reach down, and jerk ${him}`);
			if (hasBothLegs(eventSlave)) {
				r.push(`to ${his} feet.`);
			} else {
				r.push(`off the ground.`);
			}
			r.push(`You don't hurt ${him}, not yet, but the violence of the motion forces a sob out of ${him}. ${He}`);
			if (canSee(eventSlave)) {
				r.push(`sees the open lust in your eyes`);
			} else {
				r.push(`feels the lust lingering about you`);
			}
			r.push(`and is afraid. ${He}'s not wrong to be so; you spin ${him} roughly around and use one arm to pin ${his} upper body mercilessly in place while you use your other hand to`);
			if (eventSlave.anus > 2) {
				r.push(`manhandle your`);
				if (V.PC.dick !== 0) {
					r.push(`cock`);
				} else {
					r.push(`strap-on`);
				}
				r.push(`up ${his} roomy ass. It's disappointingly easy, and ${he} takes it without a struggle, so you reach around ${his} front, down between ${his} legs, and jam a couple of fingers up there, too.`);
			} else if (eventSlave.anus > 1) {
				r.push(`shove your`);
				if (V.PC.dick !== 0) {
					r.push(`cock`);
				} else {
					r.push(`strap-on`);
				}
				r.push(`up ${his} anus. ${He}'s taken hard anal before, but the angle isn't particularly comfortable, you didn't bother with lube, and you begin to rape ${him} vigorously without any warning.`);
			} else {
				r.push(`force your`);
				if (V.PC.dick !== 0) {
					r.push(`cock`);
				} else {
					r.push(`strap-on`);
				}
				r.push(`up ${his} spasming anus. ${He}'d struggle to take it in a position far more comfortable for anal than standing straight up, and you don't even bother to take it slow.`);
			}
			r.push(
				Spoken(eventSlave, `"${Master}, that hurts!"`),
				`${he} screams, crying even harder.`,
				Spoken(eventSlave, `"Ow, it h-hurts! Please take it out, ow, ow,"`),
				`${he} shrieks, and then degenerates into nonverbal caterwauling.`
			);
			if (eventSlave.prostate !== 0) {
				r.push(
					`Then, without any warning, ${he} orgasms. ${He}'s so pent up that the prostate stimulation overpowers the pain. ${He} shudders, gasps, and then moans,`,
					Spoken(eventSlave, `"I'm s-such a whore, ${Master},"`),
					`in such a tone of utter submission and dejection that you climax too. Then you drop ${him}, letting ${his} slide off you, and go back to your work, leaving ${him} to clean ${himself} and the floor.`
				);
				eventSlave.devotion += 5;
			} else {
				r.push(`${He} knows ${he} shouldn't wriggle, that fighting will make it even worse for ${him}, but you assrape ${him} so mercilessly that ${his} body revolts, trying to escape the invading phallus. You have ${his} ${arms} pinioned securely, so all this struggling does is add to the fun. When you're done, you`);
				if (V.PC.dick !== 0) {
					r.push(`fill ${his} insides with your cum and`);
				}
				r.push(
					`drop ${him}, ordering ${him} to clean ${himself} up.`,
					Spoken(eventSlave, `"Y-yes ${Master},"`),
					`${he} sniffles <span class="trust dec">fearfully,</span> and hurries to obey, a little bent from ${his} burning backdoor. Only later does ${he} remember that ${he} still hasn't gotten off.`
				);
				eventSlave.trust -= 5;
			}
			r.push(VCheck.Anal(eventSlave, 1));
			r.toParagraph();
			return r.container();
		}

		function ignore() {
			const r = new SpacedTextAccumulator();
			r.push(`You order ${him} to take the next pose in the inspection series, as though ${he} hadn't broken down at all. There's such understated menace in your`);
			if (canHear(eventSlave)) {
				r.push(`voice`);
			} else {
				r.push(`words`);
			}
			r.push(`that ${he}`);
			if (hasBothLegs(eventSlave)) {
				r.push(`gets right back to ${his} feet`);
			} else {
				r.push(`stands right back up`);
			}
			if (hasAnyArms(eventSlave)) {
				r.addToLast(`, using the back of ${his} ${eventSlave.skin} hand to cuff away ${his} tears`);
			}
			r.addToLast(".");
			r.push(
				Spoken(eventSlave, `"Y-yes, ${Master}," ${he} sniffles, trying to get ${himself} under control, and then shudders.`));
			if (V.dairy > 0 && V.dairyStimulatorsSetting === 2) {
				r.push(`It's never hard to see the exact moment when your slaves remind themselves that you run an industrial Dairy, and that if they displease you, they may find themselves hydrated for milk production from fifty kilogram udders by constant machine rape down their throats and up their asses`);
				if (isFertile(eventSlave) && V.dairyPregSetting > 0) {
					r.push(`as their wombs steadily fill with life`);
				}
				r.addToLast(`.`);
			} else if (V.arcade > 0) {
				r.push(`It's never hard to see the exact moment when your slaves remind themselves that you own an Arcade, and that if they displease you, they may find themselves immured there and condemned to a universe in which the only sensory stimulation is penetration.`);
			} else if (eventSlave.trust < -20) {
				r.push(`${He}'s no stranger to being punished, and obviously wants to avoid another round.`);
			} else {
				r.push(`${He} knows that there are slaves who are treated much more harshly than ${he} is, and doesn't want to become one of them.`);
			}
			r.push(`${He} staggers out of your office after ${his} inspection, doing ${his} best to ignore ${his} condition. Over the coming week, ${he}'s continually tortured by ${his} libido, cruelly entombed as it is in a body which can no longer give it meaningful relief. ${He} manages to keep it together, mostly, and ${his} sex drive diminishes noticeably.`);
			eventSlave.energy -= 5;
			r.toParagraph();
			return r.container();
		}
	}
};


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

	actorPrerequisites() {
		return [
			[ // single event slave
				s => s.fetish !== "mindbroken",
				hasAnyArms,
				hasAnyLegs,
				s => s.rules.release.masturbation === 0,
				s => !App.Utils.hasNonassignmentSex(s),
				s => s.need,
				s => s.devotion >= -20,
				s => s.trust >= -50,
			]
		];
	}

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

		App.Events.drawEventArt(node, eventSlave);

		let r = [];
		r.push(
			`Looking deeply unhappy and shivering occasionally,`,
			contextualIntro(PC, eventSlave, true),
			`comes to see you.`
		);
		if (eventSlave.rules.speech === "restrictive") {
			r.push(`Since ${he} is not allowed to speak, ${he} just enters your office and stands there, unsure what to do.`);
		} else {
			if (!canTalk(eventSlave)) {
				r.push(`${He} tries to communicate something with ${his}`);
				if (hasBothArms(eventSlave)) {
					r.push(`hands,`);
				} else {
					r.push(`hand,`);
				}
				r.push(`but ${he}'s so distracted ${he} can't manage it. ${He} starts to shake a little and gives up.`);
			} else {
				r.push(
					Spoken(eventSlave, `"${Master}, please! Please — I — please, I need to — oh, ${Master}—"`),
					he
				);
				if (SlaveStatsChecker.checkForLisp(eventSlave)) {
					r.push(`lisps frantically.`);
				} else {
					r.push(`babbles.`);
				}
				r.push(`${He} starts to shake a little and lapses into silence.`);
			}
		}
		r.push(`The reason for ${his} distress is obvious:`);
		if (eventSlave.chastityPenis === 1) {
			r.push(`${his} chastity cage is mostly solid, but it has a small hole below where the tip of ${his} dick is held, and this is dripping precum. ${He}'s sexually helpless, and sexually overcharged to the point where ${he}'s dripping more precum than a usual dickgirl might ejaculate normally.`);
		} else if (eventSlave.dick > 0 && eventSlave.hormoneBalance >= 100 && !canAchieveErection(eventSlave)) {
			r.push(`though the hormones are keeping it soft, ${his} member is dripping a stream of precum; droplets of the stuff spatter ${his} legs. One of ${his} spasms brings ${his} dickhead brushing against ${his} thigh, and the stimulation almost brings ${him} to orgasm.`);
		} else if (eventSlave.dick > 0 && eventSlave.balls > 0 && eventSlave.ballType === "sterile" && !canAchieveErection(eventSlave)) {
			r.push(`though ${he}'s chemically castrated, ${his} soft member is dripping a stream of watery precum; droplets of the stuff spatter ${his} legs. One of ${his} spasms brings ${his} dickhead brushing against ${his} thigh, and the stimulation almost brings ${him} to orgasm.`);
		} else if (eventSlave.dick > 0 && eventSlave.balls === 0 && !canAchieveErection(eventSlave)) {
			r.push(`though ${he}'s gelded, ${his} soft member is dripping a stream of watery precum; droplets of the stuff spatter ${his} legs. One of ${his} spasms brings ${his} dickhead brushing against ${his} thigh, and the stimulation almost brings ${him} to orgasm.`);
		} else if (eventSlave.dick > 0 && !canAchieveErection(eventSlave)) {
			r.push(`though ${he}'s far too large to get hard, ${his} engorged member is dripping a stream of watery precum; droplets of the stuff spatter the floor. One of ${his} spasms brushes the length of ${his} cock against ${his} thigh, and the stimulation almost brings ${him} to orgasm.`);
		} else if (eventSlave.dick > 0) {
			if (eventSlave.dick > 4) {
				r.push(`${his} gigantic member juts out painfully, scattering droplets of precum whenever ${he} moves. One of ${his} spasms brings ${his} dickhead brushing up against ${his}`);
			} else if (eventSlave.dick > 2) {
				r.push(`${his} impressive member juts out painfully, scattering droplets of precum whenever ${he} moves. One of ${his} spasms brings ${his} dickhead brushing up against ${his}`);
			} else {
				r.push(`${his} little member juts out painfully, scattering droplets of precum whenever ${he} moves. One of ${his} spasms brings ${his} dickhead brushing up against ${his}`);
			}
			if (eventSlave.belly >= 10000 || eventSlave.weight > 95) {
				r.push(belly);
				if (eventSlave.bellyPreg >= 3000) {
					r.push(`pregnancy,`);
				} else {
					r.push(`belly,`);
				}
			} else {
				r.push(`abdomen,`);
			}
			r.push(`and the stimulation almost brings ${him} to orgasm.`);
		} else if (eventSlave.chastityVagina) {
			r.push(`female juices are leaking out from behind ${his} chastity belt. ${His} cunt desperately wants to be fucked, and is dripping natural lubricant to ease penetration by cocks that cannot reach it through its protective shield.`);
		} else if (eventSlave.clit > 3) {
			r.push(`${his} dick-like clit is painfully engorged and juts out massively. The stimulation of the air on ${his} clit keeps ${him} on the brink of orgasm.`);
		} else if (eventSlave.clit > 0) {
			r.push(`${his} lovely clit is painfully engorged, and ${his} pussy is so wet there are little rivulets of moisture running down ${his} inner thighs. One of ${his} spasms brings ${his} clit brushing accidentally against ${his} hand, and the stimulation almost brings ${him} to orgasm.`);
		} else if (eventSlave.labia > 0) {
			r.push(`${his} lovely pussylips are painfully engorged, and ${his} pussy is so wet there are little rivulets of moisture running down ${his} inner thighs. One of ${his} spasms brings ${his} generous labia brushing against ${his} thighs, and the stimulation almost brings ${him} to orgasm.`);
		} else if (eventSlave.vagina === -1) {
			r.push(`though ${he} has no external genitalia to display it, ${he}'s flushed and uncomfortable, and is unconsciously presenting ${his} ass, since that's ${his} only real avenue to climax.`);
		} else {
			r.push(`${his} pussy is so wet there are little rivulets of moisture running down ${his} inner thighs. One of ${his} spasms brings ${him} enough stimulation that it almost brings ${him} to orgasm.`);
		}
		App.Events.addParagraph(node, r);
		App.Events.addParagraph(node, [`This is the result of not getting off for several days while on the slave diet provided by the nutritional systems. The mild aphrodisiacs included in ${his} food increase ${his} sex drive, and the increased libido can become cumulative if it's not regularly addressed. It looks like ${he} hasn't really gotten ${hers} in a couple of days, and the poor ${girl} can likely think of nothing but that. ${He}'s so horny ${he}'ll do anything for release. However, ${he} did come to you with ${his} trouble rather than masturbating illicitly.`]);

		let choices = [new App.Events.Result(`Touch ${him} enough to get ${him} off`, touch)];
		if (eventSlave.fetishKnown === 1 && eventSlave.fetish !== "none") {
			choices.push(new App.Events.Result(`Reward ${him} for coming to you`, reward, virginityWarning()));
		}
		choices.push(new App.Events.Result(null, null, `Let ${him} get off:`));
		const unknownWeakFetish = (eventSlave.fetishKnown !== 1 || eventSlave.fetishStrength <= 95);
		if (eventSlave.fetish !== "cumslut" || unknownWeakFetish) {
			choices.push(new App.Events.Result(`while ${he} sucks`, sucks));
		}
		if (eventSlave.fetish !== "boobs" || unknownWeakFetish) {
			choices.push(new App.Events.Result(`during nipple play`, nipple));
		}
		if ((eventSlave.fetish !== "pregnancy" || unknownWeakFetish) && canDoVaginal(eventSlave)) {
			choices.push(new App.Events.Result(`during insemination play`, insemination, eventSlave.vagina === 0 ? `This option will take ${his} virginity` : null));
		}
		if ((eventSlave.fetish !== "buttslut" || unknownWeakFetish) && canDoAnal(eventSlave)) {
			choices.push(new App.Events.Result(`while ${he} takes it up the ass`, ass, eventSlave.anus === 0 ? `This option will take ${his} anal virginity` : null));
		}
		if (eventSlave.fetish !== "humiliation" || unknownWeakFetish) {
			choices.push(new App.Events.Result(`in public`, inPublic));
		}
		if (eventSlave.fetish !== "submissive" || unknownWeakFetish) {
			choices.push(new App.Events.Result(`after submitting to you`, submitting, virginityWarning()));
		}
		if (eventSlave.fetish !== "masochist" || unknownWeakFetish) {
			choices.push(new App.Events.Result(`while in pain`, pain, virginityWarning()));
		}
		App.Events.addResponses(node, choices);

		function touch() {
			r = [];
			r.push(`You tell ${him} that ${he} deserves a reward for coming to you. ${He} almost bursts into tears and nods jerkily, unable to do anything else. You brush a finger across ${his} cheek, ${his} ear, ${his} lips; at each touch ${he}`);
			if (!canTalk(eventSlave)) {
				r.push(`breathes in sharply.`);
			} else {
				r.push(`gasps.`);
			}
			r.push(`Moving around behind ${him}, you run a hand down ${his} flank to ${his} hip, and then around to ${his}`);
			if (eventSlave.belly >= 10000 || eventSlave.bellyPreg >= 5000) {
				r.push(`popped`);
			}
			r.push(`navel, and up to cup ${his} breasts. Your run a thumb`);
			if (eventSlave.nipples !== "fuckable") {
				r.push(`over`);
			} else {
				r.push(`into`);
			}
			r.push(`each nipple, almost tipping ${him} over the edge. Your hands move down again,`);
			if (canDoAnal(eventSlave) && canDoVaginal(eventSlave)) {
				r.push(`spreading ${his} buttocks to tease ${his} clenched anus, and then forward across ${his} perineum. From there, you trace ${his} labia and end with a pinch of ${his} clit — and this is enough.`);
			} else if (canDoAnal(eventSlave)) {
				r.push(`spreading ${his} buttocks to tease ${his} clenched anus, and then forward across ${his} perineum — and this is enough.`);
			} else if (canDoVaginal(eventSlave)) {
				r.push(`tracing ${his} labia, and then forward to ${his} clit — and this is enough.`);
			} else {
				r.push(`to give ${his} buttcheeks a rub down before teasing at ${his} chastity — and this is enough.`);
			}
			r.push(`${He} spasms, pitching forward`);
			if (eventSlave.belly >= 300000) {
				r.push(`onto ${his} obscene belly.`);
			} else {
				r.push(`and almost falling.`);
			}
			r.push(`${He} hurries to clean up after ${himself}, sobbing with relief and thanking you; ${his} submissiveness <span class="devotion inc">has increased.</span>`);
			eventSlave.devotion += 4;
			return r;
		}

		function reward() {
			const {heU, hisU, himU, girlU} = getNonlocalPronouns(V.seeDicks).appendSuffix("U");
			const child = eventSlave.pregType > 1 ? "children" : "child";
			r = [];
			r.push(`${He} almost cries with relief when you tell ${him} to`);
			switch (eventSlave.fetish) {
				case "submissive":
					r.push(`lie down on your desk on ${his} side in the fetal position. ${He} clambers up hurriedly and hugs ${his} knees`);
					if (eventSlave.belly >= 10000) {
						r.push(`as best ${he} can with ${his} ${belly}`);
						if (eventSlave.bellyPreg >= 3000) {
							r.push(`pregnancy`);
						}
						r.push(`in the way`);
					}
					r.push(r.pop() + `, spinning ${himself} around on the smooth surface so ${his} rear is pointing right at you. You stand up and pull ${him} over, ${his} ${eventSlave.skin} skin sliding across the cool glass desktop, until ${his}`);
					if (canDoAnal(eventSlave) && canDoVaginal(eventSlave)) {
						r.push(`butt is right at the edge of the desk. You warm yourself up with a pussy fuck before shifting your attention to ${his} neglected asshole.`);
						r.push(VCheck.Both(eventSlave, 3));
						r.push(`When you finish, you`);
					} else if (canDoAnal(eventSlave)) {
						r.push(`butt is right at the edge of the desk.`);
						r.push(VCheck.Anal(eventSlave, 3));
						r.push(`You give it a good fuck and then`);
					} else if (canDoVaginal(eventSlave)) {
						r.push(`pussy is right at the edge of the desk.`);
						r.push(VCheck.Vaginal(eventSlave, 3));
						r.push(`You give it a good fuck and then`);
					} else {
						r.push(`mouth is right at the edge of the desk. You give it a good fuck and then`);
						seX(eventSlave, "oral", PC, "penetrative", 3);
					}
					r.push(`order ${him} brusquely to clean up and come right back. You use ${him} as a nice little desktop`);
					if (PC.dick !== 0) {
						r.push(`cockholster`);
					} else {
						r.push(`sex toy`);
					}
					r.push(`for the rest of the day.`);
					break;
				case "cumslut":
					r.push(`get under your desk and`);
					if (PC.dick !== 0) {
						r.push(`suck a dick`);
						if (PC.vagina !== -1) {
							r.push(`and eat a pussy`);
						}
					} else {
						r.push(`eat pussy`);
					}
					r.push(`while you work.`);
					if (eventSlave.belly >= 120000) {
						r.push(`As ${his} ${belly} belly bumps into you, you sigh and swivel your chair to the side; there is no way ${he}'ll fit under there in ${his} bloated state.`);
					}
					r.push(`${He}'s so horny that ${he}'s barely got`);
					if (PC.dick !== 0) {
						r.push(`your cock into ${his} mouth`);
					} else {
						r.push(`${his} lips and tongue on your cunt`);
					}
					r.push(`before ${he} climaxes spontaneously, shivering and moaning nicely. You keep ${him} down there for a while, doing light work and orgasming occasionally as ${he} gently`);
					if (PC.dick !== 0) {
						r.push(`blows you`);
						if (PC.vagina !== -1) {
							r.push(`and eats you out`);
						}
					} else {
						r.push(`lavishes attention on your wet vagina`);
					}
					r.push(r.pop() + `.`);
					seX(eventSlave, "oral", PC, "penetrative", 3);
					break;
				case "humiliation":
					r.push(`run an unimportant message to a citizen across ${V.arcologies[0].name}. Naked. ${He} blushes with mixed embarrassment and anticipation. ${He}'s so pent up that before taking ten steps out of your penthouse entryway and towards ${his} objective, the open stares ${his} naked, horny body is getting push ${him} over the edge.`);
					if (eventSlave.chastityPenis === 1) {
						r.push(`As ${he}`);
						if (eventSlave.belly >= 10000) {
							r.push(`waddles`);
						} else {
							r.push(`walks`);
						}
						r.push(`along, ${his} chastity cage continues to stream precum. It spatters ${his} legs, making ${his} desperation completely obvious to anyone who looks at ${him}`);
						if (eventSlave.belly >= 150000) {
							r.push(`from behind`);
						}
						r.push(r.pop() + `.`);
					} else if (canAchieveErection(eventSlave)) {
						r.push(`${His} rock hard cock,`);
						if (eventSlave.belly >= 150000) {
							r.push(`forced down by the size of ${his} ${belly}`);
							if (eventSlave.bellyPreg >= 3000) {
								r.push(`pregnancy`);
							} else {
								r.push(`stomach`);
							}
							r.push(`as ${he}`);
							if (eventSlave.belly >= 10000) {
								r.push(`waddles`);
							} else {
								r.push(`walks`);
							}
							r.push(`hurriedly along, jerks suddenly and shoots out a little squirt of cum down the underside of ${his} belly.`);
						} else {
							r.push(`sticking straight forward as ${he}`);
							if (eventSlave.belly >= 10000) {
								r.push(`waddles`);
							} else {
								r.push(`walks`);
							}
							r.push(`hurriedly along, jerks suddenly upward and shoots out a little squirt of cum`);
							if (eventSlave.belly >= 10000) {
								r.push(`across the underside of ${his}`);
								if (eventSlave.bellyPreg >= 3000) {
									r.push(`pregnant`);
								}
								r.push(`belly`);
							}
							r.push(r.pop() + `.`);
						}
						r.push(`As ${he} stumbles forward, each step releases another squirt.`);
					} else if (eventSlave.dick > 0) {
						r.push(His);
						if (eventSlave.dick > 6) {
							r.push(`enormous`);
						}
						r.push(`soft cock, flopping around as ${he}`);
						if (eventSlave.belly >= 10000) {
							r.push(`waddles`);
						} else {
							r.push(`walks`);
						}
						r.push(`hurriedly along, starts to twitch weakly and release little dribbles of cum. As ${he} stumbles forward, each step releases another squirt.`);
					} else if (eventSlave.anus > 2) {
						r.push(`As ${he} stumbles a little with the orgasm, ${his}`);
						if (canDoAnal(eventSlave)) {
							r.push(`naked anus is easily visible from behind ${him}, and its lewd spasms attract attention.`);
						} else {
							r.push(`anus lewdly spasms under ${his} chastity, and ${his} odd motions attract attention.`);
						}
					} else if (canDoVaginal(eventSlave)) {
						r.push(`${He} focuses ${his} attention on ${his} pussy, awkwardly stumbling along as ${he} tries to walk and finger ${himself} at the same time.`);
					} else if (canDoAnal(eventSlave)) {
						r.push(`${He} focuses ${his} attention on ${his} asspussy, awkwardly stumbling along as ${he} tries to walk and play with ${his} own butt at the same time.`);
					} else if (eventSlave.vagina > 0) {
						r.push(`${He} squirts a little femcum down ${his} inner thighs as ${he} stumbles along, trailing the odor of a woman's pleasure behind ${him}.`);
					} else {
						r.push(`${He} focuses ${his} attention on ${his} breasts, awkwardly stumbling along as ${he} tries to walk and`);
						if (eventSlave.nipples !== "fuckable") {
							r.push(`tweak`);
						} else {
							r.push(`finger`);
						}
						r.push(`${his} own nipples at the same time.`);
					}
					r.push(`Passersby point and laugh, thrilling ${him}.`);
					break;
				case "buttslut":
					r.push(`sit on your lap.`);
					if (canDoAnal(eventSlave)) {
						r.push(`${He} climaxes the instant your`);
						if (PC.dick !== 0) {
							r.push(`dickhead`);
						} else {
							r.push(`strap-on`);
						}
						r.push(`touches ${his}`);
						if (eventSlave.anus > 2) {
							r.push(`anal gape,`);
						} else {
							r.push(`pucker,`);
						}
						r.push(`but ${he} knows this is just the start, and ${he} laughs with pleasure as ${his}`);
						if (eventSlave.anus > 2) {
							r.push(`lewd sphincter loosely squeezes`);
						} else {
							r.push(`sphincter tightens against`);
						}
						r.push(`the base of`);
						if (PC.dick !== 0) {
							r.push(`your cock.`);
						} else {
							r.push(`the strap-on.`);
						}
						r.push(`You`);
						if (eventSlave.belly >= 5000) {
							r.push(`spread your legs more and shove the`);
							if (eventSlave.bellyPreg >= 3000) {
								r.push(`pregnant,`);
							}
							r.push(`giggling buttslut down so ${his} ${belly} belly and chest are between your legs, lower your chair a little, and slide yourself back towards your desk to work.`);
						} else {
							r.push(`shove the giggling buttslut down so ${his} chest is resting against the tops of your legs, lower your chair a little, and slide yourself back towards your desk to work.`);
						}
						r.push(`${He} wraps ${his} legs around the back of the chair and hugs your knees with ${his} arms, securing ${himself}`);
						if (eventSlave.belly >= 100000) {
							r.push(`to you as an anal cocksleeve for as long as you feel like keeping`);
							if (PC.dick !== 0) {
								r.push(`your penis lodged up a compliant butthole.`);
							} else {
								r.push(`the happy buttslut nice and full.`);
							}
						} else {
							r.push(`under the desk as an anal cocksleeve for as long as you feel like keeping`);
							if (PC.dick !== 0) {
								r.push(`your penis lodged up a compliant butthole.`);
							} else {
								r.push(`the happy buttslut trapped under there.`);
							}
						}
						r.push(VCheck.Anal(eventSlave, 1));
					} else {
						r.push(`${He} climaxes the instant your`);
						if (PC.dick !== 0) {
							r.push(`dickhead`);
						} else {
							r.push(`strap-on`);
						}
						r.push(`squeezes between ${his}`);
						if (eventSlave.butt < 2) {
							r.push(`flat, tight cheeks,`);
						} else if (eventSlave.butt <= 2) {
							r.push(`cute cheeks,`);
						} else if (eventSlave.butt <= 3) {
							r.push(`round, firm cheeks,`);
						} else if (eventSlave.butt <= 4) {
							r.push(`curvy, enticing buttcheeks,`);
						} else if (eventSlave.butt <= 5) {
							r.push(`huge cheeks,`);
						} else if (eventSlave.butt <= 6) {
							r.push(`massive, alluring cheeks,`);
						} else if (eventSlave.butt <= 7) {
							r.push(`enormous cheeks,`);
						} else if (eventSlave.butt <= 10) {
							r.push(`gigantic, jiggly cheeks,`);
						} else if (eventSlave.butt <= 14) {
							r.push(`inhuman, cushiony butt cheeks,`);
						} else if (eventSlave.butt <= 20) {
							r.push(`couch-like, super jiggly ass cheeks,`);
						}
						r.push(`but ${he} knows this is just the start, and ${he} laughs with pleasure as hug ${his} rear around`);
						if (PC.dick !== 0) {
							r.push(`your cock.`);
						} else {
							r.push(`the strap-on.`);
						}
						r.push(`You`);
						if (eventSlave.belly >= 5000) {
							r.push(`spread your legs more and shove the`);
							if (eventSlave.bellyPreg >= 3000) {
								r.push(`pregnant,`);
							}
							r.push(`giggling buttslut down so ${his} ${belly} belly and chest are between your legs, lower your chair a little, and slide yourself back towards your desk to work.`);
						} else {
							r.push(`shove the giggling buttslut down so ${his} chest is resting against the tops of your legs, lower your chair a little, and slide yourself back towards your desk to work.`);
						}
						r.push(`${He} wraps ${his} legs around the back of the chair and hugs your knees with ${his} arms, securing ${himself}`);
						if (eventSlave.belly >= 100000) {
							r.push(`to you as an a cockbun for as long as you feel like keeping`);
							if (PC.dick !== 0) {
								r.push(`your penis wrapped in a happy buttslut.`);
							} else {
								r.push(`the happy buttslut entertained.`);
							}
						} else {
							r.push(`under the desk as a cockbun for as long as you feel like keeping the happy buttslut trapped under there.`);
						}
						r.push(`under the desk as cockbun for as long as you feel like keeping the happy buttslut trapped under there.`);
					}
					break;
				case "boobs":
					r.push(`lie atop your desk. You don't bother specifying that ${he}'s to lie on ${his} back, since the boob slut jumps up and presents ${his} tits without instructions. You keep working with one hand while you idly tease and`);
					if (eventSlave.nipples !== "fuckable") {
						r.push(`flick`);
					} else {
						r.push(`finger`);
					}
					r.push(`the nearest`);
					if (eventSlave.lactation > 0) {
						r.push(`milky`);
					}
					r.push(`nipple with the other. ${He}'s so horny that ${he} immediately experiences an immodest orgasm, ${his} back arching away from the cool glass desktop as ${he} rides its waves. ${He} giggles a little, and then gasps as you resume playing with ${him}.`);
					seX(eventSlave, "mammary", PC, "penetrative");
					if (eventSlave.lactation > 0) {
						eventSlave.lactationDuration = 2;
						eventSlave.boobs -= eventSlave.boobsMilk;
						eventSlave.boobsMilk = 0;
					} else {
						r.push(induceLactation(eventSlave, 4));
					}
					break;
				case "pregnancy":
					if (!canDoAnal(eventSlave) && !canDoVaginal(eventSlave)) {
						r.push(`join you on the couch. Since`);
						if (eventSlave.vagina >= 0) {
							r.push(`you're saving ${his} pussy,`);
						} else {
							r.push(`this slave ${girl} doesn't have a pussy,`);
						}
						r.push(`and ${his} tight little rosebud is off limits, your options are a bit limited. But you work with what you have, playing with ${his}`);
						if (isFertile(eventSlave)) {
							if (eventSlave.lactation === 0) {
								r.push(`nipples and describing in whispers how pregnancy would make them drip with cream.`);
							} else {
								r.push(`breasts and describing in whispers how big they'll swell if ${he} got pregnant.`);
							}
						} else if (eventSlave.preg > eventSlave.pregData.normalBirth/2) {
							if (eventSlave.lactation === 1) {
								r.push(`nipples and describing in whispers how nice and swollen ${he} is with ${milkFlavor(eventSlave)}milk.`);
							} else {
								r.push(`breasts and describing in whispers how big ${he}'s gotten since ${he} got pregnant.`);
							}
						} else if (eventSlave.preg > 0) {
							if (eventSlave.lactation === 0) {
								r.push(`nipples and describing in whispers how ${his} pregnancy will soon have them drip with cream.`);
							} else {
								r.push(`breasts and describing in whispers how ${his} pregnancy will soon swell them to feed ${his} ${child}.`);
							}
						} else {
							if (eventSlave.lactation === 0) {
								r.push(`nipples and describing in whispers how they'd drip with cream if only ${he} could get pregnant.`);
							} else {
								r.push(`breasts and describing in whispers how big they'd swell if only ${he} could get pregnant.`);
							}
						}
						r.push(`${He} gasps and shudders against you.`);
						seX(eventSlave, "mammary", PC, "penetrative");
					} else if (eventSlave.anus === 0 && eventSlave.vagina <= 0) {
						r.push(`join you on the couch. Since`);
						if (eventSlave.vagina === 0) {
							r.push(`${he}'s a virgin and you haven't elected to introduce ${him} to pussyfucking just yet,`);
						} else {
							r.push(`this slave ${girl} doesn't have a pussy,`);
						}
						r.push(`and ${his} tight little rosebud is fresh and unspoiled, your options are a bit limited. But you work with what you have, playing with ${his}`);
						if (isFertile(eventSlave)) {
							if (eventSlave.lactation === 0) {
								r.push(`nipples and describing in whispers how pregnancy would make them drip with cream.`);
							} else {
								r.push(`breasts and describing in whispers how big they'll swell if ${he} got pregnant.`);
							}
						} else if (eventSlave.preg > eventSlave.pregData.normalBirth/2) {
							if (eventSlave.lactation === 1) {
								r.push(`nipples and describing in whispers how nice and swollen ${he} is with ${milkFlavor(eventSlave)}milk.`);
							} else {
								r.push(`breasts and describing in whispers how big ${he}'s gotten since ${he} got pregnant.`);
							}
						} else if (eventSlave.preg > 0) {
							if (eventSlave.lactation === 0) {
								r.push(`nipples and describing in whispers how ${his} pregnancy will soon have them drip with cream.`);
							} else {
								r.push(`breasts and describing in whispers how ${his} pregnancy will soon swell them to feed ${his} ${child}.`);
							}
						} else {
							if (eventSlave.lactation === 0) {
								r.push(`nipples and describing in whispers how they'd drip with cream if only ${he} could get pregnant.`);
							} else {
								r.push(`breasts and describing in whispers how big they'd swell if only ${he} could get pregnant.`);
							}
						}
						r.push(`${He} gasps and shudders against you.`);
						seX(eventSlave, "mammary", PC, "penetrative");
					} else if (eventSlave.pregKnown === 1) {
						r.push(`join you on the couch.`);
						if (PC.dick !== 0) {
							r.push(`You orgasm inside ${him} promptly, and then tell ${him} you'll be leaving your seed inside ${him} to do its work while you have ${him} again.`);
						} else {
							r.push(`You use a strap-on with a fluid reservoir, and you trigger it promptly, releasing a gush of warm fluid into ${him}. You tell ${him} you'll be leaving it inside ${him} to do its work while you have ${him} again.`);
						}
						r.push(`${He} gasps at the appeal of the idea and grinds ${himself} against you hungrily.`);
						if (!canDoVaginal(eventSlave)) {
							if (eventSlave.mpreg === 1) {
								r.push(`${He}'s already pregnant, but that doesn't disrupt ${his} fantasy of being even more pregnant.`);
							} else {
								r.push(`It's ${his} butt you're fucking, but that doesn't disrupt ${his} fantasy.`);
							}
							r.push(VCheck.Anal(eventSlave, 1));
						} else {
							r.push(`${He}'s already pregnant, but that doesn't disrupt ${his} fantasy of being even more pregnant.`);
							r.push(VCheck.Vaginal(eventSlave, 1));
						}
					} else {
						r.push(`join you on the couch.`);
						if (PC.dick !== 0) {
							r.push(`You orgasm inside ${him} promptly, and then tell ${him} you'll be leaving your seed inside ${him} to do its work while you have ${him} again.`);
						} else {
							r.push(`You use a strap-on with a fluid reservoir, and you trigger it promptly, releasing a gush of warm fluid into ${him}. You tell ${him} you'll be leaving it inside ${him} to do its work while you have ${him} again.`);
						}
						r.push(`${He} gasps at the appeal of the idea and grinds ${himself} against you hungrily.`);
						if (!canDoVaginal(eventSlave)) {
							if (eventSlave.mpreg === 1) {
								r.push(`${He}'s eager to get pregnant and intends to put ${his} asspussy to use.`);
							} else {
								r.push(`It's ${his} butt you're fucking, but that doesn't disrupt ${his} fantasy.`);
							}
							r.push(VCheck.Anal(eventSlave, 1));
						} else {
							r.push(`${He}'s eager to get pregnant and intends to put ${his} pussy to use.`);
							r.push(VCheck.Vaginal(eventSlave, 1));
						}
					}
					break;
				case "dom":
					r.push(`wait a moment, because you know what ${he} needs. ${He}'s mystified, but steels ${himself} and waits. Another slave appears for an inspection, and ${heU} discovers that ${heU}'s to be inspected with ${eventSlave.slaveName}'s`);
					if (canPenetrate(eventSlave)) {
						r.push(`cock up ${hisU} asshole.`);
					} else {
						r.push(`fingers assfucking ${himU}.`);
					}
					r.push(`The dominant ${eventSlave.slaveName} climaxes immediately to ${his} use of the poor slave, rubbing`);
					if (eventSlave.belly >= 5000) {
						r.push(`${his} ${belly}`);
						if (eventSlave.bellyPreg >= 3000) {
							r.push(`pregnant`);
						}
						r.push(`belly`);
					} else {
						r.push(`${himself}`);
					}
					r.push(`all over the other slave's buttocks while ${he} continues banging ${hisU} backdoor.`);
					seX(eventSlave, "penetrative", "slaves", "anal");
					break;
				case "sadist":
					r.push(`wait a moment, because you know what ${he} needs. ${He}'s mystified, but steels ${himself} and waits. Another slave appears for a trivial punishment, and ${heU} discovers that ${heU}'s to be punished by ${eventSlave.slaveName}'s`);
					if (canPenetrate(eventSlave)) {
						r.push(`dick,`);
					} else {
						r.push(`fingers,`);
					}
					r.push(`forced up ${hisU} anus. The dominant ${eventSlave.slaveName} climaxes quickly, but quickly recovers and keeps assraping the poor ${girlU}.`);
					seX(eventSlave, "penetrative", "slaves", "anal");
					break;
				case "masochist":
					r.push(`get ${his} ass up on your desk and`);
					if (eventSlave.belly >= 300000) {
						r.push(`lie off the side atop ${his} ${belly} stomach.`);
					} else if (eventSlave.belly < 1500) {
						r.push(`lie on ${his} side.`);
					} else {
						r.push(`lie face-down.`);
					}
					r.push(`${He}`);
					if (eventSlave.belly >= 10000) {
						r.push(`struggles to heft ${his}`);
						if (eventSlave.bellyPreg >= 3000) {
							r.push(`gravid`);
						}
						r.push(`body`);
					} else {
						r.push(`clambers`);
					}
					r.push(`up, and you let ${his} lie there for a while, tortured by anticipation and arousal, before giving ${his} nearest buttock a harsh open-handed slap. The shock and pain send ${him} over the edge immediately, and ${he} grinds forward into the desk involuntarily; the feeling of the cool desk against ${his}`);
					if (eventSlave.dick > 0) {
						r.push(`dickhead`);
					} else if (eventSlave.vagina === -1) {
						r.push(`crotch`);
					} else {
						r.push(`mons`);
					}
					r.push(`slams ${him} into a second climax, and ${he} sobs with overstimulation. You keep ${him} there for a good long while, using ${him} as a desktop toy that makes interesting noises when you hit it.`);
					break;
			}
			if (eventSlave.fetishStrength > 95) {
				r.push(`Since ${he}'s totally sure of what gets ${him} off, this proof you know it too makes ${him} <span class="trust inc">trust you.</span>`);
				eventSlave.trust += 5;
			} else {
				r.push(`Since ${he}'s developing ${his} kinks, this reinforcement of ${his} sexual identity <span class="fetish inc">advances ${his} fetish.</span>`);
				eventSlave.fetishStrength += 4;
			}
			return r;
		}

		function sucks() {
			r = [];
			r.push(`You tell ${him} that ${he} deserves a way to get off for coming to tell you rather than breaking the rules. From now on, ${he} can come to you and ask to`);
			if (PC.dick === 0) {
				r.push(`perform cunnilingus on you`);
			} else {
				r.push(`blow you`);
				if (PC.vagina !== -1) {
					r.push(`and eat you out`);
				}
			}
			r.push(r.pop() + `, and masturbate while ${he} does. ${He} nods through ${his} tears and hurriedly gets to ${his} knees, gagging in ${his} clumsy eagerness, crying a little with relief as ${he} masturbates furiously`);
			if (PC.vagina !== -1 && PC.dick !== 0) {
				r.push(`and does ${his} best to simultaneously please both a cock and a cunt with only one mouth`);
			}
			r.push(r.pop() + `. ${He} doesn't even pause after ${his} first orgasm; ${his} acceptance of sexual slavery <span class="devotion inc">has increased.</span>`);
			eventSlave.devotion += 4;
			seX(eventSlave, "oral", PC, "penetrative", 5);
			const givingHead = PC.dick === 0 ? `giving head` : `sucking cock`;
			if (eventSlave.fetish === "cumslut" && eventSlave.fetishKnown === 1) {
				eventSlave.fetishStrength += 4;
				r.push(`<span class="fetish inc">${His} enjoyment of ${givingHead} has increased.</span>`);
			} else if (random(1, 100) > 50) {
				eventSlave.fetishStrength = 65;
				eventSlave.fetish = "cumslut";
				eventSlave.fetishKnown = 1;
				r.push(`Before ${he} realizes what's happening, <span class="fetish gain">${he}'s getting aroused at the thought of ${givingHead}.</span>`);
			}
			return r;
		}

		function nipple() {
			r = [];
			r.push(`You tell ${him} that ${he} deserves a way to get off for coming to tell you rather than breaking the rules. From now on, ${he} can come to you and offer you ${his} breasts; ${he} will be allowed to masturbate while you do. ${He} nods through ${his} tears and hurriedly presents ${his} chest, crying a little with relief as ${he} feels`);
			if (eventSlave.nipples !== "fuckable") {
				r.push(`you nip a nipple with your teeth.`);
			} else if (PC.dick !== 0) {
				r.push(`your dick slip into a nipple.`);
			} else {
				r.push(`your tongue penetrate into ${his} nipple.`);
			}
			r.push(`${He} masturbates furiously, not even pausing after ${his} first orgasm; ${his} acceptance of sexual slavery <span class="devotion inc">has increased.</span>`);
			eventSlave.devotion += 4;
			seX(eventSlave, "mammary", PC, "penetrative", 5);
			if (eventSlave.fetish === "boobs" && eventSlave.fetishKnown === 1) {
				eventSlave.fetishStrength += 4;
				r.push(`<span class="fetish inc">${His} enjoyment of breast play has increased.</span>`);
			} else if (random(1, 100) > 50) {
				eventSlave.fetishStrength = 65;
				eventSlave.fetish = "boobs";
				eventSlave.fetishKnown = 1;
				r.push(`Before ${he} realizes what's happening, <span class="fetish gain">${he}'s getting aroused at every brush against ${his} breasts.</span>`);
			}
			return r;
		}

		function insemination() {
			r = [];
			r.push(`You tell ${him} that ${he} deserves a way to get off for coming to tell you rather than breaking the rules. For the rest of the week, ${he} can come to you and offer you ${his}`);
			if (eventSlave.vagina > 3) {
				r.push(`hopelessly gaped pussy;`);
			} else if (eventSlave.vagina > 2) {
				r.push(`loose pussy;`);
			} else if (eventSlave.vagina > 1) {
				r.push(`nice pussy;`);
			} else {
				r.push(`tight pussy;`);
			}
			r.push(`${he} will be allowed to masturbate while you fill ${him} with cum. ${He} nods through ${his} tears and`);
			if (eventSlave.belly >= 10000) {
				r.push(`struggles to get`);
			} else {
				r.push(`hurriedly gets`);
			}
			r.push(`up on your desk, lying on ${his} side and using one hand to spread ${his} buttocks apart while the other is poised to touch ${himself}. ${He} starts crying a little with relief as ${he} feels you slowly insert`);
			if (PC.dick === 0) {
				r.push(`a spurting strap-on`);
			} else {
				r.push(`your cock`);
			}
			r.push(`into ${his} spasming cunt. ${He} masturbates furiously, not even pausing after ${his} first orgasm; ${his} acceptance of sexual slavery <span class="devotion inc">has increased.</span>`);
			r.push(VCheck.Vaginal(eventSlave, 5));
			eventSlave.devotion += 4;
			if (eventSlave.fetish === "pregnancy" && eventSlave.fetishKnown === 1) {
				eventSlave.fetishStrength += 4;
				r.push(`<span class="fetish inc">${His} enjoyment of pregnancy play has increased.</span>`);
			} else if (random(1, 100) > 50) {
				eventSlave.fetishStrength = 65;
				eventSlave.fetish = "pregnancy";
				eventSlave.fetishKnown = 1;
				r.push(`Before ${he} realizes what's happening, <span class="fetish gain">${he}'s getting aroused at the thought of getting pregnant.</span>`);
			}
			return r;
		}

		function ass() {
			r = [];
			r.push(`You tell ${him} that ${he} deserves a way to get off for coming to tell you rather than breaking the rules. For the rest of the week, ${he} can come to you and offer you ${his}`);
			if (eventSlave.anus > 3) {
				r.push(`hopelessly gaped rectum;`);
			} else if (eventSlave.anus > 2) {
				r.push(`big slit of an asspussy;`);
			} else if (eventSlave.anus > 1) {
				r.push(`nice asspussy;`);
			} else {
				r.push(`tight asshole;`);
			}
			r.push(`${he} will be allowed to masturbate while you buttfuck ${him}. ${He} nods through ${his} tears and`);
			if (eventSlave.belly >= 10000) {
				r.push(`struggles to get`);
			} else {
				r.push(`hurriedly gets`);
			}
			r.push(`up on your desk, lying on ${his} side and using one hand to spread ${his} buttocks apart while the other is poised to touch ${himself}. ${He} starts crying a little with relief as ${he} feels you slowly insert`);
			if (PC.dick === 0) {
				r.push(`a strap-on`);
			} else {
				r.push(`your cock`);
			}
			r.push(`into ${his} spasming rectum. ${He} masturbates furiously, not even pausing after ${his} first orgasm; ${his} acceptance of sexual slavery <span class="devotion inc">has increased.</span>`);
			r.push(VCheck.Anal(eventSlave, 5));
			eventSlave.devotion += 4;
			if (eventSlave.fetish === "buttslut" && eventSlave.fetishKnown === 1) {
				eventSlave.fetishStrength += 4;
				r.push(`<span class="fetish inc">${His} enjoyment of anal has increased.</span>`);
			} else if (random(1, 100) > 50) {
				eventSlave.fetishStrength = 65;
				eventSlave.fetish = "buttslut";
				eventSlave.fetishKnown = 1;
				r.push(`Before ${he} realizes what's happening, <span class="fetish gain">${he}'s getting aroused at the thought of anal sex.</span>`);
			}
			return r;
		}

		function inPublic() {
			r = [];
			r.push(`You tell ${him} that ${he} deserves a way to get off for coming to tell you rather than breaking the rules. For the rest of the week, ${he} can masturbate in public, sitting with ${his} legs spread for as much exposure as possible. ${He} nods through ${his} tears and sprints out of your office, dripping as ${he} goes. ${He} throws ${himself} to the ground outside, to the considerable amusement of passersby, spreading ${his} legs painfully wide. ${He} masturbates furiously, not even pausing after ${his} first orgasm; ${his} acceptance of sexual slavery <span class="devotion inc">has increased.</span>`);
			eventSlave.devotion += 4;
			if (eventSlave.fetish === "humiliation" && eventSlave.fetishKnown === 1) {
				eventSlave.fetishStrength += 4;
				r.push(`<span class="fetish inc">${His} enjoyment of humiliation has increased.</span>`);
			} else if (random(1, 100) > 50) {
				eventSlave.fetishStrength = 65;
				eventSlave.fetish = "humiliation";
				eventSlave.fetishKnown = 1;
				r.push(`Before ${he} realizes what's happening, <span class="fetish gain">${he}'s starting to long for humiliation.</span>`);
			}
			return r;
		}

		function submitting() {
			r = [];
			r.push(`You tell ${him} that ${he} deserves a way to get off for coming to tell you rather than breaking the rules.`);
			if (canDoVaginal(eventSlave)) {
				r.push(`For the rest of the week, ${he} can come to you and offer you ${his}`);
				if (eventSlave.vagina > 3) {
					r.push(`hopelessly loose pussy;`);
				} else if (eventSlave.vagina > 2) {
					r.push(`big slit of a pussy;`);
				} else if (eventSlave.vagina > 1) {
					r.push(`nice pussy;`);
				} else {
					r.push(`tight pussy;`);
				}
				r.push(`${he} will be allowed to masturbate after, but only after, you are finished with ${him}. ${He} nods through ${his} tears and`);
				if (eventSlave.belly >= 10000) {
					r.push(`struggles to get`);
				} else {
					r.push(`hurriedly gets`);
				}
				r.push(`up on your desk, lying on ${his} side and using one hand to spread ${his} nether lips apart while the other is poised to touch ${himself}. ${He} starts crying a little with relief as ${he} feels you slowly insert`);
				if (PC.dick === 0) {
					r.push(`a strap-on`);
				} else {
					r.push(`your cock`);
				}
				r.push(`into ${his} spasming vagina. You are not gentle, and despite the stimulation ${he} does not orgasm by the time you`);
				if (PC.dick === 0) {
					r.push(`climax to the vibrations of the strap-on, and the pleasure of fucking a bitch.`);
				} else {
					r.push(`blow your load in ${his} cunt.`);
				}
				r.push(`${He}'s so eager to get off ${he} doesn't bother to move, and just`);
				if (eventSlave.belly >= 1500) {
					r.push(`snakes a hand down to fondle ${himself}.`);
				} else {
					r.push(`rolls onto ${his} face to hump ${himself} against ${his} hand, against the desk.`);
				}
				if (PC.dick === 0) {
					r.push(`After the momentary pause of your climax, you`);
					if (PC.vagina !== -1) {
						r.push(`use a little manual stimulation of your pussy to force yourself to total hardness again and`);
					}
					r.push(`resume thrusting;`);
				} else {
					r.push(`Your cum leaks out of ${his} used cunt and onto ${his} working hand;`);
				}
				r.push(`${his} acceptance of sexual slavery <span class="devotion inc">has increased.</span>`);
				r.push(VCheck.Vaginal(eventSlave, 5));
			} else if (canDoAnal(eventSlave)) {
				r.push(`For the rest of the week, ${he} can come to you and offer you ${his}`);
				if (eventSlave.anus > 3) {
					r.push(`hopelessly gaped rectum;`);
				} else if (eventSlave.anus > 2) {
					r.push(`big slit of an asspussy;`);
				} else if (eventSlave.anus > 1) {
					r.push(`nice asspussy;`);
				} else {
					r.push(`tight asshole;`);
				}
				r.push(`${he} will be allowed to masturbate after, but only after, you are finished with ${him}. ${He} nods through ${his} tears and`);
				if (eventSlave.belly >= 10000) {
					r.push(`struggles to get`);
				} else {
					r.push(`hurriedly gets`);
				}
				r.push(`up on your desk, lying on ${his} side and using one hand to spread ${his} buttocks apart while the other is poised to touch ${himself}. ${He} starts crying a little with relief as ${he} feels you slowly insert`);
				if (PC.dick === 0) {
					r.push(`a strap-on`);
				} else {
					r.push(`your cock`);
				}
				r.push(`into ${his} spasming rectum. You are not gentle, and despite the anal stimulation ${he} does not orgasm by the time you`);
				if (PC.dick === 0) {
					r.push(`climax to the vibrations of the strap-on, and the pleasure of buttfucking a bitch.`);
				} else {
					r.push(`blow your load in ${his} ass.`);
				}
				r.push(`${He}'s so eager to get off ${he} doesn't bother to move, and just`);
				if (eventSlave.belly >= 1500) {
					r.push(`snakes a hand down to fondle ${himself}.`);
				} else {
					r.push(`rolls onto ${his} face to hump ${himself} against ${his} hand, against the desk.`);
				}
				if (PC.dick === 0) {
					r.push(`After the momentary pause of your climax, you`);
					if (PC.vagina !== -1) {
						r.push(`use a little manual stimulation of your pussy to force yourself to total hardness again and`);
					}
					r.push(`resume thrusting;`);
				} else {
					r.push(`Your cum leaks out of ${his} used backdoor and onto ${his} working hand;`);
				}
				r.push(`${his} acceptance of sexual slavery <span class="devotion inc">has increased.</span>`);
				r.push(VCheck.Anal(eventSlave, 5));
			} else {
				r.push(`For the rest of the week, ${he} can come to you and politely ask to`);
				if (PC.dick !== 0) {
					r.push(`suck you off;`);
				} else {
					r.push(`eat you out;`);
				}
				r.push(`${he} will be allowed to masturbate after, but only after, you are satisfied. ${He} nods through ${his} tears and`);
				if (eventSlave.belly >= 300000) {
					r.push(`leans over ${his} ${belly} stomach,`);
				} else {
					if (eventSlave.belly >= 10000) {
						r.push(`struggles`);
					} else {
						r.push(`hurriedly gets`);
					}
					r.push(`to ${his} knees,`);
				}
				r.push(`where ${he} brings ${his} face to your`);
				if (PC.dick !== 0) {
					r.push(`erect cock`);
				} else {
					r.push(`moist pussy`);
				}
				r.push(`and ${his} hand to ${his} crotch. ${He} starts crying a little with relief as ${he} feels you slowly`);
				if (PC.dick === 0) {
					r.push(`push your slit against`);
				} else {
					r.push(`insert your cock into`);
				}
				r.push(`${his} mouth. You are not gentle, and by the time you`);
				if (PC.dick !== 0) {
					r.push(`blow your load down ${his} throat,`);
				} else {
					r.push(`splash ${his} face with your girlcum,`);
				}
				r.push(`${he} still hasn't reached ${his} climax. ${He}'s so eager to get off ${he} doesn't bother to move, and just humps ${himself} against ${his} hand, against`);
				if (eventSlave.belly >= 300000) {
					r.push(`${his} belly.`);
				} else {
					r.push(`your leg.`);
				}
				if (PC.dick === 0) {
					r.push(`After the momentary pause of your climax, you`);
					if (PC.vagina !== -1) {
						r.push(`use a little manual stimulation of your pussy to force yourself to total hardness again and`);
					}
					r.push(`resume thrusting;`);
				} else {
					r.push(`After the momentary pause of your climax, you pull ${his} face back to your crotch for a second round;`);
				}
				r.push(`${his} acceptance of sexual slavery <span class="devotion inc">has increased.</span>`);
				seX(eventSlave, "oral", PC, "penetrative", 5);
			}
			eventSlave.devotion += 4;
			if (eventSlave.fetish === "submissive" && eventSlave.fetishKnown === 1) {
				eventSlave.fetishStrength += 4;
				r.push(`<span class="fetish inc">${His} enjoyment of submission has increased.</span>`);
			} else if (random(1, 100) > 50) {
				eventSlave.fetishStrength = 65;
				eventSlave.fetish = "submissive";
				eventSlave.fetishKnown = 1;
				r.push(`Before ${he} realizes what's happening, <span class="fetish gain">${he}'s getting aroused at the thought of submission.</span>`);
			}
			return r;
		}

		function pain() {
			r = [];
			r.push(`You tell ${him} that ${he} deserves a way to get off for coming to tell you rather than breaking the rules. For the rest of the week, ${he} can come to you and masturbate: but you will abuse ${him} while ${he} does. ${He} starts to cry in fear, but`);
			if (eventSlave.belly >= 10000) {
				r.push(`struggles to get`);
			} else {
				r.push(`hurriedly gets`);
			}
			r.push(`up on your desk anyway. You swat ${his} thighs apart so ${he} can get a hand down there. ${He} hesitates desperately before touching ${himself}, knowing that as soon as ${he} does the pain will start, but ${his} horniness wins out. You aim a vicious flick at ${his}`);
			if (eventSlave.nipples === "huge") {
				r.push(`absurd nipples`);
			} else if (eventSlave.nipples !== "tiny") {
				r.push(`big nipples`);
			} else {
				r.push(`nipples`);
			}
			r.push(`and then take a crop out of your desk, flogging ${his}`);
			if ((eventSlave.boobsImplant/eventSlave.boobs) >= 0.60) {
				r.push(`fake`);
			} else if (eventSlave.boobs > 1000) {
				r.push(`jiggling`);
			} else {
				r.push(`firm`);
			}
			r.push(`breasts without mercy. ${He} finally orgasms and flees, falling over ${his} own feet in ${his} desperation; ${his} acceptance of sexual slavery <span class="devotion inc">has increased.</span>`);
			eventSlave.devotion += 4;
			if (eventSlave.fetish === "masochist" && eventSlave.fetishKnown === 1) {
				eventSlave.fetishStrength += 4;
				r.push(`<span class="fetish inc">${His} enjoyment of pain has increased.</span>`);
			} else if (random(1, 100) > 50) {
				eventSlave.fetishStrength = 65;
				eventSlave.fetish = "masochist";
				eventSlave.fetishKnown = 1;
				r.push(`Before ${he} realizes what's happening, <span class="fetish gain">${he}'s getting aroused at the thought of ${his} ${getWrittenTitle(eventSlave)} beating ${him}.</span>`);
			}
			return r;
		}

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


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

	actorPrerequisites() {
		return [
			[ // single event slave
				s => s.fetish !== "mindbroken",
				hasAnyArms,
				hasAnyLegs,
				canTalk,
				s => s.devotion > 50,
				s => s.anus > 0,
				s => s.vagina !== 0,
				s => s.trust > 20,
				s => s.assignment !== Job.QUARTER,
			]
		];
	}

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

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

		const r = new SpacedTextAccumulator(node);
		r.push(
			`You make a habit of circulating through the arcology's public spaces when you can, to maintain your reputation for hands-on control and to keep a personal eye on the atmosphere. Citizens high and low avail themselves of the opportunity to greet you, introduce themselves, or bring small matters to your attention. Today, one of your prominent citizens brought up an unusually important subject, so you performed a walk and talk with him, ending out on a balcony. He goes away satisfied, but you spent longer than you intended away from the penthouse. As such, you missed the start of`,
			contextualIntro(PC, eventSlave, true)
		);
		r.addToLast(`'s weekly inspection. ${He} finds you out on the balcony, directed to you by ${V.assistant.name},`);
		if (eventSlave.weight > 160) {
			r.push(`breathing hard from the effort of hauling ${his} fat ass`);
		} else if (eventSlave.belly >= 100000) {
			r.push(`utterly exhausted from waddling with ${his} very heavy ${belly} belly`);
		} else if (eventSlave.boobs >= 10000) {
			r.push(`breathing hard from the effort of hauling ${his} gigantic tits in ${his} rush`);
		} else if (eventSlave.belly >= 10000) {
			r.push(`breathing hard from the effort of hauling ${his} heavy belly in ${his} rush`);
		} else if (eventSlave.muscles > 5) {
			r.push(`breathing easily despite ${his} rush`);
		} else if (eventSlave.muscles < -95) {
			r.push(`barely conscious from the effort of coming`);
		} else if (eventSlave.muscles < -30) {
			r.push(`utterly exhausted from ${his} rush`);
		} else {
			r.push(`panting a little from ${his} rush`);
		}
		r.push(`down to meet you. ${He}'s nude, having stripped in your office, and meets your gaze`);
		if (eventSlave.trust > 60) {
			r.push(`confidently, trusting`);
		} else {
			r.push(`somewhat hesitantly, not sure`);
		}
		r.push(`that ${he} did the right thing by coming to you rather than waiting.`);

		r.toParagraph();
		App.Events.addResponses(node, [
			new App.Events.Result(`Inspect ${him} normally`, normally),
			new App.Events.Result(`Inspect ${him} and then leave ${him} out for the public to use`, leave),
			(eventSlave.fetishKnown === 1 && eventSlave.fetish !== "none")
				? new App.Events.Result(`Fuck ${him} like ${he} likes it`, like)
				: new App.Events.Result()
		]);

		function normally() {
			const r = new SpacedTextAccumulator();
			r.push(`You pay no attention to the unusual circumstances, and conduct a normal inspection of ${his} naked body. ${He} understands that ${he} did the right thing, and trusts you a bit more. Since you're paying no attention to the unusual location for the inspection, ${he} does ${his} very best to perform ${his} role normally, too. ${He}`);
			if (eventSlave.boobs > 2000) {
				r.push(`lifts ${his} enormous boobs one by one,`);
			} else if (eventSlave.boobs > 1000) {
				r.push(`hefts ${his} heavy breasts one by one,`);
			} else if (eventSlave.boobs > 300) {
				r.push(`squeezes ${his} boobs one by one,`);
			} else {
				if (eventSlave.nipples !== "fuckable") {
					r.push(`pinches`);
				} else {
					r.push(`fingers`);
				}
				r.push(`the nipples capping ${his} flat tits,`);
			}
			if (eventSlave.skill.oral > 60) {
				r.push(`opens ${his} mouth and wiggles ${his} expert tongue,`);
			} else if (eventSlave.lips > 40) {
				r.push(`opens ${his} mouth and licks ${his} puffy lips,`);
			} else {
				r.push(`opens ${his} mouth and sticks out ${his} tongue,`);
			}
			if (eventSlave.balls > 1) {
				r.push(`pulls ${his} ballsack gently downward to display the outline of ${his} testes,`);
			} else if (eventSlave.dick > 0) {
				r.push(`lifts ${his} dick by its tip and turns sideways to display it,`);
			} else if (eventSlave.labia > 0) {
				r.push(`carefully spreads ${his} generous petals to show off ${his} pussy,`);
			} else if (eventSlave.clit > 0) {
				r.push(`eases ${his} clitoral hood back to completely reveal ${his} massive clitoris,`);
			} else if (eventSlave.vagina === -1) {
				r.push(`lets you see the featureless, mannequin place between ${his} legs,`);
			} else {
				r.push(`spreads ${his} pussy,`);
			}
			r.push(`turns around and`);
			if (eventSlave.butt > 5) {
				r.push(`pulls ${his} massive buttocks apart to reveal`);
			} else if (eventSlave.butt > 2) {
				r.push(`spreads ${his} healthy buttocks to reveal`);
			} else {
				r.push(`bends over to display`);
			}
			r.push(`${his}`);
			if (eventSlave.anus > 2) {
				r.push(`whorish rear pussy,`);
			} else if (eventSlave.anus > 1) {
				r.push(`inviting backdoor,`);
			} else {
				r.push(`tight anus,`);
			}
			r.push(`winks it once, and then straightens, done.`);
			eventSlave.trust += 5;
			r.toParagraph();
			return r.container();
		}

		function leave() {
			const r = new SpacedTextAccumulator();
			r.push(`You pay no attention to the unusual circumstances, and conduct a normal inspection of ${his} naked body. When done, you rise from your seat and produce a short strap. ${His} breath quickens as you bind ${his}`);
			if (hasBothArms(eventSlave)) {
				r.push(`hands and pull them`);
			} else if (hasAnyArms(eventSlave)) {
				r.push(`hand and pulls it`);
			} else {
				r.push(`body and pulls ${him}`);
			}
			r.push(`down towards a bench; you secure ${him} so ${he} can crouch or kneel, naked and vulnerable. As you leave, ${he} understands, and glances around the balcony. Fixing on the nearest citizen paying attention to ${him}, ${he} looks him straight in the eye`);
			switch (eventSlave.fetish) {
				case "submissive":
					r.push(`and begs him submissively to do whatever he wants to ${him}.`);
					break;
				case "cumslut":
					r.push(`and begs him to come over and feed ${him} his`);
					if (canTaste(eventSlave)) {
						r.push(`delicious`);
					} else {
						r.push(`warm`);
					}
					r.push(`cum.`);
					break;
				case "humiliation":
					r.push(`as ${he} begins to wordlessly writhe and blush with the <span class="devotion inc">excitement</span> of this humiliating situation.`);
					eventSlave.devotion += 2;
					break;
				case "buttslut":
					r.push(`and then turns as best ${he} can to offer him ${his} backdoor, begging him to stuff his cock up ${his} ass.`);
					break;
				case "boobs":
					r.push(`and swings ${his} torso from side to side, bouncing ${his} breasts around lewdly.`);
					break;
				case "pregnancy":
					r.push(`and begs him to come over and shoot his seed into ${him}.`);
					break;
				case "dom":
				case "sadist":
					r.push(`and challenges him to come over and fuck ${him}.`);
					break;
				case "masochist":
					r.push(`and, applying a bit of reverse psychology, begins to beg him not to spank ${his} helpless behind.`);
					break;
				default:
					r.push(`and implores him to fuck ${him}.`);
			}
			r.push(`You detail another slave to fetch ${him} after the public loses interest. A couple of hours later, you catch sight of ${him} limping towards the showers, thoroughly disheveled. ${His} ${eventSlave.skin} face and chest are spattered with cum, ${he}'s got`);
			if (eventSlave.dick > 0) {
				r.push(`${his} own ejaculate`);
			} else {
				r.push(`pussyjuice`);
			}
			r.push(`all over ${his} thighs, and ${his} well-fucked butthole is dripping semen. ${He}'s certainly worked hard <span class="reputation inc">improving your reputation.</span>`);
			repX(1250, "event", eventSlave);
			seX(eventSlave, "mammary", "public", "penetrative", 10);
			seX(eventSlave, "oral", "public", "penetrative", 10);
			r.push(VCheck.Anal(eventSlave, 10));
			if (canDoVaginal(eventSlave)) {
				r.push(VCheck.Vaginal(eventSlave, 10));
				seX(eventSlave, "vaginal", "public", "penetrative", 10);
			}
			r.toParagraph();
			return r.container();
		}

		function like() {
			let didVaginal = false;
			let didAnal = false;
			const r = new SpacedTextAccumulator();
			r.push(`${He}'s completely unsurprised when you crook a finger at ${him} after a brief inspection, and skips over, looking excited. It's not in vain.`);
			if (eventSlave.fetish === "submissive") {
				r.push(`You shove ${him} across the back of a balcony bench and take ${him} as ${he} moans with pleasure, happy you're using ${his} body. ${He} pays no attention to the mildly appreciative stares from passersby.`);
				repX(250, "event", eventSlave);
				if (canDoVaginal(eventSlave)) {
					didVaginal = true;
				} else {
					didAnal = true;
				}
			} else if (eventSlave.fetish === "cumslut") {
				r.push(`You push ${him} down to ${his} knees and`);
				if (V.PC.dick !== 0) {
					r.push(`shove your cock down ${his} throat`);
					if (V.PC.vagina !== -1) {
						r.push(`so far ${he} can almost reach your pussy with the tip of ${his} tongue`);
					}
				} else {
					r.push(`ride ${his} face`);
				}
				r.addToLast(`. ${He} pays no attention to the <span class="reputation inc">mildly appreciative</span> stares from passersby, moaning into you as ${he} pleasures your`);
				if (V.PC.dick !== 0) {
					r.push(`dick.`);
				} else {
					r.push(`cunt.`);
				}
				repX(250, "event", eventSlave);
				seX(eventSlave, "oral", V.PC, "penetrative");
			} else if (eventSlave.fetish === "humiliation") {
				r.push(`You sit down on a balcony bench and pull ${him} down to sit on your`);
				if (V.PC.dick === 0) {
					r.push(`strap-on,`);
				} else {
					r.push(`cock,`);
				}
				r.push(`and then pull ${his} legs as wide as they'll go as you fuck ${him}, displaying everything to the whole balcony`);
				if (eventSlave.belly >= 120000) {
					r.addToLast(`; ${his} _belly stomach hangs so low that it blocks the view, however`);
				} else {
					if (V.PC.vagina !== -1) {
						if (V.PC.dick !== 0) {
							r.addToLast(`: incidentally including your own pussy, which slides up and down as you piston the cock above it in and out of ${him}`);
						}
					}
				}
				r.addToLast(`. ${He} <span class="devotion inc">laps up</span> the <span class="reputation inc">openly aroused</span> stares from ${his} growing audience.`);
				repX(500, "event", eventSlave);
				eventSlave.devotion += 3;
				if (canDoVaginal(eventSlave)) {
					didVaginal = true;
				} else {
					didAnal = true;
				}
			} else if (eventSlave.fetish === "buttslut") {
				r.push(`You shove ${him} across the back of a balcony bench and fuck ${his} ass as ${he} moans with pleasure, happy you're using ${his} favorite hole. ${He} pays no attention to the mildly appreciative stares from passersby, too focused on ${his} well-filled rectum to care.`);
				repX(250, "event", eventSlave);
				didAnal = true;
			} else if (eventSlave.fetish === "boobs") {
				r.push(`You push ${him} down to ${his} knees and`);
				if (V.PC.dick !== 0) {
					r.push(`press your cock between ${his} tits.`);
				} else {
					r.push(`ride ${his} breasts.`);
				}
				r.push(`${He} pays no attention to the <span class="reputation inc">mildly appreciative</span> stares from passersby, enjoying the feeling of your`);
				if (V.PC.dick !== 0) {
					r.push(`dick pounding ${his}`);
					if (eventSlave.nipples !== "fuckable") {
						r.push(`cleavage.`);
					} else {
						r.push(`breast.`);
					}
				} else {
					r.push(`cunt rubbing against one of ${his}`);
					if (eventSlave.nipples !== "fuckable") {
						r.push(`hard`);
					} else {
						r.push(`engorged`);
					}
					r.push(`nipples.`);
				}
				repX(250, "event", eventSlave);
				seX(eventSlave, "mammary", V.PC, "penetrative");
			} else if (eventSlave.fetish === "pregnancy") {
				r.push(`You shove ${him} across the back of a balcony bench and whisper in ${his} ear that you're going to breed ${him} in public. ${He} pays no attention to the mildly appreciative stares from passersby, too aroused by the idea to care.`);
				if (!canDoVaginal(eventSlave)) {
					r.push(`It's ${his} butt you're fucking, but ${he} doesn't let that disrupt ${his} fantasy.`);
				} else if (V.PC.dick === 0) {
					r.push(`The phallus in ${him} is a strap-on, but ${he} doesn't let that disrupt ${his} fantasy.`);
				} else if (eventSlave.pregKnown === 1) {
					r.push(`${He}'s already knocked up, but ${he} doesn't let that disrupt ${his} fantasy of getting even more pregnant.`);
				} else if (!isFertile(eventSlave)) {
					r.push(`${He}'s not fertile, but ${he} doesn't let that disrupt ${his} fantasy.`);
				}
				repX(250, "event", eventSlave);
				if (canDoVaginal(eventSlave)) {
					didVaginal = true;
				} else {
					didAnal = true;
				}
			} else if (eventSlave.fetish === "dom") {
				r.push(`You shove ${him} back against a wall and seat your`);
				if (V.PC.dick !== 0) {
					r.push(`cock`);
				} else {
					r.push(`strap-on`);
				}
				r.push(`inside ${him} while ${he} wraps ${his} legs around you, taking a good grip on ${his} butt, and hauling ${him} off the wall again, holding ${him} in midair`);
				if (eventSlave.belly >= 600000) {
					r.push(`(though ${his} ${belly} belly is resting on the ground)`);
				}
				r.addToLast(`. ${He} pays no attention to the <span class="reputation inc">mildly appreciative</span> stares from passersby, concentrating on fucking as hard as ${he} possibly can.`);
				repX(250, "event", eventSlave);
				if (canDoVaginal(eventSlave)) {
					didVaginal = true;
				} else {
					didAnal = true;
				}
			} else if (eventSlave.fetish === "sadist") {
				r.push(`You sit down on a balcony bench and pull ${him} down to sit on your`);
				if (V.PC.dick === 0) {
					r.push(`strap-on,`);
				} else {
					r.push(`cock,`);
				}
				r.push(`and then hand ${him} a tablet after pulling up a feed from a nearby cellblock. ${He} ignores the mildly appreciative stares from passersby as you fuck ${him}, enthralled by the scenes of abuse and rape on the tablet in ${his} trembling hands.`);
				repX(250, "event", eventSlave);
				if (canDoVaginal(eventSlave)) {
					didVaginal = true;
				} else {
					didAnal = true;
				}
			} else if (eventSlave.fetish === "masochist") {
				r.push(`You spin ${him} around cruelly, jerking ${him} back against your torso and shoving your`);
				if (V.PC.dick === 0) {
					r.push(`strap-on`);
				} else {
					r.push(`cock`);
				}
				r.push(`up ${his} butthole without bending ${him} over first. ${He} ignores the mildly appreciative stares from passersby as you fuck ${him}, too lost in the delicious agony of a harsh standing anal fuck to care.`);
				repX(250, "event", eventSlave);
				didAnal = true;
			} else {
				r.push(`You appeal to ${his} uncomplicated tastes by letting ${him} ride you as you sit on a balcony bench, your hands idly`);
				if (eventSlave.nipples !== "fuckable") {
					r.push(`playing with`);
				} else {
					r.push(`fingering`);
				}
				r.push(`${his} nipples as ${he} rocks ${his} hips against you. ${He} pays no attention to the mildly appreciative stares from passersby, concentrating on your face, smiling as you react to ${his} efforts.`);
				repX(250, "event", eventSlave);
				if (canDoVaginal(eventSlave)) {
					didVaginal = true;
				} else {
					didAnal = true;
				}
			}
			if (didAnal) {
				r.push(VCheck.Anal(eventSlave, 1));
			} else if (didVaginal) {
				r.push(VCheck.Vaginal(eventSlave, 1));
			}
			if (eventSlave.fetishStrength === 100 || eventSlave.fetish === "none") {
				r.push(`Since ${he}'s totally sure of what gets ${him} off, this public display that you know it too makes ${him} <span class="trust inc">trust you.</span>`);
				eventSlave.trust += 5;
			} else {
				r.push(`Since ${he}'s developing ${his} kinks, this public display of ${his} sexual identity <span class="lightcoral">advances ${his} fetish.</span>`);
				eventSlave.fetishStrength += 4;
			}
			r.toParagraph();
			return r.container();
		}
	}
};