code:
App.Events.petsAggressiveWardeness = class petsAggressiveWardeness extends App.Events.BaseEvent {
	eventPrerequisites() {
		return [
			() => !!S.Wardeness,
			() => canTalk(S.Wardeness)
		];
	}

	actorPrerequisites() {
		return [[
			s => s.assignment === Job.CELLBLOCK
		]];
	}

	execute(node) {
		const subSlave = getSlave(this.actors[0]);
		const {
			He,
			he, his, him, himself
		} = getPronouns(S.Wardeness);
		const {
			He2,
			he2, his2, him2
		} = getPronouns(subSlave).appendSuffix("2");
		App.Events.drawEventArt(node, [S.Wardeness, subSlave]);

		App.Events.addParagraph(node, [
			`As you pass the entrance to the hall of cells where`,
			App.UI.DOM.slaveDescriptionDialog(S.Wardeness),
			`breaks bitches late one night, you hear some muffled cursing, followed by moans. Curious, you lean into the one cell with an open door and are treated to the sight of ${S.Wardeness.slaveName} holding`,
			App.UI.DOM.combineNodes(contextualIntro(S.Wardeness, subSlave, true), `'s head`),
			`${hasBothLegs(S.Wardeness) ? `between ${his} legs` : `at ${his} groin`}, receiving what is very obviously non-consensual oral sex. ${S.Wardeness.slaveName} is clearly enjoying ${himself}, but gathers ${himself} together and greets you properly, without stopping.`
		]);

		App.Events.addParagraph(node, [
			Spoken(S.Wardeness, `"Told this whore I wasn't turning the lights off in ${his2} cell until ${he2} got me off. ${He2} can't sleep with 'em on, and bitches do anything for a little sleep,"`),
			`${he} explains.`
		]);

		const choices = [];
		choices.push(new App.Events.Result(`Encourage the use of sleep deprivation as a breaking tool`, encourage));
		choices.push(new App.Events.Result(`Have a quiet word with the Wardeness about prisoners' health`, quiet));
		if (subSlave.anus > 0 && canDoAnal(subSlave)) {
			choices.push(new App.Events.Result(`The prisoner will take it up the butt, too, if ${he2} wants sleep`, upButt));
		}
		if (subSlave.vagina > 0 && canDoVaginal(subSlave)) {
			choices.push(new App.Events.Result(`The prisoner will take it up the pussy, too, if ${he2} wants sleep`, upVag));
		}
		App.Events.addResponses(node, choices);

		function encourage() {
			V.slaves.forEach(function(s) {
				if (s.assignment === Job.CELLBLOCK) {
					s.devotion += 10;
					healthDamage(s, 10);
				}
			});
			return `You let ${S.Wardeness.slaveName} know that as far as you're concerned, sleep is a privilege, not a right. ${He} grins evilly and grinds ${himself} into ${subSlave.slaveName}'s mouth harder. The poor prisoner ${canHear(subSlave) ? `heard you, of course` : `realizes why ${S.Wardeness.slaveName} has increased ${his} brutality`}, and begins to produce muffled sobs as ${he2} realizes what this means for ${him2}. ${S.Wardeness.slaveName} reaches down and caresses ${his2} cheek. "There, there," ${he} croons. "It's not rape if you do it in return for something." All the prisoners are all that much more broken this week, though sleep deprivation isn't healthy.`;
		}

		function quiet() {
			V.slaves.forEach(function(s) {
				if (s.assignment === Job.CELLBLOCK) {
					improveCondition(s, 10);
				}
			});
			return `You let ${S.Wardeness.slaveName} finish using ${subSlave.slaveName}'s mouth, turn off the lights in ${his2} cell, and then meet ${him} outside. It won't do to undermine ${him} in front of the prisoners. You offer a few choice remarks on the value of ${his} charges to you and the potential effects of sleep deprivation, and point out that ${he} is a poor Wardeness if ${he} cannot break slaves without taking measures that may damage their health. ${He}'s clearly filled with remorse, begs your forgiveness, and manages to break slaves just as effectively this week while taking better care of their health.`;
		}

		function upButt() {
			const frag = new DocumentFragment();
			let r = [];
			r.push(`You silently interrupt ${S.Wardeness.slaveName} and indicate that ${he} should sit down on the cell's bed without letting ${subSlave.slaveName}'s head out from between ${his} legs. ${He} sits down with a thump, dragging the struggling ${subSlave.slaveName} with ${him}. You`);
			if (V.PC.dick === 0) {
				r.push(`pull on a strap-on, and then`);
			}
			r.push(`seize ${subSlave.slaveName}'s hips and hoist them into the air, giving ${him2} a horrible second of anticipation as you manhandle`);
			if (V.PC.dick === 0) {
				r.push(`the cruelly large phallus`);
			} else {
				r.push(`your cock`);
			}
			r.push(`into place. ${He2} gives a strangled squeal of protest at the feeling of you pushing your way inexorably up ${his2} poor anus, making ${S.Wardeness.slaveName} jerk with surprise at the sensation of ${subSlave.slaveName} howling into ${his} crotch. Twenty minutes later, you and ${S.Wardeness.slaveName} leave ${him2} quiescent on the floor of the cell. After ${he} locks the door after ${himself}, ${S.Wardeness.slaveName} can't resist the urge to offer you a cheerful high-five.`);
			S.Wardeness.devotion += 10;
			subSlave.devotion += 4;
			seX(subSlave, "oral", S.Wardeness, "penetrative", 2);
			seX(subSlave, "anal", V.PC, "penetrative", 1);
			App.Events.addParagraph(frag, r);
			return frag;
		}

		function upVag() {
			const frag = new DocumentFragment();
			let r = [];
			r.push(`You silently interrupt ${S.Wardeness.slaveName} and indicate that ${he} should sit down on the cell's bed without letting ${subSlave.slaveName}'s head out from between ${his} legs. ${He} sits down with a thump, dragging the struggling ${subSlave.slaveName} with ${him}. You`);
			if (V.PC.dick === 0) {
				r.push(`pull on a strap-on, and then`);
			}
			r.push(`seize ${subSlave.slaveName}'s hips and hoist them into the air, giving ${him2} a horrible second of anticipation as you manhandle`);
			if (V.PC.dick === 0) {
				r.push(`the cruelly large phallus`);
			} else {
				r.push(`your cock`);
			}
			r.push(`into place. ${He2} gives a strangled squeal of protest at the feeling of you pushing your way inexorably up ${his2} poor pussy, making ${S.Wardeness.slaveName} jerk with surprise at the sensation of ${subSlave.slaveName} howling into ${his} crotch. Twenty minutes later, you and ${S.Wardeness.slaveName} leave ${him2} quiescent on the floor of the cell. After ${he} locks the door after ${himself}, ${S.Wardeness.slaveName} can't resist the urge to offer you a cheerful high-five.`);
			S.Wardeness.devotion += 10;
			subSlave.devotion += 4;
			seX(subSlave, "oral", S.Wardeness, "penetrative", 2);
			seX(subSlave, "vaginal", V.PC, "penetrative", 1);
			App.Events.addParagraph(frag, r);
			return frag;
		}
	}
};


