code:
/** @param {"victory"|"mercs"} condition */
globalThis.pRivalryCapture = function(condition) {
	const el = new DocumentFragment();
	let rivalType;
	const slave = createRival();
	const {his, he, him, He} = getPronouns(slave);
	let r = [];
	V.rival.state = 3; // trigger P Rival Initiation
	V.rival.prosperity = 0;
	V.rival.power = 0;
	delete V.rival.gender;

	App.Events.drawEventArt(el, slave);

	r.push(`Your`);
	if (condition === "mercs") {
		r.push(`target is quickly delivered. Politely dismissing the head of your ${V.mercenariesTitle}, you savor`);
	} else {
		r.push(`bounty is quickly claimed, and you are treated to`);
	}
	r.push(`the delicious moment of finding your rival on`);
	if (hasBothLegs(slave)) {
		r.push(`${his} knees`);
	} else {
		r.push(`the ground`);
	}
	r.push(`in front of you with a black bag over ${his} head and ${his} hands cuffed behind ${him}. ${He}'s one of your slaves now, fundamentally no different than any other. Looking ${him} over, the causes of ${his} downfall are`);
	switch (rivalType) {
		case "expansionist shemale":
			r.push(`immediately apparent: ${he}'s obviously been indulging in self-transformation to excess.`);
			break;
		case "cum addict":
			r.push(`immediately apparent: there's nothing wrong with having cumflation and ball expansion fetishes, but applying them to oneself can be addictive.`);
			break;
		case "hung shota":
			r.push(`not immediately apparent: ${he}'s young, in good shape, and not lacking down there at all.`);
			break;
		case "masculine":
			r.push(`not immediately apparent: ${he}'s in good shape, if quite masculine.`);
			break;
		case "micropenis":
			r.push(`immediately apparent: ${he}'s got a slavegirl's cock and balls, not an arcology owner's.`);
			break;
		case "bull dyke":
			r.push(`not immediately apparent: though female, ${he}'s obviously no stranger to taking a dominant sexual role, to put it politely.`);
			break;
		case "breeder":
			r.push(`immediately apparent: there's nothing wrong with having a pregnancy fetish, but applying it to oneself is ill-fitting for an arcology owner.`);
			break;
		case "oppai loli":
			r.push(`immediately apparent: ${he}'s young, inexperienced, and extremely top heavy.`);
			break;
		case "cow":
			r.push(`immediately apparent: there's nothing wrong with having lactation and breast expansion fetishes, but applying them to oneself can be addictive.`);
			break;
		case "bimbo":
			r.push(`immediately apparent: there's nothing wrong with having a bimbo fetish, but applying it to oneself can be addictive.`);
			break;
		default:
			r.push(`immediately apparent: ${he} seems to have recently fallen into serious aphrodisiac addiction.`);
	}
	el.append(r.join(" "));

	V.rival.ID = slave.ID;
	el.append(App.UI.newSlaveIntro(slave));

	return el;

	/**
	 * @returns {App.Entity.SlaveState}
	 */
	function createRival() {
		let slave;
		const rivalTypeArray = [];
		/** @type {FC.Race} */
		let race;
		let minAge;
		let maxAge;
		let pedo;
		if (V.rival.gender === 2) {
			rivalTypeArray.push("expansionist shemale");
			rivalTypeArray.push("masculine");
			rivalTypeArray.push("micropenis");
			rivalTypeArray.push("cum addict");
			if (V.pedo_mode === 1) {
				rivalTypeArray.push("hung shota");
			}
		} else {
			rivalTypeArray.push("bull dyke");
			rivalTypeArray.push("cow");
			rivalTypeArray.push("bimbo");
			rivalTypeArray.push("addict");
			if (V.seePreg === 1) {
				rivalTypeArray.push("breeder");
			}
			if (V.pedo_mode === 1) {
				rivalTypeArray.push("oppai loli");
			}
		}
		rivalType = rivalTypeArray.random();

		if (V.rival.race && App.Data.misc.filterRacesPublic.has(V.rival.race)) {
			race = V.rival.race;
		}
		switch (rivalType) {
			case "expansionist shemale":
				slave = GenerateNewSlave("XY", {
					minAge: 18, maxAge: 42, race: race, disableDisability: 1
				});
				slave.face = 100;
				slave.faceImplant = 15;
				slave.faceShape = "androgynous";
				slave.muscles = 20;
				slave.height = random(185, 215);
				slave.lips = 35;
				slave.butt = either(4, 5, 6);
				slave.boobs = either(800, 1000, 1200);
				slave.dick = 6;
				if (slave.foreskin > 0) {
					slave.foreskin = slave.dick;
				}
				slave.balls = 10;
				slave.anus = 3;
				slave.vagina = -1;
				slave.weight = 20;
				slave.skill.oral = 100;
				slave.skill.anal = 100;
				slave.skill.whoring = 15;
				slave.skill.entertainment = 100;
				slave.skill.combat = 0;
				slave.piercing.genitals.weight = 2;
				slave.piercing.nipple.weight = 1;
				slave.piercing.ear.weight = 1;
				slave.piercing.tongue.weight = 1;
				slave.piercing.eyebrow.weight = 1;
				slave.behavioralFlaw = "odd";
				slave.behavioralQuirk = "confident";
				slave.sexualFlaw = "judgemental";
				slave.sexualQuirk = "romantic";
				slave.hStyle = "luxurious";
				slave.hLength = 80;
				break;
			case "cum addict":
				slave = GenerateNewSlave("XY", {
					minAge: 18, maxAge: 42, race: race, disableDisability: 1
				});
				slave.chem = 3000;
				slave.face = 100;
				slave.faceShape = "masculine";
				slave.muscles = 100;
				slave.height = random(185, 215);
				slave.lips = 10;
				slave.butt = 10;
				slave.boobs = either(100, 200);
				slave.dick = 6;
				slave.foreskin = 0;
				slave.balls = 300;
				slave.scrotum = 280;
				slave.anus = 3;
				slave.vagina = -1;
				slave.weight = -35;
				slave.skill.oral = 0;
				slave.skill.anal = 100;
				slave.skill.whoring = 15;
				slave.skill.entertainment = 100;
				slave.skill.combat = 0;
				slave.piercing.dick.weight = 2;
				slave.fetish = "pregnancy";
				slave.fetishStrength = 100;
				slave.behavioralFlaw = "odd";
				slave.behavioralQuirk = "confident";
				slave.sexualFlaw = "cum addict";
				slave.sexualQuirk = "size queen";
				slave.hStyle = "neat";
				slave.hLength = 20;
				break;
			case "hung shota":
				slave = GenerateNewSlave("XY", {
					minAge: V.minimumSlaveAge, maxAge: 42, race: race, disableDisability: 1
				});
				slave.face = 100;
				slave.faceShape = "androgynous";
				slave.muscles = 0;
				slave.lips = 10;
				slave.butt = 0;
				slave.boobs = either(100, 200);
				slave.dick = 6;
				slave.foreskin = slave.dick;
				slave.balls = 6;
				slave.scrotum = 6;
				slave.anus = 0;
				slave.vagina = -1;
				slave.weight = -35;
				slave.skill.oral = 0;
				slave.skill.anal = 0;
				slave.skill.whoring = 0;
				slave.skill.entertainment = 100;
				slave.skill.combat = 0;
				slave.piercing.dick.weight = 2;
				slave.pubertyXY = 1;
				slave.fetish = "pregnancy";
				slave.fetishStrength = 100;
				slave.behavioralFlaw = "hates men";
				slave.behavioralQuirk = "adores women";
				slave.sexualFlaw = "shamefast";
				slave.sexualQuirk = "perverted";
				slave.hLength = 20;
				break;
			case "masculine":
				slave = GenerateNewSlave("XY", {
					minAge: 18, maxAge: 42, race: race, disableDisability: 1
				});
				slave.face = 55;
				slave.faceImplant = 0;
				slave.faceShape = "masculine";
				slave.muscles = either(20, 50, 100);
				slave.height = random(185, 195);
				slave.butt = either(2, 3);
				slave.boobs = either(100, 200);
				slave.dick = 5;
				if (slave.foreskin > 0) {
					slave.foreskin = slave.dick;
				}
				slave.balls = 5;
				slave.anus = 0;
				slave.vagina = -1;
				slave.weight = 0;
				slave.skill.vaginal = 0;
				slave.skill.oral = 15;
				slave.skill.anal = 0;
				slave.skill.whoring = 0;
				slave.skill.entertainment = 15;
				slave.skill.combat = 1;
				slave.behavioralFlaw = "hates men";
				slave.behavioralQuirk = "fitness";
				slave.sexualFlaw = "hates anal";
				slave.sexualQuirk = "perverted";
				slave.hStyle = "neat";
				slave.hLength = 5;
				break;
			case "micropenis":
				slave = GenerateNewSlave("XY", {
					minAge: 18, maxAge: 42, race: race, disableDisability: 1
				});
				slave.face = 55;
				slave.faceImplant = 0;
				slave.faceShape = "masculine";
				slave.muscles = 0;
				slave.height = random(145, 160);
				slave.butt = either(2, 4);
				slave.boobs = either(100, 400);
				slave.dick = 1;
				if (slave.foreskin > 0) {
					slave.foreskin = slave.dick;
				}
				slave.balls = 2;
				slave.anus = 1;
				slave.vagina = -1;
				slave.weight = 100;
				slave.skill.vaginal = 0;
				slave.skill.oral = 15;
				slave.skill.anal = 15;
				slave.skill.whoring = 0;
				slave.skill.entertainment = 15;
				slave.skill.combat = 0;
				slave.behavioralFlaw = "hates men";
				slave.behavioralQuirk = "insecure";
				slave.sexualFlaw = "shamefast";
				slave.sexualQuirk = "perverted";
				slave.hStyle = "neat";
				slave.hLength = 5;
				break;
			case "bull dyke":
				slave = GenerateNewSlave("XX", {
					minAge: 18, maxAge: 42, race: race, disableDisability: 1
				});
				slave.face = 55;
				slave.faceImplant = 0;
				slave.faceShape = "androgynous";
				slave.muscles = 100;
				slave.height = random(185, 195);
				slave.lipsImplant = 10;
				slave.lips = 35;
				slave.buttImplant = 1;
				slave.butt += slave.buttImplant;
				slave.buttImplantType = "normal";
				slave.boobs -= 100;
				slave.boobsImplant = either(400, 600, 800);
				slave.boobs += slave.boobsImplant;
				slave.boobsImplantType = "normal";
				slave.clit = 2;
				slave.anus = 1;
				slave.vagina = 1;
				slave.preg = -1;
				slave.skill.vaginal = 15;
				slave.skill.oral = 0;
				slave.skill.anal = 15;
				slave.skill.whoring = 0;
				slave.skill.entertainment = 0;
				slave.skill.combat = 1;
				slave.piercing.genitals.weight = 1;
				slave.piercing.ear.weight = 1;
				slave.behavioralFlaw = "hates men";
				slave.behavioralQuirk = "fitness";
				slave.sexualFlaw = "hates penetration";
				slave.sexualQuirk = "unflinching";
				slave.hStyle = "neat";
				slave.hLength = 5;
				break;
			case "breeder":
				if (V.pedo_mode === 1) {
					minAge = (V.fertilityAge + 6);
					pedo = 1;
					/* Old enough to have been pregnant many times. */
				} else {
					minAge = 18;
					maxAge = 42;
				}
				slave = GenerateNewSlave("XX", {
					minAge: minAge, maxAge: maxAge, ageOverridesPedoMode: pedo, race: race, disableDisability: 1
				});
				slave.pubertyXX = 1;
				slave.face = 100;
				slave.faceImplant = 0;
				slave.faceShape = "sensual";
				slave.muscles = 50;
				slave.lips = 35;
				slave.butt = either(6, 7, 8);
				slave.boobs = 5000;
				slave.nipples = "huge";
				slave.lactation = 1;
				slave.lactationDuration = 2;
				slave.anus = 1;
				slave.preg = 25;
				if (V.seeHyperPreg === 1) {
					slave.geneticQuirks.uterineHypersensitivity = 2;
					slave.vagina = 10;
					slave.pregType = random(20, 35);
					slave.counter.birthsTotal = random(120, 180);
					slave.bellySag = 30;
					slave.bellySagPreg = 30;
					slave.pregAdaptation = slave.counter.birthsTotal * 2;
				} else {
					const UHSchance = Math.random();
					if (UHSchance > 0.9) {
						slave.geneticQuirks.uterineHypersensitivity = 2;
					} else if (UHSchance > 0.6 && slave.geneticQuirks.uterineHypersensitivity !== 2) {
						slave.geneticQuirks.uterineHypersensitivity = 1;
					}
					slave.vagina = 5;
					slave.pregType = either(3, 3, 4, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 8);
					slave.counter.birthsTotal = random(18, 27);
					slave.bellySag = 2;
					slave.bellySagPreg = 2;
					slave.pregAdaptation = (random(60, 100) + (slave.counter.birthsTotal * slave.geneticQuirks.uterineHypersensitivity));
				}
				slave.pregKnown = 1;
				slave.pregWeek = slave.preg;
				SetBellySize(slave);
				slave.skill.vaginal = 100;
				slave.skill.oral = 15;
				slave.skill.anal = 15;
				slave.skill.whoring = 35;
				slave.skill.entertainment = 15;
				slave.skill.combat = 0;
				slave.fetish = "pregnancy";
				slave.fetishStrength = 1000;
				slave.behavioralFlaw = "odd";
				slave.behavioralQuirk = "adores men";
				slave.sexualFlaw = "breeder";
				slave.sexualQuirk = "caring";
				slave.hStyle = "luxurious";
				slave.hLength = 80;
				break;
			case "oppai loli":
				slave = GenerateNewSlave("XX", {
					minAge: V.minimumSlaveAge, maxAge: 12, race: race, disableDisability: 1
				});
				slave.face = 100;
				slave.faceImplant = 0;
				slave.faceShape = "cute";
				slave.muscles = 20;
				slave.weight = 60;
				slave.lips = 10;
				slave.butt = 1;
				slave.hips = -1;
				slave.shoulders = -2;
				slave.boobs = 7000;
				slave.nipples = "huge";
				slave.anus = 0;
				slave.vagina = 0;
				slave.preg = 0;
				slave.skill.vaginal = 0;
				slave.skill.oral = 0;
				slave.skill.anal = 0;
				slave.skill.whoring = 0;
				slave.skill.entertainment = 15;
				slave.skill.combat = 0;
				slave.behavioralFlaw = "odd";
				slave.behavioralQuirk = "insecure";
				slave.sexualFlaw = "shamefast";
				slave.sexualQuirk = "tease";
				slave.hStyle = "twin tails";
				slave.hLength = 40;
				break;
			case "cow":
				slave = GenerateNewSlave("XX", {
					minAge: 18, maxAge: 42, race: race, disableDisability: 1
				});
				slave.face = 55;
				slave.faceImplant = 0;
				slave.faceShape = "cute";
				slave.muscles = 50;
				slave.height = random(185, 195);
				slave.lips = 35;
				slave.butt = either(6, 7, 8);
				slave.boobs = 30000;
				slave.weight = random(100, 160);
				slave.nipples = "huge";
				slave.lactation = 2;
				slave.lactationDuration = 2;
				slave.anus = 1;
				slave.vagina = 2;
				slave.preg = 0;
				slave.skill.vaginal = 15;
				slave.skill.oral = 15;
				slave.skill.anal = 0;
				slave.skill.whoring = 0;
				slave.skill.entertainment = 15;
				slave.skill.combat = 0;
				slave.behavioralFlaw = "odd";
				slave.behavioralQuirk = "insecure";
				slave.sexualFlaw = "breast growth";
				slave.sexualQuirk = "perverted";
				slave.hStyle = "neat";
				slave.hLength = 5;
				break;
			case "bimbo":
				slave = GenerateNewSlave("XX", {
					minAge: 18, maxAge: 42, race: race, disableDisability: 1
				});
				slave.face = 100;
				slave.faceImplant = 65;
				slave.faceShape = "sensual";
				slave.muscles = 0;
				slave.height = random(180, 190);
				slave.lipsImplant = 2;
				slave.lips = random(25, 55);
				slave.buttImplant = 2;
				slave.butt += slave.buttImplant;
				slave.buttImplantType = "normal";
				slave.boobsImplant = either(600, 800, 1000);
				slave.boobs += slave.boobsImplant;
				slave.boobsImplantType = "normal";
				slave.anus = 2;
				slave.vagina = 1;
				slave.preg = -1;
				slave.skill.vaginal = 100;
				slave.skill.oral = 100;
				slave.skill.anal = 35;
				slave.skill.whoring = 35;
				slave.skill.entertainment = 35;
				slave.skill.combat = 0;
				slave.piercing.genitals.weight = 1;
				slave.piercing.ear.weight = 1;
				slave.behavioralFlaw = "arrogant";
				slave.behavioralQuirk = "insecure";
				slave.sexualFlaw = "crude";
				slave.sexualQuirk = "caring";
				slave.hStyle = "tails";
				slave.hLength = 80;
				break;
			default:
				slave = GenerateNewSlave("XX", {
					minAge: 18, maxAge: 42, race: race, disableDisability: 1
				});
				slave.face = 100;
				slave.faceImplant = 15;
				slave.muscles = 0;
				slave.lips = 35;
				slave.butt += random(1, 3);
				slave.boobs += 200 * random(1, 3);
				slave.anus = 4;
				slave.vagina = 4;
				if (V.seePreg === 1) {
					slave.preg = 2;
					slave.pregKnown = 1;
					slave.pregWeek = slave.preg;
					slave.pregType = setPregType(slave);
					SetBellySize(slave);
				}
				slave.skill.vaginal = 100;
				slave.skill.oral = 100;
				slave.skill.anal = 100;
				slave.skill.whoring = 100;
				slave.skill.entertainment = 0;
				slave.skill.combat = 0;
				slave.piercing.genitals.weight = 1;
				slave.piercing.ear.weight = 1;
				slave.behavioralFlaw = "bitchy";
				slave.behavioralQuirk = "funny";
				slave.sexualFlaw = "crude";
				slave.sexualQuirk = "size queen";
				slave.hStyle = "neat";
				slave.hLength = 80;
				slave.addict = 10;
		}
		slave.intelligence = 100;
		slave.intelligenceImplant = 30;
		slave.devotion = -20;
		slave.trust = -10;
		slave.origin = "$He was once an arcology owner like yourself.";
		slave.career = "an arcology owner";
		slave.prestige = 3;
		slave.prestigeDesc = "You bankrupted and enslaved $him in revenge for $his part in the attack on your arcology by the Daughters of Liberty.";
		setHealth(slave, 100, 0, 0, 0, jsRandom(10, 30));
		if (slave.physicalAge > 35) {
			applyAgeImplant(slave);
		}
		slave.pubicHStyle = "waxed";
		slave.underArmHStyle = "waxed";
		return slave;
	}
};

