From f9235027cad4a36884084e5280381fdb53f0c610 Mon Sep 17 00:00:00 2001
From: Pregmodder <pregmodder@gmail.com>
Date: Wed, 5 Aug 2020 06:30:33 -0400
Subject: [PATCH] saChoosesOwnJob.js

---
 src/endWeek/clinicReport.js                   |   4 +-
 src/endWeek/nurseryReport.js                  |   2 +-
 src/endWeek/saChoosesOwnJob.js                | 591 ++++++++++++++++++
 src/endWeek/saGetMilked.js                    |   2 +-
 src/endWeek/schoolroomReport.js               |   4 +-
 src/endWeek/servantsQuartersReport.js         |   4 +-
 src/endWeek/slaveAssignmentReport.js          |   2 +-
 .../farmyard/reports/farmyardReport.js        |   2 +-
 src/uncategorized/arcadeReport.tw             |   8 +-
 src/uncategorized/brothelReport.tw            |   4 +-
 src/uncategorized/cellblockReport.tw          |   4 +-
 src/uncategorized/clubReport.tw               |   4 +-
 src/uncategorized/dairyReport.tw              |   4 +-
 src/uncategorized/masterSuiteReport.tw        |   4 +-
 src/uncategorized/penthouseReport.tw          |   4 +-
 src/uncategorized/saChoosesOwnJob.tw          | 525 ----------------
 src/uncategorized/spaReport.tw                |   4 +-
 17 files changed, 618 insertions(+), 554 deletions(-)
 create mode 100644 src/endWeek/saChoosesOwnJob.js
 delete mode 100644 src/uncategorized/saChoosesOwnJob.tw

diff --git a/src/endWeek/clinicReport.js b/src/endWeek/clinicReport.js
index 85476812c7c..c0fb64dc636 100644
--- a/src/endWeek/clinicReport.js
+++ b/src/endWeek/clinicReport.js
@@ -379,7 +379,7 @@ App.EndWeek.clinicReport = function() {
 			}
 			$(slaveEntry).append(`<span class='slave-name'>${SlaveFullName(slave)}</span> `);
 			if (slave.choosesOwnAssignment === 2) {
-				$(slaveEntry).append(App.UI.DOM.renderPassage("SA chooses own job"));
+				$(slaveEntry).append(`${App.SlaveAssignment.choosesOwnJob(slave)}`);
 			} else {
 				$(slaveEntry).append(`is receiving treatment in ${V.clinicName}.`);
 			}
@@ -389,7 +389,7 @@ App.EndWeek.clinicReport = function() {
 			$(slaveEntry).append(App.SlaveAssignment.standardSlaveReport(slave, false));
 		} else {
 			// discard return values silently
-			App.UI.DOM.renderPassage("SA chooses own job");
+			App.SlaveAssignment.choosesOwnJob(slave);
 			App.SlaveAssignment.rest(slave);
 			App.SlaveAssignment.standardSlaveReport(slave, true);
 		}