code:
App.Events.petsComfortingAttendant = class petsComfortingAttendant extends App.Events.BaseEvent {
	eventPrerequisites() {
		return [
			() => !!S.Attendant,
			() => canTalk(S.Attendant)
		];
	}

	actorPrerequisites() {
		return [[
			s => s.assignment === Job.SPA
		]];
	}

	execute(node) {
		const subSlave = getSlave(this.actors[0]);
		const {
			He,
			he, his, him, himself
		} = getPronouns(S.Attendant);
		const {title: Master} = getEnunciation(S.Attendant);
		const {
			He2,
			he2, his2, him2
		} = getPronouns(subSlave).appendSuffix("2");

		App.Events.drawEventArt(node, [S.Attendant, subSlave]);
		let r = [];
		r.push(`You decide to knit up care's raveled sleave with a break in the spa. You have your own bath, of course, but the`);
		if (V.seeDicks !== 100) {
			r.push(`female`);
		}
		r.push(
			`company is always nice even if you aren't actively using the spa's resting inhabitants. The steam in the warm pool room is turned up very high, and you can hardly see. As you lower yourself into the warm water, you see`,
			contextualIntro(V.PC, S.Attendant, true),
			`across from you, sitting in the water against the pool wall. ${He}'s holding`,
			contextualIntro(S.Attendant, subSlave, true),
			`in ${his} arms, rubbing a comforting hand up and down ${his2} back and murmuring into ${his2} ear. ${subSlave.slaveName} has ${his2} head`);
		if (S.Attendant.boobs > 2000) {
			r.push(`almost hidden between ${S.Attendant.slaveName}'s massive tits,`);
		} else if (S.Attendant.boobs > 1000) {
			r.push(`between ${S.Attendant.slaveName}'s huge boobs,`);
		} else if (S.Attendant.boobs > 300) {
			r.push(`between ${S.Attendant.slaveName}'s breasts,`);
		} else {
			r.push(`against ${S.Attendant.slaveName}'s flat chest,`);
		}
		r.push(`but it's a nonsexual embrace. You can't hear what ${S.Attendant.slaveName} is saying, but it's clearly comforting; ${subSlave.slaveName} has a happy little smile on ${his2} face and has ${his2} eyes closed in relaxation.`);

		App.Events.addParagraph(node, r);

		const choices = [];
		choices.push(new App.Events.Result(`Meet with the Attendant later to see if the slave ${he}'s helping can be assisted further`, assist));
		choices.push(new App.Events.Result(`Leave the matter between the Attendant and the slave ${he}'s helping`, leave));

		App.Events.addResponses(node, choices);

		function assist() {
			const frag = new DocumentFragment();
			let r = [];
			r.push(`You meet ${S.Attendant.slaveName} after ${subSlave.slaveName} leaves. ${He} likes to take a cool shower after spending time in the steam, so you get under the refreshing water with ${him}, encircling ${his}`);
			if (S.Attendant.weight > 10) {
				r.push(`plush`);
			} else {
				r.push(`taut`);
			}
			r.push(`midriff with your arms and giving ${him} a hug before asking ${him} about ${subSlave.slaveName}. In ${S.Attendant.slaveName}'s opinion, there's nothing really wrong with ${him2}: ${he2}'s just having a little trouble accepting different expectations about human interactions.`,
				Spoken(S.Attendant, `"${He2} just needs a little help accepting that ${he2}'s a slave and it's ${his2} place to serve you, ${Master},"`),
				`${he} says.`,
				Spoken(S.Attendant, `"Like I have!"`),
				`${He} wriggles around in your arms and plants a wet kiss on your nose. ${He}'s clean now, so you release ${him} and ${he} steps over to ${his} towel. As ${he} does, you land a wet slap on ${his}`);
			if (S.Attendant.butt > 5) {
				r.push(`massive`);
			} else if (S.Attendant.butt > 3) {
				r.push(`big`);
			} else {
				r.push(`nice`);
			}
			r.push(`butt, eliciting a <span class="devotion inc">delighted</span> squeal. You use the information to <span class="devotion inc">subtly address</span> ${subSlave.slaveName}'s unhappiness.`);
			S.Attendant.devotion += 4;
			subSlave.devotion += 4;
			App.Events.addParagraph(frag, r);
			return frag;
		}

		function leave() {
			const frag = new DocumentFragment();
			let r = [];
			r.push(
				`You let ${S.Attendant.slaveName} deal with ${subSlave.slaveName}'s troubles; after a short time ${he} sends ${subSlave.slaveName} off to shower, and submerges, swimming over to you under the water. ${He} pokes out of the water, comically letting a huge mouthful of the warm, healthy mineral water run out of ${his} mouth in a stream before giggling at ${himself} and smiling at you.`,
				Spoken(S.Attendant, `"${Master}, would you like me to tell you about ${subSlave.slaveName}?"`),
				`${he} asks. You shake your head, and tell ${him} no, you trust ${him} to do ${his} best to heal anything that ails ${his} charges. ${He} looks at you with huge ${App.Desc.eyesColor(S.Attendant)} for a long moment before throwing ${his}`
			);
			if (S.Attendant.weight > 10) {
				r.push(`plush`);
			} else {
				r.push(`taut`);
			}
			r.push(
				`body into your arms. ${He} looks up at you and asks incredulously,`,
				Spoken(S.Attendant, `"${Master}, you trust me?"`),
				`You nod. ${He} looks shocked but kisses you and drops back down under the water. You feel the lovely sensation of ${his}`
			);
			if (S.Attendant.lips > 70) {
				r.push(`massive`);
			} else if (S.Attendant.lips > 40) {
				r.push(`pillowlike`);
			} else {
				r.push(`nice`);
			}
			r.push(`lips`);
			if (V.PC.vagina !== -1) {
				r.push(`nibbling their way up towards your clit,`);
			} else {
				r.push(`forming a seal around your dickhead,`);
			}
			r.push(`and although ${he} has to come up periodically for air, ${he} gives you quite a <span class="devotion inc">loving</span> blowjob.`);
			S.Attendant.devotion += 10;
			App.Events.addParagraph(frag, r);
			return frag;
		}
	}
};

repo_name: CloudyCoffee/fc

license: mit