repo_name: Mirarara/fc

license: mit


code:
App.Events.PRivalryDispatch = class PRivalryDispatch extends App.Events.BaseEvent {
	eventPrerequisites() {
		return [
			() => V.plot > 0,
			() => V.rival.prosperity > 0,
			() => (V.eventResults.rivalActionWeek || 0) < V.week
		];
	}

	execute(node) {
		if (V.rival.hostageState === 0 && V.rival.state === 2) {
			V.eventResults.rivalActionWeek = V.week; // that's all for this week
			node.append(App.Events.pRivalryHostage());
		} else if ((V.rival.prosperity - V.rival.power + 10) / V.arcologies[0].prosperity < 0.5) {
			V.eventResults.rivalActionWeek = V.week; // that's all for this week
			node.append(App.Events.pRivalryVictory());
		} else if (V.peacekeepers.state === 2 && V.peacekeepers.attitude > 5 && V.rival.duration > 1 && !V.eventResults.peacekeeperHelp) {
			// can fire this event again to trigger victory or rival actions in the same week
			node.append(App.Events.PRivalryPeacekeepers());
		} else {
			V.eventResults.rivalActionWeek = V.week; // that's all for this week
			node.append(App.Events.pRivalryActions());
		}
	}
};


code:
App.Events.pRivalryHostage = function() {
	return execute();

	function execute() {
		const node = new DocumentFragment();
		V.rival.hostageState = 1;
		V.hostage = createHostage();
		App.Events.drawEventArt(node, V.hostage);

		switch (V.rival.FS.name) {
			case "Maturity Preferentialism":
			case "Petite Admiration":
			case "Statuesque Glorification":
			case "Youth Preferentialism":
				V.hostageWife = GenerateNewSlave("XX");
		}

		const {
			He, His,
			he, him, himself, his, girl, woman, sister
		} = getPronouns(V.hostage);
		const {
			HeR,
			heR, hisR
		} = getPronouns({pronoun: (V.rival.gender === 2) ? 1 : 0}).appendSuffix("R");
		const {girlU} = getNonlocalPronouns(V.seeDicks).appendSuffix("U");
		const {womanP, girlP} = getPronouns(V.PC).appendSuffix("P");
		const {woman2, girl2, he2, his2} = getPronouns(V.hostageWife || {pronoun : 0}).appendSuffix("2");
		let r = [];

		let closer = 0;
		r.push(`Only a few days into your inter-arcology war, you receive a video message from your rival. Once ${V.assistant.name} is satisfied that the file is clean, you clear your office and pull it up. To your surprise, there are two faces on your desk, not one. One of them is your rival, and after a moment, you remember who the other is. You recognize ${him} from your`);
		if (isPCCareerInCategory("wealth")) {
			if (V.PC.career === "wealth" || V.PC.career === "trust fund" || V.PC.actualAge > 16) {
				r.push(`time as a wealthy ${womanP} of leisure. ${He} was a pretty little party ${girl} who ran in those circles. You were never particularly close,`);
			} else if (V.PC.career === "rich kid") {
				r.push(`time as a child with way too much money on hand. ${He} was a pretty little party ${girl},`);
				if (V.hostage.actualAge >= V.PC.actualAge + 6) {
					r.push(`only a handful of years your senior, that showed you what it meant to really let loose.`);
				} else {
					r.push(`around your age, that you spent a lot of time with.`);
				}
				r.push(`You can't say that you've kept in touch,`);
				closer = 1;
			}
		} else if (isPCCareerInCategory("escort")) {
			r.push(`time as a ${womanP} of sexual promiscuity.`);
			if (V.PC.career === "escort" || V.PC.career === "prostitute" || V.PC.actualAge > 16) {
				r.push(`ran in the same sex circles. You were never particularly close,`);
			} else if (V.PC.career === "child prostitute") {
				if (V.hostage.actualAge >= V.PC.actualAge + 6) {
					r.push(`${He} was a pretty little slut that kept a watchful eye on you to make sure you stayed safe, as if ${he} were your big ${sister}.`);
				} else {
					r.push(`${He} was a pretty little slut around your age that you spent most of your time with. You played together, bathed together, shared clients together, and even lost your virginities together.`);
				}
				r.push(`You lost track of ${him} while moving up in the world,`);
				closer = 1;
			}
		} else if (isPCCareerInCategory("servant")) {
			r.push(`time as a ${womanP} of servitude. ${He} was a`);
			if (V.PC.career === "servant" || V.PC.career === "handmaiden" || V.PC.actualAge > 16) {
				if (V.PC.title === 1) {
					r.push(`maid`);
				} else {
					r.push(`fellow maid`);
				}
				r.push(`under your late Master.`);
				if (V.PC.title === 0 && V.seePreg) {
					r.push(`You may have delivered several of ${his} children, but you`);
				} else {
					r.push(`You`);
				}
				r.push(`were never particularly close,`);
			} else if (V.PC.career === "child servant") {
				r.push(`fellow servant under your late Master`);
				if (V.hostage.actualAge >= V.PC.actualAge + 6) {
					r.push(`that dedicated a lot of ${his} time to raising`);
					if (V.hostage.counter.birthsTotal > 0 && V.seePreg) {
						r.push(`you, even when burdened with ${his} own growing pregnancy.`);
					} else {
						r.push(`you.`);
					}
					if (V.seePreg) {
						if (V.PC.counter.birthMaster >= 8) {
							r.push(`Your Master was not one to waste a ${girlP}'s eggs, and you were no exception. You were completely dependent on ${his} care when your octuplets inevitably left you bed-bound.`);
						} else if (V.PC.counter.birthMaster >= 2) {
							r.push(`Your Master was not one to waste a ${girlP}'s eggs, and you were no exception. You were very reliant on ${his} assistance as you struggled along with your twins.`);
						}
					}
				} else {
					r.push(`about the same are as you. You spent a lot of time playing and doing chores`);
					if (V.seePreg && (V.hostage.counter.birthsTotal > 0 || V.PC.counter.birthMaster >= 2)) {
						r.push(`together, and later,`);
						if (V.hostage.counter.birthsTotal > 0) {
							if (V.PC.counter.birthMaster >= 8) {
								r.push(`just resting against each other since ${he} never became so swollen with children to the point that ${he} could no longer move.`);
							} else if (V.PC.counter.birthMaster >= 2) {
								r.push(`learning how to function with baby-filled bellies.`);
							} else {
								r.push(`exploring ${his} baby-laden young body.`);
							}
						} else if (V.PC.counter.birthMaster >= 8) {
							r.push(`enjoying the doting attention ${he} spoiled your cramped little womb with.`);
						} else {
							r.push(`enjoying the sensation of ${his} curious hands caressing the curve of your twins-swollen middle.`);
						}
					} else {
						r.push(`together.`);
					}
				}
				r.push(`You lost track of ${him} while moving up in the world,`);
				closer = 1;
			}
		} else if (isPCCareerInCategory("gang")) {
			if (V.PC.career === "gang") {
				r.push(`time as a gang leader. ${He} was one of your best, yet you never got close enough,`);
			} else if (V.PC.career === "hoodlum" || V.PC.actualAge > 16) {
				r.push(`time with the gang. ${He} often caught your eye, but you never got particularly close,`);
			} else if (V.PC.career === "street urchin") {
				r.push(`time on the streets.`);
				if (V.hostage.actualAge >= V.PC.actualAge + 6) {
					r.push(`${He} was a charming homeless ${girl} that kept a watchful eye on you to make sure you stayed safe, as if ${he} were your big ${sister}. ${He} even helped you become a gang initiate.`);
				} else {
					r.push(`${He} was another destitute child that you spent most of your time with. You foraged for scraps together, kept each other warm at night, and even became initiates into the same gang.`);
				}
				if (V.hostage.weight > 0) {
					r.push(`${He}'s put on a surprising amount of weight, so at least ${he} has been eating well.`);
				}
				r.push(`You lost track of ${him} while moving up in the world,`);
				closer = 1;
			}
		} else if (isPCCareerInCategory("BlackHat")) {
			if (V.PC.career === "BlackHat") {
				r.push(`time as a hacker for hire. ${He} supported you on jobs, even sent some choice pictures of ${himself}, but you were never really close,`);
			} else if (V.PC.career === "hacker" || V.PC.actualAge > 16) {
				r.push(`time as a hacker for fun. You both snatched some lovely pictures of each other and might have decided to take it a step further. You may have only exchanged some salacious messages and images,`);
			} else if (V.PC.career === "script kiddy") {
				r.push(`time as a hacker for fun.`);
				if (V.hostage.actualAge >= V.PC.actualAge + 6) {
					r.push(`${He} was a cute little shut-in that taught you how to hack.`);
				} else {
					r.push(`${He} was another kid you often practiced your scripts with, or on, considering your stash of nudes pics of ${him}.`);
				}
				r.push(`You never really found the time to check up on ${him} while moving up in the world,`);
				closer = 1;
			}
		} else if (isPCCareerInCategory("capitalist")) {
			if (V.PC.career === "capitalist") {
				r.push(`career in venture capital. ${He} was a rising manager, young, attractive, and bright. You never worked particularly closely with ${him},`);
			} else if (V.PC.career === "entrepreneur" || V.PC.actualAge > 16) {
				r.push(`career in business. ${He} was an intern, young, attractive, and bright. You never paid too much attention to ${him},`);
			} else if (V.PC.career === "business kid") {
				r.push(`career in business.`);
				if (V.hostage.actualAge >= V.PC.actualAge + 6) {
					r.push(`${He} was a pretty older student that tutored you in business.`);
				} else {
					r.push(`${He} was a cute classmate that you spent a lot of time with learning the ins and outs of business.`);
				}
				r.push(`You can't say that you've kept in touch,`);
				closer = 1;
			}
		} else if (isPCCareerInCategory("mercenary")) {
			if (V.PC.career === "mercenary" || V.PC.career === "recruit" || V.PC.actualAge > 16) {
				r.push(`career as a mercenary. ${He} was in logistical support, and was clever and pretty, but without the essential hardness. You were never that close,`);
			} else if (V.PC.career === "child soldier") {
				r.push(`time as a conscript.`);
				if (V.hostage.actualAge >= V.PC.actualAge + 6) {
					r.push(`${He} was a pretty soldier that saw combat from a young age, like yourself. ${He} looked out for you when things got dangerous.`);
				} else {
					r.push(`${He} was another child soldier that served along side you. You were always there to support each other when combat become too overwhelming.`);
				}
				r.push(`You weren't sure what became of them,`);
				closer = 1;
			}
		} else if (isPCCareerInCategory("engineer")) {
			if (V.PC.career === "engineer" || V.PC.career === "construction" || V.PC.actualAge > 16) {
				r.push(`career as an arcology engineer. ${He} was a glorified sales${woman}, with the gorgeous looks and extreme intelligence necessary to sell entire arcologies. You were never close,`);
			} else if (V.PC.career === "worksite helper") {
				r.push(`career working construction jobs.`);
				if (V.hostage.actualAge >= V.PC.actualAge + 6) {
					r.push(`${He} was a pretty older ${girl} that frequently visited the worksite. Both stunning and brilliant, you had little doubt ${he}'d go far.`);
				} else {
					r.push(`${He} was a cute little ${girl} that loved to stop by the worksite and ask questions. ${He} had a knack for design, and loved to share ${his} ideas with you.`);
				}
				r.push(`You can't say that you've kept in touch,`);
				closer = 1;
			}
		} else if (isPCCareerInCategory("medicine")) {
			r.push(`career in medicine.`);
			if (V.PC.career === "medicine" || V.PC.career === "medical assistant" || V.PC.actualAge > 16) {
				r.push(`${He} was a surgical nurse, one of the best. ${He} was smart, pretty, and ${he} had sure hands. You were never that close,`);
			} else if (V.PC.career === "nurse") {
				if (V.hostage.actualAge >= V.PC.actualAge + 6) {
					r.push(`${He} was a pretty older nurse that taught you a lot of little things about medicine and patient care.`);
				} else {
					r.push(`${He} was another little nurse that worked alongside you, entertaining patients and doing ${his} best to stay out of the way.`);
				}
				r.push(`You can't say that you've kept in touch,`);
				closer = 1;
			}
		} else if (isPCCareerInCategory("slaver")) {
			if (V.PC.career === "slaver" || V.PC.career === "slave overseer" || V.PC.actualAge > 16) {
				r.push(`career as a slaver. ${He} was a guard in one of the slave receiving pens, and a notorious one, at that. Nobody was quite as eager to break in new slaves as ${he} was. You were never that close,`);
			} else if (V.PC.career === "slave tender") {
				r.push(`time looking after slaves.`);
				if (V.hostage.actualAge >= V.PC.actualAge + 6) {
					r.push(`${He} was a pretty, if slightly scary, older ${girl} that kept a watchful eye over the slaves and you, almost like a grumpy big ${sister}.`);
				} else {
					r.push(`${He} was a little ${girl} that helped clean and feed the slaves with you. You made a pretty good team; if a new capture thought it would be easy to overpower a child, they'd quickly learn to watch their back.`);
				}
				r.push(`You can't say that you've kept in touch,`);
				closer = 1;
			}
		} else if (isPCCareerInCategory("celebrity")) {
			r.push(`time as a minor celebrity.`);
			if (V.PC.career === "celebrity" || V.PC.career === "rising star" || V.PC.actualAge > 16) {
				r.push(`${He} was a pretty little groupie who flitted from entourage to entourage. You were never particularly close,`);
			} else if (V.PC.career === "child star") {
				if (V.hostage.actualAge >= V.PC.actualAge + 6) {
					r.push(`${He} older ${girl} that not only acted as your ${sister} on the set, but also taught in the ins and outs of show business.`);
				} else {
					r.push(`${He} was a child star that was often booked alongside you. So much so, you started to be treated more like siblings than competitors.`);
				}
				r.push(`You can't say that you've kept in touch,`);
				closer = 1;
			}
		} else if (isPCCareerInCategory("arcology owner")) {
			r.push(`time owning another arcology. ${He} was a prominent citizen who supported your government. You were never particularly close,`);
		}
		if (closer !== 1) {
			r.push(`but you do remember ${him}, and your rival knows it. This is obviously the best ${heR} could come up with to provoke an emotional reaction.`);
		} else {
			r.push(`but you were close to ${him}, and your rival knows it. ${HeR} clearly did ${hisR} research when coming up with a way to provoke an emotional reaction.`);
		}

		App.Events.addParagraph(node, r);
		r = [];

		r.push(`"Hello, ${PlayerName()}," your rival sneers. "Sorry to pull you away from`);
		switch (V.rival.FS.name) {
			case "Racial Subjugationism":
				r.push(`whipping some poor ${V.arcologies[0].FSSubjugationistRace} ${girlU}'s back bloody,`);
				break;
			case "Racial Supremacism":
				r.push(`blowing your ${V.arcologies[0].FSSubjugationistRace} girls, or whatever it is you do with your spare time,`);
				break;
			case "Gender Radicalism":
				r.push(`buttfucking your catamites, or whatever it is you do with your spare time,`);
				break;
			case "Gender Fundamentalism":
				r.push(`teatime with your slave wives,`);
				break;
			case "Repopulation Focus":
				r.push(`rolling around in the afterbirth, or whatever it is you do with your spare time,`);
				break;
			case "Eugenics":
				r.push(`circle jerking with your "elites", or whatever it is you do with your spare time,`);
				break;
			case "Paternalism":
				r.push(`handholding time with your slaves,`);
				break;
			case "Degradationism":
				r.push(`stitching your name into some poor ${girlU}'s taint, or whatever it is you do with your spare time,`);
				break;
			case "Body Purism":
				r.push(`playing house with your perfect pure little angels, or whatever it is you do with your spare time,`);
				break;
			case "Transformation Fetishism":
				r.push(`stuffing silicone up some poor ${girlU}'s nostrils,`);
				break;
			case "Youth Preferentialism":
				r.push(`your horrible schoolgirl fantasy playtime,`);
				break;
			case "Maturity Preferentialism":
				r.push(`the world's leading collection of saggy tits,`);
				break;
			case "Slimness Enthusiasm":
				r.push(`your pathological collection of flat chested bitches,`);
				break;
			case "Asset Expansionism":
				r.push(`your disgusting breast monsters,`);
				break;
			case "Pastoralism":
				r.push(`your most flatulent cowgirls,`);
				break;
			case "Physical Idealism":
				r.push(`your sweaty, spandexed throwback collection,`);
				break;
			case "Hedonistic Decadence":
				r.push(`your greasy, flatulent mounds of fat,`);
				break;
			case "Chattel Religionism":
				r.push(`your afternoon prayer meeting,`);
				break;
			case "Multiculturalism":
				r.push(`whatever it is you do to liven up your boring arcology,`);
				break;
			case "Roman Revivalism":
				r.push(`feeding slaves to the lions, or whatever it is you do with your spare time,`);
				break;
			case "Aztec Revivalism":
				r.push(`sacrificing slaves to the gods, or whatever it is you do with your spare time,`);
				break;
			case "Egyptian Revivalism":
				r.push(`your latest experiment in exactly how disgusting incest can possibly be,`);
				break;
			case "Edo Revivalism":
				r.push(`your katana polishing, or whatever it is you do with your spare time,`);
				break;
			case "Arabian Revivalism":
				r.push(`your hookah sucking,`);
				break;
			case "Chinese Revivalism":
				r.push(`your footbinding,`);
				break;
			case "Intellectual Dependency":
				r.push(`tard wrangling, or whatever it is you do with your spare time,`);
				break;
			case "Slave Professionalism":
				r.push(`being talked down to by your own slaves, or whatever it is you do with your spare time,`);
				break;
			case "Petite Admiration":
				r.push(`tripping over all those midgets you're obsessed with,`);
				break;
			case "Statuesque Glorification":
				r.push(`those face high crotches you love,`);
				break;
			default:
				r.push(`whatever it is you do with your spare time,`);
		}
		r.push(`but look what I have here! I just acquired ${him} recently. Lovely, isn't ${he}? I know ${he} wasn't important to you, but ${he} is a reminder of who you were. I think ${he} must have been your type." Your rival turns to the slave and continues. "While we have our little war,`);
		switch (V.rival.FS.name) {
			case "Racial Subjugationism":
				r.push(`I'm going to treat ${him} well. Train ${him}. ${He}'s a fine Head Girl prospect, don't you think? ${He}'ll have lots of nice ${V.arcologies[0].FSSubjugationistRace} girls to make love to whenever ${he} wants. Isn't that right, ${SlaveFullName(V.hostage)}?" The slave nods uncertainly.`);
				break;
			case "Racial Supremacism":
				r.push(`I'm going to destroy ${him}. ${He}'s got a whipping post with ${his} name on it, right between a couple of ${V.arcologies[0].FSSupremacist} bitches. Isn't that right, ${SlaveFullName(V.hostage)}?" The slave begins to scream, and the noise goes on and on as the slave is tied up and scourged.`);
				break;
			case "Gender Radicalism":
				r.push(`I'm going to treat ${him} well. Train ${him}. Teach ${him} ${his} proper role in society, and make ${him} happy here. Isn't that right, ${V.hostage.slaveName}?" The slave nods uncertainly.`);
				break;
			case "Gender Fundamentalism":
				r.push(`${he}'s going to be my special pet. ${He}'ll have everything ${he} could ever want, as long as ${he} has a dick up ${his} ass. Isn't that right, ${SlaveFullName(V.hostage)}?" The slave nods hesitantly, but with evident arousal.`);
				break;
			case "Paternalism":
				r.push(`I'm going to destroy ${him}. Holes first, of course. I'll have to get more inventive after that, and I'll leave ${his} vocal cords for last. That way, ${he}'ll be able to beg. Isn't that right, ${SlaveFullName(V.hostage)}?" The slave begins to scream, and the noise goes on and on. And on.`);
				break;
			case "Degradationism":
				r.push(`${he}'s going to be my lover. ${He}'ll have everything ${he} could ever want, and I'll be sure to let ${him} know all about what you do to your slaves. Isn't that right, ${SlaveFullName(V.hostage)}?" The slave nods uncertainly.`);
				break;
			case "Repopulation Focus":
				r.push(`I'm going to ruin ${his} womb, making sure ${he} can never have children again. I bet you spent lots of nights fantasizing about ${him} with a huge belly didn't you?`);
				break;
			case "Eugenics":
				if (V.seeHyperPreg === 1) {
					r.push(`I'm going to have ${him} knocked up; not with my seed, of course, but the seed of the lowest of the low. I'm also going to fill ${him} with the most powerful experimental fertility drugs out there. ${He}'ll have so many children shoved into ${his} poor womb ${he}'ll be bursting at the seams. But ${he}'ll enjoy that, won't you ${SlaveFullName(V.hostage)}?" The slave nods hesitantly, but with evident arousal.`);
				} else {
					r.push(`I'm going to have ${him} knocked up; not with my seed, of course, but the seed of the lowest of the low. I'm also going to fill ${him} with the most powerful fertility drugs I can get. ${His} poor little womb will be stretched to the limit with society's worst. But ${he}'ll enjoy that, won't you ${SlaveFullName(V.hostage)}?" The slave nods hesitantly, but with evident arousal.`);
				}
				break;
			case "Body Purism":
				r.push(`I'm going to give ${him} a nice pair of fake tits. No reason to be excessively clever when I can just make ${his} tits so huge ${he} won't be able to walk. Isn't that right, ${SlaveFullName(V.hostage)}?" The slave begins to sob.`);
				break;
			case "Transformation Fetishism":
				r.push(`${he}'s going to be my lover. I'll be sure to let ${him} know all about what you do to your slaves, and rest assured, I'll never treat ${him} that way. Isn't that right, ${SlaveFullName(V.hostage)}?" The slave nods uncertainly.`);
				break;
			case "Youth Preferentialism":
				r.push(`I've set ${him} up with a nice motherly ${woman2} already. I believe they'll be a perfect match. Isn't that right, ${SlaveFullName(V.hostage)}?" The slave nods uncertainly.`);
				break;
			case "Maturity Preferentialism":
				r.push(`I've set ${him} up with a nice young ${girl2} already. I believe they'll be a perfect match. Isn't that right, ${SlaveFullName(V.hostage)}?" The slave nods uncertainly.`);
				break;
			case "Slimness Enthusiasm":
				r.push(`I think I'll make ${his} IV line permanent. After all, ${he}'s never going off breast growth hormones. I'd estimate ${he} shouldn't be able to walk within a month. Isn't that right, ${SlaveFullName(V.hostage)}?" The slave begins to sob.`);
				break;
			case "Asset Expansionism":
				r.push(`${he}'s going to be my lover. I'll be sure to let ${him} know all about what you do to your slaves, and rest assured, I'll never give ${him} growth hormones, not one single dose. Isn't that right, ${SlaveFullName(V.hostage)}?" The slave nods uncertainly.`);
				break;
			case "Pastoralism":
				r.push(`${he}'s going to be my spotter. Girls should be strong, smoking hot ladies, not disgusting cows. Isn't that right, ${SlaveFullName(V.hostage)}?" The slave nods uncertainly.`);
				break;
			case "Cummunism":
				r.push(`${he}'s going to be my personal milk dispenser. I shouldn't have to chain ${him} to my desk after the first month, since ${his} udders will pin ${him} in place. Isn't that right, ${SlaveFullName(V.hostage)}?" The slave begins to sob.`);
				break;
			case "Physical Idealism":
				r.push(`${he}'s going to learn to enjoy yourself. I'm going to force ${his} face full of food, ${his} cunt full of dicks and discover ${his} deepest, darkest desires. Wouldn't you like that, ${SlaveFullName(V.hostage)}?" The slave begins to sob. "To start, how about a weigh in? ${V.hostage.weight < 0 ? "Just skin and bones, how dreadful" : "So thin and shapeless, such a pity"}, but don't worry, I'll have ${him} nice and plump soon enough."`);
				break;
			case "Hedonistic Decadence":
				r.push(`${he}'s going to be my spotter. Girls should be strong, smoking hot ladies, not disgusting obese slobs. Isn't that right, ${SlaveFullName(V.hostage)}?" The slave nods uncertainly.`);
				break;
			case "Chattel Religionism":
				r.push(`${he}'s going to be the perfect courtesan. No preaching, no praying, just good, clean sex for money. Isn't that right, ${SlaveFullName(V.hostage)}?" The slave nods uncertainly.`);
				break;
			case "Multiculturalism":
				r.push(`${he}'s going to be the ideal holy whore. Thousands of citizens are going to find rapture inside ${him}. Isn't that right, ${SlaveFullName(V.hostage)}?" The slave nods uncertainly.`);
				break;
			case "Intellectual Dependency":
				r.push(`${he}'s going to be a skilled courtesan. ${He}'ll know how to best please ${his} partners, and most importantly, ${he}'ll perfectly understand ${his} place in society.`);
				if (V.hostage.intelligence < 0) {
					r.push(`Shame ${he}'s an idiot though. But ${he} can learn and improve still, I'll see to that.`);
				}
				r.push(`Isn't that right, ${SlaveFullName(V.hostage)}?" The slave nods begrudgingly.`);
				break;
			case "Slave Professionalism":
				r.push(`${he}'s going to become a moron${(V.hostage.intelligence < 0) ? `, though $hhe} isn't exactly smart to begin with`:``}. No time for higher thought when all ${his} brain power is caught up with how to satisfy ${his} raging libido. Isn't that right, ${SlaveFullName(V.hostage)}?" The slave begins to sob.`);
				break;
			case "Petite Admiration":
				r.push(`I've set ${him} up with a particularly lovely giant. I believe they'll be a perfect match, even though ${he}'s half ${his2} size. Isn't that right, ${SlaveFullName(V.hostage)}?" The slave nods uncertainly.`);
				break;
			case "Statuesque Glorification":
				r.push(`I've set ${him} up with a lovely little dwarf already. I believe they'll be a perfect match, even though ${he2}'s half ${his} size. Isn't that right, ${SlaveFullName(V.hostage)}?" The slave nods uncertainly.`);
				break;
			default:
				r.push(`${he}'s shaping up to be a good slave. I'm keeping ${him} informed of your`);
				if (V.rival.FS.name !== "") {
					r.push(`revisionist`);
				}
				r.push(`nonsense, and what your slaves suffer because of it. Isn't that right, ${SlaveFullName(V.hostage)}?" The slave nods uncertainly.`);
		}

		r.push(`Your rival smiles icily. "I'll keep you informed of ${his} progress. I wouldn't want you to miss a moment of it."`);
		App.Events.addParagraph(node, r);

		App.UI.DOM.appendNewElement("p", node, `You're forging a new frontier in warfare here. This, then, is the new frontier in psychological warfare.`);
		return node;

		function createHostage() {
			const slave = GenerateNewSlave("XX", {race: "nonslave", disableDisability: 1});
			slave.origin = "You were acquainted with $him before you were an arcology owner; your rival tried to use $him to manipulate you, but you rescued $him.";
			slave.boobs = 400;
			if (slave.butt > 3) {
				slave.butt = 3;
			}
			slave.muscles = 0;
			slave.behavioralFlaw = "none";
			slave.sexualFlaw = "none";
			slave.behavioralQuirk = "none";
			slave.sexualQuirk = "none";
			slave.waist = Math.clamp(slave.waist, -55, 15);
			slave.lactation = 0;
			slave.lactationDuration = 0;
			slave.hips = 0;
			slave.shoulders = -1;
			if (slave.vagina <= 0) {
				slave.vagina = 1;
			}
			if (slave.anus === 0) {
				slave.anus = 1;
			}
			slave.energy = 50;
			slave.canRecruit = 0;
			if (slave.voice < 2) {
				slave.voice = 2;
			}
			if (slave.faceShape === "masculine") {
				slave.faceShape = "cute";
			}
			slave.geneMods.NCS = 0;
			slave.geneMods.rapidCellGrowth = 0;
			slave.NCSyouthening = 0;
			slave.slaveName = slave.birthName;
			slave.slaveSurname = slave.birthSurname;

			slave.actualAge = Number(slave.actualAge) || 18;
			slave.devotion = Number(slave.devotion) || 0;
			slave.trust = Number(slave.trust) || 0;
			slave.boobs = Number(slave.boobs) || 400;

			WombFlush(slave);

			if (isPCCareerInCategory("wealth")) {
				slave.career = "a party girl";
				if (V.PC.career === "wealth" || V.PC.actualAge > 24) {
					slave.actualAge = random(18, 24);
				} else if (V.PC.career === "trust fund" || V.PC.actualAge > 16) {
					if (V.PC.actualAge < V.minimumSlaveAge) {
						slave.actualAge = random(V.minimumSlaveAge, V.PC.actualAge);
					} else {
						slave.actualAge = Math.max(V.minimumSlaveAge, random(V.PC.actualAge-1, V.PC.actualAge+1));
					}
				} else {
					if (V.PC.actualAge < V.minimumSlaveAge) {
						slave.actualAge = V.minimumSlaveAge;
					} else {
						slave.actualAge = Math.max(V.minimumSlaveAge, random(V.PC.actualAge-1, V.PC.actualAge));
					}
				}
				slave.face = 100;
				slave.intelligence = random(51, 95);
				slave.intelligenceImplant = 0;
				slave.skill.oral = 100;
				slave.skill.entertainment = 100;
			} else if (isPCCareerInCategory("escort")) {
				if (V.PC.career === "escort" || V.PC.actualAge > 24) {
					slave.career = "an escort";
					slave.actualAge = random(18, 20);
					App.Medicine.Modification.addScar(slave, "belly", "c-section");
					slave.counter.birthsTotal = 1;
				} else if (V.PC.career === "prostitute" || V.PC.actualAge > 16) {
					slave.career = "a prostitute";
					if (V.PC.actualAge < V.minimumSlaveAge) {
						slave.actualAge = random(V.minimumSlaveAge, V.PC.actualAge);
					} else {
						slave.actualAge = Math.max(V.minimumSlaveAge, random(V.PC.actualAge-1, V.PC.actualAge+1));
					}
				} else {
					slave.career = "child prostitute";
					if (V.PC.actualAge < V.minimumSlaveAge) {
						slave.actualAge = V.minimumSlaveAge;
					} else {
						slave.actualAge = Math.max(V.minimumSlaveAge, random(V.PC.actualAge-1, V.PC.actualAge));
					}
					slave.custom.tattoo = "$He has $his ID number tattooed on $his left breast.";
				}
				slave.face = 100;
				slave.intelligence = random(-15, 15);
				slave.intelligenceImplant = 0;
				slave.skill.oral = 100;
				slave.skill.entertainment = 100;
				slave.skill.anal = 100;
				slave.skill.vaginal = 100;
				slave.skill.whoring = 100;
			} else if (isPCCareerInCategory("servant")) {
				slave.career = "a maid";
				if (V.PC.career === "servant" || V.PC.actualAge > 24) {
					slave.actualAge = random(18, 20);
					slave.counter.birthsTotal = 3;
				} else if (V.PC.career === "handmaiden" || V.PC.actualAge > 16) {
					if (V.PC.actualAge < V.minimumSlaveAge) {
						slave.actualAge = random(V.minimumSlaveAge, V.PC.actualAge);
					} else {
						slave.actualAge = Math.max(V.minimumSlaveAge, random(V.PC.actualAge-1, V.PC.actualAge+1));
					}
					slave.counter.birthsTotal = 1;
				} else {
					slave.career = "child servant";
					if (V.PC.actualAge < V.minimumSlaveAge) {
						slave.actualAge = V.minimumSlaveAge;
					} else {
						slave.actualAge = Math.max(V.minimumSlaveAge, random(V.PC.actualAge-1, V.PC.actualAge));
					}
					if (slave.actualAge >= V.fertilityAge + 2) {
						slave.counter.birthsTotal = 1;
					}
				}
				if (V.pedo_mode === 1 && slave.actualAge > 18) {
					slave.actualAge = random(12, 18);
				}
				slave.face = 25;
				slave.intelligence = random(-50, -16);
				slave.intelligenceImplant = 0;
				slave.skill.oral = 15;
				slave.skill.entertainment = 0;
				slave.skill.anal = 15;
				slave.skill.vaginal = 15;
				slave.skill.whoring = 0;
				slave.custom.tattoo = "$He has your Master's brand on $his left breast.";
			} else if (isPCCareerInCategory("gang")) {
				if (V.PC.career === "gang" || V.PC.actualAge > 24) {
					slave.actualAge = random(20, 24);
					slave.custom.tattoo = "$He has your former gang's sign tattooed on $his neck.";
					slave.career = "a gang member";
					slave.skill.combat = 1;
				} else if (V.PC.career === "hoodlum" || V.PC.actualAge > 16) {
					if (V.PC.actualAge < V.minimumSlaveAge) {
						slave.actualAge = random(V.minimumSlaveAge, V.PC.actualAge);
					} else {
						slave.actualAge = Math.max(V.minimumSlaveAge, random(V.PC.actualAge-1, V.PC.actualAge+1));
					}
					slave.custom.tattoo = "$He has the gang's sign that you rolled with tattooed on $his neck.";
					slave.career = "a gang member";
					slave.skill.combat = 1;
				} else {
					if (V.PC.actualAge < V.minimumSlaveAge) {
						slave.actualAge = V.minimumSlaveAge;
					} else {
						slave.actualAge = Math.max(V.minimumSlaveAge, random(V.PC.actualAge-1, V.PC.actualAge));
					}
					slave.custom.tattoo = "$He has the gang's sign that you associated with tattooed on $his neck.";
					slave.career = "street urchin";
					slave.weight = -80;
				}
				slave.muscles = 40;
				setHealth(slave, 100, 0, 0, 0, jsRandom(10, 30));
				slave.skill.combat = 1;
			} else if (isPCCareerInCategory("BlackHat")) {
				slave.career = "a shut-in";
				if (V.PC.career === "BlackHat" || V.PC.actualAge > 24) {
					slave.actualAge = random(18, 21);
					slave.intelligenceImplant = 30;
				} else if (V.PC.career === "hacker" || V.PC.actualAge > 16) {
					if (V.PC.actualAge < V.minimumSlaveAge) {
						slave.actualAge = random(V.minimumSlaveAge, V.PC.actualAge);
					} else {
						slave.actualAge = Math.max(V.minimumSlaveAge, random(V.PC.actualAge-1, V.PC.actualAge+1));
					}
					slave.intelligenceImplant = 15;
				} else {
					if (V.PC.actualAge < V.minimumSlaveAge) {
						slave.actualAge = V.minimumSlaveAge;
					} else {
						slave.actualAge = Math.max(V.minimumSlaveAge, random(V.PC.actualAge-1, V.PC.actualAge));
					}
					slave.intelligenceImplant = 15;
				}
				if (V.pedo_mode === 1 && slave.actualAge > 18) {
					slave.actualAge = random(13, 18);
				}
				slave.face = 75;
				slave.intelligence = 100;
			} else if (isPCCareerInCategory("capitalist")) {
				if (V.PC.career === "capitalist" || V.PC.actualAge > 24) {
					slave.actualAge = random(18, 24);
					slave.career = "a manager";
					slave.intelligenceImplant = 30;
				} else if (V.PC.career === "entrepreneur" || V.PC.actualAge > 16) {
					if (V.PC.actualAge < V.minimumSlaveAge) {
						slave.actualAge = random(V.minimumSlaveAge, V.PC.actualAge);
					} else {
						slave.actualAge = Math.max(V.minimumSlaveAge, random(V.PC.actualAge-1, V.PC.actualAge+1));
					}
					slave.career = "an intern";
					slave.intelligenceImplant = 15;
				} else {
					if (V.PC.actualAge < V.minimumSlaveAge) {
						slave.actualAge = V.minimumSlaveAge;
					} else {
						slave.actualAge = Math.max(V.minimumSlaveAge, random(V.PC.actualAge-1, V.PC.actualAge));
					}
					slave.career = "a student from a private school";
					slave.intelligenceImplant = 15;
				}
				slave.face = 55;
				slave.intelligence = 100;
			} else if (isPCCareerInCategory("mercenary")) {
				if (V.PC.career === "mercenary" || V.PC.actualAge > 24) {
					slave.actualAge = random(20, 24);
					slave.career = "a soldier";
					slave.intelligenceImplant = 15;
				} else if (V.PC.career === "recruit" || V.PC.actualAge > 16) {
					if (V.PC.actualAge < V.minimumSlaveAge) {
						slave.actualAge = random(V.minimumSlaveAge, V.PC.actualAge);
					} else {
						slave.actualAge = Math.max(V.minimumSlaveAge, random(V.PC.actualAge-1, V.PC.actualAge+1));
					}
					slave.career = "a soldier";
					slave.intelligenceImplant = 15;
				} else {
					if (V.PC.actualAge < V.minimumSlaveAge) {
						slave.actualAge = V.minimumSlaveAge;
					} else {
						slave.actualAge = Math.max(V.minimumSlaveAge, random(V.PC.actualAge-1, V.PC.actualAge));
					}
					slave.career = "a child soldier";
					slave.intelligenceImplant = 0;
				}
				slave.face = 55;
				slave.intelligence = 100;
				slave.skill.combat = 1;
			} else if (isPCCareerInCategory("engineer")) {
				if (V.PC.career === "engineer" || V.PC.actualAge > 24) {
					slave.actualAge = random(18, 24);
					slave.career = "a saleswoman";
					slave.intelligenceImplant = 30;
				} else if (V.PC.career === "construction" || V.PC.actualAge > 16) {
					if (V.PC.actualAge < V.minimumSlaveAge) {
						slave.actualAge = random(V.minimumSlaveAge, V.PC.actualAge);
					} else {
						slave.actualAge = Math.max(V.minimumSlaveAge, random(V.PC.actualAge-1, V.PC.actualAge+1));
					}
					slave.career = "a saleswoman";
					slave.intelligenceImplant = 15;
				} else {
					if (V.PC.actualAge < V.minimumSlaveAge) {
						slave.actualAge = V.minimumSlaveAge;
					} else {
						slave.actualAge = Math.max(V.minimumSlaveAge, random(V.PC.actualAge-1, V.PC.actualAge));
					}
					slave.career = "a child prodigy";
					slave.intelligenceImplant = 0;
				}
				slave.face = 100;
				slave.intelligence = 100;
			} else if (isPCCareerInCategory("medicine")) {
				slave.career = "a nurse";
				if (V.PC.career === "medicine" || V.PC.actualAge > 24) {
					slave.actualAge = random(16, 24);
					slave.intelligenceImplant = 30;
				} else if (V.PC.career === "medical assistant" || V.PC.actualAge > 16) {
					if (V.PC.actualAge < V.minimumSlaveAge) {
						slave.actualAge = random(V.minimumSlaveAge, V.PC.actualAge);
					} else {
						slave.actualAge = Math.max(V.minimumSlaveAge, random(V.PC.actualAge-1, V.PC.actualAge+1));
					}
					slave.intelligenceImplant = 30;
				} else {
					if (V.PC.actualAge < V.minimumSlaveAge) {
						slave.actualAge = V.minimumSlaveAge;
					} else {
						slave.actualAge = Math.max(V.minimumSlaveAge, random(V.PC.actualAge-1, V.PC.actualAge));
					}
					slave.intelligenceImplant = 15;
				}
				slave.face = 55;
				slave.intelligence = 100;
			} else if (isPCCareerInCategory("slaver")) {
				slave.career = "a prison guard";
				if (V.PC.career === "slaver" || V.PC.actualAge > 24) {
					slave.actualAge = random(20, 24);
				} else if (V.PC.career === "slave overseer" || V.PC.actualAge > 16) {
					if (V.PC.actualAge < V.minimumSlaveAge) {
						slave.actualAge = random(V.minimumSlaveAge, V.PC.actualAge);
					} else {
						slave.actualAge = Math.max(V.minimumSlaveAge, random(V.PC.actualAge-1, V.PC.actualAge+1));
					}
				} else {
					if (V.PC.actualAge < V.minimumSlaveAge) {
						slave.actualAge = V.minimumSlaveAge;
					} else {
						slave.actualAge = Math.max(V.minimumSlaveAge, random(V.PC.actualAge-1, V.PC.actualAge));
					}
				}
				slave.face = 55;
				slave.intelligence = random(51, 95);
				slave.intelligenceImplant = 0;
				slave.muscles = 20;
				slave.fetish = "sadist";
				slave.fetishStrength = 100;
				slave.fetishKnown = 1;
			} else if (isPCCareerInCategory("celebrity")) {
				if (V.PC.career === "celebrity" || V.PC.actualAge > 24) {
					slave.actualAge = random(18, 24);
					slave.career = "a party girl";
				} else if (V.PC.career === "rising star" || V.PC.actualAge > 16) {
					if (V.PC.actualAge < V.minimumSlaveAge) {
						slave.actualAge = random(V.minimumSlaveAge, V.PC.actualAge);
					} else {
						slave.actualAge = Math.max(V.minimumSlaveAge, random(V.PC.actualAge-1, V.PC.actualAge+1));
					}
					slave.career = "a party girl";
				} else {
					if (V.PC.actualAge < V.minimumSlaveAge) {
						slave.actualAge = V.minimumSlaveAge;
					} else {
						slave.actualAge = Math.max(V.minimumSlaveAge, random(V.PC.actualAge-1, V.PC.actualAge));
					}
					slave.career = "a child actress";
				}
				slave.face = 100;
				slave.intelligence = random(51, 95);
				slave.intelligenceImplant = 0;
				slave.skill.oral = 100;
				slave.skill.entertainment = 100;
			} else if (isPCCareerInCategory("arcology owner")) {
				slave.career = "a leading arcology citizen";
				if (V.pedo_mode === 1) {
					slave.actualAge = random(16, 18);
				} else {
					slave.actualAge = random(36, 39);
				}
				slave.face = 100;
				slave.faceImplant = 15;
				slave.intelligence = 100;
				slave.intelligenceImplant = 30;
				slave.skill.whoring = 100;
				slave.skill.entertainment = 100;
			}

			slave.trust = 0;
			slave.devotion = 0;
			if (V.pedo_mode === 1 && slave.actualAge > 18) {
				slave.actualAge = random(16, 18);
			}
			slave.visualAge = slave.actualAge;
			slave.physicalAge = slave.actualAge;
			slave.ovaryAge = slave.actualAge;
			slave.pubertyXX = 1;
			resyncSlaveHight(slave);

			switch (V.rival.FS.name) {
				case "Repopulation Focus":
					slave.preg = -3;
					break;
				case "Body Purism":
					slave.boobs = 300;
					break;
				case "Slimness Enthusiasm":
					if (slave.weight > -20) {
						slave.weight = -20;
					}
					slave.boobs = 800;
					break;
				case "Pastoralism":
					slave.weight = 100;
					slave.muscles = 0;
					slave.boobs = 1200;
					break;
				case "Cummunism":
					slave.boobs = 800;
					if (slave.weight > -20) {
						slave.weight = -20;
					}
					break;
				case "Physical Idealism":
					slave.boobs = 200;
					slave.butt = 1;
					if (slave.weight > -20) {
						slave.weight = -20;
					}
					break;
				case "Hedonistic Decadence":
					slave.weight = 100;
					slave.muscles = 0;
					slave.boobs = 1200;
					break;
			}
			return slave;
		}
	}
};