diff --git a/src/endWeek/nurseryReport.js b/src/endWeek/nurseryReport.js
index bf6eaddf938..ae26293a119 100644
--- a/src/endWeek/nurseryReport.js
+++ b/src/endWeek/nurseryReport.js
@@ -219,7 +219,7 @@ App.Facilities.Nursery.nurseryReport = function nurseryReport() {
 			$(slaveEntry).append(`<span class="slave-name">${SlaveFullName(slave)}</span> `);
 
 			if (slave.choosesOwnAssignment === 2) {
-				$(slaveEntry).append(App.UI.DOM.renderPassage("SA chooses own job"));
+				$(slaveEntry).append(`${App.SlaveAssignment.choosesOwnJob(slave)}`);
 			} else {
 				$(slaveEntry).append(`is working out of ${V.nurseryName}.`);
 			}
diff --git a/src/endWeek/saChoosesOwnJob.js b/src/endWeek/saChoosesOwnJob.js
new file mode 100644
index 00000000000..88ca68829fa
--- /dev/null
+++ b/src/endWeek/saChoosesOwnJob.js
@@ -0,0 +1,591 @@
+App.SlaveAssignment.choosesOwnJob = (function() {
+	"use strict";
+
+	let r;
+	let choice;
+
+	// eslint-disable-next-line no-unused-vars
+	let he, him, his, hers, himself, girl, loli, He, His;
+
+	let clinicL;
+	let schoolL;
+	let servQL;
+	let nurseryL;
+	let brothelL;
+	let clubL;
+	let masterSL;
+	let spaL;
+	let dairyL;
+	let arcology;
+
+	return saChoosesOwnJob;
+
+	/**
+	 * @param {App.Entity.SlaveState} slave
+	 * @returns {string}
+	 */
+	function saChoosesOwnJob(slave) {
+		r = [];
+		choice = [];
+
+		clinicL = App.Entity.facilities.clinic.employeesIDs().size;
+		schoolL = App.Entity.facilities.schoolroom.employeesIDs().size;
+		servQL = App.Entity.facilities.servantsQuarters.employeesIDs().size;
+		nurseryL = App.Entity.facilities.nursery.employeesIDs().size;
+		brothelL = App.Entity.facilities.brothel.employeesIDs().size;
+		clubL = App.Entity.facilities.club.employeesIDs().size;
+		masterSL = App.Entity.facilities.masterSuite.employeesIDs().size;
+		spaL = App.Entity.facilities.spa.employeesIDs().size;
+		dairyL = App.Entity.facilities.dairy.employeesIDs().size;
+
+		arcology = V.arcologies[0];
+
+		({
+			// eslint-disable-next-line no-unused-vars
+			he, him, his, hers, himself, girl, He, His, loli
+		} = getPronouns(slave));
+
+		if (slave.choosesOwnAssignment === 0 || slave.fuckdoll > 0 || slave.fetish === "mindbroken") {
+			// nothing to do
+		} else if (slave.choosesOwnAssignment === 2) {
+			// second pass happens visibly during weekly report for the location where this slave decided to go (or stay)
+			// display text but don't change assignment (already done)
+			r.push(`${slave.choosesOwnAssignmentText}`);
+			slave.choosesOwnAssignmentText = "";
+			slave.choosesOwnAssignment = 1;
+			// continue cycle for next week
+		} else {
+			// first pass happens silently before all reports: give stats bonus, construct decision string for display during second pass, actually change assignment
+			slave.devotion++;
+			slave.trust++;
+			slave.choosesOwnAssignmentText = jobSelection(slave);
+		}
+
+		return r.join(" ");
+	}
+
+	/**
+	 * @param {App.Entity.SlaveState} slave
+	 *
+	 */
+	function jobSelection(slave) {
+		choice.push(`was assigned to ${slave.assignment}. ${He} ${canSee(slave) ? "watches" : "observes"} your other slaves to decide what to do, <span class="devotion inc">happy</span> to be permitted a choice and a little more <span class="trust inc">confident</span> than if you had just given ${him} orders. The ${SlaveTitle(slave)}`);
+
+		if (slave.devotion <= 20 && slave.trust >= -20) {
+			 if (slave.relationship === -3 && slave.devotion < -20) {
+				choice.push(`is reluctantly married to you, and ${he} thinks of all the ways ${he} <span class="devotion dec">can take advantage of this,</span>`);
+				if (V.universalRulesAssignsSelfFacility === 1 && V.spa > spaL) {
+					choice.push(`so ${he} heads straight to ${V.spaName} to relax.`);
+					choice.push(`${assignJob(slave, "rest in the spa")}`);
+				} else {
+					choice.push(`so ${he} cheerfully decides to lounge about the penthouse.`);
+					choice.push(`${removeJob(slave, slave.assignment)}`);
+				}
+			 } else {
+				choice.push(`decides to rest, taking advantage of your permission to <span class="devotion dec">remain indolent.</span>`);
+				choice.push(`${removeJob(slave, slave.assignment)}`);
+			 }
+			 slave.devotion -= 5;
+		} else if (slave.health.illness > 1) {
+			if (V.universalRulesAssignsSelfFacility === 1 && V.clinic > clinicL) {
+				choice.push(`is ill, so ${he} decides to get treatment at${V.clinicName}.`);
+				choice.push(`${assignJob(slave, "get treatment in the clinic")}`);
+			} else {
+				choice.push(`is ill, so ${he} decides to rest.`);
+				choice.push(`${removeJob(slave, slave.assignment)}`);
+			}
+		} else if (slave.health.condition < 20) {
+			if (V.universalRulesAssignsSelfFacility === 1 && V.spa > spaL) {
+				choice.push(`is unhealthy, so ${he} decides to get recover at ${V.spaName}.`);
+				choice.push(`${assignJob(slave, "rest in the spa")}`);
+			} else {
+				choice.push(`is unhealthy, so ${he} decides to rest.`);
+				choice.push(`${removeJob(slave, slave.assignment)}`);
+			}
+		} else if (slave.health.tired > 45) {
+			if (V.universalRulesAssignsSelfFacility === 1 && V.spa > spaL) {
+				choice.push(`is tired, so ${he} decides to recover at ${V.spaName}.`);
+				choice.push(`${assignJob(slave, "rest in the spa")}`);
+			} else {
+				choice.push(`is tired, so ${he} decides to rest.`);
+				choice.push(`${removeJob(slave, slave.assignment)}`);
+			}
+		} else if (slave.boobsMilk > 0) {
+			choice.push(`rushes to get milked since ${his} breasts have become painfully engorged.`);
+			choice.push(`${assignJob(slave, "get milked")}`);
+		} else if (slave.intelligenceImplant < 15 && slave.intelligence > 10 && (arcology.FSPaternalist > 20 || arcology.FSSlaveProfessionalism > 20) && arcology.FSGenderFundamentalistLawBimbo !== 1 ) {
+			if (V.universalRulesAssignsSelfFacility === 1 && V.schoolroom > schoolL) {
+				choice.push(`is uneducated, so ${he} sits ${himself} down in ${V.schoolroomName}.`);
+				choice.push(`${assignJob(slave, "learn in the schoolroom")}`);
+			} else {
+				choice.push(`is uneducated, so ${he} sits ${himself} down to learn.`);
+				choice.push(`${assignJob(slave, "take classes")}`);
+			}
+		} else if ((S.Attendant && V.universalRulesAssignsSelfFacility === 1) && (slave.devotion < 45 || slave.trust < 45 || (slave.sexualFlaw !== "none" && !setup.paraphiliaList.includes(slave.sexualFlaw)) || slave.behavioralFlaw !== "none")) {
+			choice.push(`could use some counseling, so ${he} decides to visit ${V.spaName}.`);
+			choice.push(`${assignJob(slave, "rest in the spa")}`);
+		} else if (slave.devotion <= 50 && canWalk(slave) && canSee(slave)) {
+			if (V.universalRulesAssignsSelfFacility === 1 && V.servantsQuarters > servQL) {
+				choice.push(`is obedient but not devoted, so ${he} decides to work from ${V.servantsQuartersName} since it's the least sexually demanding job available.`);
+				choice.push(`${assignJob(slave, "work as a servant")}`);
+			} else {
+				choice.push(`is obedient but not devoted, so ${he} decides to work as a servant since it's the least sexually demanding job available.`);
+				choice.push(`${assignJob(slave, "be a servant")}`);
+			}
+		} else if (V.universalRulesAssignsSelfFacility === 1 && slave.devotion > 50 && canWalk(slave) && canSee(slave) && V.nurseryNannies > nurseryL && (V.cribs.findIndex(function(c) { (c.mother === slave.ID || c.father === slave.ID); }))) {
+			 if (V.cribs.findIndex(function(c) { (c.mother === slave.ID || c.father === slave.ID); })) {
+				choice.push(`wants to look after ${his} child, so ${he} decides to work in ${V.nurseryName}.`);
+				choice.push(`${assignJob(slave, "work as a nanny")}`);
+			} else { // motherly sexualQuirk
+				choice.push(`enjoys taking care of children, so ${he} decides to work in ${V.nurseryName}.`);
+				choice.push(`${assignJob(slave, "work as a nanny")}`);
+			}
+		} else if (slave.relationship === -1) {
+			choice.push(`relies on promiscuity to fulfill ${his} emotional needs,`);
+			if (V.cash < 10000) {
+				choice.push(`and doesn't mind being a whore, so ${he} prostitutes ${himself}`);
+				if (V.universalRulesAssignsSelfFacility === 1 && V.brothel > brothelL) {
+					choice.push(`in ${V.brothelName}.`);
+					choice.push(`${assignJob(slave, "work in the brothel")}`);
+				} else {
+					choice.push(`on the streets.`);
+					choice.push(`${assignJob(slave, "whore")}`);
+				}
+			} else {
+				choice.push(`so ${he} eagerly decides to slut around`);
+				if (V.universalRulesAssignsSelfFacility === 1 && V.club > clubL) {
+					choice.push(`in ${V.clubName}.`);
+					choice.push(`${assignJob(slave, "serve in the club")}`);
+				} else {
+					choice.push(`on the streets.`);
+					choice.push(`${assignJob(slave, "serve the public")}`);
+				}
+				slave.sexAmount = 10;
+			}
+		} else if (slave.relationship === -2) {
+			choice.push(`is emotionally bonded to you,`);
+			if (slave.behavioralQuirk === "insecure") {
+				choice.push(`but insecure, so ${he} decides to make you money by prostituting ${himself}`);
+				if (V.universalRulesAssignsSelfFacility === 1 && V.brothel > brothelL) {
+					choice.push(`in ${V.brothelName}.`);
+					choice.push(`${assignJob(slave, "work in the brothel")}`);
+				} else {
+					choice.push(`on the streets.`);
+					choice.push(`${assignJob(slave, "whore")}`);
+				}
+				slave.sexAmount = 10;
+			} else if (slave.behavioralQuirk === "advocate") {
+				choice.push(`and an advocate for slavery, so ${he} decides to burnish your reputation by slutting it up`);
+				if (V.universalRulesAssignsSelfFacility === 1 && V.club > clubL) {
+					choice.push(`in ${V.clubName}.`);
+					choice.push(`${assignJob(slave, "serve in the club")}`);
+				} else {
+					choice.push(`on the streets.`);
+					choice.push(`${assignJob(slave, "serve the public")}`);
+				}
+				slave.sexAmount = 10;
+			} else if (slave.energy > 60) {
+				choice.push(`and ${he} thinks of little but sex with you,`);
+				if (V.universalRulesAssignsSelfFacility === 1 && V.masterSuite > masterSL) {
+					choice.push(`so ${he} heads straight to ${V.masterSuiteName}.`);
+					choice.push(`${assignJob(slave, "serve in the master suite")}`);
+				} else {
+					choice.push(`so ${he} cheerfully designates ${himself} one of your fucktoys.`);
+					choice.push(`${assignJob(slave, "please you")}`);
+				}
+			} else if (canSee(slave) && canWalk(slave)) {
+				choice.push(`so ${he} decides to work`);
+				if (V.universalRulesAssignsSelfFacility === 1 && V.servantsQuarters > servQL) {
+					choice.push(`from ${V.servantsQuartersName} to make your penthouse as clean and homelike as possible.`);
+					choice.push(`${assignJob(slave, "work as a servant")}`);
+				} else {
+					choice.push(`as a servant to make your penthouse as clean and homelike as possible.`);
+					choice.push(`${assignJob(slave, "be a servant")}`);
+				}
+			} else {
+				choice.push(`but unable to do much on ${his} own,`);
+				if (V.universalRulesAssignsSelfFacility === 1 && V.masterSuite > masterSL) {
+					choice.push(`so ${he} heads straight to ${V.masterSuiteName} to await your caress.`);
+					choice.push(`${assignJob(slave, "serve in the master suite")}`);
+				} else {
+					choice.push(`so ${he} cheerfully designates ${himself} one of your fucktoys to be close to you.`);
+					choice.push(`${assignJob(slave, "please you")}`);
+				}
+			}
+		} else if (slave.relationship === -3) {
+			 if (slave.devotion+slave.trust >= 175) {
+				choice.push(`is happily married to you,`);
+			} else if (slave.devotion < -20) {
+				choice.push(`is forcibly married to you,`);
+			} else {
+				choice.push(`is married to you,`);
+			}
+			 if (slave.devotion > 50) {
+				if (slave.energy > 60) {
+					choice.push(`and ${he} thinks of little but sex with you,`);
+					if (V.universalRulesAssignsSelfFacility === 1 && V.masterSuite > masterSL) {
+						choice.push(`so ${he} heads straight to ${V.masterSuiteName}.`);
+						choice.push(`${assignJob(slave, "serve in the master suite")}`);
+					} else {
+						choice.push(`so ${he} cheerfully designates ${himself} one of your fucktoys.`);
+						choice.push(`${assignJob(slave, "please you")}`);
+					}
+				} else if (canSee(slave) && canWalk(slave)) {
+					choice.push(`so ${he} decides to work`);
+					if (V.universalRulesAssignsSelfFacility === 1 && V.servantsQuarters > servQL) {
+						choice.push(`from ${V.servantsQuartersName} to make your penthouse as clean and homelike as possible.`);
+						choice.push(`${assignJob(slave, "work as a servant")}`);
+					} else {
+						choice.push(`as a servant to make your penthouse as clean and homelike as possible.`);
+						choice.push(`${assignJob(slave, "be a servant")}`);
+					}
+				} else {
+					choice.push(`but unable to do much on ${his} own`);
+					if (V.universalRulesAssignsSelfFacility === 1 && V.masterSuite > masterSL) {
+						choice.push(`so ${he} heads straight to ${V.masterSuiteName} to await your caress.`);
+						choice.push(`${assignJob(slave, "serve in the master suite")}`);
+					} else {
+						choice.push(`so ${he} cheerfully designates ${himself} one of your fucktoys to be close to you.`);
+						choice.push(`${assignJob(slave, "please you")}`);
+					}
+				}
+			} else if (slave.devotion < -20) {
+				choice.push(`and ${he} is scared of you, so ${he} chooses to work as a servant so that ${he} may serve you without "serving" you.`);
+				choice.push(`${assignJob(slave, "be a servant")}`);
+			} else {
+				if (slave.energy > 60) {
+					choice.push(`and ${he} thinks of little but sex,`);
+					if (V.universalRulesAssignsSelfFacility === 1 && V.masterSuite > masterSL) {
+						choice.push(`so ${he} heads straight to ${V.masterSuiteName}.`);
+						choice.push(`${assignJob(slave, "serve in the master suite")}`);
+					} else {
+						choice.push(`so ${he} cheerfully designates ${himself} one of your fucktoys.`);
+						choice.push(`${assignJob(slave, "please you")}`);
+					}
+				} else if (canSee(slave) && canWalk(slave)) {
+					choice.push(`so ${he} decides to work`);
+					if (V.universalRulesAssignsSelfFacility === 1 && V.servantsQuarters > servQL) {
+						choice.push(`from ${V.servantsQuartersName} to make your penthouse as clean and homelike as possible.`);
+						choice.push(`${assignJob(slave, "work as a servant")}`);
+					} else {
+						choice.push(`as a servant to make your penthouse as clean and homelike as possible.`);
+						choice.push(`${assignJob(slave, "be a servant")}`);
+					}
+				} else {
+					choice.push(`but unable to do much on ${his} own, so ${he} designates ${himself} one of your fucktoys to get more intimate with you.`);
+					choice.push(`${assignJob(slave, "please you")}`);
+				}
+			}
+		} else if (slave.fetishKnown === 1 || jsRandom(1, 100) > 5) { // Yes, this segways into other things than fetish. PM - I added a 5% chance for her to not think of something just for flavor.
+			if (slave.fetish === "submissive" && canWalk(slave) && canSee(slave)) {
+				if (V.universalRulesAssignsSelfFacility === 1 && V.servantsQuarters > servQL) {
+					choice.push(`thinks ${he} belongs at the bottom of the penthouse hierarchy, so ${he} goes to live in ${V.servantsQuartersName}.`);
+					choice.push(`${assignJob(slave, "work as a servant")}`);
+				} else {
+					choice.push(`thinks ${he} belongs at the bottom of the penthouse hierarchy, so ${he} decides ${he} should be a servant.`);
+					choice.push(`${assignJob(slave, "be a servant")}`);
+				}
+			} else if (slave.fetish === "dom" || slave.fetish === "sadist") {
+				if (V.universalRulesAssignsSelfFacility === 1 && V.club > clubL) {
+					choice.push(`is self-confident, so ${he} decides to work in ${V.clubName}.`);
+					choice.push(`${assignJob(slave, "serve in the club")}`);
+				} else {
+					choice.push(`is self-confident, so ${he} decides to work as a public servant.`);
+					choice.push(`${assignJob(slave, "serve the public")}`);
+				}
+				slave.sexAmount = 10;
+			} else if (slave.fetish === "masochist") {
+				if (V.universalRulesAssignsSelfFacility === 1 && V.brothel > brothelL) {
+					choice.push(`enjoys abuse, so ${he} hurries down to ${V.brothelName}.`);
+					choice.push(`${assignJob(slave, "work in the brothel")}`);
+				} else {
+					choice.push(`enjoys abuse, so ${he} decides to become a whore.`);
+					choice.push(`${assignJob(slave, "whore")}`);
+				}
+				slave.sexAmount = 10;
+			} else if (slave.fetish === "cumslut") {
+				if (V.universalRulesAssignsSelfFacility === 1 && V.brothel > brothelL) {
+					choice.push(`hurries down to ${V.brothelName} to suck cocks.`);
+					choice.push(`${assignJob(slave, "work in the brothel")}`);
+				} else {
+					choice.push(`decides to become a whore, mostly to suck cock.`);
+					choice.push(`${assignJob(slave, "whore")}`);
+				}
+				slave.sexAmount = 10;
+			} else if (slave.fetish === "humiliation") {
+				if (V.universalRulesAssignsSelfFacility === 1 && V.brothel > brothelL) {
+					choice.push(`decides to work in ${V.brothelName}, since it's even more embarrassing to be a whore than a club slut.`);
+					choice.push(`${assignJob(slave, "work in the brothel")}`);
+				} else {
+					choice.push(`decides to whore, since it's even more embarrassing to be a whore than to be a public servant.`);
+					choice.push(`${assignJob(slave, "whore")}`);
+				}
+				slave.sexAmount = 10;
+			} else if (slave.fetish === "buttslut") {
+				if (slave.balls > 0 && slave.prostate > 0 && V.universalRulesAssignsSelfFacility === 1 && V.dairyRestraintsSetting < 2 && V.dairyStimulatorsSetting > 0 && V.dairy > dairyL) {
+					choice.push(`chooses confinement in ${V.dairyName}, since all ${he} will be expected to do is produce cum by orgasming to buttsex.`);
+					choice.push(`${assignJob(slave, "work in the dairy")}`);
+				} else if (canDoAnal(slave)){
+					if (V.universalRulesAssignsSelfFacility === 1 && V.brothel > brothelL) {
+						choice.push(`decides to work in ${V.brothelName}, since whores get buttfucked more than anyone else.`);
+						choice.push(`${assignJob(slave, "work in the brothel")}`);
+					} else {
+						choice.push(`decides to whore, since whores get buttfucked more than anyone else.`);
+						choice.push(`${assignJob(slave, "whore")}`);
+					}
+					slave.sexAmount = 10;
+				} else {
+					if (V.universalRulesAssignsSelfFacility === 1 && V.club > clubL) {
+						choice.push(`decides to shake ${his} money maker in ${V.clubName}.`);
+						choice.push(`${assignJob(slave, "serve in the club")}`);
+					} else {
+						choice.push(`decides to shake ${his} money maker on the streets.`);
+						choice.push(`${assignJob(slave, "serve the public")}`);
+					}
+					slave.sexAmount = 10;
+				}
+			} else if (slave.fetish === "pregnancy") {
+				if (V.PC.dick > 0 && isFertile(slave)) {
+					if (V.universalRulesAssignsSelfFacility === 1 && V.masterSuite > masterSL) {
+						choice.push(`decides to serve you in ${V.masterSuiteName}, hoping that you'll get ${him} pregnant.`);
+						choice.push(`${assignJob(slave, "serve in the master suite")}`);
+					} else {
+						choice.push(`decides to be your fucktoy, hoping that you'll get ${him} pregnant.`);
+						choice.push(`${assignJob(slave, "please you")}`);
+					}
+				} else if (V.universalRulesAssignsSelfFacility === 1 && V.dairyPregSetting > 0 && V.dairy > dairyL && isFertile(slave)) {
+					 if (V.dairyPregSetting > 1) {
+						choice.push(`eagerly rushes to ${V.dairyName} in the hopes that ${his} fertile womb will be packed full of children.`);
+						choice.push(`${assignJob(slave, "work in the dairy")}`);
+					} else {
+						choice.push(`rushes to ${V.dairyName} in the hopes that ${his} fertile womb will be rented out.`);
+						choice.push(`${assignJob(slave, "work in the dairy")}`);
+					}
+				} else if (slave.bellyPreg >= 1500) {
+					 if (arcology.FSRepopulationFocus > 20) {
+						if (V.cash < 10000) {
+							 if (V.brothel > brothelL && V.universalRulesAssignsSelfFacility === 1) {
+								choice.push(`heads to ${V.brothelName} since ${he} wants to set an example for any unimpregnated girls.`);
+								choice.push(`${assignJob(slave, "work in the brothel")}`);
+							} else {
+								choice.push(`heads to the streets to lavish in the attention given to pregnant prostitutes.`);
+								choice.push(`${assignJob(slave, "whore")}`);
+							}
+						} else {
+							 if (V.club > clubL && V.universalRulesAssignsSelfFacility === 1) {
+								choice.push(`heads to ${V.clubName} to show off ${his} growing middle and lavish in the public's attention.`);
+								choice.push(`${assignJob(slave, "serve in the club")}`);
+							} else {
+								choice.push(`heads to the streets to contribute to the number of visibly pregnant women around.`);
+								choice.push(`${assignJob(slave, "serve the public")}`);
+							}
+						}
+						slave.sexAmount = 10;
+					} else if (V.masterSuite > masterSL && V.universalRulesAssignsSelfFacility === 1) {
+						choice.push(`heads straight to ${V.masterSuiteName} to share the intimacy of ${his} pregnant body with you.`);
+						choice.push(`${assignJob(slave, "serve in the master suite")}`);
+					} else {
+						choice.push(`decides to be your fucktoy to share the intimacy of ${his} pregnant body with you.`);
+						choice.push(`${assignJob(slave, "please you")}`);
+					}
+				} else if (slave.pregKnown === 1) {
+					 if (V.masterSuite > masterSL && V.universalRulesAssignsSelfFacility === 1) {
+						choice.push(`heads straight to ${V.masterSuiteName} so you may watch for the day that ${he} finally starts to show.`);
+						choice.push(`${assignJob(slave, "serve in the master suite")}`);
+					} else {
+						choice.push(`decides to be your fucktoy so you may enjoy watching ${him} begin showing.`);
+						choice.push(`${assignJob(slave, "please you")}`);
+					}
+				} else if (canGetPregnant(slave)) {
+					if (V.universalRulesAssignsSelfFacility === 1 && V.brothel > brothelL) {
+						choice.push(`can't indulge ${his} pregnancy fetish without getting dicked, so ${he} heads down to ${V.brothelName} to do just that.`);
+						choice.push(`${assignJob(slave, "work in the brothel")}`);
+					} else {
+						choice.push(`can't indulge ${his} pregnancy fetish without getting dicked, so ${he} decides to be a whore to get seeded.`);
+						choice.push(`${assignJob(slave, "whore")}`);
+					}
+					slave.sexAmount = 10;
+				} else if (slave.lactation > 0) {
+					if (V.universalRulesAssignsSelfFacility === 1 && V.dairyRestraintsSetting < 2 && V.dairy > dairyL) {
+						choice.push(`heads down to ${V.dairyName} to be around other lactating girls.`);
+						choice.push(`${assignJob(slave, "work in the dairy")}`);
+					} else {
+						choice.push(`decides to get milked, since ${he} is already lactating.`);
+						choice.push(`${assignJob(slave, "get milked")}`);
+					}
+				} else {
+					if (V.universalRulesAssignsSelfFacility === 1 && V.brothel > brothelL) {
+						choice.push(`can't indulge ${his} fetish by getting pregnant ${himself}, so ${he} just heads down to ${V.brothelName}.`);
+						choice.push(`${assignJob(slave, "work in the brothel")}`);
+					} else {
+						choice.push(`can't indulge ${his} fetish by getting pregnant ${himself}, so ${he} glumly decides to be a whore.`);
+						choice.push(`${assignJob(slave, "whore")}`);
+					}
+					slave.sexAmount = 10;
+				}
+			} else if (slave.fetish === "boobs") {
+				if (slave.lactation > 0) {
+					if (V.universalRulesAssignsSelfFacility === 1 && V.dairyRestraintsSetting < 2 && V.dairy > dairyL) {
+						choice.push(`heads down to ${V.dairyName} for all the attention that'll be lavished on ${his} nipples.`);
+						choice.push(`${assignJob(slave, "work in the dairy")}`);
+					} else {
+						choice.push(`decides to get milked, since ${he} loves getting off to it.`);
+						choice.push(`${assignJob(slave, "get milked")}`);
+					}
+				} else if (V.universalRulesAssignsSelfFacility === 1 && V.club > clubL) {
+					choice.push(`decides to work in ${V.clubName} so ${he} can show off ${his} bare breasts.`);
+					choice.push(`${assignJob(slave, "serve in the club")}`);
+					slave.sexAmount = 10;
+				} else {
+					choice.push(`decides to work as a public servant so ${he} can show off ${his} bare breasts.`);
+					choice.push(`${assignJob(slave, "serve the public")}`);
+					slave.sexAmount = 10;
+				}
+			} else if (slave.attrXX > 85) {
+				if (V.universalRulesAssignsSelfFacility === 1 && V.club > clubL) {
+					choice.push(`decides to work in ${V.clubName} so ${he} can hit on hot girls.`);
+					choice.push(`${assignJob(slave, "serve in the club")}`);
+				} else {
+					choice.push(`decides to work as a public servant so ${he} can hit on hot girls.`);
+					choice.push(`${assignJob(slave, "serve the public")}`);
+				}
+				slave.sexAmount = 10;
+			} else if (slave.attrXY > 85) {
+				if (V.universalRulesAssignsSelfFacility === 1 && V.club > clubL) {
+					choice.push(`decides to work in ${V.clubName} so ${he} can hit on cute boys.`);
+					choice.push(`${assignJob(slave, "serve in the club")}`);
+				} else {
+					choice.push(`decides to work as a public servant so ${he} can hit on cute boys.`);
+					choice.push(`${assignJob(slave, "serve the public")}`);
+				}
+				slave.sexAmount = 10;
+			} else if (slave.energy > 95) {
+				if (V.universalRulesAssignsSelfFacility === 1 && V.brothel > brothelL) {
+					choice.push(`decides to help those of your slaves who mind taking dick all day by working in ${V.brothelName}.`);
+					choice.push(`${assignJob(slave, "work in the brothel")}`);
+				} else {
+					choice.push(`decides to help those of your slaves who mind taking dick all day by working as a whore.`);
+					choice.push(`${assignJob(slave, "whore")}`);
+				}
+				slave.sexAmount = 10;
+			} else if (arcology.FSChattelReligionist > 0) {
+				if (V.universalRulesAssignsSelfFacility === 1 && V.brothel > brothelL) {
+					choice.push(`slave.choosesOwnAssignmentText += " is a pure and faithful slave, so ${he} sells ${his} body in the holy brothel.`);
+					choice.push(`${assignJob(slave, "work in the brothel")}`);
+				} else {
+					choice.push(`slave.choosesOwnAssignmentText += " is a pure and faithful slave, so ${he} sells ${his} body as a holy prostitute.`);
+					choice.push(`${assignJob(slave, "whore")}`);
+				}
+				slave.sexAmount = 10;
+			} else if (arcology.FSEgyptianRevivalist > 0) {
+				if (V.universalRulesAssignsSelfFacility === 1 && V.masterSuite > masterSL) {
+					choice.push(`is a devoted slave, so ${he} immediately joins your harem.`);
+					choice.push(`${assignJob(slave, "serve in the master suite")}`);
+				} else {
+					choice.push(`is a devoted slave, so ${he} immediately joins your harem.`);
+					choice.push(`${assignJob(slave, "please you")}`);
+				}
+			} else if (arcology.FSRomanRevivalist > 0) {
+				if (V.universalRulesAssignsSelfFacility === 1 && V.brothel > brothelL) {
+					choice.push(`is a devoted slave, so ${he} decides ${he} can best serve the state by raising money for the treasury, by selling ${his} body in ${V.brothelName}.`);
+					choice.push(`${assignJob(slave, "work in the brothel")}`);
+				} else {
+					choice.push(`is a devoted slave, so ${he} decides ${he} can best serve the state by raising money for the treasury, by selling ${his} body as a prostitute.`);
+					choice.push(`${assignJob(slave, "whore")}`);
+				}
+				slave.sexAmount = 10;
+			} else if (arcology.FSAztecRevivalist > 0) {
+				if (V.universalRulesAssignsSelfFacility === 1 && V.brothel > brothelL) {
+					choice.push(`is a devoted slave, so ${he} decides ${he} can best serve the empire by serving at the fertility temple.`);
+					choice.push(`${assignJob(slave, "work in the brothel")}`);
+				} else {
+					choice.push(`is a devoted slave, so ${he} decides ${he} can best serve the empire by offering ${himself} to the public.`);
+					choice.push(`${assignJob(slave, "serve the public")}`);
+				}
+				slave.sexAmount = 10;
+			} else if (arcology.FSPaternalist > 0) {
+				if (V.universalRulesAssignsSelfFacility === 1 && V.brothel > brothelL) {
+					choice.push(`decides to work in ${V.brothelName}, a respectable position for a slave in this enlightened arcology.`);
+					choice.push(`${assignJob(slave, "work in the brothel")}`);
+				} else {
+					choice.push(`decides to be a whore, a respectable position for a slave in this enlightened arcology.`);
+					choice.push(`${assignJob(slave, "whore")}`);
+				}
+				slave.sexAmount = 10;
+			} else if (arcology.FSPastoralist > 0) {
+				if (slave.lactation > 0) {
+					if (V.universalRulesAssignsSelfFacility === 1 && V.dairyRestraintsSetting < 2 && V.dairy > dairyL) {
+						choice.push(`hurries to join your herd of dairy cows.`);
+						choice.push(`${assignJob(slave, "work in the dairy")}`);
+					} else {
+						choice.push(`hurries to join your herd of cows.`);
+						choice.push(`${assignJob(slave, "get milked")}`);
+					}
+				} else {
+					if (V.universalRulesAssignsSelfFacility === 1 && V.brothel > brothelL) {
+						choice.push(`decides to work in ${V.brothelName} to help raise money to get more girls lactating properly.`);
+						choice.push(`${assignJob(slave, "work in the brothel")}`);
+					} else {
+						choice.push(`decides to prostitute ${himself} to help raise money to get more girls lactating properly.`);
+						choice.push(`${assignJob(slave, "whore")}`);
+					}
+					slave.sexAmount = 10;
+				}
+			} else if (arcology.FSHedonisticDecadence > 0) {
+				if (V.universalRulesAssignsSelfFacility === 1 && V.spa > spaL && (slave.trust < 60 || slave.devotion <= 60)) {
+					choice.push(`could use a break, so ${he} heads to take a dip in the spa.`);
+					choice.push(`${assignJob(slave, "rest in the spa")}`);
+				} else {
+					choice.push(`could use a meal and a nap, so ${he} grabs a cup of food and heads to bed.`);
+					choice.push(`${assignJob(slave, "rest")}`);
+				}
+			} else {
+				if (slave.skill.whoring > slave.skill.entertainment) {
+					if (V.universalRulesAssignsSelfFacility === 1 && V.brothel > brothelL) {
+						choice.push(`decides to work in ${V.brothelName}, since ${he} thinks ${himself} a better whore than a public slut.`);
+						choice.push(`${assignJob(slave, "work in the brothel")}`);
+					} else {
+						choice.push(`decides to whore, since ${he} thinks ${himself} a better whore than a public slut.`);
+						choice.push(`${assignJob(slave, "whore")}`);
+					}
+					slave.sexAmount = 10;
+				} else if (slave.skill.entertainment > slave.skill.whoring) {
+					if (V.universalRulesAssignsSelfFacility === 1 && V.club > clubL) {
+						choice.push(`decides to be a club ${girl}, since ${he} thinks ${himself} a better public slut than a whore.`);
+						choice.push(`${assignJob(slave, "serve in the club")}`);
+					} else {
+						choice.push(`decides to serve the public, since ${he} thinks ${himself} a better public slut than a whore.`);
+						choice.push(`${assignJob(slave, "serve the public")}`);
+					}
+					slave.sexAmount = 10;
+				} else {
+					if (V.universalRulesAssignsSelfFacility === 1 && V.brothel > brothelL) {
+						choice.push(`decides to join ${his} sisters and work in ${V.brothelName}.`);
+						choice.push(`${assignJob(slave, "work in the brothel")}`);
+					} else {
+						choice.push(`decides to prostitute ${himself} to help you upgrade ${arcology.name} and improve everyone's life.`);
+						choice.push(`${assignJob(slave, "whore")}`);
+					}
+					slave.sexAmount = 10;
+				}
+			}
+		} else {
+			if (V.universalRulesAssignsSelfFacility === 1 && V.club > clubL) {
+				choice.push(`decides to be a club ${girl}, since partying is better than sitting around and failing to think of a job to do.`);
+				choice.push(`${assignJob(slave, "serve in the club")}`);
+				slave.sexAmount = 10;
+			} else if (canWalk(slave) && canSee(slave)) {
+				choice.push(`decides to tidy up the penthouse a little while ${he} thinks.`);
+				choice.push(`${assignJob(slave, "be a servant")}`);
+			} else {
+				choice.push(`stays in bed, unable to come up with anything.`);
+				choice.push(`${removeJob(slave, slave.assignment)}`);
+			}
+		}
+
+		slave.choosesOwnAssignment = 2;
+		// ready for second pass
+
+		return choice.join(" ");
+	}
+})();
diff --git a/src/endWeek/saGetMilked.js b/src/endWeek/saGetMilked.js
index 0679e1ea546..215b73f0eae 100644
--- a/src/endWeek/saGetMilked.js
+++ b/src/endWeek/saGetMilked.js
@@ -590,7 +590,7 @@ App.SlaveAssignment.getMilked = (function() {
 		if (slave.assignment === Job.DAIRY) {
 			if (V.dairyStimulatorsUpgrade !== 1) {
 				if (V.MilkmaidID !== 0) {
-					if (S.Milkmaid.dick > 4 && canAchieveErection(S.Milkmaid)) {
+					if (S.Milkmaid.dick > 4 && canPenetrate(S.Milkmaid)) {
 						const milkmaidPronouns = getPronouns(S.Milkmaid);
 						r += ` ${S.Milkmaid.slaveName} sometimes stands in for the machines, which is a polite way of saying ${milkmaidPronouns.he} sometimes fucks ${slave.slaveName}'s ass to help ${him} cum.`;
 					}
diff --git a/src/endWeek/schoolroomReport.js b/src/endWeek/schoolroomReport.js
index 64b308be40d..48fe016abaa 100644
--- a/src/endWeek/schoolroomReport.js
+++ b/src/endWeek/schoolroomReport.js
@@ -215,7 +215,7 @@ App.EndWeek.schoolroomReport = function() {
 			}
 			$(slaveEntry).append(`<span class='slave-name'>${slave.slaveName}</span> `);
 			if (slave.choosesOwnAssignment === 2) {
-				$(slaveEntry).append(App.UI.DOM.renderPassage("SA chooses own job"));
+				$(slaveEntry).append(`${App.SlaveAssignment.choosesOwnJob(slave)}`);
 			} else {
 				$(slaveEntry).append(`is studying in ${V.schoolroomName}.`);
 			}
@@ -224,7 +224,7 @@ App.EndWeek.schoolroomReport = function() {
 			$(slaveEntry).append(App.SlaveAssignment.standardSlaveReport(slave, false));
 		} else {
 			// discard return values silently
-			App.UI.DOM.renderPassage("SA chooses own job");
+			App.SlaveAssignment.choosesOwnJob(slave);
 			App.SlaveAssignment.takeClasses(slave);
 			App.SlaveAssignment.standardSlaveReport(slave, true);
 		}
diff --git a/src/endWeek/servantsQuartersReport.js b/src/endWeek/servantsQuartersReport.js
index ef6eb5b6959..abd29313ce7 100644
--- a/src/endWeek/servantsQuartersReport.js
+++ b/src/endWeek/servantsQuartersReport.js
@@ -289,7 +289,7 @@ App.EndWeek.servantsQuartersReport = function() {
 			}
 			$(slaveEntry).append(`<span class='slave-name'>${SlaveFullName(slave)}</span> `);
 			if (slave.choosesOwnAssignment === 2) {
-				$(slaveEntry).append(App.UI.DOM.renderPassage("SA chooses own job"));
+				$(slaveEntry).append(`${App.SlaveAssignment.choosesOwnJob(slave)}`);
 			} else {
 				$(slaveEntry).append(`is working out of ${V.servantsQuartersName}.`);
 			}
@@ -304,7 +304,7 @@ App.EndWeek.servantsQuartersReport = function() {
 			$(slaveEntry).append(App.SlaveAssignment.standardSlaveReport(slave, false));
 		} else {
 			// discard return values silently
-			App.UI.DOM.renderPassage("SA chooses own job");
+			App.SlaveAssignment.choosesOwnJob(slave);
 			App.SlaveAssignment.servant(slave, stewardessBonus);
 			if ((V.servantMilkers === 1) && (slave.lactation > 0)) {
 				App.SlaveAssignment.getMilked(slave);
diff --git a/src/endWeek/slaveAssignmentReport.js b/src/endWeek/slaveAssignmentReport.js
index be509a15999..afa14f53c9f 100644
--- a/src/endWeek/slaveAssignmentReport.js
+++ b/src/endWeek/slaveAssignmentReport.js
@@ -23,7 +23,7 @@ App.EndWeek.slaveAssignmentReport = function() {
 		V.slaves[i].health.tired = 0;
 		if (V.slaves[i].choosesOwnAssignment === 1) {
 			V.i = i;
-			App.UI.DOM.renderPassage("SA chooses own job");
+			App.SlaveAssignment.choosesOwnJob(V.slaves[i]);
 		}
 	}
 
diff --git a/src/facilities/farmyard/reports/farmyardReport.js b/src/facilities/farmyard/reports/farmyardReport.js
index a04e9b8132e..bfd061f3a7a 100644
--- a/src/facilities/farmyard/reports/farmyardReport.js
+++ b/src/facilities/farmyard/reports/farmyardReport.js
@@ -374,7 +374,7 @@ App.Facilities.Farmyard.farmyardReport = function farmyardReport() {
 				$(slaveEntry).append(`<span class="slave-name">${SlaveFullName(slave)}</span> `);
 
 				if (slave.choosesOwnAssignment === 2) {
-					$(slaveEntry).append(App.UI.DOM.renderPassage("SA chooses own job"));
+					$(slaveEntry).append(`${App.SlaveAssignment.choosesOwnJob(slave)}`);
 				} else {
 					$(slaveEntry).append(`is working out of ${V.farmyardName}.`);
 				}
diff --git a/src/uncategorized/arcadeReport.tw b/src/uncategorized/arcadeReport.tw
index 12a2ec97d1d..4576559bd17 100644
--- a/src/uncategorized/arcadeReport.tw
+++ b/src/uncategorized/arcadeReport.tw
@@ -72,16 +72,14 @@
 		/* 000-250-006 */
 		<span class='slave-name'><<= SlaveFullName(_slave)>></span>
 		<<if _slave.choosesOwnAssignment == 2>>
-			<<include "SA chooses own job">>
+			<<= App.SlaveAssignment.choosesOwnJob(_slave)>>
 		<<else>>
 			is confined in $arcadeName.
 		<</if>>
 		<br>&nbsp;&nbsp;&nbsp;&nbsp;$He <<= App.SlaveAssignment.workAGloryHole(_slave)>>
 	<<else>>
-		<<silently>>
-			<<include "SA chooses own job">>
-			<<run App.SlaveAssignment.workAGloryHole(_slave)>>
-		<</silently>>
+		<<run App.SlaveAssignment.choosesOwnJob(_slave)>>
+		<<run App.SlaveAssignment.workAGloryHole(_slave)>>
 	<</if>>
 	<<if ($arcadeUpgradeCollectors > 0)>>
 		<<if (_slave.vasectomy == 1)>>
diff --git a/src/uncategorized/brothelReport.tw b/src/uncategorized/brothelReport.tw
index 53795cfe909..a9240a9f865 100644
--- a/src/uncategorized/brothelReport.tw
+++ b/src/uncategorized/brothelReport.tw
@@ -274,7 +274,7 @@
 			/* 000-250-006 */
 			<span class="slave-name"><<= SlaveFullName(_slave)>></span>
 			<<if _slave.choosesOwnAssignment == 2>>
-				<<include "SA chooses own job">>
+				<<= App.SlaveAssignment.choosesOwnJob(_slave)>>
 			<<else>>
 				is working out of $brothelName.
 			<</if>>
@@ -290,7 +290,7 @@
 			<br><<include "SA devotion">>
 		<<else>>
 			<<silently>>
-			<<include "SA chooses own job">>
+			<<run App.SlaveAssignment.choosesOwnJob(_slave)>>
 			<<run App.SlaveAssignment.whore(_slave)>>
 			<<run App.SlaveAssignment.choosesOwnClothes(_slave)>>
 			<<include "SA rules">>
diff --git a/src/uncategorized/cellblockReport.tw b/src/uncategorized/cellblockReport.tw
index 40f1671c561..916daa994d7 100644
--- a/src/uncategorized/cellblockReport.tw
+++ b/src/uncategorized/cellblockReport.tw
@@ -250,7 +250,7 @@
 		/* 000-250-006 */
 		<span class='slave-name'><<= SlaveFullName(_slave)>></span>
 		<<if _slave.choosesOwnAssignment == 2>>
-			<<include "SA chooses own job">>
+			<<= App.SlaveAssignment.choosesOwnJob(_slave)>>
 		<<else>>
 			is confined in $cellblockName.
 		<</if>>
@@ -265,7 +265,7 @@
 		<br><<include "SA devotion">>
 	<<else>>
 		<<silently>>
-		<<include "SA chooses own job">>
+		<<run App.SlaveAssignment.choosesOwnJob(_slave)>>
 		<<run App.SlaveAssignment.stayConfined(_slave)>>
 		<<include "SA rules">>
 		<<include "SA diet">>
diff --git a/src/uncategorized/clubReport.tw b/src/uncategorized/clubReport.tw
index 93b7460d7e3..992cf4724f1 100644
--- a/src/uncategorized/clubReport.tw
+++ b/src/uncategorized/clubReport.tw
@@ -185,7 +185,7 @@
 			/* 000-250-006 */
 			<span class='slave-name'><<= SlaveFullName(_slave)>></span>
 			<<if _slave.choosesOwnAssignment == 2>>
-				<<include "SA chooses own job">>
+				<<= App.SlaveAssignment.choosesOwnJob(_slave)>>
 			<<else>>
 				is serving in $clubName.
 			<</if>>
@@ -201,7 +201,7 @@
 			<br><<include "SA devotion">>
 		<<else>>
 			<<silently>>
-			<<include "SA chooses own job">>
+			<<run App.SlaveAssignment.choosesOwnJob(_slave)>>
 			<<run App.SlaveAssignment.serveThePublic(_slave)>>
 			<<run App.SlaveAssignment.choosesOwnClothes(_slave)>>
 			<<include "SA rules">>
diff --git a/src/uncategorized/dairyReport.tw b/src/uncategorized/dairyReport.tw
index a204ff92eb1..daf5d900919 100644
--- a/src/uncategorized/dairyReport.tw
+++ b/src/uncategorized/dairyReport.tw
@@ -404,7 +404,7 @@
 		/* 000-250-006 */
 		<span class='slave-name'><<= SlaveFullName(_slave)>></span>
 		<<if _slave.choosesOwnAssignment == 2>>
-			<<include "SA chooses own job">>
+			<<= App.SlaveAssignment.choosesOwnJob(_slave)>>
 		<<else>>
 			is serving as a cow in $dairyName.
 		<</if>>
@@ -419,7 +419,7 @@
 		<br><<include "SA devotion">>
 	<<else>>
 		<<silently>>
-		<<include "SA chooses own job">>
+		<<run App.SlaveAssignment.choosesOwnJob(_slave)>>
 		<<run App.SlaveAssignment.getMilked(_slave)>>
 		<<include "SA rules">>
 		<<include "SA diet">>
diff --git a/src/uncategorized/masterSuiteReport.tw b/src/uncategorized/masterSuiteReport.tw
index f12436ead03..5e6c7a6038b 100644
--- a/src/uncategorized/masterSuiteReport.tw
+++ b/src/uncategorized/masterSuiteReport.tw
@@ -169,7 +169,7 @@
 		<<else>> /* not Concubine */
 			<span class='slave-name'><<= SlaveFullName(_slave)>></span>
 			<<if _slave.choosesOwnAssignment == 2>>
-				<<include "SA chooses own job">>
+				<<= App.SlaveAssignment.choosesOwnJob(_slave)>>
 			<<else>>
 				sees to your pleasure in $masterSuiteName.
 			<</if>>
@@ -378,7 +378,7 @@
 			<br><<include "SA devotion">>
 		<<else>>
 			<<silently>>
-			<<include "SA chooses own job">>
+			<<run App.SlaveAssignment.choosesOwnJob(_slave)>>
 			<<run App.SlaveAssignment.pleaseYou(_slave)>>
 			<<if $servantMilkers == 1 && _slave.lactation > 0 && _slave.fuckdoll == 0 && _slave.fetish != "mindbroken" && canMove(_slave) && _slave.intelligence+_slave.intelligenceImplant >= -90>>
 				<<set $servantMilkersMultiplier = 0.25>>
diff --git a/src/uncategorized/penthouseReport.tw b/src/uncategorized/penthouseReport.tw
index ee0fb9e21b7..f2817f9ac92 100644
--- a/src/uncategorized/penthouseReport.tw
+++ b/src/uncategorized/penthouseReport.tw
@@ -8,7 +8,7 @@
 	<<if assignmentVisible($slaves[$i])>>
 		<div><span class='slave-name'><<= SlaveFullName($slaves[$i])>></span>
 		<<if $slaves[$i].choosesOwnAssignment == 2>>
-			<<include "SA chooses own job">>
+			<<= App.SlaveAssignment.choosesOwnJob($slaves[$i])>>
 			$He
 		<</if>>
 		<<include "Full Report">>
@@ -25,7 +25,7 @@
 			<<else>>
 				<span class='slave-name'><<= SlaveFullName($slaves[$i])>></span>
 				<<if $slaves[$i].choosesOwnAssignment == 2>>
-					<<include "SA chooses own job">>
+					<<= App.SlaveAssignment.choosesOwnJob($slaves[$i])>>
 					$He
 				<</if>>
 				<<include "SA live with HG">>
diff --git a/src/uncategorized/saChoosesOwnJob.tw b/src/uncategorized/saChoosesOwnJob.tw
deleted file mode 100644
index 1389233dadd..00000000000
--- a/src/uncategorized/saChoosesOwnJob.tw
+++ /dev/null
@@ -1,525 +0,0 @@
-:: SA chooses own job [nobr]
-
-<<set _clinicL = App.Entity.facilities.clinic.employeesIDs().size, _schoolL = App.Entity.facilities.schoolroom.employeesIDs().size, _servQL = App.Entity.facilities.servantsQuarters.employeesIDs().size, _nurseryL = App.Entity.facilities.nursery.employeesIDs().size, _brothelL = App.Entity.facilities.brothel.employeesIDs().size, _clubL = App.Entity.facilities.club.employeesIDs().size, _masterSL = App.Entity.facilities.masterSuite.employeesIDs().size, _spaL = App.Entity.facilities.spa.employeesIDs().size, _dairyL = App.Entity.facilities.dairy.employeesIDs().size>>
-
-<<setLocalPronouns $slaves[$i]>>
-
-<<if ($slaves[$i].choosesOwnAssignment == 0) || ($slaves[$i].fuckdoll > 0) || ($slaves[$i].fetish == "mindbroken")>>
-	/* nothing to do */
-
-<<elseif ($slaves[$i].choosesOwnAssignment == 2)>> /* second pass happens visibly during weekly report for the location where this slave decided to go (or stay) */
-	/* display text but don't change assignment (already done) */
-
-	<<set $desc = SlaveTitle($slaves[$i])>>
-	<<print $slaves[$i].choosesOwnAssignmentText>>
-	<<set $slaves[$i].choosesOwnAssignmentText = "", $slaves[$i].choosesOwnAssignment = 1>> /* continue cycle for next week */
-
-<<else>> /* first pass happens silently before all reports: give stats bonus, construct decision string for display during second pass, actually change assignment */
-
-	<<set $slaves[$i].devotion++, $slaves[$i].trust++, $slaves[$i].choosesOwnAssignmentText = "was assigned to " + $slaves[$i].assignment + ". $He watches your other slaves to decide what to do, @@.hotpink;happy@@ to be permitted a choice and a little more @@.mediumaquamarine;confident@@ than if you had just given $him orders. The $desc">>
-
-	<<if ($slaves[$i].devotion <= 20) && ($slaves[$i].trust >= -20)>>
-		<<set $slaves[$i].choosesOwnAssignmentText += " decides to rest, taking advantage of your permission to @@.mediumorchid;remain indolent@@.">>
-		<<= removeJob($slaves[$i], $slaves[$i].assignment)>>
-		<<set $slaves[$i].devotion -= 5>>
-
-	<<elseif ($slaves[$i].health.illness > 1)>>
-		<<if ($universalRulesAssignsSelfFacility == 1) && ($clinic > _clinicL)>>
-			<<set $slaves[$i].choosesOwnAssignmentText += " is ill, so $he decides to get treatment at $clinicName.">>
-			<<= assignJob($slaves[$i], "get treatment in the clinic")>>
-		<<else>>
-			<<set $slaves[$i].choosesOwnAssignmentText += " is ill, so $he decides to rest.">>
-			<<= removeJob($slaves[$i], $slaves[$i].assignment)>>
-		<</if>>
-
-	<<elseif ($slaves[$i].health.condition < 20)>>
-		<<if ($universalRulesAssignsSelfFacility == 1) && ($spa > _spaL)>>
-			<<set $slaves[$i].choosesOwnAssignmentText += " is unhealthy, so $he decides to get recover at $spaName.">>
-			<<= assignJob($slaves[$i], "rest in the spa")>>
-		<<else>>
-			<<set $slaves[$i].choosesOwnAssignmentText += " is unhealthy, so $he decides to rest.">>
-			<<= removeJob($slaves[$i], $slaves[$i].assignment)>>
-		<</if>>
-
-	<<elseif ($slaves[$i].health.tired > 50)>>
-		<<if ($universalRulesAssignsSelfFacility == 1) && ($spa > _spaL)>>
-			<<set $slaves[$i].choosesOwnAssignmentText += " is tired, so $he decides to get recover at $spaName.">>
-			<<= assignJob($slaves[$i], "rest in the spa")>>
-		<<else>>
-			<<set $slaves[$i].choosesOwnAssignmentText += " is tired, so $he decides to rest.">>
-			<<= removeJob($slaves[$i], $slaves[$i].assignment)>>
-		<</if>>
-
-	<<elseif ($slaves[$i].boobsMilk > 0)>>
-		<<set $slaves[$i].choosesOwnAssignmentText += " rushes to get milked since $his breasts have become painfully engorged.">>
-		<<= assignJob($slaves[$i], "get milked")>>
-
-	<<elseif ($slaves[$i].intelligenceImplant < 15)>>
-		<<if ($universalRulesAssignsSelfFacility == 1) && ($schoolroom > _schoolL)>>
-			<<set $slaves[$i].choosesOwnAssignmentText += " is uneducated, so $he sits $himself down in $schoolroomName.">>
-			<<= assignJob($slaves[$i], "learn in the schoolroom")>>
-		<<else>>
-			<<set $slaves[$i].choosesOwnAssignmentText += " is uneducated, so $he sits $himself down to learn.">>
-			<<= assignJob($slaves[$i], "take classes")>>
-		<</if>>
-
-	<<elseif (_S.Attendant) && ($universalRulesAssignsSelfFacility == 1) && (($slaves[$i].devotion < 45) || ($slaves[$i].trust < 45) || ($slaves[$i].sexualFlaw != "none") || ($slaves[$i].behavioralFlaw != "none"))>>
-		<<set $slaves[$i].choosesOwnAssignmentText += " could use some counseling, so $he decides to visit $spaName.">>
-		<<= assignJob($slaves[$i], "rest in the spa")>>
-
-	<<elseif ($slaves[$i].devotion <= 50) && canWalk($slaves[$i]) && canSee($slaves[$i])>>
-		<<if ($universalRulesAssignsSelfFacility == 1) && ($servantsQuarters > _servQL)>>
-			<<set $slaves[$i].choosesOwnAssignmentText += " is obedient but not devoted, so $he decides to work from $servantsQuartersName since it's the least sexually demanding job available.">>
-			<<= assignJob($slaves[$i], "work as a servant")>>
-		<<else>>
-			<<set $slaves[$i].choosesOwnAssignmentText += " is obedient but not devoted, so $he decides to work as a servant since it's the least sexually demanding job available.">>
-			<<= assignJob($slaves[$i], "be a servant")>>
-		<</if>>
-
-	<<elseif $universalRulesAssignsSelfFacility == 1 && $slaves[$i].devotion > 50 && canWalk($slaves[$i]) && canSee($slaves[$i]) && $nurseryNannies > _nurseryL>>
-		<<if $slaves[$i].daughters > 0 && $cribs.findIndex(function(c) { c.mother === $slaves[$i].ID})>>	/* TODO: this may need another lookover */
-			<<set $slaves[$i].choosesOwnAssignmentText += " wants to look after $his child, so $he decides to work in $nurseryName.">>
-			<<=assignJob($slaves[$i], "work as a nanny")>>
-		<<else>>
-			<<set $slaves[$i].choosesOwnAssignmentText += " enjoys taking care of children, so $he decides to work in $nurseryName.">>
-		<<= assignJob($slaves[$i], "work as a nanny")>>
-		<</if>>
-
-	<<elseif ($slaves[$i].relationship == -1)>>
-		<<set $slaves[$i].choosesOwnAssignmentText += " relies on promiscuity to fulfill $his emotional needs,">>
-		<<if ($cash < 10000)>>
-			<<set $slaves[$i].choosesOwnAssignmentText += " and doesn't mind being a whore, so $he prostitutes $himself">>
-			<<if ($universalRulesAssignsSelfFacility == 1) && ($brothel > _brothelL)>>
-				<<set $slaves[$i].choosesOwnAssignmentText += " in $brothelName.">>
-				<<= assignJob($slaves[$i], "work in the brothel")>>
-			<<else>>
-				<<set $slaves[$i].choosesOwnAssignmentText += " on the streets.">>
-				<<= assignJob($slaves[$i], "whore")>>
-			<</if>>
-		<<else>>
-			<<set $slaves[$i].choosesOwnAssignmentText += " so $he eagerly decides to slut around">>
-			<<if ($universalRulesAssignsSelfFacility == 1) && ($club > _clubL)>>
-				<<set $slaves[$i].choosesOwnAssignmentText += " in $clubName.">>
-				<<= assignJob($slaves[$i], "serve in the club")>>
-			<<else>>
-				<<set $slaves[$i].choosesOwnAssignmentText += " on the streets.">>
-				<<= assignJob($slaves[$i], "serve the public")>>
-			<</if>>
-			<<set $slaves[$i].sexAmount = 10>>
-		<</if>>
-
-	<<elseif ($slaves[$i].relationship == -2)>>
-		<<set $slaves[$i].choosesOwnAssignmentText += " is emotionally bonded to you,">>
-		<<if ($slaves[$i].behavioralQuirk == "insecure")>>
-			<<set $slaves[$i].choosesOwnAssignmentText += " but insecure, so $he decides to make you money by prostituting $himself">>
-			<<if ($universalRulesAssignsSelfFacility == 1) && ($brothel > _brothelL)>>
-				<<set $slaves[$i].choosesOwnAssignmentText += " in $brothelName.">>
-				<<= assignJob($slaves[$i], "work in the brothel")>>
-			<<else>>
-				<<set $slaves[$i].choosesOwnAssignmentText += " on the streets.">>
-				<<= assignJob($slaves[$i], "whore")>>
-			<</if>>
-		<<elseif ($slaves[$i].behavioralQuirk == "advocate")>>
-			<<set $slaves[$i].choosesOwnAssignmentText += " and an advocate for slavery, so $he decides to burnish your reputation by slutting it up">>
-			<<if ($universalRulesAssignsSelfFacility == 1) && ($club > _clubL)>>
-				<<set $slaves[$i].choosesOwnAssignmentText += " in $clubName.">>
-				<<= assignJob($slaves[$i], "serve in the club")>>
-			<<else>>
-				<<set $slaves[$i].choosesOwnAssignmentText += " on the streets.">>
-				<<= assignJob($slaves[$i], "serve the public")>>
-			<</if>>
-			<<set $slaves[$i].sexAmount = 10>>
-		<<elseif ($slaves[$i].energy > 60)>>
-			<<set $slaves[$i].choosesOwnAssignmentText += " and $he thinks of little but sex with you,">>
-			<<if ($universalRulesAssignsSelfFacility == 1) && ($masterSuite > _masterSL)>>
-				<<set $slaves[$i].choosesOwnAssignmentText += " so $he heads straight to $masterSuiteName.">>
-				<<= assignJob($slaves[$i], "serve in the master suite")>>
-			<<else>>
-				<<set $slaves[$i].choosesOwnAssignmentText += " so $he cheerfully designates $himself one of your fucktoys.">>
-				<<= assignJob($slaves[$i], "please you")>>
-			<</if>>
-		<<elseif canSee($slaves[$i]) && canWalk($slaves[$i])>>
-			<<set $slaves[$i].choosesOwnAssignmentText += " so $he decides to work">>
-			<<if ($universalRulesAssignsSelfFacility == 1) && ($servantsQuarters > _servQL)>>
-				<<set $slaves[$i].choosesOwnAssignmentText += " from $servantsQuartersName">>
-				<<= assignJob($slaves[$i], "work as a servant")>>
-			<<else>>
-				<<set $slaves[$i].choosesOwnAssignmentText += " as a servant">>
-				<<= assignJob($slaves[$i], "be a servant")>>
-			<</if>>
-			<<set $slaves[$i].choosesOwnAssignmentText += " to make your penthouse as clean and homelike as possible.">>
-		<<else>>
-			<<set $slaves[$i].choosesOwnAssignmentText += " but unable to do much on $his own,">>
-			<<if ($universalRulesAssignsSelfFacility == 1) && ($masterSuite > _masterSL)>>
-				<<set $slaves[$i].choosesOwnAssignmentText += " so $he heads straight to $masterSuiteName to await your caress.">>
-				<<= assignJob($slaves[$i], "serve in the master suite")>>
-			<<else>>
-				<<set $slaves[$i].choosesOwnAssignmentText += " so $he cheerfully designates $himself one of your fucktoys to be close to you.">>
-				<<= assignJob($slaves[$i], "please you")>>
-			<</if>>
-		<</if>>
-
-	<<elseif ($slaves[$i].relationship == -3)>>
-		<<if $slaves[$i].devotion+$slaves[$i].trust >= 175>>
-			<<set $slaves[$i].choosesOwnAssignmentText += " is happily married to you,">>
-		<<elseif $slaves[$i].devotion < -20 && $slaves[$i].trust > 20>>
-			<<set $slaves[$i].choosesOwnAssignmentText += " is reluctantly married to you,">>
-		<<elseif $slaves[$i].devotion < -20>>
-			<<set $slaves[$i].choosesOwnAssignmentText += " is forcibly married to you,">>
-		<<else>>
-			<<set $slaves[$i].choosesOwnAssignmentText += " is married to you,">>
-		<</if>>
-		<<if $slaves[$i].devotion > 50>>
-			<<if ($slaves[$i].energy > 60)>>
-				<<set $slaves[$i].choosesOwnAssignmentText += " and $he thinks of little but sex with you,">>
-				<<if ($universalRulesAssignsSelfFacility == 1) && ($masterSuite > _masterSL)>>
-					<<set $slaves[$i].choosesOwnAssignmentText += " so $he heads straight to $masterSuiteName.">>
-					<<= assignJob($slaves[$i], "serve in the master suite")>>
-				<<else>>
-					<<set $slaves[$i].choosesOwnAssignmentText += " so $he cheerfully designates $himself one of your fucktoys.">>
-					<<= assignJob($slaves[$i], "please you")>>
-				<</if>>
-			<<elseif canSee($slaves[$i]) && canWalk($slaves[$i])>>
-				<<set $slaves[$i].choosesOwnAssignmentText += " so $he decides to work">>
-				<<if ($universalRulesAssignsSelfFacility == 1) && ($servantsQuarters > _servQL)>>
-					<<set $slaves[$i].choosesOwnAssignmentText += " from $servantsQuartersName">>
-					<<= assignJob($slaves[$i], "work as a servant")>>
-				<<else>>
-					<<set $slaves[$i].choosesOwnAssignmentText += " as a servant">>
-					<<= assignJob($slaves[$i], "be a servant")>>
-				<</if>>
-				<<set $slaves[$i].choosesOwnAssignmentText += " to make your penthouse as clean and homelike as possible.">>
-			<<else>>
-				<<set $slaves[$i].choosesOwnAssignmentText += " but unable to do much on $his own">>
-				<<if ($universalRulesAssignsSelfFacility == 1) && ($masterSuite > _masterSL)>>
-					<<set $slaves[$i].choosesOwnAssignmentText += " so $he heads straight to $masterSuiteName to await your caress.">>
-					<<= assignJob($slaves[$i], "serve in the master suite")>>
-				<<else>>
-					<<set $slaves[$i].choosesOwnAssignmentText += " so $he cheerfully designates $himself one of your fucktoys to be close to you.">>
-					<<= assignJob($slaves[$i], "please you")>>
-				<</if>>
-			<</if>>
-		<<elseif $slaves[$i].devotion < -20 && $slaves[$i].trust > 20>>
-			<<set $slaves[$i].choosesOwnAssignmentText += " and $he thinks of all the ways $he can take advantage of this,">>
-			<<if ($universalRulesAssignsSelfFacility == 1) && ($spa > _spaL)>>
-				<<set $slaves[$i].choosesOwnAssignmentText += " so $he heads straight to $spaName to relax.">>
-				<<= assignJob($slaves[$i], "rest in the spa")>>
-			<<else>>
-				<<set $slaves[$i].choosesOwnAssignmentText += " so $he cheerfully decides to lounge about the penthouse.">>
-				<<= assignJob($slaves[$i], "rest")>>
-			<</if>>
-		<<elseif $slaves[$i].devotion < -20>>
-			<<set $slaves[$i].choosesOwnAssignmentText += " and $he is scared of you, so $he chooses to work as a servant so that $he may serve you without "serving" you.">>
-			<<= assignJob($slaves[$i], "be a servant")>>
-		<<else>>
-			<<if ($slaves[$i].energy > 60)>>
-				<<set $slaves[$i].choosesOwnAssignmentText += " and $he thinks of little but sex,">>
-				<<if ($universalRulesAssignsSelfFacility == 1) && ($masterSuite > _masterSL)>>
-					<<set $slaves[$i].choosesOwnAssignmentText += " so $he heads straight to $masterSuiteName.">>
-					<<= assignJob($slaves[$i], "serve in the master suite")>>
-				<<else>>
-					<<set $slaves[$i].choosesOwnAssignmentText += " so $he cheerfully designates $himself one of your fucktoys.">>
-					<<= assignJob($slaves[$i], "please you")>>
-				<</if>>
-			<<elseif canSee($slaves[$i]) && canWalk($slaves[$i])>>
-				<<set $slaves[$i].choosesOwnAssignmentText += " so $he decides to work">>
-				<<if ($universalRulesAssignsSelfFacility == 1) && ($servantsQuarters > _servQL)>>
-					<<set $slaves[$i].choosesOwnAssignmentText += " from $servantsQuartersName">>
-					<<= assignJob($slaves[$i], "work as a servant")>>
-				<<else>>
-					<<set $slaves[$i].choosesOwnAssignmentText += " as a servant">>
-					<<= assignJob($slaves[$i], "be a servant")>>
-				<</if>>
-				<<set $slaves[$i].choosesOwnAssignmentText += " to make your penthouse as clean and homelike as possible.">>
-			<<else>>
-				<<set $slaves[$i].choosesOwnAssignmentText += " but unable to do much on $his own, so $he designates $himself one of your fucktoys to get more intimate with you.">>
-				<<= assignJob($slaves[$i], "please you")>>
-			<</if>>
-		<</if>>
-
-	<<elseif ($slaves[$i].fetishKnown == 1)>>
-		<<if ($slaves[$i].fetish == "submissive") && canWalk($slaves[$i]) && canSee($slaves[$i])>>
-			<<if ($universalRulesAssignsSelfFacility == 1) && ($servantsQuarters > _servQL)>>
-				<<set $slaves[$i].choosesOwnAssignmentText += " thinks $he belongs at the bottom of the penthouse hierarchy, so $he goes to live in $servantsQuartersName.">>
-				<<= assignJob($slaves[$i], "work as a servant")>>
-			<<else>>
-				<<set $slaves[$i].choosesOwnAssignmentText += " thinks $he belongs at the bottom of the penthouse hierarchy, so $he decides $he should be a servant.">>
-				<<= assignJob($slaves[$i], "be a servant")>>
-			<</if>>
-		<<elseif ($slaves[$i].fetish == "dom") || ($slaves[$i].fetish == "sadist")>>
-			<<if ($universalRulesAssignsSelfFacility == 1) && ($club > _clubL)>>
-				<<set $slaves[$i].choosesOwnAssignmentText += " is self-confident, so $he decides to work in $clubName.">>
-				<<= assignJob($slaves[$i], "serve in the club")>>
-			<<else>>
-				<<set $slaves[$i].choosesOwnAssignmentText += " is self-confident, so $he decides to work as a public servant.">>
-				<<= assignJob($slaves[$i], "serve the public")>>
-			<</if>>
-			<<set $slaves[$i].sexAmount = 10>>
-		<<elseif ($slaves[$i].fetish == "masochist")>>
-			<<if ($universalRulesAssignsSelfFacility == 1) && ($brothel > _brothelL)>>
-				<<set $slaves[$i].choosesOwnAssignmentText += " enjoys abuse, so $he hurries down to $brothelName.">>
-				<<= assignJob($slaves[$i], "work in the brothel")>>
-			<<else>>
-				<<set $slaves[$i].choosesOwnAssignmentText += " enjoys abuse, so $he decides to become a whore.">>
-				<<= assignJob($slaves[$i], "whore")>>
-			<</if>>
-		<<elseif ($slaves[$i].fetish == "cumslut")>>
-			<<if ($universalRulesAssignsSelfFacility == 1) && ($brothel > _brothelL)>>
-				<<set $slaves[$i].choosesOwnAssignmentText += " hurries down to $brothelName to suck cocks.">>
-				<<= assignJob($slaves[$i], "work in the brothel")>>
-			<<else>>
-				<<set $slaves[$i].choosesOwnAssignmentText += " decides to become a whore, mostly to suck cock.">>
-				<<= assignJob($slaves[$i], "whore")>>
-			<</if>>
-		<<elseif ($slaves[$i].fetish == "humiliation")>>
-			<<if ($universalRulesAssignsSelfFacility == 1) && ($brothel > _brothelL)>>
-				<<set $slaves[$i].choosesOwnAssignmentText += " decides to work in $brothelName, since it's even more embarrassing to be a whore than a club slut.">>
-				<<= assignJob($slaves[$i], "work in the brothel")>>
-			<<else>>
-				<<set $slaves[$i].choosesOwnAssignmentText += " decides to whore, since it's even more embarrassing to be a whore than to be a public servant.">>
-				<<= assignJob($slaves[$i], "whore")>>
-			<</if>>
-		<<elseif ($slaves[$i].fetish == "buttslut")>>
-			<<if ($slaves[$i].balls > 0)>>
-				<<if ($universalRulesAssignsSelfFacility == 1) && ($dairyRestraintsSetting < 2) && ($dairy > _dairyL)>>
-					<<set $slaves[$i].choosesOwnAssignmentText += " chooses confinement in $dairyName, since all $he will be expected to do is produce cum by orgasming to buttsex.">>
-					<<= assignJob($slaves[$i], "work in the dairy")>>
-				<<else>>
-					<<set $slaves[$i].choosesOwnAssignmentText += " decides to get milked, since all $he will be expected to do is produce cum by orgasming to buttsex.">>
-					<<= assignJob($slaves[$i], "get milked")>>
-				<</if>>
-			<<else>>
-				<<if ($universalRulesAssignsSelfFacility == 1) && ($brothel > _brothelL)>>
-					<<set $slaves[$i].choosesOwnAssignmentText += " decides to work in $brothelName, since whores get buttfucked more than anyone else.">>
-					<<= assignJob($slaves[$i], "work in the brothel")>>
-				<<else>>
-					<<set $slaves[$i].choosesOwnAssignmentText += " decides to whore, since whores get buttfucked more than anyone else.">>
-					<<= assignJob($slaves[$i], "whore")>>
-				<</if>>
-			<</if>>
-		<<elseif ($slaves[$i].fetish == "pregnancy")>>
-			<<if ($slaves[$i].lactation > 0)>>
-				<<if ($universalRulesAssignsSelfFacility == 1) && ($dairyRestraintsSetting < 2) && ($dairy > _dairyL)>>
-					<<set $slaves[$i].choosesOwnAssignmentText += " heads down to $dairyName to be around other lactating girls.">>
-					<<= assignJob($slaves[$i], "work in the dairy")>>
-				<<else>>
-					<<set $slaves[$i].choosesOwnAssignmentText += " decides to get milked, since $he is already lactating.">>
-					<<= assignJob($slaves[$i], "get milked")>>
-				<</if>>
-			<<elseif ($PC.dick != 0) && isFertile($slaves[$i])>>
-				<<if ($universalRulesAssignsSelfFacility == 1) && ($masterSuite > _masterSL)>>
-					<<set $slaves[$i].choosesOwnAssignmentText += " decides to serve you in $masterSuiteName, hoping that you'll get $him pregnant.">>
-					<<= assignJob($slaves[$i], "serve in the master suite")>>
-				<<else>>
-					<<set $slaves[$i].choosesOwnAssignmentText += " decides to be your fucktoy, hoping that you'll get $him pregnant.">>
-					<<= assignJob($slaves[$i], "please you")>>
-				<</if>>
-			<<elseif ($universalRulesAssignsSelfFacility == 1) && ($dairyPregSetting > 0) && ($dairy > _dairyL) && isFertile($slaves[$i])>>
-				<<if $dairyPregSetting > 1>>
-					<<set $slaves[$i].choosesOwnAssignmentText += " eagerly rushes to $dairyName in the hopes that $his fertile womb will be packed full of children.">>
-					<<= assignJob($slaves[$i], "work in the dairy")>>
-				<<else>>
-					<<set $slaves[$i].choosesOwnAssignmentText += " rushes to $dairyName in the hopes that $his fertile womb will be rented out.">>
-					<<= assignJob($slaves[$i], "work in the dairy")>>
-				<</if>>
-			<<elseif ($slaves[$i].bellyPreg >= 1500)>>
-				<<if $arcologies[0].FSRepopulationFocus > 20>>
-					<<if ($cash < 10000)>>
-						<<if $brothel > _brothelL && $universalRulesAssignsSelfFacility == 1>>
-							<<set $slaves[$i].choosesOwnAssignmentText += " heads to $brothelName since $he wants to set an example for any unimpregnated girls.">>
-							<<= assignJob($slaves[$i], "work in the brothel")>>
-						<<else>>
-							<<set $slaves[$i].choosesOwnAssignmentText += " heads to the streets to lavish in the attention given to pregnant prostitutes.">>
-							<<= assignJob($slaves[$i], "whore")>>
-						<</if>>
-					<<else>>
-						<<if $club > _clubL && $universalRulesAssignsSelfFacility == 1>>
-							<<set $slaves[$i].choosesOwnAssignmentText += " heads to $clubName to show off $his growing middle and lavish in the public's attention.">>
-							<<= assignJob($slaves[$i], "serve in the club")>>
-						<<else>>
-							<<set $slaves[$i].choosesOwnAssignmentText += " heads to the streets to contribute to the number of visibly pregnant women around.">>
-							<<= assignJob($slaves[$i], "serve the public")>>
-						<</if>>
-						<<set $slaves[$i].sexAmount = 10>>
-					<</if>>
-				<<elseif $masterSuite > _masterSL && $universalRulesAssignsSelfFacility == 1>>
-					<<set $slaves[$i].choosesOwnAssignmentText += " heads straight to $masterSuiteName to share the intimacy of $his pregnant body with you.">>
-					<<= assignJob($slaves[$i], "serve in the master suite")>>
-				<<else>>
-					<<set $slaves[$i].choosesOwnAssignmentText += " decides to be your fucktoy to share the intimacy of $his pregnant body with you.">>
-					<<= assignJob($slaves[$i], "please you")>>
-				<</if>>
-			<<elseif ($slaves[$i].pregKnown == 1)>>
-				<<if $masterSuite > _masterSL && $universalRulesAssignsSelfFacility == 1>>
-					<<set $slaves[$i].choosesOwnAssignmentText += " heads straight to $masterSuiteName so you may watch for the day that $he finally starts to show.">>
-					<<= assignJob($slaves[$i], "serve in the master suite")>>
-				<<else>>
-					<<set $slaves[$i].choosesOwnAssignmentText += " decides to be your fucktoy so you may enjoy watching $him begin showing.">>
-					<<= assignJob($slaves[$i], "please you")>>
-				<</if>>
-			<<else>>
-				<<if ($universalRulesAssignsSelfFacility == 1) && ($brothel > _brothelL)>>
-					<<set $slaves[$i].choosesOwnAssignmentText += " can't indulge $his fetish by getting pregnant $himself, so $he just heads down to $brothelName.">>
-					<<= assignJob($slaves[$i], "work in the brothel")>>
-				<<else>>
-					<<set $slaves[$i].choosesOwnAssignmentText += " can't indulge $his fetish by getting pregnant $himself, so $he glumly decides to be a whore.">>
-					<<= assignJob($slaves[$i], "whore")>>
-				<</if>>
-			<</if>>
-		<<elseif ($slaves[$i].fetish == "boobs")>>
-			<<if ($slaves[$i].lactation > 0)>>
-				<<if ($universalRulesAssignsSelfFacility == 1) && ($dairyRestraintsSetting < 2) && ($dairy > _dairyL)>>
-					<<set $slaves[$i].choosesOwnAssignmentText += " heads down to $dairyName for all the attention that'll be lavished on $his nipples.">>
-					<<= assignJob($slaves[$i], "work in the dairy")>>
-				<<else>>
-					<<set $slaves[$i].choosesOwnAssignmentText += " decides to get milked, since $he loves getting off to it.">>
-					<<= assignJob($slaves[$i], "get milked")>>
-				<</if>>
-			<<else>>
-			<<if ($universalRulesAssignsSelfFacility == 1) && ($club > _clubL)>>
-					<<set $slaves[$i].choosesOwnAssignmentText += " decides to work in $clubName so $he can show off $his bare breasts.">>
-					<<= assignJob($slaves[$i], "serve in the club")>>
-				<<else>>
-					<<set $slaves[$i].choosesOwnAssignmentText += " decides to work as a public servant so $he can show off $his bare breasts.">>
-					<<= assignJob($slaves[$i], "serve the public")>>
-				<</if>>
-				<<set $slaves[$i].sexAmount = 10>>
-			<</if>>
-		<<elseif ($slaves[$i].attrXX > 85)>>
-			<<if ($universalRulesAssignsSelfFacility == 1) && ($club > _clubL)>>
-				<<set $slaves[$i].choosesOwnAssignmentText += " decides to work in $clubName so $he can hit on hot girls.">>
-				<<= assignJob($slaves[$i], "serve in the club")>>
-			<<else>>
-				<<set $slaves[$i].choosesOwnAssignmentText += " decides to work as a public servant so $he can hit on hot girls.">>
-				<<= assignJob($slaves[$i], "serve the public")>>
-			<</if>>
-			<<set $slaves[$i].sexAmount = 10>>
-		<<elseif ($slaves[$i].attrXY > 85)>>
-			<<if ($universalRulesAssignsSelfFacility == 1) && ($club > _clubL)>>
-				<<set $slaves[$i].choosesOwnAssignmentText += " decides to work in $clubName so $he can hit on cute boys.">>
-				<<= assignJob($slaves[$i], "serve in the club")>>
-			<<else>>
-				<<set $slaves[$i].choosesOwnAssignmentText += " decides to work as a public servant so $he can hit on cute boys.">>
-				<<= assignJob($slaves[$i], "serve the public")>>
-			<</if>>
-			<<set $slaves[$i].sexAmount = 10>>
-		<<elseif ($slaves[$i].energy > 95)>>
-			<<if ($universalRulesAssignsSelfFacility == 1) && ($brothel > _brothelL)>>
-				<<set $slaves[$i].choosesOwnAssignmentText += " decides to help those of your slaves who mind taking dick all day by working in $brothelName.">>
-				<<= assignJob($slaves[$i], "work in the brothel")>>
-			<<else>>
-				<<set $slaves[$i].choosesOwnAssignmentText += " decides to help those of your slaves who mind taking dick all day by working as a whore.">>
-				<<= assignJob($slaves[$i], "whore")>>
-			<</if>>
-
-		<<elseif ($arcologies[0].FSChattelReligionist > 0)>>
-			<<if ($universalRulesAssignsSelfFacility == 1) && ($brothel > _brothelL)>>
-				<<set $slaves[$i].choosesOwnAssignmentText += " is a pure and faithful slave, so $he sells $his body in the holy brothel.">>
-				<<= assignJob($slaves[$i], "work in the brothel")>>
-			<<else>>
-				<<set $slaves[$i].choosesOwnAssignmentText += " is a pure and faithful slave, so $he sells $his body as a holy prostitute.">>
-				<<= assignJob($slaves[$i], "whore")>>
-			<</if>>
-		<<elseif ($arcologies[0].FSEgyptianRevivalist > 0)>>
-				<<if ($universalRulesAssignsSelfFacility == 1) && ($masterSuite > _masterSL)>>
-				<<set $slaves[$i].choosesOwnAssignmentText += " is a devoted slave, so $he immediately joins your harem.">>
-				<<= assignJob($slaves[$i], "serve in the master suite")>>
-			<<else>>
-				<<set $slaves[$i].choosesOwnAssignmentText += " is a devoted slave, so $he immediately joins your harem.">>
-				<<= assignJob($slaves[$i], "please you")>>
-			<</if>>
-		<<elseif ($arcologies[0].FSRomanRevivalist > 0)>>
-			<<if ($universalRulesAssignsSelfFacility == 1) && ($brothel > _brothelL)>>
-				<<set $slaves[$i].choosesOwnAssignmentText += " is a devoted slave, so $he decides $he can best serve the state by raising money for the treasury, by selling $his body in $brothelName.">>
-				<<= assignJob($slaves[$i], "work in the brothel")>>
-			<<else>>
-				<<set $slaves[$i].choosesOwnAssignmentText += " is a devoted slave, so $he decides $he can best serve the state by raising money for the treasury, by selling $his body as a prostitute.">>
-				<<= assignJob($slaves[$i], "whore")>>
-			<</if>>
-		<<elseif ($arcologies[0].FSAztecRevivalist > 0)>>
-			<<if ($universalRulesAssignsSelfFacility == 1) && ($brothel > _brothelL)>>
-				<<set $slaves[$i].choosesOwnAssignmentText += " is a devoted slave, so $he decides $he can best serve the empire by serving at the fertility temple.">>
-				<<= assignJob($slaves[$i], "work in the brothel")>>
-			<<else>>
-				<<set $slaves[$i].choosesOwnAssignmentText += " is a devoted slave, so $he decides $he can best serve the empire by offering $himself to the public.">>
-				<<= assignJob($slaves[$i], "serve the public")>>
-				<<set $slaves[$i].sexAmount = 10>>
-			<</if>>
-		<<elseif ($arcologies[0].FSPaternalist > 0)>>
-			<<if ($universalRulesAssignsSelfFacility == 1) && ($brothel > _brothelL)>>
-				<<set $slaves[$i].choosesOwnAssignmentText += " decides to work in $brothelName, a respectable position for a slave in this enlightened arcology.">>
-				<<= assignJob($slaves[$i], "work in the brothel")>>
-			<<else>>
-				<<set $slaves[$i].choosesOwnAssignmentText += " decides to be a whore, a respectable position for a slave in this enlightened arcology.">>
-				<<= assignJob($slaves[$i], "whore")>>
-			<</if>>
-		<<elseif ($arcologies[0].FSPastoralist > 0)>>
-			<<if ($slaves[$i].lactation > 0)>>
-				<<if ($universalRulesAssignsSelfFacility == 1) && ($dairyRestraintsSetting < 2) && ($dairy > _dairyL)>>
-					<<set $slaves[$i].choosesOwnAssignmentText += " hurries to join your herd of dairy cows.">>
-					<<= assignJob($slaves[$i], "work in the dairy")>>
-				<<else>>
-					<<set $slaves[$i].choosesOwnAssignmentText += " hurries to join your herd of cows.">>
-					<<= assignJob($slaves[$i], "get milked")>>
-				<</if>>
-			<<else>>
-				<<if ($universalRulesAssignsSelfFacility == 1) && ($brothel > _brothelL)>>
-					<<set $slaves[$i].choosesOwnAssignmentText += " decides to work in $brothelName to help raise money to get more girls lactating properly.">>
-					<<= assignJob($slaves[$i], "work in the brothel")>>
-				<<else>>
-					<<set $slaves[$i].choosesOwnAssignmentText += " decides to prostitute $himself to help raise money to get more girls lactating properly.">>
-					<<= assignJob($slaves[$i], "whore")>>
-				<</if>>
-			<</if>>
-		<<elseif ($arcologies[0].FSHedonisticDecadence > 0)>>
-			<<if ($universalRulesAssignsSelfFacility == 1) && ($spa > _spaL) && (($slaves[$i].trust < 60) || ($slaves[$i].devotion <= 60))>>
-				<<set $slaves[$i].choosesOwnAssignmentText += " could use a break, so $he heads to take a dip in the spa.">>
-				<<= assignJob($slaves[$i], "rest in the spa")>>
-			<<else>>
-				<<set $slaves[$i].choosesOwnAssignmentText += " could use a meal and a nap, so $he grabs a cup of food and heads to bed.">>
-				<<= assignJob($slaves[$i], "rest")>>
-			<</if>>
-		<<else>>
-			<<if ($slaves[$i].skill.whoring > $slaves[$i].skill.entertainment)>>
-				<<if ($universalRulesAssignsSelfFacility == 1) && ($brothel > _brothelL)>>
-					<<set $slaves[$i].choosesOwnAssignmentText += " decides to work in $brothelName, since $he thinks $himself a better whore than a public slut.">>
-					<<= assignJob($slaves[$i], "work in the brothel")>>
-				<<else>>
-					<<set $slaves[$i].choosesOwnAssignmentText += " decides to whore, since $he thinks $himself a better whore than a public slut.">>
-					<<= assignJob($slaves[$i], "whore")>>
-				<</if>>
-			<<elseif ($slaves[$i].skill.entertainment > $slaves[$i].skill.whoring)>>
-				<<if ($universalRulesAssignsSelfFacility == 1) && ($club > _clubL)>>
-					<<set $slaves[$i].choosesOwnAssignmentText += " decides to be a club $girl, since $he thinks $himself a better public slut than a whore.">>
-					<<= assignJob($slaves[$i], "serve in the club")>>
-				<<else>>
-					<<set $slaves[$i].choosesOwnAssignmentText += " decides to serve the public, since $he thinks $himself a better public slut than a whore.">>
-					<<= assignJob($slaves[$i], "serve the public")>>
-				<</if>>
-				<<set $slaves[$i].sexAmount = 10>>
-			<<else>>
-				<<if ($universalRulesAssignsSelfFacility == 1) && ($brothel > _brothelL)>>
-					<<set $slaves[$i].choosesOwnAssignmentText += " decides to join $his sisters and work in $brothelName.">>
-					<<= assignJob($slaves[$i], "work in the brothel")>>
-				<<else>>
-					<<set $slaves[$i].choosesOwnAssignmentText += " decides to prostitute $himself to help you upgrade $arcologies[0].name and improve everyone's life.">>
-					<<= assignJob($slaves[$i], "whore")>>
-				<</if>>
-			<</if>>
-		<</if>>
-	<<else>>
-		<<if ($universalRulesAssignsSelfFacility == 1) && ($club > _clubL)>>
-			<<set $slaves[$i].choosesOwnAssignmentText += " decides to be a club $girl, since partying is better than sitting around and failing to think of a job to do.">>
-			<<= assignJob($slaves[$i], "serve in the club")>>
-		<<elseif canWalk($slaves[$i]) && canSee($slaves[$i])>>
-			<<set $slaves[$i].choosesOwnAssignmentText += " decides to tidy up the penthouse a little while $he thinks.">>
-			<<= assignJob($slaves[$i], "be a servant")>>
-		<<else>>
-			<<set $slaves[$i].choosesOwnAssignmentText += " stays in bed, unable to come up with anything.">>
-			<<= removeJob($slaves[$i], $slaves[$i].assignment)>>
-		<</if>>
-	<</if>>
-
-	<<set $slaves[$i].choosesOwnAssignment = 2>> /* ready for second pass */
-
-<</if>> /* closes choosesOwnAssignment */
diff --git a/src/uncategorized/spaReport.tw b/src/uncategorized/spaReport.tw
index 146faf15411..9dba2e99fad 100644
--- a/src/uncategorized/spaReport.tw
+++ b/src/uncategorized/spaReport.tw
@@ -321,7 +321,7 @@
 		/* 000-250-006 */
 		<span class='slave-name'><<= SlaveFullName(_slave)>></span>
 		<<if _slave.choosesOwnAssignment == 2>>
-			<<include "SA chooses own job">>
+			<<= App.SlaveAssignment.choosesOwnJob(_slave)>>
 		<<else>>
 			is resting in $spaName.
 		<</if>>
@@ -348,7 +348,7 @@
 		<br><<include "SA devotion">>
 	<<else>>
 		<<silently>>
-		<<include "SA chooses own job">>
+		<<run App.SlaveAssignment.choosesOwnJob(_slave)>>
 		<<run App.SlaveAssignment.choosesOwnClothes(_slave)>>
 		<<run App.SlaveAssignment.rest(_slave)>>
 		<<include "SA rules">>
-- 
GitLab