code:
App.Events.petsNurseMolestation = class petsNurseMolestation extends App.Events.BaseEvent {
	eventPrerequisites() {
		return [
			() => !!S.Nurse,
			() => (S.Nurse.energy > 95 || (S.Nurse.fetishStrength > 60 && (S.Nurse.fetish === "sadist" || S.Nurse.fetish === "dom")))
		];
	}

	actorPrerequisites() {
		return [[
			s => s.anus !== 0,
			s => s.assignment === Job.CLINIC
		]];
	}

	execute(node) {
		const subSlave = getSlave(this.actors[0]);
		let r = [];
		const {
			He, His,
			he, his, him, himself
		} = getPronouns(S.Nurse);
		const {
			He2,
			he2, his2, him2,
		} = getPronouns(subSlave).appendSuffix("2");
		const {title: Master} = getEnunciation(S.Nurse);

		App.Events.drawEventArt(node, [S.Nurse, subSlave], [null, "no clothing"]);

		r.push(
			`Late at night, you decide to walk through the clinic to look over its patients personally. As soon as you enter the space, left dimly lit at night to encourage sleep, you hear a quiet moaning and the distinct noise of flesh on flesh. Heading over towards that area, you note the noise is coming from where ${subSlave.slaveName} is listed as resting. Appearing quietly, you see`,
			App.UI.DOM.slaveDescriptionDialog(S.Nurse),
			`between ${his} patient's`
		);
		if (hasBothLegs(subSlave)) {
			r.push(`legs,`);
		} else {
			r.push(`hips,`);
		}
		r.push(`which are spread wide by the stirrups provided with each patient bed for examination of a slave's holes.`);
		App.Events.addParagraph(node, r);

		r = [];
		if (canPenetrate(S.Nurse)) {
			r.push(`${He}'s pounding eagerly away and mauling ${his} patient's bare boobs with both hands.`);
			seX(S.Nurse, "penetrative", subSlave, "mammary");
		} else {
			r.push(`${He}'s using one hand to fingerfuck ${his} patient, and the other to masturbate furiously.`);
			seX(S.Nurse, "penetrative", subSlave, "anal");
		}
		r.push(`Moaning in sexual abandon, ${he}'s obviously unaware that ${he}'s being watched. ${subSlave.slaveName} is oddly quiescent. You silently query the Clinic's systems, and learn that ${he2}'s under curative sedation. The advanced curatives applied here often improve slaves' health more quickly if a slave is mildly sedated to let them work. ${S.Nurse.slaveName} has obviously decided to use the almost unconscious ${subSlave.slaveName} for ${his} own gratification.`);
		App.Events.addParagraph(node, r);

		const choices = [];
		choices.push(new App.Events.Result(`Punish ${him} for molesting patients`, punish));

		if (canDoVaginal(S.Nurse) || canDoAnal(S.Nurse)) {
			choices.push(new App.Events.Result(`Rape ${him} for molesting patients`, rape));
			choices.push(new App.Events.Result(`Have sex with ${him} while ${he} molests the patient`, sex));
		}

		App.Events.addResponses(node, choices);

		function punish() {
			S.Nurse.devotion += 4;
			if (canDoVaginal(S.Nurse)) {
				seX(S.Nurse, "vaginal", V.PC, "penetrative");
			} else if (canDoAnal(S.Nurse)) {
				seX(S.Nurse, "anal", V.PC, "penetrative");
			}
			actX(S.Nurse, "oral", 20);
			V.slaves.forEach(function(s) {
				if (s.assignment === "get treatment in the clinic") {
					s.trust += 2;
				}
			});
			return `The next morning, the Clinic's patients awake to see an uncharacteristically subdued ${S.Nurse.slaveName} hurrying around, doing ${his} best to see to ${his} business quietly. ${He} does so a bit gingerly, as though ${he} was fucked without mercy last night, and tries not to meet anyone's eyes. Their attention is immediately drawn, however, to a sign pinned to the chest of ${his} clothing. It reads, 'The Nurse was caught molesting patients last night. ${He} has been ordered to immediately perform oral sex on anyone who asks.' Every patient instantly demands oral sex, and by the time ${he}'s gotten the last one off, the first has placed another request. ${He}'s exhausted by the end of the day; the patients, on the other hand, are very pleased to see the haughty, handsy nurse brought low.`;
		}

		function rape() {
			const frag = new DocumentFragment();
			let r = [];
			r.push(`You shove ${S.Nurse.slaveName} hard, forcing a surprised shriek out of ${him} as ${he} crashes forward into ${subSlave.slaveName}'s`);
			if (subSlave.boobs > 2000) {
				r.push(`helpfully pillowlike bosom,`);
			} else if (subSlave.boobs > 500) {
				r.push(`healthy tits,`);
			} else {
				r.push(`chest,`);
			}
			r.push(`and then ram your pelvis up against ${him}, pinning ${him} against ${his} patient. ${subSlave.slaveName}'s eyelids flicker, but ${he2} does not wake up, despite your assault`);
			if (canPenetrate(S.Nurse)) {
				r.push(`shoving ${S.Nurse.slaveName}'s cock as far up ${his2} asshole as it will go.`);
			} else {
				r.push(`trapping ${S.Nurse.slaveName}'s hands between them and pushing ${his} fingers even farther up ${subSlave.slaveName}'s asshole.`);
			}
			r.push(`${S.Nurse.slaveName} tries to shift a little, but receives a peremptory push back to where ${he} was. ${He} realizes ${he}'s to lie still and take what's coming to ${him}, and ${he} does ${his} best to relax.`);
			App.Events.addParagraph(frag, r);
			r = [];
			if (V.PC.dick !== 0) {
				if (canDoVaginal(S.Nurse)) {
					if (S.Nurse.vagina > 2) {
						r.push(`${His} roomy cunt takes your brutal thrusting without trouble. To communicate your message, ${he} needs to be uncomfortable, so you deliberately force ${him} down farther and fuck ${him} at an awkward angle. Your harsh pounding begins to force groans out of ${him}.`);
					} else if (S.Nurse.vagina > 1) {
						r.push(`${He} gasps as you force your cock inside ${his} cunt without any accommodation for ${his} comfort. This is supposed to send a message, so you send a message, fucking ${him} without mercy. ${He} begins to groan under the harsh pounding.`);
					} else {
						r.push(`${He} whines as you force your cock inside ${his} tight cunt. This is supposed to send a message, so you send a message, treating ${him} like a veteran whore who can take anything. ${He} begins to groan under the harsh pounding, ${his} poor little pussy unused to this kind of abuse.`);
					}
					seX(S.Nurse, "vaginal", V.PC, "penetrative");
				} else {
					if (S.Nurse.anus > 2) {
						r.push(`${His} roomy anus takes your brutal thrusting without trouble. To communicate your message, ${he} needs to be uncomfortable, so you push a couple of fingers up there alongside your dick. ${He} wriggles helplessly, starting to groan as you rape ${his} asshole.`);
					} else if (S.Nurse.anus > 1) {
						r.push(`${He} gasps as you force your cock up ${his} ass without waiting for ${him} to relax or get ready. This is supposed to send a message, so you send a message, buttfucking ${him} without mercy. ${He} begins to groan under the harsh anal pounding.`);
					} else {
						r.push(`${He} whines as you force your cock up ${his} tight ass. This is supposed to send a message, so you send a message, treating ${him} like a veteran anal whore who can take anything. ${He} begins to scream under the harsh pounding, ${his} poor little butthole unused to this kind of abuse.`);
					}
					seX(S.Nurse, "anal", V.PC, "penetrative");
				}
			} else {
				if (canDoVaginal(S.Nurse)) {
					if (S.Nurse.vagina > 2) {
						r.push(`To communicate your message, ${he} needs to be uncomfortable, so you carefully form your fingers into a beak shape and push your fist up inside ${him}. ${He} screams as your knuckles push past ${his} pussylips, and then starts to groan as you fistfuck ${his} lewd cunt.`);
					} else if (S.Nurse.vagina > 1) {
						r.push(`${He} gasps as you ram three fingers into ${his} cunt without any accommodation for ${his} comfort. This is supposed to send a message, so you send a message, fingerfucking ${him} without mercy. ${He} begins to groan under the harsh molestation.`);
					} else {
						r.push(`${He} whines as you force two fingers inside ${his} tight cunt. This is supposed to send a message, so you send a message, treating ${him} like a veteran whore who can take a serious fingerfucking. ${He} begins to groan under the harsh molestation, ${his} poor little pussy unused to this kind of abuse.`);
					}
					seX(S.Nurse, "vaginal", V.PC, "penetrative");
				} else {
					if (S.Nurse.anus > 2) {
						r.push(`To communicate your message, ${he} needs to be uncomfortable, so you carefully form your fingers into a beak shape and push your fist up ${his} ass. ${He} screams as your knuckles push past ${his} sphincter, and then starts to groan as you fistfuck ${his} lewd butthole.`);
					} else if (S.Nurse.anus > 1) {
						r.push(`${He} gasps as you ram three fingers up ${his} butt without any accommodation at all. This is supposed to send a message, so you send a message, fingerfucking ${his} asshole without mercy. ${He} begins to groan under the harsh anal molestation.`);
					} else {
						r.push(`${He} whines as you force two fingers inside ${his} tight ass. This is supposed to send a message, so you send a message, treating ${him} like a veteran whore who can take a serious anal fingerfucking. ${He} begins to groan under the harsh molestation, ${his} girly little butthole unused to this kind of abuse.`);
					}
					seX(S.Nurse, "anal", V.PC, "penetrative");
				}
			}
			r.push(`${subSlave.slaveName} lies forgotten underneath ${him}, insensible even with the Nurse's body being sawed back and forth across ${him2}. ${S.Nurse.slaveName} is such a horny slut that ${he} starts to enjoy ${himself} a little once ${he} gets used to what you're doing to ${him}, but then you climax and discard ${him}, leaving ${him} looking forlorn and tousled. ${He} knows ${he} crossed a line, and privately resolves to be a little less handsy in the future.`);
			S.Nurse.devotion += 4;
			App.Events.addParagraph(frag, r);
			return frag;
		}

		function sex() {
			const frag = new DocumentFragment();
			let r = [];
			r.push(`You announce your presence to ${S.Nurse.slaveName} by groping ${his}`);
			if (subSlave.butt > 7) {
				r.push(`absurd butt.`);
			} else if (subSlave.butt > 3) {
				r.push(`generous buttocks.`);
			} else {
				r.push(`cute behind.`);
			}
			r.push(`${He} jumps, startled, and emits a short scream of surprise that trails off into a moan of sexual anticipation as you continue to knead and massage ${his} ${S.Nurse.skin} bottom. ${He} starts thrusting again, but carefully, so gently that ${he} doesn't need to stop for you to insert`);
			if (V.PC.dick !== 0) {
				r.push(`your hard cock into ${his}`);
				if (canDoVaginal(S.Nurse)) {
					r.push(`hot cunt.`);
					seX(S.Nurse, "vaginal", V.PC, "penetrative");
				} else {
					r.push(`willing anus.`);
					seX(S.Nurse, "anal", V.PC, "penetrative");
				}
				if (V.PC.vagina !== -1) {
					r.push(`Then you grab one of ${his} hands and pull it down under ${him}. ${He} gets the idea, and fingers your pussy while you fuck ${him}.`);
				}
			} else {
				r.push(`a couple of fingers into ${his}`);
				if (canDoVaginal(S.Nurse)) {
					r.push(`hot cunt.`);
					seX(S.Nurse, "vaginal", V.PC, "penetrative");
				} else {
					r.push(`willing anus.`);
					seX(S.Nurse, "anal", V.PC, "penetrative");
				}
				r.push(`One of ${his} hands, now freed, snakes around between you to pleasure you in turn. Its index and ring fingers slide deliciously between your folds to either side of your moist channel, into which the middle finger begins to delve.`);
			}
			r.push(`You nip ${his} neck and pull ${his} upper torso and neck around far enough around for you to plant half a kiss on the side of ${his} panting mouth.`);
			App.Events.addParagraph(frag, r);
			r = [];
			App.Events.addParagraph(frag, [
				`This is far too much for ${S.Nurse.slaveName}, and ${he} shakes with orgasm. ${He} isn't getting off that easily; you fuck ${him} slowly, letting ${him} ride aftershocks until ${he} bottoms out and ${his} arousal starts to build again. ${He} never stopped gently thrusting into the insensible ${subSlave.slaveName}, who is so thoroughly affected by the drugs that only ${his2} unconscious bodily reactions offer any indication that ${he2}'s getting fucked too.`
			]);
			r.push(`When you finally finish with ${S.Nurse.slaveName} and step away, allowing ${him} to step back in turn, ${he} looks at you with flirty confidence and husks, "${Master}, that was really pervertedly good. Even by the standards around here." You make no verbal reply, but give ${him} an open-handed swat across ${his} ${S.Nurse.skin} buttocks as ${he} turns to clean up ${his} patient's asshole. ${He} squeaks with surprise a second time, so startled that`);
			if (V.PC.dick !== 0) {
				r.push(`${his} well-fucked`);
				if (canDoVaginal(S.Nurse)) {
					r.push(`cunt`);
				} else {
					r.push(`backdoor`);
				}
				r.push(`releases a blob of cum to go sliding down ${his} leg as ${he} works.`);
			} else {
				r.push(`${he} stumbles against ${subSlave.slaveName}'s boobs again.`);
			}
			App.Events.addParagraph(frag, r);
			App.Events.addParagraph(frag, [
				`The next morning, ${subSlave.slaveName} notices that ${his2} ass is a little sore, and ${he2} can't remember any reason why it would be. ${He2} shrugs. In ${his2} life, this is unsurprising.`
			]);
			S.Nurse.trust += 4;
			return frag;
		}
	}
};