code:
App.Events.PRivalryPeacekeepers = (function() {
	return execute;

	function execute() {
		const node = new DocumentFragment();
		App.Events.addParagraph(node, [`This is a busy time, and ${V.assistant.name}'s call prioritization functions are invaluable. You don't have time for everyone. General ${V.peacekeepers.generalName} is fairly high up the list, though. "${PlayerName()}, thank you for taking the time to speak with me," he greets you. "I understand you've got a lot on your plate right now, so I'll be brief. My intel shop has discovered a slaving ring in the area under my control, run by your rival." He gestures to someone out of view, and a limited overview of his intelligence is delivered to ${V.assistant.name}. The general has given you just enough to verify the ownership of the operation. It does indeed belong to the enemy.`]);

		App.Events.addParagraph(node, [`"As I'm sure you know, I'm dealing with a difficult situation here." His gaze is measuring; he's not offering charity, but considering how best to use the resources he has. "If I had an unlimited number of boots on the ground, I'd mop these people up this afternoon. But I don't. As things are, this doesn't even rise into the top hundred items on my priority list. It'd be years. However."`]);

		App.Events.addParagraph(node, [`He leans in. "However, I think it's possible that it may be necessary to reevaluate our situation before too long." He swivels the camera, panning its view across the windows of the office he's in. Outside, the men and women of his expeditionary force can be seen scattered around the base, taking care of the thousand tasks that make up the daily military grind. They're in good condition, but not all of their gear is: it's well-maintained, but worn. They seem sharp, but loose, as though they're silently reevaluating things, too. As he leaves the camera where it is, letting you examine the scene at length, you wonder what kind of calculations the general is making, that he's allowed you to see this.`]);

		App.Events.addParagraph(node, [`"I'm willing to consider myself under an obligation to you," he concludes. "If you'd like, I'd be willing to shift your rival's slaving operation right to the top of my list of priorities. I'm sure that in your Free Cities way of doing things you'll mop them up sooner or later. Or, say the word, and they'll vanish tonight."`]);

		App.Events.addResponses(node, [
			new App.Events.Result(`Say the word`, yes),
			new App.Events.Result(`Decline`, no),
		]);
		return node;

		function yes() {
			V.eventResults.peacekeeperHelp = 1;
			V.peacekeepers.attitude = 5;
			V.rival.power += 10;
			return `You thank him for the offer, and agree. He nods and ends the call, noting that he now has a short-fuse operation to lie on. You didn't pay him or give him anything of value, but it would be childish to assume that the progress that will be made tonight in your ongoing struggle to overthrow your rival was free. The general now considers all or almost all of your accumulated influence with him to be discharged. That said, his reluctance to do business with the Free Cities seems to have diminished markedly.`;
		}

		function no() {
			V.eventResults.peacekeeperHelp = -1;
			return `You decline politely. He says he understands, and looks like he understands more than he says; you're in this to win yourself, and he seems like the type to prefer winning his victories at first hand. You'll deal with that slaving operation the same way you've been dealing with the rest of your rival's assets: with money. And the general will continue to think of you as a potential ally.`;
		}
	}
})();


