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 !== 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 !== 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} ${eventSlave.dick > 0 ? "cockhead" : "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} ${eventSlave.dick > 0 ? "cockhead" : "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 to you <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 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 === 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 !== 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 !== 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 === 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 === 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();
		}
	}
};

repo_name: Ducati/fc

license: mit


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

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

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

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

		const r = new SpacedTextAccumulator(node);
		r.push(
			`Your slaves are required to take very good care of themselves, and your best ones spend several hours a day maintaining every ${inch} of their bodies. You notice`,
			contextualIntro(V.PC, eventSlave, true),
			`standing naked in front of a mirror outside the bathroom, carefully applying moisturizing lotion to every ${inch} of ${his} ${eventSlave.skin} skin. ${He}'s clearly feeling well, and ${his}`
		);
		if (eventSlave.face > 95) {
			r.push(`gorgeous`);
		} else if (eventSlave.face <= 40) {
			r.push(`attractive`);
		} else if (eventSlave.face <= 10) {
			r.push(`pretty`);
		} else if (eventSlave.face < -10) {
			r.push(`plain`);
		} else {
			r.push(`homely`);
		}
		r.push(`face bears a smile of simple enjoyment as ${he} basks in the warmth of the slave quarters, calibrated to make nudity comfortable. ${He} straightens ${his}`);
		if (eventSlave.height >= 185) {
			r.push(`wonderfully long`);
		} else if (eventSlave.height >= 170) {
			r.push(`long`);
		} else if (eventSlave.height >= 160) {
			r.push(`nice`);
		} else if (eventSlave.height >= 150) {
			r.push(`short`);
		} else {
			r.push(`short little`);
		}
		r.push(`legs and bends at the waist,`);
		if (eventSlave.belly >= 600000) {
			r.push(`${his} ${belly} belly coming to rest on the floor as ${he} spreads ${his} legs around it,`);
		} else if (eventSlave.belly >= 400000) {
			r.push(`${his} ${belly} belly forcing ${him} to really spread ${his} legs,`);
		} else if (eventSlave.belly >= 100000) {
			r.push(`${his} ${belly} belly forcing ${his} legs wide as ${he} goes,`);
		} else if (eventSlave.belly >= 10000) {
			r.push(`${his}`);
			if (eventSlave.bellyPreg >= 3000) {
				r.push(`hugely gravid`);
			} else if (eventSlave.bellyImplant >= 3000) {
				r.push(`${belly} protruding`);
			} else {
				r.push(`heavy,`);
				r.push(`${eventSlave.inflationType}-filled`);
			}
			r.push(`belly parting ${his} legs as ${he} goes,`);
		} else if (eventSlave.belly >= 5000) {
			r.push(`${his}`);
			if (eventSlave.bellyPreg >= 3000) {
				r.push(`gravid`);
			} else if (eventSlave.bellyImplant >= 3000) {
				r.push(`protruding`);
			} else {
				r.push(`sloshing`);
			}
			r.push(`belly parting ${his} legs as ${he} goes,`);
		}
		r.push(`moaning at the pleasurable feeling of a good stretch. ${He} sets the lotion bottle on the ground next to ${him}, dispenses a little, and carefully rubs it into the tops of ${his} feet. When ${he} reaches ${his} ankles, still bent almost double, ${he}`);
		if (canSee(eventSlave)) {
			r.push(`catches sight of you watching ${him} from between ${his} legs.`);
		} else if (canHear(eventSlave)) {
			r.push(`picks up the sound of your breathing.`);
		} else {
			r.push(`realizes that you're there watching ${him}.`);
		}
		r.push(`${He} smiles at you and keeps working.`);
		r.toParagraph();
		r.push(`${He} shifts ${his}`);
		if (eventSlave.hips > 2) {
			r.push(`broodmother`);
		} else if (eventSlave.hips > 1) {
			r.push(`broad`);
		} else if (eventSlave.hips >= 0) {
			r.push(`curvy`);
		} else {
			r.push(`trim`);
		}
		r.push(`hips innocently and moves up to ${his} lower legs. But then, as ${he} slowly massages the lotion into ${his}`);
		if (eventSlave.muscles > 30) {
			r.push(`muscled`);
		} else if (eventSlave.weight > 10) {
			r.push(`plush`);
		} else {
			r.push(`cute`);
		}
		r.push(`calves, ${he} arches ${his} back and cocks ${his} hips a little. This causes`);
		if (eventSlave.chastityPenis === 1) {
			r.push(`the bottom of ${his} chastity cage to become visible, a reminder that`);
			if (canDoAnal(eventSlave) && canDoVaginal(eventSlave)) {
				r.push(`only ${his} holes are to be used.`);
			} else if (canDoAnal(eventSlave) && !canDoVaginal(eventSlave)) {
				r.push(`${he}'s a butthole slave.`);
			} else if (canDoVaginal(eventSlave)) {
				r.push(`the focus is ${his} pussy, not dick.`);
			} else {
				r.push(`with ${his} ass in chastity, ${he}'s forbidden from release.`);
			}
		} else if (eventSlave.belly >= 100000) {
			r.push(`the underside of ${his}`);
			if (eventSlave.bellyPreg >= 3000) {
				r.push(`pregnancy`);
			} else {
				r.push(`belly`);
			}
			r.push(`and`);
			if (canDoAnal(eventSlave) && canDoVaginal(eventSlave)) {
				r.push(`${his} flushed, glistening pussy and`);
				if (eventSlave.anus === 0) {
					r.push(`virgin`);
				} else {
					r.push(`hungry`);
				}
				r.push(`anus to become visible.`);
			} else if (canDoVaginal(eventSlave)) {
				r.push(`${his} flushed pussy to become visible, glistening with moisture.`);
			} else {
				r.push(`${his}`);
				if (eventSlave.anus === 0) {
					r.push(`virgin`);
				} else {
					r.push(`hungry`);
				}
				r.push(`anus to become visible.`);
			}
		} else if (eventSlave.belly >= 5000) {
			r.push(`the underside of ${his}`);
			if (eventSlave.bellyPreg >= 3000) {
				r.push(`pregnancy`);
			} else {
				r.push(`belly`);
			}
			r.push(`and`);
			if (canDoAnal(eventSlave) && canDoVaginal(eventSlave)) {
				r.push(`${his} flushed, glistening pussy and`);
				if (eventSlave.anus === 0) {
					r.push(`virgin`);
				} else {
					r.push(`hungry`);
				}
				r.push(`anus to become visible, before ${he} hugs ${his} thighs together, sighing as ${he} flexes them a little to put gentle pressure on ${his} womanhood.`);
			} else if (canDoVaginal(eventSlave)) {
				r.push(`${his} flushed pussy to appear for a moment, glistening with moisture, before ${he} hugs ${his} thighs together, sighing as ${he} flexes them a little to put gentle pressure on ${his} womanhood.`);
			} else {
				r.push(`${his}`);
				if (eventSlave.anus === 0) {
					r.push(`virgin`);
				} else {
					r.push(`hungry`);
				}
				r.push(`anus to become visible.`);
			}
		} else if (!canAchieveErection(eventSlave) && eventSlave.dick > 10) {
			r.push(`${his} giant, soft dick to swing back between ${his} legs; ${he} hugs ${his} thighs together again and traps it back behind ${him}, enjoying the sensation along its length.`);
		} else if (!canAchieveErection(eventSlave) && eventSlave.dick > 0) {
			r.push(`${his} thighs to come tightly together, hiding ${his} soft dick.`);
		} else if (eventSlave.dick > 0) {
			r.push(`${his} stiff dick to swing back between ${his} legs; ${he} hugs ${his} thighs together again and traps it back behind ${him}, showing off how hard ${he} is.`);
		} else if (canDoAnal(eventSlave) && canDoVaginal(eventSlave)) {
			r.push(`${his} flushed, glistening pussy and`);
			if (eventSlave.anus === 0) {
				r.push(`virgin`);
			} else {
				r.push(`hungry`);
			}
			r.push(`anus to become visible, before ${he} hugs ${his} thighs together, sighing as ${he} flexes them a little to put gentle pressure on ${his} womanhood.`);
		} else if (canDoVaginal(eventSlave)) {
			r.push(`${his} flushed pussy to appear for a moment, glistening with moisture, before ${he} hugs ${his} thighs together, sighing as ${he} flexes them a little to put gentle pressure on ${his} womanhood.`);
		} else {
			r.push(`it to become apparent that ${his} hungry asspussy serves as ${his} only genitalia.`);
		}
		r.push(`With ${his} back arched and ${his} thighs together ${his}`);
		if (eventSlave.butt > 5) {
			r.push(`massive buttocks part a little, showing a hint of`);
		} else if (eventSlave.butt > 2) {
			r.push(`big buttocks part, revealing`);
		} else {
			r.push(`cute buttocks are spread wide apart, displaying`);
		}
		r.push(`${his}`);
		if (eventSlave.anus > 2) {
			r.push(`lewd anal slit.`);
		} else if (eventSlave.anus === 2) {
			r.push(`big butthole.`);
		} else {
			r.push(`tight anus.`);
		}
		if (canSee(eventSlave)) {
			if (eventSlave.belly >= 50000) {
				r.push(`${His} ${belly} stomach is far too large to see around, but given ${his} held pose, ${he}'s waiting to see what you do.`);
			} else if (eventSlave.belly >= 5000) {
				r.push(`${He} peeks around the edge of ${his} belly, checking your crotch to see if you are watching.`);
			} else {
				r.push(`${He} peeks between ${his} legs again, checking to see if you're watching.`);
			}
		} else if (canHear(eventSlave)) {
			r.push(`${His} ears perk up, listening to see if you are still there.`);
		} else {
			r.push(`${He} stays as still as ${he} can, clearly waiting for you to make a move.`);
		}

		r.toParagraph();
		App.Events.addResponses(node, [
			new App.Events.Result(`Apply lotion liberally`, liberally),
			canDoAnal(eventSlave)
				? new App.Events.Result(`Fist ${his} ass`, ass)
				: new App.Events.Result(),
			(eventSlave.vagina > 0 && canDoVaginal(eventSlave))
				? new App.Events.Result(`Fist ${his} pussy`, pussy)
				: new App.Events.Result(),
		]);

		function liberally() {
			const r = new SpacedTextAccumulator();
			r.push(`You reach down to take ${his} hands, and pull ${him} up to stand in front of you before crushing ${him} in a frankly sexual embrace. Taking charge of the lotion, you apply it to your hands and start with ${his} face. ${He} submits to your close attention, even closing ${his} eyes so you can get ${his} eyelids, only a slight quickening of breath betraying ${his} intensity of feeling at having you do this. You take your time, which turns into exquisite sexual torture when you finally reach ${his}`);
			if (eventSlave.boobs > 2000) {
				r.push(`incredible breasts, which stand out so far in front of ${him} that you have to reach around their mass rather inelegantly.`);
			} else if (eventSlave.boobs > 800) {
				r.push(`heavy breasts.`);
			} else {
				r.push(`lovely chest.`);
			}
			r.push(`When your warm, moist hands`);
			if (eventSlave.nipples !== "fuckable") {
				r.push(`rub`);
			} else {
				r.push(`slip into`);
			}
			r.push(`${his}`);
			if (eventSlave.lactation > 0) {
				r.push(`milky`);
			}
			r.push(`nipples, ${he} cannot suppress a moan. You take pity, take ${his} hands, guide them to the lotion bottle, and coat them generously. Then, you place ${his} hands in yours and move them to between ${his} legs, manipulating them like a music teacher guiding a pupil's hands on an instrument, guiding ${him} in gentle masturbation. You go back to applying lotion to the rest of ${his} body, enjoying the slave's intense pleasure. When you've covered every ${inch} of ${him}, you hug ${him} close, returning your hands to ${his} nipples`);
			if (V.PC.dick !== 0) {
				r.push(`and pushing your rock-hard prick in between ${his} well-lubricated thighs`);
				if (V.PC.vagina !== -1) {
					r.addToLast(`,`);
				}
			}
			if (V.PC.vagina !== -1) {
				r.push(`after guiding one of ${hers} around behind ${him} to see to your pussy`);
			}
			r.addToLast(`. ${He} quickens ${his} pace`);
			if (canSee(eventSlave)) {
				r.push(`and raises ${his} gaze to the mirror, seeing ${his} magnificently nude, ${eventSlave.skin} skin flushed with arousal`);
			} else {
				r.addToLast(`, feeling ${his} magnificently nude, ${eventSlave.skin} skin flush with arousal`);
			}
			r.push(`as ${his}`);
			if (eventSlave.chastityPenis === 1) {
				if (canDoAnal(eventSlave)) {
					r.push(`eager fingering of ${his} anus turn frantic.`);
				} else {
					r.push(`frantic taint rubbing starts to pay off.`);
				}
			} else if (eventSlave.dick > 0 && !canAchieveErection(eventSlave)) {
				r.push(`frantic rubbing starts to produce lewd noises.`);
			} else if (eventSlave.dick > 0) {
				r.push(`jacking off starts to produce lewd noises.`);
			} else if (canDoVaginal(eventSlave) || canDoAnal(eventSlave)) {
				r.push(`index and middle fingers slip inside ${himself}.`);
			} else {
				r.push(`frantic taint rubbing starts to pay off.`);
			}
			r.push(`${He} gasps your name with ${his} orgasm, and then turns and <span class="trust inc">thanks you</span> prettily.`);
			eventSlave.trust += 5;
			r.toParagraph();
			return r.container();
		}

		function ass() {
			const r = new SpacedTextAccumulator();
			r.push(`You tell ${him} to`);
			if (hasBothLegs(eventSlave)) {
				r.push(`grab ${his} ankles.`);
			} else {
				r.push(`bend over.`);
			}
			r.push(`${He} giggles and`);
			if (eventSlave.belly >= 5000) {
				r.push(`carefully`);
			}
			r.push(`complies`);
			if (eventSlave.belly >= 120000) {
				r.push(`to the best of ${his} ability`);
			}
			r.addToLast(`, relaxing ${his}`);
			if (eventSlave.anus > 2) {
				r.push(`asspussy`);
			} else if (eventSlave.anus === 2) {
				r.push(`asshole`);
			} else {
				r.push(`little ass`);
			}
			r.push(`in the expectation of`);
			if (V.PC.dick !== 0) {
				r.push(`your cock,`);
			} else {
				r.push(`a strap-on,`);
			}
			r.push(`but starts with surprise when ${he} feels two warm, lubricated fingers slide into ${his} rectum.`);
			if (eventSlave.anus > 2) {
				r.push(`${He} moans when you add a third, and grunts when you insert a fourth. When ${he} feels you form your hand into a point, thumb included, ${he} understands what's coming and relaxes completely. The wide part of your hand, at the knuckles, squeezes into ${him} without much trouble, and ${he} lets out a huge sigh. When you start to fuck ${him}, though, ${he} collapses to ${his} knees,`);
				if (eventSlave.fetish === "buttslut") {
					if (!canTalk(eventSlave)) {
						r.push(`whining and begging nonverbally`);
					} else {
						r.push(
							`panting,`,
							Spoken(eventSlave, `"Please, fist my hole without mercy, ${Master}!"`)
						);
					}
				} else {
					r.push(`whining and begging nonverbally.`);
				}
				r.push(`You kick the lotion towards ${his} hand; ${he} gets the message and starts to frantically`);
				if (eventSlave.chastityPenis === 1) {
					r.push(`rub ${his} taint.`);
				} else if (eventSlave.dick > 0 && !canAchieveErection(eventSlave)) {
					r.push(`rub ${himself}.`);
				} else if (eventSlave.dick > 0) {
					r.push(`jerk off.`);
				} else if (canDoVaginal(eventSlave)) {
					r.push(`jill off.`);
				} else {
					r.push(`rub ${his} taint.`);
				}
				r.push(`${He} manages to climax promptly, ${his} overstimulated sphincter helping, no doubt. ${He} slumps to the ground when you withdraw your hand, gasping, but you haul ${him} around so ${he} can`);
				if (V.PC.dick !== 0) {
					r.push(`suck you off`);
					if (V.PC.vagina !== -1) {
						r.push(`and`);
					}
				}
				if (V.PC.vagina !== -1) {
					r.push(`eat you out`);
				}
				if (V.PC.dick === 0 && V.PC.vagina === 0) {
					r.push(`rim your ass`);
				}
				r.addToLast(`. ${He} complies submissively, drooling and groaning, all pretense of feminine grace gone. It doesn't take long, since that was quite a lot of fun, but by the time you finish ${he}'s already masturbating again.`);
			} else if (eventSlave.anus === 2) {
				r.push(`${He} grunts when you add a third, and begins to beg when you insert a fourth. When ${he} feels you form your hand into a point, thumb included, ${he} understands what's coming and does ${his} best to relax. The wide part of your hand, at the knuckles, squeezes into ${him} after some effort on your part and squealing on ${his} part. When you withdraw it and press it back in, slowly starting to fist fuck ${his} ass, though, ${he} collapses to ${his} knees,`);
				if (eventSlave.fetish === "buttslut") {
					if (!canTalk(eventSlave)) {
						r.push(`crying`);
					} else {
						r.push(
							`sobbing,`,
							Spoken(eventSlave, `"Please, fist my hole without mercy, ${Master}!"`)
						);
					}
				} else {
					r.push(`crying.`);
				}
				r.push(`You kick the lotion towards ${his} hand; ${he} gets the message and starts to frantically`);
				if (eventSlave.chastityPenis === 1) {
					r.push(`rub ${his} taint.`);
				} else if (eventSlave.dick > 0 && !canAchieveErection(eventSlave)) {
					r.push(`rub ${himself}.`);
				} else if (eventSlave.dick > 0) {
					r.push(`jerk off.`);
				} else if (canDoVaginal(eventSlave)) {
					r.push(`jill off.`);
				} else {
					r.push(`rub ${his} taint.`);
				}
				r.push(`${He} manages to climax eventually. ${He} slumps to the ground when you withdraw your hand, gasping, but you haul ${his} around so ${he} can`);
				if (V.PC.dick !== 0) {
					r.push(`suck you off`);
					if (V.PC.vagina !== -1) {
						r.push(`and`);
					}
				}
				if (V.PC.vagina !== -1) {
					r.push(`eat you out`);
				}
				if (V.PC.dick === 0 && V.PC.vagina === 0) {
					r.push(`rim your ass`);
				}
				r.addToLast(`. ${He} complies submissively, drooling and weeping, all pretense of feminine grace gone. It doesn't take long, since that was quite a lot of fun, but by the time you finish ${he}'s tentatively masturbating again.`);
			} else {
				r.push(`${He} squeals when you add a third, and begins to shamelessly beg for mercy when you insert a fourth. When ${he} feels you form your hand into a point, thumb included, ${he} understands what's coming and collapses to ${his} knees,`);
				if (eventSlave.fetish === "buttslut") {
					if (!canTalk(eventSlave)) {
						r.push(`begging you to be gentle`);
					} else {
						r.push(
							`sobbing,`,
							Spoken(eventSlave, `"Please, don't ruin my favorite hole, ${Master}!"`)
						);
					}
				} else {
					r.push(`begging you to be gentle.`);
				}
				r.push(`You kick the lotion towards ${his} hand; ${he} gets the message and starts to frantically`);
				if (eventSlave.chastityPenis === 1) {
					r.push(`rub ${his} taint.`);
				} else if (eventSlave.dick > 0 && !canAchieveErection(eventSlave)) {
					r.push(`rub ${himself}.`);
				} else if (eventSlave.dick > 0) {
					r.push(`jerk off.`);
				} else if (canDoVaginal(eventSlave)) {
					r.push(`jill off.`);
				} else {
					r.push(`rub ${his} taint.`);
				}
				r.push(`As ${he} works ${his} sphincter relaxes bit by bit, and you advance your fist up ${his} butt. ${He} screams in surprise and relief when your knuckles finally make it in, and achieves a crying orgasm shortly thereafter. ${He} slumps to the ground when you withdraw your hand, moaning incoherently, but you haul ${him} around so ${he} can`);
				if (V.PC.dick !== 0) {
					r.push(`suck you off`);
					if (V.PC.vagina !== -1) {
						r.push(`and`);
					}
				}
				if (V.PC.vagina !== -1) {
					r.push(`eat you out`);
				}
				if (V.PC.dick === 0 && V.PC.vagina === 0) {
					r.push(`rim your ass`);
				}
				r.addToLast(`. ${He} complies <span class="devotion inc">submissively,</span> crying quietly in confusion and disarray, all pretense of feminine grace gone.`);
				if (V.seeStretching === 1) {
					r.addToLast(` It doesn't take long, since that was quite a lot of fun, and by the time you finish ${he} hasn't yet worked up the courage to touch ${his} <span class="lime">newly widened backdoor.</span>`);
					eventSlave.anus += 1;
				}
			}
			eventSlave.devotion += 5;
			r.toParagraph();
			return r.container();
		}

		function pussy() {
			const r = new SpacedTextAccumulator();
			r.push(`You slide up behind ${him} and run a possessive hand down`);
			if (eventSlave.belly >= 1500) {
				r.push(`${his} swollen midriff down`);
			}
			r.push(`to finger ${his} pussylips. ${He} compliantly cocks ${his} hips backward for you, and is surprised to find a couple of warm, lubricated fingers rather than`);
			if (V.PC.dick !== 0) {
				r.push(`your cock`);
			} else {
				r.push(`a strap-on`);
			}
			r.push(`sliding into ${his} ready cunt.`);
			if (eventSlave.vagina > 2) {
				r.push(`${He} moans when you add a third, and grunts when you insert a fourth. When ${he} feels you form your hand into a point, thumb included, ${he} understands what's coming and relaxes completely. The wide part of your hand, at the knuckles, squeezes into ${him} without much trouble, and ${he} lets out a huge sigh. When you start to fuck ${his} huge cunt with your hand, though, ${he} collapses`);
				if (eventSlave.belly >= 300000) {
					r.push(`onto ${his} ${belly} belly,`);
				} else {
					r.push(`to ${his} knees,`);
				}
				r.push(`whining and begging nonverbally. You kick the lotion towards ${his} hand; ${he} gets the message and starts to frantically`);
				if (eventSlave.chastityPenis === 1) {
					r.push(`rub ${his} taint.`);
				} else if (eventSlave.dick > 0 && !canAchieveErection(eventSlave)) {
					r.push(`rub ${himself}.`);
				} else if (eventSlave.dick > 0) {
					r.push(`jerk off.`);
				} else if (canDoVaginal(eventSlave)) {
					r.push(`rub ${his} clit.`);
				} else {
					r.push(`rub ${his} taint.`);
				}
				r.push(`${He} manages to climax promptly, ${his} big vagina squeezing your hand strongly. ${He} slumps to the ground when you withdraw your hand, gasping, the collapse giving you a good view into ${his} open, pink-walled channel. You haul ${his} around so ${he} can`);
				if (V.PC.dick !== 0) {
					r.push(`suck you off`);
					if (V.PC.vagina !== -1) {
						r.push(`and`);
					}
				}
				if (V.PC.vagina !== -1) {
					r.push(`eat you out`);
				}
				if (V.PC.dick === 0 && V.PC.vagina === 0) {
					r.push(`rim your ass`);
				}
				r.addToLast(`. ${He} complies submissively, drooling and groaning, all pretense of feminine grace gone. It doesn't take long, since that was quite a lot of fun, but by the time you finish ${he}'s replaced your hand with ${his} own.`);
				eventSlave.devotion += 5;
			} else if (eventSlave.vagina === 2) {
				r.push(`${He} grunts when you add a third, and begins to beg when you insert a fourth. When ${he} feels you form your hand into a point, thumb included, ${he} understands what's coming and hurriedly gets down`);
				if (eventSlave.belly >= 300000) {
					r.push(`onto ${his} ${belly} belly`);
				} else {
					r.push(`on ${his} knees`);
				}
				r.push(`to present a more comfortable angle. The wide part of your hand, at the knuckles, squeezes into ${him} after some effort on your part and squealing on ${his} part. You kick the lotion towards ${his} hand; ${he} gets the message and starts to frantically`);
				if (eventSlave.chastityPenis === 1) {
					r.push(`rub ${his} taint`);
				} else if (eventSlave.dick > 0 && !canAchieveErection(eventSlave)) {
					r.push(`rub ${himself}`);
				} else if (eventSlave.dick > 0) {
					r.push(`jerk off`);
				} else if (canDoVaginal(eventSlave)) {
					r.push(`rub ${his} clit`);
				} else {
					r.push(`rub ${his} taint`);
				}
				r.push(`as you slowly fist fuck ${him}. ${He} manages to climax eventually. ${He} slumps to the ground when you withdraw your hand, gasping, the collapse giving you a good view into ${his} now-gaping, pink-walled channel. You haul ${him} around so ${he} can`);
				if (V.PC.dick !== 0) {
					r.push(`suck you off`);
					if (V.PC.vagina !== -1) {
						r.push(`and`);
					}
				}
				if (V.PC.vagina !== -1) {
					r.push(`eat you out`);
				}
				if (V.PC.dick === 0 && V.PC.vagina === 0) {
					r.push(`rim your ass`);
				}
				r.addToLast(`. ${He} complies submissively, drooling and gasping, all pretense of feminine grace gone. It doesn't take long, since that was quite a lot of fun, but by the time you finish ${he}'s masturbating again.`);
				eventSlave.devotion += 5;
			} else {
				r.push(`${He} squeals when you add a third, and begins to shamelessly beg for mercy when you insert a fourth. When ${he} feels you form your hand into a point, thumb included, ${he} understands what's coming and collapses`);
				if (eventSlave.belly >= 300000) {
					r.push(`onto ${his} ${belly} belly,`);
				} else {
					r.push(`to ${his} knees,`);
				}
				r.push(`begging you to be gentle. You kick the lotion towards ${his} hand; ${he} gets the message and starts to frantically`);
				if (eventSlave.chastityPenis === 1) {
					r.push(`rub ${his} taint,`);
				} else if (eventSlave.dick > 0 && !canAchieveErection(eventSlave)) {
					r.push(`rub ${himself},`);
				} else if (eventSlave.dick > 0) {
					r.push(`jerk off,`);
				} else if (canDoVaginal(eventSlave)) {
					r.push(`rub ${his} clit,`);
				} else {
					r.push(`rub ${his} taint,`);
				}
				r.push(`hoping to relax a little. As ${he} works ${his} pussy relaxes bit by bit, and you advance your fist into ${his} womanhood. ${He} screams in surprise and relief when your knuckles finally make it in, and achieves a crying orgasm shortly thereafter. ${He} slumps to the ground when you withdraw your hand, moaning incoherently, the collapse giving you a good view into ${his} now-gaping, pink-walled channel. You haul ${his} around so ${he} can`);
				if (V.PC.dick !== 0) {
					r.push(`suck you off`);
					if (V.PC.vagina !== -1) {
						r.push(`and`);
					}
				}
				if (V.PC.vagina !== -1) {
					r.push(`eat you out`);
				}
				if (V.PC.dick === 0 && V.PC.vagina === 0) {
					r.push(`rim your ass`);
				}
				r.addToLast(`. ${He} complies <span class="devotion inc">submissively,</span> crying quietly with overstimulation, all pretense of feminine grace gone.`);
				eventSlave.devotion += 5;
				if (V.seeStretching === 1 ) {
					r.addToLast(`It doesn't take long, since that was quite a lot of fun, but by the time you finish ${he}'s gingerly massaging ${his} <span class="lime">newly loosened cunt.</span>`);
					eventSlave.vagina += 1;
				}
			}
			r.toParagraph();
			return r.container();
		}
	}
};


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

	actorPrerequisites() {
		return [
			[ // single event slave
				s => s.fetish !== Fetish.MINDBROKEN,
				hasAnyArms,
				hasAnyLegs,
				canTalk,
				s => s.devotion > 60,
				s => s.trust > 20,
				s => s.physicalAge > 37,
				s => s.anus > 0,
				s => s.vagina > 0,
			]
		];
	}

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

		App.Events.drawEventArt(node, eventSlave);

		let r = [];
		App.Events.addParagraph(node, [
			`At the end of a long week,`,
			contextualIntro(V.PC, eventSlave, true),
			`moves past your office toward bed. This is completely normal part of the arcology routine, but you notice as ${he} passes that ${he}'s wearing a preoccupied, almost sad expression. You call ${him} over, and ${he} makes a visible effort to brighten up as ${he} comes before you and asks your pleasure. You ask ${him} what's the matter, and ${his} face falls.`
		]);
		r.push(Spoken(eventSlave, `"${Master}, I'm so sorry you noticed,"`));
		if (eventSlave.lips > 70) {
			r.push(`${he} lisps through ${his} dick-sucking lips.`);
		} else if (eventSlave.piercing.lips.weight+eventSlave.piercing.tongue.weight > 2) {
			r.push(`${he} lisps through ${his} ridiculous piercings.`);
		} else {
			r.push(`${he} ${say}s penitently.`);
		}
		r.push(Spoken(eventSlave, `"I'm feeling a little stiff and tired, ${Master}. I wish I was a little younger so I could serve you better, that's all."`));

		App.Events.addParagraph(node, r);
		App.Events.addResponses(node, [
			(canDoAnal(eventSlave) || canDoVaginal(eventSlave))
				? new App.Events.Result(`Cheer ${him} up`, cheer)
				: new App.Events.Result(),
			new App.Events.Result(`Perform a health exam personally`, exam),
			(S.HeadGirl && V.HeadGirlID !== eventSlave.ID)
				? new App.Events.Result(`Give ${him} an afternoon off for some quality time with your Head Girl`, quality, 	`This option will cost ${cashFormat(500)}`)
				: new App.Events.Result()
		]);

		function cheer() {
			let didVaginal = false;
			let didAnal = false;
			r = [];
			r.push(`You close in on ${him}, and ${he} starts to present ${himself} with the force of long habit. However, you take ${him} by the hand and draw ${him} in close, running your fingertips along ${his} cheekbone, looking into ${his} ${App.Desc.eyesColor(eventSlave)}.`);
			if (canSee(eventSlave)) {
				r.push(`${He} only holds your gaze for a brief moment before blushing and looking down again,`);
			} else {
				r.push(`Once ${he} feels your hand stop, ${he} quickly glances down while`);
			}
			r.push(`muttering another apology. You raise ${his} chin again with a gentle hand and give ${him} a deep kiss. After a moment ${he} hugs you with almost painful`);
			if (eventSlave.belly >= 100000) {
				r.push(`fierceness, a feat given the size of ${his} ${belly}`);
				if (eventSlave.bellyPreg >= 3000) {
					r.push(`gravid`);
				}
				r.push(`belly, where`);
			} else if (eventSlave.belly >= 5000) {
				r.push(`fierceness, pushing ${his} ${belly}`);
				if (eventSlave.bellyPreg >= 3000) {
					r.push(`gravid`);
				}
				r.push(`belly into yours, where`);
			} else {
				r.push(`fierceness, and`);
			}
			r.push(`you can feel a heat radiating from ${him}. ${He} makes to get down on ${his} knees to serve you again, but instead, you`);
			if (eventSlave.belly >= 300000) {
				r.push(`help ${him} up and guide`);
			} else if (eventSlave.belly >= 5000) {
				r.push(`gently scoop ${him} up and carry`);
			} else {
				r.push(`scoop ${him} up and carry`);
			}
			r.push(`${him} to bed, laying the bemused ${girl} down before cuddling up behind ${him}. The two of you make languid love, with you`);
			if (canHear(eventSlave)) {
				r.push(`murmuring reassuringly into ${his} ear,`);
			}
			r.push(`nibbling ${his} neck, cupping ${his} breasts,`);
			if (eventSlave.belly >= 1500) {
				r.push(`rubbing ${his} distended midriff,`);
			}
			r.push(`and massaging ${his} shoulders by turns. After a lovely climax together in ${his}`);
			if (canDoAnal(eventSlave) && canDoVaginal(eventSlave)) {
				r.push(`pussy ${he} coquettishly shifts ${himself} to line your recovering cock up with ${his} ass,`);
				didVaginal = true;
				didAnal = true;
			} else if (canDoVaginal(eventSlave)) {
				r.push(`pussy ${he} coquettishly shifts ${himself} to face you,`);
				didVaginal = true;
			} else {
				r.push(`ass ${he} coquettishly shifts ${himself} to face you,`);
				didAnal = true;
			}
			if (canSee(eventSlave)) {
				r.push(`looking with <span class="devotion inc">adoration</span> and new <span class="trust inc">confidence</span> into your eyes.`);
			} else {
				r.push(`gazing with <span class="devotion inc">adoration</span> and new <span class="trust inc">confidence</span> at your face.`);
			}
			eventSlave.devotion += 4;
			eventSlave.trust += 4;
			if (didVaginal && didAnal) {
				r.push(VCheck.Both(eventSlave, 1));
			} else if (didVaginal) {
				r.push(VCheck.Vaginal(eventSlave, 1));
			} else if (didAnal) {
				r.push(VCheck.Anal(eventSlave, 1));
			}
			return r;
		}

		function exam() {
			r = [];
			r.push(`${He} gets a weekly health exam from the automated systems, which also do their best to monitor ${his} well-being, but ${he} does not protest as you take ${him} to the surgery and give ${him} a`);
			if (V.PC.skill.medicine >= 100) {
				r.push(`professional examination. It feels good to put the old skills to use on an attractive patient.`);
			} else {
				r.push(`thorough examination.`);
			}
			r.push(
				`There's nothing the matter other than that ${he} hasn't been 18 for a long time. ${He} looks a little sad at some of the results, but whenever ${he} does, you place a hand on ${his} cheek and give ${him} a kiss. ${He} gets the idea.`,
				Spoken(eventSlave, `"I understand, ${Master}. I can still serve you,"`),
				`${he} ${say}s.`
			);
			r.push(`You adjust ${his} diet and exercise a little, which should <span class="health inc">slightly improve</span> ${his} health`);
			if (V.PC.skill.medicine >= 100) {
				r.push(r.pop() + `, and prescribe some new supplements that might help ${him} <span class="health inc">feel ${his} best</span> all the time`);
				improveCondition(eventSlave, 10);
			}
			r.push(r.pop() + `. As ${he} gets up from the chair and makes to resume ${his} duties, you give ${him} a light swat across the buttocks. ${He} squeaks and turns to giggle at you, giving you a broad wink and shaking ${his} tits a little for you.`);
			eventSlave.trust += 4;
			improveCondition(eventSlave, 10);
			return r;
		}

		function quality() {
			const {
				He2, his2, himself2
			} = getPronouns(S.HeadGirl).appendSuffix('2');
			cashX(-500, "event", eventSlave);
			improveCondition(eventSlave, 10);
			S.HeadGirl.devotion += 4;
			eventSlave.devotion += 4;
			return `${S.HeadGirl.slaveName} understands the situation immediately. ${He2} gets ${himself2} and ${eventSlave.slaveName} dressed for a nice, non-sexual 'date' in ${V.clubName}, and leads ${him} out by the hand with a wink over ${his2} shoulder to you. Your Head Girl understands just what kind of break from sexual servitude ${eventSlave.slaveName} really needs. They enjoy a nice meal, take a stroll and talk as friends, and get some inconsequential but relaxing beauty treatments together. They both enjoy the relaxation, and ${eventSlave.slaveName} feels much better after the rest, too.`;
		}
	}
};