code:
App.Events.petsStewardessBeating = class petsStewardessBeating extends App.Events.BaseEvent {
	eventPrerequisites() {
		return [
			() => !!S.Stewardess,
			() => S.Stewardess.actualAge >= 35 || V.AgePenalty === 0
		];
	}

	actorPrerequisites() {
		return [[
			s => [Job.HOUSE, Job.QUARTER].includes(s.assignment)
		]];
	}

	execute(node) {
		const subSlave = getSlave(this.actors[0]);
		let r = [];
		const {
			He, His,
			he, his, him, himself
		} = getPronouns(S.Stewardess);
		const {
			He2,
			he2, his2, him2, himself2
		} = getPronouns(subSlave).appendSuffix("2");

		App.Events.drawEventArt(node, [S.Stewardess, subSlave], [null, "no clothing"]);

		App.Events.addParagraph(node, [
			`Poor`,
			App.UI.DOM.slaveDescriptionDialog(subSlave),
			`clearly isn't working as hard as ${he2} should.`,
			App.UI.DOM.slaveDescriptionDialog(S.Stewardess),
			`has ${him2} bent over with ${his2} buttocks bare, and is administering a punishing spanking. ${subSlave.slaveName}'s ${subSlave.skin} skin is starting to show the force of the beating, and ${he2}'s begging desperately for mercy.`
		]);

		r.push(`${S.Stewardess.slaveName}, meanwhile, is obviously enjoying torturing the poor servant for ${his2} failings. ${He}'s `);
		if (S.Stewardess.chastityPenis === 1) {
			r.push(`using a couple of fingers to buttfuck ${himself}`);
		} else if (canAchieveErection(S.Stewardess)) {
			r.push(`jacking off furiously`);
		} else if (S.Stewardess.dick > 0) {
			r.push(`rubbing ${his} pathetically soft dick`);
		} else if (S.Stewardess.vagina === -1) {
			r.push(`desperately rubbing ${his} soft perineum`);
		} else {
			r.push(`rubbing ${his} sopping pussy`);
		}
		r.push(`with ${his} other hand, getting close to orgasm as the servant begs and moans.`);
		App.Events.addParagraph(node, r);

		App.Events.addResponses(node, [
			new App.Events.Result(`Fuck the servant's mouth as the stewardess beats ${him2}`, fuck),
			new App.Events.Result(`Make sure your stewardess remembers ${his} place`, remembers, S.Stewardess.anus === 0 ? `This option will take ${S.Stewardess.slaveName}'s anal virginity` : ``)
		]);

		function fuck() {
			const frag = new DocumentFragment();
			let r = [];
			r.push(`In a conversational tone of voice, you tell ${S.Stewardess.slaveName} to continue the spanking. ${subSlave.slaveName} has one anguished second to realize what's happening before you shove yourself`);
			if (V.PC.dick === 0) {
				r.push(`against ${his2} mouth.`);
			} else {
				r.push(`down ${his2} throat.`);
			}
			r.push(`${He2} gags reflexively, jerking back, only to jerk forward again in automatic pain avoidance when ${S.Stewardess.slaveName} hits ${his2} already-sore buttocks yet again. ${He2}'s broken enough to understand that ${he2} needs to relax and let ${himself2} be abused, but ${his2} body's reflexive responses deny ${him2} the relief that might be given. The sadistic stewardess comes twice before you do, a deliciously aggressive expression on ${his} face. Poor ${subSlave.slaveName} staggers off coughing, promising to never offend again.`);
			S.Stewardess.devotion += 4;
			subSlave.trust -= 5;
			seX(subSlave, "oral", V.PC, "penetrative");
			App.Events.addParagraph(frag, r);
			return frag;
		}

		function remembers() {
			const frag = new DocumentFragment();
			let r = [];
			r.push(`In a conversational tone of voice, you tell ${S.Stewardess.slaveName} to continue the spanking. You watch the milieu impassively, your presence slightly cramping ${his} style. The poor beaten servant staggers out of the room when fully punished; ${S.Stewardess.slaveName} didn't bring ${himself} to climax, obviously over concern about why you're taking such an interest. When you tell ${him} that ${he} needs to remember that ${he} is a slave, too, and only superior to ${his} charges by degree, ${his} face falls. ${He} has a few seconds to wonder what ${his} punishment will be before ${he} finds ${himself} shoved roughly up against the wall. When ${he} feels`);
			if (V.PC.dick === 0) {
				r.push(`a strap-on`);
			} else {
				r.push(`your cockhead`);
			}
			r.push(`pressing against ${his}`);
			if (S.Stewardess.anus > 2) {
				r.push(`massive`);
			} else if (S.Stewardess.anus > 1) {
				r.push(`loose`);
			} else {
				r.push(`tight`);
			}
			r.push(`anus, ${he} tries to hike a leg up to save ${himself} a bit of anal pain, but to little avail.`);
			if (S.Stewardess.anus > 2) {
				r.push(`Since ${his} ass is so loose, you push two fingers in alongside`);
				if (V.PC.dick === 0) {
					r.push(`the phallus,`);
				} else {
					r.push(`your dick,`);
				}
				r.push(`eliciting a shocked whine.`);
			} else if (S.Stewardess.anus > 1) {
				r.push(`${His} butt may be well-used, but you pound ${him} hard enough to let ${him} know ${he}'s still your butthole bitch.`);
			} else {
				r.push(`${His} ass is so tight that fucking it standing is punishment enough.`);
			}
			r.push(`${He} submissively takes ${his} buttfuck, and <span class="devotion inc">begs your forgiveness</span> when ${he} feels you`);
			if (V.PC.dick === 0) {
				r.push(`shoot your load up ${his} ass.`);
			} else {
				r.push(`shudder with orgasm.`);
			}
			r.push(VCheck.Anal(S.Stewardess, 1));
			S.Stewardess.devotion += 4;
			App.Events.addParagraph(frag, r);
			return frag;
		}
	}
};


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

	actorPrerequisites() {
		return [
			[
				s => s.assignment === Job.ARCADE,
				s => s.fetish !== "mindbroken",
				s => canMove(s) || hasAnyLegs(s),
				s => s.devotion < 45
			]
		];
	}

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

		App.Events.addParagraph(node, [`Slaves in your arcade are not immured in the facility permanently, since holding them in one position at all times would negatively impact their health. They are released to exercise, eat, bathe, and sleep, but for nothing else. You occasionally inspect them when they do so, to see that their harsh lives are not inappropriately difficult for them. One day when you are doing so, ${contextualIntro(V.PC, slave)} flings ${himself} on the ground in front of you the instant ${he} sees you.`]);

		let r = [];
		r.push(`Facing the ground, ${he}`);
		if (!canTalk(slave)) {
			r.push(`gestures`);
			if (hasAnyArms(slave)) {
				r.push(`with ${hasBothArms(slave) ? "shaking hands" : "a shaking hand"}`);
			} else {
				r.push(`in the limited capacity ${he} is cpapable of`);
			}
			r.push(`that ${he} cannot take any more. ${He} begs you abjectly to let ${him} out of the arcade and promises to be a perfect sex slave if you do.`);
		} else {
			if (SlaveStatsChecker.checkForLisp(slave)) {
				r.push(`lisps through tears`);
			} else {
				r.push(`sobs,`);
			}
			r.push(`"${Master}, ${Spoken(slave, "please. I can't take any more of this. Please let me out. I'll do anything")}, ${Master}. I'll love you forever, ${Master} — ${Spoken(slave, "just don't make me go back inside")} that wall."`);
		}
		App.Events.addParagraph(node, r);

		App.Events.addResponses(node, [
			new App.Events.Result(`Accept ${his} pledge`, accept),
			new App.Events.Result("Refuse", refuse),
		]);

		function accept() {
			slave.devotion = 45;
			removeJob(slave, "be confined in the arcade");
			return `When you accept, ${slave.slaveName} looks up at you in incomprehension, expecting you to correct yourself or reveal that this is a cruel trick. When you do neither, ${he} scrabbles spastically to your feet, kisses them as ${he} cries, and then clings to your knees, sobbing. ${He} is so relieved by this reprieve that ${he} is now on the cusp of devotion to you, and will obey out of near-paralytic fear of being sent back to the arcade.`;
		}

		function refuse() {
			return `${He} did not really expect mercy, but ${his} sobs take on a distinctly dark tone of hopelessness at your refusal. As you personally immure ${him} in the arcade for another day of endless dick, you wonder whether ${he}'ll damage ${his} throat with all the commotion ${he}'s making. Several of the other arcade slaves glance dully over at the noise. Then, they look away.`;
		}
	}
};


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

	execute(node) {
		App.Events.addParagraph(node, [`${capFirstChar(V.brothelName)} is well staffed, and does a busy trade in flesh 24 hours a day. With so many sex slaves in the Free Cities, brothels occupy a functional, nearly mechanical part of the sexual landscape. Free citizens and sometimes even favored slaves visit the brothel, select from the available merchandise, relieve their sexual needs, and leave. Affection, companionship, and emotional needs are available elsewhere.`]);
		App.Events.addParagraph(node, [`Of course, ${V.brothelName} is the best establishment of its kind in the arcology. Citizens who patronize it can expect themselves to be very well looked after by skilled slaves. The quality of the merchandise, the efficiency with which it is delivered, and the cleanliness and reputation of the premises reflect well on you, so much so that you could leverage this bustling sexual commerce in many ways.`]);

		repX(500, "event");

		App.Events.addResponses(node, [
			new App.Events.Result("Surprise the hardworking whores with a day of rest", rest, `This will cost ${cashFormat(1000)}`),
			new App.Events.Result("Hire an expert hooker to give lessons", lessons, `This will cost ${cashFormat(2000)}`),
			new App.Events.Result("Eliminate prices for one morning to promote the brothel", promote, `This will cost ${cashFormat(2000)}`),
		]);

		function rest() {
			cashX(-1000, "event");
			for (const slave of V.slaves.filter(s => s.assignment === Job.Brothel)) {
				slave.devotion += 4;
				slave.health.tired = 0;
			}
			return `The problem with assembly-line sex is that it has a tendency to destroy any sense of intimacy or fun. So, you make some simple preparations and close the brothel for a day, hiring some freelancers to cover. All your slave whores are allowed to sleep late, and then spend the day with you playing games and enjoying light amusements. The slaves are surprised by your generosity, but they have fun. Many of the games are sexually themed. One day of giggling and squealing can't completely reverse the transactionalization of sex for them, but they appreciate the effort.`;
		}
		function lessons() {
			cashX(-2000, "event");
			for (const slave of V.slaves.filter(s => s.assignment === Job.Brothel)) {
				slave.lastWeeksCashIncome += 250;
				slave.lifetimeCashIncome += 250;
				if (slave.skill.whoring < 100) {
					slave.skill.whoring += 10;
				} else {
					slave.devotion += 4;
				}
			}
			return `The citizen streetwalker has had her day. A few of the cleverest have avoided being driven into poverty, either by becoming madams or by finding a way to build a new career serving the slave brothel industry. One of these is touring the city, offering her long sexual experience in seminars for slave prostitutes. Her services are not cheap, but it rapidly becomes clear that they are worth it. She is a grey-haired but still elegant woman with deep crow's feet and a smoker's voice. She is not only a sexual master, but a hard-bitten and comprehensively experienced businesswoman. All of your brothel slaves with any room for improvement in their whoring skills learn from her lessons, while those who have nothing to learn gain confidence from her praise.`;
		}
		function promote() {
			repX(1000, "event");
			cashX(-2000, "event");
			for (const slave of V.slaves.filter(s => s.assignment === Job.Brothel)) {
				healthDamage(slave, 10);
				if (canDoVaginal(slave)) {
					seX(slave, "vaginal", "public", "penetrative", 5);
					if (canDoAnal(slave)) {
						seX(slave, "anal", "public", "penetrative", 5);
					} else {
						seX(slave, "vaginal", "public", "penetrative", 5);
					}
				} else if (canDoAnal(slave)) {
					seX(slave, "anal", "public", "penetrative", 10);
				}
				seX(slave, "oral", "public", "penetrative", 10);
			}
			return `The news that sex will be free at the brothel travels like wildfire. Security measures are necessary to control the throng that spends the entire day entering and leaving the brothel, though as the day goes on the crowds thin. By midmorning, all the holes on offer are so fucked out that only those who fetishize that sort of thing stick around. The brothel is a real seminal sewer by noon, and it smells like it. Nevertheless, free sex is a short route to public approval, though you do miss a morning's fees. The poor slave whores are fairly battered by so much wear and tear in so little time.`;
		}
	}
};