code:
App.Events.pRivalryVictory = function() {
	return execute();

	function execute() {
		const node = new DocumentFragment();
		const {
			HisR, HeR,
			hisR, heR
		} = getPronouns({pronoun: (V.rival.gender === 2) ? 1 : 0}).appendSuffix("R");
		V.nextButton = " "; // hide button until user makes a selection
		V.rival.prosperity = 0;
		V.rival.power = 0;
		const rivalArc = V.arcologies.find(a => a.rival === 1);

		App.Events.addParagraph(node, [`For the first time, you receive a direct call from your rival. You pictured the moment as feeling grander than this, sitting at your desk as usual looking into ${hisR} downcast face. You're the victor in a new form of warfare in which bankruptcy has replaced surrender. If the world survives in its present state, you may one day be remembered as an innovator in the evolution of (nearly) bloodless war. Today, your reputation has greatly improved. But today all you have that's tangible is a view of a still-dignified arcology owner, self-possessed despite the situation.`]);

		App.UI.DOM.appendNewElement("p", node, `"For what it's worth," ${heR} says without preamble, "I had nothing against you. The Daughters wouldn't accept a straight buy-off. Their leadership needed a target to attack, or the rank and file would have killed them themselves and gone ahead attacking me. I had to give them an alternative, or it would have been me." ${HeR} looks nervous for the first time. "So, what do we do now? I've still got enough resources to make the end of this story a messy one for you. Let me go, and I won't. I'll walk away, and I'll sign everything I've got left over to you.${(V.rival.hostageState > 0 && V.hostage) ? ` Including ${V.hostage.slaveName}, of course.` : ``}`);

		const result = App.UI.DOM.appendNewElement("div", node);

		App.UI.DOM.appendNewElement("div", result, App.UI.DOM.link(
			`Accept`,
			() => {
				const el = new DocumentFragment();
				const r = [];
				unlockContinue();
				r.push(`You accept, magnanimous in victory. "I don't think I would have done that," your rival replies. "Thank you. When they write the book, I'll make sure you look good."`);
				if (V.rival.state === 2) {
					r.push(`${HisR} remaining liquid assets will go to satisfy ${hisR} great debts, but ${hisR} <span class="yellowgreen">arcology holdings are yours.</span>`);
					if (rivalArc) {
						updateArc();
						rivalArc.PCminority += rivalArc.ownership;
						rivalArc.PCminority = Math.clamp(rivalArc.PCminority, 0, 49);
					}
					if (V.rival.hostageState === 1) {
						V.rival.hostageState = 2;
					}
				} else {
					r.push(`${HisR} arcology will go to satisfy ${hisR} great debts, but you will still profit <span class="yellowgreen">immensely</span> from your victory${(V.rival.hostageState > 0 && V.hostage) ? `, and acquire ${V.hostage.slaveName} as a slave` : ``}.`);
					cashX(random(100000, 250000), "war");
				}
				App.Events.addNode(el, r, "div");
				jQuery(result).empty().append(el);
			}
		));

		App.UI.DOM.appendNewElement("div", result, App.UI.DOM.link(
			`Refuse`,
			() => {
				const el = new DocumentFragment();
				const r = [];
				unlockContinue();
				r.push(`You coldly decline. "That was a mistake," your rival replies, entering a computer command.`);
				if (V.rival.state === 2) {
					r.push(`"All my remaining liquid assets have just been carefully dispersed to deny you control of my arcology. You'll get nothing from me." It's true. The financial self-destruction ensures that the fiscal wreckage goes to the arcology's citizens, not you.`);
					if (rivalArc) {
						updateArc();
					}
					r.push(hostageBounty());
				} else {
					r.push(`"All my remaining liquid assets have just been expended in an attack on the value of your holdings, and my arcology has been heavily sabotaged. You'll get nothing from me." It's not entirely true, but the damage to your holdings does outweigh your gains by a significant margin. Your rival vanishes back into the old world.`);
					cashX(random(-10000, -25000), "war");
				}
				App.Events.addNode(el, r, "div");
				jQuery(result).empty().append(el);
			}
		));
		if (V.rival.duration >= 30 && V.rival.hostageState === 0 && V.rival.state === 2) {
			App.UI.DOM.appendNewElement("div", result, App.UI.DOM.link(
				`Refuse, and place a bounty of ${cashFormat(50000)} on your rival's death`,
				() => {
					const el = new DocumentFragment();
					let r = [];
					unlockContinue();
					r.push(`You coldly decline. "That was a mistake," your rival replies, entering a computer command. "All my remaining liquid assets have just been expended in an attack on the value of your holdings, and my arcology has been heavily sabotaged. You'll get nothing from me." It's not entirely true, but the damage to your holdings does outweigh your gains by a significant margin. Your rival vanishes back into the old world — but only for a few days.`);
					App.Events.addParagraph(el, r);
					r = [];
					r.push(`Your bounty is quickly claimed, and you are treated to the delicious moment of finding your rival's head delivered to your doorstep. It might not have done much good, but damn did it feel good.`);
					App.Events.addParagraph(el, r);
					cashX(-50000, "war");
					if (rivalArc) {
						updateArc();
					}
					jQuery(result).empty().append(el);
				}
			));
		}
		App.UI.DOM.appendNewElement("div", result, App.UI.DOM.link(
			`Refuse, and place a bounty of ${cashFormat(50000)} on your rival's enslavement`,
			() => {
				const el = new DocumentFragment();
				const r = [];
				unlockContinue();
				r.push(`You coldly decline. "That was a mistake," your rival replies, entering a computer command.`);
				if (V.rival.state === 2) {
					r.push(`"All my remaining liquid assets have just been carefully dispersed to deny you control of my arcology. You'll get nothing from me." It's true. The financial self-destruction ensures that the fiscal wreckage goes to the arcology's citizens, not you.`);
					if (rivalArc) {
						updateArc();
						if (rivalArc.FSSupremacist > 20) {
							V.rival.race = rivalArc.FSSupremacistRace;
						} else if (rivalArc.FSSubjugationist > 20) {
							V.rival.race = Array.from(App.Data.misc.filterRacesPublic.keys()).filter(race => race !== rivalArc.FSSubjugationistRace).random();
						}
					}
					r.push(hostageBounty());
				} else {
					r.push(`"All my remaining liquid assets have just been expended in an attack on the value of your holdings, and my arcology has been heavily sabotaged. You'll get nothing from me." It's not entirely true, but the damage to your holdings does outweigh your gains by a significant margin.`);
					cashX(random(-10000, -25000), "war");
				}
				cashX(-50000, "war");
				r.push(pRivalryCapture("victory"));
				App.Events.addNode(el, r, "div");
				jQuery(result).empty().append(el);
			}
		));

		return node;

		function hostageBounty() {
			if (V.rival.hostageState === 0 || !V.hostage) {
				return;
			}
			const result2 = App.UI.DOM.makeElement("p");
			App.UI.DOM.appendNewElement("div", result2, App.UI.DOM.link(
				`Place a bounty of ${cashFormat(10000)} on your rival's psychological warfare tool`,
				() => {
					const {He} = getPronouns(V.hostage);
					jQuery(result2).empty().append(`You make sure to post a bounty sufficient to ensure that ${V.hostage.slaveName}, your rival's psychological warfare tool, does not escape or go unrescued, depending on one's point of view. ${He} is quickly picked out of the chaos of your rival's escape and delivered to you.`);
					V.rival.hostageState = 2;
					cashX(-10000, "war");
				}
			));
			return result2;
		}

		function unlockContinue() {
			V.nextButton = "Continue";
			App.Utils.updateUserButton();
		}

		function updateArc() {
			rivalArc.embargo = 0;
			rivalArc.embargoTarget = -1;
			rivalArc.influenceTarget = -1;
			rivalArc.rival = 0;
			rivalArc.government = "direct democracy";
		}
	}
};


code:
App.Events.PShootInvitation = class PShootInvitation extends App.Events.BaseEvent {
	constructor(actors, params) {
		super(actors, params);
	}

	get eventName() {
		return "Shoot Invitation";
	}

	execute(node) {
		let r = [];
		r.push(`${capFirstChar(V.assistant.name)} usually delays message delivery when you're relieving your sexual needs with your property, but messages from other arcology owners have a special priority. This one is a brief but rather well-spoken audio invitation from one of your more notoriously wealthy peers.`);
		App.Events.addParagraph(node, r);
		r = [];
		r.push(`"A week from today, I will be hosting a novel sporting event for the well-to-do. A new tradition, if it's as diverting as I hope. If you wish to take part in a very exclusive contest of marksmanship, exhibitionism, and grace under pressure, buy in. Five thousand. And, believe me, you have a fine chance to come out ahead."`);
		App.Events.addParagraph(node, r);

		const responses = [];
		responses.push(new App.Events.Result(`Buy in`, buy));
		responses.push(new App.Events.Result(`Politely decline`, decline));

		App.Events.addResponses(node, responses);

		function buy() {
			cashX(-5000, "event");
			App.Events.queueEvent(1, new App.Events.PShootResult());
			return `You receive a brief but elegant confirmation. It looks like you've RSVP'd.`;
		}
		function decline() {
			return `You decline the invitation.`;
		}
	}
};