code:
App.Events.REBusyDairy = class REBusyDairy extends App.Events.BaseEvent {
	eventPrerequisites() {
		return [
			() => App.Entity.facilities.dairy.employeesIDs().size > 3,
			() => V.dairyRestraintsSetting < 2
		];
	}

	execute(node) {
		App.Events.addParagraph(node, [`${capFirstChar(V.dairyName)} is working away steadily. Its high-quality product reflects well on you, you muse one day as you inspect the premises. The gentle pneumatic sounds of the milkers and the whimpers of the cows being milked are a pleasant background for the thought.`]);
		App.Events.addParagraph(node, [`Even with high doses of modern drugs, human cows simply do not produce a very high volume of milk. This isn't much of a business problem, since it just means that the product can be sold at a high price. However, some of the more grandiose ideas about how to use milk have had to wait until you have enough cows producing enough milk to make them possible.`]);

		repX(500, "event");

		const choices = [];
		choices.push(new App.Events.Result("Share a milk bath with the cows", share, `This will cost ${cashFormat(1000)}`));
		if (V.club !== 0) {
			choices.push(new App.Events.Result("Add fresh milk to the club for a day to advertise", advertise, `This will cost ${cashFormat(2000)}`));
		}
		if (cumSlaves().length >= 5) {
			choices.push(new App.Events.Result("Cum in, milk out", cumLoop, `This will cost ${cashFormat(1000)}`));
		}
		App.Events.addResponses(node, choices);

		function share() {
			const dairySlaves = V.slaves.filter(s => s.assignment === Job.DAIRY);
			cashX(-1000, "event");
			for (const slave of dairySlaves) {
				slave.devotion += 4;
				SimpleSexAct.Slaves(slave, dairySlaves.filter(s => s.ID !== slave.ID).random());
				if (slave.actualAge < 24) {
					SimpleSexAct.Player(slave);
				} else {
					if (canDoVaginal(slave)) {
						actX(slave, "vaginal", 1);
					}
					if (slave.dick > 0 && slave.chastityPenis === 0) {
						actX(slave, "penetrative", 1);
					}
				}
				if (slave.boobs > 300) {
					actX(slave, "mammary", 2);
				}
				slave.health.tired = 0;
			}
			return `Milk is a fashionable skin treatment in the Free Cities, and many of the cows fetishize their breasts and their milk. Many of them giggle with delight when you bring them all into a large spa room with a huge tub full of their fresh milk. A pittance will be lost from sales, but it's hard to think of such things when swimming and splashing in warm, nutty mother's milk with so many huge-breasted slaves, many of whom are milking themselves into the bath. Some of the older ones relax and luxuriate, gently milking themselves and masturbating or pleasuring each other, according to taste. The younger cows prefer to rub themselves against you, taking turns being fucked. Regardless, they all appreciate such a special experience.`;
		}
		function advertise() {
			cashX(-2000, "event");
			repX(2500, "event");
			return `Sexual sights and sounds are all over the arcology. Nevertheless, passersby on the club are surprised to find one morning that a previously normal screen advertising your brand of milk has a luscious pair of breasts protruding through it at head height. The advertisement encourages anyone to try a free sample. The slaves constantly rotate, pressing fresh tits through the gap for public suckling. It is generally agreed that your product is of the finest quality and you even have enquiries about how it might be exported outside the arcology, should you manage to increase production.`;
		}
		function cumLoop() {
			repX(5000, "event");
			cashX(-1000, "event");
			return `As a promotional gimmick, you announce with considerable fanfare a special, experimental brand of milk, available at the normal price for a short time only. The milk will be unique in that it will be from cows fed mostly on slaves' cum; the cockmilked slaves will in turn be given as much milk as possible to produce a 'pure slave product,' recursively. The sad realities of nutrition stop it from being much more than a marketing ploy, but it's certainly a successful attempt to spark discussion.`;
		}
	}
};


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

	actorPrerequisites() {
		return [
			[
				(s) => s.daughters > 0,
				(s) => s.devotion > 50,
				(s) => s.anus !== 0,
				canWalk,
			],
			[
				s => s.mother === this.actors[0],
				(s) => s.devotion < 10,
				(s) => s.anus !== 0,
				canWalk
			]
		];
	}

	execute(node) {
		let r = [];
		const mommy = getSlave(this.actors[0]);
		const daughter = getSlave(this.actors[1]);
		const {
			he, him, his, mother
		} = getPronouns(mommy);

		const {
			his2, daughter2
		} = getPronouns(daughter).appendSuffix("2");

		App.Events.drawEventArt(node, [mommy, daughter], "no clothing");

		r.push(`${mommy.slaveName} and ${his} ${daughter2} are both having trouble getting acclimated to your ownership, with their obedience suffering as a result. Though neither of them have done anything particular egregious lately, their combined list of minor transgressions is reaching a point where rendering punishment on the two would not be seen as unfair. By happenstance they come before you for inspection one after the other. Though they certainly`);
		if (canSee(mommy) && canSee(daughter)) {
			r.push(`see each other naked frequently around`);
		} else {
			r.push(`are frequently naked around each other in`);
		}
		r.push(`the penthouse, neither seems particularly comfortable around the other when nudity is involved. While you finish ${mommy.slaveName}'s inspection, ${his} ${daughter2} fidgets uneasily even while trying to mimic the posture and appearance of an obedient slave. It occurs to you that the current situation presents an opportunity to do something about this resistant ${mother}-${daughter2} pair.`);
		App.Events.addParagraph(node, r);

		const choices = [];
		choices.push(new App.Events.Result(`Spend the evening gently acclimating them to your ownership`, gently));
		choices.push(new App.Events.Result(`Make an example of the ${mother}`, exampleMommy));
		App.Events.addResponses(node, choices);

		function gently() {
			const frag = new DocumentFragment();
			let r = [];
			r.push(`Though neither of the two vehemently protests your decision to have them both join you in bed, furtive uneasy glances are exchanged between the two. Since they're already naked, they clamber onto your bed before you and reluctantly kneel facing each other, leaving enough space between them for you${(canSee(mommy) && canSee(daughter)) ? "and for them to avert their eyes to avoid the other's nakedness" : ""}. They clearly assume you would start by using one of them, so they're quite taken aback when you remain standing at the edge of the bed and suggest that ${mommy.slaveName} play with ${his} ${daughter2}. ${daughter.slaveName} awkwardly flounders a little as ${his2} ${mother}'s`);
			if (hasBothArms(mommy)) {
				r.push(`hands roam`);
			} else if (hasAnyArms(mommy)) {
				r.push(`hand roams`);
			}
			r.push(`about ${his2} body, but does not reel back from the intimate touching. In time you instruct ${daughter.slaveName} to pleasure ${his2} ${mother}, but still decline to join the incestuous union unfolding on your sheets. You extend the foreplay for hours, bringing both ${mother} and ${daughter2} to such a state of naked arousal that they begin grinding against each other uninhibitedly. They are both so desperate for release that they do not object when you finally decide to join them, instead eagerly moving to include you in their coupling. What started with ${daughter.slaveName} awkwardly kneeling unmoving while ${his2} ${mother} sucked ${his2} nipples ends with ${daughter.slaveName}`);
			if (hasAllLimbs(daughter)) {
				r.push(`on all fours`);
			} else {
				r.push(`bent over`);
			}
			r.push(`getting fucked by you while orally pleasuring ${mommy.slaveName}. You gaze over at ${mommy.slaveName} and ${he} moans and licks ${his} lips enticingly back at you as ${daughter.slaveName} moans into ${his} fuckhole.`);
			r.push(`<span class="trust inc">They have both become more trusting of you.</span>`);

			mommy.trust += 4;
			daughter.trust += 4;
			seX(mommy, "oral", daughter, "oral");

			if (canDoAnal(mommy)) {
				actX(mommy, "anal");
			} else if (canDoVaginal(mommy)) {
				actX(mommy, "vaginal");
			}

			if (canDoAnal(daughter)) {
				actX(daughter, "anal");
			} else if (canDoVaginal(daughter)) {
				actX(daughter, "vaginal");
			}

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

		function exampleMommy() {
			const frag = new DocumentFragment();
			let r = [];
			r.push(`You give them orders of devastating simplicity: You are going to assrape ${mommy.slaveName} and if ${his} ${daughter2} offers even the most token of resistance, you'll punish ${mommy.slaveName}. They're stunned, but you shake them out of their shock by grabbing ${mommy.slaveName} by the arm${(V.PC.dick === 0) ? ", donning a strap-on" : ""} and shoving ${him} over your desk. ${daughter.slaveName} flinches visibly as you enter ${his2} ${mother}'s ass in one brutal stroke, for which you stain ${his2} ${mother}'s asscheeks a rosy red with a torrent of harsh spanks. ${mommy.slaveName} takes the rough anal pounding with only quiet sobbing and the occasional whimper of pain, but ${his} ${daughter2} can't bear to`);
			if (canSee(daughter)) {
				r.push(`see`);
			} else if (canHear(daughter)) {
				r.push(`hear`);
			} else {
				r.push(`have`);
			}
			r.push(`${mommy.slaveName} in such duress and breaks ${his2} short-lived silence to beg for mercy. When you step away from ${mommy.slaveName}, ${daughter.slaveName} lets out a sigh of relief, but ${his2} expression soon turns to horror and revulsion when you return to mount ${his2} ${mother} with a lash in hand.`);
			App.Events.addParagraph(frag, r);
			r = [];
			r.push(`When you eventually finish your merciless assrape of ${mommy.slaveName}, ${his} body is covered in bruises, marks, and handprints. A testament to ${daughter.slaveName}'s inability to keep ${his2} silence as you brutalized ${his2} ${mother}. You leave your office wordlessly to attend to other matters, while behind you ${daughter.slaveName} gazes`);
			if (canSee(daughter)) {
				r.push(`forlornly`);
			} else {
				r.push(`blindly`);
			}
			r.push(`at the gibbering mess you have reduced ${his2} ${mother} to. Your severe punishment of ${his2} ${mother} has encouraged ${daughter.slaveName} to fear you. ${mommy.slaveName} has been fucked into submission but your savage treatment has caused ${him} to hate buttsex.`);

			daughter.trust -= 10;
			mommy.devotion += 4;

			seX(mommy, "anal", V.PC, "penetrative");
			mommy.sexualFlaw = "hates anal";

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


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

	actorPrerequisites() {
		return [
			[
				(s) => s.sisters > 0,
				(s) => s.origin === "$He was sold into slavery by $his older sister.",
				canPenetrate,
			],
			[
				(s) => s.anus === 0,
				(s) => getSlave(this.actors[0]).devotion > (s.devotion + 20),
				(s) => areSisters(getSlave(this.actors[0]), s) > 0,
			]
		];
	}

	execute(node) {
		let r = [];
		const youngerSis = getSlave(this.actors[0]);
		const olderSis = getSlave(this.actors[1]);
		const {
			He, His,
			he, him, his, himself,
		} = getPronouns(youngerSis);
		const {
			title: Master
		} = getEnunciation(youngerSis);

		const {
			his2, him2, sister2, girl2
		} = getPronouns(olderSis).appendSuffix("2");

		App.Events.drawEventArt(node, [youngerSis, olderSis], "no clothing");

		r.push(
			`${youngerSis.slaveName}, whose older ${sister2} tried to sell ${him} to you, is up for inspection. As usual, you pepper your inspection with questions about ${his} duties, ${his} feelings about ${his} physical condition, and experiences. More information about one's property is never a bad thing. When the inspection reaches ${youngerSis.slaveName}'s asshole, you ask whether ${he} enjoyed having ${his} older ${sister2} sell ${his} butt.`,
			Spoken(youngerSis, `"No, ${Master},"`),
			`${he} says.`
		);
		App.Events.addParagraph(node, r);

		const choices = [];
		choices.push(new App.Events.Result(`Turnabout is fair play`, turn));
		choices.push(new App.Events.Result(`Let ${him} have ${his} revenge, but remind ${him} of ${his} place`, place));
		App.Events.addResponses(node, choices);

		function turn() {
			const frag = new DocumentFragment();
			let r = [];
			r.push(`${olderSis.slaveName} is brought in. You gag ${him2}, throw the resisting bitch down on the couch, and hold ${him2} there. Then, you peremptorily order the wide-eyed ${youngerSis.slaveName} to`);
			if (canDoAnal(olderSis)) {
				r.push(`sodomize`);
			} else {
				r.push(`facefuck`);
			}
			r.push(`${his} ${sister2}. ${He} stares open mouthed for a moment, but comes over obediently. ${His} face is a strange mix of vengeful eagerness, revulsion, and even a little lust. ${He} shoves ${himself} into the frantically struggling ${girl2}'s`);
			if (canDoAnal(olderSis)) {
				r.push(`butt`);
			} else {
				r.push(`jaw`);
			}
			r.push(`without mercy. ${His} cock is`);
			if (youngerSis.dick < 3) {
				r.push(`pathetically small,`);
			} else if (youngerSis.dick < 5) {
				r.push(`nothing out of the ordinary,`);
			} else if (youngerSis.dick < 7) {
				r.push(`admittedly nothing to scoff at,`);
			} else {
				r.push(`a source of great envy amongst your slaves,`);
			}
			r.push(`but by how ${olderSis.slaveName} reacts it might as well be a baseball bat. ${youngerSis.slaveName} rarely gets to penetrate anything, mostly serving as an oral slut${canDoAnal(youngerSis) ? "and anal cocksleeve" : ""}, so ${he} comes in no time and takes a turn holding ${olderSis.slaveName} down${canDoAnal(olderSis) ? `so you can claim sloppy seconds on ${his2} spasming butthole` : ""}.`);
			r.push(`${youngerSis.slaveName} has become more devoted to you, while ${olderSis.slaveName} hates you and has become more afraid of you,${canDoAnal(olderSis) ? `and <span class="virginity loss">${olderSis.slaveName} has lost ${his2} anal virginity.</span>` : `.`}`);
			youngerSis.devotion += 4;

			olderSis.trust -= 5;
			olderSis.devotion -= 4;
			if (canDoAnal(olderSis)) {
				olderSis.anus = 1;
				seX(youngerSis, "penetrative", olderSis, "anal");
			} else {
				seX(youngerSis, "penetrative", olderSis, "oral");
			}
			App.Events.addParagraph(frag, r);
			return frag;
		}

		function place() {
			const frag = new DocumentFragment();
			let r = [];
			r.push(`${olderSis.slaveName} is brought in. You gag ${him2}, throw the resisting bitch down on the couch, and hold ${him2} there. Then, you peremptorily order the wide-eyed ${youngerSis.slaveName} to put ${his} cock`);
			if (canDoAnal(olderSis)) {
				r.push(`up ${his} ${sister2}'s ass,`);
			} else {
				r.push(`in ${his} ${sister2}'s mouth,`);
			}
			r.push(`and then hold it there. ${He} stares open mouthed for a moment, but comes over obediently. ${His} face is a strange mix of vengeful eagerness, revulsion, and even a little lust. ${He} shoves ${himself} into the frantically struggling ${girl2}'s`);
			if (canDoAnal(olderSis)) {
				r.push(`butt`);
			} else {
				r.push(`jaw`);
			}
			r.push(`without mercy. ${His} cock is`);
			if (youngerSis.dick < 3) {
				r.push(`pathetically small,`);
			} else if (youngerSis.dick < 5) {
				r.push(`nothing out of the ordinary,`);
			} else if (youngerSis.dick < 7) {
				r.push(`admittedly nothing to scoff at,`);
			} else {
				r.push(`a source of great envy amongst your slaves,`);
			}
			r.push(`but by how ${olderSis.slaveName} reacts it might as well be a baseball bat. ${youngerSis.slaveName} obeys your orders and holds still after inserting ${himself}. You`);
			if (V.PC.dick === 0) {
				r.push(`don a strap-on,`);
			}
			r.push(`move around`);
			if (canDoAnal(youngerSis)) {
				r.push(`behind ${him} and start ass`);
			} else {
				r.push(`in front of ${him} and start face-`);
			}
			r.push(`fucking ${him} in turn, slowly permitting ${him} to find a rhythm where ${he} can fuck and get fucked at the same time. ${He}'s getting it much harder than ${he}'s giving it but ${he}'s experienced enough that ${he} comes quickly.`);
			r.push(`${youngerSis.slaveName} has become more devoted to you, while ${olderSis.slaveName} has become more rebellious,${(canDoAnal(olderSis)) ? ` and <span class="virginity loss">${olderSis.slaveName} has lost ${his2} anal virginity.</span>` : `.`}`);
			youngerSis.devotion += 4;
			if (canDoAnal(youngerSis)) {
				seX(youngerSis, "anal", V.PC, "penetrative");
			} else {
				seX(youngerSis, "oral", V.PC, "penetrative");
			}

			olderSis.devotion -= 5;
			if (canDoAnal(olderSis)) {
				olderSis.anus = 1;
				seX(youngerSis, "penetrative", olderSis, "anal");
			} else {
				seX(youngerSis, "penetrative", olderSis, "oral");
			}
			App.Events.addParagraph(frag, r);
			return frag;
		}
	}
};


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

	get weight() {
		return either(0, 1); // Originally rolled opposed to "RE Poker Night"
	}

	execute(node) {
		const bountyFee = 5000;
		const minAge = (V.pedo_mode === 1) ? 21 : 38;
		const genParam = {
			minAge: minAge, maxAge: 43, ageOverridesPedoMode: 1, race: "nonslave", disableDisability: 1
		};
		const slave = GenerateNewSlave(V.seeDicks !== 100 ? "XX" : "XY", genParam);
		slave.origin = "You sentenced $him to enslavement as a punishment for dereliction of $his duty to you as a mercenary and for theft.";
		slave.career = "a soldier";
		slave.devotion = random(-75, -60);
		slave.trust = random(-15, 0);
		setHealth(slave, jsRandom(60, 80));
		slave.muscles = 50;
		slave.weight = random(-10, 10);
		eyeSurgery(slave, "both", "normal");
		slave.hears = 0;
		slave.anus = 0;
		slave.skill.anal = 0;
		slave.skill.whoring = 0;
		slave.skill.combat = 1;
		slave.behavioralFlaw = "arrogant";
		slave.sexualFlaw = "crude";
		slave.hStyle = "shaved into a mohawk";
		slave.custom.tattoo = "$He has a number of tattoos from a variety of mercenary companies.";
		slave.clothes = "a military uniform";

		const {
			He,
			he, him, his, woman
		} = getPronouns(slave);
		const {
			HeA
		} = getPronouns(assistant.pronouns().main).appendSuffix("A");
		App.Events.drawEventArt(node, slave);

		App.Events.addParagraph(node, [`Human soldiers are superior to drones in a number of ways — they have the capability for suspicion, the ability to understand human interactions, and are impervious to the ever-present threat of cyber-warfare. That said, a crucial failing of any sentient warrior is their agency.`]);
		let r = [];
		r.push(`On this particular evening, you find your work interrupted by an urgent alert from ${V.assistant.name}${(V.seeImages === 1) ? ", accompanied by a recent picture" : ""}.`);
		if (V.assistant.personality > 0) {
			r.push(`"${properMaster()}, one of the ${V.mercenariesTitle} has gone AWOL." ${HeA} pauses before continuing. "${He}'s taken a number of weapons with ${him}."`);
		} else {
			r.push(`${HeA} informs you that one of the ${V.mercenariesTitle} has disappeared, seemingly taking with ${him} a small stash of weapons.`);
		}

		App.Events.addParagraph(node, r);

		App.Events.addParagraph(node, [`Your window of opportunity to act is closing. If you have plans for punishing this dereliction from your authority, they must be set in motion now.`]);

		const choices = [];
		choices.push(new App.Events.Result(`Let them go`, release));
		choices.push(new App.Events.Result(`Let your mercenaries handle ${him}`, merc));
		if (V.SF.Toggle && V.SF.Active >= 1) {
			choices.push(new App.Events.Result(`Let your ${V.SF.Lower} handle ${him}`, SF));
		}
		if (V.cash < 5000) {
			choices.push(new App.Events.Result(null, null, "You lack the necessary funds to put out a bounty."));
		} else {
			choices.push(new App.Events.Result(`Put out a bounty on ${his} head`, bounty, `It will cost ${cashFormat(bountyFee)} to put out a bounty on ${him}.`));
		}
		App.Events.addResponses(node, choices);

		function release() {
			repX(-1000, "event", slave);
			return `You inform your personal assistant that you aren't planning to take any action. By the next morning, word has spread to the rest of your arcology that crossing you is apparently permissible and your reputation has suffered as a result.`;
		}

		function merc() {
			if (random(1, 100) > 50) {
				return `Despite the trouble ${he} has caused you, the culmination of this mercenary's wanton flight from the rest of the ${V.mercenariesTitle} is decidedly an anti-climax. The last you hear of the matter is a chorus of grim grunts and nods as your mercenaries file back into the arcology. The matter is done.`;
			} else {
				return `Your mercenaries return to tell you that they could not find the mutineer. It could be that ${he} managed to escape beyond their reach or that one among your 'loyal' retainers allowed ${him} to flee your judgment, but alas there is little that can be done to remedy the issue now. Still, aside from a slight grumbling within the arcology, few fault you for allowing the ${V.mercenariesTitle} to recapture one of their own — even if they failed to do so.`;
			}
		}

		function SF() {
			const frag = new DocumentFragment();
			let r = [];
			r.push(`You take a tablet and send ${App.SF.SFC()} a notice about the mutinous mercenary. When you have the majority of the pertinent details committed to text, all that remains is to decide the fate of your quarry.`);
			App.Events.addParagraph(frag, r);

			const choices = [];
			choices.push(new App.Events.Result(`You want ${him} dead`, dead));
			choices.push(new App.Events.Result(`You want ${him} alive`, alive));
			App.Events.addResponses(frag, choices);
			return frag;

			function dead() {
				repX(5000, "event", slave);
				V.arcologies[0].prosperity = Math.min(V.arcologies[0].prosperity+2, V.AProsperityCap);
				return `Despite the trouble ${he} has caused you, the culmination of this mercenary's wanton flight from the rest of the ${V.mercenariesTitle} is decidedly anti-climatic. The last you hear of ${him} is in the footnote of one of your daily reports, with some minute yet suitably gory pictures as an accompaniment. When the stolen weapons are returned to their rightful place in your arcology, the unfortunate matter is concluded once and for all. Your reputation and ${V.arcologies[0].name}'s prosperity improves, a result of the fear crossing you will bring, in addition to showing your citizens that you are willing and able to deal with such matters in-house.`;
			}

			function alive() {
				const frag = new DocumentFragment();
				let r = [];
				slave.clothes = "chains";
				App.Events.refreshEventArt(slave);
				r.push(`It doesn't take long for a squad of ${V.SF.Lower} to track ${him} down. Soon you have the troublesome turncoat before you in chains.`);
				App.Events.addParagraph(frag, r);

				const choices = [];
				choices.push(new App.Events.Result(`Enslave ${him}`, enslave));
				choices.push(new App.Events.Result(`Flog ${him} in public then exile ${him} from the arcology`, () => flog(true)));
				App.Events.addResponses(frag, choices);

				return frag;
			}
		}

		function bounty() {
			const frag = new DocumentFragment();
			let r = [];
			r.push(`You take a tablet and draft a bounty notice for the mutinous mercenary. When you have the majority of the pertinent details committed to text, all that remains is to decide the fate of your quarry.`);
			App.Events.addParagraph(frag, r);

			const choices = [];
			choices.push(new App.Events.Result(`You want ${him} dead`, dead));
			choices.push(new App.Events.Result(`You want ${him} alive`, alive));
			App.Events.addResponses(frag, choices);
			return frag;

			function dead() {
				repX(5000, "event", slave);
				cashX(-bountyFee, "capEx");
				return `Despite the trouble ${he} has caused you, the culmination of this mercenary's wanton flight from the rest of the ${V.mercenariesTitle} is decidedly an anti-climax. The last you hear of ${him} is in the footnote of one of your daily reports, with some minute yet suitably gory pictures as an accompaniment. When the stolen weapons are returned to their rightful place in your arcology, the unfortunate matter is concluded once and for all. Your reputation improves, a result of the fear of crossing you that your unpleasantness has inspired.`;
			}

			function alive() {
				const frag = new DocumentFragment();
				let r = [];
				slave.clothes = "chains";
				App.Events.refreshEventArt(slave);
				r.push(`It doesn't take long for some hired guns, motivated by the bounty, to track ${him} down. Soon you have the troublesome turncoat before you in chains.`);
				cashX(-bountyFee, "event", slave);
				App.Events.addParagraph(frag, r);
				const choices = [];
				choices.push(new App.Events.Result(`Enslave ${him}`, enslave));
				choices.push(new App.Events.Result(`Flog ${him} in public then exile ${him} from the arcology`, () => flog(false)));
				App.Events.addResponses(frag, choices);
				return frag;
			}
		}

		function flog(inHouse) {
			let r = [];
			r.push(`An example must be made. There is a binding contract between you and your ${V.mercenariesTitle}, and this ${woman} attempted to undermine it for ${his} own selfish profit. The protesting bitch is stripped and flogged on the promenade before being escorted bleeding from the arcology. The public approves of this harshness.`);
			repX(5000, "event", slave);
			if (inHouse) {
				r.push(`In addition <span class="prosperity inc">Arcology prosperity improves,</span> a result of showing your citizens that you are willing and able to deal with such matters in-house.`);
				V.arcologies[0].prosperity = Math.min(V.arcologies[0].prosperity+2, V.AProsperityCap);
			}
			return r;
		}

		function enslave() {
			let r = [];
			r.push(`Despite the trouble ${he} has caused you, you manage to complete the legalities and biometric scanning quickly and without incident. Of course, this is in large part due to the fact that the would-be mutineer is of course restrained. Based on the accounts of ${his} captors and the numerous injuries evident amongst them, ${he} is likely to be violent when ${he} is finally released.`);
			r.push(App.UI.newSlaveIntro(slave));
			return r;
		}
	}
};


code:
App.Events.REAnalPunishment = class REAnalPunishment extends App.Events.BaseEvent {
	eventPrerequisites() {
		return [
			() => V.HeadGirlID !== 0,
			() => V.HGSeverity >= 0
		];
	}

	actorPrerequisites() {
		return [[
			(s) => s.devotion <= 50,
			(s) => s.anus !== 0,
			(s) => s.fetish !== "mindbroken",
			canDoAnal,
			canMove,
			hasAnyArms,
			canTalk,
			canHear,
			canSee
		]];
	}

	execute(node) {
		let r = [];
		const slave = getSlave(this.actors[0]);

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

		const {title: Master} = getEnunciation(slave);

		const {
			He2,
			he2, his2, him2, himself2
		} = getPronouns(S.HeadGirl).appendSuffix("2");

		App.Events.drawEventArt(node, [slave, S.HeadGirl], "no clothing");

		r.push(
			`As you're making the rounds through your penthouse, you hear ${S.HeadGirl.slaveName} speaking in the tones ${he2} uses to castigate misbehaving slaves in the next room. When you appear in the doorway, you have little chance to survey the situation before`,
			App.UI.DOM.combineNodes(
				contextualIntro(S.HeadGirl, slave, true),
				`, apparently the miscreant, flings ${himself} at your feet. ${He} clings to one of your legs convulsively, choking on tears as ${he} stares up at you and tries to muster an explanation. After two false starts, ${he} manages to start begging.`
			),
			Spoken(slave, `"Please, ${Master},"`),
			`${he} wails miserably.`,
			Spoken(slave, `"Please don't let ${him2} rape my butt."`)
		);

		App.Events.addParagraph(node, r);
		r = [];
		r.push(`You shoot an amused glance at ${S.HeadGirl.slaveName}, who smiles back as ${he2} explains the slave's minor sin and ${his2} intention to sodomize the malefactor. ${He2} does not bother to keep an edge of anticipation out of ${his2} voice, and ${slave.slaveName} cries harder and clings to you with renewed force as your Head Girl pronounces ${his2} intention with cruel clarity.`);
		if (slave.boobs > 4000) {
			r.push(`The supplicant's breasts are so huge that ${his} embrace of your leg has completely surrounded it in deliciously heaving breastflesh.`);
		} else if (slave.boobs > 1000) {
			r.push(`The weight of the supplicant's breasts is quite noticeable as ${his} embrace of your leg presses them against it.`);
		}
		r.push(`You look down at ${slave.slaveName}. ${He} stares back with huge wet ${App.Desc.eyesColor(slave)}, doing ${his} best to implore you with ${his} gaze, and`);
		if (slave.belly < 10000) {
			r.push(`scooting ${his} rear in towards your foot`);
		} else {
			r.push(`struggling to hide ${his} rear`);
		}
		r.push(`in an unconscious effort to protect it from the promised assrape. ${He}'s quite authentically terrified; ${his} whole body is shaking.`);
		App.Events.addParagraph(node, r);
		r = [];
		r.push(`${S.HeadGirl.slaveName} is very much acting within ${his2} duties, and ${slave.slaveName} has now misbehaved twice by trying to go over your Head Girl's head by appealing to you. ${S.HeadGirl.slaveName} is ready to carry out the sentence:`);
		if (canPenetrate(S.HeadGirl) && (S.HeadGirl.dick > 2)) {
			r.push(`${his2} cock is fully erect, and ${he2}'s keeping it hard with one hand. ${He2} slaps its head against ${his2} other palm,`);
		} else if (S.HeadGirl.dick > 0) {
			r.push(`since ${his2} dick isn't an appropriate instrument for inflicting anal pain, ${he2}'s got an elephantine dildo ready. ${He2} slaps it against ${his2} palm,`);
		} else {
			r.push(`${He2}'s got an elephantine dildo ready, and ${he2} slaps it against ${his2} palm,`);
		}
		r.push(`forcing a frightened moan from ${slave.slaveName}.`);

		App.Events.addParagraph(node, r);

		const choices = [];
		choices.push(new App.Events.Result(`Carry on`, carryOn));
		choices.push(new App.Events.Result(`Take part`, takePart));
		choices.push(new App.Events.Result(`Take pity`, takePity));
		App.Events.addResponses(node, choices);

		function carryOn() {
			const frag = new DocumentFragment();
			let r = [];
			r.push(`You ignore ${slave.slaveName} — no small feat, since the poor`);
			if (slave.physicalAge > 30) {
				r.push(`${woman}`);
			} else {
				r.push(`${girl}`);
			}
			r.push(`is clinging to your leg — and tell ${S.HeadGirl.slaveName} to carry on. Your Head Girl puffs up a bit with pride, and orders the weeping slave to present ${his} anus. The ${(slave.physicalAge > 30) ? woman : girl} does not resist, but nor does ${he} comply. ${S.HeadGirl.slaveName} jabs a thumb into ${slave.slaveName}'s side, right above ${his} kidney, driving the wind out of the slave with a pained grunt. ${He} arches ${his} back involuntarily and ${his} grip on you loosens, and ${S.HeadGirl.slaveName} drags ${him} off you. ${He2} jabs ${him} again, depriving ${his2} victim of breath completely, and then takes ${him2} by the ankle, dragging the slave across the floor with comic effect. The slave leaves a trail of tears across the flooring as ${he} vanishes into the room. As you continue making your rounds, you hear a drawn-out howl followed by rhythmic screaming.`);
			seX(slave, "anal", S.HeadGirl, "penetrative", 1);
			S.HeadGirl.trust += 4;

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

		function takePart() {
			const frag = new DocumentFragment();
			let r = [];
			r.push(`You explain ${slave.slaveName}'s double crime to ${him}, and tell ${S.HeadGirl.slaveName} to get started. Your Head Girl orders the weeping slave to present ${his} anus. The ${(slave.physicalAge > 30) ? woman : girl} does not resist, but nor does ${he} comply. ${S.HeadGirl.slaveName} jabs a thumb into ${slave.slaveName}'s side, right above ${his} kidney, driving the wind out of the slave with a pained grunt. ${He} arches ${his} back involuntarily and ${his} grip on you loosens, so ${S.HeadGirl.slaveName} drags ${him} off you, telling ${slave.slaveName} that it'll hurt less if ${he} cooperates and assumes the proper position. ${He} doesn't, so ${S.HeadGirl.slaveName}`);
			if (slave.belly < 1500) {
				r.push(`assfucks ${him} lying flat on the floor,`);
			} else {
				r.push(`painfully assfucks ${him} against ${his} ${belly} middle.`);
			}
			r.push(`with the poor ${girl} sobbing loudly as ${S.HeadGirl.slaveName}`);
			if (canPenetrate(S.HeadGirl) && (S.HeadGirl.dick > 2)) {
				r.push(`pistons ${his2} cock in and out of ${his} rectum.`);
			} else {
				r.push(`rams the massive dildo up ${his} butt.`);
			}
			App.Events.addParagraph(frag, r);
			r = [];
			r.push(`After enjoying the spectacle for a while, you judge that the slave's sphincter is loose enough and tell ${S.HeadGirl.slaveName} to flip the bitch over. ${He2} obeys, chuckling, sitting ${himself2} down and hauling the reluctant slave onto ${his2} lap by seizing a nipple and pulling it into position so the agonized slave is forced to follow.`);
			if (canPenetrate(S.HeadGirl) && (S.HeadGirl.dick > 2)) {
				r.push(`${S.HeadGirl.slaveName} reinserts ${his2} dick,`);
			} else {
				r.push(`${S.HeadGirl.slaveName} maneuvers the dildo down over ${his2} own crotch, approximating the position of a natural cock and using its base to stimulate ${himself2}. ${He2} reinserts it,`);
			}
			r.push(`intentionally missing twice to keep the experience unpleasant despite ${his2} victim's well-fucked backdoor.`);
			App.Events.addParagraph(frag, r);
			r = [];
			r.push(`${slave.slaveName}, now facing upward rather than having ${his} face ground into the floor, notices for the first time that`);
			if (V.PC.dick !== 0) {
				r.push(`you've got your dick out and hard.`);
			} else {
				r.push(`you've donned one of your punishment-sized strap-ons.`);
			}
			r.push(`${His} ${App.Desc.eyesColor(slave)} <span class="trust dec">fly open with horror</span> as you kneel down and smack its head against ${his}`);
			if (slave.vagina > -1) {
				r.push(`poor pussy,`);
			} else {
				r.push(`stretched taint,`);
			}
			r.push(
				`but ${he} doesn't realize how comprehensively fucked ${he} is until you press it against the top of ${his} already-stretched anal sphincter.`,
				Spoken(slave, `"Please no, ${Master}! It won't fit! Please ${(slave.vagina > 0) ? "put it in my pussy" : "let me suck it"} instead,"`),
				`${he} begs desperately.`,
				Spoken(slave, `"I p-promise I'll be a g-good`),
			);
			if (girl === "girl") {
				r.push(Spoken(slave, `giiAAIIEEHH,"`));
			} else if (girl === "boy") {
				r.push(Spoken(slave, `boAAIIEEHH,"`));
			} else if (girl === "toy") {
				r.push(Spoken(slave, `toAAIIEEHH,"`));
			} else {
				r.push(Spoken(slave, `slaAAIIEEHH,"`));
			}
			r.push(
				`${he} howls. ${He} gasps for air, tears streaming down ${his} ${slave.skin} cheeks, and then continues:`,
				Spoken(slave, `"AAAH! FUCK! TAKE IT OUUUT! N-NOOO, PLEASE DON'T THRUST — AAAH! AAAH! AAAH!"`)
			);

			seX(slave, "anal", S.HeadGirl, "penetrative");
			seX(slave, "anal", V.PC, "penetrative");
			S.HeadGirl.devotion += 4;
			slave.trust -= 5;

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

		function takePity() {
			const frag = new DocumentFragment();
			let r = [];
			r.push(`You tell ${S.HeadGirl.slaveName} you've decided to be merciful, just this once. ${slave.slaveName} holds your leg even harder, sobbing ${his} thanks over and over until you reach down, pat ${his} head, and tell ${him} it will be all right, calming the hysterical`);
			if (slave.physicalAge > 30) {
				r.push(`${woman}.`);
			} else {
				r.push(`${girl}.`);
			}
			r.push(`${S.HeadGirl.slaveName}, meanwhile, stammers an apology. ${He2} hurries about ${his2} business, badly puzzled and more than a little shaken. ${He2} thought ${he2} had the authority to anally rape misbehaving slaves, but ${he2}'s no longer so sure of ${his2} rights and responsibilities.`);
			slave.trust += 4;
			S.HeadGirl.trust -= 15;

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