code:
App.Events.PSlaveFood = class PSlaveFood extends App.Events.BaseEvent {
	constructor(actors, params) {
		super(actors, params);
	}

	get eventName() {
		return "Slave Food";
	}

	execute(node) {
		let r = [];
		const {
			HeA, HisA,
			heA, hisA, himA, girlA, himselfA, womanA
		} = getPronouns(assistant.pronouns().main || {pronoun: 1}).appendSuffix("A");

		r.push(`A screen opposite your desk springs to life,`);
		if (V.assistant.personality <= 0) {
			r.push(`showing your personal assistant's symbol, indicating that it has a complex subject to report. When you instruct it to continue, it displays`);
		} else {
			r.push(`and ${V.assistant.name}'s avatar appears on it seated, indicating that ${heA} has something complex to bring up. When you tell ${himA} to continue, ${heA} reviews`);
		}
		r.push(`medical research that's just been published, on the long term effects of the liquid diet your slaves eat. The current generation of slaves is the first, and new discoveries about the effects of years of modern slavery are made all the time. Apparently, consuming state of the art slave food causes slow atrophy of slaves' digestive tracts. The slaves' ability to digest the slave food does not seem to be affected; the atrophy is the body's natural reaction to never facing digestive challenge, and once it reaches the point where the remaining digestive capacity is necessary for liquid slave food, it stops. The only negative effect known is difficulty readjusting to normal food, becoming more extreme the longer the slave food diet was followed.`);
		App.Events.addParagraph(node, r);
		r = [];
		r.push(`"In conclusion,"`);
		if (V.assistant.personality <= 0) {
			r.push(`your assistant recites, "no impact on slaves who fully adapt to slave food is likely, as long as they remain slaves. If they were to be freed, they would have to either continue obtaining liquid slave food, or go through a difficult or even impossible dietary transition." ${HeA} pauses. "This information is likely to remain at the level of a rumor among the slave population, unless it is openly admitted."`);
		} else {
			r.push(`${heA} says, "your slaves who stay on slave food long enough to need it will be totally fine, as long as they stay slaves. If they're ever freed, though, they have to keep eating slave food, or somehow switch. And that's never been tried."`);
			switch (V.assistant.appearance) {
				case "monstergirl":
					r.push(`The monster${girlA} bares ${hisA} fangs and becomes very erect. "They're stuck," ${heA} says. "They're fuckslaves forever." ${HeA} pauses.`);
					break;
				case "shemale":
					r.push(`The shemale starts to stroke ${himselfA}. "Their assholes are going to be nice and clean and fuckable forever," ${heA} says, starting to cum.`);
					break;
				case "amazon":
					r.push(`The amazon looks pleased. "They're changing to fit their place," ${heA} says.`);
					break;
				case "businesswoman":
					r.push(`The business${womanA} fans ${himselfA}, looking rather hot under the collar. "Another way they're bound to you," ${heA} says breathily.`);
					break;
				case "fairy":
					r.push(`The small fairy giggles and spins around on one foot. "Looks like they'll be under our care for life!" ${HeA} comes to a stop.`);
					break;
				case "pregnant fairy":
					r.push(`The small fairy giggles and rapidly beats ${hisA} wings. "Looks like they'll be under our care for life!" ${HisA} wings settle down.`);
					break;
				case "goddess":
					r.push(`The goddess beams. "It's wonderful," ${heA} says radiantly. "Their place is here, with us." ${HeA} pauses.`);
					break;
				case "hypergoddess":
					r.push(`The child filled goddess beams. "It's wonderful," ${heA} says radiantly. "They are like our children, and this arcology our womb; even after they are born they are forever bound to us." ${HeA} pauses.`);
					break;
				case "loli":
					r.push(`The little ${girlA} smiles happily while jumping up and down. "So we can be friends forever? That's great!" ${HeA} pauses.`);
					break;
				case "preggololi":
					r.push(`The little ${girlA} smiles happily. "So we can be friends forever? That's great!" ${HeA} pauses.`);
					break;
				case "angel":
					r.push(`The angel frowns. "How unfair. But you'll tend to your flock, right?"`);
					break;
				case "cherub":
					r.push(`The cherub pauses. "That means they can't stray from your flock, they have to stay near you, right?"`);
					break;
				case "incubus":
					r.push(`The incubus smirks. "I don't care either way. A hole is a hole."`);
					break;
				case "succubus":
					r.push(`The succubus frowns. "That means they are reshaping themselves to fit you better. THAT, is MY job."`);
					break;
				case "imp":
					r.push(`The imp laughs. "They are nothing but toys now, never allowed to be free again!"`);
					break;
				case "witch":
					r.push(`The witch ponders. "It's probably more convenient than casting a spell, less side effects too. Sorry again about that last spell."`);
					break;
				case "ERROR_1606_APPEARANCE_FILE_CORRUPT":
					r.push(`It begins to twitch excitedly. "That means its digestive track is empty. Think how many young can be shoved in there now!" Its avatar is visible erect, maybe? It's sometimes hard to tell.`);
					break;
				case "schoolgirl":
					r.push(`The school${girlA} snickers cruelly. "Suck dick or starve," ${heA} sniggers.`);
					break;
				default:
					r.push(`${HisA} symbol rotates slowly.`);
			}
			r.push(`"The truth will get out, but it'll be nothing more than a rumor among the slaves unless you let it be known yourself."`);
		}
		V.revealFoodEffects = 0;

		App.Events.addResponses(node, [
			new App.Events.Result(`Conceal the effects from your slaves!`, conceal),
			new App.Events.Result(`Admit the truth to your slaves`, admit)
		]);

		function conceal() {
			return `Your slaves don't need to know that every drop of food they drink is making the light of any eventual freedom they may someday enjoy dimmer and dimmer. Slaves talk to each other all the time, and rumors fly around in such profusion that the truth often gets lost among them. The cruel irony of the symptoms the research discovered is that they're impossible for the slaves to notice so long as they continue to eat the slave food.`;
		}

		function admit() {
			V.revealFoodEffects = 1;
			return `Your new slaves already receive a simple explanation of the way the slave food works as part of their training. You simply append a statement to the effect that the slaves' bodies will adapt to the slave food, slowly making it difficult and eventually impossible for them to eat anything else. There is no immediate reaction, but the news begins to filter out among the slaves. They'll react to the newly revealed nature of their food in accordance with their individual attitudes.`;
		}
	}
};


code:
App.Events.PStripClubAftermath = class PStripClubAftermath extends App.Events.BaseEvent {
	constructor(actors, params) {
		super(actors, params);
	}

	get eventName() {
		return "Strip Club Aftermath";
	}

	execute(node) {
		let r = [];
		let contractCost = 1000;
		let cost;
		const slave = GenerateNewSlave(null, {
			minAge: V.minimumSlaveAge, maxAge: 42, disableDisability: 1, race: "nonslave"
		});

		if (V.eventResults.strip === 1) {
			slave.origin = "$He offered $himself to you as a slave to escape the hard life of a free whore.";
			slave.career = "a prostitute";
			slave.devotion = 20;
			slave.trust = 5;
			setHealth(slave, jsRandom(-90, 10), undefined, undefined, undefined, 40);
			slave.anus = 2;
			if (slave.dick === 0) {
				slave.vagina = 2;
				slave.skill.vaginal = 15;
			}
			slave.skill.oral = 15;
			slave.skill.anal = 15;
			slave.skill.whoring = 15;
			slave.addict = 2;
			cost = slaveCost(slave);
		} else if (V.eventResults.strip === 2) {
			slave.origin = "$He offered $himself to you, impressed by your handling of $his employment situation.";
			slave.career = "a prostitute";
			slave.devotion = 45;
			slave.trust = 25;
			setHealth(slave, 20, undefined, undefined, undefined, 20);
			slave.anus = 2;
			if (slave.dick === 0) {
				slave.vagina = 2;
				slave.skill.vaginal = 35;
			}
			slave.skill.oral = 35;
			slave.skill.anal = 35;
			slave.skill.whoring = 35;
			slave.boobs += 600;
			slave.boobsImplant = 600;
			slave.boobsImplantType = "string";
			slave.piercing.lips.weight = 1;
			slave.piercing.ear.weight = 1;
			slave.piercing.nose.weight = 1;
			slave.piercing.eyebrow.weight = 1;
			slave.piercing.navel.weight = 1;
			slave.piercing.nipple.weight = 1;
			slave.piercing.genitals.weight = 1;
			slave.hStyle = "strip";
			cost = slaveCost(slave);
		}
		const {
			He,
			he, his, him, himself, girl
		} = getPronouns(slave);
		const {
			HeU,
			himU, hisU, heU, girlU, womanU
		} = getNonlocalPronouns(V.seeDicks).appendSuffix("U");
		const {say} = getEnunciation(slave);

		if (V.eventResults.strip === 1) {
			r.push(`One day, you walk by the commercial space where the strip club that closed was located. It's now advertised as a massage parlor, but the real merchandise on offer is obvious. You can see a bored-looking, half-dressed masseuse rubbing a client, but the sounds of someone having hard sex are filtering out from the back room, and the pricing sheet lists more orifices than massage options.`);
			App.Events.addParagraph(node, r);
			r = [];
			r.push(`As you pass, a tired-looking streetwalker walking by wearing ripped jeans and a torn top offers ${himself} to you. ${He}'s halfway through ${his} clumsy come-on before ${he} curses and rushes over to kneel at your feet. As ${he} does, ${he} shrieks,`);
			r.push(Spoken(slave, `"You own this arcology! You — you offered to enslave us strippers when the old place closed down! Please, please, can I accept? I'm sorry I didn't earlier. I'm sorry. I'll fucking do anything! Please!"`));
			App.Events.addParagraph(node, r);
			r = [];
			r.push(App.UI.DOM.makeElement("span", `Enslaving ${him} will cost ${cashFormat(contractCost)}. Alternatively, you could sell ${him}. Less costs, this will bring in ${cashFormat(cost)}.`, "note"));
			App.Events.addParagraph(node, r);
			r = [];
			r.push(App.Desc.longSlave(slave));
		} else if (V.eventResults.strip === 2) {
			r.push(`One day, you walk by the commercial space where the strip club that closed was located. It's now advertised as a massage parlor, and indeed, you can see a couple of competent-looking, modestly dressed masseuses seeing to clients. The only chink in the old world decorum is the pretty sign detailing pricing, which lists not only various massages but the masseuses' hands, breasts, mouths,`);
			if (V.seeDicks !== 100) {
				r.push(`pussies,`);
			}
			r.push(`and anuses.`);
			App.Events.addParagraph(node, r);
			r = [];
			r.push(`As you pass, a pretty streetwalker walking by wearing an attractive club ${girl} outfit sidles up to you. ${He}'s halfway through ${his} first flirty come-on before ${he} recognizes you. ${He} gasps and ${say}s,`);
			r.push(Spoken(slave, `"You own this arcology! ${(V.PC.title !== 0) ? `Sir` : `Ma'am`}, I was a stripper here! Thank you so much for helping us. That money set most of us up pretty well." ${He} hefts ${his} chest. "It bought me new boobs, that's for sure. So, um,"`));
			r.push(`${he} bites ${his} lip in indecision,`);
			r.push(Spoken(slave, `"I hear —"`));
			r.push(`${he} hesitates and then the words come out in a rush.`);
			r.push(Spoken(slave, `"I hear your ${girl}s do really well. I've seen them, they look good. Can I come?"`));
			r.push(`You arch an eyebrow and begin to ask whether ${he} knows what that means.`);
			r.push(Spoken(slave, `"Yep,"`));
			r.push(`${he} interrupts.`);
			r.push(Spoken(slave, `"I'll be your sex slave."`));
			App.Events.addParagraph(node, r);
			r = [];
			r.push(App.UI.DOM.makeElement("span", `Enslaving ${him} will cost ${cashFormat(contractCost)}. Alternatively, you could sell ${him}. Less costs, this will bring in ${cashFormat(cost)}.`, "note"));
			App.Events.addParagraph(node, r);
			r = [];
			r.push(App.Desc.longSlave(slave));
		} else {
			r.push(`One day, you walk by the commercial space where the strip club that closed was located. The ${girlU}s you set up in cheap housing tried to run the place as a worker-owned strip bar for a while, but as you suspected, they were obliged to start whoring in short order. With the price of sex driven so low by slave competition, there's hardly any profit in bodies patrons can't even touch. The ${girlU}s here might be prostitutes now, but they're still free and they're surviving.`);
			App.Events.addParagraph(node, r);
			r = [];
			r.push(`As you pass, a pretty bottle blonde comes running out. "Hey," ${heU} calls, "you're the owner! You set us up with this place!" You ask ${himU} how they're doing. "Well," ${heU} says, smiling ruefully, "turning tricks ain't easy, you know. But we get by. Those rooms you set up for us are nice and cheap, even if we're packed in there like`);
			if (heU === "he") {
				r.push(`fraternity boys."`);
			} else {
				r.push(`sorority girls."`);
			}
			r.push(`${HeU} winks. "Hey, I don't suppose you've fucked a free ${womanU} lately? I'll give you an Arcology Tour, on the house. Least I can do."`);
		}

		App.Events.addParagraph(node, r);

		const responses = [];
		if (V.eventResults.strip !== 3) {
			if (V.cash >= contractCost) {
				responses.push(new App.Events.Result(`Enslave ${him}`, enslave));
			} else {
				responses.push(new App.Events.Result(null, null, `You lack the necessary funds to enslave ${him}.`));
			}
		} else {
			responses.push(new App.Events.Result(`Take an Arcology Tour`, tour));
			responses.push(new App.Events.Result(`Politely decline`, decline));
		}

		App.Events.addResponses(node, responses);

		function enslave() {
			const el = new DocumentFragment();
			const r = [];
			cashX(forceNeg(contractCost), "slaveTransfer", slave);
			if (V.eventResults.strip === 1) {
				r.push(`${He} sobs with gratitude as the biometric scanners scrupulously record ${his} every particular as belonging not to a person but to a piece of human property. The medical scan discloses that ${his} aphrodisiac addiction is very new: ${he} will probably be able to kick the habit in short order if you decide to withhold further doses.`);
			} else {
				r.push(`${He} smiles with gratitude as the biometric scanners scrupulously record ${his} every particular as belonging not to a person but to a piece of human property. ${He}'s seen what Free Cities life is, and ${he} seems to have come to the conclusion that being a slave in the penthouse is better than being a free whore on the lower levels.`);
			}
			App.Events.addParagraph(el, r);
			el.append(App.UI.newSlaveIntro(slave));
			return el;
		}

		function tour() {
			const el = new DocumentFragment();
			const r = [];
			r.push(`The cubicle ${heU} takes you back into is small, but clean and well-kept. ${HeU} gives you a kiss on the cheek. "That's not part of the Arcology Tour. Sorry. Here's the start of the real tour."`);
			if (V.PC.dick !== 0) {
				r.push(`${HeU} sucks you to full mast while shucking off ${hisU} skimpy clothing${(V.PC.vagina !== -1) ? `, giggling appreciatively at your pussy and lavishing attention on it with ${hisU} hands` : ``}. Then ${heU} turns around and slides you into ${hisU}`);
				if (heU === "he") {
					r.push(`ass`);
				} else {
					r.push(`pussy`);
				}
				r.push(`with the ease of long practice. After a good long standing fuck, ${heU} begs you to "finish the tour" in ${hisU} ass and then "pay the tour guide" by coming in ${hisU} mouth.`);
			} else {
				r.push(`${HeU} giggles. "Tour's a little different for a lady like you, Ma'am. Here," ${heU} says, and starts to make out with you, pressing you back down onto a bench. ${HeU} lavishes expert oral attention on your pussy in a series of clever positions that offer every part of ${hisU} body to you in turn for you to grope, squeeze, and penetrate with your fingers.`);
			}
			r.push(`Afterward, as ${heU}'s hurrying back into ${hisU} clothes, ${heU} says, "We've got the money you paid to set those rooms up, here it is. And we're doing pretty good, so we could use a little more working space. We'd like the vacant space next door. We'll furnish it, if you'll let us have it?" ${V.arcologies[0].name}'s prosperity has increased.`);
			App.Events.addParagraph(el, r);
			V.arcologies[0].prosperity += 2;
			cashX(500, "event");
			return el;
		}

		function decline() {
			const el = new DocumentFragment();
			const r = [];
			r.push(`"Aw," ${heU} says, "you're no fun. Well anyway, we've got the money you paid to set those rooms up, here it is. And we're doing pretty good, so we could use a little more working space. We'd like the vacant space next door. We'll furnish it, if you'll let us have it?" ${V.arcologies[0].name}'s prosperity has increased.`);
			App.Events.addParagraph(el, r);
			V.arcologies[0].prosperity += 2;
			cashX(500, "event");
			return el;
		}
	}
};


code:
App.Events.PStripClubClosing = class PStripClubClosing extends App.Events.BaseEvent {
	constructor(actors, params) {
		super(actors, params);
	}

	get eventName() {
		return "Strip Club Closing";
	}

	execute(node) {
		let r = [];
		V.eventResults.strip = 1;
		r.push(`It's been a good few weeks, getting settled in as owner of ${V.arcologies[0].name}. The power of being overlord of this great building and everyone in it is incredible, but so is the responsibility. It's a good thing you have ample opportunities for stress relief. You're going to need them after today. There's a nasty disturbance on a business level of the arcology. Normally, the arcology's public safety drones would suppress this kind of nonsense, but ${V.assistant.name} program is suggesting that you resolve the dispute.`);
		App.Events.addParagraph(node, r);
		r = [];
		r.push(`As you step off the elevator, you hear several`);
		if (V.seeDicks !== 100) {
			r.push(`female`);
		}
		r.push(`voices shouting. Apparently one of ${V.arcologies[0].name}'s few remaining strip joints has closed. It was a topless bar and strip club all in one, but the owner is packing up his things. He's explaining to a crowd of his angry former employees that he can't make ends meet. As the price of a slave whore is barely higher than that of a lap dance from a free stripper, it's not surprising. It looks like the former dancers are on the verge of trashing the place.`);

		App.Events.addParagraph(node, r);

		App.Events.addResponses(node, [
			new App.Events.Result(`Offer to take them in`, takeIn),
			new App.Events.Result(`Offer them severance pay`, pay, `This will cost ${cashFormat(1000)}`),
			new App.Events.Result(`Offer to set them up independently`, setUp, `This will cost ${cashFormat(500)}`),
		]);

		function takeIn() {
			V.nextButton = "Continue";
			App.Utils.scheduleSidebarRefresh();
			return `The now-unemployed strippers are not impressed by your offer to take them in. "What," one of them says, "be one of your shivering little cunts? You'd have us signing ourselves into slavery inside two weeks. Fuck off, we'll take the streets." Under the nonlethal riot cannons of the security drones, they file off, muttering mutinously. Unfortunately, you don't have any pretense to enslave or imprison them.`;
		}

		function pay() {
			V.nextButton = "Continue";
			App.Utils.scheduleSidebarRefresh();
			const el = new DocumentFragment();
			let r = [];
			r.push(`You have a word with them, stepping closer and speaking quietly to defuse the situation. You tell them you're aware that they're in a difficult place, but you also explain that the Free Cities are a new and changing place. No one can rely on the old way of doing things any more. You offer to pay each of them a small stipend to help tide them over until they find other employment. They're surprised at your munificence but accept it with gratitude.`);
			App.Events.addNode(el, r);
			repX(2000, "event");
			cashX(-1000, "event");
			V.eventResults.strip = 2;
			return el;
		}

		function setUp() {
			V.nextButton = "Continue";
			App.Utils.scheduleSidebarRefresh();
			const el = new DocumentFragment();
			let r = [];
			r.push(`You offer a way out of their situation. They, you suggest, can keep working in the now-vacant shop if they work together to pay the rent. They can move into a couple of vacant rooms nearby that you can easily have set up as a bunkhouse. You'll collect a little more rent, and they'll have a second chance. They accept it with gratitude. It's quite likely they'll either fail or have to accept being whores rather than strippers, but that's not your concern. Your arcology's prosperity has increased.`);
			App.Events.addNode(el, r);
			V.arcologies[0].prosperity++;
			repX(500, "event");
			cashX(-500, "event");
			V.eventResults.strip = 3;
			return el;
		}
	}
};


code:
App.Events.TFSFarmUpgrade = class TFSFarmUpgrade extends App.Events.BaseEvent {
	eventPrerequisites() {
		return [
			() => V.TFS.schoolPresent === 1,
			() => V.organFarmUpgrade !== 0,
			() => V.TFS.farmUpgrade === 0
		];
	}

	execute(node) {
		let r = [];
		V.TFS.farmUpgradeAsked = V.week;

		r.push(`You receive yet another personal call from an older Futanari Sister, one of the Sisters who lives in your arcology; you've given up trying to tell them apart. Unusually, this one has taken a break from the Sisters' constant sexual communion to concentrate on speaking with you, and she looks serious, though she's still a gorgeous naked futa whose boobs fill half the screen, and whose perpetually erect dick pokes insistently into frame.`);
		if (V.PC.slaveSurname) {
			if (V.PC.title) {
				r.push(`"Mr.`);
			} else {
				r.push(`"Ms.`);
			}
			r.push(`${V.PC.slaveSurname},"`);
		} else {
			r.push(`"${V.PC.slaveName},"`);
		}
		r.push(`she says`);
		if (V.PC.dick !== 0 && V.PC.vagina !== -1 && V.PC.boobs >= 300) {
			r.push(`submissively, "I would like to beg a favor of you." She looks uncharacteristically uncomfortable, but steels herself and asks. "Please, may we use your organ farm? We're not... complete. Like you." She hugs herself unconsciously, her arms pressing her enormous breasts against her chest. "We... I... would like to be like you, and we`);
		} else {
			r.push(`politely, "I would like to ask a favor of you on behalf of myself and my Sisters." She looks less confident than the older Sisters usually do, but steels herself and asks. "May we use your organ farm? We would like to really complete our transformations. We`);
		}
		if (V.TFS.schoolUpgrade === 3 && V.TFS.compromiseWeek + 15 <= V.week) {
			r.push(`have a rather cheap one to grow dicks for the girls and we`);
		}
		r.push(`can pay for the costs of using it, but we have no other way of accessing such advanced technology."`);

		App.Events.addParagraph(node, r);
		r = [];

		r.push(`"I know that you could demand thousands of credits," she continues, "but the discount we already give you is all we can afford without selling Sisters early.`);
		if (V.PC.dick !== 0 && V.PC.vagina !== -1 && V.PC.boobs >= 300) {
			r.push(`I would pretend to be independent and offer you the choice of how we approach this, but you've already given us so much, and you're... so perfect. We'll do whatever you say. If you do give us this priceless gift, it's your decision`);
		} else {
			r.push(`All we have to offer for this priceless gift is your decision on an important question:`);
		}
		r.push(`whether we will use contraception after we are transformed." She shudders suddenly, gripped by obscure emotion. "Not using contraception would be a hard change in some ways. But years later, there would be... more of us."`);

		App.Events.addParagraph(node, r);
		r = [];

		r.push(`"Please forgive me for calling you, instead of asking you in person," she says penitently. "And please come down to see us, whatever you decide."`);

		const choices = [];
		choices.push(new App.Events.Result(`Permit them access, but tell them to use contraception`, contraception));
		if (V.seePreg !== 0) {
			choices.push(new App.Events.Result(`Permit them access, and encourage them to get pregnant`, preg));
			if (V.seeHyperPreg === 1) {
				choices.push(new App.Events.Result(`Permit them access, and encourage them to embrace hyperpregnancy`, hyperPreg));
			}
			// choices.push(new App.Events.Result(`Decline, but grant them something more fitting`, fitting));
		}
		choices.push(new App.Events.Result(`Decline`, decline));
		App.Events.addResponses(node, choices);

		function contraception() {
			V.TFS.farmUpgrade = 1;
			return `You signify your assent, telling the Sister that the organ farm will accept seed tissue from any of them for the purpose of fabricating ovaries. To your mild surprise, she responds by breaking down into cutely inelegant crying. You add that you think the Sisters are beautiful as they are, and recruits will continue to approach them; it's not necessary for them to go through the rigors of pregnancy. It takes her a long time to manage to thank you properly, and she hurries to end the call before she can embarrass herself further.`;
		}

		function preg() {
			const frag = new DocumentFragment();
			let r = [];
			r.push(`You signify your assent, telling the Sister that the organ farm will accept seed tissue from any of them for the purpose of fabricating ovaries. To your mild surprise, she responds with cutely inelegant crying. You add that you think the world needs more Futanari Sisters, especially ones as cute and sexy as you're confident her many daughters will be. At that, she breaks down completely, one of her hands going to rub her belly gently. It takes her a long time to manage to thank you properly, and she hurries to end the call before she can embarrass herself further.`);
			if (V.arcologies[0].FSRestartDecoration === 100 && V.eugenicsFullControl !== 1) {
				r.push(`The Societal Elite are <span class="red">outraged</span> that you would not only allow such a breach of eugenics to occur, but encourage it.`);
			}
			V.TFS.farmUpgrade = 2;
			if (V.arcologies[0].FSRestart !== "unset" && V.eugenicsFullControl !== 1) {
				V.failedElite += 275;
			}
			App.Events.addParagraph(frag, r);
			return frag;
		}

		function hyperPreg() {
			const frag = new DocumentFragment();
			let r = [];
			r.push(`You signify your assent, telling the Sister that the organ farm will accept seed tissue from any of them for the purpose of fabricating ovaries, so long as they are willing to bear as many children as they can handle. To your mild surprise, she responds with cutely inelegant crying. You add that you think the world needs many more Futanari Sisters, especially ones as cute and sexy as you're confident her countless daughters will be. At that, she breaks down completely, one of her hands going to rub her belly gently. It takes her a long time to manage to thank you properly, and she hurries to end the call before she can embarrass herself further.`);
			if (V.arcologies[0].FSRestartDecoration === 100 && V.eugenicsFullControl !== 1) {
				r.push(`The Societal Elite are <span class="red">outraged</span> that you would not only allow such a breach of eugenics to occur, but encourage it to such an obscene degree.`);
			}
			V.TFS.farmUpgrade = 3;
			if (V.arcologies[0].FSRestart !== "unset" && V.eugenicsFullControl !== 1) {
				V.failedElite += 1000;
			}
			App.Events.addParagraph(frag, r);
			return frag;
		}

		function fitting() {
			const frag = new DocumentFragment();
			let r = [];
			r.push(`You decline her offer and propose a new one, letting the Sister know that the organ farm will accept seed tissue from any of them for the purpose of fabricating testicular ovaries, which should satisfy their desires, if in an unorthodox way. To your mild surprise, she responds with cutely inelegant crying. You add that you think the world needs more Futanari Sisters, especially ones as cute and sexy as you're confident her many daughters will be. At that, she breaks down completely, one of her hands going to rub her balls gently. It takes her a long time to manage to thank you properly, and she hurries to end the call before she can embarrass herself further.`);
			if (V.arcologies[0].FSRestartDecoration === 100 && V.eugenicsFullControl !== 1) {
				r.push(`The Societal Elite are <span class="red">outraged</span> that you would not only allow such a breach of eugenics to occur, but encourage it.`);
			}
			V.TFS.farmUpgrade = 4;
			if (V.arcologies[0].FSRestart !== "unset" && V.eugenicsFullControl !== 1) {
				V.failedElite += 100;
			}
			App.Events.addParagraph(frag, r);
			return frag;
		}

		function decline() {
			V.TFS.farmUpgrade = -1;
			return `You decline. The Sister accepts your decision politely, but cannot hide her deep disappointment.`;
		}
	}
};