diff --git a/.jshintrc b/.jshintrc
new file mode 100644
index 0000000000000000000000000000000000000000..25cfa9f413f4b868c9f25bd8fe899cc61dac402d
--- /dev/null
+++ b/.jshintrc
@@ -0,0 +1,4 @@
+{
+	"browser": true,
+	"esversion": 6
+}
diff --git a/src/art/vector/layers/Torso_Outfit_Dirndl_ copy.tw b/src/art/vector/layers/Torso_Outfit_Dirndl_copy.tw
similarity index 100%
rename from src/art/vector/layers/Torso_Outfit_Dirndl_ copy.tw
rename to src/art/vector/layers/Torso_Outfit_Dirndl_copy.tw
diff --git a/src/gui/css/mainStyleSheet.tw b/src/gui/css/mainStyleSheet.tw
index c3c247055cd5b75aafac4c9c186fe4785be56806..7646f51c6fffc2a3a7b832d8b34ef06ee1ece48d 100644
--- a/src/gui/css/mainStyleSheet.tw
+++ b/src/gui/css/mainStyleSheet.tw
@@ -258,3 +258,25 @@ max-width: 100%;
 word-break: break-all;
 white-space: normal;
 }
+/* css rules for rules assistant */
+.rajs-listitem {
+	display: inline-block;
+	color: #68D;
+	margin-right: 1em;
+}
+.rajs-listitem:last-of-type { margin-right: 0; }
+.rajs-listitem:hover {
+	cursor: pointer;
+	text-decoration: underline;
+}
+.rajs-list strong:first-of-type, .rajs-list input {
+	margin-right: 2em;
+}
+.rajs-listitem input {
+	margin: 0.25em;
+}
+.rajs-section h1 {
+	border-bottom: 1px solid white;
+	cursor: pointer;
+}
+.rajs-section h1:hover { text-decoration: underline; }
diff --git a/src/js/DefaultRules.tw b/src/js/DefaultRules.tw
new file mode 100644
index 0000000000000000000000000000000000000000..2e7113daedc1ba6c5a8997968acfd3453b185e03
--- /dev/null
+++ b/src/js/DefaultRules.tw
@@ -0,0 +1,2133 @@
+:: DefaultRules [script]
+// this code applies RA rules onto slaves
+
+window.DefaultRules = (function() {
+	"use strict";
+	let V;
+	let r;
+
+	function DefaultRules(slave) {
+		V = State.variables;
+		r = "";
+		let rule = MergeRules(slave);
+
+		if (Object.keys(rule).length === 0) return r; // no rules apply
+
+		AssignJobToSlave(slave, rule);
+		if(slave.fuckdoll === 0) {
+			ProcessClothing(slave, rule);
+			ProcessCollar(slave, rule);
+			ProcessEyewear(slave, rule);
+			ProcessDildos(slave, rule);
+			ProcessDickAccessories(slave, rule);
+			ProcessAnalAccessories(slave, rule);
+			ProcessShoes(slave, rule);
+			ProcessBellyAccessories(slave, rule);
+		}
+		ProcessBellyImplant(slave, rule);
+		if (isFertile(slave))
+			ProcessFertilityDrugs(slave, rule);
+		ProcessAssetGrowthDrugs(slave, rule);
+		ProcessOtherDrugs(slave, rule);
+		ProcessDiet(slave, rule);
+		ProcessCuratives(slave, rule);
+		ProcessAphrodisiacs(slave, rule);
+		ProcessPenisHormones(slave, rule);
+		ProcessFemaleHormones(slave, rule);
+		ProcessPregnancyDrugs(slave, rule);
+		if(slave.fuckdoll === 0) {
+			ProcessLivingStandard(slave, rule);
+			ProcessSpeech(slave, rule);
+			ProcessRelationship(slave, rule);
+			ProcessRelease(slave, rule);
+			ProcessPunishment(slave, rule);
+			ProcessReward(slave, rule);
+		}
+		ProcessDietCum(slave, rule);
+		ProcessDietMilk(slave, rule);
+		ProcessTeeth(slave, rule);
+		ProcessStyle(slave, rule);
+		ProcessPiercings(slave, rule);
+		ProcessSmartPiercings(slave, rule);
+		ProcessTattoos(slave, rule);
+		ProcessPorn(slave, rule);
+		return r;
+	}
+
+	function MergeRules(slave) {
+		// merge all rules applying on a slave into one big rule
+		const rules = V.defaultRules
+			.filter(rule => ruleAppliesP(rule.condition, slave))
+			.map(rule => ProcessAssignments(slave, Object.assign({}, rule.set)));
+		return mergeRules(rules);
+	}
+
+	function ProcessAssignments(slave, rule) {
+		// Before merging rules, we process assignments for each rule separately so we can remove slaves from facilities when they no longer qualify, even if the final "winning" rule assigns them elsewhere 
+		// We also ignore inapplicable assignments for the current slave, so we only merge assignments that are valid 
+		switch (rule.setAssignment) {
+			case "no default setting":
+				delete rule.setAssignment;
+				break;
+			
+			case "rest":
+			case "please you":
+				// slaves always qualify for this assignment 
+				break;
+
+			case "live with your Head Girl":
+				if ((V.HGSuiteSlaves < 1 && slave.indentureRestrictions <= 0))
+					break;
+				else {
+					RAFacilityRemove(slave, rule); // before deleting rule.setAssignment 
+					delete rule.setAssignment;
+				}
+				break;
+
+			case "be confined in the arcade":
+				if ((V.arcadeSlaves < V.arcade && slave.indentureRestrictions <= 0 && slave.breedingMark != 1))
+					break;
+				else {
+					RAFacilityRemove(slave, rule); // before deleting rule.setAssignment 
+					delete rule.setAssignment;
+				}
+				break;
+
+			case "serve in the master suite":
+				if ((V.masterSuiteSlaves < V.masterSuite && (slave.devotion > 20 || slave.trust < -50 || (slave.devotion >= -50 && slave.trust < -20))))
+					break;
+				else {
+					RAFacilityRemove(slave, rule); // before deleting rule.setAssignment 
+					delete rule.setAssignment;
+				}
+				break;
+
+			case "get treatment in the clinic":
+				if ((V.clinicSlaves < V.clinic && (slave.health < 20 || (slave.chem > 15 && V.Nurse !== 0 && V.clinicUpgradeFilters == 1)) || ((slave.bellyImplant > -1) && (V.bellyImplants == 1)) || slave.preg > 1))
+					break;
+				else {
+					RAFacilityRemove(slave, rule); // before deleting rule.setAssignment 
+					delete rule.setAssignment;
+				}
+				break;
+
+			case "rest in the spa":
+				if ((V.spaSlaves < V.spa) && (slave.health < 20) || (slave.trust < 60) || (slave.devotion <= 60) || (slave.fetish == "mindbroken") && (slave.devotion >= -20))
+					break;
+				else {
+					RAFacilityRemove(slave,rule); // before deleting rule.setAssignment 
+					delete rule.setAssignment;
+				}
+				break;
+
+			case "work in the brothel":
+				if ((V.brothelSlaves < V.brothel && (slave.devotion > 50 || slave.trust > 50 || slave.trust < -50 || (slave.devotion >= -50 && slave.trust < -20)) && slave.breedingMark != 1))
+					break;
+				else {
+					RAFacilityRemove(slave, rule); // before deleting rule.setAssignment 
+					delete rule.setAssignment;
+				}
+				break;
+
+			case "serve in the club":
+				if ((V.clubSlaves < V.club && (slave.devotion > 50 || slave.trust > 50 || slave.trust < -50 || (slave.devotion >= -50 && slave.trust < -20)) && slave.breedingMark != 1))
+					break;
+				else {
+					RAFacilityRemove(slave, rule); // before deleting rule.setAssignment 
+					delete rule.setAssignment;
+				}
+				break;
+
+			case "work in the dairy":
+				if ((V.dairy > V.dairySlaves+V.bioreactorsXY+V.bioreactorsXX+V.bioreactorsHerm+V.bioreactorsBarren)) {
+					if ((slave.indentureRestrictions > 0) && (V.dairyRestraintsSetting > 1))
+						break;
+					else if (((slave.indentureRestrictions > 1) && (V.dairyRestraintsSetting > 0)) || (slave.breedingMark == 1 && V.dairyRestriantsSettings > 0) || ((V.dairyPregSetting > 0) && ((slave.bellyImplant != -1) || (slave.broodmother !== 0))))
+						break;
+					else {
+						if ((slave.lactation > 0 || ((V.dairySlimMaintainUpgrade === 0 || V.dairySlimMaintain === 0) && (slave.boobs > 300 || slave.dick === 0 || V.dairyImplantsSetting == 1) && V.dairyImplantsSetting != 2)) || (slave.balls > 0)) {
+							if ((slave.devotion > 20) || ((slave.devotion >= -50) && (slave.trust < -20)) || (slave.trust < -50) || (slave.amp == 1) || (V.dairyRestraintsUpgrade == 1)) {
+								if ((V.dairyStimulatorsSetting < 2) || (slave.anus > 2) || (V.dairyPrepUpgrade == 1)) {
+									if ((V.dairyPregSetting < 2) || (slave.vagina > 2) || (slave.ovaries === 0) || (V.dairyPrepUpgrade == 1))
+										break;
+									else {
+										RAFacilityRemove(slave,rule); // before deleting rule.setAssignment 
+										delete rule.setAssignment;
+									}
+								} else {
+									RAFacilityRemove(slave,rule); // before deleting rule.setAssignment 
+									delete rule.setAssignment;
+								}
+							} else {
+								RAFacilityRemove(slave,rule); // before deleting rule.setAssignment 
+								delete rule.setAssignment;
+							}
+						} else {
+							RAFacilityRemove(slave,rule); // before deleting rule.setAssignment 
+							delete rule.setAssignment;
+						}
+					}
+				}
+				break;
+
+			case "work as a servant":
+				if ((V.servantsQuartersSlaves < V.servantsQuarters && canSee(slave) && canWalk(slave) && (slave.devotion >= -20 || slave.trust < -20 || (slave.devotion >= -50 && slave.trust <= 20))))
+					break;
+				else {
+					RAFacilityRemove(slave,rule); // before deleting rule.setAssignment 
+					delete rule.setAssignment;
+				}
+				break;
+
+			case "learn in the schoolroom":
+				if ((V.schoolroomSlaves < V.schoolroom && slave.fetish != "mindbroken" && (slave.devotion >= -20 || slave.trust < -50 || (slave.devotion >= -50 && slave.trust < -20))))
+					if ((slave.intelligenceImplant < 1) || (slave.voice !== 0 && slave.accent+V.schoolroomUpgradeLanguage > 2) || (slave.oralSkill <= 10+V.schoolroomUpgradeSkills*20) || (slave.whoreSkill <= 10+V.schoolroomUpgradeSkills*20) || (slave.entertainSkill <= 10+V.schoolroomUpgradeSkills*20) || (slave.analSkill < 10+V.schoolroomUpgradeSkills*20) || ((slave.vagina >= 0) && (slave.vaginalSkill < 10+V.schoolroomUpgradeSkills*20)))
+						break;
+					else {
+						RAFacilityRemove(slave,rule); // before deleting rule.setAssignment 
+						delete rule.setAssignment;
+					}
+				else {
+					RAFacilityRemove(slave,rule); // before deleting rule.setAssignment 
+					delete rule.setAssignment;
+				}
+				break;
+
+			case "be confined in the cellblock":
+				if ((V.cellblockSlaves < V.cellblock && ((slave.devotion < -20 && slave.trust >= -20) || (slave.devotion < -50 && slave.trust >= -50))))
+					break;
+				else {
+					RAFacilityRemove(slave,rule); // before deleting rule.setAssignment 
+					delete rule.setAssignment;
+				}
+				break;
+
+			case "take classes":
+				if (slave.intelligenceImplant !== 1 && slave.fetish != "mindbroken" && (slave.devotion >= -20 || slave.trust < -50 || (slave.trust < -20 && slave.devotion >= -50)))
+					break;
+				else
+					delete rule.setAssignment;
+				break;
+
+			case "choose her own job":
+				if ((slave.fetish != "mindbroken"))
+					break;
+				else
+					delete rule.setAssignment;
+				break;
+
+			case "get milked":
+				if ((slave.lactation > 0 || slave.balls > 0))
+					break;
+				else
+					delete rule.setAssignment;
+				break;
+
+			case "be a servant":
+				if ((canWalk(slave) && canSee(slave) && (slave.devotion >= -20 || slave.trust < -50 || (slave.trust < -20 && slave.devotion >= -50))))
+					break;
+				else
+					delete rule.setAssignment;
+				break;
+
+			case "work a glory hole":
+				if (slave.indentureRestrictions <= 0 && slave.breedingMark != 1)
+					break;
+				else
+					delete rule.setAssignment;
+				break;
+
+			case "whore":
+			case "serve the public":
+			case "stay confined":
+				if ((slave.fuckdoll === 0) && slave.breedingMark != 1)
+					break;
+				else
+					delete rule.setAssignment;
+				break;
+
+			default:
+				r += `<span class="red">raWidgets missing case for assignment 'V.{rule.setAssignment}'</span>.`;
+				break;
+		}
+		return rule;
+	}
+
+	function AssignJobToSlave(slave, rule) {
+		// place slave on assignment defined by the rule
+		if ((rule.setAssignment !== undefined && rule.setAssignment != "no default setting")) {
+			if (((rule.setAssignment == "choose her own job" && !slave.choosesOwnAssignment) || rule.setAssignment != slave.assignment)) {
+				switch (rule.setAssignment) {
+					case "live with your Head Girl":
+						r += `<br>${slave.slaveName} has been automatically assigned to live in your Head Girl's private suite.`;
+						break;
+					case "be confined in the arcade":
+						r += `<br>${slave.slaveName} has been automatically assigned to be confined in ${V.arcadeName}.`;
+						break;
+					case "serve in the master suite":
+						r += `<br>${slave.slaveName} has been automatically assigned to {V.masterSuiteName}.`;
+						break;
+					case "get treatment in the clinic":
+						r += `<br>${slave.slaveName} has been automatically assigned to get treatment in {V.clinicName}.`;
+						break;
+					case "rest in the spa":
+						r += `<br>${slave.slaveName} has been automatically assigned to rest in ${V.spaName}.`;
+						break;
+					case "work in the brothel":
+						r += `<br>${slave.slaveName} has been automatically assigned to work in ${V.brothelName}.`;
+						break;
+					case "serve in the club":
+						r += `<br>${slave.slaveName} has been automatically assigned to serve in ${V.clubName}.`;
+						break;
+					case "work in the dairy":
+						r += `<br>${slave.slaveName} has been automatically assigned to be milked in ${V.dairyName}.`;
+						break;
+					case "work as a servant":
+						r += `<br>${slave.slaveName} has been automatically assigned to work in ${V.servantsQuartersName}.`;
+						break;
+					case "work as a servant":
+						r += `<br>${slave.slaveName} has been automatically assigned to work in ${V.servantsQuartersName}.`;
+						break;
+					case "learn in the schoolroom":
+						r += `<br>${slave.slaveName} has been automatically assigned to study in ${V.schoolroomName}.`;
+						break;
+					case "be confined in the cellblock":
+						r += `<br>${slave.slaveName} has been automatically assigned to be confined in ${V.cellblockName}.`;
+						break;
+					case "choose her own job":
+						r += `<br>${slave.slaveName} is now allowed to select her own assignments.`;
+						break;
+					default:
+						r += `<br>${slave.slaveName} has been automatically assigned to ${rule.setAssignment}.`;
+						break;
+				}
+				assignJob(slave, rule.setAssignment);
+			}
+		}
+	}
+
+	function ProcessClothing(slave, rule) {
+		// apply clothes to slave
+		if ((rule.clothes !== undefined) && (rule.clothes !== "no default setting")) {
+			if ((rule.clothes == "choosing her own clothes")) {
+				if ((slave.choosesOwnClothes === 0)) {
+					slave.clothes = "choosing her own clothes";
+					slave.choosesOwnClothes = 1;
+					r += `<br>${slave.slaveName} is now allowed to choose her own clothes.`;
+				}
+			} else if ((slave.clothes !== rule.clothes)) {
+				slave.clothes = rule.clothes;
+				slave.choosesOwnClothes = 0;
+				r += `<br>${slave.slaveName} is now wearing ${slave.clothes}.`;
+			}
+		}
+	}
+
+	function ProcessCollar(slave, rule) {
+		// apply collar to slave
+		if ((rule.collar !== undefined) && (rule.collar != "no default setting")) {
+			if ((slave.collar !== rule.collar)) {
+				r += '<br>';
+				if ((rule.collar == "preg biometrics" && slave.preg <= -1)) {
+					slave.collar = "none";
+					r += `${slave.slaveName} cannot utilize preg biometrics.`;
+				} else if ((rule.collar == "massive dildo gag" && slave.oralSkill <= 50)) {
+					slave.collar = "none";
+					r += `${slave.slaveName} lacks the oral skill to successfully keep the massive dildo gag in her throat.`;
+				} else
+					slave.collar = rule.collar;
+				if ((slave.collar == "none"))
+					r += `${slave.slaveName} has been given no collar.`;
+				else
+					r += `${slave.slaveName} has been given a slave.collar collar.`;
+			}
+		}
+	}
+
+	function ProcessEyewear(slave, rule) {
+		// apply glasses, contacts to slave
+		if ((rule.eyewear !== undefined) && (rule.eyewear !== "no default setting")) {
+			switch (rule.eyewear) {
+				case "correct with glasses":
+					if (slave.eyes == -1) {
+						if (slave.eyewear != "corrective glasses") {
+							slave.eyewear = "corrective glasses";
+							V.cash -= V.modCost;
+							r += `<br>${slave.slaveName} has been given corrective glasses.`;
+						}
+					} else {
+						if (slave.eyewear != "none") {
+							slave.eyewear = "none";
+							r += `<br>${slave.slaveName}'s eyewear has been removed.`;
+						}
+					}
+					break;
+
+				case "correct with contacts":
+					if (slave.eyes == -1) {
+						if (slave.eyewear != "corrective contacts") {
+							slave.eyewear = "corrective contacts";
+							V.cash -= V.modCost;
+							r += `<br>${slave.slaveName} has been given corrective contacts.`;
+						}
+					} else {
+						if (slave.eyewear != "none") {
+							slave.eyewear = "none";
+							r += `<br>${slave.slaveName}'s eyewear has been removed.`;
+						}
+					}
+					break;
+
+				case "blur with glasses":
+					if (slave.eyes > -1) {
+						if (slave.eyewear != "blurring glasses") {
+							slave.eyewear = "blurring glasses";
+							V.cash -= V.modCost;
+							r += `<br>${slave.slaveName} has been given blurring glasses.`;
+						}
+					} else {
+						if (slave.eyewear != "none") {
+							slave.eyewear = "none";
+							r += `<br>${slave.slaveName}'s eyewear has been removed.`;
+						}
+					}
+					break;
+
+				case "blur with contacts":
+					if (slave.eyes > -1) {
+						if (slave.eyewear != "blurring contacts") {
+							slave.eyewear = "blurring contacts";
+							V.cash -= V.modCost;
+							r += `<br>${slave.slaveName} has been given blurring contacts.`;
+						}
+					} else {
+						if (slave.eyewear != "none") {
+							slave.eyewear = "none";
+							r += `<br>Since ${slave.slaveName}'s eyewear has been removed.`;
+						}
+					}
+					break;
+
+				case "universal glasses":
+					if (slave.eyes == -1) {
+						if (slave.eyewear != "corrective glasses") {
+							slave.eyewear = "corrective glasses";
+							V.cash -= V.modCost;
+							r += `<br>${slave.slaveName} has been given corrective glasses.`;
+						}
+					} else {
+						if (slave.eyewear != "glasses") {
+							slave.eyewear = "glasses";
+							V.cash -= V.modCost;
+							r += `<br>${slave.slaveName} has been given decorative glasses.`;
+						}
+					}
+					break;
+
+				default:
+					if (slave.eyewear != "none") {
+						slave.eyewear = "none";
+						r += `<br>${slave.slaveName}'s eyewear has been removed.`;
+					}
+					break;
+			}
+		}
+	}
+
+	function ProcessDildos(slave, rule) {
+		// apply vaginal dildos to slave
+		if (slave.vagina === 0)
+			ProcessVVirginDildos(slave, rule);
+		else if ((slave.vagina > 0) && (slave.anus === 0))
+			ProcessAVirginDildos(slave, rule);
+		else if (slave.vagina > 0)
+			ProcessNonVirginDildos(slave, rule);
+	}
+
+	function ProcessVVirginDildos(slave, rule) {
+		// apply vaginal dildos to varginal virgins
+		if ((rule.virginAccessory !== undefined) && (rule.virginAccessory !== "no default setting")) {
+			if (slave.vaginalAccessory !== rule.virginAccessory) {
+				slave.vaginalAccessory = rule.virginAccessory;
+				switch (slave.vaginalAccessory) {
+					case "huge dildo":
+						r += `<br>${slave.slaveName} is a virgin and has been given a`;
+						if (slave.vagina >= 2)
+							r += `massive dildo to permanently gape her cunt.`;
+						else {
+							r += `large dildo for her pussy, since it must be stretched before it can accommodate a huge one.`;
+							slave.vaginalAccessory = "large dildo";
+						}
+						break;
+
+					case "long dildo":
+						if (slave.breedingMark == 1) {
+							r += `<br>Breeding regulations forbid the use of cervix penetrating dildos on marked slaves, so the virgin ${slave.slaveName} has been given a standard length dildo for her pussy.`;
+							slave.vaginalAccessory = "dildo";
+						}
+						break;
+
+					case "long, large dildo":
+						if (slave.breedingMark == 1) {
+							r += `<br>Breeding regulations forbid the use of cervix penetrating dildos on marked slaves, so the virgin ${slave.slaveName} has been given a standard length large dildo for her pussy.`;
+							slave.vaginalAccessory = "large dildo";
+						}
+						break;
+
+					case "long, huge dildo":
+						if (slave.breedingMark == 1) {
+							r += `<br>Breeding regulations forbid the use of cervix penetrating dildos on marked slaves, so the virgin ${slave.slaveName} has been given a standard length huge dildo for her pussy.`;
+							slave.vaginalAccessory = "huge dildo";
+						} else {
+							r += `<br>slave.slaveName is a virgin and has been given a`;
+							if (slave.vagina >= 2)
+								r += `massive and oversized dildo to permanently gape her cunt.`;
+							else {
+								r += `long, large dildo for her pussy, since it must be stretched before it can accommodate a huge one.`;
+								slave.vaginalAccessory = "long, large dildo";
+							}
+						}
+						break;
+
+					case "none":
+						r += `<br>${slave.slaveName} is a virgin and has been instructed not to use a vaginal accessory.`;
+						break;
+
+					default:
+						r += `<br>${slave.slaveName} is a virgin and has been given a ${slave.vaginalAccessory} for her pussy.`;
+						break;
+				}
+			}
+		}
+	}
+
+	function ProcessAVirginDildos(slave, rule) {
+		// apply vaginal dildos to anal virgins
+		if ((rule.aVirginAccessory !== undefined) && (rule.aVirginAccessory !== "no default setting")) {
+			if (slave.vaginalAccessory !== rule.aVirginAccessory) {
+				slave.vaginalAccessory = rule.aVirginAccessory;
+				switch (slave.vaginalAccessory) {
+					case "huge dildo":
+						r += `<br>${slave.slaveName} is a virgin and has been given a`;
+						if (slave.vagina >= 2)
+							r += `massive dildo to permanently gape her cunt.`;
+						else {
+							r += `large dildo for her pussy, since it must be stretched before it can accommodate a huge one.`;
+							slave.vaginalAccessory = "large dildo";
+						}
+						break;
+
+					case "long dildo":
+						if (slave.breedingMark == 1) {
+							r += `<br>Breeding regulations forbid the use of cervix penetrating dildos on marked slaves, so the virgin ${slave.slaveName} has been given a standard length dildo for her pussy.`;
+							slave.vaginalAccessory = "dildo";
+						}
+						break;
+
+					case "long, large dildo":
+						if (slave.breedingMark == 1) {
+							r += `<br>Breeding regulations forbid the use of cervix penetrating dildos on marked slaves, so the virgin ${slave.slaveName} has been given a standard length large dildo for her pussy.`;
+							slave.vaginalAccessory = "large dildo";
+						}
+						break;
+
+					case "long, huge dildo":
+						if (slave.breedingMark == 1) {
+							r += `<br>Breeding regulations forbid the use of cervix penetrating dildos on marked slaves, so the virgin ${slave.slaveName} has been given a standard length huge dildo for her pussy.`;
+							slave.vaginalAccessory = "huge dildo";
+						} else {
+							r += `<br>${slave.slaveName} is a virgin and has been given a`;
+							if (slave.vagina >= 2)
+								r += `massive and oversized dildo to permanently gape her cunt.`;
+							else {
+								r += `long, large dildo for her pussy, since it must be stretched before it can accommodate a huge one.`;
+								slave.vaginalAccessory = "long, large dildo";
+							}
+						}
+						break;
+
+					case "none":
+						r += `<br>slave.slaveName is a virgin and has been instructed not to use a vaginal accessory.`;
+						break;
+
+					default:
+						r += `<br>slave.slaveName is a virgin and has been given a slave.vaginalAccessory for her pussy.`;
+						break;
+				}
+			}
+		}
+	}
+
+	function ProcessNonVirginDildos(slave, rule) {
+		// apply vaginal dildos to non-virgins
+		if ((rule.vaginalAccessory !== undefined) && (rule.vaginalAccessory !== "no default setting")) {
+			if (slave.vaginalAccessory !== rule.vaginalAccessory) {
+				slave.vaginalAccessory = rule.vaginalAccessory;
+				switch (slave.vaginalAccessory) {
+					case "huge dildo":
+						r += `<br>${slave.slaveName} has been given a`;
+						if (slave.vagina >= 2)
+							r += `massive dildo to permanently gape her cunt.`;
+						else {
+							r += `large dildo for her pussy, since it must be stretched before it can accommodate a huge one.`;
+							slave.vaginalAccessory = "large dildo";
+						}
+						break;
+
+					case "long dildo":
+						if (slave.breedingMark == 1) {
+							r += `<br>Breeding regulations forbid the use of cervix penetrating dildos on marked slaves, so ${slave.slaveName} has been given a standard length dildo for her pussy.`;
+							slave.vaginalAccessory = "dildo";
+						}
+						break;
+
+					case "long, large dildo":
+						if (slave.breedingMark == 1) {
+							r += `<br>Breeding regulations forbid the use of cervix penetrating dildos on marked slaves, so ${slave.slaveName} has been given a standard length large dildo for her pussy.`;
+							slave.vaginalAccessory = "large dildo";
+						}
+						break;
+
+					case "long, huge dildo":
+						if (slave.breedingMark == 1) {
+							r += `<br>Breeding regulations forbid the use of cervix penetrating dildos on marked slaves, so ${slave.slaveName} has been given a standard length huge dildo for her pussy.`;
+							slave.vaginalAccessory = "huge dildo";
+						} else {
+							r += `<br>${slave.slaveName} has been given a`;
+							if (slave.vagina >= 2)
+								r += `massive and oversized dildo to permanently gape her cunt.`;
+							else {
+								r += `long, large dildo for her pussy, since it must be stretched before it can accommodate a huge one.`;
+								slave.vaginalAccessory = "long, large dildo";
+							}
+						}
+						break;
+					case "none":
+						r += `<br>${slave.slaveName} has been instructed not to use a vaginal accessory.`;
+						break;
+
+					default:
+						r += `<br>${slave.slaveName} has been given a slave.vaginalAccessory for her pussy.`;
+						break;
+				}
+			}
+		}
+	}
+
+	function ProcessDickAccessories(slave, rule) {
+		// apply dick accessories to slave
+		if ((slave.dick > 0)) {
+			if (slave.anus === 0) {
+				if ((rule.aVirginDickAccessory !== undefined) && (rule.aVirginDickAccessory !== "no default setting")) {
+					if ((slave.dickAccessory !== rule.aVirginDickAccessory)) {
+						slave.dickAccessory = rule.aVirginDickAccessory;
+						if (slave.dickAccessory == "none")
+							r += `<br>${slave.slaveName} is a virgin and has been instructed not to wear a dick accessory.`;
+						else
+							r += `<br>${slave.slaveName} is a virgin and has been given a ${slave.dickAccessory} accessory for her cock.`;
+					}
+				}
+			} else {
+				if ((rule.dickAccessory !== undefined) && (rule.dickAccessory !== "no default setting")) {
+					if ((slave.dickAccessory !== rule.dickAccessory)) {
+						slave.dickAccessory = rule.dickAccessory;
+						if (slave.dickAccessory == "none")
+							r += `<br>${slave.slaveName} has been instructed not to wear a dick accessory.`;
+						else
+							r += `<br>${slave.slaveName} has been given a slave.dickAccessory accessory for her cock.`;
+					}
+				}
+			}
+		}
+	}
+
+	function ProcessShoes(slave, rule) {
+		// apply shoes to slave
+		if ((rule.shoes !== undefined) && (rule.shoes !== "no default setting")) {
+			if ((slave.shoes !== rule.shoes)) {
+				if ((slave.amp != 1)) {
+					slave.shoes = rule.shoes;
+					r += `<br>${slave.slaveName}'s shoes have been set to ${slave.shoes}.`;
+				}
+			}
+		}
+	}
+
+	function ProcessBellyAccessories(slave, rule) {
+		// apply belly accessories to slave
+		if ((rule.bellyAccessory !== undefined) && (rule.bellyAccessory !== "no default setting")) {
+			if ((slave.bellyAccessory !== rule.bellyAccessory)) {
+				if ((slave.belly >= 1500 || slave.weight >= 130) && setup.fakeBellies.includes(rule.bellyAccessory)) {
+					r += `<br>${slave.slaveName}'s natural belly is too big to properly wear an empathy belly.`;
+					slave.bellyAccessory = "none";
+				} else {
+					slave.bellyAccessory = rule.bellyAccessory;
+					if (slave.bellyAccessory == "none")
+						r += `<br>${slave.slaveName} has been instructed not to wear a torso accessory.`;
+					else
+						r += `<br>${slave.slaveName} has been given ${slave.bellyAccessory} to wear.`;
+				}
+			}
+		}
+	}
+
+	function ProcessAnalAccessories(slave, rule) {
+		// apply buttplugs to slave
+		if ((slave.vaginalAccessory !== "anal chastity") && (slave.vaginalAccessory !== "combined chastity") && (slave.dickAccessory !== "anal chastity") && (slave.dickAccessory !== "combined chastity")) {
+			if (slave.anus === 0)
+				ProcessAnalVirginButtplugs(slave, rule);
+			else
+				ProcessNonVirginButtplugs(slave, rule);
+		}
+	}
+
+	function ProcessAnalVirginButtplugs(slave, rule) {
+		// apply buttplugs to virgins
+		if ((rule.aVirginButtplug !== undefined) && (rule.aVirginButtplug !== "no default setting")) {
+			if ((slave.buttplug !== rule.aVirginButtplug)) {
+				slave.buttplug = rule.aVirginButtplug;
+				switch (slave.buttplug) {
+					case "huge plug":
+						r += `<br>${slave.slaveName} is an anal virgin and has been given a`;
+						if ((slave.anus >= 2))
+							r += `massive plug to permanently gape her asshole.`;
+						else {
+							slave.buttplug = "large plug";
+							r += `large buttplug for her asshole, since it must be stretched before it can accommodate a huge one.`;
+						}
+						break;
+
+					case "long plug":
+						if (slave.breedingMark == 1) {
+							r += `<br>Breeding regulations forbid the use of anal plugs that can damage a growing fetus on marked slaves, so the anal virgin ${slave.slaveName} has been given a standard length plug for her anus.`;
+							slave.buttplug = "plug";
+						}
+						break;
+
+					case "long, large plug":
+						if (slave.breedingMark == 1) {
+							r += `<br>Breeding regulations forbid the use of anal plugs that can damage a growing fetus on marked slaves, so the anal virgin ${slave.slaveName} has been given a standard length large plug for her anus.`;
+							slave.buttplug = "large plug";
+						}
+						break;
+
+					case "long, huge plug":
+						if (slave.breedingMark == 1) {
+							r += `<br>Breeding regulations forbid the use of anal plugs that can damage a growing fetus on marked slaves, so the anal virgin ${slave.slaveName} has been given a standard length huge plug for her anus.`;
+							slave.buttplug = "huge plug";
+						} else {
+							r += `<br>slave.slaveName is an anal virgin and has been given a`;
+							if (slave.anus >= 2)
+								r += `massive and oversized plug to permanently gape her asshole.`;
+							else {
+								r += `long, large buttplug for her asshole, since it must be stretched before it can accommodate a huge one.`;
+								slave.buttplug = "long, large plug";
+							}
+						}
+						break;
+
+					case "none":
+						r += `<br>${slave.slaveName} is an anal virgin and has been instructed not to use an anal accessory.`;
+						break;
+
+					default:
+						r += `<br>${slave.slaveName} is an anal virgin and has been given a slave.buttplug for her asshole.`;
+						break;
+				}
+			}
+		}
+	}
+
+	function ProcessNonVirginButtplugs(slave, rule) {
+		// apply buttplugs to non-virgins
+		if ((rule.buttplug !== undefined) && (rule.buttplug !== "no default setting")) {
+			if ((slave.buttplug !== rule.buttplug)) {
+				slave.buttplug = rule.buttplug;
+				switch (slave.buttplug) {
+					case "huge plug":
+						r += `<br>${slave.slaveName} has been given a`;
+						if ((slave.anus >= 2))
+							r += `massive plug to permanently gape her asshole.`;
+						else {
+							slave.buttplug = "large plug";
+							r += `large buttplug for her asshole, since it must be stretched before it can accommodate a huge one.`;
+						}
+						break;
+
+					case "long plug":
+						if (slave.breedingMark == 1) {
+							r += `<br>Breeding regulations forbid the use of anal plugs that can damage a growing fetus on marked slaves, so ${slave.slaveName} has been given a standard length plug for her anus.`;
+							slave.buttplug = "plug";
+						}
+						break;
+						
+					case "long, large plug":
+						if (slave.breedingMark == 1) {
+							r += `<br>Breeding regulations forbid the use of anal plugs that can damage a growing fetus on marked slaves, so ${slave.slaveName} has been given a standard length large plug for her anus.`;
+							slave.buttplug = "large plug";
+						}
+						break;
+
+					case "long, huge plug":
+						if (slave.breedingMark == 1) {
+							r += `<br>Breeding regulations forbid the use of anal plugs that can damage a growing fetus on marked slaves, so ${slave.slaveName} has been given a standard length huge plug for her anus.`;
+							slave.buttplug = "huge plug";
+						} else {
+							r += `<br>${slave.slaveName} has been given a`;
+							if (slave.anus >= 2)
+								r += `massive and oversized plug to permanently gape her asshole.`;
+							else {
+								r += `long, large buttplug for her asshole, since it must be stretched before it can accommodate a huge one.`;
+								slave.buttplug = "long, large plug";
+							}
+						}
+						break;
+
+					case "none":
+						r += `<br>${slave.slaveName} has been instructed not to use an anal accessory.`;
+						break;
+
+					default:
+						r += `<br>${slave.slaveName} has been given a slave.buttplug for her asshole.`;
+						break;
+				}
+			}
+		}
+	}
+
+	function ProcessBellyImplant(slave, rule) {
+		// Here is belly implant size control, it's used in Surgery Degradation passage to setup devotion and trust changes.
+		// silent calls to surgery degradation have been replaced with a js function, which is less hacky
+		if ((rule.bellyImplantVol !== undefined) && slave.bellyImplant >= 0 && rule.bellyImplantVol >= 0) {
+			r += "<br>";
+			if (slave.health > -10 ) {
+				let diff = rule.bellyImplantVol - slave.bellyImplant;
+				if (diff >= 5000 && slave.bellyPain === 0 && slave.health > 50) {
+					r += `${slave.slaveName}'s belly is way too small, so she has been directed to have intensive belly implant filling procedures throughout this week.`;
+					slave.bellyImplant += 1000;
+					slave.bellyPain += 2;
+					BellySurgery(slave, diff);
+				} else if (diff >= 500 && slave.bellyPain < 2 ) {
+					r += `${slave.slaveName}'s belly has not reached the desired size, so she has been directed to have belly implant filling procedures throughout this week.`;
+					slave.bellyImplant += 500;
+					slave.bellyPain += 1;
+					BellySurgery(slave, diff);
+				} else if (diff <= -5000 ) {
+					r += `${slave.slaveName}'s belly is way too big, so she has been directed to have intensive belly implant draining procedures throughout this week.`;
+					slave.bellyImplant -= 1000;
+					BellySurgery(slave, diff);
+				} else if (diff <= -500 ) {
+					r += `${slave.slaveName}'s belly is too big, so she has been directed to have belly implant draining procedures throughout this week.`;
+					slave.bellyImplant -= 500;
+					BellySurgery(slave, diff);
+				}
+			} else {
+				r += `${slave.slaveName} is not healthy enough to safely adjust her belly implant.`;
+			}
+		}
+	}
+
+	function BellySurgery(slave, volume) {
+		// this is a port of the belly implant portion of surgeryDegradation.tw
+		// that way, we don't have to use ugly hacks
+		// the original still exists, and may be worth replacing
+		if (volume > 0) { // bellyUp
+			SetBellySize(slave);
+			if (slave.bellyPain === 1) {
+				if (slave.devotion > 50) {
+					slave.devotion += 4;
+				} else if (slave.devotion >= -20) {
+					slave.trust -= 5;
+				} else {
+					slave.trust -= 10;
+					slave.devotion -= 5;
+				}
+			} else if (slave.bellyPain === 2) {
+				if (slave.devotion > 50) {
+					slave.devotion += 2;
+				} else if (slave.devotion >= -20) {
+					slave.trust -= 7;
+				} else {
+					slave.trust -= 12;
+					slave.devotion -= 7;
+				}
+			}
+		} else { // bellyDown
+			if (slave.bellyImplant < 0)
+				slave.bellyImplant = 0;
+			SetBellySize(slave);
+			if (slave.devotion > 50) {
+				slave.devotion += 3;
+				slave.trust += 3;
+			} else if (slave.devotion >= -20) {
+				slave.trust += 2;
+			} else {
+				slave.devotion += 1;
+				slave.trust -= 10;
+			}
+		}
+	}
+
+	function ProcessFertilityDrugs(slave, rule) {
+		// Fertility 
+		if ((rule.preg !== undefined) && (rule.preg !== "no default setting")) {
+			if ((rule.preg == -1)) {
+				if (slave.preg !== -1) {
+					r += `<br>${slave.slaveName} is fertile, so she has been put on the appropriate contraceptive regime.`;
+					slave.preg = -1;
+				}
+				if (slave.drugs == "fertility drugs" || slave.drugs == "super fertility drugs") {
+					slave.drugs = "no drugs";
+				}
+			} else if ((rule.preg === 0)) {
+				if (slave.preg !== 0) {
+					r += `<br>${slave.slaveName} is fertile, so she has been taken off contraceptives.`;
+					slave.preg = 0;
+				}
+				if (slave.drugs == "fertility drugs" || slave.drugs == "super fertility drugs") {
+					slave.drugs = "no drugs";
+				}
+			} else if ((rule.preg == 1)) {
+				if (slave.preg !== 0 || slave.drugs !== "fertility drugs" || slave.hormones !== 0) {
+					slave.preg = 0;
+					slave.drugs = "fertility drugs";
+					slave.hormones = 0;
+					r += `<br>${slave.slaveName} is fertile, so she has been put on the appropriate fertility regime.`;
+				}
+			} else if ((rule.preg == 2)) {
+				if (slave.preg !== 0 || slave.drugs !== "fertility drugs" || slave.hormones !== 2) {
+					slave.preg = 0;
+					slave.drugs = "fertility drugs";
+					slave.hormones = 2;
+					r += `<br>${slave.slaveName} is fertile, so she has been put on the appropriate fertility regime.`;
+				}
+			} else if ((rule.preg == 3) && slave.indentureRestrictions < 1) {
+				if (slave.preg !== 0 || slave.drugs !== "super fertility drugs" || slave.hormones !== 0) {
+					slave.preg = 0;
+					slave.drugs = "super fertility drugs";
+					slave.hormones = 0;
+					r += `<br>${slave.slaveName} is fertile, so she has been put on the appropriate fertility regime.`;
+				}
+			} else if ((rule.preg == 4) && slave.indentureRestrictions < 1) {
+				if (slave.preg !== 0 || slave.drugs !== "super fertility drugs" || slave.hormones !== 2) {
+					slave.preg = 0;
+					slave.drugs = "super fertility drugs";
+					slave.hormones = 2;
+					r += `<br>${slave.slaveName} is fertile, so she has been put on the appropriate fertility regime.`;
+				}
+			}
+		}
+	}
+
+	function ProcessAssetGrowthDrugs(slave, rule) {
+		// Asset Growth 
+		const growth_drugs = new Set(["breast injections", "intensive breast injections", "breast redistributors", "butt injections", "intensive butt injections", "butt redistributors", "lip injections", "lip atrophiers", "penis enhancement", "intensive penis enhancement", "penis atrophiers", "testicle enhancement", "intensive testicle enhancement", "testicle atrophiers", "hyper breast injections", "hyper butt injections", "hyper penis enhancement", "hyper testicle enhancement"]);
+		if ((slave.drugs == "super fertility drugs" || slave.drugs == "fertility drugs") && isFertile(slave)) {
+			r += `<br>slave.slaveName is on slave.drugs and will not be considered for drug enhancement until that regime is complete.`;
+			return;
+		} else if ((rule.growth_boobs == "no default setting" && rule.growth_butt == "no default setting" && rule.growth_lips == "no default setting" && rule.growth_dick == "no default setting" && rule.growth_dick == "no default setting" && rule.growth_balls == "no default setting")) {
+			return;
+		}
+		if (slave.assignmentVisible) { // More resource intensive version with prioritizing. Possible to give this a toggle rather than basing it on visibility. 
+			let _priorities = [];
+			if (rule.growth_boobs != "no default setting") {
+				let _priority;
+				if (slave.boobs < rule.growth_boobs) {
+					_priority = {drug: "breast injections", weight: (rule.growth_boobs-slave.boobs)/rule.growth_boobs};
+					_priorities.push(_priority);
+				} else if ((slave.boobs > rule.growth_boobs+200) && slave.weight < 100 && (V.arcologies[0].FSSlimnessEnthusiastResearch == 1)) {
+					_priority = {
+						drug: "breast redistributors",
+						weight: (1+((slave.boobs-slave.boobsImplant-rule.growth_boobs)/rule.growth_boobs)) };
+					_priorities.push(_priority);
+				}
+			}
+			if (rule.growth_butt != "no default setting") {
+				let _priority;
+				if (slave.butt < rule.growth_butt) {
+					_priority = {drug: "butt injections", weight: (rule.growth_butt-slave.butt)/rule.growth_butt};
+					_priorities.push(_priority);
+				} else if ((Math.trunc(slave.butt) > rule.growth_butt) && slave.weight < 100 && (V.arcologies[0].FSSlimnessEnthusiastResearch == 1)) {
+					_priority = {
+						drug: "butt redistributors",
+						weight: (1+((slave.butt-slave.buttImplant-rule.growth_butt)/rule.growth_butt)) };
+					_priorities.push(_priority);
+				}
+			}
+			if (rule.growth_lips != "no default setting") {
+				let _priority;
+				if (slave.lips < rule.growth_lips) {
+					_priority = {drug: "lip injections", weight: (rule.growth_lips-slave.lips)/rule.growth_lips};
+					_priorities.push(_priority);
+				} else if ((slave.lips > rule.growth_lips) && (V.arcologies[0].FSSlimnessEnthusiastResearch == 1)) {
+					_priority = {
+						drug: "lip atrophiers",
+						weight: (1+((slave.lips-slave.lipsImplant-rule.growth_lips)/rule.growth_lips))};
+					_priorities.push(_priority);
+				}
+			}
+			if (rule.growth_dick != "no default setting" && slave.dick) {
+				let _priority;
+				if (slave.dick < rule.growth_dick) {
+					_priority = {drug: "penis enhancement", weight: (rule.growth_dick-slave.dick)/rule.growth_dick};
+					_priorities.push(_priority);
+				} else if ((slave.dick > rule.growth_dick) && (V.arcologies[0].FSSlimnessEnthusiastResearch == 1)) {
+					_priority = {
+						drug: "penis atrophiers",
+						weight: (1+((slave.dick-rule.growth_dick)/rule.growth_dick))};
+					_priorities.push(_priority);
+				}
+			}
+			if (rule.growth_balls != "no default setting" && slave.balls) {
+				let _priority;
+				if (slave.balls < rule.growth_balls) {
+					_priority = {drug: "testicle enhancement", weight: (rule.growth_balls-slave.balls)/rule.growth_balls};
+					_priorities.push(_priority);
+				} else if ((slave.balls > rule.growth_balls) && (V.arcologies[0].FSSlimnessEnthusiastResearch == 1)) {
+					_priority = {
+						drug: "testicle atrophiers",
+						weight: (1+((slave.balls-rule.growth_balls)/rule.growth_balls))};
+					_priorities.push(_priority);
+				}
+			}
+			if (_priorities.length > 1) {
+				_priorities = _priorities.sort(function(a, b){if(a.weight > b.weight) return -1; if(a.weight < b.weight) return 1; return 0;});
+				if (slave.drugs != _priorities[0].drug) {
+					slave.drugs = _priorities[0].drug;
+					r += `<br>${slave.slaveName} has been put on `;
+					if (rule.growth_intensity && slave.drugs != "lip injections" && slave.health > 0) {
+						slave.drugs = "intensive " + slave.drugs;
+						r += `${slave.drugs}, since she's healthy enough to take them, and `;
+					} else {
+						r += `${slave.drugs}, since`;
+					}
+					r += `that part of her body is ${Math.trunc(_priorities[0].weight*100)}>>% `;
+					if (_priorities[0].weight < 1) r+= "below ";
+					else r+= "above ";
+					r += "the targeted size.";
+				}
+				return;
+			} else if (_priorities.length > 0) {
+				if (slave.drugs != _priorities[0].drug) {
+					slave.drugs = _priorities[0].drug;
+					r += `<br>${slave.slaveName} has been put on `;
+					if (rule.growth_intensity && slave.drugs != "lip injections" && slave.health > 0) {
+						slave.drugs = "intensive " + slave.drugs;
+						r += `${slave.drugs}, since she's healthy enough to take them, and `;
+					} else
+						r += `${slave.drugs}, since `;
+					r += `that is the only part of her body that does not meet the targeted size.`;
+				}
+				return;
+			} else if (growth_drugs.has(slave.drugs)) {
+				slave.drugs = "no drugs";
+				r += `<br>${slave.slaveName}'s body has met all relevant growth targets, so her pharmaceutical regime has been ended.`;
+				return;
+			}
+		} else {
+			let _hyper;
+			if (V.arcologies[0].FSAssetExpansionistResearch == 1)
+				_hyper = "hyper ";
+			else
+				_hyper = "";
+			if (rule.growth_boobs != "no default setting") {
+				if (slave.boobs < rule.growth_boobs) {
+					if (slave.drugs != _hyper + "breast injections") {
+						slave.drugs = _hyper + "breast injections";
+						r += `<br>${slave.slaveName} has been put on ${slave.drugs}.`;
+					}
+					return;
+				}
+			}
+			if (rule.growth_butt != "no default setting") {
+				if (slave.butt < rule.growth_butt) {
+					if (slave.drugs != _hyper + "butt injections") {
+						slave.drugs = _hyper + "butt injections";
+						r += `<br>${slave.slaveName} has been put on ${slave.drugs}.`;
+					}
+					return;
+				}
+			}
+			if (rule.growth_lips != "no default setting") {
+				if (slave.lips < rule.growth_lips) {
+					if (slave.drugs != "lip injections") {
+						slave.drugs = "lip injections";
+						r += `<br>${slave.slaveName} has been put on ${slave.drugs}.`;
+					}
+					return;
+				}
+			}
+			if (rule.growth_dick != "no default setting" && slave.dick) {
+				if (slave.dick < rule.growth_dick) {
+					if (slave.drugs != _hyper + "penis enhancement") {
+						slave.drugs = _hyper + "penis enhancement";
+						r += `<br>${slave.slaveName} has been put on ${slave.drugs}.`;
+					}
+					return;
+				}
+			}
+			if (rule.growth_balls != "no default setting" && slave.balls) {
+				if (slave.balls < rule.growth_balls) {
+					if (slave.drugs != _hyper + "testicle enhancement") {
+						slave.drugs = _hyper + "testicle enhancement";
+						r += `<br>${slave.slaveName} has been put on ${slave.drugs}.`;
+					}
+					return;
+				}
+			}
+			if (V.arcologies[0].FSSlimnessEnthusiastResearch == 1) {
+				if (rule.growth_boobs != "no default setting") {
+					if (slave.boobs-slave.boobsImplant > rule.growth_boobs+200 && slave.weight < 100) {
+						if (slave.drugs != "breast redistributors") {
+							slave.drugs = "breast redistributors";
+							r += `<br>${slave.slaveName} has been put on ${slave.drugs}.`;
+						}
+						return;
+					}
+				}
+				if (rule.growth_butt != "no default setting") {
+					if (Math.trunc(slave.butt-slave.buttImplant) > rule.growth_butt && slave.weight < 100) {
+						if (slave.drugs != "butt redistributors") {
+							slave.drugs = "butt redistributors";
+							r += `<br>${slave.slaveName} has been put on ${slave.drugs}.`;
+						}
+						return;
+					}
+				}
+				if (rule.growth_lips != "no default setting") {
+					if (slave.lips-slave.lipsImplant > rule.growth_lips) {
+						if (slave.drugs != "lip atrophiers") {
+							slave.drugs = "lip atrophiers";
+							r += `<br>${slave.slaveName} has been put on ${slave.drugs}.`;
+						}
+						return;
+					}
+				}
+				if (rule.growth_dick != "no default setting" && slave.dick) {
+					if (slave.dick > rule.growth_dick) {
+						if (slave.drugs != "penis atrophiers") {
+							slave.drugs = "penis atrophiers";
+							r += `<br>${slave.slaveName} has been put on ${slave.drugs}.`;
+						}
+						return;
+					}
+				}
+				if (rule.growth_balls != "no default setting" && slave.balls) {
+					if (slave.balls > rule.growth_balls) {
+						if (slave.drugs != "testicle atrophiers") {
+							slave.drugs = "testicle atrophiers";
+							r += `<br>${slave.slaveName} has been put on ${slave.drugs}.`;
+						}
+						return;
+					}
+				}
+			}
+			if (growth_drugs.has(slave.drugs)) {
+				slave.drugs = "no drugs";
+				r += `<br>${slave.slaveName} has met all relevant growth targets, so her pharmaceutical regime has been ended.`;
+				return;
+			}
+		}
+	}
+
+	function ProcessOtherDrugs(slave, rule) {
+		// Other Drugs 
+		const drugs = new Set(["psychosuppressants", "no drugs", "steroids", "hormone enhancers", "hormone blockers", "anti-aging cream", "growth stimulants", "sag-B-gone", "male hormone injections", "female hormone injections", "none"]);
+		if (drugs.has(rule.drug)) {
+			if (drugs.has(slave.drugs) && (slave.drugs != rule.drug)) {
+				switch (rule.drug) {
+				case "anti-aging cream":
+					if (slave.visualAge > 18) {
+						slave.drugs = rule.drug ;
+						r += `<br>${slave.slaveName} has been put on ${slave.drugs}.`;
+					} else {
+						slave.drugs = "no drugs" ;
+						r += `<br>${slave.slaveName} cannot benefit from her assigned drug and has been defaulted to ${slave.drugs}.`;
+					}
+					break;
+
+				case "growth stimulants":
+					if (slave.height < 274 && slave.height < Math.clamp((Height.mean(slave) * 1.25),0,274)) {
+						slave.drugs = rule.drug;
+						r += `<br>${slave.slaveName} has been put on ${slave.drugs}.`;
+					} else {
+						slave.drugs = "no drugs" ;
+						r += `<br>${slave.slaveName} cannot benefit from her assigned drug and has been defaulted to ${slave.drugs}.`;
+					}
+					break;
+
+				case "sag-B-gone":
+					if (slave.boobs > 250 && slave.boobShape != "saggy") {
+						slave.drugs = rule.drug;
+						r += `<br>${slave.slaveName} has been put on ${slave.drugs}.`;
+					} else {
+						slave.drugs = "no drugs";
+						r += `<br>${slave.slaveName} cannot benefit from her assigned drug and has been defaulted to ${slave.drugs}.`;
+					}
+					break;
+
+				case "female hormone injections":
+					if (slave.breedingMark != 1 && (slave.ovaries == 1 || slave.mpreg == 1) && slave.pubertyXX === 0) {
+						slave.drugs = rule.drug ;
+						r += `<br>${slave.slaveName} has been put on ${slave.drugs}.`;
+					} else {
+						slave.drugs = "no drugs" ;
+						r += `<br>${slave.slaveName} cannot benefit from her assigned drug and has been defaulted to ${slave.drugs}.`;
+					}
+					break;
+
+				case "male hormone injections":
+					if (slave.breedingMark != 1 && slave.balls > 0 && slave.pubertyXY === 0) {
+						slave.drugs = rule.drug ;
+						r += `<br>${slave.slaveName} has been put on ${slave.drugs}.`;
+					} else {
+						slave.drugs = "no drugs" ;
+						r += `<br>${slave.slaveName} cannot benefit from her assigned drug and has been defaulted to ${slave.drugs}.`;
+					}
+					break;
+
+				default:
+					slave.drugs = rule.drug ;
+					r += `<br>${slave.slaveName} has been put on ${slave.drugs}.`;
+					break;
+				}
+			}
+		}
+	}
+
+	function ProcessDiet(slave, rule) {
+		// Diet Setting 
+		if ((rule.diet !== undefined) && (rule.diet !== "no default setting")) {
+			/*
+			if ((slave.boobs >= 1600) && (slave.muscles <= 5) && (slave.amp != 1) && ((rule.muscles == "no default setting") || (rule.muscles === 0))) {
+				if ((slave.diet !== "muscle building")) {
+					slave.diet = "muscle building"
+					r += `<br>${slave.slaveName} has big tits and no back muscles, so she's been assigned to gain some.`
+				}
+			} else if ((slave.boobs >= 1600) && (slave.muscles > 5) && (slave.diet == "muscle building") && ((rule.muscles == "no default setting") || (rule.muscles === 0))) {
+			*/
+			if ((slave.boobs >= 1600) && (slave.muscles > 5) && (slave.diet == "muscle building") && ((rule.muscles == "no default setting") || (rule.muscles === 0))) {
+				slave.diet = "healthy";
+				r += `<br>${slave.slaveName} has huge boobs, but she already has the back muscles to bear them, so she's been assigned to stop working out so hard.`;
+			} else if ((rule.dietGrowthSupport == 1) && ((slave.drugs == "breast injections") || (slave.drugs == "butt injections")) && (slave.weight <= 95)) {
+				if (slave.diet !== "fattening") {
+					slave.diet = "fattening";
+					r += `<br>${slave.slaveName} is on drugs designed to expand major body parts, so she's been put on a fattening diet to provide her body as much fuel for growth as possible.`;
+				}
+			} else {
+				if (!(isNaN(rule.diet))) {
+					if ((slave.weight > rule.diet)) {
+						if ((slave.diet !== "restricted")) {
+							slave.diet = "restricted";
+							r += `<br>${slave.slaveName} is too fat so her diet has been set to restricted.`;
+						}
+						if ((V.arcologies[0].FSSlimnessEnthusiastResearch == 1 && (slave.drugs == "no drugs" || slave.drugs == "none"))) {
+							slave.drugs = "appetite suppressors";
+							r += `<br>${slave.slaveName} is too fat so she will be given weight loss pills.`;
+						}
+					} else if ((slave.weight < rule.diet)) {
+						if ((slave.diet !== "fattening")) {
+							slave.diet = "fattening";
+							r += `<br>${slave.slaveName} is too skinny so her diet has been set to fattening.`;
+						}
+						if ((slave.drugs == "appetite suppressors")) {
+							slave.drugs = "no drugs";
+							r += `<br>${slave.slaveName} is too skinny so she will no longer be given weight loss pills.`;
+						}
+					} else if ((rule.muscles !== undefined) && (rule.muscles !== "no default setting") && (slave.amp != 1)) {
+						if ((slave.muscles >= rule.muscles+8)) {
+							if ((slave.diet !== "slimming")) {
+								slave.diet = "slimming";
+								r += `<br>${slave.slaveName} has been put on a slimming exercise regime.`;
+							}
+						} else if ((slave.muscles <= rule.muscles-2)) {
+							if ((slave.diet !== "muscle building")) {
+								slave.diet = "muscle building";
+								r += `<br>${slave.slaveName} has been put on a muscle building exercise regime.`;
+							}
+						} else {
+							if ((slave.diet !== "healthy")) {
+								slave.diet = "healthy";
+								r += `<br>${slave.slaveName} is at the target weight, so her diet has been normalized.`;
+							}
+						}
+					} else {
+						if ((slave.diet !== "healthy")) {
+							slave.diet = "healthy";
+							r += `<br>${slave.slaveName} is at the target weight, so her diet has been normalized.`;
+						}
+						if ((slave.drugs == "appetite suppressors")) {
+							slave.drugs = "no drugs";
+							r += `<br>${slave.slaveName} is at the target weight, so she will no longer be given weight loss pills.`;
+						}
+					}
+				} else if ((rule.diet == "attractive")) {
+					if (((slave.weight > 95) || ((slave.weight > 30) && (slave.hips < 2)))) {
+						if ((slave.diet !== "restricted")) {
+							slave.diet = "restricted";
+							r += `<br>${slave.slaveName} is too fat so her diet has been set to restricted.`;
+						}
+						if ((V.arcologies[0].FSSlimnessEnthusiastResearch == 1 && (slave.drugs == "no drugs" || slave.drugs == "none"))) {
+							slave.drugs = "appetite suppressors";
+							r += `<br>${slave.slaveName} is too fat so she will be given weight loss pills.`;
+						}
+					} else if (((slave.weight < -95) || ((slave.weight < -30) && (slave.hips > -2)))) {
+						if ((slave.diet !== "fattening")) {
+							slave.diet = "fattening";
+							r += `<br>${slave.slaveName} is too skinny so her diet has been set to fattening.`;
+						}
+						if ((slave.drugs == "appetite suppressors")) {
+							slave.drugs = "no drugs";
+							r += `<br>${slave.slaveName} is too skinny so she will no longer be given weight loss pills.`;
+						}
+					} else if ((rule.muscles !== undefined) && (rule.muscles !== "no default setting") && (slave.amp != 1)) {
+						if ((slave.muscles >= rule.muscles+8)) {
+							if ((slave.diet !== "slimming")) {
+								slave.diet = "slimming";
+								r += `<br>${slave.slaveName} has been put on a slimming exercise regime.`;
+							}
+						} else if ((slave.muscles <= rule.muscles-2)) {
+							if ((slave.diet !== "muscle building")) {
+								slave.diet = "muscle building";
+								r += `<br>${slave.slaveName} has been put on a muscle building exercise regime.`;
+							}
+						} else {
+							if ((slave.diet !== "healthy")) {
+								slave.diet = "healthy";
+								r += `<br>${slave.slaveName} is at the target weight, so her diet has been normalized.`;
+							}
+							if ((slave.drugs == "appetite suppressors")) {
+								slave.drugs = "no drugs";
+								r += `<br>${slave.slaveName} is at the target weight, so she will no longer be given weight loss pills.`;
+							}
+						}
+					} else {
+						if ((slave.diet !== "healthy")) {
+							slave.diet = "healthy";
+							r += `<br>${slave.slaveName} is at the target weight, so her diet has been normalized.`;
+						}
+						if ((slave.drugs == "appetite suppressors")) {
+							slave.drugs = "no drugs";
+							r += `<br>${slave.slaveName} is at the target weight, so she will no longer be given weight loss pills.`;
+						}
+					}
+				} else if ((rule.diet == "XX")) {
+					if ((slave.diet !== "XX")) {
+						slave.diet = "XX";
+						r += `<br>${slave.slaveName} has been put on a diet that favors feminine development.`;
+					}
+				} else if ((rule.diet == "XY")) {
+					if ((slave.diet !== "XY")) {
+						slave.diet = "XY";
+						r += `<br>${slave.slaveName} has been put on a diet that favors masculine development.`;
+					}
+				} else if ((rule.diet == "XXY")) {
+					if (slave.balls > 0 && (slave.ovaries == 1 || slave.mpreg == 1)) {
+						if ((slave.diet !== "XXY")) {
+							slave.diet = "XXY";
+							r += `<br>${slave.slaveName} has been put on a diet that enhances a herm's unique sexuality.`;
+						}
+					} else {
+						if ((slave.diet !== "healthy")) {
+							slave.diet = "healthy";
+							r += `<br>${slave.slaveName} has been put on a standard diet since she is not a hermaphrodite.`;
+						}
+					}
+				} else if ((rule.diet == "cleansing")) {
+					if (((slave.diet !== "cleansing") && (slave.health < 100))) {
+						slave.diet = "cleansing";
+						r += `<br>${slave.slaveName} has been put on a diet of cleansers.`;
+					}
+				} else if ((rule.diet == "fertility")) {
+					if (canGetPregnant(slave)) {
+						if ((slave.diet !== "fertility")) {
+							slave.diet = "fertility";
+							r += `<br>${slave.slaveName} has been put on a diet to enhance fertility.`;
+						}
+					} else {
+						if ((slave.diet !== "healthy")) {
+							slave.diet = "healthy";
+							if (slave.pregKnown === 0 && slave.preg > 0) {
+								r += `<br>${slave.slaveName} has been put on a standard diet since tests reveal she has become pregnant.`;
+								slave.pregKnown = 1;
+							} else {
+								r += `<br>${slave.slaveName} has been put on a standard diet since she is currently unable to become pregnant.`;
+							}
+						}
+					}
+				} else if ((rule.diet == "cum production")) {
+					if ((slave.balls > 0)) {
+						if ((slave.diet !== "cum production")) {
+							slave.diet = "cum production";
+							r += `<br>${slave.slaveName} has been put on a diet to promote cum production.`;
+						}
+					} else {
+						if ((slave.diet !== "healthy")) {
+							slave.diet = "healthy";
+							r += `<br>${slave.slaveName} has been put on a standard diet since she is no longer able to produce cum.`;
+						}
+					}
+				}
+			}
+		} else if ((rule.muscles !== undefined) && (rule.muscles !== "no default setting") && (slave.amp != 1)) { // no diet rule, muscles only 
+			if ((slave.muscles >= rule.muscles+8)) {
+				if ((slave.diet !== "slimming")) {
+					slave.diet = "slimming";
+					r += `<br>${slave.slaveName} has been put on a slimming exercise regime.`;
+				}
+			} else if ((slave.muscles <= rule.muscles-2)) {
+				if ((slave.diet !== "muscle building")) {
+					slave.diet = "muscle building";
+					r += `<br>${slave.slaveName} has been put on a muscle building exercise regime.`;
+				}
+			} else {
+				if ((slave.diet !== "healthy")) {
+					slave.diet = "healthy";
+					r += `<br>${slave.slaveName} has achieved the target musculature, so her exercise regime has been normalized.`;
+				}
+			}
+		}
+	}
+
+	function ProcessCuratives(slave, rule) {
+		if ((rule.curatives !== undefined) && (rule.curatives !== "no default setting")) {
+			if (slave.curatives !== rule.curatives) {
+				if (rule.curatives === 2) {
+					if (slave.health > 100) {
+						if ((slave.curatives != 1)) {
+							r += `<br>${slave.slaveName} has been put on preventatives, since curatives cannot improve her health further.`;
+							slave.curatives = 1;
+						}
+					} else {
+						r += `<br>${slave.slaveName} has been put on curatives.`;
+						slave.curatives = rule.curatives;
+					}
+				} else {
+					r += `<br>${slave.slaveName} has been ${rule.curatives > 0 ? `put on preventatives` : `taken off health drugs`}`;
+					slave.curatives = rule.curatives;
+				}
+			}
+		}
+	}
+
+	function ProcessAphrodisiacs(slave, rule) {
+		if ((rule.aphrodisiacs !== undefined) && (rule.aphrodisiacs != "no default setting")) {
+			if (slave.aphrodisiacs != rule.aphrodisiacs) {
+				r += `<br>${slave.slaveName} has been ${rule.aphrodisiacs > 0 ? `put on the proper` : `taken off`} aphrodisiacs.`;
+				slave.aphrodisiacs = rule.aphrodisiacs;
+			}
+		}
+	}
+
+	function ProcessPenisHormones(slave, rule) {
+		if ((slave.dick > 0)) {
+			if ((slave.balls === 0)) {
+				if ((rule.gelding !== undefined) && (rule.gelding !== "no default setting")) {
+					if ((slave.hormones !== rule.gelding)) {
+						const _oldHormones = slave.hormones;
+						slave.hormones = rule.gelding;
+						if (slave.indentureRestrictions >= 2) {
+							slave.hormones = Math.clamp(slave.hormones, -1, 1);
+						}
+						if (slave.hormones != _oldHormones) {
+							r += `<br>${slave.slaveName} is a gelding, so she has been put on the appropriate hormonal regime.`;
+						}
+					}
+				}
+			} else if ((slave.balls > 0)) {
+				if ((rule.XY !== undefined) && (rule.XY !== "no default setting")) {
+					if ((slave.hormones !== rule.XY)) {
+						if ((slave.assignment != "recruit girls")) {
+							if ((slave.assignment != "be the Wardeness")) {
+								if ((slave.assignment != "be the Madam")) {
+									const _oldHormones = slave.hormones;
+									slave.hormones = rule.XY;
+									if (slave.indentureRestrictions >= 2) {
+										slave.hormones = Math.clamp(slave.hormones, -1, 1);
+									}
+									if (slave.hormones != _oldHormones) {
+										r += `<br>${slave.slaveName} is a shemale, so she has been put on the appropriate hormonal regime.`;
+									}
+								}
+							}
+						}
+					}
+				}
+			}
+		}
+	}
+
+	function ProcessFemaleHormones(slave, rule) {
+		if ((slave.vagina > -1) && (slave.dick === 0) && (rule.XX !== undefined) && (rule.XX !== "no default setting")) {
+			if ((slave.hormones !== rule.XX)) {
+				const _oldHormones = slave.hormones;
+				slave.hormones = rule.XX;
+				if (slave.indentureRestrictions >= 2) {
+					slave.hormones = Math.clamp(slave.hormones, -1, 1);
+				}
+				if (slave.hormones != _oldHormones) {
+					r += `<br>${slave.slaveName} is a female, so she has been put on the appropriate hormonal regime.`;
+				}
+			}
+		}
+	}
+
+	function ProcessPregnancyDrugs(slave, rule) {
+		if (slave.pregKnown == 1 && rule.pregSpeed != "no default setting" && slave.breedingMark != 1 && slave.indentureRestrictions < 1 && slave.broodmother === 0) {
+			if (rule.pregSpeed == "slow" && slave.preg < 35) {
+				slave.pregControl = "slow gestation";
+				r += `<br>slave.slaveName is pregnant, so she has been put on the gestation slowing agents.`;
+			} else if (rule.pregSpeed == "fast" && slave.preg < 35 && slave.health > -50) {
+				slave.pregControl = "speed up";
+				r += `<br>slave.slaveName is pregnant, so she has been put on rapid gestation  agents. CAUTION! Can be dangerous. Clinic supervision is recommended.`;
+			} else if (rule.pregSpeed == "suppress" && slave.preg > 34 && slave.health > -50) {
+				slave.pregControl = "labor supressors";
+				r += `<br>slave.slaveName is ready to birth, so she has been put on labor suppressing agents.`;
+			} else if (rule.pregSpeed == "stimulate" && slave.preg >= 37 && slave.health > -50) {
+				slave.labor = 1;
+				slave.induce = 1;
+				V.birthee = 1;
+				r += `<br>slave.slaveName is ready to birth, so her labor has been stimulated.`;
+			} else if (rule.pregSpeed == "fast" && slave.pregControl == "speed up" && slave.health <= -50) {
+				slave.pregControl = "none";
+				r += `<br>slave.slaveName is on rapid gestation agents and dangerously unhealthy, so her agent regimen has been stopped.`;
+			} else if (rule.pregSpeed == "suppress" && slave.pregControl == "labor supressors" && slave.health <= -50) {
+				slave.pregControl = "none";
+				r += `<br>slave.slaveName is on labor suppression agents and unhealthy, so her agent regimen has been stopped.`;
+			}
+		}
+	}
+
+	function ProcessLivingStandard(slave, rule) {
+		if ((rule.livingRules !== undefined) && (rule.livingRules !== "no default setting")) {
+			if (setup.facilityCareers.includes(slave.assignment)) {
+				r += `<br>${slave.slaveName}'s living standards are controlled by her assignment.`;
+			} else if (((slave.assignment == "be your Head Girl") && (V.HGSuite == 1)) || ((slave.assignment == "guard you") && (V.dojo > 1))) {
+				r += `<br>${slave.slaveName} has a private room.`;
+			} else if ((slave.fetish == "mindbroken")) {
+				if ((slave.livingRules !== "spare")) {
+					slave.livingRules = "spare";
+					r += `<br>Since ${slave.slaveName} is mindbroken her living standard has been set to spare.`;
+				}
+			} else if (slave.livingRules !== rule.livingRules) {
+				if (rule.livingRules !== "luxurious") {
+					if (V.roomsPopulation <= V.rooms-0.5) {
+						slave.livingRules = rule.livingRules;
+						r += `<br>${slave.slaveName}'s living standard has been set to ${rule.livingRules}.`;
+						if (slave.relationship >= 4)
+							V.roomsPopulation += 0.5;
+						else
+							V.roomsPopulation += 1;
+					} else {
+						slave.livingRules = "normal";
+						r += `<br>${slave.slaveName}'s living standard has been set to normal, since there is no room for her to occupy.`;
+					}
+				} else {
+					slave.livingRules = rule.livingRules;
+					r += `<br>${slave.slaveName}'s living standard has been set to ${rule.livingRules}.`;
+				}
+			}
+		}
+	}
+
+	function ProcessSpeech(slave, rule) {
+		if ((rule.speechRules !== undefined) && (rule.speechRules !== "no default setting")) {
+			if ((slave.fetish == "mindbroken")) {
+				if ((slave.speechRules !== "restrictive")) {
+					slave.speechRules = "restrictive";
+					r += `<br>Since ${slave.slaveName} is mindbroken her speech rules have been set to restrictive.`;
+				}
+			} else if ((slave.speechRules !== rule.speechRules)) {
+				slave.speechRules = rule.speechRules;
+				r += `<br>${slave.slaveName}'s speech rules have been set to ${rule.speechRules}.`;
+			}
+		}
+	}
+
+	function ProcessRelationship(slave, rule) {
+		if ((slave.fetish !== "mindbroken")) {
+			if ((rule.relationshipRules !== undefined) && (rule.relationshipRules !== "no default setting")) {
+				if ((slave.relationshipRules !== rule.relationshipRules )) {
+					slave.relationshipRules = rule.relationshipRules ;
+					r += `<br>${slave.slaveName}'s relationship rules have been set to ${rule.relationshipRules}.`;
+				}
+			}
+		}
+	}
+
+	function ProcessRelease(slave, rule) {
+		if ((rule.releaseRules !== undefined) && (rule.releaseRules !== "no default setting")) {
+			let _release = 0;
+			if (rule.releaseRules === "restrictive" &&
+				!(["serve the public", "serve in the club", "whore", "work in the brothel", "please you", "serve in the master suite", "be a subordinate slave", "work a glory hole", "be confined in the arcade", "get milked", "work in the dairy", "be your Head Girl"].contains(slave.assignment)))
+				_release = 1;
+			else
+				_release = 1;
+			if ((slave.fetish == "mindbroken") && (slave.releaseRules !== "permissive")) {
+				slave.releaseRules = "permissive";
+				r += `<br>Since ${slave.slaveName} is mindbroken her masturbation rules have been set to permissive.`;
+			} else if ((slave.amp === 1 || slave.fuckdoll > 0) && (slave.releaseRules === "masturbation")) {
+				slave.releaseRules = "restrictive";
+				r += `<br>Since ${slave.slaveName} is unable to masturbate, her masturbation rules have been set to restrictive.`;
+			} else if ((_release !== 0) && (slave.releaseRules !== rule.releaseRules)) {
+				slave.releaseRules = rule.releaseRules;
+				r += `<br>${slave.slaveName}'s masturbation rules have been set to ${rule.releaseRules}.`;
+			}
+		}
+	}
+
+	function ProcessPunishment(slave, rule) {
+		if ((rule.standardPunishment !== undefined) && (rule.standardPunishment !== "no default setting")) {
+			if ((slave.standardPunishment !== rule.standardPunishment)) {
+				slave.standardPunishment = rule.standardPunishment ;
+				r += `<br>${slave.slaveName}'s typical punishment has been updated to ${rule.standardPunishment}.`;
+			}
+		}
+	}
+
+	function ProcessReward(slave, rule) {
+		if ((rule.standardReward !== undefined) && (rule.standardReward !== "no default setting")) {
+			if ((slave.standardReward !== rule.standardReward)) {
+				slave.standardReward = rule.standardReward ;
+				r += `<br>${slave.slaveName}'s typical reward has been updated to ${rule.standardReward}.`;
+			}
+		}
+	}
+
+	function ProcessDietCum(slave, rule) {
+		if ((rule.dietCum !== undefined) && (rule.dietCum !== "no default setting")) {
+			if (slave.dietCum != rule.dietCum) {
+				slave.dietCum = rule.dietCum;
+				if (slave.dietCum == 2) {
+					r += `<br>${slave.slaveName} has been put on a diet based on cum.`;
+					slave.dietMilk = 0;
+				}
+				if (slave.dietCum == 1)
+					r += `<br>${slave.slaveName} has had cum added to her diet.`;
+				else
+					r += `<br>${slave.slaveName} has had cum removed from her diet.`;
+			}
+		}
+	}
+
+	function ProcessDietMilk(slave, rule) {
+		if ((rule.dietMilk !== undefined) && (rule.dietMilk !== "no default setting")) {
+			if (slave.dietMilk != rule.dietMilk) {
+				slave.dietMilk = rule.dietMilk;
+				if (slave.dietMilk == 2) {
+					r += `<br>${slave.slaveName} has been put on a diet based on human milk.`;
+					slave.dietCum = 0;
+				}
+				if (slave.dietMilk == 1)
+					r += `<br>${slave.slaveName} has had human milk added to her diet.`;
+				else
+					r += `<br>${slave.slaveName} has had human milk removed from her diet.`;
+			}
+		}
+	}
+
+	function ProcessTeeth(slave, rule) {
+		if ((rule.teeth !== undefined) && (rule.teeth !== "no default setting")) {
+			if ((rule.teeth == "universal")) {
+				if ((slave.teeth == "crooked")) {
+					slave.teeth = "straightening braces";
+					V.cash -= V.surgeryCost;
+					r += `<br>${slave.slaveName} has been given braces for her crooked teeth.`;
+				} else if ((slave.teeth == "normal")) {
+					slave.teeth = "cosmetic braces";
+					V.cash -= V.surgeryCost;
+					r += `<br>${slave.slaveName} has been given cosmetic braces.`;
+				}
+			} else if ((rule.teeth == "straighten")) {
+				if ((slave.teeth == "crooked")) {
+					slave.teeth = "straightening braces";
+					V.cash -= V.surgeryCost;
+					r += `<br>${slave.slaveName} has been given braces for her crooked teeth.`;
+				} else if ((slave.teeth == "cosmetic braces")) {
+					slave.teeth = "normal";
+					r += `<br>${slave.slaveName} has gotten her braces off, since her teeth are straight.`;
+				}
+			} else if ((rule.teeth == "none")) {
+				if ((slave.teeth == "straightening braces")) {
+					slave.teeth = "crooked";
+					r += `<br>${slave.slaveName} has gotten her braces off.`;
+				} else if ((slave.teeth == "cosmetic braces")) {
+					slave.teeth = "normal";
+					r += `<br>${slave.slaveName} has gotten her braces off.`;
+				}
+			}
+		}
+	}
+
+	function ProcessStyle(slave, rule) {
+		if (rule.eyeColor !== undefined && (rule.eyeColor !== "no default setting")) {
+			if ((slave.eyeColor !== rule.eyeColor)) {
+				slave.eyeColor = rule.eyeColor;
+				V.cash -= V.modCost;
+				r += `<br>${slave.slaveName} has been given ${slave.eyeColor} contact lenses.`;
+			}
+		}
+
+		if (rule.makeup !== undefined && (rule.makeup !== "no default setting")) {
+			if ((slave.makeup !== rule.makeup)) {
+				slave.makeup = rule.makeup;
+				V.cash -= V.modCost;
+				r += `<br>${slave.slaveName} has been assigned the standard makeup.`;
+			}
+		}
+
+		if ((slave.amp != 1)) {
+			if (rule.nails !== undefined && (rule.nails !== "no default setting")) {
+				if ((slave.nails !== rule.nails)) {
+					slave.nails = rule.nails;
+					V.cash -= V.modCost;
+					r += `<br>${slave.slaveName} has been assigned the standard nails.`;
+				}
+			}
+		}
+
+		if (rule.hColor !== undefined && (rule.hColor !== "no default setting")) {
+			if (slave.bald != 1) {
+				if ((slave.hColor !== rule.hColor)) {
+					slave.hColor = rule.hColor;
+					V.cash -= V.modCost;
+					r += `<br>${slave.slaveName}'s hair has been dyed ${rule.hColor}.`;
+				}
+			}
+		}
+
+		if (rule.hStyle !== undefined && (rule.hStyle !== "no default setting")) {
+			if (slave.bald != 1) {
+				if ((slave.hStyle !== rule.hStyle)) {
+					slave.hStyle = rule.hStyle;
+					V.cash -= V.modCost;
+					if ((rule.hStyle == "shaved")) {
+						slave.hLength = 0;
+						r += `<br>${slave.slaveName}'s hair has been shaved.`;
+					} else
+						r += `<br>${slave.slaveName}'s hair has been restyled.`;
+				}
+			}
+		}
+
+		if (rule.hLength !== undefined && (rule.hLength !== "no default setting")) {
+			if (slave.bald != 1) {
+				if ((slave.hLength !== rule.hLength)) {
+					if ((slave.hLength > rule.hLength)) {
+						V.cash -= V.modCost;
+						r += `<br>${slave.slaveName}'s hair has been cut; it `;
+					} else {
+						V.cash -= V.modCost*Math.trunc((rule.hLength-slave.hLength)/10);
+						r += `<br>${slave.slaveName} has been given extensions; her hair `;
+					}
+				r += `is now rule.hLength cm long.`;
+				slave.hLength = rule.hLength;
+				}
+			}
+		}
+
+		if (rule.pubicHColor !== undefined && (rule.pubicHColor !== "no default setting")) {
+			if (slave.pubicHStyle != "bald" && slave.pubicHStyle != "hairless") {
+				if ((slave.pubicHColor !== rule.pubicHColor)) {
+					slave.pubicHColor = rule.pubicHColor;
+					V.cash -= V.modCost;
+					r += `<br>${slave.slaveName}'s pubic hair, if present, has been dyed ${rule.pubicHColor}.`;
+				}
+			}
+		}
+
+		if (rule.pubicHStyle !== undefined && (rule.pubicHStyle !== "no default setting")) {
+			if (slave.pubicHStyle != "bald" && slave.pubicHStyle != "hairless") {
+				if ((slave.pubicHStyle !== rule.pubicHStyle)) {
+					slave.pubicHStyle = rule.pubicHStyle;
+					V.cash -= V.modCost;
+					r += `<br>${slave.slaveName}'s pubic hair has been restyled; it is now ${rule.pubicHStyle}.`;
+				}
+			}
+		}
+
+		if (rule.underArmHColor !== undefined && (rule.underArmHColor !== "no default setting")) {
+			if (slave.underArmHStyle != "bald" && slave.underArmHStyle != "hairless") {
+				if ((slave.underArmHColor !== rule.underArmHColor)) {
+					slave.underArmHColor = rule.underArmHColor;
+					V.cash -= V.modCost;
+					r += `<br>${slave.slaveName}'s underarm hair, if present, has been dyed ${rule.underArmHColor}.`;
+				}
+			}
+		}
+
+		if (rule.underArmHStyle !== undefined && (rule.underArmHStyle !== "no default setting")) {
+			if (slave.underArmHStyle != "bald" && slave.underArmHStyle != "hairless") {
+				if ((slave.underArmHStyle !== rule.underArmHStyle)) {
+					slave.underArmHStyle = rule.underArmHStyle;
+					V.cash -= V.modCost;
+					r += `<br>${slave.slaveName}'s underarm hair has been restyled; it is now ${rule.underArmHStyle}.`;
+				}
+			}
+		}
+	}
+
+	function ProcessPiercings(slave, rule) {
+		if (rule.nipplesPiercing !== undefined && (rule.nipplesPiercing !== "no default setting")) {
+			if ((slave.nipplesPiercing !== rule.nipplesPiercing)) {
+				if ((rule.nipplesPiercing === 0)) {
+					slave.nipplesPiercing = 0;
+					r += `<br>${slave.slaveName}'s nipple piercings have been removed.`;
+				} else if (slave.nipples !== "fuckable") {
+					slave.nipplesPiercing = rule.nipplesPiercing;
+					V.cash -= V.modCost;
+					r += `<br>${slave.slaveName}'s nipples have been pierced.`;
+				} else {
+					r += `<br>${slave.slaveName}'s nipples are inverted and cannot be pierced.`;
+				}
+			}
+		}
+
+		if (rule.areolaePiercing !== undefined && (rule.areolaePiercing !== "no default setting")) {
+			if ((slave.areolaePiercing !== rule.areolaePiercing)) {
+				if ((rule.areolaePiercing === 0)) {
+					slave.areolaePiercing = 0;
+					r += `<br>${slave.slaveName}'s areolae piercings have been removed.`;
+				} else {
+					slave.areolaePiercing = rule.areolaePiercing;
+					V.cash -= V.modCost;
+					r += `<br>${slave.slaveName}'s areolae have been given stud piercings.`;
+				}
+			}
+		}
+
+		if (rule.clitPiercing !== undefined && (rule.clitPiercing !== "no default setting")) {
+			if ((slave.clitPiercing !== rule.clitPiercing)) {
+				if ((rule.clitPiercing === 0)) {
+					slave.clitPiercing = 0;
+					if (slave.dick > 0)
+						r += `<br>${slave.slaveName}'s frenulum piercing has been removed.`;
+					else
+						r += `<br>${slave.slaveName}'s clit piercing has been removed.`;
+
+				} else if ((slave.vagina != -1) || (slave.dick !== 0)) {
+					slave.clitPiercing = rule.clitPiercing;
+					if (slave.dick > 0)
+						r += `<br>${slave.slaveName}'s frenulum has been pierced.`;
+					else
+						r += `<br>${slave.slaveName}'s clit has been pierced.`;
+
+					if (rule.clitPiercing == 3)
+						V.cash -= 1000;
+					else
+						V.cash -= V.modCost;
+				}
+			}
+		}
+
+		if ((slave.vagina != -1)) {
+			if (rule.vaginaPiercing !== undefined && (rule.vaginaPiercing !== "no default setting")) {
+				if ((slave.vaginaPiercing !== rule.vaginaPiercing)) {
+					if ((rule.vaginaPiercing === 0)) {
+						slave.vaginaPiercing = 0;
+						r += `<br>${slave.slaveName}'s labia piercings have been removed.`;
+					} else {
+						slave.vaginaPiercing = rule.vaginaPiercing;
+						V.cash -= V.modCost;
+						r += `<br>${slave.slaveName}'s pussylips have been pierced.`;
+					}
+				}
+			}
+		}
+
+		if ((slave.dick > 0)) {
+			if (rule.dickPiercing !== undefined && (rule.dickPiercing !== "no default setting")) {
+				if ((slave.dickPiercing !== rule.dickPiercing)) {
+					if ((rule.dickPiercing === 0)) {
+						slave.dickPiercing = 0;
+						r += `<br>${slave.slaveName}'s shaft piercings have been removed.`;
+					} else {
+						slave.dickPiercing = rule.dickPiercing;
+						V.cash -= V.modCost;
+						r += `<br>${slave.slaveName}'s shaft has been pierced.`;
+					}
+				}
+			}
+		}
+
+		if (rule.anusPiercing !== undefined && (rule.anusPiercing !== "no default setting")) {
+			if ((slave.anusPiercing !== rule.anusPiercing)) {
+				if ((rule.anusPiercing === 0)) {
+					slave.anusPiercing = 0;
+					r += `<br>${slave.slaveName}'s asshole piercings have been removed.`;
+				} else {
+					slave.anusPiercing = rule.anusPiercing;
+					V.cash -= V.modCost;
+					r += `<br>${slave.slaveName}'s asshole has been pierced.`;
+				}
+			}
+		}
+
+		if (rule.lipsPiercing !== undefined && (rule.lipsPiercing !== "no default setting")) {
+			if ((slave.lipsPiercing !== rule.lipsPiercing)) {
+				if ((rule.lipsPiercing === 0)) {
+					slave.lipsPiercing = 0;
+					r += `<br>${slave.slaveName}'s lip piercings have been removed.`;
+				} else {
+					slave.lipsPiercing = rule.lipsPiercing;
+					V.cash -= V.modCost;
+					r += `<br>${slave.slaveName}'s lips have been pierced.`;
+				}
+			}
+		}
+
+		if (rule.tonguePiercing !== undefined && (rule.tonguePiercing !== "no default setting")) {
+			if ((slave.tonguePiercing !== rule.tonguePiercing)) {
+				if ((rule.tonguePiercing === 0)) {
+					slave.tonguePiercing = 0;
+					r += `<br>${slave.slaveName}'s tongue piercings have been removed.`;
+				} else {
+					slave.tonguePiercing = rule.tonguePiercing;
+					V.cash -= V.modCost;
+					r += `<br>${slave.slaveName}'s tongue has been pierced.`;
+				}
+			}
+		}
+
+		if (rule.earPiercing !== undefined && (rule.earPiercing !== "no default setting")) {
+			if ((slave.earPiercing !== rule.earPiercing)) {
+				if ((rule.earPiercing === 0)) {
+					slave.earPiercing = 0;
+					r += `<br>${slave.slaveName}'s ear piercings have been removed.`;
+				} else {
+					slave.earPiercing = rule.earPiercing;
+					V.cash -= V.modCost;
+					r += `<br>${slave.slaveName}'s ears have been pierced.`;
+				}
+			}
+		}
+
+		if (rule.nosePiercing !== undefined && (rule.nosePiercing !== "no default setting")) {
+			if ((slave.nosePiercing !== rule.nosePiercing)) {
+				if ((rule.nosePiercing === 0)) {
+					slave.nosePiercing = 0;
+					r += `<br>${slave.slaveName}'s nose piercing has been removed.`;
+				} else {
+					slave.nosePiercing = rule.nosePiercing;
+					V.cash -= V.modCost;
+					r += `<br>${slave.slaveName}'s nose has been pierced.`;
+				}
+			}
+		}
+
+		if (rule.eyebrowPiercing !== undefined && (rule.eyebrowPiercing !== "no default setting")) {
+			if ((slave.eyebrowPiercing !== rule.eyebrowPiercing)) {
+				if ((rule.eyebrowPiercing === 0)) {
+					slave.eyebrowPiercing = 0;
+					r += `<br>${slave.slaveName}'s eyebrow piercings have been removed.`;
+				} else {
+					slave.eyebrowPiercing = rule.eyebrowPiercing;
+					V.cash -= V.modCost;
+					r += `<br>${slave.slaveName}'s eyebrows have been pierced.`;
+				}
+			}
+		}
+
+		if (rule.navelPiercing !== undefined && (rule.navelPiercing !== "no default setting")) {
+			if ((slave.navelPiercing !== rule.navelPiercing)) {
+				if ((rule.navelPiercing === 0)) {
+					slave.navelPiercing = 0;
+					r += `<br>${slave.slaveName}'s navel piercing have been removed.`;
+				} else {
+					slave.navelPiercing = rule.navelPiercing;
+					V.cash -= V.modCost;
+					r += `<br>${slave.slaveName}'s navel has been pierced.`;
+				}
+			}
+		}
+
+		if (rule.corsetPiercing !== undefined && (rule.corsetPiercing !== "no default setting")) {
+			if ((slave.corsetPiercing !== rule.corsetPiercing)) {
+				if ((rule.corsetPiercing === 0)) {
+					slave.corsetPiercing = 0;
+					r += `<br>${slave.slaveName}'s corset piercings have been removed.`;
+				} else {
+					slave.corsetPiercing = rule.corsetPiercing;
+					V.cash -= V.modCost;
+					r += `<br>${slave.slaveName} has been given a set of corset piercings.`;
+				}
+			}
+		}
+	}
+
+	function ProcessSmartPiercings(slave, rule) {
+		if ((slave.clitPiercing == 3)) {
+			let _used = 0;
+			if (rule.clitSetting !== undefined && (rule.clitSetting !== "no default setting")) {
+				if (slave.clitSetting !== rule.clitSetting) {
+					slave.clitSetting = rule.clitSetting;
+					_used = 1;
+					r += `<br>${slave.slaveName}'s smart piercing has been set to ${slave.clitSetting}.`;
+				} else if (slave.fetishStrength < 100) {
+					_used = 1;
+				}
+			}
+			if (_used === 0) {
+				if (rule.clitSettingEnergy !== undefined && (rule.clitSettingEnergy !== "no default setting")) {
+					if (slave.energy < rule.clitSettingEnergy) {
+						if (slave.clitSetting !== "all") {
+							r += `<br>${slave.slaveName}'s smart piercing has been set to enhance libido.`;
+						}
+						slave.clitSetting = "all";
+						_used = 1;
+					} else if (slave.energy >= rule.clitSettingEnergy + 10) {
+						if (slave.clitSetting !== "none") {
+							r += `<br>${slave.slaveName}'s smart piercing has been set to suppress libido.`;
+						}
+						slave.clitSetting = "none";
+						_used = 1;
+					}
+				}
+			}
+			if (_used === 0) {
+				if (rule.clitSettingXY !== undefined && (rule.clitSettingXY !== "no default setting")) {
+					if (slave.attrXY < rule.clitSettingXY) {
+						if (slave.clitSetting !== "men") {
+							r += `<br>${slave.slaveName}'s smart piercing has been set to encourage attraction to men.`;
+						}
+						slave.clitSetting = "men";
+						_used = 1;
+					} else if (slave.attrXY >= rule.clitSettingXY + 10) {
+						if (slave.clitSetting !== "anti-men") {
+							r += `<br>${slave.slaveName}'s smart piercing has been set to discourage attraction to men.`;
+						}
+						slave.clitSetting = "anti-men";
+						_used = 1;
+					}
+				}
+			}
+			if (_used === 0) {
+				if (rule.clitSettingXX !== undefined && (rule.clitSettingXX !== "no default setting")) {
+					if (slave.attrXX < rule.clitSettingXX) {
+						if (slave.clitSetting !== "women") {
+							r += `<br>${slave.slaveName}'s smart piercing has been set to encourage attraction to women.`;
+						}
+						slave.clitSetting = "women";
+						_used = 1;
+					} else if (slave.attrXX >= rule.clitSettingXX + 10) {
+						if (slave.clitSetting !== "anti-women") {
+							r += `<br>${slave.slaveName}'s smart piercing has been set to discourage attraction to women.`;
+						}
+						slave.clitSetting = "anti-women";
+						_used = 1;
+					}
+				}
+			}
+		}
+	}
+
+	function ProcessTattoos(slave, rule) {
+		if (rule.boobsTat !== undefined && (rule.boobsTat !== "no default setting")) {
+			if ((slave.boobsTat !== rule.boobsTat)) {
+				slave.boobsTat = rule.boobsTat;
+				V.cash -= V.modCost;
+				r += `<br>${slave.slaveName}'s chest has been tattooed.`;
+			}
+		}
+
+		if (rule.buttTat !== undefined && (rule.buttTat !== "no default setting")) {
+			if ((slave.buttTat !== rule.buttTat)) {
+				slave.buttTat = rule.buttTat;
+				V.cash -= V.modCost;
+				r += `<br>${slave.slaveName}'s butt has been tattooed.`;
+			}
+		}
+
+		if (rule.vaginaTat !== undefined && (rule.vaginaTat !== "no default setting")) {
+			if ((slave.vaginaTat !== rule.vaginaTat)) {
+				slave.vaginaTat = rule.vaginaTat;
+				V.cash -= V.modCost;
+				r += `<br>${slave.slaveName}'s abdomen has been tattooed.`;
+			}
+		}
+
+		if ((slave.dick > 0)) {
+			if (rule.dickTat !== undefined && (rule.dickTat !== "no default setting")) {
+				if ((slave.dickTat !== rule.dickTat)) {
+					slave.dickTat = rule.dickTat;
+					V.cash -= V.modCost;
+					r += `<br>${slave.slaveName}'s dick has been tattooed.`;
+				}
+			}
+		}
+
+		if (rule.lipsTat !== undefined && (rule.lipsTat !== "no default setting")) {
+			if ((slave.lipsTat !== rule.lipsTat)) {
+				slave.lipsTat = rule.lipsTat;
+				V.cash -= V.modCost;
+				r += `<br>${slave.slaveName}'s face has been tattooed.`;
+			}
+		}
+
+		if (rule.anusTat !== undefined && (rule.anusTat !== "no default setting")) {
+			if ((slave.anusTat !== rule.anusTat)) {
+				slave.anusTat = rule.anusTat;
+				V.cash -= V.modCost;
+				r += `<br>${slave.slaveName}'s asshole has been modded.`;
+			}
+		}
+
+		if (rule.shouldersTat !== undefined && (rule.shouldersTat !== "no default setting")) {
+			if ((slave.shouldersTat !== rule.shouldersTat)) {
+				slave.shouldersTat = rule.shouldersTat;
+				V.cash -= V.modCost;
+				r += `<br>${slave.slaveName}'s shoulders have been tattooed.`;
+			}
+		}
+
+		if (rule.armsTat !== undefined && (rule.armsTat !== "no default setting")) {
+			if ((slave.armsTat !== rule.armsTat)) {
+				slave.armsTat = rule.armsTat;
+				V.cash -= V.modCost;
+				r += `<br>${slave.slaveName}'s arms have been tattooed.`;
+			}
+		}
+
+		if (rule.legsTat !== undefined && (rule.legsTat !== "no default setting")) {
+			if ((slave.legsTat !== rule.legsTat)) {
+				slave.legsTat = rule.legsTat;
+				V.cash -= V.modCost;
+				r += `<br>${slave.slaveName}'s legs have been tattooed.`;
+			}
+		}
+
+		if (rule.stampTat !== undefined && (rule.stampTat !== "no default setting")) {
+			if ((slave.stampTat !== rule.stampTat)) {
+				slave.stampTat = rule.stampTat;
+				V.cash -= V.modCost;
+				r += `<br>${slave.slaveName}'s lower back has been tattooed.`;
+			}
+		}
+		if ((rule.autoBrand == 1)) {
+			if ((slave.brand === 0)) {
+				if ((slave.health > -20)) {
+					slave.brand = V.brandDesign;
+					slave.brandLocation = V.brandTarget;
+					if ((slave.devotion < 18))
+						slave.devotion -= 5;
+					slave.trust -= 5;
+					slave.health -= 10;
+					r += `<br>${slave.slaveName} has been branded, with <span class="gold">fear</span>${slave.devotion < 18? `, <span class="mediumorchid">regard,</span>`:``} and <span class="red">health</span> consequences.`;
+				}
+			}
+		}
+	}
+
+	function ProcessPorn(slave, rule) {
+		if ((rule.pornFameSpending !== undefined) && (rule.pornFameSpending !== "no default setting")) {
+			if ((slave.prestige < 3)) {
+				if ((slave.pornFameSpending !== rule.pornFameSpending)) {
+					slave.pornFameSpending = rule.pornFameSpending;
+					r += `<br>${slave.slaveName}'s porn publicity has been corrected.`;
+				}
+			}
+		}
+	}
+
+	return DefaultRules;
+})();
diff --git a/src/js/SFJS.tw b/src/js/SFJS.tw
index cd39e0634a773ca1c01d4eb27fd50959dfb5aa38..160a233c74349071c5f215b35379197a19a18a98 100644
--- a/src/js/SFJS.tw
+++ b/src/js/SFJS.tw
@@ -38,4 +38,4 @@ window.HSM = function() {
 		return .80;
 	else if (State.variables.PC.hacking >= 100)
 		return .75;
-	}
\ No newline at end of file
+	}
diff --git a/src/js/SetBellySize.tw b/src/js/SetBellySize.tw
new file mode 100644
index 0000000000000000000000000000000000000000..ce50faf43da2c3d31860d0e852d1721eb6b01f61
--- /dev/null
+++ b/src/js/SetBellySize.tw
@@ -0,0 +1,22 @@
+:: SetBellySize [script]
+
+window.SetBellySize = function SetBellySize(slave) {
+	let _implantSize
+	WombNormalizePreg(slave) /*now with support for legacy code that advance pregnancy by setting .preg++ */ 
+
+	if (slave.bellyImplant > 0)
+		_implantSize = slave.bellyImplant
+	else
+		_implantSize = 0
+		
+	if (slave.inflation == 3)	
+		slave.bellyFluid = 10000
+	else if (slave.inflation == 2)
+		slave.bellyFluid = 5000
+	else if (slave.inflation == 1)
+		slave.bellyFluid = 2000
+	else
+		slave.bellyFluid = 0
+	
+	slave.belly = slave.bellyPreg+slave.bellyFluid+_implantSize
+}
diff --git a/src/js/assayJS.tw b/src/js/assayJS.tw
index 0aa9a3cc6bcaa3bf70244d7348ef11883530dea6..7a58b23610e2a9ca6d72bbe198da11ea60c0c49a 100644
--- a/src/js/assayJS.tw
+++ b/src/js/assayJS.tw
@@ -21,11 +21,11 @@ window.isSlim = function(slave) {
 	}
 	
 	return slim;
-}
+};
 
 window.isStacked = function(slave) {
 	return (slave.butt > 4) && (slave.boobs > 800);
-}
+};
 
 window.isModded = function(slave) {
 	var tatScore = TatScore(slave);
@@ -33,34 +33,34 @@ window.isModded = function(slave) {
 	var modScore = piercingScore+tatScore;
 		
 	return ((modScore > 15) || (piercingScore > 8) && (tatScore > 5));
-}
+};
 
 window.isUnmodded = function(slave) {
 	var tatScore = TatScore(slave);
 	var piercingScore = PiercingScore(slave);
 	
 	return !isModded(slave) && (slave.corsetPiercing == 0) && (piercingScore < 3) && (tatScore < 2);
-}
+};
 
 window.isXY = function(slave) {
 	return (slave.dick > 0);
-}
+};
 
 window.isYoung = function(slave) {
 	return (slave.visualAge < 30);
-}
+};
 
 window.isPreg = function(slave) {
 	return ((slave.bellyPreg >= 5000) || (slave.bellyImplant >= 5000));
-}
+};
 
 window.isNotPreg = function(slave) {
 	return !isPreg(slave) && (slave.belly < 100) && (slave.weight < 30) && !setup.fakeBellies.includes(slave.bellyAccessory);
-}
+};
 
 window.isPure = function(slave) {
 	return ((slave.boobsImplant == 0) && (slave.buttImplant == 0) && (slave.waist >= -95) && (slave.lipsImplant == 0) && (slave.faceImplant < 30) && (slave.bellyImplant == -1) && (Math.abs(slave.shouldersImplant) < 2) && (Math.abs(slave.hipsImplant) < 2));
-}
+};
 
 window.PiercingScore = function(slave) {
 	var piercingScore = 0;
@@ -107,7 +107,7 @@ window.PiercingScore = function(slave) {
 		piercingScore += slave.anusPiercing*0.75-0.25;
 	}
 	return piercingScore;
-}
+};
 
 window.TatScore = function(slave) {
 	var tatScore = 0;
@@ -164,7 +164,7 @@ window.TatScore = function(slave) {
 	}
 	
 	return tatScore;
-}
+};
 
 window.slimPass = function(slave) {
 	var slimPass = 0;
@@ -189,55 +189,71 @@ window.slimPass = function(slave) {
 	}
 	
 	return slimPass;
-}
+};
 
 window.sameAssignmentP = function sameAssignmentP(A, B) {
-	return A.assignment === B.assignment
-}
+	return A.assignment === B.assignment;
+};
 
 window.haveRelationP = function haveRelationP(slave, target) {
-	return slave.relationTarget === target.ID
-}
+	return slave.relationTarget === target.ID;
+};
 
 window.haveRelationshipP = function haveRelationshipP(slave, target) {
-	return slave.relationshipTarget === target.ID
-}
+	return slave.relationshipTarget === target.ID;
+};
 
 window.isRivalP = function isRivalP(slave, target) {
-	return slave.rivalryTarget === target.ID
-}
+	return slave.rivalryTarget === target.ID;
+};
 
 window.supremeRaceP = function supremeRaceP(slave) {
-	return State.variables.arcologies[0].FSSupremacistRace === slave.race
-}
+	return State.variables.arcologies[0].FSSupremacistRace === slave.race;
+};
 
 window.inferiorRaceP = function inferiorRaceP(slave) {
-	return State.variables.arcologies[0].FSSubjugationistRace === slave.race
-}
+	return State.variables.arcologies[0].FSSubjugationistRace === slave.race;
+};
+
+window.isLeaderP = function isLeaderP(slave) {
+	const V = State.variables;
+	const leaders = [V.HeadGirl, V.Bodyguard, V.Recruiter, V.Concubine, V.Nurse, V.Attendant, V.Madam, V.DJ, V.Milkmaid, V.Stewardess, V.Schoolteacher, V.Wardeness];
+	return leaders.some(leader => leader.ID && leader.ID === slave.ID);
+};
+
+// helper function returning PC's title
+window.properTitle = function properTitle() {
+	const PC = State.variables.PC;
+	if (PC.customTitle) return PC.customTitle;
+	else if (PC.title !== 0) return "Sir";
+	else return "Ma'am";
+};
 
 window.addSlave = function addSlave(slave) {
 	State.variables.slaves.push(slave);
 	State.variables.slaveIndices[slave.ID] = State.variables.slaves.length - 1;
 };
-
 window.removeSlave = function removeSlave(index) {
 	const ret = State.variables.slaves.deleteAt(index);
 	State.variables.slaveIndices = slaves2indices();
 	return ret;
 };
-
 window.slaves2indices = function slaves2indices() {
 	const obj = {};
 	State.variables.slaves.forEach((slave, i) => obj[slave.ID] = i);
 	return obj;
 };
-
 window.getSlave = function getSlave(ID) {
 	const index = State.variables.slaveIndices[ID];
 	if (index === undefined) return undefined;
 	else return State.variables.slaves[index];
 };
-
 window.getPronouns = function getPronouns(slave) {
-	return {pronoun: slave.pronoun, possessivePronoun: slave.possessivePronoun, possessive: slave.possessive, object: slave.object, objectReflexive: slave.objectReflexive, noun: slave.noun}
-};
\ No newline at end of file
+	return {
+		pronoun: slave.pronoun,
+		possessivePronoun: slave.possessivePronoun,
+		possessive: slave.possessive,
+		object: slave.object,
+		objectReflexive: slave.objectReflexive,
+		noun: slave.noun };
+};
diff --git a/src/js/assignJS.tw b/src/js/assignJS.tw
new file mode 100644
index 0000000000000000000000000000000000000000..3e50e02a551e7106830419f7d4dcb296bb1f5efc
--- /dev/null
+++ b/src/js/assignJS.tw
@@ -0,0 +1,458 @@
+:: assignJob [script]
+
+window.assignJob = function assignJob(slave, job) {
+	"use strict";
+	const V = State.variables;
+	let r = "";
+
+	if (job === "Pit" || job === "Coursing Association")
+		return r;
+	
+	removeJob(slave, slave.assignment);
+	const idx = V.slaveIndices[slave.ID];
+
+	/* use .toLowerCase() to get rid of a few dupe conditions. */
+	switch (job.toLowerCase()) {
+		case "be confined in the arcade":
+		case "arcade":
+			slave.assignment = "be confined in the arcade";
+			slave.assignmentVisible = 0;
+			V.arcadeSlaves++;
+			V.ArcadeiIDs.push(slave.ID);
+			slave.clothing = "none";
+			slave.shoes = "none";
+			slave.collar = "none";
+			slave.livingRules = "spare";
+			break;
+
+		case "work in the brothel":
+		case "brothel":
+			slave.assignment = "work in the brothel";
+			slave.assignmentVisible = 0;
+			V.brothelSlaves++;
+			V.BrothiIDs.push(slave.ID);
+			switch (V.brothelDecoration) {
+				case "Degradationist":
+				case "standard":
+					slave.livingRules = "spare";
+					break;
+				default:
+					slave.livingRules = "normal";
+					break;
+			}
+			break;
+
+		case "be confined in the cellblock":
+		case "cellblock":
+			slave.assignment = "be confined in the cellblock";
+			slave.assignmentVisible = 0;
+			V.cellblockSlaves++;
+			V.CellBiIDs.push(slave.ID);
+			switch (V.cellblockDecoration) {
+				case "Paternalist":
+					slave.livingRules = "normal";
+					break;
+				default:
+					slave.livingRules = "spare";
+					break;
+			}
+			break;
+
+		case "get treatment in the clinic":
+		case "clinic":
+			slave.assignment = "get treatment in the clinic";
+			slave.assignmentVisible = 0;
+			V.clinicSlaves++;
+			V.CliniciIDs.push(slave.ID);
+			switch (V.clinicDecoration) {
+				case "Repopulation Focus":
+				case "Eugenics":
+				case "Gender Radicalist":
+				case "Gender Fundamentalist":
+				case "Paternalist":
+				case "Maturity Preferentialist":
+				case "Youth Preferentialist":
+				case "Slimness Enthusiast":
+				case "Hedonistic":
+					slave.livingRules = "luxurious";
+					break;
+				
+				case "Roman Revivalist":
+				case "Aztec Revivalist":
+				case "Egyptian Revivalist":
+				case "Arabian Revivalist":
+				case "Chinese Revivalist":
+				case "Chattel Religionist":
+				case "Edo Revivalist":
+					slave.livingRules = "normal";
+					break;
+				
+				default:
+					slave.livingRules = "spare";
+					break;
+			}
+			break;
+
+		case "serve in the club":
+		case "club":
+			slave.assignment = "serve in the club";
+			slave.assignmentVisible = 0;
+			V.clubSlaves++;
+			V.ClubiIDs.push(slave.ID);
+			slave.livingRules = "normal";
+			break;
+
+		case "work in the dairy":
+		case "dairy":
+			slave.assignment = "work in the dairy";
+			slave.assignmentVisible = 0;
+			V.dairySlaves++;
+			V.DairyiIDs.push(slave.ID);
+			switch (V.dairyDecoration) {
+				case "Roman Revivalist":
+				case "Aztec Revivalist":
+				case "Chinese Revivalist":
+				case "Chattel Religionist":
+				case "Edo Revivalist":
+				case "Arabian Revivalist":
+				case "Egyptian Revivalist":
+				case "Supremacist":
+				case "Subjugationist":
+				case "Degradationist":
+					slave.livingRules = "spare";
+					break;
+				default:
+					slave.livingRules = "normal";
+					break;
+			}
+			break;
+
+		case "live with your head girl":
+		case "head girl suite":
+		case "hgsuite":
+			slave.assignment = "live with your Head Girl";
+			slave.assignmentVisible = 0;
+			V.HGSuiteSlaves++;
+			V.HGSuiteiIDs.push(slave.ID);
+			slave.livingRules = "luxurious";
+			break;
+
+		case "serve in the master suite":
+		case "master suite":
+		case "mastersuite":
+			slave.assignment = "serve in the master suite";
+			slave.assignmentVisible = 0;
+			V.masterSuiteSlaves++;
+			V.MastSiIDs.push(slave.ID);
+			if(V.masterSuiteUpgradeLuxury > 0)
+				slave.livingRules = "luxurious";
+			else
+				slave.livingRules = "spare";
+			break;
+
+		case "learn in the schoolroom":
+		case "schoolroom":
+			slave.assignment = "learn in the schoolroom";
+			slave.assignmentVisible = 0;
+			V.schoolroomSlaves++;
+			V.SchlRiIDs.push(slave.ID);
+			slave.livingRules = "normal";
+			break;
+
+		case "work as a servant":
+		case "servants' quarters":
+		case "servantsquarters":
+			slave.assignment = "work as a servant";
+			slave.assignmentVisible = 0;
+			V.servantsQuartersSlaves++;
+			V.ServQiIDs.push(slave.ID);
+			switch (V.servantsQuartersDecoration) {
+				case "Roman Revivalist":
+				case "Aztec Revivalist":
+				case "Chinese Revivalist":
+				case "Chattel Religionist":
+				case "Edo Revivalist":
+				case "Supremacist":
+				case "Subjugationist":
+				case "Degradationist":
+				case "Arabian Revivalist":
+				case "Egyptian Revivalist":
+					slave.livingRules = "spare";
+					break;
+				default:
+					slave.livingRules = "normal";
+					break;
+			}
+			break;
+
+		case "rest in the spa":
+		case "spa":
+			slave.assignment = "rest in the spa";
+			slave.assignmentVisible = 0;
+			V.spaSlaves++;
+			V.SpaiIDs.push(slave.ID);
+			switch (V.spaDecoration) {
+				case "Chattel Religionist":
+				case "Chinese Revivalist":
+					slave.livingRules = "normal";
+					break;
+				case "Degradationist":
+					slave.livingRules = "spare";
+					break;
+				default:
+					slave.livingRules = "luxurious";
+					break;
+			}
+			break;
+
+		case "be the attendant":
+		case "be the dj":
+		case "be the madam":
+		case "be the milkmaid":
+		case "be the nurse":
+		case "be the schoolteacher":
+		case "be the stewardess":
+		case "be the wardeness":
+			slave.assignment = job;
+			slave.assignmentVisible = 0;     /* non-visible leadership roles */
+			slave.livingRules = "luxurious";
+			break;
+
+		case "be your concubine":
+			slave.assignment = job;
+			slave.assignmentVisible = 0;     /* non-visible leadership roles */
+			if(V.masterSuiteUpgradeLuxury > 0)
+				slave.livingRules = "luxurious";
+			else
+				slave.livingRules = "normal";
+			break;
+
+		case "be your head girl":
+			slave.assignment = job;
+			if (V.HGSuite === 1) {
+				slave.livingRules = "luxurious";
+			}
+			break;
+
+		case "guard you":
+			slave.assignment = job;
+			if (V.dojo > 1) {
+				slave.livingRules = "luxurious";
+			}
+			if (V.pitBG == 1 && V.fighterIDs.includes(slave.ID))
+				V.fighterIDs.delete(slave.ID);
+			break;
+
+		case "be your agent":
+		case "live with your agent":
+			slave.assignment = job;
+			slave.assignmentVisible = 0;
+			slave.useRulesAssistant = 0; /* non-visible roles exempt from Rules Assistant */
+			if (job === "be your agent") {
+				V.leaders.push(slave);
+			}
+			break;
+
+		case "choose her own job":
+			slave.assignment = job;
+			slave.choosesOwnAssignment = 1;  /* removeJob already set assignmentVisible = 1 */
+			break;
+
+		default:
+			slave.assignment = job; /* removeJob already set assignmentVisible = 1 and choosesOwnAssignment = 0 */
+			break;
+	}
+
+	if (slave.assignmentVisible === 0 && Array.isArray(V.personalAttention)) {
+		const awi = V.personalAttention.findIndex(function(s) { return s.ID === slave.ID; });
+		if (awi != -1) {
+			V.personalAttention.deleteAt(awi);
+			if (V.personalAttention.length === 0) {
+				if (V.PC.career === "escort") 
+					V.personalAttention = "whoring";
+				else if (V.PC.career === "servant")
+					V.personalAttention = "upkeep";
+				else
+					V.personalAttention = "business";
+				r += `${slave.slaveName} no longer has your personal attention; you plan to focus on ${V.personalAttention}.`;
+			} else
+				r += `${slave.slaveName} no longer has your personal attention.`;
+		}
+	}
+	return r;
+};
+
+window.removeJob = function removeJob(slave, assignment) {
+	"use strict";
+	const V = State.variables;
+	let r = "";
+	
+	const idx = V.slaveIndices[slave.ID];
+
+	if (assignment === "Pit")
+		V.fighterIDs.delete(slave.ID);
+
+	else if (assignment === "Coursing Association")
+		V.Lurcher = 0;
+
+	else {
+		if (V.HeadGirl !== 0 && slave.ID === V.HeadGirl.ID)
+			V.HeadGirl = 0;
+		if (V.Recruiter !== 0 && slave.ID == V.Recruiter.ID)
+			V.Recruiter = 0;
+		if (V.Bodyguard !== 0 && slave.ID === V.Bodyguard.ID)
+			V.Bodyguard = 0;
+		if (V.Madam !== 0 && slave.ID === V.Madam.ID)
+			V.Madam = 0;
+		if (V.DJ !== 0 && slave.ID === V.DJ.ID)
+			V.DJ = 0;
+		if (V.Milkmaid !== 0 && slave.ID === V.Milkmaid.ID)
+			V.Milkmaid = 0;
+		if (V.Schoolteacher !== 0 && slave.ID === V.Schoolteacher.ID)
+			V.Schoolteacher = 0;
+		if (V.Attendant !== 0 && slave.ID === V.Attendant.ID)
+			V.Attendant = 0;
+		if (V.Nurse !== 0 && slave.ID === V.Nurse.ID)
+			V.Nurse = 0;
+		if (V.Stewardess !== 0 && slave.ID === V.Stewardess.ID)
+			V.Stewardess = 0;
+		if (V.Wardeness !== 0 && slave.ID === V.Wardeness.ID)
+			V.Wardeness = 0;
+		if (V.Concubine !== 0 && slave.ID === V.Concubine.ID)
+			V.Concubine = 0;
+		if (V.Collectrix !== 0 && slave.ID === V.Collectrix.ID)
+			V.Collectrix = 0;
+
+		/* use .toLowerCase() to get rid of a few dupe conditions. */
+		switch (assignment.toLowerCase()) {
+		case "be confined in the arcade":
+		case "arcade":
+			slave.assignment = "work a glory hole";
+			V.ArcadeiIDs.delete(slave.ID);
+			V.arcadeSlaves--;
+			break;
+
+		case "work in the brothel":
+		case "brothel":
+			slave.assignment = "whore";
+			V.BrothiIDs.delete(slave.ID);
+			V.brothelSlaves--;
+			break;
+
+		case "be confined in the cellblock":
+		case "cellblock":
+			slave.assignment = "rest";
+			if (slave.inflation > 0) {
+				slave.inflation = 0;
+				slave.inflationType = "none";
+				slave.inflationMethod = 0;
+				SetBellySize(slave);
+			}
+			V.CellBiIDs.delete(slave.ID);
+			V.cellblockSlaves--;
+			break;
+
+		case "get treatment in the clinic":
+		case "clinic":
+			slave.assignment = "rest";
+			V.CliniciIDs.delete(slave.ID);
+			V.clinicSlaves--;
+			break;
+
+		case "serve in the club":
+		case "club":
+			slave.assignment = "serve the public";
+			V.ClubiIDs.delete(slave.ID);
+			V.clubSlaves--;
+			break;
+
+		case "work in the dairy":
+		case "dairy":
+			slave.assignment = "get milked";
+			V.DairyiIDs.delete(slave.ID);
+			V.dairySlaves--;
+			break;
+
+		case "learn in the schoolroom":
+		case "schoolroom":
+			slave.assignment = "rest";
+			V.SchlRiIDs.delete(slave.ID);
+			V.schoolroomSlaves--;
+			break;
+
+		case "rest in the spa":
+		case "spa":
+			slave.assignment = "rest";
+			V.SpaiIDs.delete(slave.ID);
+			V.spaSlaves--;
+			break;
+
+		case "work as a servant":
+		case "servants' quarters":
+		case "servantsquarters":
+			slave.assignment = "be a servant";
+			V.ServQiIDs.delete(slave.ID);
+			V.servantsQuartersSlaves--;
+			break;
+
+		case "serve in the master suite":
+		case "master suite":
+		case "mastersuite":
+			slave.assignment = "please you";
+			V.MastSiIDs.delete(slave.ID);
+			V.masterSuiteSlaves--;
+			break;
+
+		case "live with your head girl":
+		case "head girl suite":
+		case "hgsuite":
+			slave.assignment = "rest";
+			V.HGSuiteiIDs.delete(slave.ID);
+			V.HGSuiteSlaves--;
+			break;
+
+		case "be your head girl":
+			slave.assignment = "rest";
+			if (V.HGSuiteEquality === 0 && V.personalAttention === "HG") {
+				if (V.PC.career === "escort")
+					V.personalAttention = "whoring";
+				else if (V.PC.career === "servant")
+					V.personalAttention = "upkeep";
+				else
+					V.personalAttention = "business";
+				
+				r += `You no longer have a slave assigned to be your Head Girl, so you turn your personal attention to focus on ${V.personalAttention}.`;
+			}
+			break;
+			
+		case "be your agent":
+		case "live with your agent":
+			slave.assignment = "rest";
+			const _leaderIndex = V.leaders.findIndex(function(x) { return x.ID === slave.ID; });
+			if (_leaderIndex !== -1)
+				V.leaders.deleteAt(_leaderIndex);
+			
+			if (slave.relationshipTarget > 0) { /* following code assumes there can be at most one companion */
+				const _lover = V.slaves.findIndex(function(s) { return haveRelationshipP(s, slave) && s.assignment === "live with your agent"; });
+				if (_lover !== -1) {
+					V.slaves[_lover].assignment = "rest";
+					V.slaves[_lover].assignmentVisible = 1;
+				}
+			}
+			break;
+			
+		default:
+			slave.assignment = "rest";
+			break;
+		}
+
+		
+		if (slave.livingRules === "luxurious" && slave.assignmentVisible !== 1)
+			slave.livingRules = "normal";
+		
+		slave.assignmentVisible = 1;
+		slave.choosesOwnAssignment = 0;
+		slave.sentence = 0;
+	}
+	return r;
+};
diff --git a/src/js/clothingSelectionJS.tw b/src/js/clothingSelectionJS.tw
index f125c4342eba31f239d0ba79182b56e1b7becd06..a71191212cdbb50666751ea465f69828c8381501 100644
--- a/src/js/clothingSelectionJS.tw
+++ b/src/js/clothingSelectionJS.tw
@@ -720,4 +720,4 @@ window.todaysCorset = function(slave) {
 		}
 	}
 	return jsEither(belly);
-}
\ No newline at end of file
+}
diff --git a/src/js/colorModeJS.tw b/src/js/colorModeJS.tw
index 165c376cc8a430d7c93c5c7dcbe9a5e7d0f2a01d..f45e6f0fbcfaf7dbf4c907b1260fb73a29c7270c 100644
--- a/src/js/colorModeJS.tw
+++ b/src/js/colorModeJS.tw
@@ -24,4 +24,4 @@ window.setColors = function(colorMap){
             }
         });
     });
-}
\ No newline at end of file
+}
diff --git a/src/js/eventSelectionJS.tw b/src/js/eventSelectionJS.tw
index 359f3ddae649ff931f91bdcd7599a054c82195ff..2d76cf48861aadef6bc2ece6ce86739dc16ea5d5 100644
--- a/src/js/eventSelectionJS.tw
+++ b/src/js/eventSelectionJS.tw
@@ -2958,4 +2958,4 @@ window.populateEventArray = function(RESS = State.variables.RESSevent.length, RE
 	}
 
 	return events;
-}
\ No newline at end of file
+}
diff --git a/src/js/hTagMacroJS.tw b/src/js/hTagMacroJS.tw
index db8d845a8e01ab6a325ede5e67a3c6b0ce8a8e4d..9a8f8cac6a40b72cdaff7712be0601065906e96f 100644
--- a/src/js/hTagMacroJS.tw
+++ b/src/js/hTagMacroJS.tw
@@ -14,41 +14,26 @@
  * Usage: <<htag atributes>>...<</htag>>    
  * Usage: <<htag atributes tag>>...<</htag>>    
  */
-Macro
-    .add(
-        'htag',
-        {   tags            : null
-        ,   handler()
-            {
-		const payload   =   this.payload[0].contents.replace(/(^\n+|\n+$)/, '');
-		let htag        =   'div';
+Macro.add('htag', {
+	tags: null,
+	handler() {
+		const payload = this.payload[0].contents.replace(/(^\n+|\n+$)/, '');
+		let htag = 'div';
 		let attributes;
-
-                var     munge   =   function (val, key) 
-                {
-                    return  key + '="' + val + '"';
-                };
-		
-                if  (1  >  this.args.length)
-                {
-                    return  
-                        this.error(
-                            'invalid syntax, format: <<htag [id [ tag ] | attributes [ tag ] >>'
-                        );
+		function munge (val, key)  {
+			return  key + '="' + val + '"';
 		}
-                if  (1  <  this.args.length)
-                {
-                    htag    =   String(this.args[1]).trim();
-                }
-                if  ("object"   === typeof this.args[0])
-                {
-                    attributes  =   $.map(this.args[0], munge).join(" ");
-                }
-                else
-                {
-                    attributes  =   'id="' + String(this.args[0]).trim() + '"';
-                }
-		Config.debug && this.debugView.modes({block: true});
+		
+		if (1  >  this.args.length)
+			return this.error('invalid syntax, format: <<htag [id [ tag ] | attributes [ tag ] >>');
+		if (1  <  this.args.length)
+			htag = String(this.args[1]).trim();
+		if ("object" === typeof this.args[0])
+			attributes = $.map(this.args[0], munge).join(" ");
+		else
+			attributes = 'id="' + String(this.args[0]).trim() + '"';
+		if (Config.debug)
+			this.debugView.modes({block: true});
 		
 		jQuery('<' + htag + ' ' + attributes + ' />')
 			.wiki(payload)
diff --git a/src/js/pregJS.tw b/src/js/pregJS.tw
index 83990994dccc363c553d1c7ffa079fe8bddd8cde..016e35ec3a05c785577ccb74f885c40acdf877db 100644
--- a/src/js/pregJS.tw
+++ b/src/js/pregJS.tw
@@ -148,4 +148,4 @@ window.getIncubatorReserved = function(slaves) {
 			count += s.reservedChildren;
 		});
 	return count;
-}
\ No newline at end of file
+}
diff --git a/src/js/quickListJS.tw b/src/js/quickListJS.tw
index 4c4dbe3e45caeabd782e9b411102322167505ac5..a712681b18ba7ff44f59ff237990e402c7b3f23d 100644
--- a/src/js/quickListJS.tw
+++ b/src/js/quickListJS.tw
@@ -1,135 +1,90 @@
 :: Quick List [script]
 
-window.sortDomObjects = function (objects, attrName, reverse = 0)
-{
-    reverse =   (reverse)
-            ?   -1
-            :   1
-            ;
-    var sortingByAttr = function (a, b)
-    {
-        var     aVal    =   a.getAttribute(attrName)
-            ,   bVal    =   b.getAttribute(attrName)
-            ;
-        var     aInt    =   parseInt(aVal)
-            ;
-        if  (!isNaN(aInt))
-        {
-            return  ((parseInt(bVal) - aInt) * reverse);
-        }
-        else if (bVal > aVal)
-        {
-            return  -1 * reverse;
-        }
-        return  ((aVal == bVal) ? 0 : 1) * reverse;
-    };
-    return  objects.toArray().sort(sortingByAttr);
+window.sortDomObjects = function (objects, attrName, reverse = 0) {
+	reverse = (reverse) ? -1 : 1;
+	function sortingByAttr (a, b) {
+		var aVal = a.getAttribute(attrName);
+		var bVal = b.getAttribute(attrName);
+		var aInt = parseInt(aVal);
+		if  (!isNaN(aInt))
+			return ((parseInt(bVal) - aInt) * reverse);
+		else if (bVal > aVal)
+			return -1 * reverse;
+		return ((aVal == bVal) ? 0 : 1) * reverse;
+	}
+	return objects.toArray().sort(sortingByAttr);
 };
 
-window.sortButtonsByDevotion    =   function ()
-{
-    var $sortedButtons   =  $('#qlWrapper button').remove();
-
-    $sortedButtons  =   sortDomObjects($sortedButtons, 'data-devotion');
-
-    $($sortedButtons).appendTo($('#qlWrapper'));
-    quickListBuildLinks();
+window.sortButtonsByDevotion = function () {
+	var $sortedButtons = $('#qlWrapper button').remove();
+	$sortedButtons = sortDomObjects($sortedButtons, 'data-devotion');
+	$($sortedButtons).appendTo($('#qlWrapper'));
+	quickListBuildLinks();
 };
 
-window.sortButtonsByTrust   =   function ()
-{
-    var $sortedButtons   =  $('#qlWrapper button').remove();
-
-    $sortedButtons  =   sortDomObjects($sortedButtons, 'data-trust');
-
-    $($sortedButtons).appendTo($('#qlWrapper'));
-    quickListBuildLinks();
+window.sortButtonsByTrust = function () {
+	var $sortedButtons = $('#qlWrapper button').remove();
+	$sortedButtons = sortDomObjects($sortedButtons, 'data-trust');
+	$($sortedButtons).appendTo($('#qlWrapper'));
+	quickListBuildLinks();
 };
 
-window.quickListBuildLinks  =   function ()
-{
-    $("[data-scroll-to]").click(function() {
-            var     $this = $(this), $toElement = $this.attr('data-scroll-to'),
-                    /*
-                    * note the * 1 enforces $offset to be an integer, without
-                    *       it we scroll to True, which goes nowhere fast.
-                    */
-                    $offset =   $this.attr('data-scroll-offset')    * 1 || 0,
-                    $speed  =   $this.attr('data-scroll-speed')     * 1 || 500
-                ;
-            /*
-            *   Use javascript scrollTop animation for in page navigation.
-            */
-            $('html, body').animate({
-                    scrollTop: $($toElement).offset().top + $offset
-            }, $speed);
-    });
+window.quickListBuildLinks = function () {
+	$("[data-scroll-to]").click(function() {
+		var $this = $(this), $toElement = $this.attr('data-scroll-to');
+		// note the * 1 enforces $offset to be an integer, without
+		// it we scroll to True, which goes nowhere fast.
+                var $offset = $this.attr('data-scroll-offset') * 1 || 0;
+                var $speed =   $this.attr('data-scroll-speed') * 1 || 500;
+		// Use javascript scrollTop animation for in page navigation.
+		$('html, body').animate({
+			scrollTop: $($toElement).offset().top + $offset
+		}, $speed);
+	});
 };
 
-window.sortIncubatorPossiblesByName =   function ()
-{
-    var $sortedIncubatorPossibles   =  $('#qlIncubator div.possible').detach();
-
-    $sortedIncubatorPossibles   =   sortDomObjects($sortedIncubatorPossibles, 'data-name');
-
-    $($sortedIncubatorPossibles).appendTo($('#qlIncubator'));
+window.sortIncubatorPossiblesByName = function () {
+	var $sortedIncubatorPossibles = $('#qlIncubator div.possible').detach();
+	$sortedIncubatorPossibles = sortDomObjects($sortedIncubatorPossibles, 'data-name');
+	$($sortedIncubatorPossibles).appendTo($('#qlIncubator'));
 };
 
-window.sortIncubatorPossiblesByPregnancyWeek    =   function ()
-{
-    var $sortedIncubatorPossibles   =  $('#qlIncubator div.possible').detach();
-
-    $sortedIncubatorPossibles   =   sortDomObjects($sortedIncubatorPossibles, 'data-preg-week');
-
-    $($sortedIncubatorPossibles).appendTo($('#qlIncubator'));
+window.sortIncubatorPossiblesByPregnancyWeek = function () {
+	var $sortedIncubatorPossibles = $('#qlIncubator div.possible').detach();
+	$sortedIncubatorPossibles = sortDomObjects($sortedIncubatorPossibles, 'data-preg-week');
+	$($sortedIncubatorPossibles).appendTo($('#qlIncubator'));
 };
 
-window.sortIncubatorPossiblesByPregnancyCount   =   function ()
-{
-    var $sortedIncubatorPossibles   =  $('#qlIncubator div.possible').detach();
-
-    $sortedIncubatorPossibles   =   sortDomObjects($sortedIncubatorPossibles, 'data-preg-count');
-
-    $($sortedIncubatorPossibles).appendTo($('#qlIncubator'));
+window.sortIncubatorPossiblesByPregnancyCount = function () {
+	var $sortedIncubatorPossibles = $('#qlIncubator div.possible').detach();
+	$sortedIncubatorPossibles = sortDomObjects($sortedIncubatorPossibles, 'data-preg-count');
+	$($sortedIncubatorPossibles).appendTo($('#qlIncubator'));
 };
 
-window.sortIncubatorPossiblesByReservedSpots    =   function ()
-{
-    var $sortedIncubatorPossibles   =  $('#qlIncubator div.possible').detach();
-
-    $sortedIncubatorPossibles   =   sortDomObjects($sortedIncubatorPossibles, 'data-reserved-spots');
-
-    $($sortedIncubatorPossibles).appendTo($('#qlIncubator'));
+window.sortIncubatorPossiblesByReservedSpots = function () {
+	var $sortedIncubatorPossibles = $('#qlIncubator div.possible').detach();
+	$sortedIncubatorPossibles = sortDomObjects($sortedIncubatorPossibles, 'data-reserved-spots');
+	$($sortedIncubatorPossibles).appendTo($('#qlIncubator'));
 };
 
-window.sortIncubatorPossiblesByPreviousSort    =   function ()
-{
-    var     sort    =   State.variables.sortIncubatorList
-        ;
-console.log(State.variables);
-console.log('sort', sort);
-    if  ('unsorted' !=  sort)
-    {
-console.log("sort isn't unsorted", sort);
-        if  ('Name' ==  sort)
-        {
-console.log("sort is name", sort);
-            sortIncubatorPossiblesByName();
-        }
-        else if ('Reserved Incubator Spots' ==  sort)
-        {
-console.log("sort is spots", sort);
-            sortIncubatorPossiblesByReservedSpots();
-        }
-        else if ('Pregnancy Week'   ==  sort)
-        {
-console.log("sort is week", sort);
-            sortIncubatorPossiblesByPregnancyWeek();
-        }
-        else if ('Number of Children'   ==  sort)
-        {
-console.log("sort is count", sort);
-            sortIncubatorPossiblesByPregnancyCount();
-        }
-    }
+window.sortIncubatorPossiblesByPreviousSort = function () {
+	var sort = State.variables.sortIncubatorList;
+	console.log(State.variables);
+	console.log('sort', sort);
+	if ('unsorted' !==  sort) {
+		console.log("sort isn't unsorted", sort);
+		if  ('Name' ===  sort) {
+			console.log("sort is name", sort);
+			sortIncubatorPossiblesByName();
+		} else if ('Reserved Incubator Spots' === sort) {
+			console.log("sort is spots", sort);
+			sortIncubatorPossiblesByReservedSpots();
+		} else if ('Pregnancy Week' === sort) {
+			console.log("sort is week", sort);
+			sortIncubatorPossiblesByPregnancyWeek();
+		} else if ('Number of Children' === sort) {
+			console.log("sort is count", sort);
+			sortIncubatorPossiblesByPregnancyCount();
+		}
+	}
 };
diff --git a/src/js/raJS.tw b/src/js/raJS.tw
deleted file mode 100644
index 55de79d75324387528d864bbce0911b6a16ee3a5..0000000000000000000000000000000000000000
--- a/src/js/raJS.tw
+++ /dev/null
@@ -1,165 +0,0 @@
-:: RA JS [script]
-
-window.ruleApplied = function(slave, ID) {
-	if (!slave || !slave.currentRules)
-		return null;
-	return slave.currentRules.includes(ID);
-};
-
-window.ruleSlaveSelected = function(slave, rule) {
-	if (!slave || !rule || !rule.selectedSlaves)
-		return false;
-	return rule.selectedSlaves.includes(slave.ID);
-};
-
-window.ruleSlaveExcluded = function(slave, rule) {
-	if (!slave || !rule || !rule.excludedSlaves)
-		return false;
-	return rule.excludedSlaves.includes(slave.ID);
-};
-
-window.ruleAssignmentSelected = function(slave, rule) {
-	if (!slave || !rule || (!rule.assignment && !rule.facility))
-		return false;
-	var assignment = rule.assignment.concat(expandFacilityAssignments(rule.facility));
-	return assignment.includes(slave.assignment);
-}
-
-window.ruleAssignmentExcluded = function(slave, rule) {
-	if (!slave || !rule || (!rule.excludeAssignment && !rule.excludeFacility))
-		return false;
-	var excludeAssignment = rule.excludeAssignment.concat(expandFacilityAssignments(rule.excludeFacility));
-	return excludeAssignment.includes(slave.assignment);
-}
-
-window.hasSurgeryRule = function(slave, rules) {
-	if (!slave || !rules || !slave.currentRules)
-		return false;
-
-	for (var d = rules.length-1; d >= 0; d--) {
-		if (ruleApplied(slave, rules[d].ID)) {
-			if (rules[d].autoSurgery > 0) {
-				return true;
-			}
-		}
-	}
-	return false;
-};
-
-window.hasRuleFor = function(slave, rules, what) {
-	if (!slave || !rules || !slave.currentRules)
-		return false;
-
-	for (var d = rules.length-1; d >= 0; d--) {
-		if (ruleApplied(slave, rules[d].ID)) {
-			if (rules[d][what] !== "no default setting") {
-				return true;
-			}
-		}
-	}
-	return false;
-};
-
-window.hasHColorRule = function(slave, rules) {
-	return hasRuleFor(slave, rules, "hColor");
-}
-
-window.hasHStyleRule = function(slave, rules) {
-	return hasRuleFor(slave, rules, "hStyle");
-};
-
-window.hasEyeColorRule = function(slave, rules) {
-	return hasRuleFor(slave, rules, "eyeColor");
-};
-
-window.lastPregRule = function(slave, rules) {
-	if (!slave || !rules)
-		return null;
-	if (!slave.currentRules)
-		return false;
-
-	for (var d = rules.length-1; d >= 0; d--) {
-		if (ruleApplied(slave, rules[d].ID)) {
-			if (rules[d].preg == -1) {
-				return true;
-			}
-		}
-	}
-
-	return null;
-};
-
-window.autoSurgerySelector = function(slave, ruleset)
-{
-
-	var appRules = ruleset.filter(function(rule){
-			return (rule.autoSurgery == 1) && this.currentRules.contains(rule.ID);
-		}, slave);
-
-	var surgery = {eyes: "no default setting", lactation: "no default setting", cosmetic: "nds", accent: "no default setting", shoulders: "no default setting", shouldersImplant: "no default setting", boobs: "no default setting", hips: "no default setting", hipsImplant: "no default setting", butt: "no default setting", faceShape: "no default setting", lips: "no default setting", holes: "nds", bodyhair: "nds", hair: "nds", bellyImplant: "no default setting"};
-	var i, key, ruleSurgery;
-
-	for (i in appRules)
-	{
-		ruleSurgery = appRules[i].surgery;
-		for (key in ruleSurgery)
-		{
-			if (ruleSurgery[key] != "no default setting" || ruleSurgery[key] != "nds")
-			{	
-				surgery[key] = ruleSurgery[key];
-			}
-		}
-	}
-
-	return surgery;
-}
-
-window.mergeRules = function(rules) {
-    var combinedRule = {};
-
-    for (var i = 0; i < rules.length; i++) {
-        for (var prop in rules[i]) {
-            // A rule overrides any preceding ones if,
-            //   * there are no preceding ones,
-            //   * or it sets autoBrand,
-            //   * or it does not set autoBrand and is not "no default setting"
-            var applies = (
-                combinedRule[prop] === undefined
-                || (prop === "autoBrand" && rules[i][prop])
-                || (prop !== "autoBrand" && rules[i][prop] !== "no default setting")
-            );
-
-            if (applies)
-            {
-
-            	//Objects in JS in operations "=" pass by reference, so we need a completely new object to avoid messing up previous rules.
-            	if ("object" == typeof rules[i][prop] && "object" != typeof combinedRule[prop])
-            		combinedRule[prop] = new Object();
-
-            	//If we already have object - now we will process its properties, but object itself should be skipped.
-            	if ("object" != typeof combinedRule[prop])
-                	combinedRule[prop] = rules[i][prop];
-
-            	/*Some properties of rules now have second level properties. We need to check it, and change ones in combinedRule. (Good example - growth drugs. Breasts, butt, etc...) */
-            	if ( "object" == typeof rules[i][prop])
-    	        {
-	            	for (var subprop in rules[i][prop])
-    	        	{
-    	           		var subapplies = (
-            	    	combinedRule[prop][subprop] === undefined
-                			|| (rules[i][prop][subprop] !== "no default setting")
-	            		);
-
-		            	if (subapplies)
-    		            	combinedRule[prop][subprop] = rules[i][prop][subprop];
-    		        }
-
-            	}
-           	}
-
-        }
-
-    }
-
-    return combinedRule;
-}
\ No newline at end of file
diff --git a/src/js/raSelectorJS.tw b/src/js/raSelectorJS.tw
deleted file mode 100644
index a53177cc7c7b8f71cd8bed01055b4c49b207eb40..0000000000000000000000000000000000000000
--- a/src/js/raSelectorJS.tw
+++ /dev/null
@@ -1,136 +0,0 @@
-:: RA Selector JS [script]
-
-window.growAdvSelector = function(slave, rule) {
-
-	var ret = "";
-	var setd = 0;
-
-	if ((rule.breastSize == "small" && slave.boobs < 350) ||
-		(rule.breastSize == "c-cup" && slave.boobs < 550) ||
-		(rule.breastSize == "f-cup" && slave.boobs < 1100) ||
-		(rule.breastSize == "k-cup" && slave.boobs < 2150) ||
-		(rule.breastSize == "p-cup" && slave.boobs < 3700) ||
-		(rule.breastSize == "unlimited" && slave.boobs < 24000))	
-	{ 
-		slave.drugs = "breast injections"; 
-		ret = slave.slaveName + "'s boobs could be bigger, so she's been put on breast injections.";
-		return ret;
-	}
-	
-	if ((rule.buttSize == "small" && slave.butt < 1) ||
-		(rule.buttSize == "plump" && slave.butt < 3) ||
-		(rule.buttSize == "huge" && slave.butt < 4) ||
-		(rule.buttSize == "enormous" && slave.butt < 6) ||
-		(rule.buttSize == "unlimited" && slave.butt < 19))	
-	{ 
-		slave.drugs = "butt injections"; 
-		ret = slave.slaveName + "'s butt could be bigger, so she's been put on butt injections.";
-		return ret;
-	}
-
-	if (slave.balls > 0 &&
-		((rule.ballSize == "small" && slave.balls < 2) ||
-		 (rule.ballSize == "big" && slave.balls < 4) ||
-		 (rule.ballSize == "huge" && slave.balls < 6) ||
-		 (rule.ballSize == "unlimited" && slave.balls < 9)))		
-	{ 
-		slave.drugs = "testicle enhancement"; 
-		ret = slave.slaveName + "'s balls aren't large enough, so she's been put on testicle enhancement.";
-		return ret;
-	}
-
-	if (slave.dick > 0 &&
-		((rule.penisSize == "small" && slave.dick < 2) ||
-		 (rule.penisSize == "big" && slave.dick < 4) ||
-		 (rule.penisSize == "huge" && slave.dick < 6) ||
-		 (rule.penisSize == "unlimited" && slave.dick < 12)))
-	{ 
-		slave.drugs = "penis enhancement"; 
-		ret = slave.slaveName + "'s dick isn't large enough, so she's been put on penis enhancement.";
-		return ret;
-	}
-
-	if ((rule.lipSize == "normal" && slave.lips < 15) ||
-		(rule.lipSize == "pretty" && slave.lips < 30) ||
-		(rule.lipSize == "plush" && slave.lips < 55) ||
-		(rule.lipSize == "huge" && slave.lips < 85) ||
-		(rule.lipSize == "facepussy" && slave.lips < 99))	
-	{ 
-		slave.drugs = "lip injections"; 
-		ret = slave.slaveName + "'s lips aren't large enough, so she's been put on lips enhancement.";
-		return ret;
-	}
-
-	if (slave.drugs != "no drugs")
-	{
-		slave.drugs = "no drugs";
-		ret = slave.slaveName + " has reached growth targets and has been taken off growth injections.";
-	}
-
-	return ret;
-
-}
-
-window.growAdvSelectorSlim = function(slave, rule) {
-
-	var ret = "";
-	var setd = 0;
-
-	if ((rule.breastSize == "small" && slave.boobs > 350) ||
-		(rule.breastSize == "c-cup" && slave.boobs > 550) ||
-		(rule.breastSize == "f-cup" && slave.boobs > 1100) ||
-		(rule.breastSize == "k-cup" && slave.boobs > 2150) ||
-		(rule.breastSize == "p-cup" && slave.boobs > 3700))	
-	{ 
-		slave.drugs = "breast redistributors"; 
-		ret = slave.slaveName + "'s boobs are too big, so she's been put on breast reduction drugs.";
-		return ret;
-	}
-	
-	if ((rule.buttSize == "small" && slave.butt > 1) ||
-		(rule.buttSize == "plump" && slave.butt > 3) ||
-		(rule.buttSize == "huge" && slave.butt > 4) ||
-		(rule.buttSize == "enormous" && slave.butt > 6))	
-	{ 
-		slave.drugs = "butt redistributors"; 
-		ret = slave.slaveName + "'s butt is too big, so she's been put on butt reduction drugs.";
-		return ret;
-	}
-
-	if ((rule.ballSize == "small" && slave.balls > 2) ||
-		(rule.ballSize == "big" && slave.balls > 4) ||
-		(rule.ballSize == "huge" && slave.balls > 6))	
-	{ 
-		slave.drugs = "testicle atrophiers"; 
-		ret = slave.slaveName + "'s balls are too big, so she's been put on testicle atrophiers.";
-		return ret;
-	}
-
-	if ((rule.penisSize == "small" && slave.dick > 2) ||
-		(rule.penisSize == "big" && slave.dick > 4) ||
-		(rule.penisSize == "huge" && slave.dick > 6))	
-	{ 
-		slave.drugs = "penis atrophiers"; 
-		ret = slave.slaveName + "'s dick is too big, so she's been put on penis atrophiers.";
-		return ret;
-	}
-
-	if ((rule.lipSize == "normal" && slave.lips > 15) ||
-		(rule.lipSize == "pretty" && slave.lips > 30) ||
-		(rule.lipSize == "plush" && slave.lips > 55) ||
-		(rule.lipSize == "huge" && slave.lips > 85))	
-	{ 
-		slave.drugs = "lip atrophiers"; 
-		ret = slave.slaveName + "'s lips are too big, so she's been put on lips atrophiers.";
-		return ret;
-	}
-
-	if (slave.drugs != "no drugs")
-	{
-		slave.drugs = "no drugs";
-		ret = slave.slaveName + " has reached growth targets and has been taken off growth injections.";
-	}
-
-	return ret;
-
-}
diff --git a/src/js/rulesAssistant.tw b/src/js/rulesAssistant.tw
index b644b99790cfaf29a5ca194fa9f9dfaa3f998db8..3fe4f0d898e9234214e7faf44e865384f5e6b90d 100644
--- a/src/js/rulesAssistant.tw
+++ b/src/js/rulesAssistant.tw
@@ -1,348 +1,316 @@
 :: rulesAssistant [script]
 
-function panic(message) {
-    message = message || "panic";
-    if (typeof Error !== "undefined") {
-        throw new Error(message);
-    }
-    throw message;
-}
-
-function assert(condition, message) {
-    if (!condition)
-        panic(message || "Assertion failed");
-}
-
-
-window.isSimpleCondition = function(expr, validNames) {
-    assert(validNames, "validNames was not given");
-
-    switch (expr.id) {
-    case "true": case "false":
-        return true;
-
-    case "<": case "<=": case ">": case ">=":
-        return (
-            expr.first.id === "(name)"              // first operand should be a name
-            && validNames.includes(expr.first.name) // among the valid ones
-            && expr.second.id === "(number)"        // and second should be a literal
-        );
-
-    case "&&": case "||":
-        return (
-            (expr.first.id == "<" || expr.first.id == "<=")
-            && (expr.second.id == ">" || expr.second.id == ">=")
-            && isSimpleCondition(expr.first, validNames)
-            && isSimpleCondition(expr.second, validNames)
-            && expr.first.first.name === expr.second.first.name
-        );
-    }
-    return false;
-}
-
-
-window.getVariable = function(expr) {
-    switch (expr.id) {
-    case "true":
-        return "always";
-    case "false":
-        return "none";
-    case "<": case "<=": case ">": case ">=":
-        return expr.first.name === "energy" ? "sex drive" : expr.first.name;
-    case "&&": case "||":
-        return getVariable(expr.first);
-    }
-}
-
-window.changeVariable = function(expr, newVar) {
-    //assert(isSimpleCondition(expr), "expr is not simple");
-
-    switch (expr.id) {
-    case "true": case "false":
-        return {
-            id: "<",
-            first: {id: "(name)", name: newVar},
-            second: {id: "(number)", value: 0}
-        };
-
-    case "<": case "<=": case ">": case ">=":
-        expr.first.name = newVar;
-        return expr;
-
-    case "&&": case "||":
-        expr.first.first.name = newVar;
-        expr.second.first.name = newVar;
-        return expr;
-    }
-}
-
-
-window.changeComparison = function(expr, newComparison) {
-    assert(expr.id !== "true" && expr.id !== "false", "expr is constant");
-    //assert(isSimpleCondition(expr), "expr is not simple");
-
-    var newOperand = {
-        id: newComparison,
-        first: {id: "(name)", name: expr.first.name},
-        second: {id: "(number)", value: 0}
-    };
-
-    if (newComparison === "<" || newComparison === "<=") {
-        switch (expr.id) {
-        case "<": case "<=":
-            expr.id = newComparison;
-            return expr;
-        case ">": case ">=":
-            return { id: "&&", first: newOperand, second: expr };
-        case "&&": case "||":
-            expr.first.id = newComparison;
-            return expr;
-        }
-    } else {
-        switch (expr.id) {
-        case "<": case "<=":
-            return { id: "&&", first: expr, second: newOperand };
-        case ">": case ">=":
-            expr.id = newComparison;
-            return expr;
-        case "&&": case "||":
-            expr.second.id = newComparison;
-            return expr;
-        }
-    }
-}
-
-window.removeComparison = function(expr, comparisonType) {
-    assert(expr.id !== "true" && expr.id !== "false", "expr is constant");
-    //assert(isSimpleCondition(expr), "expr is not simple");
-    assert(comparisonType === "lower" || comparisonType === "upper",
-           "invalid comparisonType '" + comparisonType + "'");
-
-    if (comparisonType === "lower") {
-        switch (expr.id) {
-        case "<": case "<=":
-            return expr;
-        case ">": case ">=":
-            return { id: "true" };
-        case "&&": case "||":
-            return expr.first;
-        }
-    } else {
-        switch (expr.id) {
-        case "<": case "<=":
-            return { id: "false" };
-        case ">": case ">=":
-            return expr;
-        case "&&": case "||":
-            return expr.second;
-        }
-    }
-}
-
-
-window.changeConnective = function(expr, newConnective) {
-    switch (expr.id) {
-    case "true": case "false":
-    case "<": case "<=": case ">": case ">=":
-        return expr;
-    case "&&": case "||":
-        expr.id = newConnective;
-        return expr;
-    }
-}
-
-
-window.unparseExpr = function(expr) {
-    switch (expr.id) {
-
-    // literals
-    case "true":
-        return "true";
-    case "false":
-        return "false";
-	case "(number)": 
-		return expr.value;
-	case "(string)":
-		return '"' + expr.value + '"';
-
-    // names
-    case "(name)":
-        return expr.name;
-
-    // logical infix operators
-    case "&&": case "||":
-    // numerical infix comperators
-    case "<": case "<=":
-    case ">": case ">=":
-    case "=": case "!=":
-    // numerical infix operators (excluding minus)
-    case "+": case "*": case "/": case "^":
-        return [unparseExpr(expr.first),
-                expr.id,
-                unparseExpr(expr.second)].join(" ");
-
-    // unary/prefix operators
-    case "!":
-        return expr.id + unparseExpr(expr.first);
-
-    case "-":
-        if (expr.second !== undefined) {
-            return unparseExpr(expr.first) + " - " + unparseExpr(expr.second);
-        } else {
-            return "-" + unparseExpr(expr.first);
-        }
-
-    // parentheses
-    case "(":
-        return "(" + unparseExpr(expr.first) + ")";
-    }
-
-    panic("how did I get here? unknown expr.id: " + expr.id);
-}
-
-window.typeExpr = function(expr, env) {
-    switch (expr.id) {
-
-    case "true": case "false":
-        return "bool";
-    case "(number)":
-        return "number";
-    case "(string)":
-        return "string";
-
-    case "(name)":
-        return env[expr.name];
-
-    case "&&": case "||":
-        return "bool";
-
-    case "<": case "<=":
-    case ">": case ">=":
-        return "bool";
-    case "=": case "!=":
-        return "bool";
-
-    case "*": case "/":  case "^":
-        return "number";
-
-    case "+":
-        return typeExpr(expr.first, env) === "string" ? "string" : "number";
-
-    case "!":
-        return typeExpr(expr.first, env);
-    case "-":
-        if (expr.second !== undefined) {
-            return "number";
-        } else {
-            return typeExpr(expr.first, env);
-        }
-
-    case "(":
-        return typeExpr(expr.first, env);
-    }
-}
-
-window.evalExpr = function(expr, env) {
-    switch (expr.id) {
-
-    case "true":
-        return true;
-    case "false":
-        return false;
-    case "(number)":
-        return expr.value;
-	case "(string)":
-		if(expr.value.startsWith('"') && expr.value.endsWith('"')) {
-			return JSON.parse(expr.value);
-		} else {
-			return expr.value;
+window.hasSurgeryRule = function(slave, rules) {
+	return rules.some(
+		rule => ruleApplied(slave, rule.ID) && rule.autoSurgery > 0);
+};
+
+window.hasRuleFor = function(slave, rules, what) {
+	return rules.some(
+		rule => ruleApplied(slave, rule) && rule[what] !== "no default setting");
+};
+
+window.hasHColorRule = function(slave, rules) {
+	return hasRuleFor(slave, rules, "hColor");
+};
+
+window.hasHStyleRule = function(slave, rules) {
+	return hasRuleFor(slave, rules, "hStyle");
+};
+
+window.hasEyeColorRule = function(slave, rules) {
+	return hasRuleFor(slave, rules, "eyeColor");
+};
+
+window.lastPregRule = function(slave, rules) {
+	return rules.some(rule =>
+		ruleApplied(slave, rule) && rule.set.preg === -1);
+};
+
+window.mergeRules = function mergeRules(rules) {
+	const combinedRule = {};
+	rules.forEach(rule => {
+		// A rule overrides any preceding ones if,
+		//   * there are no preceding ones,
+		//   * or it sets autoBrand,
+		//   * or it does not set autoBrand and is not "no default setting"
+		Object.keys(rule).forEach(key => {
+			const applies = (combinedRule[key] === undefined ||
+				(key === "autoBrand" && rule[key]) ||
+				(key !== "autoBrand" && rule[key] !== "no default setting"));
+			if (!applies) return;
+			combinedRule[key] = rule[key];
+		});
+	});
+	return combinedRule;
+};
+
+// return if a rule is applied on a slave
+window.ruleApplied = function(slave, rule) {
+	return slave.currentRules.includes(rule.ID);
+};
+
+// checks if any rules apply on the slave, and applies them
+window.CheckAutoRulesActivate = function CheckAutoRulesActivate(slave) {
+	const V = State.variables;
+	let r = "";
+
+	V.defaultRules.forEach(rule => {
+		let applies = ruleAppliesP(rule.condition, slave);
+		if (applies) {
+			if (!ruleApplied(slave, rule)) {
+				slave.currentRules.push(rule.ID);
+				r += `<br><span class="tan">Rule ${rule.ID} (${rule.name}) now applies to ${slave.slaveName}, who is assigned to ${slave.assignment}</span>\n`;
+			}
+		} else if (ruleApplied(slave, rule))
+			r += RARemoveRule(slave, rule);
+	});
+	return r;
+};
+
+// remove the RA rule from the slave
+window.RARemoveRule = function RARemoveRule(slave, rule) {
+	let r = "";
+	const index = slave.currentRules.findIndex(rule => rule.ID === rule);
+	if (index === -1) return r;
+	const slave_rule = slave.currentRules[index];
+	slave.currentRules.splice(index, 1);
+	r += `<br><span class="tan">Rule ${rule.ID} (${rule.name}) no longer applies to ${slave.slaveName}, who is assignmed to ${slave.assignment}</span>`;
+	r += RAFacilityRemove(slave, slave_rule.set);
+	return r;
+};
+
+// remove slave from the facility described by the rule
+window.RAFacilityRemove = function RAFacilityRemove(slave, rule) {
+	const V = State.variables;
+	let r = "";
+	if (!rule.facilityRemove) return r;
+	switch(rule.setAssignment) {
+	case "be confined in the arcade":
+		if (slave.assignment === rule.setAssignment) {
+			r += `<br>${slave.slaveName} has been removed from ${V.arcadeName} and has been assigned to ${rule.removalAssignment}.`;
+			assignJob(slave, rule.removalAssignment);
 		}
-    case "(name)":
-        return env[expr.name];
+		break;
 
-    case "&&":
-        return evalExpr(expr.first, env) && evalExpr(expr.second, env);
-    case "||":
-        return evalExpr(expr.first, env) || evalExpr(expr.second, env);
-    case "<":
-        return evalExpr(expr.first, env) < evalExpr(expr.second, env);
-    case "<=":
-        return evalExpr(expr.first, env) <= evalExpr(expr.second, env);
-    case ">":
-        return evalExpr(expr.first, env) > evalExpr(expr.second, env);
-    case ">=":
-        return evalExpr(expr.first, env) >= evalExpr(expr.second, env);
-    case "=":
-        return evalExpr(expr.first, env) == evalExpr(expr.second, env);
-    case "!=":
-        return evalExpr(expr.first, env) != evalExpr(expr.second, env);
+	case "work in the brothel":
+		if (slave.assignment === rule.setAssignment) {
+			r += `<br>${slave.slaveName} has been removed from ${V.brothelName} and has been assigned to ${rule.removalAssignment}.`;
+			assignJob(slave, rule.removalAssignment);
+		}
+		break;
 
-    case "+":
-        return evalExpr(expr.first, env) + evalExpr(expr.second, env);
-    case "*":
-        return evalExpr(expr.first, env) * evalExpr(expr.second, env);
-    case "/":
-        return evalExpr(expr.first, env) / evalExpr(expr.second, env);
-    case "^":
-        return Math.pow(evalExpr(expr.first, env), evalExpr(expr.second, env));
+	case "serve in the club":
+		if (slave.assignment === rule.setAssignment) {
+			r += `<br>${slave.slaveName} has been removed from ${clubName} and has been assigned to ${rule.removalAssignment}.`;
+			assignJob(slave, rule.removalAssignment);
+		}
+		break;
 
-    case "!":
-        return !evalExpr(expr.first, env);
-    case "-":
-        if (expr.second !== undefined) {
-            return evalExpr(expr.first, env) - evalExpr(expr.second, env);
-        } else {
-            return -evalExpr(expr.first, env);
-        }
+	case "work in the dairy":
+		if (slave.assignment === rule.setAssignment) {
+			r += `<br>${slave.slaveName} has been removed from ${V.dairyName} and has been assigned to ${rule.removalAssignment}.`;
+			assignJob(slave, rule.removalAssignment);
+		}
+		break;
 
-    case "(":
-        return evalExpr(expr.first, env);
-    }
-}
+	case "rest in the spa":
+		if (slave.assignment === rule.setAssignment) {
+			r += `<br>${slave.slaveName} has been removed from ${V.spaName} and has been assigned to ${rule.removalAssignment}.`;
+			assignJob(slave, rule.removalAssignment);
+		}
+		break;
 
+	case "get treatment in the clinic":
+		if (slave.assignment === rule.setAssignment) {
+			r += `<br>{slave.slaveName} has been removed from ${V.clinicName} and has been assigned to ${rule.removalAssignment}.`;
+			assignJob(slave, rule.removalAssignment);
+		}
+		break;
 
-window.optimizeExpr = function(expr) {
-    switch (expr.id) {
-    case "true": case "false":
-    case "(number)": case "(string)":
-    case "(name)":
-        return expr;
+	case "serve in the master suite":
+		if (slave.assignment === rule.setAssignment) {
+			r += `<br>{slave.slaveName} has been removed from ${V.masterSuiteName} and has been assigned to ${rule.removalAssignment}.`;
+			assignJob(slave, rule.removalAssignment);
+		}
+		break;
 
-    case "-":
-        // The only "optimization" we are doing.  Obviously, this is not done
-        // for the sake of speed, rather, to make the UI and isSimpleCondition
-        // simpler, since they don't have to explicitly check for negative
-        // numbers.
-        if (expr.second === undefined && expr.first.id === "(number)")
-            return {id: "(number)", value: evalExpr(expr)};
-        // fallthrough, if the minus was not unary
+	case "live with your Head Girl":
+		if (slave.assignment === rule.setAssignment) {
+			r += `<br>${slave.slaveName} has been removed from ${HGSuiteName} and has been assigned to ${rule.removalAssignment}.`;
+			assignJob(slave, rule.removalAssignment);
+		}
+		break;
 
-    case "&&": case "||":
-    case "<": case "<=": case ">": case ">=":
-    case "=": case "!=":
-    case "+": case "*": case "/": case "^":
-        return {
-            id: expr.id,
-            first: optimizeExpr(expr.first),
-            second: optimizeExpr(expr.second)
-        };
+	case "work as a servant":
+		if (slave.assignment === rule.setAssignment) {
+			r += `<br>${slave.slaveName} has been removed from ${V.servantsQuartersName} and has been assigned to ${rule.removalAssignment}.`;
+			assignJob(slave, rule.removalAssignment);
+		}
+		break;
 
-    case "!": case "(":
-        return {
-            id: expr.id,
-            first: optimizeExpr(expr.first)
-        };
-    }
-}
+	case "learn in the schoolroom":
+		if (slave.assignment === rule.setAssignment) {
+			r += `<br>${slave.slaveName} has been removed from ${V.schoolroomName} and has been assigned to ${rule.removalAssignment}.`;
+			assignJob(slave, rule.removalAssignment);
+		}
+		break;
 
-window.printError = function(exprStr, error) {
-    var result = [],
-        inError = false;
-    for (var i = 0; i < exprStr.length; i++) {
-        if (i === error.index)
-            result.push("@@.red;");
-        result.push(exprStr[i]);
-    }
-    result.push("@@");
-    return result.join("");
-}
+	case "be confined in the cellblock":
+		if (slave.assignment === rule.setAssignment) {
+			r += `<br>${slave.slaveName} has been removed from ${V.cellblockName} and has been assigned to ${rule.removalAssignment}.`;
+			assignJob(slave, rule.removalAssignment);
+		}
+		break;
+	}
+};
+
+// return whether the rule applies to the slave
+window.ruleAppliesP = function ruleAppliesP(cond, slave) {
+	let flag;
+
+	// attribute / function check
+	switch (cond.function) {
+	case true: // always applies
+		flag = true;
+		break;
+	case false: // never applies
+		flag = false;
+		break;
+	case "between": // between two values of a slave's attribute
+		flag = between(
+			slave[cond.data.attribute],
+			cond.data.value[0],
+			cond.data.value[1]);
+		break;
+	case "custom": // user provided JS function
+		flag = eval(cond.data)(slave);
+		break;
+	}
+	// assignment / facility / special slaves / specific slaves check
+	flag = flag &&
+		!(cond.excludeSpecialSlaves && isLeaderP(slave)) &&
+		(cond.assignment.length === 0 || cond.assignment.includes(slave.assignment)) &&
+		(cond.selectedSlaves.length === 0 || cond.selectedSlaves.includes(slave.ID)) &&
+		!(cond.excludedSlaves.includes(slave.ID));
+	return flag;
+};
+
+window.emptyDefaultRule = function emptyDefaultRule() {
+	const id = generateNewID();
+	const rule = {
+		ID: id,
+		name: `Rule ${id}`,
+		condition: {
+			function: false,
+			data: {},
+			excludeSpecialSlaves: false,
+			assignment: [],
+			selectedSlaves: [],
+			excludedSlaves: [],
+		},
+		set: {
+			releaseRules: "no default setting",
+			clitSetting: "no default setting",
+			clitSettingXY: "no default setting",
+			clitSettingXX: "no default setting",
+			clitSettingEnergy: "no default setting",
+			speechRules: "no default setting",
+			clothes: "no default setting",
+			collar: "no default setting",
+			shoes: "no default setting",
+			virginAccessory: "no default setting",
+			aVirginAccessory: "no default setting",
+			vaginalAccessory: "no default setting",
+			aVirginDickAccessory: "no default setting",
+			dickAccessory: "no default setting",
+			bellyAccessory: "no default setting",
+			aVirginButtplug: "no default setting",
+			buttplug: "no default setting",
+			eyeColor: "no default setting",
+			makeup: "no default setting",
+			nails: "no default setting",
+			hColor: "no default setting",
+			hLength: "no default setting",
+			hStyle: "no default setting",
+			pubicHColor: "no default setting",
+			pubicHStyle: "no default setting",
+			nipplesPiercing: "no default setting",
+			areolaePiercing: "no default setting",
+			clitPiercing: "no default setting",
+			vaginaLube: "no default setting",
+			vaginaPiercing: "no default setting",
+			dickPiercing: "no default setting",
+			anusPiercing: "no default setting",
+			lipsPiercing: "no default setting",
+			tonguePiercing: "no default setting",
+			earPiercing: "no default setting",
+			nosePiercing: "no default setting",
+			eyebrowPiercing: "no default setting",
+			navelPiercing: "no default setting",
+			corsetPiercing: "no default setting",
+			boobsTat: "no default setting",
+			buttTat: "no default setting",
+			vaginaTat: "no default setting",
+			dickTat: "no default setting",
+			lipsTat: "no default setting",
+			anusTat: "no default setting",
+			shouldersTat: "no default setting",
+			armsTat: "no default setting",
+			legsTat: "no default setting",
+			backTat: "no default setting",
+			stampTat: "no default setting",
+			curatives: "no default setting",
+			livingRules: "no default setting",
+			relationshipRules: "no default setting",
+			standardPunishment: "no default setting",
+			standardReward: "no default setting",
+			diet: "no default setting",
+			dietCum: "no default setting",
+			dietMilk: "no default setting",
+			muscles: "no default setting",
+			XY: "no default setting",
+			XX: "no default setting",
+			gelding: "no default setting",
+			preg: "no default setting",
+			growth_boobs: "no default setting",
+			growth_butt: "no default setting",
+			growth_lips: "no default setting",
+			growth_dick: "no default setting",
+			growth_balls: "no default setting",
+			aphrodisiacs: "no default setting",
+			autoSurgery: 0,
+			autoBrand: 0,
+			pornFameSpending: "no default setting",
+			dietGrowthSupport: 0,
+			eyewear: "no default setting",
+			setAssignment: "no default setting",
+			facilityRemove: false,
+			removalAssignment: "rest",
+			surgery_eyes: "no default setting",
+			surgery_lactation: "no default setting",
+			surgery_prostate: "no default setting",
+			surgery_cosmetic: "no default setting",
+			surgery_accent: "no default setting",
+			surgery_shoulders: "no default setting",
+			surgery_shouldersImplant: "no default setting",
+			surgery_boobs: "no default setting",
+			surgery_hips: "no default setting",
+			surgery_hipsImplant: "no default setting",
+			surgery_butt: "no default setting",
+			surgery_faceShape: "no default setting",
+			surgery_lips: "no default setting",
+			surgery_holes: "no default setting",
+			surgery_hair: "no default setting",
+			surgery_bodyhair: "no default setting",
+			underArmHColor: "no default setting",
+			underArmHStyle: "no default setting",
+			drug: "no default setting",
+			eyes: "no default setting",
+			pregSpeed: "no default setting",
+			bellyImplantVol: -1,
+			teeth: "no default setting",
+		}
+	};
+	return rule;
+};
diff --git a/src/js/rulesAssistantOptions.tw b/src/js/rulesAssistantOptions.tw
new file mode 100644
index 0000000000000000000000000000000000000000..d59cd4d08c1def99397204372af34ff5374286d2
--- /dev/null
+++ b/src/js/rulesAssistantOptions.tw
@@ -0,0 +1,2965 @@
+:: Rules Assistant Options [script]
+// rewrite of the rules assistant options page in javascript
+// uses an object-oriented widget pattern
+// wrapped in a closure so as not to polute the global namespace
+// the widgets are generic enough to be reusable; if similar user interfaces are ported to JS, we could move the classes to the global scope
+
+window.rulesAssistantOptions = (function() {
+	"use strict";
+	let V, current_rule;
+
+	function rulesAssistantOptions(element) {
+		V = State.variables;
+		V.nextButton = "Back to Main";
+		V.nextLink = "Main";
+		V.returnTo = "Main";
+		V.showEncyclopedia = 1;
+		V.encyclopedia = "Personal Assistant";
+		if (V.currentRule !== null) {
+			const idx = V.defaultRules.findIndex(rule => rule.ID === V.currentRule);
+			if (idx === -1)
+				current_rule = V.defaultRules[0];
+			else
+				current_rule = V.defaultRules[idx];
+		}
+		const root = new Root(element);
+	}
+
+	function returnP(e) { return e.keyCode === 13; }
+
+	function newRule(root) {
+		const rule = emptyDefaultRule();
+		V.defaultRules.push(rule);
+		V.currentRule = rule.ID;
+		reload(root);
+	}
+
+	function removeRule(root) {
+		const idx = V.defaultRules.findIndex(rule => rule.ID === current_rule.ID);
+		V.defaultRules.splice(idx, 1);
+		if (V.defaultRules.length > 0) {
+			const new_idx = idx < V.defaultRules.length ? idx : V.defaultRules.length - 1;
+			V.currentRule = V.defaultRules[new_idx].ID;
+		} else V.currentRule = null;
+		reload(root);
+	}
+
+	function lowerPriority(root) {
+		if (V.defaultRules.length === 1) return; // nothing to swap with
+		const idx = V.defaultRules.findIndex(rule => rule.ID === current_rule.ID);
+		if (idx === 0) return; // no lower rule
+		arraySwap(V.defaultRules, idx, idx-1);
+		reload(root);
+	}
+
+	function higherPriority(root) {
+		if (V.defaultRules.length === 1) return; // nothing to swap with
+		const idx = V.defaultRules.findIndex(rule => rule.ID === current_rule.ID);
+		if (idx === V.defaultRules.length - 1) return; // no higher rule
+		arraySwap(V.defaultRules, idx, idx+1);
+		reload(root);
+	}
+
+	function changeName(name, root) {
+		if (name === current_rule.name) return;
+		current_rule.name = name;
+		reload(root);
+	}
+
+	// reload the passage
+	function reload(root) {
+		const elem = root.element;
+		elem.innerHTML = "";
+		rulesAssistantOptions(elem);
+	}
+
+	const parse = {
+		integer(string) {
+			let n = parseInt(string, 10);
+			return isNaN(n)? 0: n;
+		},
+		boobs(string) {
+			return Math.clamp(parse.integer(string), 0, 48000);
+		},
+		butt(string) {
+			return Math.clamp(parse.integer(string), 0, 10);
+		},
+		lips(string) {
+			return Math.clamp(parse.integer(string), 0, 100);
+		},
+		dick(string) {
+			return Math.clamp(parse.integer(string), 0, 10);
+		},
+		balls(string) {
+			return Math.clamp(parse.integer(string), 0, 10);
+		},
+	};
+
+	// the Element class wraps around a DOM element and adds extra functionality
+	// this is safer than extending DOM objects directly
+	// it also turns DOM manipulation into an implementation detail
+	class Element {
+		constructor(...args) {
+			this.parent = null;
+			this.element = this.render(...args);
+			this.children = [];
+		}
+
+		appendChild(child) {
+			child.parent = this;
+			this.children.push(child);
+			this.element.appendChild(child.element);
+		}
+
+		// return the first argument to simplify creation of basic container items
+		render(...args) {
+			return args[0];
+		}
+
+		remove() {
+			const idx = this.parent.children.findIndex(child => child === this);
+			this.parent.children.slice(idx, 1);
+			this.element.remove();
+		}
+	}
+	
+	class Section extends Element {
+		constructor(header, hidden=false) {
+			super(header);
+			this.hidey = this.element.querySelector("div");
+			if (hidden) this.toggle_hidey();
+		}
+		
+		render(header) {
+			const section = document.createElement("section");
+			section.classList.add("rajs-section");
+			const h1 = document.createElement("h1");
+			h1.onclick = () => { this.toggle_hidey(); };
+			h1.innerHTML = header;
+			const hidey = document.createElement("div");
+			section.appendChild(h1);
+			section.appendChild(hidey);
+			return section;
+		}
+
+		appendChild(child) {
+			child.parent = this;
+			this.children.push(child);
+			this.hidey.appendChild(child.element);
+		}
+
+		toggle_hidey() {
+			switch(this.hidey.style.display) {
+				case "none":
+					this.hidey.style.display = "initial";
+					break;
+				default:
+					this.hidey.style.display = "none";
+					break;
+			}
+		}
+	}
+
+	// list of clickable elements
+	// has a short explanation (the prefix) and a value display
+	// value display can optionally be an editable text input field
+	// it can be "bound" to a variable by setting its "onchange" method
+	class List extends Element {
+		constructor(prefix, data=[], textinput=false) {
+			super(prefix + ": ", textinput);
+			this.selectedItem = null;
+			data.forEach(item => this.appendChild(new ListItem(...item)));
+		}
+
+		render(prefix, textinput) {
+			const elem = document.createElement("div");
+			const label = document.createElement("span");
+			label.innerHTML = prefix;
+			let value;
+			if (textinput) {
+				value = document.createElement("input");
+				value.setAttribute("type", "text");
+				value.classList.add("rajs-value"); // 
+				// call the variable binding when the input field is no longer being edited, and when the enter key is pressed
+				value.onfocusout = () => { this.inputEdited(); };
+				value.onblur = () => {this.inputEdited(); }
+				value.onkeypress = (e) => { if (returnP(e)) this.inputEdited(); };
+			} else {
+				value = document.createElement("strong");
+			}
+			this.value = value;
+			elem.appendChild(label);
+			elem.appendChild(value);
+			elem.classList.add("rajs-list");
+			return elem;
+		}
+
+		inputEdited() {
+			if (this.selectedItem) this.selectedItem.deselect();
+			this.propagateChange();
+		}
+
+		selectItem(item) {
+			if (this.selectedItem) this.selectedItem.deselect();
+			this.selectedItem = item;
+			this.setValue(item.data);
+			this.propagateChange();
+		}
+
+		setValue(what) {
+			if (this.value.tagName === "INPUT")
+				this.value.value = ""+what;
+			else
+				this.value.innerHTML = ""+what;
+		}
+
+		getData(what) {
+			return (this.value.tagName === "input" ? this.parse(this.value.value) : this.selectedItem.data);
+		}
+
+		// customisable input field parser / sanity checker
+		parse(what) { return what; }
+
+		propagateChange() {
+			if (this.onchange instanceof Function)
+				this.onchange(this.getData());
+		}
+	}
+
+	// a clickable item of a list
+	class ListItem extends Element {
+		constructor(displayvalue, data) {
+			super(displayvalue);
+			this.data = data !== undefined ? data: displayvalue;
+			this.selected = false;
+		}
+
+		render(displayvalue) {
+			const elem = document.createElement("span");
+			elem.classList.add("rajs-listitem");
+			elem.innerHTML = displayvalue;
+			elem.onclick = () => { return this.select(); };
+			return elem;
+		}
+
+		select() {
+			if (this.selected) return false;
+			this.parent.selectItem(this);
+			this.element.classList.add("selected");
+			this.selected = true;
+			return true;
+		}
+
+		deselect() {
+			this.element.classList.remove("selected");
+			this.selected = false;
+		}
+	}
+
+	// a way to organise lists with too many elements in subsections
+	// children are bound to the master list
+	class ListSubSection extends Element {
+		constructor(parent, label, pairs) {
+			super(label);
+			this.parent = parent;
+			pairs.forEach(item => this.appendChild(new ListItem(...item)));
+		}
+		
+		render(label) {
+			const elem = document.createElement("div");
+			const lelem = document.createElement("em");
+			lelem.innerText = label + ": ";
+			elem.appendChild(lelem);
+			return elem;
+		}
+
+		appendChild(child) {
+			super.appendChild(child);
+			child.parent = this.parent;
+			this.parent.children.push(child);
+		}
+	}
+
+	// similar to list, but is just a collection of buttons
+	class Options extends Element {
+		constructor(elements=[]) {
+			super();
+			elements.forEach(element => { this.appendChild(element); });
+		}
+
+		render() {
+			const elem = document.createElement("div");
+			elem.classList.add("rajs-list");
+			return elem;
+		}
+	}
+
+	// options equivalent of ListItem
+	class OptionsItem extends Element {
+		constructor(label, onclick) {
+			super(label);
+			this.label = label;
+			this.onclick = onclick;
+		}
+		render(label, onclick) {
+			const elem = document.createElement("span");
+			elem.classList.add("rajs-listitem");
+			elem.innerHTML = label;
+			elem.onclick = () => { return this.onclick(this); };
+			return elem;
+		}
+	}
+
+	class ButtonList extends Element {
+		render(label) {
+			const elem = document.createElement("div");
+			const labelel = document.createElement("span");
+			labelel.innerHTML = label += ": ";
+			elem.appendChild(labelel);
+			return elem;
+		}
+
+		getSelection() {
+			return (this.children
+				.filter(child => child.selected)
+				.map(child => child.setvalue)
+			);
+		}
+
+		onchange() { return; }
+	}
+
+	class ButtonItem extends Element {
+		constructor(label, setvalue, selected=false) {
+			super(label, selected);
+			this.selected = selected;
+			this.setvalue = setvalue ? setvalue : label;
+		}
+
+		render(label, selected) {
+			const container = document.createElement("div");
+			container.classList.add("rajs-listitem");
+
+			const labelel = document.createElement("span");
+			labelel.innerHTML = label;
+
+			const button = document.createElement("input");
+			button.setAttribute("type", "checkbox");
+			button.checked = selected;
+			button.onchange = () => this.onchange(button.checked);
+			labelel.onclick = () => button.click();
+
+			container.appendChild(labelel);
+			container.appendChild(button);
+
+			return container;
+		}
+
+		onchange(value) {
+			this.selected = value;
+			this.parent.onchange(this);
+		}
+	}
+
+	// rule import field
+	class NewRuleField extends Element {
+		constructor(root) {
+			super();
+			this.root = root;
+		}
+
+		render() {
+			const container = document.createElement("div");
+			const textarea = document.createElement("textarea");
+			textarea.placeholder = "Paste your rule here";
+			container.appendChild(textarea);
+			this.textarea = textarea;
+			const button = document.createElement("button");
+			button.name = "Load";
+			button.innerHTML = "Load";
+			button.onclick = () => { this.loadNewRule(); };
+			container.appendChild(button);
+			return container;
+		}
+
+		loadNewRule() {
+			const text = this.textarea.value;
+			try {
+				const rule = JSON.parse(text);
+				if (!rule.ID) rule.ID = generateNewID();
+				V.defaultRules.push(rule);
+				reload(this.root);
+			} catch (e) {
+				alert("Couldn't import that rule:\n" + e.message);
+			}
+		}
+	}
+
+	// the base element, parent of all elements
+	class Root extends Element {
+		constructor(element) {
+			super(element);
+			if(V.defaultRules.length === 0) {
+				const paragraph = document.createElement("p");
+				paragraph.innerHTML = "<strong>No rules</strong>";
+				this.appendChild(new Element(paragraph));
+				this.appendChild(new NoRules(this));
+				return;
+			}
+			this.appendChild(new RuleSelector(this));
+			this.appendChild(new RuleOptions(this));
+			this.appendChild(new ConditionEditor(this));
+			this.appendChild(new EffectEditor(this));
+		}
+
+		render(element) {
+			const greeting = document.createElement("p");
+			greeting.innerHTML = `<em>${properTitle()}, I will review your slaves and make changes that will have a beneficial effect. Apologies, ${properTitle()}, but this function is... not fully complete. It may have some serious limitations. Please use the 'no default setting' option to identify areas I should not address.</em>`;
+			element.appendChild(greeting);
+			return element;
+		}
+	}
+
+	// optoins displayed when there are no rules
+	class NoRules extends Options {
+		constructor(root) {
+			super();
+			this.root = root;
+			const newrule = new OptionsItem("Add a new rule", () => { newRule(this.root); });
+			this.appendChild(newrule);
+			const importrule = new OptionsItem("Import a rule", () => { this.root.appendChild(new NewRuleField(this.root)); });
+			this.appendChild(importrule);
+		}
+	}
+
+	// buttons for selecting the current rule
+	class RuleSelector extends List {
+		constructor(root) {
+			super("Current rule", V.defaultRules.map(i => [i.name, i]));
+			this.setValue(current_rule.name);
+			this.onchange = function (rule) {
+				V.currentRule = rule.ID;
+				reload(root);
+			};
+		}
+	}
+
+	// buttons for doing transformations on rules
+	class RuleOptions extends Options {
+		constructor(root) {
+			super();
+			this.appendChild(new OptionsItem("New Rule", () => newRule(root)));
+			this.appendChild(new OptionsItem("Remove Rule", () => removeRule(root)));
+			this.appendChild(new OptionsItem("Apply rules", () => this.appendChild(new ApplicationLog())));
+			this.appendChild(new OptionsItem("Lower Priotity", () => lowerPriority(root)));
+			this.appendChild(new OptionsItem("Higher Priority", () => higherPriority(root)));
+			this.appendChild(new OptionsItem("Rename", () => this.appendChild(new RenameField(root))));
+			this.appendChild(new OptionsItem("Export this rule", () => this.appendChild(new ExportField(current_rule))));
+			this.appendChild(new OptionsItem("Export all rules", () => this.appendChild(new ExportField(...V.defaultRules))));
+			this.appendChild(new OptionsItem("Import a rule", () => this.appendChild(new NewRuleField(root))));
+		}
+	}
+
+	class ApplicationLog extends Element {
+		render() {
+			const elem = document.createElement("div");
+			elem.innerHTML = V.slaves.map(slave => DefaultRules(slave)).join("");
+			return elem;
+		}
+	}
+
+	class RenameField extends Element {
+		constructor(root) {
+			super();
+			this.element.onfocusout = () => changeName(this.element.value, root);
+			this.element.onkeypress = (e) => { if (returnP(e)) changeName(this.element.value, root); };
+		}
+
+		render() {
+			const elem = document.createElement("input");
+			elem.setAttribute("type", "text");
+			elem.setAttribute("value", current_rule.name);
+			return elem;
+		}
+	}
+
+	class ExportField extends Element {
+		render(...args) {
+			let element = document.getElementById("exportfield");
+			if (element === null) {
+				element = document.getElementById("exportfield") || document.createElement("textarea");
+				element.id = "exportfield";
+			}
+			element.value = args.map(i => JSON.stringify(i, null, 2)).join("\n\n");
+			return element;
+		}
+	}
+
+	// parent section for condition editing
+	class ConditionEditor extends Section {
+		constructor() {
+			super("Activation Condition");
+			this.appendChild(new ConditionFunction());
+			this.appendChild(new AssignmentInclusion());
+			this.appendChild(new SpecialExclusion());
+			this.appendChild(new SpecificInclusionExclusion());
+		}
+	}
+
+	class ConditionFunction extends Element {
+		constructor() {
+			super();
+			const items = [
+				["Never", false],
+				["Always", true],
+				["Custom", "custom"],
+				["Devotion", "devotion"],
+				["Trust", "trust"],
+				["Health", "health"],
+				["Sex drive", "energy"],
+				["Weight", "weight"],
+				["Age", "actualAge"],
+				["Body Age", "physicalAge"],
+				["Visible Age", "visualAge"],
+				["Muscles", "muscles"],
+				["Lactation", "lactation"],
+				["Pregnancy", "preg"],
+				["Pregnancy Multiples", "pregType"],
+				["Belly Implant", "bellyImplant"],
+				["Belly Size", "belly"],
+			];
+			this.fnlist = new List("Activation function", items);
+			this.fnlist.setValue(current_rule.condition.function === "between" ? current_rule.condition.data.attribute : current_rule.condition.function);
+			this.fnlist.onchange = (value) => this.fnchanged(value);
+			this.appendChild(this.fnlist);
+			this.fneditor = null;
+
+			switch(current_rule.condition.function) {
+				case false:
+				case true:
+					break;
+				case "custom":
+					this.show_custom_editor(CustomEditor, current_rule.condition.data);
+					break;
+				default:
+					this.show_custom_editor(RangeEditor, current_rule.condition.function, current_rule.condition.data);
+					break;
+			}
+		}
+
+		show_custom_editor(what, ...args) {
+			if (this.custom_editor !== null) this.hide_custom_editor();
+			this.custom_editor = new what(...args);
+			this.appendChild(this.custom_editor);
+		}
+
+		hide_custom_editor() {
+			if (this.custom_editor) {
+				this.custom_editor.remove();
+				this.custom_editor = null;
+			}
+		}
+
+		render() {
+			const elem = document.createElement("div");
+			return elem;
+		}
+
+		fnchanged(value) {
+			if (this.fneditor !== null) {
+				this.fneditor.element.remove();
+				this.fneditor = null;
+			}
+			switch(value) {
+				case true:
+					current_rule.condition.function = true;
+					current_rule.condition.data = {};
+					this.hide_custom_editor();
+					break;
+				case false:
+					current_rule.condition.function = false;
+					current_rule.condition.data = {};
+					this.hide_custom_editor();
+					break;
+				case "custom":
+					current_rule.condition.function = "custom";
+					current_rule.condition.data = "";
+					this.show_custom_editor(CustomEditor, current_rule.condition.data);
+					break;
+				default:
+					current_rule.condition.function = "between";
+					current_rule.condition.data = { attribute: value, value: [null, null] };
+					this.show_custom_editor(RangeEditor, current_rule.condition.function, current_rule.condition.data);
+					break;
+			}
+		}
+	}
+
+	class CustomEditor extends Element {
+		constructor(data) {
+			if (data.length === 0) data = "(function(slave) { return slave.slaveName === 'Fancy Name'; })";
+			super(data);
+		}
+
+		render(data) {
+			const elem = document.createElement("textarea");
+			elem.innerHTML = data;
+			elem.onblur = () => current_rule.condition.data = elem.value;
+			return elem;
+		}
+	}
+
+	class RangeEditor extends Element {
+		render(fn, data) {
+			const elem = document.createElement("div");
+
+			const minlabel = document.createElement("label");
+			minlabel.innerHTML = "Lower bound: ";
+			elem.appendChild(minlabel);
+
+			const min = document.createElement("input");
+			min.setAttribute("type", "text");
+			min.value = "" + data.value[0];
+			min.onkeypress = e => { if (returnP(e)) this.setmin(min.value); };
+			min.onfocusout = e => this.setmin(min.value);
+			this.min = min;
+			elem.appendChild(min);
+
+			elem.appendChild(document.createElement("br"));
+
+			const maxlabel = document.createElement("label");
+			maxlabel.innerHTML = "Upper bound: ";
+			elem.appendChild(maxlabel);
+
+			const max = document.createElement("input");
+			max.setAttribute("type", "text");
+			max.value = "" + data.value[1];
+			max.onkeypress = e => { if (returnP(e)) this.setmax(max.value); };
+			max.onfocusout = e => this.setmax(max.value);
+			this.max = max;
+			elem.appendChild(max);
+
+			const infobar = document.createElement("div");
+			infobar.innerHTML = this.info(data.attribute);
+			elem.appendChild(infobar);
+
+			return elem;
+		}
+
+		parse(value) {
+			value = value.trim();
+			if (value === "null") value = null;
+			else {
+				value = parseInt(value);
+				if (isNaN(value)) value = null;
+			}
+			return value;
+		}
+
+		setmin(value) {
+			current_rule.condition.data.value[0] = this.parse(value);
+			this.min.value = ""+current_rule.condition.data.value[0];
+		}
+
+		setmax(value) {
+			current_rule.condition.data.value[1] = this.parse(value);
+			this.max.value = ""+current_rule.condition.data.value[1];
+		}
+
+		info(attribute) {
+			return ({
+				"devotion": "Very Hateful: (-∞, -95), Hateful: [-95, -50), Resistant: [-50, -20), Ambivalent: [-20, 20], Accepting: (20, 50], Devoted: (50, 95], Worshipful: (95, ∞)",
+				"trust": "Extremely terrified: (-∞, -95), Terrified: [-95, -50), Frightened: [-50, -20), Fearful: [-20, 20], Careful: (20, 50], Trusting: (50, 95], Total trust: (95, ∞)",
+				"health": "Death: (-∞, -100), Near Death: [-100, -90), Extremely Unhealthy: [-90, -50), Unhealthy: [-50, -20), Healthy: [-20, 20], Very Healthy: (20, 50], Extremely Healthy: (50, 90], Unnaturally Healthy: (90, ∞)",
+				"energy": "Frigid: (-∞, 20], Poor: (20, 40], Average: (40, 60], Powerful: (60, 80], Sex Addict: (80, 100), Nympho: 100",
+				"weight": "Emaciated: (-∞, -95), Skinny: [-95, -30), Thin: [-30, -10), Average: [-10, 10], Plush: (10, 30], Fat: (30, 95], Overweight: (95, ∞)",
+				"lactation": "None: 0, 1: Natural, 2: Lactation implant",
+				"preg": "Barren: -2, On contraceptives: -1, Not pregnant: 0, Pregnancy weeks: [1, ∞)",
+				"pregType": "Fetus count, known only after the 10th week of pregnancy",
+				"bellyImplant": "Volume in CCs. None: -1",
+				"belly": "Volume in CCs, any source",
+			}[attribute] || " ")
+		}
+	}
+
+	class AssignmentInclusion extends ButtonList {
+		constructor() {
+			super("Apply to assignments and facilities");
+			const items = ["Rest", "Fucktoy", "Subordinate Slave", "House Servant", "Confined", "Whore", "Public Servant", "Classes", "Milked", "Gloryhole"];
+			if (V.HGSuite > 0) items.push("Head Girl Suite");
+			if (V.brothel > 0) items.push("Brothel");
+			if (V.club > 0) items.push("Club");
+			if (V.arcade > 0) items.push("Arcade");
+			if (V.dairy > 0) items.push("Dairy");
+			if (V.servantQuarters > 0) items.push("Servant Quarters");
+			if (V.masterSuite > 0) items.push("Master Suite");
+			if (V.schoolroom > 0) items.push("Schoolroom");
+			if (V.spa > 0) items.push("Spa");
+			if (V.clinic > 0) items.push("Clinic");
+			if (V.cellblock > 0) items.push("Cellblock");
+			items.forEach(
+				i => this.appendChild(new ButtonItem(i, this.getAttribute(i), current_rule.condition.assignment.includes(i))));
+		}
+
+		onchange() {
+			current_rule.condition.assignment = this.getSelection();
+		}
+
+		getAttribute(what) {
+			return {
+				"Rest": "rest",
+				"Fucktoy": "please you",
+				"Subordinate Slave": "be a subordinate slave",
+				"House Servant": "be a servant",
+				"Confined": "stay confined",
+				"Whore": "whore",
+				"Public Servant": "serve the public",
+				"Classes": "take classes",
+				"Milked": "get milked",
+				"Gloryhole": "work a glory hole",
+				"Head Girl Suite": "live with your Head Girl",
+				"Brothel": "work in the brothel",
+				"Club": "serve in the club",
+				"Arcade": "be confined in the arcade",
+				"Dairy": "work in the dairy",
+				"Servant Quarters": "work as a servant",
+				"Master Suite": "serve in the master suite",
+				"Schoolroom": "learn in the schoolroom",
+				"Spa": "rest in the spa",
+				"Clinic": "get treatment in the clinic",
+				"Cellblock": "be confined in the cellblock",
+			}[what];
+		}
+	}
+
+	class SpecialExclusion extends List {
+		constructor() {
+			const items = [
+				["Yes", true],
+				["No", false]
+			];
+			super("Exclude special slaves", items);
+			this.setValue(current_rule.condition.excludeSpecialSlaves);
+			this.onchange = (value) => current_rule.condition.excludeSpecialSlaves = value;
+		}
+	}
+
+	class SpecificInclusionExclusion extends Options {
+		constructor() {
+			super();
+			this.appendChild(new OptionsItem("Limit to specific slaves", () => this.show_slave_selection()));
+			this.appendChild(new OptionsItem("Exclude specific slaves", () => this.show_slave_exclusion()));
+			this.subwidget = null;
+		}
+
+		show_slave_selection() {
+			if (this.subwidget) this.subwidget.remove();
+			this.subwidget = new SlaveSelection();
+			this.appendChild(this.subwidget);
+		}
+
+		show_slave_exclusion() {
+			if (this.subwidget) this.subwidget.remove();
+			this.subwidget = new SlaveExclusion();
+			this.appendChild(this.subwidget);
+		}
+	}
+
+	class SlaveSelection extends ButtonList {
+		constructor() {
+			super("Include specific slaves");
+			V.slaves.forEach(slave => this.appendChild(new ButtonItem(
+				[slave.slaveName, slave.slaveSurname].join(" "),
+				slave.ID,
+				current_rule.condition.selectedSlaves.includes(slave.ID))));
+		}
+
+		onchange() {
+			current_rule.condition.selectedSlaves = this.getSelection();
+		}
+	}
+
+	class SlaveExclusion extends ButtonList {
+		constructor() {
+			super("Exclude specific slaves");
+			V.slaves.forEach(slave => this.appendChild(new ButtonItem(
+				[slave.slaveName, slave.slaveSurname].join(" "),
+				slave.ID,
+				current_rule.condition.excludedSlaves.includes(slave.ID))));
+		}
+
+		onchange() {
+			current_rule.condition.excludedSlaves = this.getSelection();
+		}
+	}
+
+	// parent section for effect editing
+	class EffectEditor extends Element {
+		constructor() {
+			super();
+			this.appendChild(new AppearanceSection());
+			this.appendChild(new CosmeticSection());
+			this.appendChild(new BodyModSection());
+			this.appendChild(new AutosurgerySection());
+			this.appendChild(new RegimenSection());
+			this.appendChild(new BehaviourSection());
+		}
+
+		render() {
+			const element = document.createElement("div");
+			return element;
+		}
+	}
+
+	class AppearanceSection extends Section {
+		constructor() {
+			super("Appearance Settings");
+			this.appendChild(new ClothesList());
+			this.appendChild(new CollarList());
+			this.appendChild(new ShoeList());
+			this.appendChild(new CorsetList());
+			this.appendChild(new VagAccVirginsList());
+			this.appendChild(new VagAccAVirginsList());
+			this.appendChild(new VagAccOtherList());
+			if (V.seeDicks !== 0 || V.makeDicks !== 0) {
+				this.appendChild(new DickAccVirginsList());
+				this.appendChild(new DickAccOtherList());
+			}
+			this.appendChild(new ButtplugsVirginsList());
+			this.appendChild(new ButtplugsOtherList());
+			this.appendChild(new ImplantVolumeList());
+			this.appendChild(new AutosurgerySwitch());
+
+		}
+	}
+
+	class RegimenSection extends Section {
+		constructor() {
+			super("Physical Regimen Settings");
+			this.appendChild(new GrowthList());
+			this.appendChild(new CurrativesList());
+			this.appendChild(new AphrodisiacList());
+			this.appendChild(new ContraceptiveList());
+			if (V.pregSpeedControl)
+				this.appendChild(new PregDrugsList());
+			this.appendChild(new FemaleHormonesList());
+			this.appendChild(new ShemaleHormonesList());
+			this.appendChild(new GeldingHormonesList());
+			this.appendChild(new OtherDrugsList());
+			this.appendChild(new DietList());
+			this.appendChild(new DietGrowthList());
+			this.appendChild(new DietBaseList());
+			this.appendChild(new MuscleList());
+			this.appendChild(new BraceList());
+		}
+	}
+
+	class BehaviourSection extends Section {
+		constructor() {
+			super("Behavior Settings");
+			this.appendChild(new AutomaticAssignmentList());
+			this.appendChild(new LivingStandardList());
+			this.appendChild(new PunishmentList());
+			this.appendChild(new RewardList());
+			this.appendChild(new ReleaseList());
+			this.appendChild(new SmartFetishList());
+			this.appendChild(new SmartXYAttractionList());
+			this.appendChild(new SmartXXAttractionList());
+			this.appendChild(new SmartEnergyList());
+			this.appendChild(new SpeechList());
+			this.appendChild(new RelationshipList());
+			if (V.studio === 1)
+				this.appendChild(new PornList());
+		}
+	}
+
+	class CosmeticSection extends Section {
+		constructor() {
+			super("Cosmetic Settings", true);
+			this.appendChild(new EyewearList());
+			this.appendChild(new LensesList());
+			this.appendChild(new MakeupList());
+			this.appendChild(new NailsList());
+			this.appendChild(new HairLengthList());
+			this.appendChild(new HairColourList());
+			this.appendChild(new HairStyleList());
+			this.appendChild(new PubicHairColourList());
+			this.appendChild(new PubicHairStyleList());
+			this.appendChild(new ArmpitHairColourList());
+			this.appendChild(new ArmpitHairStyleList());
+		}
+	}
+
+	class BodyModSection extends Section {
+		constructor() {
+			super("Body Mod Settings", true);
+			this.appendChild(new EarPiercingList());
+			this.appendChild(new NosePiercingList());
+			this.appendChild(new EyebrowPiercingList());
+			this.appendChild(new NavelPiercingList());
+			this.appendChild(new NipplePiercingList());
+			this.appendChild(new AreolaPiercingList());
+			this.appendChild(new LipPiercingList());
+			this.appendChild(new TonguePiercingList());
+			this.appendChild(new ClitPiercingList());
+			this.appendChild(new LabiaPiercingList());
+			this.appendChild(new ShaftPiercingList());
+			this.appendChild(new PerineumPiercingList());
+			this.appendChild(new CorsetPiercingList());
+
+			this.appendChild(new AutoBrandingList());
+			this.appendChild(new BrandingLocationList());
+			this.appendChild(new BrandDesignList());
+
+			this.appendChild(new FaceTattooList());
+			this.appendChild(new ShoulderTattooList());
+			this.appendChild(new ChestTattooList());
+			this.appendChild(new ArmTattooList());
+			this.appendChild(new UpperBackTattooList());
+			this.appendChild(new LowerBackTattooList());
+			this.appendChild(new AbdomenTattooList());
+			if (V.seeDicks || V.makeDicks)
+				this.appendChild(new DickTattooList());
+			this.appendChild(new ButtockTattooList());
+			this.appendChild(new AnalTattooList());
+			this.appendChild(new LegTattooList());
+		}
+	}
+
+	class AutosurgerySection extends Section {
+		constructor() {
+			super("Autosurgery Settings", true);
+			this.appendChild(new VisionSurgeryList());
+			this.appendChild(new LactationSurgeryList());
+			if (V.seeDicks || V.makeDicks)
+				this.appendChild(new SemenSurgeryList());
+			this.appendChild(new CosmeticSurgeryList());
+			this.appendChild(new LipSurgeryList());
+			this.appendChild(new ButtSurgeryList());
+			this.appendChild(new BreastSurgeryList());
+			this.appendChild(new TighteningSurgeryList());
+			this.appendChild(new BodyHairSurgeryList());
+			this.appendChild(new HairSurgeryList());
+		}
+	}
+
+	class ClothesList extends List {
+		constructor() {
+			const items = [
+				["Select her own outfit", "choosing her own clothes"]
+			];
+			super("Clothes", items);
+
+			const nclothes = [
+				["No default clothes setting", "no default setting"],
+				["Apron", "an apron"],
+				["Bangles", "slutty jewelry"],
+				["Bodysuit", "a comfortable bodysuit"],
+				["Cheerleader outfit", "a cheerleader outfit"],
+				["Clubslut netting", "clubslut netting"],
+				["Cybersuit", "a cybersuit"],
+				["Cutoffs and a t-shirt", "cutoffs and a t-shirt"],
+				["Fallen nun", "a fallen nuns habit"],
+				["Halter top", "a halter top dress"],
+				["Hijab and abaya", "a hijab and abaya"],
+				["Latex catsuit", "a latex catsuit"],
+				["Leotard", "a leotard"],
+				["Maid (nice)", "a nice maid outfit"],
+				["Maid (slutty)", "a slutty maid outfit"],
+				["Military uniform", "a military uniform"],
+				["Schutzstaffel uniform", "a schutzstaffel uniform"],
+				["Schutzstaffel uniform (slutty)", "a slutty schutzstaffel uniform"],
+				["Red Army uniform", "a red army uniform"],
+				["Mini dress", "a mini dress"],
+				["Monokini", "a monokini"],
+				["Nice lingerie", "attractive lingerie"],
+				["Nurse (nice)", "a nice nurse outfit"],
+				["Schoolgirl", "a schoolgirl outfit"],
+				["Silken ballgown", "a ball gown"],
+				["Skimpy battledress", "battledress"],
+				["Slave gown", "a slave gown"],
+				["Slutty outfit", "a slutty outfit"],
+				["String bikini", "a stirng bikini"],
+				["Scalemail bikini", "a scalemail bikini"],
+				["Succubus costume", "a succubus outfit"],
+				["Suit (nice)", "nice business sattire"],
+				["Suit (slutty", "slutty business attire"],
+				["Spats and tank top", "spats and a tank top"]
+			];
+			const fsnclothes = [
+				["Body oil (FS)", "body oil"],
+				["Bunny outfit (FS)", "a bunny outfit"],
+				["Chattel habit (FS)", "a chattel habit"],
+				["Conservative clothing (FS)", "conservative clothing"],
+				["Harem gauze (FS)", "harem gauze"],
+				["Huipil (FS)", "a huipil"],
+				["Kimono (FS)", "a kimono"],
+				["Maternity dress (FS)", "a maternity dress"],
+				["Maternity lingerie (FS)", "attractive lingerie for a pregnant woman"],
+				["Slutty qipao (FS)", "a slutty qipao"],
+				["Stretch pants and a crop-top (FS)", "stretch pants and a crop-top"],
+				["Toga (FS)", "a toga"],
+				["Western clothing (FS)", "Western clothing"],
+			];
+			fsnclothes.forEach(pair => { if (isItemAccessible(pair[1])) nclothes.push(pair); });
+			const nice = new ListSubSection(this, "Nice", nclothes);
+			this.appendChild(nice);
+
+			const hclothes = [
+				["Nude", "no clothing"],
+				["Penitent nun", "a penitent nuns habit"],
+				["Restrictive latex", "restrictive latex"],
+				["Shibari ropes", "shibari ropes"],
+				["Uncomfortable straps", "uncomfortable straps"]
+			];
+			const fshclothes = [
+				["Chains (FS)", "chains"],
+			];
+			fshclothes.forEach(pair => { if (isItemAccessible(pair[1])) hclothes.push(pair); });
+
+			const harsh = new ListSubSection(this, "Harsh", hclothes);
+			this.appendChild(harsh);
+
+			this.setValue(current_rule.set.clothes);
+			this.onchange = (value) => current_rule.set.clothes = value;
+		}
+	}
+
+	class CollarList extends List {
+		constructor() {
+			const items = [
+				["No default collar setting", "no default setting"],
+				["No collar", "none"],
+			];
+			super("Collar", items);
+
+			const ncollars = [
+				["Stylish leather", "stylish leather"],
+				["Satin choker", "satin choker"],
+				["Silken Ribbon", "silk ribbon"],
+				["Heavy Gold", "heavy gold"],
+				["Pretty jewelry", "pretty jewelry"],
+				["Cowbell", "leather with cowbell"]
+			];
+			if (V.seeAge !== 0)
+				ncollars.push(["Nice retirement counter", "nice retirement counter"]);
+			const fsncollars = [
+				["Bowtie collar", "bowtie"],
+				["ancient Egyptian", "ancient Egyptian"],
+			];
+			fsncollars.forEach(pair => { if (isItemAccessible(pair[1])) ncollars.push(pair); });
+			const nice = new ListSubSection(this, "Nice", ncollars);
+			this.appendChild(nice);
+
+			const hcollars = [
+				["Tight steel", "tight steel"],
+				["Uncomfortable leather", "uncomfortable leather"],
+				["Pregnancy biometrics", "preg biometrics"],
+				["Shock punishment", "shock punishment"],
+				["Dildo gag", "dildo gag"],
+				["Ball gag", "ball gag"],
+				["Bit gag", "bit gag"],
+				["Neck corset", "neck corset"],
+			];
+			if (V.seeAge !== 0)
+				hcollars.push(["Cruel retirement counter", "cruel retirement counter"]);
+			if (V.toysBoughtGags === 1)
+				hcollars.push(["Massive dildo gag", "massive dildo gag"]);
+			const harsh = new ListSubSection(this, "Harsh", hcollars);
+			this.appendChild(harsh);
+
+			this.setValue(current_rule.set.collar);
+			this.onchange = (value) => current_rule.set.collar = value;
+		}
+	}
+
+	class ShoeList extends List {
+		constructor() {
+			super("Shoes", setup.shoes.map(i => [i.name, i.value]));
+			this.setValue(current_rule.set.shoes);
+			this.onchange = (value) => current_rule.set.shoes = value;
+		}
+	}
+
+	class CorsetList extends List {
+		constructor() {
+			const bellies = [];
+			setup.bellyAccessories.forEach(acc => {
+				if (acc.fs === undefined && acc.rs === undefined)
+					bellies.push([acc.name, acc.value]);
+				else if (acc.fs === "repopulation" && V.arcologies[0].FSRepopulationFocus !== "unset")
+					bellies.push([acc.name + " (FS)", acc.value]);
+				else if (acc.rs === "boughtBelly" && V.clothesBoughtBelly === 1)
+					bellies.push([acc.name + " (Purchased)", acc.value]);
+			});
+			super("Corsetage", bellies);
+			this.setValue(current_rule.set.bellyAccessory);
+			this.onchange = (value) => current_rule.set.bellyAccessory = value;
+		}
+	}
+
+	class VagAccVirginsList extends List {
+		constructor() {
+			const accs = [];
+			setup.vaginalAccessories.forEach(acc => {
+				if (acc.fs === undefined && acc.rs === undefined)
+					accs.push([acc.name, acc.value]);
+				else if (acc.rs === "buyBigDildos" && V.toysBoughtDildos === 1)
+					accs.push([acc.name + " (Purchased)", acc.value]);
+			});
+			super("Vaginal accessories for virgins", accs);
+			this.setValue(current_rule.set.virginAccessory);
+			this.onchange = (value) => current_rule.set.virginAccessory = value;
+		}
+	}
+
+	class VagAccAVirginsList extends List {
+		constructor() {
+			const accs = [];
+			setup.vaginalAccessories.forEach(acc => {
+				if (acc.fs === undefined && acc.rs === undefined)
+					accs.push([acc.name, acc.value]);
+				else if (acc.rs === "buyBigDildos" && V.toysBoughtDildos === 1)
+					accs.push([acc.name + " (Purchased)", acc.value]);
+			});
+			super("Vaginal accessories for anal virgins", accs);
+			this.setValue(current_rule.set.aVirginAccessory);
+			this.onchange = (value) => current_rule.set.aVirginAccessory = value;
+		}
+	}
+
+	class VagAccOtherList extends List {
+		constructor() {
+			const accs = [];
+			setup.vaginalAccessories.forEach(acc => {
+				if (acc.fs === undefined && acc.rs === undefined)
+					accs.push([acc.name, acc.value]);
+				else if (acc.rs === "buyBigDildos" && V.toysBoughtDildos === 1)
+					accs.push([acc.name + " (Purchased)", acc.value]);
+			});
+			super("Vaginal accessories for other slaves", accs);
+			this.setValue(current_rule.set.vaginalAccessory);
+			this.onchange = (value) => current_rule.set.vaginalAccessory = value;
+		}
+	}
+
+	class DickAccVirginsList extends List {
+		constructor() {
+			super("Dick accessories for anal virgins", setup.dickAccessories.map(i => [i.name, i.value]));
+			this.setValue(current_rule.set.aVirginDickAccessory);
+			this.onchange = (value) => current_rule.set.aVirginDickAccessory = value;
+		}
+	}
+
+	class DickAccOtherList extends List {
+		constructor() {
+			super("Dick accessories for other slaves", setup.dickAccessories.map(i => [i.name, i.value]));
+			this.setValue(current_rule.set.dickAccessory);
+			this.onchange = (value) => current_rule.set.dickAccessory = value;
+		}
+	}
+
+	class ButtplugsVirginsList extends List {
+		constructor() {
+			const accs = [];
+			setup.buttplugs.forEach(acc => {
+				if (acc.fs === undefined && acc.rs === undefined)
+					accs.push([acc.name, acc.value]);
+				else if (acc.rs === "buyBigPlugs" && V.toysBoughtButtPlugs === 1)
+					accs.push([acc.name + " (Purchased)", acc.value]);
+			});
+			super("Buttplugs for anal virgins", accs);
+			this.setValue(current_rule.set.aVirginButtplug);
+			this.onchange = (value) => current_rule.set.aVirginButtplug = value;
+		}
+	}
+
+	class ButtplugsOtherList extends List {
+		constructor() {
+			const accs = [];
+			setup.buttplugs.forEach(acc => {
+				if (acc.fs === undefined && acc.rs === undefined)
+					accs.push([acc.name, acc.value]);
+				else if (acc.rs === "buyBigPlugs" && V.toysBoughtButtPlugs === 1)
+					accs.push([acc.name + " (Purchased)", acc.value]);
+			});
+			super("Buttplugs for other slaves", accs);
+			this.setValue(current_rule.set.buttplug);
+			this.onchange = (value) => current_rule.set.buttplug = value;
+		}
+	}
+
+	class ImplantVolumeList extends List {
+		constructor() {
+			const pairs = [
+				["No changes", -1],
+				["Empty implant", 0],
+				["Early pregnancy", 1500],
+				["Second trimester pregnancy", 5000],
+				["Full-term pregnancy", 15000],
+				["Full-term with twins", 30000],
+				["Full-term with triplets", 45000],
+				["Full-term with quadruplets", 60000],
+				["Full-term with quintuplets", 75000],
+				["Full-term with sextuplets", 90000],
+				["Full-term with septuplets", 105000],
+				["Full-term with octuplets", 120000]
+			];
+			super("Belly implant target volume (if present)", pairs);
+			this.setValue(current_rule.set.bellyImplantVol);
+			this.onchange = (value) => current_rule.set.bellyImplantVol = value;
+		}
+	}
+
+	class AutosurgerySwitch extends List {
+		constructor() {
+			const pairs = [
+				["Activate", 1],
+				["Off", 0],
+			];
+			super("Assistant-applied implants (Autosurgery global switch)", pairs);
+			this.setValue(current_rule.set.autoSurgery);
+			this.onchange = (value) => current_rule.set.autoSurgery = value;
+		}
+	}
+
+	class GrowthList extends Options {
+		constructor() {
+			super();
+			this.sublists = [];
+			const pairs = [
+				["No default setting", () => this.nds()],
+				["Girlish figure", () => this.girlish()],
+				["Stacked figure", () => this.stacked()],
+				["Huge but functional", () => this.huge()],
+				["Unlimited", () => this.unlimited()],
+				["None", () => this.none()]
+			];
+			pairs.forEach(pair => this.appendChild(new OptionsItem(...pair)));
+
+			this.breasts = new BreastGrowthList();
+			this.butts = new ButtGrowthList();
+			this.lips = new LipGrowthList();
+			this.sublists.push(this.breasts, this.butts, this.lips);
+
+			if (V.seeDicks > 0 || V.makeDicks > 0) {
+				this.dicks = new DickGrowthList();
+				this.balls = new BallGrowthList();
+				this.sublists.push(this.dicks, this.balls);
+			}
+
+			this.sublists.forEach(i => this.appendChild(i));
+		}
+
+		render() {
+			const elem = document.createElement("div");
+			const span = document.createElement("span");
+			span.innerHTML = "Growth hormone regimes for healthy slaves";
+			elem.appendChild(span);
+			return elem;
+		}
+
+		nds() {
+			[this.breasts, this.butts, this.lips, this.dicks, this.balls].forEach(i => {
+				i.setValue("no default change");
+				i.propagateChange();
+			});
+		}
+
+		girlish() {
+			this.breasts.setValue(350);
+			this.butts.setValue(2);
+			this.lips.setValue(25);
+			if (this.dicks) this.dicks.setValue(0);
+			if (this.balls) this.balls.setValue(0);
+			this.sublists.forEach(i => i.propagateChange());
+		}
+
+		stacked() {
+			this.breasts.setValue(1000);
+			this.butts.setValue(4);
+			this.lips.setValue(25);
+			if (this.dicks) this.dicks.setValue(4);
+			if (this.balls) this.balls.setValue(4);
+			this.sublists.forEach(i => i.propagateChange());
+		}
+
+		huge() {
+			this.breasts.setValue(9000);
+			this.butts.setValue(10);
+			this.lips.setValue(45);
+			if (this.dicks) this.dicks.setValue(6);
+			if (this.balls) this.balls.setValue(6);
+			this.sublists.forEach(i => i.propagateChange());
+		}
+
+		unlimited() {
+			this.breasts.setValue(48000);
+			this.butts.setValue(10);
+			this.lips.setValue(100);
+			if (this.dicks) this.dicks.setValue(10);
+			if (this.balls) this.balls.setValue(6);
+			this.sublists.forEach(i => i.propagateChange());
+		}
+
+		none() {
+			this.sublists.forEach(i => {
+				i.setValue(0);
+				i.propagateChange();
+			});
+		}
+	}
+
+	class BreastGrowthList extends List {
+		constructor() {
+			const pairs = [
+				["No default setting", "no default setting"],
+				["B Cup", 350],
+				["D Cup", 1000],
+				["Monstrous", 9000],
+				["Unlimited", 48000],
+				["None", 0]
+			];
+			super("Breasts", pairs, true);
+			this.setValue(current_rule.set.growth_boobs);
+			this.onchange = (value) => current_rule.set.growth_boobs = value;
+		}
+	}
+
+	class ButtGrowthList extends List {
+		constructor() {
+			const pairs = [
+				["No default setting", "no default setting"],
+				["Cute", 2],
+				["Big", 4],
+				["Huge", 6],
+				["Unlimited", 10],
+				["None", 0]
+			];
+			super("Butts", pairs, true);
+			this.setValue(current_rule.set.growth_butt);
+			this.onchange = (value) => current_rule.set.growth_butt = value;
+		}
+	}
+
+	class LipGrowthList extends List {
+		constructor() {
+			const pairs = [
+				["No default setting", "no default setting"],
+				["Plump", 25],
+				["Beestung", 45],
+				["Facepussy", 100],
+				["None", 0]
+			];
+			super("Lips", pairs, true);
+			this.setValue(current_rule.set.growth_lips);
+			this.onchange = (value) => current_rule.set.growth_lips = value;
+		}
+	}
+
+	class DickGrowthList extends List {
+		constructor() {
+			const pairs = [
+				["No default setting", "no default setting"],
+				["Above average", 4],
+				["Pornstar", 6],
+				["Unlimited", 10],
+				["None", 0]
+			];
+			super("Dicks, if present", pairs, true);
+			this.setValue(current_rule.set.growth_dick);
+			this.onchange = (value) => current_rule.set.growth_dick = value;
+		}
+	}
+
+	class BallGrowthList extends List {
+		constructor() {
+			const pairs = [
+				["No default setting", "no default setting"],
+				["Sizeable", 4],
+				["Cumslave", 6],
+				["Unlimited", 10],
+				["None", 0]
+			];
+			super("Balls, if present", pairs, true);
+			this.setValue(current_rule.set.growth_balls);
+			this.onchange = (value) => current_rule.set.growth_balls = value;
+		}
+	}
+
+	class CurrativesList extends List {
+		constructor() {
+			const pairs = [
+				["No default setting", "no default setting"],
+				["None", 0],
+				["Preventatives", 1],
+				["Curatives", 2],
+			];
+			super("Health drugs", pairs);
+			this.setValue(current_rule.set.curatives);
+			this.onchange = (value) => current_rule.set.curatives = value;
+		}
+	}
+
+	class AphrodisiacList extends List {
+		constructor() {
+			const pairs = [
+				["No default setting", "no default setting"],
+				["None", 0],
+				["Standard", 1],
+				["Extreme", 2],
+				["Anaphrodisiacs", -1]
+			];
+			super("Aphrodisiacs", pairs);
+			this.setValue(current_rule.set.aphrodisiacs);
+			this.onchange = (value) => current_rule.set.aphrodisiacs = value;
+		}
+	}
+
+	class ContraceptiveList extends List {
+		constructor() {
+			const drugs =  [
+				["No default setting", "no default setting"],
+				["Contraceptives", -1],
+				["Fertile", 0],
+				["Very fertile", 1],
+				["Extremely fertile", 2],
+			];
+			if (V.seeHyperPreg === 1 && V.superFertilityDrugs === 1) {
+				drugs.push(["Hyper fertile", 3]);
+				drugs.push(["Maximize fertility", 4]);
+			}
+			super("Contraceptives for fertile slaves", drugs);
+			this.setValue(current_rule.set.preg);
+			this.onchange = (value) => current_rule.set.preg = value;
+		}
+	}
+
+	class PregDrugsList extends List {
+		constructor() {
+			const pairs = [
+				["No changes", "no default setting"],
+				["None", "none"],
+				["Fast gestation", "fast"],
+				["Slow gestation", "slow"],
+				["Birth supressors", "suppress"],
+				["Birth stimulators", "stimulate"]
+			];
+			super("Pregnancy control agents for pregnant slaves", pairs);
+			this.setValue(current_rule.set.pregSpeed);
+			this.onchange = (value) => current_rule.set.pregSpeed = value;
+		}
+	}
+
+	class FemaleHormonesList extends List {
+		constructor() {
+			const pairs = [
+				["No default setting", "no default setting"],
+				["Intensive Female", 2],
+				["Female", 1],
+				["None", 0],
+				["Male", -1],
+				["Intensive Male", -2]
+			];
+			super("Hormones for female slaves", pairs);
+			this.setValue(current_rule.set.XX);
+			this.onchange = (value) => current_rule.set.XX = value;
+		}
+	}
+
+	class GeldingHormonesList extends List {
+		constructor() {
+			const pairs = [
+				["No default setting", "no default setting"],
+				["Intensive Female", 2],
+				["Female", 1],
+				["None", 0],
+				["Male", -1],
+				["Intensive Male", -2]
+			];
+			super("Hormones for geldings", pairs);
+			this.setValue(current_rule.set.gelding);
+			this.onchange = (value) => current_rule.set.gelding = value;
+		}
+	}
+
+	class ShemaleHormonesList extends List {
+		constructor() {
+			const pairs = [
+				["No default setting", "no default setting"],
+				["Intensive Female", 2],
+				["Female", 1],
+				["None", 0],
+				["Male", -1],
+				["Intensive Male", "intensive male", -2]
+			];
+			super("Hormones for shemales", pairs);
+			this.setValue(current_rule.set.XY);
+			this.onchange = (value) => current_rule.set.XY = value;
+		}
+	}
+
+	class OtherDrugsList extends List {
+		constructor() {
+			const drugs = [];
+			setup.drugs.forEach(drug => {
+				if (drug.fs === undefined && drug.rs === undefined)
+					drugs.push([drug.name, drug.value]);
+				else if (drug.rs === "growth" && V.growthStim === 1)
+					drugs.push([drug.name + " (Research)", drug.value]);
+				else if (drug.rs === "pubHorm" && V.precociousPuberty === 1 && V.pubertyHormones === 1)
+					drugs.push([drug.name + " (Research)", drug.value]);
+				else if (drug.rs === "nosag" && V.purchasedSagBGone === 1)
+					drugs.push([drug.name + " (Product)", drug.value]);
+				else if (drug.fs === "slimness" && V.arcologies[0].FSSlimnessEnthusiastResearch === 1)
+					drugs.push([drug.name + " (FS)", drug.value]);
+				else if (drug.fs === "youth" && V.arcologies[0].FSYouthPreferentialistResearch === 1)
+					drugs.push([drug.name + " (FS)", drug.value]);
+			});
+			super("Other drugs (Will be overriden by hormones and other drugs where applicable)", drugs);
+			this.setValue(current_rule.set.drug);
+			this.onchange = (value) => current_rule.set.drug = value;
+		}
+	}
+
+	class DietList extends List {
+		constructor() {
+			const diets = [
+				["no default setting", "no default setting"],
+				["Fix fat and skinny slaves", "attractive"],
+				["Curvy", 30],
+				["Average",  0],
+				["Thin", -30]
+			];
+			if (V.feeder === 1) {
+				diets.push(
+					["Feminine", "XX"],
+					["Masculine", "XY"]
+				);
+				if (V.dietXXY === 1)
+					diets.push(["Futanari", "XXY"]);
+			}
+			if (V.dietCleanse === 1)
+				diets.push(["Cleansing", "cleansing"]);
+			if (V.dietFertility === 1)
+				diets.push(["Feritlity", "fertility"]);
+			if (V.cumProDiet === 1)
+				diets.push(["Cum production", "cum production"]);
+
+			super("Slave diets", diets);
+			this.setValue(current_rule.set.diet);
+			this.onchange = (value) => current_rule.set.diet = value;
+		}
+	}
+
+	class DietGrowthList extends List {
+		constructor() {
+			const pairs = [
+				["On", 1],
+				["Off", 0]
+			];
+			super("Diet support for growth drugs", pairs);
+			this.setValue(current_rule.set.dietGrowthSupport);
+			this.onchange = (value) => current_rule.set.dietGrowthSupport = value;
+		}
+	}
+
+	class DietBaseList extends List {
+		constructor() {
+			// TODO: better data structure?
+			const pairs = [
+				["No default setting", {cum: "no default setting", milk: "no default setting"}],
+				["Normal Diet", {cum: 0, milk: 0}],
+				["Cum Added", {cum: 1, milk: 0}],
+				["Milk Added", {cum: 0, milk: 1}],
+				["Cum &amp; Milk Added", {cum: 1, milk: 1}],
+				["Cum-Based", {cum: 2, milk: 0}],
+				["Milk-Based", {cum: 0, milk: 2}],
+			];
+			super("Diet base", pairs);
+			this.setValue(this.value2string(current_rule.set.dietCum, current_rule.set.dietMilk));
+			this.onchange = (value) => {
+				current_rule.set.dietCum = value.cum;
+				current_rule.set.dietMilk = value.milk;
+			};
+		}
+
+		value2string(cum, milk) {
+			return `cum: ${cum}, milk: ${milk}`;
+		}
+
+		setValue(what) {
+			what = this.value2string(what.cum, what.milk);
+			super.setValue(what);
+		}
+
+	}
+
+	class MuscleList extends List {
+		constructor() {
+			const pairs = [
+				["No default setting", "no default setting"],
+				["None", 0],
+				["Toned", 20],
+				["Ripped", 50],
+				["Massive", 100],
+				["Weak", -20]
+			];
+			super("Muscles", pairs, true);
+			this.setValue(current_rule.set.muscles);
+			this.onchange = (value) => current_rule.set.muscles = value;
+		}
+	}
+
+	class BraceList extends List {
+		constructor() {
+			const pairs = [
+				["No default setting", "no default setting"],
+				["None", "none"],
+				["Straighten", "straighten"],
+				["Universal", "universal"]
+			];
+			super("Braces", pairs);
+			this.setValue(current_rule.set.teeth);
+			this.onchange = (value) => current_rule.set.teeth = value;
+		}
+	}
+
+	class LivingStandardList extends List {
+		constructor() {
+			const pairs = [
+				["No default setting", "no default setting"],
+				["Luxurious", "luxurious"],
+				["Normal", "normal"],
+				["Spare", "spare"]
+			];
+			super("Living standard", pairs);
+			this.setValue(current_rule.set.livingRules);
+			this.onchange = (value) => current_rule.set.livingRules = value;
+		}
+	}
+
+	class PunishmentList extends List {
+		constructor() {
+			const pairs = [
+				["No default setting", "no default setting"],
+				["Confinement", "confinement"],
+				["Whipping", "whipping"],
+				["Chastity", "chastity"],
+				["Situational", "situational"]
+			];
+			super("Typical punishment", pairs);
+			this.setValue(current_rule.set.standardPunishment);
+			this.onchange = (value) => current_rule.set.standardPunishment = value;
+		}
+	}
+
+	class RewardList extends List {
+		constructor() {
+			const pairs = [
+				["No default setting", "no default setting"],
+				["Relaxation", "relaxation"],
+				["Drugs", "drugs"],
+				["Orgasm", "orgasm"],
+				["Situational", "situational"]
+			];
+			super("Typical reward", pairs);
+			this.setValue(current_rule.set.standardReward);
+			this.onchange = (value) => current_rule.set.standardReward = value;
+		}
+	}
+
+	class ReleaseList extends List {
+		constructor() {
+			const pairs = [
+				["No default setting", "no default setting"],
+				["Permissive", "permissive"],
+				["Sapphic", "sapphic"],
+				["Masturbation", "masturbation"],
+				["Restritive", "restrictive"]
+			];
+			super("Release rules", pairs);
+			this.setValue(current_rule.set.releaseRules);
+			this.onchange = (value) => current_rule.set.releaseRules = value;
+		}
+	}
+
+	class SmartFetishList extends List {
+		constructor() {
+			const pairs = [
+				["No default setting", "no default setting"],
+				["Vanilla", "vanilla"],
+				["Oral", "oral"],
+				["Anal", "anal"],
+				["Boobs", "boobs"],
+				["Sub", "submissive"],
+				["Dom", "dom"],
+				["Humiliation", "humiliation"],
+				["Preg", "pregnancy"],
+				["Pain", "masochist"],
+				["Sadism", "sadist"]
+			];
+			super("Smart piercing fetish target", pairs);
+			this.setValue(current_rule.set.clitSetting);
+			this.onchange = (value) => current_rule.set.clitSetting = value;
+		}
+	}
+
+	class SmartXYAttractionList extends List {
+		constructor() {
+			const pairs = [
+				["No default setting", "no default setting"],
+				["Passionate", 100],
+				["Attracted", 75],
+				["Indifferent", 45],
+				["None", 0]
+			];
+			super("Smart piercing XY attraction target", pairs);
+			this.setValue(current_rule.set.clitSettingXY);
+			this.onchange = (value) => current_rule.set.clitSettingXY = value;
+		}
+	}
+
+	class SmartXXAttractionList extends List {
+		constructor() {
+			const pairs = [
+				["No default setting", "no default setting"],
+				["Passionate", 100],
+				["Attracted", 75],
+				["Indifferent", 45],
+				["None", 0]
+			];
+			super("Smart piercing XX attraction target", pairs);
+			this.setValue(current_rule.set.clitSettingXX);
+			this.onchange = (value) => current_rule.set.clitSettingXX = value;
+		}
+	}
+
+	class SmartEnergyList extends List {
+		constructor() {
+			const pairs = [
+				["Nympho", 100],
+				["Sex Addict", 85],
+				["Powerful", 65],
+				["Healthy", 45],
+				["Weak", 25],
+				["Frigid", 0]
+			];
+			super("Smart piercing sex drive target", pairs);
+			this.setValue(current_rule.set.clitSettingEnergy);
+			this.onchange = (value) => current_rule.set.clitSettingEnergy = value;
+		}
+	}
+
+	class SpeechList extends List {
+		constructor() {
+			const pairs = [
+				["No default setting", "no default setting"],
+				["Permissive", "permissive"],
+				["Suppress accents", "accent elimination"],
+				["Restrictive", "restrictive"]
+			];
+			super("Speech rules", pairs);
+			this.setValue(current_rule.set.speechRules);
+			this.onchange = (value) => current_rule.set.speechRules = value;
+		}
+	}
+
+	class RelationshipList extends List {
+		constructor() {
+			const pairs =[
+				["No default setting", "no default setting"],
+				["Permissive", "permissive"],
+				["Just friends", "just friends"],
+				["Restrictive", "restrictive"]
+			];
+			super("Relationship rules", pairs);
+			this.setValue(current_rule.set.relationshipRules);
+			this.onchange = (value) => current_rule.set.relationshipRules = value;
+		}
+	}
+
+	class PornList extends List {
+		constructor() {
+			const pairs = [
+				["No default setting", "no default setting"],
+				["No broadcasting", -1],
+				["No subsidy", 0],
+				["1000", 1000],
+				["2000", 2000],
+				["3000", 3000],
+				["4000", 4000],
+				["5000", 5000]
+			];
+			super("Weekly porn publicity subsidy", pairs);
+			this.setValue(current_rule.set.pornFameSpending);
+			this.onchange = (value) => current_rule.set.pornFameSpending = value;
+		}
+	}
+
+	class EyewearList extends List {
+		constructor() {
+			const pairs = [
+				["no default setting"],
+				["correct with contacts"],
+				["universal glasses"],
+				["blur with glasses"],
+				["blur with contacts"]
+			];
+			super("Eyewear", pairs);
+			this.setValue(current_rule.set.eyewear);
+			this.onchange = (value) => current_rule.set.eyewear = value;
+		}
+	}
+
+	class LensesList extends Element {
+		constructor() {
+			super(current_rule.set.eyeColor);
+			this.appendChild(new OptionsItem("No default Setting", () => this.setValue("no default setting")));
+			this.colourlist = new LensesColourList();
+			this.shapelist = new LensesShapeList();
+			this.appendChild(this.colourlist);
+			this.appendChild(this.shapelist);
+		}
+
+		render(color) {
+			const elem = document.createElement("div");
+			elem.innerHTML = "Eye coloring: ";
+			this.label = document.createElement("strong");
+			this.label.innerText = color;
+			elem.appendChild(this.label);
+			return elem;
+		}
+
+		combine() {
+			const lst = [];
+			if (this.colourlist.value !== "no default setting")
+				lst.push(this.colourlist.value);
+			if (this.shapelist.value !== "no default setting")
+				lst.push(this.shapelist.value);
+			if (lst.length === 0) return "no default value";
+			else return lst.join(" ");
+		}
+
+		setValue(val) {
+			if (val === undefined) val = this.combine();
+			this.label.innerText = val;
+			current_rule.set.eyeColor = val;
+		}
+	}
+
+	class LensesColourList extends Options {
+		constructor() {
+			const items = [];
+			[
+				"no default setting",
+				"blue",
+				"black",
+				"brown",
+				"green",
+				"turquoise",
+				"sky-blue",
+				"hazel",
+				"pale-grey",
+				"white",
+				"pink",
+				"amber",
+				"red"
+			].forEach(i => items.push(new OptionsItem(i, item => {
+				this.value = item.label;
+				this.parent.setValue();
+			})));
+			super(items);
+		}
+	}
+
+	class LensesShapeList extends Options {
+		constructor() {
+			const items = [];
+			[
+				"no default setting",
+				"catlike",
+				"serpent-like",
+				"devilish",
+				"demonic",
+				"hypnotic",
+				"heart-shaped",
+				"wide-eyed",
+				"almond-shaped",
+				"bright",
+				"teary",
+				"vacant"
+			].forEach(i => items.push(new OptionsItem(i, item => {
+				this.value = item.label;
+				this.parent.setValue();
+			})));
+			super(items);
+		}
+	}
+
+	class MakeupList extends List {
+		constructor() {
+			super("Makeup");
+			[
+				["no default setting"],
+				["makeup-free", 0],
+				["nice", 1],
+				["gorgeous", 2],
+				["color-coordinate with hair", 3],
+				["slutty", 4]
+			].forEach(pair => this.appendChild(new ListItem(...pair)));
+			this.setValue(current_rule.set.makeup);
+			this.onchange = (value) => current_rule.set.makeup = value;
+		}
+	}
+
+	class NailsList extends List {
+		constructor() {
+			super("Nails");
+			[
+				["no default setting"],
+				["clipped", 0],
+				["extended", 1],
+				["color-coordinate with hair", 2],
+				["sharp and claw-like", 3],
+				["bright and glittery", 4],
+				["hooker nails", 5]
+			].forEach(pair => this.appendChild(new ListItem(...pair)));
+			this.setValue(current_rule.set.nails);
+			this.onchange = (value) => current_rule.set.nails = value;
+		}
+	}
+
+	class HairLengthList extends List {
+		constructor() {
+			const pairs = [
+				["no default setting"],
+				["very short", 5],
+				["short", 10],
+				["shoulder length", 30],
+				["long", 60],
+				["very long", 100],
+				["floor length", 150]
+			];
+			super("Hair length", pairs);
+			this.setValue(current_rule.set.hLength);
+			this.onchange = (value) => current_rule.set.hLength = value;
+		}
+	}
+	class HairColourList extends List {
+		constructor() {
+			const pairs = [
+				["no default setting"],
+				["blonde"],
+				["golden"],
+				["platinum blonde"],
+				["strawbery-blonde"],
+				["copper"],
+				["ginger"],
+				["red"],
+				["green"],
+				["blue"],
+				["pink"],
+				["dark brown"],
+				["brown"],
+				["auburn"],
+				["burgundy"],
+				["chocolate"],
+				["chestnut"],
+				["hazel"],
+				["black"],
+				["grey"],
+				["silver"],
+				["white"],
+				["blue-violet"],
+				["blazing red"],
+				["neon green"],
+				["neon blue"],
+				["neon pink"]
+			];
+			super("Hair color", pairs);
+			this.setValue(current_rule.set.hColor);
+			this.onchange = (value) => current_rule.set.hColor = value;
+		}
+	}
+
+	class HairStyleList extends List {
+		constructor() {
+			const pairs = [
+				["no default setting"],
+				["neat"],
+				["shaved"],
+				["trimmed"],
+				["buzzcut"],
+				["up"],
+				["ponytail"],
+				["bun"],
+				["messy bun"],
+				["curled"],
+				["permed"],
+				["luxurious"],
+				["dreadlocks"],
+				["cornrows"],
+				["braided"],
+				["tails"],
+				["afro"],
+				["strip"]
+			];
+			super("Hair style", pairs);
+			this.setValue(current_rule.set.hStyle);
+			this.onchange = (value) => current_rule.set.hStyle = value;
+		}
+	}
+
+	class PubicHairColourList extends List {
+		constructor() {
+			const pairs = [
+				["no default setting"],
+				["blonde"],
+				["golden"],
+				["platinum blonde"],
+				["strawerry-blonde"],
+				["copper"],
+				["ginger"],
+				["red"],
+				["green"],
+				["blue"],
+				["pink"],
+				["dark brown"],
+				["brown"],
+				["auburn"],
+				["burgundy"],
+				["chocolate"],
+				["chestnut"],
+				["hazel"],
+				["black"],
+				["grey"],
+				["silver"],
+				["white"],
+				["blue-violet"],
+				["blazing red"],
+				["neon green"],
+				["neon blue"],
+				["neon pink"]
+			];
+			super("Pubic hair color, when present", pairs);
+			this.setValue(current_rule.set.pubicHColor);
+			this.onchange = (value) => current_rule.set.pubicHColor = value;
+		}
+	}
+
+	class PubicHairStyleList extends List {
+		constructor() {
+			const pairs = [
+				["no default setting"],
+				["waxed"],
+				["in a strip"],
+				["neat"],
+				["bushy"],
+				["bushy in the front and neat in the rear"],
+				["very bushy"]
+			];
+			super("Pubic hairstyle", pairs);
+			this.setValue(current_rule.set.pubicHStyle);
+			this.onchange = (value) => current_rule.set.pubicHStyle = value;
+		}
+	}
+
+	class ArmpitHairColourList extends List {
+		constructor() {
+			const pairs = [
+				["no default setting"],
+				["blonde"],
+				["golden"],
+				["platinum blonde"],
+				["strawberry-blonde"],
+				["copper"],
+				["ginger"],
+				["red"],
+				["green"],
+				["blue"],
+				["pink"],
+				["dark brown"],
+				["brown"],
+				["auburn"],
+				["burgundry"],
+				["chocolate"],
+				["chestnut"],
+				["hazel"],
+				["black"],
+				["grey"],
+				["silver"],
+				["white"],
+				["blue-violet"],
+			];
+			super("Underarm hair color, when present", pairs);
+			this.setValue(current_rule.set.underArmHColor);
+			this.onchange = (value) => current_rule.set.underArmHColor = value;
+		}
+	}
+
+	class ArmpitHairStyleList extends List {
+		constructor() {
+			const pairs = [
+				["no default setting"],
+				["waxed"],
+				["shaved"],
+				["neat"],
+				["bushy"]
+			];
+			super("Underarm hair style", pairs);
+			this.setValue(current_rule.set.underArmHStyle);
+			this.onchange = (value) => current_rule.set.underArmHStyle = value;
+		}
+	}
+
+	class EarPiercingList extends List {
+		constructor() {
+			const pairs = [
+				["No default setting", "no default setting"],
+				["None", 0],
+				["Light", 1],
+				["Heavy", 2]
+			];
+			super("Ear piercings", pairs);
+			this.setValue(current_rule.set.earPiercing);
+			this.onchange = (value) => current_rule.set.earPiercing = value;
+		}
+	}
+
+	class NosePiercingList extends List {
+		constructor() {
+			const pairs = [
+				["No default setting", "no default setting"],
+				["None", 0],
+				["Light", 1],
+				["Heavy", 2]
+			];
+			super("Nasal piercings", pairs);
+			this.setValue(current_rule.set.nosePiercing);
+			this.onchange = (value) => current_rule.set.earPiercing = value;
+		}
+	}
+
+	class EyebrowPiercingList extends List {
+		constructor() {
+			const pairs = [
+				["No default setting", "no default setting"],
+				["None", 0],
+				["Light", 1],
+				["Heavy", 2]
+			];
+			super("Eyebrow piercings", pairs);
+			this.setValue(current_rule.set.eyebrowPiercing);
+			this.onchange = (value) => current_rule.set.eyebrowPiercing = value;
+		}
+	}
+
+	class NavelPiercingList extends List {
+		constructor() {
+			const pairs = [
+				["No default setting", "no default setting"],
+				["None", 0],
+				["Light", 1],
+				["Heavy", 2]
+			];
+			super("Navel piercings", pairs);
+			this.setValue(current_rule.set.navelPiercing);
+			this.onchange = (value) => current_rule.set.navelPiercing = value;
+		}
+	}
+
+	class NipplePiercingList extends List {
+		constructor() {
+			const pairs = [
+				["No default setting", "no default setting"],
+				["None", 0],
+				["Light", 1],
+				["Heavy", 2]
+			];
+			super("Nipple piercings", pairs);
+			this.setValue(current_rule.set.nipplesPiercing);
+			this.onchange = (value) => current_rule.set.nipplesPiercing = value;
+		}
+	}
+
+	class AreolaPiercingList extends List {
+		constructor() {
+			const pairs = [
+				["No default setting", "no default setting"],
+				["None", 0],
+				["Studded", 1]
+			];
+			super("Areola studs", pairs);
+			this.setValue(current_rule.set.areolaePiercing);
+			this.onchange = (value) => current_rule.set.areolaePiercing = value;
+		}
+	}
+
+	class LipPiercingList extends List {
+		constructor() {
+			const pairs = [
+				["No default setting", "no default setting"],
+				["None", 0],
+				["Light", 1],
+				["Heavy", 2]
+			];
+			super("Lip piercings", pairs);
+			this.setValue(current_rule.set.lipsPiercing);
+			this.onchange = (value) => current_rule.set.lipsPiercing = value;
+		}
+	}
+
+	class TonguePiercingList extends List {
+		constructor() {
+			const pairs = [
+				["No default setting", "no default setting"],
+				["None", 0],
+				["Light", 1],
+				["Heavy", 2]
+			];
+			super("Tongue piercing", pairs);
+			this.setValue(current_rule.set.tonguePiercing);
+			this.onchange = (value) => current_rule.set.tonguePiercing = value;
+		}
+	}
+
+	class ClitPiercingList extends List {
+		constructor() {
+			const pairs = [
+				["No default setting", "no default setting"],
+				["None", 0],
+				["Light", 1],
+				["Heavy", 2],
+				["Smart (expensive)", 3]
+			];
+			super("Clit piercing", pairs);
+			this.setValue(current_rule.set.clitPiercing);
+			this.onchange = (value) => current_rule.set.clitPiercing = value;
+		}
+	}
+
+	class LabiaPiercingList extends List {
+		constructor() {
+			const pairs = [
+				["No default setting", "no default setting"],
+				["None", 0],
+				["Light", 1],
+				["Heavy", 2]
+			];
+			super("Pussylips piercings", pairs);
+			this.setValue(current_rule.set.vaginaPiercing);
+			this.onchange = (value) => current_rule.set.vaginaPiercing = value;
+		}
+	}
+
+	class ShaftPiercingList extends List {
+		constructor() {
+			const pairs = [
+				["No default setting", "no default setting"],
+				["None", 0],
+				["Light", 1],
+				["Heavy", 2]
+			];
+			super("Shaft piercings", pairs);
+			this.setValue(current_rule.set.dickPiercing);
+			this.onchange = (value) => current_rule.set.dickPiercing = value;
+		}
+	}
+
+	class PerineumPiercingList extends List {
+		constructor() {
+			const pairs = [
+				["No default setting", "no default setting"],
+				["None", 0],
+				["Light", 1],
+				["Heavy", 2]
+			];
+			super("Perianal piercings", pairs);
+			this.setValue(current_rule.set.anusPiercing);
+			this.onchange = (value) => current_rule.set.anusPiercing = value;
+		}
+	}
+
+	class CorsetPiercingList extends List {
+		constructor() {
+			const pairs = [
+				["No default setting", "no default setting"],
+				["None", 0],
+				["Apply", 1]
+			];
+			super("Corset piercings", pairs);
+			this.setValue(current_rule.set.corsetPiercing);
+			this.onchange = (value) => current_rule.set.corsetPiercing = value;
+		}
+	}
+
+	class AutoBrandingList extends List {
+		constructor() {
+			const pairs = [
+				["Activate", 1],
+				["Off", 0],
+			];
+			super("Automatic branding", pairs);
+			this.setValue(current_rule.set.autoBrand);
+			this.onchange = (value) => current_rule.set.autoBrand = value;
+		}
+	}
+
+	class BrandingLocationList extends List {
+		constructor() {
+			super("Your preferred location for brands is", []);
+
+			const ears = new ListSubSection(this, "Ears", [
+				["Left", "left ear"],
+				["Right", "right ear"],
+				["Both", "ears"]
+			]);
+			this.appendChild(ears);
+
+			const cheeks = new ListSubSection(this, "Cheeks", [
+				["Left", "left cheek"],
+				["Right", "right cheek"],
+				["Both", "cheeks"]
+			]);
+			this.appendChild(cheeks);
+
+			const shoulders = new ListSubSection(this, "Shoulders", [
+				["Left", "left shoulder"],
+				["Right", "right shoulder"],
+				["Both", "shoulders"]
+			]);
+			this.appendChild(shoulders);
+
+			const breasts = new ListSubSection(this, "Breasts", [
+				["Left", "right breast"],
+				["Right", "left breast"],
+				["Both", "breasts"]
+			]);
+			this.appendChild(breasts);
+
+			const upper_arms = new ListSubSection(this, "Arms, upper", [
+				["Left", "left upper arm"],
+				["Right", "right upper arm"],
+				["Both", "upper arms"]
+			]);
+			this.appendChild(upper_arms);
+
+			const lower_arms = new ListSubSection(this, "Arms, lower", [
+				["Left", "left lower arm"],
+				["Right", "right lower arm"],
+				["Both", "lower arms"]
+			]);
+			this.appendChild(lower_arms);
+
+			const wrist = new ListSubSection(this, "Wrist", [
+				["Left", "left wrist"],
+				["Right", "right wrist"],
+				["Both", "wrists"]
+			]);
+			this.appendChild(wrist);
+
+			const hand = new ListSubSection(this, "Hand", [
+				["Left", "left hand"],
+				["Right", "right hand"],
+				["Both", "hands"]
+			]);
+			this.appendChild(hand);
+
+			const buttocks = new ListSubSection(this, "Buttocks", [
+				["Left", "left buttock"],
+				["Right", "right buttock"],
+				["Both", "buttocks"]
+			]);
+			this.appendChild(buttocks);
+
+			const thigh = new ListSubSection(this, "Thigh", [
+				["Left", "left thigh"],
+				["Right", "right thigh"],
+				["Both", "thighs"]
+			]);
+			this.appendChild(thigh);
+
+			const calf = new ListSubSection(this, "Calf", [
+				["Left", "left calf"],
+				["Right", "right calf"],
+				["Both", "calves"]
+			]);
+			this.appendChild(calf);
+
+			const ankle = new ListSubSection(this, "Ankle", [
+				["Left", "left ankle"],
+				["Right", "right ankle"],
+				["Both", "ankles"]
+			]);
+			this.appendChild(ankle);
+
+			const feet = new ListSubSection(this, "Feet", [
+				["Left", "left foot"],
+				["Right", "right foot"],
+				["Both", "feet"]
+			]);
+			this.appendChild(feet);
+
+			const other = new ListSubSection(this, "Other", [
+				["Neck", "neck"],
+				["Chest", "chest"],
+				["Belly", "belly"],
+				["Pubic mound", "pubic mound"],
+				["Back", "back"],
+				["Lower Back", "lower back"]
+			]);
+			this.appendChild(other);
+
+			this.setValue(V.brandTarget);
+			this.onchange = (value) => V.brandTarget = value;
+		}
+	}
+
+	class BrandDesignList extends List {
+		constructor() {
+			const items = [
+				["Your  slaving emblem", "your personal symbol"],
+				["Your initials", "your initials"],
+				["SLUT"],
+				["WHORE"],
+				["SLAVE"],
+				["COW"],
+				["MEAT"],
+				["CUMDUMP"],
+				["LOVER"],
+				["Pussy symbol", "a pussy symbol"],
+				["Anus symbol", "an anus symbol"],
+				["Penis symbol", "a penis symbol"],
+				["Lady", "a lady silhouette"],
+				["Princess", "a princess silhouette"],
+				["Queen", "a queen silhouette"],
+				["Angel", "an angel silhouette"],
+				["Devil", "a devil silhouette"]
+			];
+			
+			if (V.arcologies[0].FSSupremacist !== "unset" || V.arcologies[0].FSSubjugationist !== "unset")
+				items.push(["(FS) Racial Slur", "a racial slur"]);
+			
+			if (V.arcologies[0].FSSupremacist !== "unset" && V.arcologies[0].FSSupremacistRace === "white")
+				items.push(["(FS) Swastika", "a swastika"]);
+			
+			if (V.arcologies[0].FSSubjugationist !== "unset" && V.arcologies[0].FSSubjugationistRace === "semitic")
+				items.push(["(FS) Star of David", "a Star of David"]);
+
+			if (V.arcologies[0].FSGenderRadicalist !== "unset" || V.arcologies.FSGenderFundamentalist !== "unset")
+				items.push(["(FS) Gender Symbol", "a gender symbol"]);
+
+			if (V.arcologies[0].FSPaternalist !== "unset")
+				items.push(["(FS) Personal Symbol", "her own personal symbol"]);
+
+			if (V.arcologies[0].FSDegradationist !== "unset")
+				items.push(["(FS) Chain Symbol", "a chain symbol"]);
+
+			if (V.arcologies[0].FSBodyPurist !== "unset")
+				items.push(["(FS) Vitruvian Man", "a Vitruvian man"]);
+
+			if (V.arcologies[0].FSTransformationFetishist !== "unset")
+				items.push(["(FS) Most Desired Implants", "a shortlist of desired implants"]);
+
+			if (V.arcologies[0].FSYouthPreferentialist !== "unset")
+				items.push(["(FS) Virginity Status", "her virginity status"]);
+
+			if (V.arcologies[0].FSMaturityPreferentialist !== "unset")
+				items.push(["(FS) Sexual Skill Info", "her sexual skills"]);
+
+			if (V.arcologies[0].FSSlimnessEnthusiast !== "unset")
+				items.push(["(FS) Breast Ceiling", "her absolute maximum breast size"]);
+
+			if (V.arcologies[0].FSAssetExpansionist !== "unset")
+				items.push(["(FS) Breast Floor", "her absolute minimum breast size"]);
+
+			if (V.arcologies[0].FSPastoralist !== "unset")
+				items.push(["(FS) Product Quality", "her body product quality"]);
+
+			if (V.arcologies[0].FSPhysicalIdelist !== "unset")
+				items.push(["(FS) Deadlift Info", "her deadlift record"]);
+
+			if (V.arcologies[0].FSHedonisticDecadence !== "unset")
+				items.push(["(FS) Weight Record", "her highest weigh-in"]);
+
+			if (V.arcologies[0].FSHedonisticDecadence && V.PC.refreshmentType == 2)
+				items.push(["(FS) Favorite Food", `a big helping of ${V.PC.refreshment}`]);
+
+			if (V.arcologies[0].FSRepopulationFocus !== "unset")
+				items.push(["(FS) Birth Count", "the number of children she has birthed"]);
+
+			if (V.arcologies[0].FSChattelReligionist !== "unset")
+				items.push(["(FS) Religious Symbol", "a religious symbol"]);
+
+			if (V.arcologies[0].FSRomanRevivalist !== "unset")
+				items.push(["(FS) Republican Crest", "a small crest of your Republic"]);
+
+			if (V.arcologies[0].FSAztecRevivalist !== "unset")
+				items.push(["(FS) Seven Serpents", "a small symbol of the Aztec gods"]);
+
+			if (V.arcologies[0].FSEgyptianRevivalist !== "unset")
+				items.push(["(FS) Dynastic Sigil", "a small sigil of your Dynasty"]);
+
+			if (V.arcologies[0].FSEdoRevivalist !== "unset")
+				items.push(["(FS) Mon", "a small image of the Shogunate's mon"]);
+
+			if (V.arcologies[0].FSArabianRevivalist !== "unset")
+				items.push(["(FS) Caliphate Symbol", "a small symbol of the Caliphate"]);
+
+			if (V.arcologies[0].FSChineseRevivalist !== "unset")
+				items.push(["(FS) Imperial Seal", "a small image of your Imperial Seal"]);
+			
+			super("Your brand design is", items, true);
+		}
+	}
+
+	class FaceTattooList extends List {
+		constructor() {
+			const items = [
+				["no default setting"],
+				["none", 0],
+				["tribal patterns"],
+				["flowers"],
+				["counting"],
+				["advertisements"],
+				["rude words"],
+				["degradation"],
+				["bovine patterns"],
+				["Asian art"],
+				["permanent makeup"],
+				["sacrament"],
+				["sacrilege"],
+				["possessive"],
+				["paternalist"]
+			];
+			super("Facial tattoos", items);
+			this.setValue(current_rule.set.lipsTat);
+			this.onchange = (value) => current_rule.set.lipsTat = value;
+		}
+	}
+	
+	class ShoulderTattooList extends List {
+		constructor() {
+			const items = [
+				["no default setting"],
+				["none", 0],
+				["tribal patterns"],
+				["flowers"],
+				["counting"],
+				["advertisements"],
+				["rude words"],
+				["degradation"],
+				["bovine patterns"],
+				["Asian art"],
+				["scenes"],
+				["sacrament"],
+				["sacrilege"],
+				["possessive"],
+				["paternalist"]
+			];
+			super("Shoulder tattoos", items);
+			this.setValue(current_rule.set.shouldersTat);
+			this.onchange = (value) => current_rule.set.shouldersTat = value;
+		}
+	}
+
+	class ChestTattooList extends List {
+		constructor() {
+			const items = [
+				["no default setting"],
+				["none", 0],
+				["tribal patterns"],
+				["flowers"],
+				["counting"],
+				["advertisements"],
+				["rude words"],
+				["degradation"],
+				["bovine patterns"],
+				["Asian art"],
+				["scenes"],
+				["sacrament"],
+				["sacrilege"],
+				["possessive"],
+				["paternalist"]
+			];
+			super("Chest tattoos", items);
+			this.setValue(current_rule.set.boobsTat);
+			this.onchange = (value) => current_rule.set.boobsTat = value;
+		}
+	}
+
+	class ArmTattooList extends List {
+		constructor() {
+			const items = [
+				["no default setting"],
+				["none", 0],
+				["tribal patterns"],
+				["flowers"],
+				["counting"],
+				["advertisements"],
+				["rude words"],
+				["degradation"],
+				["bovine patterns"],
+				["Asian art"],
+				["scenes"],
+				["sacrament"],
+				["sacrilege"],
+				["possessive"],
+				["paternalist"]
+			];
+			super("Arm tattoos", items);
+			this.setValue(current_rule.set.armsTat);
+			this.onchange = (value) => current_rule.set.armsTat = value;
+		}
+	}
+
+	class UpperBackTattooList extends List {
+		constructor() {
+			const items = [
+				["no default setting"],
+				["none", 0],
+				["tribal patterns"],
+				["flowers"],
+				["counting"],
+				["advertisements"],
+				["rude words"],
+				["degradation"],
+				["bovine patterns"],
+				["Asian art"],
+				["scenes"],
+				["sacrament"],
+				["sacrilege"],
+				["possessive"],
+				["paternalist"],
+			];
+			super("Upper back tattoos", items);
+			this.setValue(current_rule.set.backTat);
+			this.onchange = (value) => current_rule.set.backTat = value;
+		}
+	}
+
+	class LowerBackTattooList extends List {
+		constructor() {
+			const items = [
+				["no default setting"],
+				["none", 0],
+				["tribal patterns"],
+				["flowers"],
+				["counting"],
+				["advertisements"],
+				["rude words"],
+				["degradation"],
+				["bovine patterns"],
+				["Asian art"],
+				["scenes"],
+				["sacrament"],
+				["sacrilege"],
+				["possessive"],
+				["paternalist"]
+			];
+			super("Lower back tattoos", items);
+			this.setValue(current_rule.set.stampTat);
+			this.onchange = (value) => current_rule.set.stampTat = value;
+		}
+	}
+
+	class AbdomenTattooList extends List {
+		constructor() {
+			const items = [
+				["no default setting"],
+				["none", 0],
+				["tribal patterns"],
+				["flowers"],
+				["counting"],
+				["advertisements"],
+				["rude words"],
+				["degradation"],
+				["bovine patterns"],
+				["Asian art"],
+				["scenes"],
+				["sacrament"],
+				["sacrilege"],
+				["possessive"],
+				["paternalist"],
+			];
+			super("Abdomen tattoos", items);
+			this.setValue(current_rule.set.vaginaTat);
+			this.onchange = (value) => current_rule.set.vaginaTat = value;
+		}
+	}
+
+	class DickTattooList extends List {
+		constructor() {
+			const items = [
+				["no default setting"],
+				["none", 0],
+				["tribal patterns"],
+				["flowers"],
+				["counting"],
+				["advertisements"],
+				["rude words"],
+				["degradation"],
+				["bovine patterns"],
+				["Asian art"],
+				["sacrament"],
+				["sacrilege"],
+				["possessive"],
+				["paternalist"],
+			];
+			super("Dick tattoos", items);
+			this.setValue(current_rule.set.dickTat);
+			this.onchange = (value) => current_rule.set.dickTat = value;
+		}
+	}
+
+	class ButtockTattooList extends List {
+		constructor() {
+			const items = [
+				["no default setting"],
+				["none", 0],
+				["tribal patterns"],
+				["flowers"],
+				["counting"],
+				["advertisements"],
+				["rude words"],
+				["degradation"],
+				["bovine patterns"],
+				["Asian art"],
+				["scenes"],
+				["sacrament"],
+				["sacrilege"],
+				["possessive"],
+				["paternalist"],
+			];
+			super("Buttock tattoos:", items);
+			this.setValue(current_rule.set.buttTat);
+			this.onchange = (value) => current_rule.set.buttTat = value;
+		}
+	}
+
+	class AnalTattooList extends List {
+		constructor() {
+			const items = [
+				["no default setting"],
+				["none", 0],
+				["tribal patterns"],
+				["flowers"],
+				["counting"],
+				["advertisements"],
+				["rude words"],
+				["degradation"],
+				["bovine patterns"],
+				["bleached"],
+				["sacrament"],
+				["sacrilege"],
+				["possessive"],
+				["paternalist"],
+			];
+			super("Anal tattoo or bleaching", items);
+			this.setValue(current_rule.set.anusTat);
+			this.onchange = (value) => current_rule.set.anusTat = value;
+		}
+	}
+
+	class LegTattooList extends List {
+		constructor() {
+			const items = [
+				["no default setting"],
+				["none", 0],
+				["tribal patterns"],
+				["flowers"],
+				["counting"],
+				["advertisements"],
+				["rude words"],
+				["degradation"],
+				["bovine patterns"],
+				["Asian art"],
+				["scenes"],
+				["sacrament"],
+				["sacrilege"],
+				["possessive"],
+				["paternalist"],
+			];
+			super("Leg tattoos", items);
+			this.setValue(current_rule.set.legsTat);
+			this.onchange = (value) => current_rule.set.legsTat = value;
+		}
+	}
+
+	class VisionSurgeryList extends List {
+		constructor() {
+			const items = [
+				["no default setting"],
+				["fixed", 1],
+				["blurred", -1],
+			];
+			super("Vision correction", items);
+			this.setValue(current_rule.set.surgery_eyes);
+			this.onchange = (value) => current_rule.set.surgery_eyes = value;
+		}
+	}
+
+	class LactationSurgeryList extends List {
+		constructor() {
+			const items = [
+				["no default setting"],
+				["implanted", 1],
+				["removed", 0],
+			];
+			super("Lactation drug implants", items);
+			this.setValue(current_rule.set.surgery_lactation);
+			this.onchange = (value) => current_rule.set.surgery_lactation = value;
+		}
+	}
+
+	class SemenSurgeryList extends List {
+		constructor() {
+			const items = [
+				["no default setting"],
+				["implanted", 1],
+				["removed", 0],
+			];
+			super("Prostate production enhancing drug implants", items);
+			this.setValue(current_rule.set.surgery_prostate);
+			this.onchange = (value) => current_rule.set.surgery_prostate = value;
+		}
+	}
+
+	class CosmeticSurgeryList extends List {
+		constructor() {
+			const items = [
+				["none", 0],
+				["subtle", 1],
+				["invasive", 2],
+			];
+			super("Cosmetic Surgery", items);
+			this.setValue(current_rule.set.surgery_cosmetic);
+			this.onchange = (value) => current_rule.set.surgery_cosmetic = value;
+		}
+	}
+
+	class LipSurgeryList extends List {
+		constructor() {
+			const items = [
+				["no default setting"],
+				["removed", 0],
+				["plush", 20],
+				["big", 40],
+				["huge", 70],
+				["facepussy", 95],
+			];
+			super("Lip implants", items);
+			this.setValue(current_rule.set.surgery_lips);
+			this.onchange = (value) => current_rule.set.surgery_lips = value;
+		}
+	}
+
+	class ButtSurgeryList extends List {
+		constructor() {
+			const items = [
+				["no default setting"],
+				["removed", 0],
+				["slim", 2],
+				["stacked", 4],
+				["huge", 6],
+				["maximised", 9],
+			];
+			super("Buttock implants", items);
+			this.setValue(current_rule.set.surgery_butt);
+			this.onchange = (value) => current_rule.set.surgery_butt = value;
+		}
+	}
+
+	class BreastSurgeryList extends List {
+		constructor() {
+			const items = [
+				["no default setting"],
+				["removed", 0],
+				["slim", 400],
+				["stacked", 1000],
+				["huge", 2000],
+				["barely functional", 9000],
+				["maximised", 48000]
+			];
+			super("Breast implants", items);
+			this.setValue(current_rule.set.surgery_boobs);
+			this.onchange = (value) => current_rule.set.surgery_boobs = value;
+		}
+	}
+
+	class TighteningSurgeryList extends List {
+		constructor() {
+			const items = [
+				["no default setting"],
+				["tightening", 1],
+				["virginity restoration", 2],
+			];
+			super("Orifice Tightening", items);
+			this.setValue(current_rule.set.surgery_holes);
+			this.onchange = (value) => current_rule.set.surgery_holes = value;
+		}
+	}
+
+	class BodyHairSurgeryList extends List {
+		constructor() {
+			const items = [
+				["no default setting"],
+				["keep", 1],
+				["removal", 2],
+			];
+			super("Body Hair", items);
+			this.setValue(current_rule.set.surgery_bodyhair);
+			this.onchange = (value) => current_rule.set.surgery_bodyhair = value;
+		}
+	}
+
+	class HairSurgeryList extends List {
+		constructor() {
+			const items = [
+				["no default setting"],
+				["keep", 1],
+				["removal", 2],
+			];
+			super("Hair", items);
+			this.setValue(current_rule.set.surgery_hair);
+			this.onchange = (value) => current_rule.set.surgery_hair = value;
+		}
+	}
+
+	class AutomaticAssignmentList extends List {
+		constructor() {
+			const items = [
+				["No default setting", "no default setting"],
+				["Rest", "rest"],
+				["Fucktoy", "please you"],
+				["Subordinate Slave", "be a subordinate slave"],
+				["House Servant", "be a servant"],
+				["Confined", "stay confined"],
+				["Whore", "whore"],
+				["Public Servant", "serve the public"],
+				["Classes", "take classes"],
+				["Milked", "get milked"],
+				["Gloryhole", "work a glory hole"]
+			];
+			
+			if (V.HGSuite > 0) items.push(["Head Girl Suite", "live with your Head Girl"]);
+			if (V.brothel > 0) items.push(["Brothel", "work in the brothel"]);
+			if (V.club > 0) items.push(["Club", "serve in the club"]);
+			if (V.arcade > 0) items.push(["Arcade", "be confined in the arcade"]);
+			if (V.dairy > 0) items.push(["Dairy", "work in the dairy"]);
+			if (V.servantQuarters > 0) items.push(["Servant Quarters", "work as a servant"]);
+			if (V.masterSuite > 0) items.push(["Master Suite", "serve in the master suite"]);
+			if (V.schoolroom > 0) items.push(["Schoolroom", "learn in the schoolroom"]);
+			if (V.spa > 0) items.push(["Spa", "rest in the spa"]);
+			if (V.clinic > 0) items.push(["Clinic", "get treatment in the clinic"]);
+			if (V.cellblock > 0) items.push(["Cellblock", "be confined in the cellblock"]);
+			
+			super("Automatically set assignment", items);
+			this.setValue(current_rule.set.setAssignment);
+			this.onchange = (value) => current_rule.set.setAssignment = value;
+		}
+	}
+	
+	return rulesAssistantOptions;
+})();
diff --git a/src/js/rulesAssistantParser.tw b/src/js/rulesAssistantParser.tw
deleted file mode 100644
index c6670b058c4687ce695235b3adcecdf976cfe161..0000000000000000000000000000000000000000
--- a/src/js/rulesAssistantParser.tw
+++ /dev/null
@@ -1,358 +0,0 @@
-:: rulesAssistantParser [script]
-
-// Implements a Top Down Operator Precedence parser, also know as a Pratt
-// parser, after its "inventor", Vaughan Pratt.  The one implemented here
-// closely follows what's presented here,
-//     * http://javascript.crockford.com/tdop/tdop.html
-// by Douglas Crockford, that uses that technique in JSLint.  Other relevant
-// resources on the interweb
-//     * http://effbot.org/zone/simple-top-down-parsing.htm
-//     * http://eli.thegreenplace.net/2010/01/02/top-down-operator-precedence-parsing
-//     * http://journal.stuffwithstuff.com/2011/03/19/pratt-parsers-expression-parsing-made-easy/
-//     * https://higherlogics.blogspot.gr/2009/11/extensible-statically-typed-pratt.html
-//     * https://github.com/fholm/Vaughan
-//     * https://github.com/DasIch/pratt
-// included here mostly as bookmarks for potential future reference.
-//
-// With regards to the lexer, I used the following with many changes
-//     * http://eli.thegreenplace.net/2013/06/25/regex-based-lexical-analysis-in-python-and-javascript/
-//
-// Other useful things that I may not use any more but wouldn't want to lose,
-//     * https://plainjs.com/javascript/utilities/merge-two-javascript-objects-19/
-//     * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions
-
-
-if (!RegExp.escape) {
-    RegExp.escape = function(s) {
-        return s.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
-    };
-}
-
-if (!String.prototype.format) {
-    String.prototype.format = function() {
-        var args = arguments;
-        return this.replace(/{(\d+)}/g, function(match, number) {
-            return typeof args[number] !== "undefined" ? args[number] : match;
-        });
-    };
-}
-
-function panic(index, msg) {
-    throw {index: index, message: msg};
-}
-
-
-
-var Lexer = function(skipWhitespace) {
-    this.rules = [];
-    this.index = 0;
-    this.buffer = "";
-    this.skipWhitespace = skipWhitespace ? /\S/ : null;
-}
-
-Lexer.prototype.addRule = function(id, defn) {
-    var pattern = (defn && defn.pattern) || RegExp.escape(id);
-    this.rules.push({
-        id: id,
-        pattern: new RegExp('^' + pattern)
-    });
-}
-
-Lexer.prototype.feed = function(buffer) {
-    this.buffer = buffer;
-    this.index = 0;
-}
-
-Lexer.prototype.nextInterestingChar = function() {
-    if (this.skipWhitespace) {
-        var match = this.skipWhitespace.exec(this.buffer.substr(this.index));
-        return match ? this.index + match.index
-                     : this.buffer.length;
-    }
-    return this.index;
-}
-
-Lexer.prototype.next = function() {
-    this.index = this.nextInterestingChar();
-
-    if (this.index >= this.buffer.length)
-        return { done: true };
-
-    for (var i = 0; i < this.rules.length; ++i) {
-        var rule = this.rules[i],
-            match = rule.pattern.exec(this.buffer.substr(this.index));
-        if (match) {
-            var token = {
-                id: rule.id,
-                value: match[0],
-                index: this.index,
-            };
-            this.index += token.value.length;
-            return { done: false, value: token };
-        }
-    }
-
-    panic(this.index, "illegal character");
-}
-
-
-
-var BaseSymbol = {
-    lbp: 0,
-    nud: function() { panic(this.index, "unexpected '" + this.id + "'"); },
-    led: function() { panic(this.index, "not an operator"); }
-};
-
-var Parser = function(eofToken) {
-    this.lexer = new Lexer(true);
-    this.currentSymbol = null;
-
-    this.eofToken = eofToken;
-    this.symbolTable = {
-        [this.eofToken]: Object.create(BaseSymbol, {id: {value: this.eofToken}})
-    };
-}
-
-Parser.prototype.addSymbol = function(id, defn) {
-    var s = this.symbolTable[id];
-    if (s) {
-        if (defn) {
-            if (defn.lbp !== undefined) s.lbp = defn.lbp;
-            if (defn.nud !== undefined) s.nud = defn.nud;
-            if (defn.led !== undefined) s.led = defn.led;
-        }
-    } else {
-        s = Object.create(BaseSymbol);
-        s.id = id;
-        if (defn && defn.lbp !== undefined) s.lbp = defn.lbp;
-        if (defn && defn.nud) s.nud = defn.nud;
-        if (defn && defn.led) s.led = defn.led;
-        this.symbolTable[id] = s;
-        this.lexer.addRule(id, defn);
-    }
-    return this;
-}
-
-Parser.prototype.addInfix = function(id, lbp, callback) {
-    this.addSymbol(id, {
-        lbp: lbp,
-        led: function(p, left) { return callback(this, left, p.parse(lbp)); }
-    });
-    return this;
-}
-
-Parser.prototype.addInfixR = function(id, lbp, callback) {
-    this.addSymbol(id, {
-        lbp: lbp,
-        led: function(p, left) { return callback(this, left, p.parse(lbp-1)); }
-    });
-    return this;
-}
-
-Parser.prototype.addPrefix = function(id, callback) {
-    this.addSymbol(id, {
-        // FIXME: this should not always be 70
-        nud: function (p) { return callback(this, p.parse(70)); }
-    });
-    return this;
-}
-
-Parser.prototype.addConstant = function(id, callback) {
-    this.addSymbol(id, {
-        nud: function () { return callback(this); }
-    });
-    return this;
-}
-
-Parser.prototype.advance = function(id) {
-    if (id !== undefined && this.currentSymbol.id !== id)
-        panic(this.currentSymbol.index, "expected '" + id + "', got '" + this.currentSymbol.id + "'");
-
-    var iter = this.lexer.next(),
-        token = iter.value;
-    if (iter.done)
-        token = {
-            id: this.eofToken,
-            index: this.lexer.buffer.length
-        };
-
-    var symbol = this.symbolTable[iter.done ? this.eofToken : token.id];
-    if (!symbol)
-        panic(token.index, "unknown token '" + token.id + "'");
-
-    var newSymbol = Object.create(symbol);
-    newSymbol.value = token.value;
-    newSymbol.index = token.index;
-    return this.currentSymbol = newSymbol;
-}
-
-Parser.prototype.parse = function(rbp) {
-    var symbol = this.currentSymbol;
-    this.advance();
-    var left = symbol.nud(this);
-
-    rbp = rbp || 0;
-    while (rbp < this.currentSymbol.lbp) {
-        symbol = this.currentSymbol;
-        this.advance();
-        left = symbol.led(this, left);
-    }
-    return left;
-}
-
-Parser.prototype.parseString = function(string) {
-    this.lexer.feed(string);
-    this.advance();  // "kickstart" the lexer
-    var result = this.parse();
-    this.advance(this.eofToken);
-    return result;
-}
-
-
-
-var ASTBuilder = function(eofToken) {
-    this.parser = new Parser(eofToken);
-}
-
-ASTBuilder.prototype.addSymbol = function(id, extra) {
-    this.parser.addSymbol(id, extra);
-    return this;
-}
-
-ASTBuilder.prototype.addInfix = function(id, lbp) {
-    this.parser.addInfix(id, lbp, function(symbol, left, right) {
-        return {
-            id: id,
-            first: left,
-            second: right,
-        };
-    });
-    return this;
-}
-
-ASTBuilder.prototype.addInfixR = function(id, lbp) {
-    this.parser.addInfixR(id, lbp, function(symbol, left, right) {
-        return {
-            id: id,
-            first: left,
-            second: right,
-        };
-    });
-    return this;
-}
-
-ASTBuilder.prototype.addPrefix = function(id) {
-    this.parser.addPrefix(id, function(symbol, left) {
-        return {
-            id: id,
-            first: left,  // it's not really the left is it?
-        };
-    });
-    return this;
-}
-
-ASTBuilder.prototype.addConstant = function(id, value) {
-    this.parser.addConstant(id, function(symbol) {
-        return {
-            id: id,
-            value: value,
-        };
-    });
-    return this;
-}
-
-
-var op = {
-    add: function(a, b) { return a + b; },
-    sub: function(a, b) { return a - b; },
-    mul: function(a, b) { return a * b; },
-    div: function(a, b) { return a / b; },
-    pow: function(a, b) { return Math.pow(a, b); },
-
-    neg: function(a) { return -a; },
-
-    lt: function(a, b) { return a < b; },
-    le: function(a, b) { return a <= b; },
-    gt: function(a, b) { return a > b; },
-    ge: function(a, b) { return a >= b; },
-    eq: function(a, b) { return a === b; },
-    neq: function(a, b) { return a !== b; },
-
-    not: function(a) { return !a; },
-    or: function(a, b) { return a || b; },
-    and: function(a, b) { return a && b; },
-};
-
-var parserBuilder = new ASTBuilder("(end)")
-    // XXX: need to be first to not be recognized as a (name)
-    .addConstant("true", true)
-    .addConstant("false", false)
-
-    .addSymbol("(number)", {
-        pattern: "\\d+",
-        nud: function() {
-            return {
-                id: "(number)",
-                value: parseInt(this.value),
-            };
-        }
-    })
-
-    .addSymbol("(string)", {
-        pattern: "\"(?:[^\\\\\"]|\\\\\"|\\\\(?!\"))*\"",
-        nud: function(p) {
-            return {
-                id: "(string)",
-                value: this.value.replace(/^\"|\"$/g, ""),
-            };
-        }
-    })
-
-    .addSymbol("(name)", {
-        pattern: "[a-zA-Z]\\w*",
-        nud: function(p) {
-            return {
-                id: "(name)",
-                name: this.value,
-            };
-        }
-    })
-
-    .addInfix("+", 50,  op.add)
-    .addInfix("-", 50,  op.sub)
-    .addInfix("*", 60,  op.mul)
-    .addInfix("/", 60,  op.div)
-    .addInfixR("^", 70, op.pow)
-
-    .addPrefix("-", op.neg)
-
-    .addInfix("<=", 40, op.le)
-    .addInfix("<",  40, op.lt)
-    .addInfix(">=", 40, op.ge)
-    .addInfix(">",  40, op.gt)
-    .addInfix("!=", 40, op.neq)
-    .addInfix("=",  40, op.eq)
-
-    .addPrefix("!", op.not)
-    .addInfix("||", 30, op.or)
-    .addInfix("&&", 30, op.and)
-
-    .addSymbol(")")
-    .addSymbol("(", {
-        nud: function(p) {
-            var expr = p.parse(0);
-            p.advance(")");
-            return expr;
-        }
-    });
-
-var parser = parserBuilder.parser;
-window.parser = parser;
-
-window.parseCondition = function(condition) {
-    try {
-        return {expr: parser.parseString(condition), error: null};
-    } catch (e) {
-        return {expr: null, error: e};
-    }
-}
diff --git a/src/js/rulesAutosurgery.tw b/src/js/rulesAutosurgery.tw
new file mode 100644
index 0000000000000000000000000000000000000000..3a8833145229fd9640e04e7748b436ee849e6744
--- /dev/null
+++ b/src/js/rulesAutosurgery.tw
@@ -0,0 +1,540 @@
+:: rules autosurgery js [script]
+
+window.rulesAutosurgery = (function() {
+	"use strict";
+	let V;
+	let r = "";
+	return rulesAutoSurgery;
+
+	function rulesAutoSurgery(slave) {
+		V = State.variables;
+		const surgeries = [];
+		const thisSurgery = ProcessHGTastes(slave);
+		if (slave.health > 20)
+			CommitSurgery(slave, thisSurgery, surgeries);
+		if (surgeries.length > 0)
+			PrintResult(slave, thisSurgery, surgeries);
+		return r
+	}
+	
+	function autoSurgerySelector(slave, ruleset) {
+		const apply = ruleset.filter(rule => rule.set.autoSurgery == 1 && slave.currentRules.contains(rule.ID));
+
+		const surgery = {
+			surgery_eyes: "no default setting",
+			surgery_lactation: "no default setting",
+			surgery_cosmetic: "no default setting",
+			surgery_accent: "no default setting",
+			surgery_shoulders: "no default setting",
+			surgery_shouldersImplant: "no default setting",
+			surgery_boobs: "no default setting",
+			surgery_hips: "no default setting",
+			surgery_hipsImplant: "no default setting",
+			surgery_butt: "no default setting",
+			surgery_faceShape: "no default setting",
+			surgery_lips: "no default setting",
+			surgery_holes: "no default setting",
+			surgery_bodyhair: "no default setting",
+			surgery_hair: "no default setting",
+			surgery_bellyImplant: "no default setting"
+		};
+		apply.forEach(rule => {
+			Object.keys(surgery).forEach(key => {
+				if (rule[key] !== "no default setting")
+					surgery[key] = rule[key];
+			})
+		});
+		return surgery;
+	}
+
+	function ProcessHGTastes(slave) {
+		let thisSurgery;
+		switch (V.HGTastes) {
+		case 1:
+			thisSurgery = {
+				surgery_lactation: 0,
+				surgery_cosmetic: 1,
+				surgery_faceShape: "cute",
+				surgery_lips: 10,
+				surgery_hips: 0,
+				surgery_hipsImplant: 0,
+				surgery_butt: 0,
+				surgery_accent: 0,
+				surgery_shoulders: 0,
+				surgery_shouldersImplant: 0,
+				surgery_boobs: 0,
+				surgery_holes: 0
+			};
+			break ;
+		case 2:
+			thisSurgery = {
+				surgery_lactation: 0,
+				surgery_cosmetic: 1,
+				surgery_faceShape: "cute",
+				surgery_lips: 60,
+				surgery_hips: 0,
+				surgery_hipsImplant: 0,
+				surgery_butt: 4,
+				surgery_accent: 0,
+				surgery_shoulders: 0,
+				surgery_shouldersImplant: 0,
+				surgery_boobs: 1200,
+				surgery_holes: 0
+			};
+			break;
+		case 3:
+			thisSurgery = {
+				surgery_lactation: 0,
+				surgery_cosmetic: 1,
+				surgery_faceShape: "cute",
+				surgery_lips: 95,
+				surgery_hips: 0,
+				surgery_hipsImplant: 0,
+				surgery_butt: 8,
+				surgery_accent: 0,
+				surgery_shoulders: 0,
+				surgery_shouldersImplant: 0,
+				surgery_boobs: 10000,
+				surgery_holes: 2
+			};
+			break;
+		case 4:
+			thisSurgery = {
+				surgery_lactation: 1,
+				surgery_cosmetic: 1,
+				surgery_faceShape: "cute",
+				surgery_lips: 10,
+				surgery_hips: 3,
+				surgery_hipsImplant: 0,
+				surgery_butt: 0,
+				surgery_accent: 0,
+				surgery_shoulders: 0,
+				surgery_shouldersImplant: 0,
+				surgery_boobs: 0,
+				surgery_holes: 0
+			};
+			break;
+		default:
+			thisSurgery = autoSurgerySelector(slave, V.defaultRules);
+			if ((thisSurgery.surgery_hips !== "no default setting") && (thisSurgery.surgery_butt !== "no default setting")) {
+				if (slave.hips < -1) {
+					if (thisSurgery.surgery_butt > 2)
+						thisSurgery.surgery_butt = 2;
+				} else if (slave.hips < 0) {
+					if (thisSurgery.surgery_butt > 4)
+						thisSurgery.surgery_butt = 4;
+				} else if (slave.hips > 0) {
+					if (thisSurgery.surgery_butt > 8)
+						thisSurgery.surgery_butt = 8;
+				} else if (slave.hips > 1) {
+					true;
+				} else {
+					if (thisSurgery.surgery_butt > 6)
+						thisSurgery.surgery_butt = 6;
+				}
+			};
+			break;
+		}
+		return thisSurgery;
+	}
+
+	function CommitSurgery(slave, thisSurgery, surgeries) {
+		if ((slave.eyes == -1) && (thisSurgery.eyes == 1)) {
+			surgeries.push("surgery to correct her vision");
+			slave.eyes = 1;
+			V.cash -= V.surgeryCost;
+			if (V.PC.medicine >= 100) slave.health -= 5;
+			else slave.health -= 10;
+			
+		} else if ((slave.eyes == 1) && (thisSurgery.eyes == -1)) {
+			surgeries.push("surgery to blur her vision");
+			slave.eyes = -1;
+			V.cash -= V.surgeryCost;
+			if (V.PC.medicine >= 100) slave.health -= 5;
+			else slave.health -= 10;
+			
+		} else if ((slave.lactation == 2) && (thisSurgery.lactation == 0)) {
+			surgeries.push("surgery to remove her lactation implants");
+			slave.lactation = 0;
+			V.cash -= V.surgeryCost;
+			if (V.PC.medicine >= 100) slave.health -= 5;
+			else slave.health -= 10;
+			
+		} else if (slave.lactation != 2 && (thisSurgery.lactation == 1)) {
+			surgeries.push("lactation inducing implanted drugs");
+			slave.lactation = 2;
+			V.cash -= V.surgeryCost;
+			if (V.PC.medicine >= 100) slave.health -= 5;
+			else slave.health -= 10;
+			
+		} else if ((slave.prostate == 2) && (thisSurgery.prostate == 0)) {
+			surgeries.push("surgery to remove her prostate implant");
+			slave.prostate = 0;
+			V.cash -= V.surgeryCost;
+			if (V.PC.medicine >= 100) slave.health -= 5;
+			else slave.health -= 10;
+			
+		} else if (slave.prostate == 1 && (thisSurgery.prostate == 1)) {
+			surgeries.push("a precum production enhancing drug implant");
+			slave.prostate = 2;
+			V.cash -= V.surgeryCost;
+			if (V.PC.medicine >= 100) slave.health -= 5;
+			else slave.health -= 10;
+			
+		} else if ((slave.anus > 3) && (thisSurgery.cosmetic > 0)) {
+			surgeries.push("a restored anus");
+			slave.anus = 3;
+			if (slave.analSkill > 10)
+				slave.analSkill -= 10;
+			V.cash -= V.surgeryCost;
+			if (V.PC.medicine >= 100) slave.health -= 5;
+			else slave.health -= 10;
+			
+		} else if ((slave.vagina > 3) && (thisSurgery.cosmetic > 0)) {
+			surgeries.push("a restored pussy");
+			slave.vagina = 3;
+			if (slave.vaginalSkill > 10)
+				slave.vaginalSkill -= 10;
+			V.cash -= V.surgeryCost;
+			if (V.PC.medicine >= 100) slave.health -= 5;
+			else slave.health -= 10;
+			
+		} else if ((slave.faceImplant <= 15) && (slave.face <= 95) && (thisSurgery.cosmetic > 0)) {
+			surgeries.push("a nicer face");
+			if (slave.faceShape == "masculine") {slave.faceShape = "androgynous"};
+			slave.faceImplant += 25-5*Math.trunc(V.PC.medicine/50)-5*V.surgeryUpgrade;
+			slave.face = Math.clamp(slave.face+20,-100,100);
+			V.cash -= V.surgeryCost;
+			if (V.PC.medicine >= 100) slave.health -= 5;
+			else slave.health -= 10;
+			
+		} else if ((slave.faceImplant <= 15) && (slave.ageImplant != 1) && (slave.visualAge >= 25) && (thisSurgery.cosmetic > 0)) {
+			surgeries.push("an age lift");
+			slave.ageImplant = 1;
+			slave.faceImplant += 25-5*Math.trunc(V.PC.medicine/50)-5*V.surgeryUpgrade;
+			if (slave.visualAge > 80) slave.visualAge -= 40;
+			else if (slave.visualAge >= 70) slave.visualAge -= 30;
+			else if (slave.visualAge > 50) slave.visualAge -= 20;
+			else if (slave.visualAge > 36) slave.visualAge -= 10;
+			else slave.visualAge -= 5;
+			V.cash -= V.surgeryCost;
+			if (V.PC.medicine >= 100) slave.health -= 5;
+			else slave.health -= 10;
+			
+		} else if (((slave.underArmHStyle != "bald" && slave.underArmHStyle != "hairless") || (slave.pubicHStyle != "bald" && slave.pubicHStyle != "hairless")) && (thisSurgery.bodyhair == 2)) {
+			surgeries.push("body hair removal");
+			if (slave.underArmHStyle != "hairless") {slave.underArmHStyle = "bald"};
+			if (slave.pubicHStyle != "hairless") {slave.pubicHStyle = "bald"};
+			V.cash -= V.surgeryCost;
+			
+		} else if ((slave.bald == 0 || slave.hStyle != "bald") && (thisSurgery.hair == 2)) {
+			surgeries.push("hair removal");
+			slave.hStyle = "bald";
+			slave.bald = 1;
+			V.cash -= V.surgeryCost;
+			
+		} else if ((slave.weight >= 10) && (thisSurgery.cosmetic > 0)) {
+			surgeries.push("liposuction");
+			slave.weight -= 50;
+			V.cash -= V.surgeryCost;
+			if (V.PC.medicine >= 100) slave.health -= 5;
+			else slave.health -= 10;
+			
+		} else if ((slave.voice == 1) && (slave.voiceImplant == 0) && (thisSurgery.cosmetic > 0)) {
+			surgeries.push("a feminine voice");
+			slave.voice += 1;
+			slave.voiceImplant += 1;
+			V.cash -= V.surgeryCost;
+			if (V.PC.medicine >= 100) slave.health -= 5;
+			else slave.health -= 10;
+			
+		} else if ((slave.waist >= -10) && (thisSurgery.cosmetic > 0)) {
+			surgeries.push("a narrower waist");
+			slave.waist -= 20;
+			V.cash -= V.surgeryCost;
+			if (V.PC.medicine >= 100) slave.health -= 5;
+			else slave.health -= 10;
+			
+		} else if (((slave.boobShape == "saggy") || (slave.boobShape == "downward-facing")) && (thisSurgery.cosmetic > 0) && (slave.breastMesh != 1)) {
+			surgeries.push("a breast lift");
+			slave.boobShape = "normal";
+			V.cash -= V.surgeryCost;
+			if (V.PC.medicine >= 100) slave.health -= 5;
+			else slave.health -= 10;
+			
+		} else if (((slave.boobShape == "normal") || (slave.boobShape == "wide-set")) && (thisSurgery.cosmetic > 0) && (slave.breastMesh != 1)) {
+			if (slave.boobs > 800)
+				slave.boobShape = "torpedo-shaped";
+			else
+				slave.boobShape = "perky";
+			surgeries.push("more interestingly shaped breasts");
+			V.cash -= V.surgeryCost;
+			if (V.PC.medicine >= 100) slave.health -= 5;
+			else slave.health -= 10;
+			
+		} else if ((thisSurgery.lips == 0) && (slave.lipsImplant > 0)) {
+			surgeries.push("surgery to remove her lip implants");
+			slave.lips -= slave.lipsImplant;
+			slave.lipsImplant = 0;
+			if (slave.oralSkill > 10)
+				slave.oralSkill -= 10;
+			V.cash -= V.surgeryCost;
+			if (V.PC.medicine >= 100) slave.health -= 5;
+			else slave.health -= 10;
+			
+		} else if ((slave.lips <= 95) && (slave.lips < thisSurgery.lips)) {
+			if (thisSurgery.lips !== "no default setting") {
+				surgeries.push("bigger lips");
+				slave.lipsImplant += 10;
+				slave.lips += 10;
+				if (slave.oralSkill > 10)
+					slave.oralSkill -= 10;
+				V.cash -= V.surgeryCost;
+				if (V.PC.medicine >= 100) slave.health -= 5;
+				else slave.health -= 10;
+			}
+			
+		} else if ((slave.faceImplant <= 45) && (slave.face <= 95) && (thisSurgery.cosmetic == 2)) {
+			surgeries.push("a nicer face");
+			if (slave.faceShape == "masculine") slave.faceShape = "androgynous";
+			slave.faceImplant += 25-5*Math.trunc(V.PC.medicine/50)-5*V.surgeryUpgrade;
+			slave.face = Math.clamp(slave.face+20,-100,100);
+			V.cash -= V.surgeryCost;
+			if (V.PC.medicine >= 100) slave.health -= 5;
+			else slave.health -= 10;
+			
+		} else if ((slave.hips < 1) && (slave.hips < thisSurgery.hips) && (V.surgeryUpgrade == 1)) {
+			surgeries.push("wider hips");
+			slave.hips++;
+			slave.hipsImplant++;
+			V.cash -= V.surgeryCost;
+			if (V.PC.medicine >= 100) slave.health -= 5;
+			else slave.health -= 10;
+			
+		} else if ((slave.faceImplant <= 45) && (slave.ageImplant != 1) && (slave.visualAge >= 25) && (thisSurgery.cosmetic == 2)) {
+			surgeries.push("an age lift");
+			slave.ageImplant = 1;
+			if (slave.visualAge > 80) {
+				slave.visualAge -= 40;
+			} else if (slave.visualAge >= 70) {
+				slave.visualAge -= 30;
+			} else if (slave.visualAge > 50) {
+				slave.visualAge -= 20;
+			} else if (slave.visualAge > 36) {
+				slave.visualAge -= 10;
+			} else {
+				slave.visualAge -= 5;
+			}
+			slave.faceImplant += 25-5*Math.trunc(V.PC.medicine/50)-5*V.surgeryUpgrade;
+			V.cash -= V.surgeryCost;
+			if (V.PC.medicine >= 100) slave.health -= 5;
+			else slave.health -= 10;
+			
+		} else if ((slave.waist >= -95) && (thisSurgery.cosmetic == 2) && (V.seeExtreme == 1)) {
+			surgeries.push("a narrower waist");
+			slave.waist = Math.clamp(slave.waist-20,-100,100);
+			V.cash -= V.surgeryCost;
+			if (V.PC.medicine >= 100) slave.health -= 5;
+			else slave.health -= 10;
+			
+		} else if ((slave.voice < 3) && (slave.voiceImplant == 0) && (thisSurgery.cosmetic == 2)) {
+			surgeries.push("a bimbo's voice");
+			slave.voice += 1;
+			slave.voiceImplant += 1;
+			V.cash -= V.surgeryCost;
+			if (V.PC.medicine >= 100) slave.health -= 5;
+			else slave.health -= 10;
+			
+		} else if ((thisSurgery.butt == 0) && (slave.buttImplant > 0)) {
+			surgeries.push("surgery to remove her butt implants");
+			slave.butt -= slave.buttImplant;
+			slave.buttImplant = 0;
+			slave.buttImplantType = 0;
+			V.cash -= V.surgeryCost;
+			if (V.PC.medicine >= 100) slave.health -= 5;
+			else slave.health -= 10;
+			
+		} else if ((thisSurgery.boobs == 0) && (slave.boobsImplant > 0)) {
+			surgeries.push("surgery to remove her boob implants");
+			slave.boobs -= slave.boobsImplant;
+			slave.boobsImplant = 0;
+			slave.boobsImplantType = 0;
+			V.cash -= V.surgeryCost;
+			if (V.PC.medicine >= 100) slave.health -= 5;
+			else slave.health -= 10;
+		} else if ((slave.butt <= 3) && (slave.butt < thisSurgery.butt)) {
+			if (thisSurgery.butt !== "no default setting") {
+				surgeries.push("a bigger butt");
+				slave.buttImplant = 1;
+				slave.butt += 1;
+				V.cash -= V.surgeryCost;
+				if (V.PC.medicine >= 100) slave.health -= 5;
+				else slave.health -= 10;
+			}
+		} else if ((slave.boobs <= 600) && (slave.lactation < 2) && (slave.boobs+400 <= thisSurgery.boobs)) {
+			if (thisSurgery.boobs !== "no default setting") {
+				surgeries.push("bigger boobs");
+				slave.boobsImplant += 400;
+				slave.boobs += 400;
+				V.cash -= V.surgeryCost;
+				if (V.PC.medicine >= 100) slave.health -= 5;
+				else slave.health -= 10;
+			}
+		} else if ((slave.boobs <= 600) && (slave.lactation < 2) && (slave.boobs+200 <= thisSurgery.boobs)) {
+			if (thisSurgery.boobs !== "no default setting") {
+				surgeries.push("modestly bigger boobs");
+				slave.boobsImplant += 200;
+				slave.boobs += 200;
+				V.cash -= V.surgeryCost;
+				if (V.PC.medicine >= 100) slave.health -= 5;
+				else slave.health -= 10;
+			}
+			
+		} else if ((slave.butt <= 5) && (slave.butt < thisSurgery.butt)) {
+			if (thisSurgery.butt !== "no default setting") {
+				surgeries.push("a bigger butt");
+				slave.buttImplant = 1;
+				slave.butt += 1;
+				V.cash -= V.surgeryCost;
+				if (V.PC.medicine >= 100) slave.health -= 5;
+				else slave.health -= 10;
+			}
+			
+		} else if ((slave.boobs <= 2000) && (slave.lactation < 2) && (slave.boobs+400 < thisSurgery.boobs)) {
+			if (thisSurgery.boobs !== "no default setting") {
+				surgeries.push("bigger boobs");
+				slave.boobsImplant += 400;
+				slave.boobs += 400;
+				V.cash -= V.surgeryCost;
+				if (V.PC.medicine >= 100) slave.health -= 5;
+				else slave.health -= 10;
+			}
+			
+		} else if ((slave.anus > 0) && (V.surgeryUpgrade == 1) && (thisSurgery.holes == 2)) {
+			surgeries.push("a virgin anus");
+			slave.anus = 0;
+			if (slave.analSkill > 10) {
+				slave.analSkill -= 10;
+			}
+			V.cash -= V.surgeryCost;
+			if (V.PC.medicine >= 100) slave.health -= 5;
+			else slave.health -= 10;
+			
+		} else if ((slave.vagina > 0) && (V.surgeryUpgrade == 1) && (thisSurgery.holes == 2)) {
+			surgeries.push("a virgin pussy");
+			slave.vagina = 0;
+			if (slave.vaginalSkill > 10)
+				slave.vaginalSkill -= 10;
+			V.cash -= V.surgeryCost;
+			if (V.PC.medicine >= 100) slave.health -= 5;
+			else slave.health -= 10;
+			
+		} else if ((slave.hips < 2) && (slave.hips < thisSurgery.hips) && (V.surgeryUpgrade == 1)) {
+			surgeries.push("wider hips");
+			slave.hips++;
+			slave.hipsImplant++;
+			V.cash -= V.surgeryCost;
+			if (V.PC.medicine >= 100) slave.health -= 5;
+			else slave.health -= 10;
+			
+		} else if ((slave.anus > 1) && (thisSurgery.holes == 1)) {
+			surgeries.push("a tighter anus");
+			slave.anus = 1;
+			if (slave.analSkill > 10) {
+				slave.analSkill -= 10;
+			}
+			V.cash -= V.surgeryCost;
+			if (V.PC.medicine >= 100) slave.health -= 5;
+			else slave.health -= 10;
+			
+		} else if ((slave.vagina > 1) && (thisSurgery.holes == 1)) {
+			surgeries.push("a tighter pussy");
+			slave.vagina = 1;
+			if (slave.vaginalSkill > 10) {
+				slave.vaginalSkill -= 10;
+			}
+			V.cash -= V.surgeryCost;
+			if (V.PC.medicine >= 100) slave.health -= 5;
+			else slave.health -= 10;
+			
+		} else if ((slave.butt <= 8) && (slave.butt < thisSurgery.butt)) {
+			if (thisSurgery.butt !== "no default setting") {
+				surgeries.push("a bigger butt");
+				slave.buttImplant = 1;
+				slave.butt += 1;
+				V.cash -= V.surgeryCost;
+				if (V.PC.medicine >= 100) slave.health -= 5;
+				else slave.health -= 10;
+			}
+			
+		} else if ((slave.boobs <= 9000) && (slave.lactation < 2) && (slave.boobs < thisSurgery.boobs)) {
+			if (thisSurgery.boobs !== "no default setting") {
+				surgeries.push("bigger boobs");
+				slave.boobsImplant += 200;
+				slave.boobs += 200;
+				V.cash -= V.surgeryCost;
+				if (V.PC.medicine >= 100) slave.health -= 5;
+				else slave.health -= 10;
+			}
+			
+		} else if ((slave.hips < 3) && (slave.hips < thisSurgery.hips) && (V.surgeryUpgrade == 1)) {
+			surgeries.push("wider hips");
+			slave.hips++;
+			slave.hipsImplant++;
+			V.cash -= V.surgeryCost;
+			if (V.PC.medicine >= 100) slave.health -= 5;
+			else slave.health -= 10;
+			
+		} else if (slave.bellyImplant < 0 && V.bellyImplants > 0 && thisSurgery.bellyImplant == "install" && slave.womb.length == 0 && slave.broodmother == 0) {
+			slave.bellyImplant = 100;
+			slave.preg = -2;
+			V.cash -= V.surgeryCost;
+			if (V.activeSlave.ovaries == 1 || V.activeSlave.mpreg == 1) {
+				surgeries.push("belly implant");
+				V.surgeryType = "bellyIn";
+				if (V.PC.medicine >= 100) slave.health -= 5;
+				else slave.health -= 10;
+			} else {
+				surgeries.push("male belly implant");
+				V.surgeryType = "bellyInMale";
+				if (V.PC.medicine >= 100) slave.health -= 25;
+				else slave.health -= 50;
+			}
+			bellyIn(slave);
+			
+		} else if (slave.bellyImplant >= 0 && thisSurgery.bellyImplant == "remove") {
+			surgeries.push("belly implant removal");
+			V.surgeryType = "bellyOut";
+			if (V.PC.medicine >= 100)
+				slave.health -= 5;
+			else
+				slave.health -= 10;
+			slave.preg = 0;
+			slave.bellyImplant = -1;
+			V.cash -= V.surgeryCost;
+		}
+	}
+
+	function PrintResult(slave, thisSurgery, surgeries) {
+		let surgeriesDisplay = "";
+		if (surgeries.length === 1)
+			surgeriesDisplay = surgeries[0];
+		else {
+			surgeriesDisplay = surgeries.slice(0, surgeries.length - 1).join(", ");
+			surgeriesDisplay += ", and" + surgeries[surgeries.length - 1];
+		}
+		r += `${V.assistantName === "your personal assistant" ? "Your personal assistant" : V.assistantName}, ordered to apply surgery, gives ${slave.slaveName} <span class="lime">${surgeriesDisplay}.</span>`;
+	}
+
+	function bellyIn(slave) {
+		// less hacky version of calling surgery degradation silently
+		if (slave.devotion > 50)
+			slave.devotion += 4;
+		else if (slave.devotion >= -20)
+			slave.trust -= 5;
+		else {
+			slave.trust -= 5;
+			slave.devotion -= 5;
+		}
+	}
+})();
diff --git a/src/js/spanMacroJS.tw b/src/js/spanMacroJS.tw
index bdded0f8213cdfc72a31cd98270261cb11cd1764..fde8e0cfed0309ee8f2698335065f076d1cb30a4 100644
--- a/src/js/spanMacroJS.tw
+++ b/src/js/spanMacroJS.tw
@@ -31,4 +31,4 @@ Macro.add('span', {
 			.wiki(payload)
 			.appendTo(this.output);
 	}
-});
\ No newline at end of file
+});
diff --git a/src/js/utilJS.tw b/src/js/utilJS.tw
index 359f83935bbbcfcf524a939ba7e0a4ee02c0b248..71110801fa586c2eacfb652751341c82290595b4 100644
--- a/src/js/utilJS.tw
+++ b/src/js/utilJS.tw
@@ -71,25 +71,25 @@ window.Height = (function(){
 		}
 		if(_.isFinite(conf.skew)) { skew = Math.clamp(conf.skew, -1000, 1000); }
 		if(_.isFinite(conf.spread)) { spread = Math.clamp(conf.spread, 0.001, 0.5); }
-		if(_.isArray(conf.limitMult) && conf.limitMult.length === 2 && conf.limitMult[0] !== conf.limitMult[1]
-			&& _.isFinite(conf.limitMult[0]) && _.isFinite(conf.limitMult[1])) {
+		if(_.isArray(conf.limitMult) && conf.limitMult.length === 2 && conf.limitMult[0] !== conf.limitMult[1] &&
+		   _.isFinite(conf.limitMult[0]) && _.isFinite(conf.limitMult[1])) {
 			minMult = Math.min(conf.limitMult[0], conf.limitMult[1]);
 			maxMult = Math.max(conf.limitMult[0], conf.limitMult[1]);
 		}
-		if(_.isArray(conf.limitHeight) && conf.limitHeight.length === 2 && conf.limitHeight[0] !== conf.limitHeight[1]
-			&& _.isFinite(conf.limitHeight[0]) && _.isFinite(conf.limitHeight[1])) {
+		if(_.isArray(conf.limitHeight) && conf.limitHeight.length === 2 && conf.limitHeight[0] !== conf.limitHeight[1] &&
+		   _.isFinite(conf.limitHeight[0]) && _.isFinite(conf.limitHeight[1])) {
 			minHeight = Math.min(conf.limitHeight[0], conf.limitHeight[1]);
 			maxHeight = Math.max(conf.limitHeight[0], conf.limitHeight[1]);
 		}
 		return {limitMult: [minMult, maxMult], limitHeight: [minHeight, maxHeight], skew: skew, spread: spread};
-	}
+	};
 	
 	/* if you can find an average for an undefined, add it in! */
 	const xxMeanHeight = {
 		"Afghan": 163.8, "Albanian": 161.8, "Algerian": 162, "American.asian": 158.4, "American.black": 163.6, "American.latina": 158.9, "American.white": 165, "American": 161.8, 
 		"Andorran": undefined, "Angolan": undefined, "Antiguan": 156.8, "Argentinian": 159.6, "Armenian": 158.1, "Aruban": 158, "Australian": 161.8, "Austrian": 166, "Azerbaijani": 162.4, 
 		"Bahamian": 157.1, "Bahraini": 165.2, "Bangladeshi": 150.6, "Barbadian": 158.5, "Belarusian": 166.8, "Belgian": 168.1, "Belizean": undefined, "Beninese": 159.3, "Bermudian": undefined, 
-		"Bhutanese": 153.4, "Bissau-Guinean": undefined, "Bolivian": 142.2, "Bosnian": 171.1, "Brazilian": 158.8, "British": 161.9, "Bruneian": undefined, "Bulgarian": 163.2, "Bulgarian": 163.2, 
+		"Bhutanese": 153.4, "Bissau-Guinean": undefined, "Bolivian": 142.2, "Bosnian": 171.1, "Brazilian": 158.8, "British": 161.9, "Bruneian": undefined, "Bulgarian": 163.2,
 		"Burkinabé": 161.6, "Burmese": undefined, "Burundian": 157, "Cambodian": 152.4, "Cameroonian": 161.3, "Canadian": 162.3, "Cape Verdean": undefined, "Catalan": undefined, 
 		"Central African": 158.9, "Chadian": 162.6, "Chilean": 157.2, "Chinese": 155.8, "Colombian": 158.7, "Comorian": 154.8, "Congolese": 159, "a Cook Islander": 162.3, "Costa Rican": undefined, 
 		"Croatian": 166.3, "Cuban": 156, "Cypriot": 163.4, "Czech": 167.22, "Danish": 168.7, "Djiboutian": undefined, "Dominican": 156.4, "Dominiquais": 157.2, "Dutch": 169, "East Timorese": 149.1, 
@@ -191,18 +191,26 @@ window.Height = (function(){
 		switch(genes) {
 			case 'XX': // female
 			case 'XXX': // Triple X syndrome female
-				minHeight = 85; midHeight = height * 157 / 164; midAge = 13;
+				minHeight = 85;
+				midHeight = height * 157 / 164;
+				midAge = 13;
 				break;
 			case 'XY': // male
 			case 'XXY': // Kinefelter syndrome male
 			case 'XYY': // XYY syndrome male
-				minHeight = 86; midHeight = height * 170 / 178; midAge = 15;
+				minHeight = 86;
+				midHeight = height * 170 / 178;
+				midAge = 15;
 				break;
 			case 'X0': case 'X': // Turner syndrome female
-				minHeight = 85 * 0.93; midHeight = height * 157 / 164; midAge = 13;
+				minHeight = 85 * 0.93;
+				midHeight = height * 157 / 164;
+				midAge = 13;
 				break;
 			default:
-				minHeight = 85.5, midHeight = height * 327 / 342, midAge = 14;
+				minHeight = 85.5;
+				midHeight = height * 327 / 342;
+				midAge = 14;
 				break;
 		}
 		if(age > midAge) {
@@ -245,8 +253,7 @@ window.Height = (function(){
 				break;
 			default:
 				console.log("Height.mean(): unknown genes " + genes + ", returning mean between XX and XY");
-				result = nationalityMeanHeight(xxMeanHeight, nationality, race) * 0.5
-					+ nationalityMeanHeight(xyMeanHeight, nationality, race) * 0.5;
+				result = nationalityMeanHeight(xxMeanHeight, nationality, race) * 0.5 + nationalityMeanHeight(xyMeanHeight, nationality, race) * 0.5;
 				break;
 		}
 		return applyAge(result, age, genes);
@@ -304,7 +311,7 @@ if(!Array.prototype.findIndex) {
 		}
 		return -1;
 	};
-};
+}
 
 /*
 A categorizer is used to "slice" a value range into distinct categories in an efficient manner.
@@ -341,8 +348,8 @@ As a categorizer
 window.Categorizer = function() {
 	this.cats = Array.prototype.slice.call(arguments)
 		.filter(function(e, i, a) {
-			return e instanceof Array && e.length == 2 && typeof e[0] === 'number' && !isNaN(e[0])
-				&& a.findIndex(function(val) { return e[0] === val[0]; }) === i; /* uniqueness test */ })
+			return e instanceof Array && e.length == 2 && typeof e[0] === 'number' && !isNaN(e[0]) &&
+				a.findIndex(function(val) { return e[0] === val[0]; }) === i; /* uniqueness test */ })
 		.sort(function(a, b) { return b[0] - a[0]; /* reverse sort */ });
 };
 window.Categorizer.prototype.cat = function(val, def) {
@@ -356,7 +363,7 @@ window.Categorizer.prototype.cat = function(val, def) {
 	// Record the value for the result's getter, if it is an object
 	// and doesn't have the property yet
 	if(result === Object(result)) {
-		result['value'] = val;
+		result.value = val;
 	}
 	return result;
 };
@@ -365,27 +372,28 @@ window.commaNum = function(s) {
 	if(!s) { return 0; }
 	if(State.variables.formatNumbers != 1) { return s; }
 	return s.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
-}
+};
 
 window.cashFormat = function(s) {
 	if(!s) { s = 0; }
 	return "¤"+commaNum(s);
-}
+};
 
 window.isFloat = function(n){
     return n === +n && n !== (n|0);
-}
+};
+
 window.isInt = function(n) {
     return n === +n && n === (n|0);
-}
+};
+
 window.numberWithCommas = function(x) {
     return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
-}
-
+};
 
 window.jsRandom = function(min,max) {
     return Math.floor(Math.random()*(max-min+1)+min);
-}
+};
 
 window.jsRandomMany = function (arr, count) {
 	var result = [];
@@ -395,13 +403,13 @@ window.jsRandomMany = function (arr, count) {
 		result.push(_tmp.splice(index, 1)[0]);
 	}
 	return result;
-}
+};
 
 //This function wants an array - which explains why it works like array.random(). Give it one or you'll face a NaN
 window.jsEither = function(choices) {
 	var index = Math.floor(Math.random() * choices.length);
 	return choices[index];
-}
+};
 
 //This function is alternative to clone - usage needed if nested objects present. Slower but result is separate object tree, not with reference to source object.
 window.deepCopy = function (o) {
@@ -412,7 +420,7 @@ window.deepCopy = function (o) {
        output[key] = (typeof v === "object") ? deepCopy(v) : v;
    }
    return output;
-}
+};
 
 /*
 Make everything waiting for this execute. Usage:
@@ -467,83 +475,112 @@ window.weightedArray2HashMap = function weightedArray2HashMap(arr) {
 	arr.forEach(item => {
 		if (obj[item] === undefined) obj[item] = 1;
 		else obj[item] += 1;
-	})
+	});
 	return obj;
 };
 
+
+window.between = function between(a, low, high) {
+	if (low === null) low = -Infinity;
+	if (high === null) high = Infinity;
+	return (a > low && a < high);
+};
+
+// generate a random, almost unique ID
+// if two are generated the same second every second,
+// duplicates appear approximately once every 100 trillion years
+// this is ~7000 times the age of the universe
+window.generateNewID = function generateNewID() {
+	let randint = "";
+	for(let i = 0; i < 12; i++)
+		randint += jsEither("0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ");
+	const timestamp = Date.now();
+	return (randint + timestamp.toString(36));
+};
+
+window.arraySwap = function arraySwap(array, a, b) {
+	const tmp = array[a];
+	array[a] = array[b];
+	array[b] = tmp;
+};
+
+// circumvents sugarcube, allowing a plain HTML5 UI within it
+window.html5passage = function html5passage(passage_function) {
+	$(document).one(':passagedisplay', ev => {
+		const element = document.createElement("div");
+		element.classList.add("passage");
+		document.getElementById("passages").appendChild(element);
+		passage_function(element);
+		$(document).off(':passagedisplay');
+	});
+};
+
 window.capFirstChar = function capFirstChar(string) {
 	return string.charAt(0).toUpperCase() + string.substr(1);
-}
+};
 
-window.getSlaveDisplayName = function (slave) 
-{
-    if  (   (!slave)
-        ||  (!State)
-        )
-    {
-        return  undefined;
-    }
-    var     surnamesFirstCountries  =   [   "Cambodian", "Chinese", "Hungarian", "Japanese", "Korean",
-                                            "Mongolian", "Taiwanese", "Vietnamese"
-                                        ]
-        ,   names   =   [   slave.slaveName, slave.slaveSurname || ""
-                        ];
-        ;
-    if  (   (1  !=  State.variables.surnameOrder)
-        &&  (surnamesFirstCountries.includes(slave.nationality))
-        )
-    {
-        names.reverse();
-    }
-    return  names.join(" ").trim();
-}
+window.getSlaveDisplayName = function (slave) {
+	if ((!slave) || (!State))
+		return undefined;
+	var surnamesFirstCountries = [
+		"Cambodian",
+		"Chinese",
+		"Hungarian",
+		"Japanese",
+		"Korean",
+		"Mongolian",
+		"Taiwanese",
+		"Vietnamese"];
+        var names = [slave.slaveName, slave.slaveSurname || ""];
+	if ((1 !== State.variables.surnameOrder) && (surnamesFirstCountries.includes(slave.nationality)))
+		names.reverse();
+	return names.join(" ").trim();
+};
 
-window.getSlaveDevotionClass = function (slave) 
-{
-    if  (   (!slave)
-        ||  (!State)
-        )
-    {
-        return  undefined;
-    }
-    if  ('mindbroken' == slave.fetish)  return  'mindbroken';
-
-    if      (-95 >  slave.devotion)     return  'very-hateful';
-    else if (-50 >  slave.devotion)     return  'hateful';
-    else if (-20 >  slave.devotion)     return  'resistant';
-    else if (20  >= slave.devotion)     return  'ambivalent';
-    else if (50  >= slave.devotion)     return  'accepting';
-    else if (95  >= slave.devotion)     return  'devoted';
-    else                                return  'worshipful';
-}
+window.getSlaveDevotionClass = function (slave) {
+	if ((!slave) || (!State))
+		return undefined;
+	if  ('mindbroken' == slave.fetish)
+		return 'mindbroken';
+	if (slave.devotion < -95)
+		return 'very-hateful';
+	else if (slave.devotion < -50)
+		return 'hateful';
+	else if (slave.devotion < -20)
+		return 'resistant';
+	else if (slave.devotion <= 20)
+		return 'ambivalent';
+	else if (slave.devotion <= 50)
+		return 'accepting';
+	else if (slave.devotion <= 95)
+		return 'devoted';
+	else
+		return 'worshipful';
+};
 
-window.getSlaveTrustClass = function (slave) 
-{
-    if  (   (!slave)
-        ||  (!State)
-        )
-    {
-        return  undefined;
-    }
-    if  ('mindbroken' == slave.fetish)  return  '';
-
-    if      (-95 >  slave.trust)        return  'extremely-terrified';
-    else if (-50 >  slave.trust)        return  'terrified';
-    else if (-20 >  slave.trust)        return  'frightened';
-    else if (20  >= slave.trust)        return  'fearful';
-    else if (50  >= slave.trust)
-    {
-        if (-20 >  slave.devotion)      return  'hate-careful';
-        else                            return  'careful';
-    }
-    else if (95  >= slave.trust)
-    {
-        if (-20 >  slave.devotion)      return  'bold';
-        else                            return  'trusting';
-    }
-    else
-    {
-        if (-20 >  slave.devotion)      return  'defiant';
-        else                            return  'profoundly-trusting';
-    }
-}
+window.getSlaveTrustClass = function (slave) {
+	if ((!slave) || (!State))
+		return undefined;
+
+	if ('mindbroken' == slave.fetish)
+		return '';
+
+	if (slave.trust < -95)
+		return 'extremely-terrified';
+	else if (slave.trust < -50)
+		return 'terrified';
+	else if (slave.trust < -20)
+		return 'frightened';
+	else if (slave.trust <= 20)
+		return 'fearful';
+	else if (slave.trust <= 50) {
+		if (slave.devotion < -20) return  'hate-careful';
+		else return 'careful';
+	} else if (slave.trust <= 95) {
+		if (slave.devotion < -20) return 'bold';
+		else return 'trusting';
+	} else {
+		if (slave.devotion < -20) return 'defiant';
+		else return 'profoundly-trusting';
+	}
+};
diff --git a/src/js/vectorRevampedArtControlJS.tw b/src/js/vectorRevampedArtControlJS.tw
index 8256f50781ed88288a7ae3fe75ad1f325b6b764f..902f1a569e542358971ed6cc0fcc32345bda471a 100644
--- a/src/js/vectorRevampedArtControlJS.tw
+++ b/src/js/vectorRevampedArtControlJS.tw
@@ -348,7 +348,7 @@ class ArtStyleControl {
 		this.highlightStrong.fill = "#ffffff";
 		
 		this.armpitHair = new ArtStyleEntry("armpit_hair");
-		this.armpitHair.fill = this.parseColorFromName(this.artSlave.underArmHColor);;
+		this.armpitHair.fill = this.parseColorFromName(this.artSlave.underArmHColor);
 		
 		this.pubicHair = new ArtStyleEntry("pubic_hair");
 		this.pubicHair.fill = this.parseColorFromName(this.artSlave.pubicHColor);
@@ -752,34 +752,33 @@ class RevampedArtControl {
 	getClothing() {
 		if (this.artSlave.fuckdoll > 0)
 			return this.clothingControl.fuckdoll;
-		
-		switch(this.artSlave.clothes)
-		{
+		let clothing = null;
+		switch(this.artSlave.clothes) {
 			case "a nice maid outfit":
-				return this.clothingControl.niceMaid;
+				clothing = this.clothingControl.niceMaid;
 				break;
 			case "a slutty maid outfit":
-				return this.clothingControl.sluttyMaid;
+				clothing = this.clothingControl.sluttyMaid;
 				break;
 			case "restrictive latex":
-				return this.clothingControl.restrictiveLatex;
+				clothing = this.clothingControl.restrictiveLatex;
 				break;
 			case "a latex catsuit":
-				return this.clothingControl.latexCatsuit;
+				clothing = this.clothingControl.latexCatsuit;
 				break;
 			case "body oil":
-				return this.clothingControl.bodyOil;
+				clothing = this.clothingControl.bodyOil;
 				break;
 			case "a comfortable bodysuit":
-				return this.clothingControl.bodysuit;
+				clothing = this.clothingControl.bodysuit;
 				break;
 			case "a leotard":
 				/*return this.clothingControl.leotard;*/
 				break;
 			default:
+				break;
 		}
-		
-		return null;
+		return clothing;
 	}
 		
 	get getHairLength() {
@@ -1460,7 +1459,7 @@ class RevampedArtControl {
 		switch(this.artSlave.clothes)
 		{
 			case "uncomfortable straps":
-				if (this.artSlave.boobs >= 300)
+				//if (this.artSlave.boobs >= 300)
 					//result.push("Art_Vector_Revamp_Boob_Outfit_Straps");
 				break;
 			case "a nice maid outfit":
@@ -1468,10 +1467,10 @@ class RevampedArtControl {
 				{
 					if (this.artSlave.boobs < 600)
 					{
-						var artScaleFactor = 0.288539*Math.log(0.106667*this.artSlave.boobs);
-						var artTranslationX = 270*((-1*artScaleFactor) + 1);
-						var artTranslationY = 198*((-1*artScaleFactor) + 1);//-198.438*artScaleFactor+203.274;
-						var artBoobTransform = "matrix(" + artScaleFactor +",0,0," + artScaleFactor + "," + artTranslationX + "," + artTranslationY + ")";
+						artScaleFactor = 0.288539*Math.log(0.106667*this.artSlave.boobs);
+						artTranslationX = 270*((-1*artScaleFactor) + 1);
+						artTranslationY = 198*((-1*artScaleFactor) + 1);//-198.438*artScaleFactor+203.274;
+						artBoobTransform = "matrix(" + artScaleFactor +",0,0," + artScaleFactor + "," + artTranslationX + "," + artTranslationY + ")";
 
 						this.boobOutfitArtTransform = artBoobTransform;
 
@@ -1479,19 +1478,19 @@ class RevampedArtControl {
 					}
 					else if (this.artSlave.boobs < 15000)
 					{
-						var artScaleFactor = 0.155334*Math.log(1.04167*this.artSlave.boobs);
-						var artTranslationX = 270*((-1.25*artScaleFactor) + 1.25);
-						var artTranslationY = 198*((-0.8*artScaleFactor) + 0.8);//-198.438*artScaleFactor+203.274;
-						var artBoobTransform = "matrix(" + artScaleFactor +",0,0," + artScaleFactor + "," + artTranslationX + "," + artTranslationY + ")";
+						artScaleFactor = 0.155334*Math.log(1.04167*this.artSlave.boobs);
+						artTranslationX = 270*((-1.25*artScaleFactor) + 1.25);
+						artTranslationY = 198*((-0.8*artScaleFactor) + 0.8);//-198.438*artScaleFactor+203.274;
+						artBoobTransform = "matrix(" + artScaleFactor +",0,0," + artScaleFactor + "," + artTranslationX + "," + artTranslationY + ")";
 
 						this.boobOutfitArtTransform = artBoobTransform;
 						result.push("Art_Vector_Revamp_Boob_Medium_Outfit_Maid");
 					}
 					else {
-						var artScaleFactor = 1.56609*Math.log(0.00017373*this.artSlave.boobs);
-						var artTranslationX = 340*((-1*artScaleFactor) + 1);
-						var artTranslationY = 153*((-1*artScaleFactor) + 1);//-198.438*artScaleFactor+203.274;
-						var artBoobTransform = "matrix(" + artScaleFactor +",0,0," + artScaleFactor + "," + artTranslationX + "," + artTranslationY + ")";
+						artScaleFactor = 1.56609*Math.log(0.00017373*this.artSlave.boobs);
+						artTranslationX = 340*((-1*artScaleFactor) + 1);
+						artTranslationY = 153*((-1*artScaleFactor) + 1);//-198.438*artScaleFactor+203.274;
+						artBoobTransform = "matrix(" + artScaleFactor +",0,0," + artScaleFactor + "," + artTranslationX + "," + artTranslationY + ")";
 
 						this.boobOutfitArtTransform = artBoobTransform;
 						result.push("Art_Vector_Revamp_Boob_Huge_Outfit_Maid");
diff --git a/src/js/wombJS.tw b/src/js/wombJS.tw
index 9b06c184d284b532d4fe4ba3a0ecc4d6d7b49b8f..0043c87cd4b5873a0dc43a58cde171a61685f9dd 100644
--- a/src/js/wombJS.tw
+++ b/src/js/wombJS.tw
@@ -26,322 +26,268 @@ $slave.bellyPreg = WombGetWolume($slave) - return double, with current womb volu
 
 */
 
-window.WombInit = function(actor) //Init womb system.
-{
-    
-    if (!Array.isArray(actor.womb))
-    {   
-       //alert("creating new womb"); //debugging
-	   actor.womb = [];
-    }
-
-//    console.log("broodmother:" + typeof actor.broodmother);
-    
-    if ( typeof actor.broodmother != "number" )
-    {
-          actor.broodmother = 0;
-          actor.broodmotherFetuses = 0;
-    }
-    
-    if ( typeof actor.readyOva != "number" )
-    {
-          actor.readyOva = 0;
-    }
-
-    if (actor.womb.length == 0 && actor.pregType != 0 && actor.broodmother == 0) //backward compatibility setup. Fully accurate for normal pregnancy only.
-    {
-        WombImpregnate(actor, actor.pregType, actor.pregSource, actor.preg);
-    }
-    else if (actor.womb.length == 0 && actor.pregType != 0 && actor.broodmother > 0 && actor.broodmotherOnHold < 1) //sorry but for already present broodmothers it's impossible to calculate fully, aproximation used.
-    {
-        var i, pw = actor.preg, bCount, bLeft;
-        if (pw > 40)
-            pw = 40; //to avoid disaster.
-        bCount = Math.floor(actor.pregType/pw);
-        bLeft = actor.pregType - (bCount*pw);
-        if (pw > actor.pregType)
-        {
-            pw = actor.pregType // low children count broodmothers not supported here. It's emergency/backward compatibility code, and they not in game anyway. So minimum is 1 fetus in week.
-            actor.preg = pw; // fixing initial pregnancy week.
-        }
-        for (i=0; i<pw; i++)
-        {
-            WombImpregnate(actor, bCount, actor.pregSource, i); // setting fetuses for every week, up to 40 week at max.
-        }
-
-        if (bLeft > 0)
-        {
-            WombImpregnate(actor, bLeft, actor.pregSource, i+1); // setting up leftower of fetuses.
-        }
-    }
-}
-
-window.WombImpregnate = function(actor, fCount, fatherID, age)
-{
-    var i;
-    var tf;
-    for (i=0; i<fCount; i++)
-    {
-	tf = {}; //new Object
-    tf.age = age; //initial age
-    tf.fatherID = fatherID; //We can store who is father too.
-	tf.sex = Math.round(Math.random())+1; // 1 = male, 2 = female. For possible future usage, just as concept now.
-    tf.volume = 1; //Initial, to create property. Updated with actual data after WombGetVolume call.
-	tf.identical = 0; //Initial, to create property. Updated with actual data during fetalSplit call.
-
-    try {
-            if (actor.womb.length == 0)
-            {
-                actor.pregWeek = age;
-                actor.preg = age;
-            }
-
-	        actor.womb.push(tf);
-        }catch(err){
-            WombInit(actor);
-            actor.womb.push(tf);
-            alert("WombImpregnate warning - " + actor.slaveName+" "+err);
-        }
+//Init womb system.
+window.WombInit = function(actor) {
+	if (!Array.isArray(actor.womb)) {   
+		//alert("creating new womb"); //debugging
+		actor.womb = [];
+	}
+
+	//    console.log("broodmother:" + typeof actor.broodmother);
+	
+	if ( typeof actor.broodmother != "number" ) {
+		actor.broodmother = 0;
+		actor.broodmotherFetuses = 0;
+	}
+	
+	if ( typeof actor.readyOva != "number" ) {
+		actor.readyOva = 0;
+	}
+
+	//backward compatibility setup. Fully accurate for normal pregnancy only.
+	if (actor.womb.length == 0 && actor.pregType != 0 && actor.broodmother == 0)  {
+		WombImpregnate(actor, actor.pregType, actor.pregSource, actor.preg);
+	} else if (actor.womb.length == 0 && actor.pregType != 0 && actor.broodmother > 0 && actor.broodmotherOnHold < 1) {
+		//sorry but for already present broodmothers it's impossible to calculate fully, aproximation used.
+		var i, pw = actor.preg, bCount, bLeft;
+		if (pw > 40) pw = 40; //to avoid disaster.
+		bCount = Math.floor(actor.pregType/pw);
+		bLeft = actor.pregType - (bCount*pw);
+		if (pw > actor.pregType) {
+			pw = actor.pregType; // low children count broodmothers not supported here. It's emergency/backward compatibility code, and they not in game anyway. So minimum is 1 fetus in week.
+			actor.preg = pw; // fixing initial pregnancy week.
+		}
+		for (i=0; i<pw; i++) {
+			WombImpregnate(actor, bCount, actor.pregSource, i); // setting fetuses for every week, up to 40 week at max.
+		}
 
-    }
-    
-}
+		if (bLeft > 0) {
+			WombImpregnate(actor, bLeft, actor.pregSource, i+1); // setting up leftower of fetuses.
+		}
+	}
+};
+
+window.WombImpregnate = function(actor, fCount, fatherID, age) {
+	var i;
+	var tf;
+	for (i=0; i<fCount; i++) {
+		tf = {}; //new Object
+		tf.age = age; //initial age
+		tf.fatherID = fatherID; //We can store who is father too.
+		tf.sex = Math.round(Math.random())+1; // 1 = male, 2 = female. For possible future usage, just as concept now.
+		tf.volume = 1; //Initial, to create property. Updated with actual data after WombGetVolume call.
+		tf.identical = 0; //Initial, to create property. Updated with actual data during fetalSplit call.
+
+		try {
+			if (actor.womb.length == 0) {
+				actor.pregWeek = age;
+				actor.preg = age;
+			}
+			actor.womb.push(tf);
+		} catch(err){
+			WombInit(actor);
+			actor.womb.push(tf);
+			alert("WombImpregnate warning - " + actor.slaveName+" "+err);
+		}
 
-window.WombProgress = function(actor, ageToAdd)
-{
-    var i, ft;
-    ageToAdd = Math.ceil(ageToAdd*10)/10;
-    try {
-            for (i in actor.womb)
-            {
-                ft = actor.womb[i];
-                ft.age += ageToAdd;
-            }
-    }catch(err){
-            WombInit(actor);
-            alert("WombProgress warning - " + actor.slaveName+" "+err);
-    }
-}
+	}
+};
 
-window.WombBirth = function(actor, readyAge)
-{
-    try{
-        WombSort(actor); //For normal processing fetuses that more old should be first. Now - they are.
-        }catch(err){
-            WombInit(actor);
-            alert("WombBirth warning - " + actor.slaveName+" "+err);       
+window.WombProgress = function(actor, ageToAdd) {
+	var i, ft;
+	ageToAdd = Math.ceil(ageToAdd*10)/10;
+	try {
+		actor.womb.forEach(ft => ft.age += ageToAdd);
+	} catch(err){
+		WombInit(actor);
+		alert("WombProgress warning - " + actor.slaveName+" "+err);
+	}
+};
+
+window.WombBirth = function(actor, readyAge) {
+	try {
+		WombSort(actor); //For normal processing fetuses that more old should be first. Now - they are.
+        } catch(err){
+		WombInit(actor);
+		alert("WombBirth warning - " + actor.slaveName+" "+err);       
         }
 
-    var birthed = [];    
-    var ready = WombBirthReady(actor, readyAge);
-    var i;
+	var birthed = [];    
+	var ready = WombBirthReady(actor, readyAge);
+	var i;
 
-    for (i=0; i<ready; i++) //here can't be used "for .. in .." syntax.
-    {
-        birthed.push(actor.womb.shift());
-    }
-
-    return birthed;
-}
+	for (i=0; i<ready; i++) { //here can't be used "for .. in .." syntax.
+		birthed.push(actor.womb.shift());
+	}
 
-window.WombFlush = function(actor)
-{
-    actor.womb = [];
-}
+	return birthed;
+};
 
-window.WombBirthReady = function(actor, readyAge)
-{
+window.WombFlush = function(actor) {
+	actor.womb = [];
+};
 
-    var i, ft;
-    var readyCnt = 0;
-    try {
-        for (i in actor.womb)
-        {
-            ft = actor.womb[i];
-            if (ft.age >= readyAge)
-                  readyCnt++;
-        }
-    }catch(err){
-        WombInit(actor);
-        alert("WombBirthReady warning - " + actor.slaveName+" "+err);    
-
-        return 0;
-    }
-
-    return readyCnt;
-}
-
-window.WombGetVolume = function(actor) //most code from pregJS.tw with minor adaptation.
-{
-    var i, ft;
-    var gestastionWeek;
-    var phi = 1.618;
-    var targetLen;
-    var wombSize = 0;
-    
-    try{
-
-        for (i in actor.womb)
-        {
-            ft = actor.womb[i];
-            gestastionWeek = ft.age;
-            
-            if (gestastionWeek <= 32) 
-            {
-                targetLen = (0.00006396 * Math.pow(gestastionWeek, 4)) - (0.005501 * Math.pow(gestastionWeek, 3)) + (0.161 * Math.pow(gestastionWeek, 2)) - (0.76 * gestastionWeek) + 0.208;
-            } 
-            else if (gestastionWeek <= 106) 
-            {
-                targetLen = (-0.0000004675 * Math.pow(gestastionWeek, 4)) + (0.0001905 * Math.pow(gestastionWeek, 3)) - (0.029 * Math.pow(gestastionWeek, 2)) + (2.132 * gestastionWeek) - 16.575;
-            } 
-            else 
-            {
-                targetLen = (-0.00003266 * Math.pow(gestastionWeek,2)) + (0.076 * gestastionWeek) + 43.843;
-            }
-
-            ft.volume = ((4 / 3) * (Math.PI) * (phi / 2) * (Math.pow((targetLen / 2), 3)));
-        
-            wombSize += ft.volume;
-        }
-    }catch(err){
-        WombInit(actor);
-        alert("WombGetVolume warning - " + actor.slaveName + " " + err);       
-    }
-  
-    if (wombSize < 0) //catch for strange cases, to avoid messing with outside code.
-        wombSize = 0;
-
-    return wombSize;
-}
+window.WombBirthReady = function(actor, readyAge) {
+	var i, ft;
+	var readyCnt = 0;
+	try {
+		readyCnt += actor.womb.filter(ft => ft.age >= readyAge).length;
+	} catch(err){
+		WombInit(actor);
+		alert("WombBirthReady warning - " + actor.slaveName+" "+err);    
+		return 0;
+	}
+
+	return readyCnt;
+};
+
+window.WombGetVolume = function(actor) { //most code from pregJS.tw with minor adaptation.
+	var gestastionWeek;
+	var phi = 1.618;
+	var targetLen;
+	var wombSize = 0;
+	try {
+		actor.womb.forEach(ft => {
+			gestastionWeek = ft.age;
+			if (gestastionWeek <= 32)  {
+				targetLen = (0.00006396 * Math.pow(gestastionWeek, 4)) -
+					(0.005501 * Math.pow(gestastionWeek, 3)) +
+					(0.161 * Math.pow(gestastionWeek, 2)) -
+					(0.76 * gestastionWeek) +
+					0.208;
+			} else if (gestastionWeek <= 106) {
+				targetLen = (-0.0000004675 * Math.pow(gestastionWeek, 4)) +
+					(0.0001905 * Math.pow(gestastionWeek, 3)) -
+					(0.029 * Math.pow(gestastionWeek, 2)) +
+					(2.132 * gestastionWeek) -
+					16.575;
+			} else {
+				targetLen = (-0.00003266 * Math.pow(gestastionWeek,2)) +
+					(0.076 * gestastionWeek) +
+					43.843;
+			}
+			ft.volume = ((4 / 3) * (Math.PI) * (phi / 2) * (Math.pow((targetLen / 2), 3)));
+			wombSize += ft.volume;
+		});
+	} catch(err){
+		WombInit(actor);
+		alert("WombGetVolume warning - " + actor.slaveName + " " + err);       
+	}
+	if (wombSize < 0) //catch for strange cases, to avoid messing with outside code.
+		wombSize = 0;
+	return wombSize;
+};
 
 window.WombUpdatePregVars = function(actor) {
-
-    WombSort(actor);
-    if (actor.womb.length > 0)
-    {
-        if (actor.preg > 0 && actor.womb[0].age > 0)
-        {
-            actor.preg = actor.womb[0].age;
-        }
-
-        actor.pregType = actor.womb.length;
-        
-        actor.bellyPreg = WombGetVolume(actor);
-
-    }
-
-}
-
-window.WombMinPreg = function(actor)
-{
-    WombSort(actor);
-
-    if (actor.womb.length > 0) 
-        return actor.womb[actor.womb.length-1].age;
-    else
-        return 0;
-}
-
-window.WombMaxPreg = function(actor)
-{
-    WombSort(actor);
-    if (actor.womb.length > 0) 
-        return actor.womb[0].age;
-    else
-        return 0;
-}
+	WombSort(actor);
+	if (actor.womb.length > 0) {
+		if (actor.preg > 0 && actor.womb[0].age > 0) {
+			actor.preg = actor.womb[0].age;
+		}
+		actor.pregType = actor.womb.length;
+		actor.bellyPreg = WombGetVolume(actor);
+	}
+};
+
+window.WombMinPreg = function(actor) {
+	WombSort(actor);
+	if (actor.womb.length > 0) 
+		return actor.womb[actor.womb.length-1].age;
+	else
+		return 0;
+};
+
+window.WombMaxPreg = function(actor) {
+	WombSort(actor);
+	if (actor.womb.length > 0) 
+		return actor.womb[0].age;
+	else
+		return 0;
+};
 
 window.WombNormalizePreg = function(actor)
 {
-//    console.log("New actor: " + actor.slaveName + " ===============" + actor.name);
-    WombInit(actor);
-
-    if (actor.womb.length == 0 && actor.broodmother >= 1) // this is broodmother on hold.
-    {
-        actor.pregType = 0; 
-        actor.pregKnown = 0;
-        
-        if (actor.preg >= 0)
-            actor.preg = 0.1; //to avoid legacy code conflicts - broodmother on hold can't be impregnated, but she not on normal contraceptives. So we set this for special case.
-        
-        if (actor.pregSource > 0)
-            actor.pregSource = 0;
-
-        if (actor.pregWeek > 0) 
-            actor.pregWeek = 0;
-            
-        actor.broodmotherCountDown = 0;
-    }
-    
-    if (actor.womb.length > 0)
-    {
-        var max = WombMaxPreg(actor);
-//        console.log("max: " + max);
-//        console.log(".preg: "+ actor.preg);
-        if (actor.pregWeek < 1 )
-            actor.pregWeek = 1
-
-        if (max < actor.preg)
-        {
-            WombProgress(actor, actor.preg - max);
-//            console.log("progressin womb");
-        }
-        else if ( max > actor.preg)
-        {
-            actor.preg = max;
-//            console.log("advancing .preg");
-        }
-
-        actor.pregType = actor.womb.length;
-        actor.pregSource = actor.womb[0].fatherID;
-    } 
-    else if (actor.womb.length == 0 && actor.broodmother < 1) //not broodmother
-    {
-//        console.log("preg fixing");
-        actor.pregType = 0;
-        actor.pregKnown = 0;
-        
-        if (actor.preg > 0)
-            actor.preg = 0;
-        
-        if (actor.pregSource > 0)
-            actor.pregSource = 0;
-
-        if (actor.pregWeek > 0) // We can't properly set postpartum here, but can normalize obvious error with forgotten property.
-            actor.pregWeek = 0;
-    }
-
-    actor.bellyPreg = WombGetVolume(actor);
-}
+	// console.log("New actor: " + actor.slaveName + " ===============" + actor.name);
+	WombInit(actor);
+	
+	// this is broodmother on hold.
+	if (actor.womb.length == 0 && actor.broodmother >= 1) { 
+		actor.pregType = 0; 
+		actor.pregKnown = 0;
+
+		// to avoid legacy code conflicts - broodmother on hold
+		// can't be impregnated, but she not on normal contraceptives.
+		// So we set this for special case.
+		if (actor.preg >= 0)
+			actor.preg = 0.1; 
+		
+		if (actor.pregSource > 0)
+			actor.pregSource = 0;
+
+		if (actor.pregWeek > 0) 
+			actor.pregWeek = 0;
+		
+		actor.broodmotherCountDown = 0;
+	}
+	
+	if (actor.womb.length > 0) {
+		var max = WombMaxPreg(actor);
+		//        console.log("max: " + max);
+		//        console.log(".preg: "+ actor.preg);
+		if (actor.pregWeek < 1 )
+			actor.pregWeek = 1;
+
+		if (max < actor.preg) {
+			WombProgress(actor, actor.preg - max);
+			//            console.log("progressin womb");
+		}
+		else if ( max > actor.preg) {
+			actor.preg = max;
+			//            console.log("advancing .preg");
+		}
 
-window.WombZeroID = function(actor, id)
-{
-    WombInit(actor);
-    var i, ft;
-    for (i in actor.womb)
-    {
-        ft = actor.womb[i];
-        if (ft.fatherID == id)
-            ft.fatherID = 0;
-    }
-
-    WombNormalizePreg(actor);
-}
+		actor.pregType = actor.womb.length;
+		actor.pregSource = actor.womb[0].fatherID;
+	} else if (actor.womb.length == 0 && actor.broodmother < 1) {
+		//not broodmother
+		//        console.log("preg fixing");
+		actor.pregType = 0;
+		actor.pregKnown = 0;
+		
+		if (actor.preg > 0)
+			actor.preg = 0;
+		
+		if (actor.pregSource > 0)
+			actor.pregSource = 0;
+
+		// We can't properly set postpartum here,
+		// but can normalize obvious error with forgotten property.
+		if (actor.pregWeek > 0) 
+			actor.pregWeek = 0;
+	}
+	actor.bellyPreg = WombGetVolume(actor);
+};
+
+window.WombZeroID = function(actor, id) {
+	WombInit(actor);
+	actor.womb
+		.filter(ft => ft.fatherID === ID)
+		.forEach(ft => ft.fatherID = 0);
+	WombNormalizePreg(actor);
+};
 
 /* Sorts the womb object by age with oldest and thus soonest to be born, first. This will be needed in the future once individual fertilization is a possiblity.*/
-window.WombSort = function(actor)
-{
-	actor.womb.sort(function (a, b){return b.age - a.age});
-}
+window.WombSort = function(actor) {
+	actor.womb.sort((a, b) => { return b.age - a.age; });
+};
 
-window.fetalSplit = function(actor)
-{
+window.fetalSplit = function(actor) {
 	var i, ft;
 	var nft = {};
-    nft.age = actor.preg;
-    nft.fatherID = actor.pregSource;
+	nft.age = actor.preg;
+	nft.fatherID = actor.pregSource;
 	nft.sex = Math.round(Math.random())+1;
-    nft.volume = 1;
+	nft.volume = 1;
 	nft.identical = 0;
 
 	actor.womb.forEach(function(s){
@@ -357,8 +303,7 @@ window.fetalSplit = function(actor)
 		}
 	});
 	WombNormalizePreg(actor);
-
-}
+};
 
 /* alt
 window.fetalSplit = function(actor)
diff --git a/src/pregmod/newChildIntro.tw b/src/pregmod/newChildIntro.tw
index 653ec887603c27eab6bd6a7353deb601259656a0..b64ac6b40fd174d7bb5b223babc311136cd59d94 100644
--- a/src/pregmod/newChildIntro.tw
+++ b/src/pregmod/newChildIntro.tw
@@ -603,8 +603,8 @@ You slowly strip down, gauging her reactions to your show, until you are fully n
 	<span id="rules">
 	<<link "Apply default rules">>
 	<<replace "#rules">>
-		<<CheckAutoRulesActivate $activeSlave>>
-		<<DefaultRules $activeSlave>>
+		<<= CheckAutoRulesActivate($activeSlave)>>
+		<<= DefaultRules($activeSlave)>>
 	<</replace>>
 	<</link>>
 	<<if $activeSlave.devotion <= 20>>
diff --git a/src/uncategorized/BackwardsCompatibility.tw b/src/uncategorized/BackwardsCompatibility.tw
index b4a520e36275399cd1036f7c65c07ee51c704161..c5c6985ff8466bb380f32de70580f12aa40bfab4 100644
--- a/src/uncategorized/BackwardsCompatibility.tw
+++ b/src/uncategorized/BackwardsCompatibility.tw
@@ -984,195 +984,6 @@
 	<<set $sectors[27].type = "Dairy", $sectors[27].ownership = 1>>
 <</if>>
 
-<<for _bci = 0; _bci < $defaultRules.length; _bci++>>
-	<<if ndef $defaultRules[_bci].condition>>
-		<<set _activation = $defaultRules[_bci].activation>>
-		<<if _activation == "sex drive">>
-			<<set _activation = "energy">>
-		<</if>>
-
-		<<if _activation == "none">>
-			<<set $defaultRules[_bci].condition = {id: "false"}>>
-		<<elseif _activation == "always">>
-			<<set $defaultRules[_bci].condition = {id: "true"}>>
-
-		<<elseif $defaultRules[_bci].thresholdLower != "none" && $defaultRules[_bci].thresholdUpper != "none">>
-			<<set $defaultRules[_bci].condition = {
-				id: "&&",
-				first: {
-					id: $defaultRules[_bci].eqUpper ? "<=" : "<",
-					first: {id: "(name)", name: _activation},
-					second: {id: "(number)", value: $defaultRules[_bci].thresholdUpper}
-				},
-				second: {
-					id: $defaultRules[_bci].eqLower ? ">=" : ">",
-					first: {id: "(name)", name: _activation},
-					second: {id: "(number)", value: $defaultRules[_bci].thresholdLower},
-				},
-			}>>
-
-		<<elseif $defaultRules[_bci].thresholdLower != "none">>
-			<<set $defaultRules[_bci].condition = {
-				id: $defaultRules[_bci].eqLower ? ">=" : ">",
-				first: {id: "(name)", name: _activation},
-				second: {id: "(number)", value: $defaultRules[_bci].thresholdLower},
-			}>>
-
-		<<elseif $defaultRules[_bci].thresholdUpper != "none">>
-			<<set $defaultRules[_bci].condition = {
-				id: $defaultRules[_bci].eqUpper ? "<=" : "<",
-				first: {id: "(name)", name: _activation},
-				second: {id: "(number)", value: $defaultRules[_bci].thresholdUpper},
-			}>>
-
-		<<else>>
-			/% both thresholds are "none", same as activation being none %/
-			<<set $defaultRules[_bci].condition = {id: "false"}>>
-		<</if>>
-	<</if>>
-
-	<<if $defaultRules[_bci].setAssignment == "none">>
-		<<set $defaultRules[_bci].setAssignment = "no default setting">>
-	<</if>>
-
-	<<if $defaultRules[_bci].assignFacility>>
-		<<switch $defaultRules[_bci].assignFacility>>
-		<<case "spa">>          <<set $defaultRules[_bci].setAssignment = "rest in the spa">>
-		<<case "club">>         <<set $defaultRules[_bci].setAssignment = "serve in the club">>
-		<<case "dairy">>        <<set $defaultRules[_bci].setAssignment = "work in the dairy">>
-		<<case "clinic">>       <<set $defaultRules[_bci].setAssignment = "get treatment in the clinic">>
-		<<case "arcade">>       <<set $defaultRules[_bci].setAssignment = "be confined in the arcade">>
-		<<case "hgsuite">>      <<set $defaultRules[_bci].setAssignment = "live with your Head Girl">>
-		<<case "brothel">>      <<set $defaultRules[_bci].setAssignment = "work in the brothel">>
-		<<case "cellblock">>    <<set $defaultRules[_bci].setAssignment = "be confined in the cellblock">>
-		<<case "schoolroom">>   <<set $defaultRules[_bci].setAssignment = "learn in the schoolroom">>
-		<<case "mastersuite">>  <<set $defaultRules[_bci].setAssignment = "serve in the master suite">>
-		<<case "servantsquarters">> <<set $defaultRules[_bci].setAssignment = "work as a servant">>
-		<</switch>>
-	<</if>>
-
-	<<set $defaultRules[_bci].facility = $defaultRules[_bci].facility.map(function(x) {
-		switch (x) {
-		case "spa": return "rest in the spa";
-		case "club": return "serve in the club";
-		case "dairy": return "work in the dairy";
-		case "clinic": return "get treatment in the clinic";
-		case "arcade": return "be confined in the arcade";
-		case "hgsuite": return "live with your Head Girl";
-		case "brothel": return "work in the brothel";
-		case "cellblock": return "be confined in the cellblock";
-		case "schoolroom": return "learn in the schoolroom";
-		case "mastersuite": return "serve in the master suite";
-		case "servantsquarters": return "work as a servant";
-		default : return x;
-		}
-	})>>
-
-	<<set $defaultRules[_bci].excludeFacility = $defaultRules[_bci].excludeFacility.map(function(x) {
-		switch (x) {
-		case "spa": return "rest in the spa";
-		case "club": return "serve in the club";
-		case "dairy": return "work in the dairy";
-		case "clinic": return "get treatment in the clinic";
-		case "arcade": return "be confined in the arcade";
-		case "hgsuite": return "live with your Head Girl";
-		case "brothel": return "work in the brothel";
-		case "cellblock": return "be confined in the cellblock";
-		case "schoolroom": return "learn in the schoolroom";
-		case "mastersuite": return "serve in the master suite";
-		case "servantsquarters": return "work as a servant";
-		default : return x;
-		}
-	})>>
-
-	<<if ndef $defaultRules[_bci].aphrodisiacs>>
-		<<set $defaultRules[_bci].aphrodisiacs = 0>>
-	<</if>>
-	<<if $defaultRules[_bci].curatives == "applied">>
-		<<set $defaultRules[_bci].curatives = 2>>
-	<</if>>
-	<<if $defaultRules[_bci].drugs == "curatives">>
-		<<set $defaultRules[_bci].curatives = 2>>
-		<<set $defaultRules[_bci].drugs = "no drugs">>
-	<<elseif $defaultRules[_bci].drugs == "preventatives">>
-		<<set $defaultRules[_bci].curatives = 1>>
-		<<set $defaultRules[_bci].drugs = "no drugs">>
-	<<elseif $defaultRules[_bci].drugs == "aphrodisiacs">>
-		<<set $defaultRules[_bci].aphrodisiacs = 1>>
-		<<set $defaultRules[_bci].drugs = "no drugs">>
-	<<elseif $defaultRules[_bci].drugs == "extreme aphrodisiacs">>
-		<<set $defaultRules[_bci].aphrodisiacs = 2>>
-		<<set $defaultRules[_bci].drugs = "no drugs">>
-	<</if>>
-
-	<<if $defaultRules[_bci].muscles >= 3 && $defaultRules[_bci].muscles <= 6>>
-		<<set $defaultRules[_bci].muscles = 100>>
-	<<elseif $defaultRules[_bci].muscles >= 2 && $defaultRules[_bci].muscles <= 6>>
-		<<set $defaultRules[_bci].muscles = 50>>
-	<<elseif $defaultRules[_bci].muscles >= 1 && $defaultRules[_bci].muscles <= 6>>
-		<<set $defaultRules[_bci].muscles = 20>>
-	<</if>>
-
-	<<if ndef $defaultRules[_bci].standardReward>>
-		<<set $defaultRules[_bci].standardReward = "no default setting">>
-	<</if>>
-	<<if ndef $defaultRules[_bci].standardPunishment>>
-		<<set $defaultRules[_bci].standardPunishment = "no default setting">>
-	<</if>>
-	<<if ndef $defaultRules[_bci].aVirginAccessory>>
-		<<set $defaultRules[_bci].aVirginAccessory = "no default setting">>
-	<</if>>
-	<<if ndef $defaultRules[_bci].aVirginDickAccessory>>
-		<<set $defaultRules[_bci].aVirginDickAccessory = "no default setting">>
-	<</if>>
-	<<if ndef $defaultRules[_bci].aVirginButtplug>>
-		<<set $defaultRules[_bci].aVirginButtplug = "no default setting">>
-	<</if>>
-	<<if ndef $defaultRules[_bci].dietMilk>>
-		<<set $defaultRules[_bci].dietMilk = 0>>
-	<</if>>
-	<<if ndef $defaultRules[_bci].dietCum>>
-		<<set $defaultRules[_bci].dietCum = 0>>
-	<</if>>
-	<<if ndef $defaultRules[_bci].clitSettingXY>>
-		<<set $defaultRules[_bci].clitSettingXY = "no default setting">>
-	<</if>>
-	<<if ndef $defaultRules[_bci].clitSettingXX>>
-		<<set $defaultRules[_bci].clitSettingXX = "no default setting">>
-	<</if>>
-	<<if ndef $defaultRules[_bci].clitSettingEnergy>>
-		<<set $defaultRules[_bci].clitSettingEnergy = "no default setting">>
-	<</if>>
-	<<switch $defaultRules[_bci].clitSetting>>
-	<<case "all">>
-		<<set $defaultRules[_bci].clitSetting = "no default setting", $defaultRules[_bci].clitSettingXY = 100, $defaultRules[_bci].clitSettingXX = 100, $defaultRules[_bci].clitSettingEnergy = 100>>
-	<<case "none">>
-		<<set $defaultRules[_bci].clitSetting = "no default setting", $defaultRules[_bci].clitSettingXY = 0, $defaultRules[_bci].clitSettingXX = 0, $defaultRules[_bci].clitSettingEnergy = 0>>
-	<<case "men">>
-		<<set $defaultRules[_bci].clitSetting = "no default setting", $defaultRules[_bci].clitSettingXY = 100>>
-	<<case "women">>
-		<<set $defaultRules[_bci].clitSetting = "no default setting", $defaultRules[_bci].clitSettingXX = 100>>
-	<</switch>>
-	<<if ndef $defaultRules[_bci].surgery>>
-		<<set $defaultRules[_bci].surgery = {}>> /*just empty object enough to avoid problems */
-	<</if>>
-	<<if $releaseID < 1018>>
-		<<if $defaultRules[_bci].growth == "none">>
-			<<set $defaultRules[_bci].growth = {boobs: 0, butt: 0, lips: 0, dick: 0, balls: 0}>>
-		<<elseif $defaultRules[_bci].growth == "girlish">>
-			<<set $defaultRules[_bci].growth = {boobs: 350, butt: 2, lips: 25, dick: 0, balls: 0}>>
-		<<elseif $defaultRules[_bci].growth == "stacked">>
-			<<set $defaultRules[_bci].growth = {boobs: 1000, butt: 4, lips: 25, dick: 4, balls: 4}>>
-		<<elseif $defaultRules[_bci].growth == "functional">>
-			<<set $defaultRules[_bci].growth = {boobs: 9000, butt: 10, lips: 45, dick: 6, balls: 6}>>
-		<<elseif $defaultRules[_bci].growth == "unlimited">>
-			<<set $defaultRules[_bci].growth = {boobs: 48000, butt: 10, lips: 100, dick: 10, balls: 6}>>
-		<<else>>
-			<<set $defaultRules[_bci].growth = {boobs: "no default setting", butt: "no default setting", lips: "no default setting", dick: "no default setting", balls: "no default setting"}>>
-		<</if>>
-	<</if>>
-<</for>>
-
 <<if ndef $month>>
 <<set $month = either("January","February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December")>>
 <</if>>
@@ -2326,35 +2137,6 @@ Setting missing global variables:
 <</if>>
 <<set $seeDicks = Math.clamp($seeDicks, 0, 100)>>
 
-<<for _r = 0; _r < $defaultRules.length; _r++>>
-	<<if ndef $defaultRules[_r].aphrodisiacs>>
-		<<set $defaultRules[_r].aphrodisiacs = 0>>
-	<</if>>
-	<<if $defaultRules[_r].curatives == "applied">>
-		<<set $defaultRules[_r].curatives = 2>>
-	<</if>>
-	<<if $defaultRules[_r].drugs == "curatives">>
-		<<set $defaultRules[_r].curatives = 2>>
-		<<set $defaultRules[_r].drugs = "no drugs">>
-	<<elseif $defaultRules[_r].drugs == "preventatives">>
-		<<set $defaultRules[_r].curatives = 1>>
-		<<set $defaultRules[_r].drugs = "no drugs">>
-	<<elseif $defaultRules[_r].drugs == "aphrodisiacs">>
-		<<set $defaultRules[_r].aphrodisiacs = 1>>
-		<<set $defaultRules[_r].drugs = "no drugs">>
-	<<elseif $defaultRules[_r].drugs == "extreme aphrodisiacs">>
-		<<set $defaultRules[_r].aphrodisiacs = 2>>
-		<<set $defaultRules[_r].drugs = "no drugs">>
-	<</if>>
-	<<if $defaultRules[_r].muscles >= 3 && $defaultRules[_r].muscles <= 6>>
-		<<set $defaultRules[_r].muscles = 100>>
-	<<elseif $defaultRules[_r].muscles >= 2 && $defaultRules[_r].muscles <= 6>>
-		<<set $defaultRules[_r].muscles = 50>>
-	<<elseif $defaultRules[_r].muscles >= 1 && $defaultRules[_r].muscles <= 6>>
-		<<set $defaultRules[_r].muscles = 20>>
-	<</if>>
-<</for>>
-
 <<if ndef $PC.ID>>
 	<<set $PC.ID = -1>>
 <</if>>
diff --git a/src/uncategorized/autosurgerySettings.tw b/src/uncategorized/autosurgerySettings.tw
deleted file mode 100644
index 97368a35404b45337b32af0131de1ea70faddb20..0000000000000000000000000000000000000000
--- a/src/uncategorized/autosurgerySettings.tw
+++ /dev/null
@@ -1,526 +0,0 @@
-:: Autosurgery Settings [nobr]
-
-
-<<set $nextButton = "Back">>
-<<set $nextLink = "Rules Assistant">>
-
-//The autosurgery can accept the following guidelines. If results outside these guidelines are desired, deactivating the autosurgery and planning surgical interventions manually is recommended.//
-
-<br><br>
-Vision correction:
-<span id = "eyes">
-	<<if ($currentRule.surgery.eyes == "no default setting")>>
-		''no default setting.''
-	<<elseif ($currentRule.surgery.eyes == 1)>>
-		''fixed.''
-	<<else>>
-		''blurred.''
-	<</if>>
-
-	<br>
-
-	<<if ($currentRule.surgery.eyes !== "no default setting")>>
-		<<link "No default setting">>
-			<<set $currentRule.surgery.eyes = "no default setting">>
-			<<RASurgeryChangeEyes>>
-		<</link>> |
-	<<else>>
-		No default setting |
-	<</if>>
-	<<if ($currentRule.surgery.eyes !== 1)>>
-		<<link "Corrected">>
-			<<set $currentRule.surgery.eyes = 1>>
-			<<RASurgeryChangeEyes>>
-		<</link>> |
-	<<else>>
-		Corrected |
-	<</if>>
-	<<if ($currentRule.surgery.eyes !== -1)>>
-		<<link "Blurred">>
-			<<set $currentRule.surgery.eyes = -1>>
-			<<RASurgeryChangeEyes>>
-		<</link>>
-	<<else>>
-		Blurred
-	<</if>>
-</span>
-
-<br><br>
-
-Lactation drug implants:
-<span id = "lactation">
-<<if ($currentRule.surgery.lactation == "no default setting")>>
-	''no default setting.''
-<<elseif ($currentRule.surgery.lactation == 1)>>
-	''implanted.''
-<<else>>
-	''implants will be removed.''
-<</if>>
-
-<br>
-
-<<if ($currentRule.surgery.lactation !== "no default setting")>>
-	<<link "No default setting">>
-		<<set $currentRule.surgery.lactation = "no default setting">>
-		<<RASurgeryChangeLactation>>
-	<</link>> |
-<<else>>
-	No default setting |
-<</if>>
-<<if ($currentRule.surgery.lactation !== 0)>>
-	<<link "Removed">>
-		<<set $currentRule.surgery.lactation = 0>>
-		<<RASurgeryChangeLactation>>
-	<</link>> |
-<<else>>
-	Removed |
-<</if>>
-<<if ($currentRule.surgery.lactation !== 1)>>
-	<<link "Implanted">>
-		<<set $currentRule.surgery.lactation = 1>>
-		<<RASurgeryChangeLactation>>
-	<</link>>
-<<else>>
-	Implanted
-<</if>>
-</span>
-
-<<if $seeDicks || $makeDicks>>
-<br><br>
-
-Prostate production enhancing drug implants:
-<span id = "prostate">
-<<if ($currentRule.surgery.prostate == "no default setting")>>
-	''no default setting.''
-<<elseif ($currentRule.surgery.prostate == 1)>>
-	''implanted.''
-<<else>>
-	''implants will be removed.''
-<</if>>
-
-<br>
-
-<<if ($currentRule.surgery.prostate !== "no default setting")>>
-	<<link "No default setting">>
-		<<set $currentRule.surgery.prostate = "no default setting">>
-		<<RASurgeryChangeProstate>>
-	<</link>> |
-<<else>>
-	No default setting |
-<</if>>
-<<if ($currentRule.surgery.prostate !== 0)>>
-	<<link "Removed">>
-		<<set $currentRule.surgery.prostate = 0>>
-		<<RASurgeryChangeProstate>>
-	<</link>> |
-<<else>>
-	Removed |
-<</if>>
-<<if ($currentRule.surgery.prostate !== 1)>>
-	<<link "Implanted">>
-		<<set $currentRule.surgery.prostate = 1>>
-		<<RASurgeryChangeProstate>>
-	<</link>>
-<<else>>
-	Implanted
-<</if>>
-</span>
-<</if>>
-
-<br><br>
-
-Cosmetic surgery:
-<span id = "cosmetic">
-<<if ($currentRule.surgery.cosmetic == 2)>>
-	''invasive.''
-<<elseif ($currentRule.surgery.cosmetic == 1)>>
-	''subtle.''
-<<elseif $currentRule.surgery.cosmetic == 0>>
-	''none.''
-<<else>>
-	''off.''
-<</if>>
-
-<br>
-
-<<if ($currentRule.surgery.cosmetic !== "nds")>>
-	<<link "No default setting">>
-		<<set $currentRule.surgery.cosmetic = "nds">>
-		<<RASurgeryChangeCosmetic>>
-	<</link>> |
-<<else>>
-	Off |
-<</if>>
-<<if ($currentRule.surgery.cosmetic !== 0)>>
-	<<link "None">>
-		<<set $currentRule.surgery.cosmetic = 0>>
-		<<RASurgeryChangeCosmetic>>
-	<</link>> |
-<<else>>
-	None |
-<</if>>
-<<if ($currentRule.surgery.cosmetic !== 1)>>
-	<<link "Subtle">>
-		<<set $currentRule.surgery.cosmetic = 1>>
-		<<RASurgeryChangeCosmetic>>
-	<</link>> |
-<<else>>
-	Subtle |
-<</if>>
-<<if ($currentRule.surgery.cosmetic !== 2)>>
-	<<link "Invasive">>
-		<<set $currentRule.surgery.cosmetic = 2>>
-		<<RASurgeryChangeCosmetic>>
-	<</link>>
-<<else>>
-	Invasive
-<</if>>
-</span>
-
-<br><br>
-
-Lip implants:
-<span id = "lips">
-<<if ($currentRule.surgery.lips == "no default setting")>>
-	''no default setting.''
-<<elseif ($currentRule.surgery.lips == 95)>>
-	implanted until a ''facepussy.''
-<<elseif ($currentRule.surgery.lips == 70)>>
-	implanted until ''huge.''
-<<elseif ($currentRule.surgery.lips == 40)>>
-	implanted until ''big.''
-<<elseif ($currentRule.surgery.lips == 20)>>
-	implanted until ''plush.''
-<<else>>
-	''implants will be removed.''
-<</if>>
-
-<br>
-
-<<if ($currentRule.surgery.lips !== "no default setting")>>
-	<<link "No default setting">>
-	<<set $currentRule.surgery.lips = "no default setting">>
-	<<RASurgeryChangeLips>>
-	<</link>> |
-<<else>>
-	No default setting |
-<</if>>
-<<if ($currentRule.surgery.lips != 0)>>
-	<<link "Removed">>
-	<<set $currentRule.surgery.lips = 0>>
-	<<RASurgeryChangeLips>>
-	<</link>> |
-<<else>>
-	Removed |
-<</if>>
-<<if ($currentRule.surgery.lips != 20)>>
-	<<link "Plush">>
-	<<set $currentRule.surgery.lips = 20>>
-	<<RASurgeryChangeLips>>
-	<</link>> |
-<<else>>
-	Plush |
-<</if>>
-<<if ($currentRule.surgery.lips != 40)>>
-	<<link "Big">>
-	<<set $currentRule.surgery.lips = 40>>
-	<<RASurgeryChangeLips>>
-	<</link>> |
-<<else>>
-	Big |
-<</if>>
-<<if ($currentRule.surgery.lips != 70)>>
-	<<link "Huge">>
-	<<set $currentRule.surgery.lips = 70>>
-	<<RASurgeryChangeLips>>
-	<</link>>
-<<else>>
-	Huge
-<</if>>
-<<if ($seeExtreme != 0)>>
-<<if ($currentRule.surgery.lips != 95)>>
-	| <<link "Facepussy">>
-	<<set $currentRule.surgery.lips = 95>>
-	<<RASurgeryChangeLips>>
-	<</link>>
-<<else>>
-	| Facepussy
-<</if>>
-<</if>>
-</span>
-
-<br><br>
-<<if $bellyImplants >= 1>>	
-	Belly/Uterus implant: ''<span id = "bimpl">no default setting</span>.''
-	<br>
-	<<rbutton "$currentRule.surgery.bellyImplant" "no default setting" "bimpl" "don't do anything">> No changes |
-	<<rbutton "$currentRule.surgery.bellyImplant" "install" "bimpl" "if possible install implant">> Install |
-	<<rbutton "$currentRule.surgery.bellyImplant" "remove" "bimpl" "remove installed implant">> Remove 
-	<br><br>
-<</if>>
-
-Buttock implants:
-<span id = "butt">
-<<if ($currentRule.surgery.butt == "no default setting")>>
-	''no default setting.''
-<<elseif ($currentRule.surgery.butt == 9)>>
-	implanted until ''maximized.''
-<<elseif ($currentRule.surgery.butt == 6)>>
-	implanted until ''huge.''
-<<elseif ($currentRule.surgery.butt == 4)>>
-	implanted until ''stacked.''
-<<elseif ($currentRule.surgery.butt == 2)>>
-	implanted until ''slim.''
-<<else>>
-	''implants will be removed.''
-<</if>>
-
-<br>
-
-<<if ($currentRule.surgery.butt !== "no default setting")>>
-	<<link "No default setting">>
-	<<set $currentRule.surgery.butt = "no default setting">>
-	<<RASurgeryChangeButt>>
-	<</link>> |
-<<else>>
-	No default setting |
-<</if>>
-<<if ($currentRule.surgery.butt != 0)>>
-	<<link "Removed">>
-	<<set $currentRule.surgery.butt = 0>>
-	<<RASurgeryChangeButt>>
-	<</link>> |
-<<else>>
-	Removed |
-<</if>>
-<<if ($currentRule.surgery.butt != 2)>>
-	<<link "Slim">>
-	<<set $currentRule.surgery.butt = 2>>
-	<<RASurgeryChangeButt>>
-	<</link>> |
-<<else>>
-	Slim |
-<</if>>
-<<if ($currentRule.surgery.butt != 4)>>
-	<<link "Stacked">>
-	<<set $currentRule.surgery.butt = 4>>
-	<<RASurgeryChangeButt>>
-	<</link>> |
-<<else>>
-	Stacked |
-<</if>>
-<<if ($currentRule.surgery.butt != 6)>>
-	<<link "Huge">>
-	<<set $currentRule.surgery.butt = 6>>
-	<<RASurgeryChangeButt>>
-	<</link>> |
-<<else>>
-	Huge |
-<</if>>
-<<if ($currentRule.surgery.butt != 9)>>
-	<<link "Maximize">>
-	<<set $currentRule.surgery.butt = 9>>
-	<<RASurgeryChangeButt>>
-	<</link>>
-<<else>>
-	Maximize
-<</if>>
-</span>
-
-<br><br>
-
-Breast implants:
-<span id = "boobs">
-<<if ($currentRule.surgery.boobs == "no default setting")>>
-	''no default setting.''
-<<elseif ($currentRule.surgery.boobs == 48000)>>
-	implanted until ''maximized.''
-<<elseif ($currentRule.surgery.boobs == 9000)>>
-	implanted to maximally ''functional,'' where more would immobilize the slave.
-<<elseif ($currentRule.surgery.boobs == 2000)>>
-	implanted until ''huge.''
-<<elseif ($currentRule.surgery.boobs == 1000)>>
-	implanted until ''stacked.''
-<<elseif ($currentRule.surgery.boobs == 400)>>
-	implanted until ''slim.''
-<<else>>
-	''implants will be removed.''
-<</if>>
-
-<br>
-
-<<if ($currentRule.surgery.boobs != "no default setting")>>
-	<<link "No default setting">>
-	<<set $currentRule.surgery.boobs = "no default setting">>
-	<<RASurgeryChangeBoobs>>
-	<</link>> |
-<<else>>
-	No default setting |
-<</if>>
-<<if ($currentRule.surgery.boobs != 0)>>
-	<<link "Removed">>
-	<<set $currentRule.surgery.boobs = 0>>
-	<<RASurgeryChangeBoobs>>
-	<</link>> |
-<<else>>
-	Removed |
-<</if>>
-<<if ($currentRule.surgery.boobs != 400)>>
-	<<link "Slim">>
-	<<set $currentRule.surgery.boobs = 400>>
-	<<RASurgeryChangeBoobs>>
-	<</link>> |
-<<else>>
-	Slim |
-<</if>>
-<<if ($currentRule.surgery.boobs != 1000)>>
-	<<link "Stacked">>
-	<<set $currentRule.surgery.boobs = 1000>>
-	<<RASurgeryChangeBoobs>>
-	<</link>> |
-<<else>>
-	Stacked |
-<</if>>
-<<if ($currentRule.surgery.boobs != 2000)>>
-	<<link "Huge">>
-	<<set $currentRule.surgery.boobs = 2000>>
-	<<RASurgeryChangeBoobs>>
-	<</link>> |
-<<else>>
-	Huge |
-<</if>>
-<<if ($currentRule.surgery.boobs != 9000)>>
-	<<link "Functional">>
-	<<set $currentRule.surgery.boobs = 9000>>
-	<<RASurgeryChangeBoobs>>
-	<</link>> |
-<<else>>
-	Functional |
-<</if>>
-<<if ($currentRule.surgery.boobs != 48000)>>
-	<<link "Maximize">>
-	<<set $currentRule.surgery.boobs = 48000>>
-	<<RASurgeryChangeBoobs>>
-	<</link>>
-<<else>>
-	Maximize
-<</if>>
-</span>
-
-<br><br>
-
-Orifice tightening:
-<span id = "holes">
-<<if ($currentRule.surgery.holes == 2)>>
-	''virginity restoration'' will be applied where possible.
-<<elseif ($currentRule.surgery.holes == 1)>>
-	''hole tightening'' will be applied.
-<<else>>
-	''No default setting.''
-<</if>>
-
-<br>
-
-<<if ($currentRule.surgery.holes != "nds")>>
-	<<link "No default setting">>
-	<<set $currentRule.surgery.holes = "nds">>
-	<<RASurgeryChangeHoles>>
-	<</link>> |
-<<else>>
-	No default setting |
-<</if>>
-<<if ($currentRule.surgery.holes != 1)>>
-	<<link "Tightening">>
-	<<set $currentRule.surgery.holes = 1>>
-	<<RASurgeryChangeHoles>>
-	<</link>> |
-<<else>>
-	Tightening |
-<</if>>
-<<if ($currentRule.surgery.holes != 2)>>
-	<<link "Virginity">>
-	<<set $currentRule.surgery.holes = 2>>
-	<<RASurgeryChangeHoles>>
-	<</link>>
-<<else>>
-	Virginity
-<</if>>
-</span>
-
-<br><br>bodyhair:
-<span id = "bodyhair">
-<<if ($currentRule.surgery.bodyhair == 2)>>
-	''Removal''
-<<elseif ($currentRule.surgery.bodyhair == 1)>>
-	''Keep''
-<<else>>
-	''No default setting.''
-<</if>>
-
-<br>
-<<if ($currentRule.surgery.bodyhair != "nds")>>
-	<<link "No default setting">>
-	<<set $currentRule.surgery.bodyhair = "nds">>
-	<<RASurgeryBodyHair>>
-	<</link>> |
-<<else>>
-	No default setting |
-<</if>>
-
-<<if ($currentRule.surgery.bodyhair != 1)>>
-	<<link "Keep">>
-	<<set $currentRule.surgery.bodyhair = 1>>
-	<<RASurgeryBodyHair>>
-	<</link>> |
-<<else>>
-	Keep |
-<</if>>
-
-<<if ($currentRule.surgery.bodyhair != 2)>>
-	<<link "Removal">>
-	<<set $currentRule.surgery.bodyhair = 2>>
-	<<RASurgeryBodyHair>>
-	<</link>>
-<<else>>
-	Removal
-<</if>>
-</span>
-
-<br><br>hair:
-<span id = "hair">
-<<if ($currentRule.surgery.hair == 2)>>
-	''Removal''
-<<elseif ($currentRule.surgery.hair == 1)>>
-	''Keep''
-<<else>>
-	''No default setting.''
-<</if>>
-
-<br>
-<<if ($currentRule.surgery.hair != "nds")>>
-	<<link "No default setting">>
-	<<set $currentRule.surgery.hair = "nds">>
-	<<RASurgeryHair>>
-	<</link>> |
-<<else>>
-	No default setting |
-<</if>>
-
-<<if ($currentRule.surgery.hair != 1)>>
-	<<link "Keep">>
-	<<set $currentRule.surgery.hair = 1>>
-	<<RASurgeryBodyHair>>
-	<</link>> |
-<<else>>
-	Keep |
-<</if>>
-
-<<if ($currentRule.surgery.hair != 2)>>
-	<<link "Removal">>
-	<<set $currentRule.surgery.hair = 2>>
-	<<RASurgeryHair>>
-	<</link>>
-<<else>>
-	Removal
-<</if>>
-</span>
\ No newline at end of file
diff --git a/src/uncategorized/bodyModRulesAssistantSettings.tw b/src/uncategorized/bodyModRulesAssistantSettings.tw
deleted file mode 100644
index dcb617bb2d300076425d1056fc3eab221b50b75a..0000000000000000000000000000000000000000
--- a/src/uncategorized/bodyModRulesAssistantSettings.tw
+++ /dev/null
@@ -1,2158 +0,0 @@
-:: Body Mod Rules Assistant Settings [nobr]
-
-
-<<set $nextButton = "Back">>
-<<set $nextLink = "Rules Assistant">>
-<<set $showEncyclopedia = 1>><<set $encyclopedia = "Personal Assistant">>
-
-<br>
-
-//Please use the 'no default setting' option to identify areas I should not address.//
-
-<br><br>
-__Rule $r piercings__
-<br>
-Ear piercings: ''
-<span id = "earpiercing">
-<<if $currentRule.earPiercing == "no default setting">>No default setting.<<elseif $currentRule.earPiercing == 0>>None.<<elseif $currentRule.earPiercing == 1>>Light.
-<<elseif $currentRule.earPiercing == 2>>Heavy.<</if>></span>''
-
-<<link "No default setting">>
-<<set $currentRule.earPiercing = "no default setting">>
-<<RAChangeEarPiercings>>
-<</link>>
-|
-<<link "None">>
-<<set $currentRule.earPiercing = 0>>
-<<RAChangeEarPiercings>>
-<</link>>
-|
-<<link "Light">>
-<<set $currentRule.earPiercing = 1>>
-<<RAChangeEarPiercings>>
-<</link>>
-|
-<<link "Heavy">>
-<<set $currentRule.earPiercing = 2>>
-<<RAChangeEarPiercings>>
-<</link>>
-
-<br>
-Nasal piercings: ''
-<span id = "nosepiercing">
-<<if $currentRule.nosePiercing == "no default setting">>No default setting.<<elseif $currentRule.nosePiercing == 0>>None.<<elseif $currentRule.nosePiercing == 1>>Light.
-<<elseif $currentRule.nosePiercing == 2>>Heavy.<</if>></span>''
-
-<<link "No default setting">>
-<<set $currentRule.nosePiercing = "no default setting">>
-<<RAChangeNosePiercings>>
-<</link>>
-|
-<<link "None">>
-<<set $currentRule.nosePiercing = 0>>
-<<RAChangeNosePiercings>>
-<</link>>
-|
-<<link "Light">>
-<<set $currentRule.nosePiercing = 1>>
-<<RAChangeNosePiercings>>
-<</link>>
-|
-<<link "Heavy">>
-<<set $currentRule.nosePiercing = 2>>
-<<RAChangeNosePiercings>>
-<</link>>
-
-<br>
-Eyebrow piercings: ''
-<span id = "eyebrowpiercing">
-<<if $currentRule.eyebrowPiercing == "no default setting">>No default setting.<<elseif $currentRule.eyebrowPiercing == 0>>None.<<elseif $currentRule.eyebrowPiercing == 1>>Light.
-<<elseif $currentRule.eyebrowPiercing == 2>>Heavy.<</if>></span>''
-
-<<link "No default setting">>
-<<set $currentRule.eyebrowPiercing = "no default setting">>
-<<RAChangeEyebrowPiercings>>
-<</link>>
-|
-<<link "None">>
-<<set $currentRule.eyebrowPiercing = 0>>
-<<RAChangeEyebrowPiercings>>
-<</link>>
-|
-<<link "Light">>
-<<set $currentRule.eyebrowPiercing = 1>>
-<<RAChangeEyebrowPiercings>>
-<</link>>
-|
-<<link "Heavy">>
-<<set $currentRule.eyebrowPiercing = 2>>
-<<RAChangeEyebrowPiercings>>
-<</link>>
-
-<br>
-Navel piercing: ''
-<span id = "navelpiercing">
-<<if $currentRule.navelPiercing == "no default setting">>No default setting.<<elseif $currentRule.navelPiercing == 0>>None.<<elseif $currentRule.navelPiercing == 1>>Light.
-<<elseif $currentRule.navelPiercing == 2>>Heavy.<</if>></span>''
-
-<<link "No default setting">>
-<<set $currentRule.navelPiercing = "no default setting">>
-<<RAChangeNavelPiercings>>
-<</link>>
-|
-<<link "None">>
-<<set $currentRule.navelPiercing = 0>>
-<<RAChangeNavelPiercings>>
-<</link>>
-|
-<<link "Light">>
-<<set $currentRule.navelPiercing = 1>>
-<<RAChangeNavelPiercings>>
-<</link>>
-|
-<<link "Heavy">>
-<<set $currentRule.navelPiercing = 2>>
-<<RAChangeNavelPiercings>>
-<</link>>
-
-<br>
-Nipple piercings: ''
-<span id = "nipplepiercing">
-<<if $currentRule.nipplesPiercing == "no default setting">>No default setting.<<elseif $currentRule.nipplesPiercing == 0>>None.<<elseif $currentRule.nipplesPiercing == 1>>Light.
-<<elseif $currentRule.nipplesPiercing == 2>>Heavy.<</if>></span>''
-
-<<link "No default setting">>
-<<set $currentRule.nipplesPiercing = "no default setting">>
-<<RAChangeNipplePiercings>>
-<</link>>
-|
-<<link "None">>
-<<set $currentRule.nipplesPiercing = 0>>
-<<RAChangeNipplePiercings>>
-<</link>>
-|
-<<link "Light">>
-<<set $currentRule.nipplesPiercing = 1>>
-<<RAChangeNipplePiercings>>
-<</link>>
-|
-<<link "Heavy">>
-<<set $currentRule.nipplesPiercing = 2>>
-<<RAChangeNipplePiercings>>
-<</link>>
-
-<br>
-Areola studs: ''
-<span id = "areolapiercing">
-<<if $currentRule.areolaePiercing == "no default setting">>No default setting.<<elseif $currentRule.areolaePiercing == 0>>None.<<elseif $currentRule.areolaePiercing == 1>>Studded.<</if>></span>''
-
-<<link "No default setting">>
-<<set $currentRule.areolaePiercing = "no default setting">>
-<<RAChangeAreolaPiercings>>
-<</link>>
-|
-<<link "None">>
-<<set $currentRule.areolaePiercing = 0>>
-<<RAChangeAreolaPiercings>>
-<</link>>
-|
-<<link "Studded">>
-<<set $currentRule.areolaePiercing = 1>>
-<<RAChangeAreolaPiercings>>
-<</link>>
-
-<br>
-Lip piercings: ''
-<span id = "lippiercing">
-<<if $currentRule.lipsPiercing == "no default setting">>No default setting.<<elseif $currentRule.lipsPiercing == 0>>None.<<elseif $currentRule.lipsPiercing == 1>>Light.
-<<elseif $currentRule.lipsPiercing == 2>>Heavy.<</if>></span>''
-
-<<link "No default setting">>
-<<set $currentRule.lipsPiercing = "no default setting">>
-<<RAChangeLipPiercings>>
-<</link>>
-|
-<<link "None">>
-<<set $currentRule.lipsPiercing = 0>>
-<<RAChangeLipPiercings>>
-<</link>>
-|
-<<link "Light">>
-<<set $currentRule.lipsPiercing = 1>>
-<<RAChangeLipPiercings>>
-<</link>>
-|
-<<link "Heavy">>
-<<set $currentRule.lipsPiercing = 2>>
-<<RAChangeLipPiercings>>
-<</link>>
-
-<br>
-Tongue piercing: ''
-<span id = "tonguepiercing">
-<<if $currentRule.tonguePiercing == "no default setting">>No default setting.<<elseif $currentRule.tonguePiercing == 0>>None.<<elseif $currentRule.tonguePiercing == 1>>Light.
-<<elseif $currentRule.tonguePiercing == 2>>Heavy.<</if>></span>''
-
-<<link "No default setting">>
-<<set $currentRule.tonguePiercing = "no default setting">>
-<<RAChangeTonguePiercings>>
-<</link>>
-|
-<<link "None">>
-<<set $currentRule.tonguePiercing = 0>>
-<<RAChangeTonguePiercings>>
-<</link>>
-|
-<<link "Light">>
-<<set $currentRule.tonguePiercing = 1>>
-<<RAChangeTonguePiercings>>
-<</link>>
-|
-<<link "Heavy">>
-<<set $currentRule.tonguePiercing = 2>>
-<<RAChangeTonguePiercings>>
-<</link>>
-
-<br>
-Clit piercing: ''
-<span id = "clitpiercing">
-<<if $currentRule.clitPiercing == "no default setting">>No default setting.<<elseif $currentRule.clitPiercing == 0>>None.<<elseif $currentRule.clitPiercing == 1>>Light.
-<<elseif $currentRule.clitPiercing == 2>>Heavy.
-<<elseif $currentRule.clitPiercing == 3>>Smart.<</if>></span>''
-
-<<link "No default setting">>
-<<set $currentRule.clitPiercing = "no default setting">>
-<<RAChangeClitPiercings>>
-<</link>>
-|
-<<link "None">>
-<<set $currentRule.clitPiercing = 0>>
-<<RAChangeClitPiercings>>
-<</link>>
-|
-<<link "Light">>
-<<set $currentRule.clitPiercing = 1>>
-<<RAChangeClitPiercings>>
-<</link>>
-|
-<<link "Heavy">>
-<<set $currentRule.clitPiercing = 2>>
-<<RAChangeClitPiercings>>
-<</link>>
-|
-<<link "Smart">>
-<<set $currentRule.clitPiercing = 3>>
-<<RAChangeClitPiercings>>
-<</link>>  //Warning: expensive//
-
-<<if ($currentRule.vagina != -1)>>
-<br>
-Pussylips piercings: ''
-<span id = "vaginapiercing">
-<<if $currentRule.vaginaPiercing == "no default setting">>No default setting.<<elseif $currentRule.vaginaPiercing == 0>>None.<<elseif $currentRule.vaginaPiercing == 1>>Light.
-<<elseif $currentRule.vaginaPiercing == 2>>Heavy.<</if>></span>''
-
-<<link "No default setting">>
-<<set $currentRule.vaginaPiercing = "no default setting">>
-<<RAChangeVaginaPiercings>>
-<</link>>
-|
-<<link "None">>
-<<set $currentRule.vaginaPiercing = 0>>
-<<RAChangeVaginaPiercings>>
-<</link>>
-|
-<<link "Light">>
-<<set $currentRule.vaginaPiercing = 1>>
-<<RAChangeVaginaPiercings>>
-<</link>>
-|
-<<link "Heavy">>
-<<set $currentRule.vaginaPiercing = 2>>
-<<RAChangeVaginaPiercings>>
-<</link>>
-<</if>>
-
-
-<<if ($seeDicks > 0 || $currentRule.dickPiercing > 0)>>
-<br>
-Shaft piercings: ''
-<span id = "dickpiercing">
-<<if $currentRule.dickPiercing == "no default setting">>No default setting.<<elseif $currentRule.dickPiercing == 0>>None.<<elseif $currentRule.dickPiercing == 1>>Light.
-<<elseif $currentRule.dickPiercing == 2>>Heavy.<</if>></span>''
-
-<<link "No default setting">>
-<<set $currentRule.dickPiercing = "no default setting">>
-<<RAChangeDickPiercings>>
-<</link>>
-|
-<<link "None">>
-<<set $currentRule.dickPiercing = 0>>
-<<RAChangeDickPiercings>>
-<</link>>
-|
-<<link "Light">>
-<<set $currentRule.dickPiercing = 1>>
-<<RAChangeDickPiercings>>
-<</link>>
-|
-<<link "Heavy">>
-<<set $currentRule.dickPiercing = 2>>
-<<RAChangeDickPiercings>>
-<</link>>
-<</if>>
-
-<br>
-
-Perianal piercings: ''
-<span id = "anuspiercing">
-<<if $currentRule.anusPiercing == "no default setting">>No default setting.<<elseif $currentRule.anusPiercing == 0>>None.<<elseif $currentRule.anusPiercing == 1>>Light.
-<<elseif $currentRule.anusPiercing == 2>>Heavy.<</if>></span>''
-
-<<link "No default setting">>
-<<set $currentRule.anusPiercing = "no default setting">>
-<<RAChangeAnusPiercings>>
-<</link>>
-|
-<<link "None">>
-<<set $currentRule.anusPiercing = 0>>
-<<RAChangeAnusPiercings>>
-<</link>>
-|
-<<link "Light">>
-<<set $currentRule.anusPiercing = 1>>
-<<RAChangeAnusPiercings>>
-<</link>>
-|
-<<link "Heavy">>
-<<set $currentRule.anusPiercing = 2>>
-<<RAChangeAnusPiercings>>
-<</link>>
-
-<br>
-Corset piercings: ''
-<span id = "corsetpiercing">
-<<if $currentRule.corsetPiercing == "no default setting">>No default setting.<<elseif $currentRule.corsetPiercing == 0>>None.<<elseif $currentRule.corsetPiercing == 1>>Applied.<</if>></span>''
-
-<<link "No default setting">>
-<<set $currentRule.corsetPiercing = "no default setting">>
-<<RAChangeCorsetPiercings>>
-<</link>>
-|
-<<link "None">>
-<<set $currentRule.corsetPiercing = 0>>
-<<RAChangeCorsetPiercings>>
-<</link>>
-|
-<<link "Apply">>
-<<set $currentRule.corsetPiercing = 1>>
-<<RAChangeCorsetPiercings>>
-<</link>>
-
-<br><br>
-__Rule $r branding__
-<br>
-Automatic branding is
-<span id = "branding">
-<<if $currentRule.autoBrand == 1>>
-  ''on.''
-  <<link "Deactivate">>
-<<set $currentRule.autoBrand = 0>>
-<<RAChangeBranding>>
-<</link>>
-<<else>>
-  ''off.''
-  <<link "Activate">>
-<<set $currentRule.autoBrand = 1>>
-<<RAChangeBranding>>
-<</link>>
-<</if>>
-</span>
-
-<br>
-
-<span id = "brandtarget">
-Your preferred location for brands is the ''$brandTarget.''
-</span>
-<br>&nbsp;&nbsp;&nbsp;&nbsp;
-
-Ears:
-<<link "Left">>
-<<set $brandTarget = "left ear">>
-<<RAChangeBrandTarget>>
-<</link>>
-|
-<<link "Right">>
-<<set $brandTarget = "right ear">>
-<<RAChangeBrandTarget>>
-<</link>>
-|
-<<link "Both">>
-<<set $brandTarget = "ears">>
-<<RAChangeBrandTarget>>
-<</link>>
-<br>&nbsp;&nbsp;&nbsp;&nbsp;
-
-Cheeks:
-<<link "Left">>
-<<set $brandTarget = "left cheek">>
-<<RAChangeBrandTarget>>
-<</link>>
-|
-<<link "Right">>
-<<set $brandTarget = "right cheek">>
-<<RAChangeBrandTarget>>
-<</link>>
-|
-<<link "Both">>
-<<set $brandTarget = "cheeks">>
-<<RAChangeBrandTarget>>
-<</link>>
-<br>&nbsp;&nbsp;&nbsp;&nbsp;
-
-Shoulders:
-<<link "Left">>
-<<set $brandTarget = "left shoulder">>
-<<RAChangeBrandTarget>>
-<</link>>
-|
-<<link "Right">>
-<<set $brandTarget = "right shoulder">>
-<<RAChangeBrandTarget>>
-<</link>>
-|
-<<link "Both">>
-<<set $brandTarget = "shoulders">>
-<<RAChangeBrandTarget>>
-<</link>>
-<br>&nbsp;&nbsp;&nbsp;&nbsp;
-
-Breasts:
-<<link "Right">>
-<<set $brandTarget = "right breast">>
-<<RAChangeBrandTarget>>
-<</link>>
-|
-<<link "Left">>
-<<set $brandTarget = "left breast">>
-<<RAChangeBrandTarget>>
-<</link>>
-|
-<<link "Both">>
-<<set $brandTarget = "breasts">>
-<<RAChangeBrandTarget>>
-<</link>>
-<br>&nbsp;&nbsp;&nbsp;&nbsp;
-
-Arm, upper:
-<<link "Left">>
-<<set $brandTarget = "left upper arm">>
-<<RAChangeBrandTarget>>
-<</link>>
-|
-<<link "Right">>
-<<set $brandTarget = "right upper arm">>
-<<RAChangeBrandTarget>>
-<</link>>
-|
-<<link "Both">>
-<<set $brandTarget = "upper arms">>
-<<RAChangeBrandTarget>>
-<</link>>
-<br>&nbsp;&nbsp;&nbsp;&nbsp;
-
-Arm, lower:
-<<link "Left">>
-<<set $brandTarget = "left lower arm">>
-<<RAChangeBrandTarget>>
-<</link>>
-|
-<<link "Right">>
-<<set $brandTarget = "right lower arm">>
-<<RAChangeBrandTarget>>
-<</link>>
-|
-<<link "Both">>
-<<set $brandTarget = "lower left arms">>
-<<RAChangeBrandTarget>>
-<</link>>
-<br>&nbsp;&nbsp;&nbsp;&nbsp;
-
-Wrist:
-<<link "Left">>
-<<set $brandTarget = "left wrist">>
-<<RAChangeBrandTarget>>
-<</link>>
-|
-<<link "Right">>
-<<set $brandTarget = "right wrist">>
-<<RAChangeBrandTarget>>
-<</link>>
-|
-<<link "Both">>
-<<set $brandTarget = "wrists">>
-<<RAChangeBrandTarget>>
-<</link>>
-<br>&nbsp;&nbsp;&nbsp;&nbsp;
-
-Hand:
-<<link "Left">>
-<<set $brandTarget = "left hand">>
-<<RAChangeBrandTarget>>
-<</link>>
-|
-<<link "Right">>
-<<set $brandTarget = "right hand">>
-<<RAChangeBrandTarget>>
-<</link>>
-|
-<<link "Both">>
-<<set $brandTarget = "hands">>
-<<RAChangeBrandTarget>>
-<</link>>
-<br>&nbsp;&nbsp;&nbsp;&nbsp;
-
-Buttocks:
-<<link "Left">>
-<<set $brandTarget = "left buttock">>
-<<RAChangeBrandTarget>>
-<</link>>
-|
-<<link "Right">>
-<<set $brandTarget = "right buttock">>
-<<RAChangeBrandTarget>>
-<</link>>
-|
-<<link "Both">>
-<<set $brandTarget = "buttocks">>
-<<RAChangeBrandTarget>>
-<</link>>
-<br>&nbsp;&nbsp;&nbsp;&nbsp;
-
-Thigh: 
-<<link "Left">>
-<<set $brandTarget = "left thigh">>
-<<RAChangeBrandTarget>>
-<</link>>
-|
-<<link "Right">>
-<<set $brandTarget = "right thigh">>
-<<RAChangeBrandTarget>>
-<</link>>
-|
-<<link "Both">>
-<<set $brandTarget = "thighs">>
-<<RAChangeBrandTarget>>
-<</link>>
-<br>&nbsp;&nbsp;&nbsp;&nbsp;
-
-Calf: 
-<<link "Left">>
-<<set $brandTarget = "left calf">>
-<<RAChangeBrandTarget>>
-<</link>>
-|
-<<link "Right">>
-<<set $brandTarget = "right calf">>
-<<RAChangeBrandTarget>>
-<</link>>
-|
-<<link "Both">>
-<<set $brandTarget = "calves">>
-<<RAChangeBrandTarget>>
-<</link>>
-<br>&nbsp;&nbsp;&nbsp;&nbsp;
-
-Ankle: 
-<<link "Left">>
-<<set $brandTarget = "left ankle">>
-<<RAChangeBrandTarget>>
-<</link>>
-|
-<<link "Right">>
-<<set $brandTarget = "right ankle">>
-<<RAChangeBrandTarget>>
-<</link>>
-|
-<<link "Both">>
-<<set $brandTarget = "ankles">>
-<<RAChangeBrandTarget>>
-<</link>>
-<br>&nbsp;&nbsp;&nbsp;&nbsp;
-
-Feet:
-<<link "Left">>
-<<set $brandTarget = "left foot">>
-<<RAChangeBrandTarget>>
-<</link>>
-|
-<<link "Right">>
-<<set $brandTarget = "right foot">>
-<<RAChangeBrandTarget>>
-<</link>>
-|
-<<link "Both">>
-<<set $brandTarget = "feet">>
-<<RAChangeBrandTarget>>
-<</link>>
-<br>&nbsp;&nbsp;&nbsp;&nbsp;
-
-Other:
-<<link "Neck">>
-<<set $brandTarget = "neck">>
-<<RAChangeBrandTarget>>
-<</link>>
-|
-<<link "Chest">>
-<<set $brandTarget = "chest">>
-<<RAChangeBrandTarget>>
-<</link>>
-|
-<<link "Belly">>
-<<set $brandTarget = "belly">>
-<<RAChangeBrandTarget>>
-<</link>>
-|
-<<link "Pubic Mound">>
-<<set $brandTarget = "pubic mound">>
-<<RAChangeBrandTarget>>
-<</link>>
-|
-<<link "Back">>
-<<set $brandTarget = "back">>
-<<RAChangeBrandTarget>>
-<</link>>
-|
-<<link "Lower Back">>
-<<set $brandTarget = "lower back">>
-<<RAChangeBrandTarget>>
-<</link>>
-<br>
-
-<span id = "branddesign">
-Your brand design is ''$brandDesign.''
-</span>
-
-<br>&nbsp;&nbsp;&nbsp;&nbsp;
-
-<<link "Your slaving emblem">>
-<<set $brandDesign = "your personal symbol">>
-<<RAChangeBrandDesign>>
-<</link>>
-|
-<<link "Your initials">>
-<<set $brandDesign = "your initials">>
-<<RAChangeBrandDesign>>
-<</link>>
-|
-<<link "SLUT">>
-<<set $brandDesign = "SLUT">>
-<<RAChangeBrandDesign>>
-<</link>>
-|
-<<link "WHORE">>
-<<set $brandDesign = "WHORE">>
-<<RAChangeBrandDesign>>
-<</link>>
-|
-<<link "SLAVE">>
-<<set $brandDesign = "SLAVE">>
-<<RAChangeBrandDesign>>
-<</link>>
-|
-<<link "COW">>
-<<set $brandDesign = "COW">>
-<<RAChangeBrandDesign>>
-<</link>>
-|
-<<link "MEAT">>
-<<set $brandDesign = "MEAT">>
-<<RAChangeBrandDesign>>
-<</link>>
-|
-<<link "CUMDUMP">>
-<<set $brandDesign = "CUMDUMP">>
-<<RAChangeBrandDesign>>
-<</link>>
-|
-<<link "LOVER">>
-<<set $brandDesign = "LOVER">>
-<<RAChangeBrandDesign>>
-<</link>>
-|
-<<link "Pussy symbol">>
-<<set $brandDesign = "a pussy symbol">>
-<<RAChangeBrandDesign>>
-<</link>>
-|
-<<link "Anus symbol">>
-<<set $brandDesign = "an anus symbol">>
-<<RAChangeBrandDesign>>
-<</link>>
-|
-<<link "Penis symbol">>
-<<set $brandDesign = "a penis symbol">>
-<<RAChangeBrandDesign>>
-<</link>>
-|
-<<link "Lady">>
-<<set $brandDesign = "a lady silhouette">>
-<<RAChangeBrandDesign>>
-<</link>>
-|
-<<link "Princess">>
-<<set $brandDesign = "a princess silhouette">>
-<<RAChangeBrandDesign>>
-<</link>>
-|
-<<link "Queen">>
-<<set $brandDesign = "a queen silhouette">>
-<<RAChangeBrandDesign>>
-<</link>>
-|
-<<link "Angel">>
-<<set $brandDesign = "an angel silhouette">>
-<<RAChangeBrandDesign>>
-<</link>>
-|
-<<link "Devil">>
-<<set $brandDesign = "a devil silhouette">>
-<<RAChangeBrandDesign>>
-<</link>>
-<<if ($arcologies[0].FSSupremacist != "unset") && ($arcologies[0].FSSupremacistRace == "white") && ($activeSlave.race != $arcologies[0].FSSupremacistRace)>>
-| //FS// <<link "Swastika">>
-<<set $brandDesign = "a swastika">>
-<<RAChangeBrandDesign>>
-<</link>>
-<<elseif ($arcologies[0].FSSupremacist != "unset") && ($activeSlave.race != $arcologies[0].FSSupremacistRace)>>
-| //FS// <<link "Racial Slur">>
-<<set $brandDesign = "a racial slur">>
-<<RAChangeBrandDesign>>
-<</link>>  <</if>>
-<<if ($arcologies[0].FSSubjugationistRace == "semitic") && ($activeSlave.race == "semitic")>>
-| //FS// <<link "Star of David">>
-<<set $brandDesign = "a Star of David">>
-<<RAChangeBrandDesign>>
-<</link>>
-<<elseif ($arcologies[0].FSSubjugationist != "unset") && ($activeSlave.race == $arcologies[0].FSSubjugationistRace)>>
-| //FS// <<link "Racial Slur">>
-<<set $brandDesign = "a racial slur">>
-<<RAChangeBrandDesign>>
-<</link>>  <</if>>
-<<if ($arcologies[0].FSGenderRadicalist != "unset") || ($arcologies[0].FSGenderFundamentalist != "unset")>>
-| //FS// <<link "Gender Symbol">>
-<<set $brandDesign = "a gender symbol">>
-<<RAChangeBrandDesign>>
-<</link>>  <</if>>
-<<if ($arcologies[0].FSPaternalist != "unset")>>
-| //FS// <<link "Personal Symbol">>
-<<set $brandDesign = "her own personal symbol">>
-<<RAChangeBrandDesign>>
-<</link>>  <</if>>
-<<if ($arcologies[0].FSDegradationist != "unset")>>
-| //FS// <<link "Chain Symbol">>
-<<set $brandDesign = "a chain symbol">>
-<<RAChangeBrandDesign>>
-<</link>>  <</if>>
-<<if ($arcologies[0].FSBodyPurist != "unset")>>
-| //FS// <<link "Vitruvian Man">>
-<<set $brandDesign = "a Vitruvian man">>
-<<RAChangeBrandDesign>>
-<</link>>  <</if>>
-<<if ($arcologies[0].FSTransformationFetishist != "unset")>>
-| //FS// <<link "Most Desired Implants">>
-<<set $brandDesign = "a shortlist of desired implants">>
-<<RAChangeBrandDesign>>
-<</link>>  <</if>>
-<<if ($arcologies[0].FSYouthPreferentialist != "unset")>>
-| //FS// <<link "Virginity Status">>
-<<set $brandDesign = "her virginity status">>
-<<RAChangeBrandDesign>>
-<</link>>  <</if>>
-<<if ($arcologies[0].FSMaturityPreferentialist != "unset")>>
-| //FS// <<link "Sexual Skill Info">>
-<<set $brandDesign = "her sexual skills">>
-<<RAChangeBrandDesign>>
-<</link>>  <</if>>
-<<if ($arcologies[0].FSSlimnessEnthusiast != "unset")>>
-| //FS// <<link "Breast Ceiling">>
-<<set $brandDesign = "her absolute maximum breast size">>
-<<RAChangeBrandDesign>>
-<</link>>  <</if>>
-<<if ($arcologies[0].FSAssetExpansionist != "unset")>>
-| //FS// <<link "Breast Floor">>
-<<set $brandDesign = "her absolute minimum breast size">>
-<<RAChangeBrandDesign>>
-<</link>>  <</if>>
-<<if ($arcologies[0].FSPastoralist != "unset")>>
-| //FS// <<link "Product Quality">>
-<<set $brandDesign = "her body product quality">>
-<<RAChangeBrandDesign>>
-<</link>>  <</if>>
-<<if ($arcologies[0].FSPhysicalIdealist != "unset")>>
-| //FS// <<link "Deadlift Info">>
-<<set $brandDesign = "her deadlift record">>
-<<RAChangeBrandDesign>>
-<</link>>  <</if>>
-<<if ($arcologies[0].FSHedonisticDecadence != "unset")>>
-| //FS// <<link "Weight Record">>
-<<set $brandDesign = "her highest weigh-in">>
-<<RAChangeBrandDesign>>
-<</link>>  <</if>>
-<<if ($arcologies[0].FSHedonisticDecadence != "unset") && $PC.refreshmentType == 2>>
-| //FS// <<link "Favorite Food">>
-<<set $brandDesign = "a big helping of "+$PC.refreshment>>
-<<RAChangeBrandDesign>>
-<</link>>  <</if>>
-<<if ($arcologies[0].FSRepopulationFocus != "unset")>>
-| //FS// <<link "Birth Count">>
-<<set $brandDesign = "the number of children she has birthed">>
-<<RAChangeBrandDesign>>
-<</link>>  <</if>>
-<<if ($arcologies[0].FSChattelReligionist != "unset")>>
-| //FS// <<link "Religious Symbol">>
-<<set $brandDesign = "a religious symbol">>
-<<RAChangeBrandDesign>>
-<</link>>  <</if>>
-<<if ($arcologies[0].FSRomanRevivalist != "unset")>>
-| //FS// <<link "Republican Crest">>
-<<set $brandDesign = "a small crest of your Republic">>
-<<RAChangeBrandDesign>>
-<</link>>  <</if>>
-<<if ($arcologies[0].FSAztecRevivalist != "unset")>>
-| //FS// <<link "Seven Serpents">>
-<<set $brandDesign = "a small symbol of the Aztec gods">>
-<<RAChangeBrandDesign>>
-<</link>>  <</if>>
-<<if ($arcologies[0].FSEgyptianRevivalist != "unset")>>
-| //FS// <<link "Dynastic Sigil">>
-<<set $brandDesign = "a small sigil of your Dynasty">>
-<<RAChangeBrandDesign>>
-<</link>>  <</if>>
-<<if ($arcologies[0].FSEdoRevivalist != "unset")>>
-| //FS// <<link "Mon">>
-<<set $brandDesign = "a small image of the Shogunate's mon">>
-<<RAChangeBrandDesign>>
-<</link>>  <</if>>
-<<if ($arcologies[0].FSArabianRevivalist != "unset")>>
-| //FS// <<link "Caliphate Symbol">>
-<<set $brandDesign = "a small symbol of the Caliphate">>
-<<RAChangeBrandDesign>>
-<</link>>  <</if>>
-<<if ($arcologies[0].FSChineseRevivalist != "unset")>>
-| //FS// <<link "Imperial Seal">>
-<<set $brandDesign = "a small image of your Imperial Seal">>
-<<RAChangeBrandDesign>>
-<</link>>  <</if>>
-<br>
-Custom brand design: <<textbox "$brandDesign" $brandDesign "Body Mod Rules Assistant Settings">> //For best results, use a single word//
-
-<br><br>
-
-__Rule $r tattoos__
-<br>
-//Apply a theme at once?//
-<br>&nbsp;&nbsp;&nbsp;&nbsp;
-<<link "No default setting">>
-<<set $currentRule.lipsTat = "no default setting">>
-<<RAChangeFaceTattoos>>
-<<set $currentRule.shouldersTat = "no default setting">>
-<<RAChangeShoulderTattoos>>
-<<set $currentRule.boobsTat = "no default setting">>
-<<RAChangeChestTattoos>>
-<<set $currentRule.armsTat = "no default setting">>
-<<RAChangeArmTattoos>>
-<<set $currentRule.backTat = "no default setting">>
-<<RAChangeBackTattoos>>
-<<set $currentRule.stampTat = "no default setting">>
-<<RAChangeStampTattoos>>
-<<set $currentRule.vaginaTat = "no default setting">>
-<<RAChangeVaginaTattoos>>
-<<if $seeDicks > 0>>
-	<<set $currentRule.dickTat = "no default setting">>
-	<<RAChangeDickTattoos>>
-<</if>>
-<<set $currentRule.buttTat = "no default setting">>
-<<RAChangeButtTattoos>>
-<<set $currentRule.anusTat = "no default setting">>
-<<RAChangeAnusTattoos>>
-<<set $currentRule.legsTat = "no default setting">>
-<<RAChangeLegTattoos>>
-<</link>>
-|
-<<link "None">>
-<<set $currentRule.lipsTat = 0>>
-<<RAChangeFaceTattoos>>
-<<set $currentRule.shouldersTat = 0>>
-<<RAChangeShoulderTattoos>>
-<<set $currentRule.boobsTat = 0>>
-<<RAChangeChestTattoos>>
-<<set $currentRule.armsTat = 0>>
-<<RAChangeArmTattoos>>
-<<set $currentRule.backTat = 0>>
-<<RAChangeBackTattoos>>
-<<set $currentRule.stampTat = 0>>
-<<RAChangeStampTattoos>>
-<<set $currentRule.vaginaTat = 0>>
-<<RAChangeVaginaTattoos>>
-<<if $seeDicks > 0>>
-	<<set $currentRule.dickTat = 0>>
-	<<RAChangeDickTattoos>>
-<</if>>
-<<set $currentRule.buttTat = 0>>
-<<RAChangeButtTattoos>>
-<<set $currentRule.anusTat = 0>>
-<<RAChangeAnusTattoos>>
-<<set $currentRule.legsTat = 0>>
-<<RAChangeLegTattoos>>
-<</link>>
-|
-<<link "Tribal patterns">>
-<<set $currentRule.lipsTat = "tribal patterns">>
-<<RAChangeFaceTattoos>>
-<<set $currentRule.shouldersTat = "tribal patterns">>
-<<RAChangeShoulderTattoos>>
-<<set $currentRule.boobsTat = "tribal patterns">>
-<<RAChangeChestTattoos>>
-<<set $currentRule.armsTat = "tribal patterns">>
-<<RAChangeArmTattoos>>
-<<set $currentRule.backTat = "tribal patterns">>
-<<RAChangeBackTattoos>>
-<<set $currentRule.stampTat = "tribal patterns">>
-<<RAChangeStampTattoos>>
-<<set $currentRule.vaginaTat = "tribal patterns">>
-<<RAChangeVaginaTattoos>>
-<<if $seeDicks > 0>>
-	<<set $currentRule.dickTat = "tribal patterns">>
-	<<RAChangeDickTattoos>>
-<</if>>
-<<set $currentRule.buttTat = "tribal patterns">>
-<<RAChangeButtTattoos>>
-<<set $currentRule.anusTat = "tribal patterns">>
-<<RAChangeAnusTattoos>>
-<<set $currentRule.legsTat = "tribal patterns">>
-<<RAChangeLegTattoos>>
-<</link>>
-|
-<<link "Flowers">>
-<<set $currentRule.lipsTat = "flowers">>
-<<RAChangeFaceTattoos>>
-<<set $currentRule.shouldersTat = "flowers">>
-<<RAChangeShoulderTattoos>>
-<<set $currentRule.boobsTat = "flowers">>
-<<RAChangeChestTattoos>>
-<<set $currentRule.armsTat = "flowers">>
-<<RAChangeArmTattoos>>
-<<set $currentRule.backTat = "flowers">>
-<<RAChangeBackTattoos>>
-<<set $currentRule.stampTat = "flowers">>
-<<RAChangeStampTattoos>>
-<<set $currentRule.vaginaTat = "flowers">>
-<<RAChangeVaginaTattoos>>
-<<if $seeDicks > 0>>
-	<<set $currentRule.dickTat = "flowers">>
-	<<RAChangeDickTattoos>>
-<</if>>
-<<set $currentRule.buttTat = "flowers">>
-<<RAChangeButtTattoos>>
-<<set $currentRule.anusTat = "flowers">>
-<<RAChangeAnusTattoos>>
-<<set $currentRule.legsTat = "flowers">>
-<<RAChangeLegTattoos>>
-<</link>>
-|
-<<link "Counting">>
-<<set $currentRule.lipsTat = "counting">>
-<<RAChangeFaceTattoos>>
-<<set $currentRule.shouldersTat = "counting">>
-<<RAChangeShoulderTattoos>>
-<<set $currentRule.boobsTat = "counting">>
-<<RAChangeChestTattoos>>
-<<set $currentRule.armsTat = "counting">>
-<<RAChangeArmTattoos>>
-<<set $currentRule.backTat = "counting">>
-<<RAChangeBackTattoos>>
-<<set $currentRule.stampTat = "counting">>
-<<RAChangeStampTattoos>>
-<<set $currentRule.vaginaTat = "counting">>
-<<RAChangeVaginaTattoos>>
-<<if $seeDicks > 0>>
-	<<set $currentRule.dickTat = "counting">>
-	<<RAChangeDickTattoos>>
-<</if>>
-<<set $currentRule.buttTat = "counting">>
-<<RAChangeButtTattoos>>
-<<set $currentRule.anusTat = "counting">>
-<<RAChangeAnusTattoos>>
-<<set $currentRule.legsTat = "counting">>
-<<RAChangeLegTattoos>>
-
-
-<</link>>
-|
-<<link "Advertisements">>
-<<set $currentRule.lipsTat = "advertisements">>
-<<RAChangeFaceTattoos>>
-<<set $currentRule.shouldersTat = "advertisements">>
-<<RAChangeShoulderTattoos>>
-<<set $currentRule.boobsTat = "advertisements">>
-<<RAChangeChestTattoos>>
-<<set $currentRule.armsTat = "advertisements">>
-<<RAChangeArmTattoos>>
-<<set $currentRule.backTat = "advertisements">>
-<<RAChangeBackTattoos>>
-<<set $currentRule.stampTat = "advertisements">>
-<<RAChangeStampTattoos>>
-<<set $currentRule.vaginaTat = "advertisements">>
-<<RAChangeVaginaTattoos>>
-<<if $seeDicks > 0>>
-	<<set $currentRule.dickTat = "advertisements">>
-	<<RAChangeDickTattoos>>
-<</if>>
-<<set $currentRule.buttTat = "advertisements">>
-<<RAChangeButtTattoos>>
-<<set $currentRule.anusTat = "advertisements">>
-<<RAChangeAnusTattoos>>
-<<set $currentRule.legsTat = "advertisements">>
-<<RAChangeLegTattoos>>
-<</link>>
-|
-<<link "Rude words">>
-<<set $currentRule.lipsTat = "rude words">>
-<<RAChangeFaceTattoos>>
-<<set $currentRule.shouldersTat = "rude words">>
-<<RAChangeShoulderTattoos>>
-<<set $currentRule.boobsTat = "rude words">>
-<<RAChangeChestTattoos>>
-<<set $currentRule.armsTat = "rude words">>
-<<RAChangeArmTattoos>>
-<<set $currentRule.backTat = "rude words">>
-<<RAChangeBackTattoos>>
-<<set $currentRule.stampTat = "rude words">>
-<<RAChangeStampTattoos>>
-<<set $currentRule.vaginaTat = "rude words">>
-<<RAChangeVaginaTattoos>>
-<<if $seeDicks > 0>>
-	<<set $currentRule.dickTat = "rude words">>
-	<<RAChangeDickTattoos>>
-<</if>>
-<<set $currentRule.buttTat = "rude words">>
-<<RAChangeButtTattoos>>
-<<set $currentRule.anusTat = "rude words">>
-<<RAChangeAnusTattoos>>
-<<set $currentRule.legsTat = "rude words">>
-<<RAChangeLegTattoos>>
-<</link>>
-|
-<<link "Degradation">>
-<<set $currentRule.lipsTat = "degradation">>
-<<RAChangeFaceTattoos>>
-<<set $currentRule.shouldersTat = "degradation">>
-<<RAChangeShoulderTattoos>>
-<<set $currentRule.boobsTat = "degradation">>
-<<RAChangeChestTattoos>>
-<<set $currentRule.armsTat = "degradation">>
-<<RAChangeArmTattoos>>
-<<set $currentRule.backTat = "degradation">>
-<<RAChangeBackTattoos>>
-<<set $currentRule.stampTat = "degradation">>
-<<RAChangeStampTattoos>>
-<<set $currentRule.vaginaTat = "degradation">>
-<<RAChangeVaginaTattoos>>
-<<if $seeDicks > 0>>
-	<<set $currentRule.dickTat = "degradation">>
-	<<RAChangeDickTattoos>>
-<</if>>
-<<set $currentRule.buttTat = "degradation">>
-<<RAChangeButtTattoos>>
-<<set $currentRule.anusTat = "degradation">>
-<<RAChangeAnusTattoos>>
-<<set $currentRule.legsTat = "degradation">>
-<<RAChangeLegTattoos>>
-<</link>>
-|
-<<link "Bovine patterns">>
-<<set $currentRule.lipsTat = "bovine patterns">>
-<<RAChangeFaceTattoos>>
-<<set $currentRule.shouldersTat = "bovine patterns">>
-<<RAChangeShoulderTattoos>>
-<<set $currentRule.boobsTat = "bovine patterns">>
-<<RAChangeChestTattoos>>
-<<set $currentRule.armsTat = "bovine patterns">>
-<<RAChangeArmTattoos>>
-<<set $currentRule.backTat = "bovine patterns">>
-<<RAChangeBackTattoos>>
-<<set $currentRule.stampTat = "bovine patterns">>
-<<RAChangeStampTattoos>>
-<<set $currentRule.vaginaTat = "bovine patterns">>
-<<RAChangeVaginaTattoos>>
-<<if $seeDicks > 0>>
-	<<set $currentRule.dickTat = "bovine patterns">>
-	<<RAChangeDickTattoos>>
-<</if>>
-<<set $currentRule.buttTat = "bovine patterns">>
-<<RAChangeButtTattoos>>
-<<set $currentRule.anusTat = "bovine patterns">>
-<<RAChangeAnusTattoos>>
-<<set $currentRule.legsTat = "bovine patterns">>
-<<RAChangeLegTattoos>>
-<</link>>
-|
-<<link "Asian art">>
-
-<<set $currentRule.lipsTat = "Asian art">>
-<<RAChangeFaceTattoos>>
-<<set $currentRule.shouldersTat = "Asian art">>
-<<RAChangeShoulderTattoos>>
-<<set $currentRule.boobsTat = "Asian art">>
-<<RAChangeChestTattoos>>
-<<set $currentRule.armsTat = "Asian art">>
-<<RAChangeArmTattoos>>
-<<set $currentRule.backTat = "Asian art">>
-<<RAChangeBackTattoos>>
-<<set $currentRule.stampTat = "Asian art">>
-<<RAChangeStampTattoos>>
-<<set $currentRule.vaginaTat = "Asian art">>
-<<RAChangeVaginaTattoos>>
-<<if $seeDicks > 0>>
-	<<set $currentRule.dickTat = "Asian art">>
-	<<RAChangeDickTattoos>>
-<</if>>
-<<set $currentRule.buttTat = "Asian art">>
-<<RAChangeButtTattoos>>
-<<set $currentRule.anusTat = "no default setting">>/* Slave may be an enormous asshole, but not big enough for an Asian masterpiece*/
-<<RAChangeAnusTattoos>>
-<<set $currentRule.legsTat = "Asian art">>
-<<RAChangeLegTattoos>>
-<</link>>
-|
-<<link "Scenes">>
-<<set $currentRule.lipsTat = "no default setting">> /* No face option for Scenes */
-<<RAChangeFaceTattoos>>
-<<set $currentRule.shouldersTat = "scenes">>
-<<RAChangeShoulderTattoos>>
-<<set $currentRule.boobsTat = "scenes">>
-<<RAChangeChestTattoos>>
-<<set $currentRule.armsTat = "scenes">>
-<<RAChangeArmTattoos>>
-<<set $currentRule.backTat = "scenes">>
-<<RAChangeBackTattoos>>
-<<set $currentRule.stampTat = "scenes">>
-<<RAChangeStampTattoos>>
-<<set $currentRule.vaginaTat = "scenes">>
-<<RAChangeVaginaTattoos>>
-<<if $seeDicks > 0>>
-	<<set $currentRule.dickTat = "no default setting">>/* No room on dick for a scene, no matter how big slave thinks they are */
-	<<RAChangeDickTattoos>>
-<</if>>
-<<set $currentRule.buttTat = "scenes">>
-<<RAChangeButtTattoos>>
-<<set $currentRule.anusTat = "no default setting">>/* Slave may be an enormous asshole, but not big enough for a whole scene, you cad */
-<<RAChangeAnusTattoos>>
-<<set $currentRule.legsTat = "scenes">>
-<<RAChangeLegTattoos>>
-<</link>>
-|
-<<link "Sacrilege">>
-<<set $currentRule.lipsTat = "sacrilege">>
-<<RAChangeFaceTattoos>>
-<<set $currentRule.shouldersTat = "sacrilege">>
-<<RAChangeShoulderTattoos>>
-<<set $currentRule.boobsTat = "sacrilege">>
-<<RAChangeChestTattoos>>
-<<set $currentRule.armsTat = "sacrilege">>
-<<RAChangeArmTattoos>>
-<<set $currentRule.backTat = "sacrilege">>
-<<RAChangeBackTattoos>>
-<<set $currentRule.stampTat = "sacrilege">>
-<<RAChangeStampTattoos>>
-<<set $currentRule.vaginaTat = "sacrilege">>
-<<RAChangeVaginaTattoos>>
-<<if $seeDicks > 0>>
-	<<set $currentRule.dickTat = "sacrilege">>
-	<<RAChangeDickTattoos>>
-<</if>>
-<<set $currentRule.buttTat = "sacrilege">>
-<<RAChangeButtTattoos>>
-<<set $currentRule.anusTat = "sacrilege">>
-<<RAChangeAnusTattoos>>
-<<set $currentRule.legsTat = "sacrilege">>
-<<RAChangeLegTattoos>>
-<</link>>
-|
-<<link "Sacrament">>
-<<set $currentRule.lipsTat = "sacrament">>
-<<RAChangeFaceTattoos>>
-<<set $currentRule.shouldersTat = "sacrament">>
-<<RAChangeShoulderTattoos>>
-<<set $currentRule.boobsTat = "sacrament">>
-<<RAChangeChestTattoos>>
-<<set $currentRule.armsTat = "sacrament">>
-<<RAChangeArmTattoos>>
-<<set $currentRule.backTat = "sacrament">>
-<<RAChangeBackTattoos>>
-<<set $currentRule.stampTat = "sacrament">>
-<<RAChangeStampTattoos>>
-<<set $currentRule.vaginaTat = "sacrament">>
-<<RAChangeVaginaTattoos>>
-<<if $seeDicks > 0>>
-	<<set $currentRule.dickTat = "sacrament">>
-	<<RAChangeDickTattoos>>
-<</if>>
-<<set $currentRule.buttTat = "sacrament">>
-<<RAChangeButtTattoos>>
-<<set $currentRule.anusTat = "sacrament">>
-<<RAChangeAnusTattoos>>
-<<set $currentRule.legsTat = "sacrament">>
-<<RAChangeLegTattoos>>
-<</link>>
-|
-<<link "Possessive">>
-<<set $currentRule.lipsTat = "possessive">>
-<<RAChangeFaceTattoos>>
-<<set $currentRule.shouldersTat = "possessive">>
-<<RAChangeShoulderTattoos>>
-<<set $currentRule.boobsTat = "possessive">>
-<<RAChangeChestTattoos>>
-<<set $currentRule.armsTat = "possessive">>
-<<RAChangeArmTattoos>>
-<<set $currentRule.backTat = "possessive">>
-<<RAChangeBackTattoos>>
-<<set $currentRule.stampTat = "possessive">>
-<<RAChangeStampTattoos>>
-<<set $currentRule.vaginaTat = "possessive">>
-<<RAChangeVaginaTattoos>>
-<<if $seeDicks > 0>>
-	<<set $currentRule.dickTat = "possessive">>
-	<<RAChangeDickTattoos>>
-<</if>>
-<<set $currentRule.buttTat = "possessive">>
-<<RAChangeButtTattoos>>
-<<set $currentRule.anusTat = "possessive">>
-<<RAChangeAnusTattoos>>
-<<set $currentRule.legsTat = "possessive">>
-<<RAChangeLegTattoos>>
-<</link>>
-|
-<<link "Paternalist">>
-<<set $currentRule.lipsTat = "paternalist">>
-<<RAChangeFaceTattoos>>
-<<set $currentRule.shouldersTat = "paternalist">>
-<<RAChangeShoulderTattoos>>
-<<set $currentRule.boobsTat = "paternalist">>
-<<RAChangeChestTattoos>>
-<<set $currentRule.armsTat = "paternalist">>
-<<RAChangeArmTattoos>>
-<<set $currentRule.backTat = "paternalist">>
-<<RAChangeBackTattoos>>
-<<set $currentRule.stampTat = "paternalist">>
-<<RAChangeStampTattoos>>
-<<set $currentRule.vaginaTat = "paternalist">>
-<<RAChangeVaginaTattoos>>
-<<if $seeDicks > 0>>
-	<<set $currentRule.dickTat = "paternalist">>
-	<<RAChangeDickTattoos>>
-<</if>>
-<<set $currentRule.buttTat = "paternalist">>
-<<RAChangeButtTattoos>>
-<<set $currentRule.anusTat = "paternalist">>
-<<RAChangeAnusTattoos>>
-<<set $currentRule.legsTat = "paternalist">>
-<<RAChangeLegTattoos>>
-<</link>>
-
-<br>
-
-Facial tattoos: ''
-<span id = "facetattoo">
-<<if $currentRule.lipsTat == 0>>none<<else>>$currentRule.lipsTat<</if>>.
-</span>
-'' <br>&nbsp;&nbsp;&nbsp;&nbsp;
-<<link "No default setting">>
-<<set $currentRule.lipsTat = "no default setting">>
-<<RAChangeFaceTattoos>>
-<</link>>
-|
-<<link "None">>
-<<set $currentRule.lipsTat = 0>>
-<<RAChangeFaceTattoos>>
-<</link>>
-|
-<<link "Tribal patterns">>
-<<set $currentRule.lipsTat = "tribal patterns">>
-<<RAChangeFaceTattoos>>
-<</link>>
-|
-<<link "Flowers">>
-<<set $currentRule.lipsTat = "flowers">>
-<<RAChangeFaceTattoos>>
-<</link>>
-|
-<<link "Counting">>
-<<set $currentRule.lipsTat = "counting">>
-<<RAChangeFaceTattoos>>
-<</link>>
-|
-<<link "Advertisements">>
-<<set $currentRule.lipsTat = "advertisements">>
-<<RAChangeFaceTattoos>>
-<</link>>
-|
-<<link "Rude words">>
-<<set $currentRule.lipsTat = "rude words">>
-<<RAChangeFaceTattoos>>
-<</link>>
-|
-<<link "Degradation">>
-<<set $currentRule.lipsTat = "degradation">>
-<<RAChangeFaceTattoos>>
-<</link>>
-|
-<<link "Bovine patterns">>
-<<set $currentRule.lipsTat = "bovine patterns">>
-<<RAChangeFaceTattoos>>
-<</link>>
-|
-<<link "Asian art">>
-<<set $currentRule.lipsTat = "Asian art">>
-<<RAChangeFaceTattoos>>
-<</link>>
-|
-<<link "Permanent makeup">>
-<<set $currentRule.lipsTat = "permanent makeup">>
-<<RAChangeFaceTattoos>>
-<</link>>
-|
-<<link "Sacrament">>
-<<set $currentRule.lipsTat = "sacrament">>
-<<RAChangeFaceTattoos>>
-<</link>>
-|
-<<link "Sacrilege">>
-<<set $currentRule.lipsTat = "sacrilege">>
-<<RAChangeFaceTattoos>>
-<</link>>
-|
-<<link "Possessive">>
-<<set $currentRule.lipsTat = "possessive">>
-<<RAChangeFaceTattoos>>
-<</link>>
-|
-<<link "Paternalist">>
-<<set $currentRule.lipsTat = "paternalist">>
-<<RAChangeFaceTattoos>>
-<</link>>
-
-<br>
-
-Shoulder tattoos: ''
-<span id = "shouldertattoo">
-<<if $currentRule.shouldersTat == 0>>none<<else>>$currentRule.shouldersTat<</if>>.
-</span>
-'' <br>&nbsp;&nbsp;&nbsp;&nbsp;
-<<link "No default setting">>
-<<set $currentRule.shouldersTat = "no default setting">>
-<<RAChangeShoulderTattoos>>
-<</link>>
-|
-<<link "None">>
-<<set $currentRule.shouldersTat = 0>>
-<<RAChangeShoulderTattoos>>
-<</link>>
-|
-<<link "Tribal patterns">>
-<<set $currentRule.shouldersTat = "tribal patterns">>
-<<RAChangeShoulderTattoos>>
-<</link>>
-|
-<<link "Flowers">>
-<<set $currentRule.shouldersTat = "flowers">>
-<<RAChangeShoulderTattoos>>
-<</link>>
-|
-<<link "Counting">>
-<<set $currentRule.shouldersTat = "counting">>
-<<RAChangeShoulderTattoos>>
-<</link>>
-|
-<<link "Advertisements">>
-<<set $currentRule.shouldersTat = "advertisements">>
-<<RAChangeShoulderTattoos>>
-<</link>>
-|
-<<link "Rude words">>
-<<set $currentRule.shouldersTat = "rude words">>
-<<RAChangeShoulderTattoos>>
-<</link>>
-|
-<<link "Degradation">>
-<<set $currentRule.shouldersTat = "degradation">>
-<<RAChangeShoulderTattoos>>
-<</link>>
-|
-<<link "Bovine patterns">>
-<<set $currentRule.shouldersTat = "bovine patterns">>
-<<RAChangeShoulderTattoos>>
-<</link>>
-|
-<<link "Asian art">>
-<<set $currentRule.shouldersTat = "Asian art">>
-<<RAChangeShoulderTattoos>>
-<</link>>
-|
-<<link "Scenes">>
-<<set $currentRule.shouldersTat = "scenes">>
-<<RAChangeShoulderTattoos>>
-<</link>>
-|
-<<link "Sacrament">>
-<<set $currentRule.shouldersTat = "sacrament">>
-<<RAChangeShoulderTattoos>>
-<</link>>
-|
-<<link "Sacrilege">>
-<<set $currentRule.shouldersTat = "sacrilege">>
-<<RAChangeShoulderTattoos>>
-<</link>>
-|
-<<link "Possessive">>
-<<set $currentRule.shouldersTat = "possessive">>
-<<RAChangeShoulderTattoos>>
-<</link>>
-|
-<<link "Paternalist">>
-<<set $currentRule.shouldersTat = "paternalist">>
-<<RAChangeShoulderTattoos>>
-<</link>>
-
-<br>
-
-Chest tattoos: ''
-<span id = "chesttattoo">
-<<if $currentRule.boobsTat == 0>>none<<else>>$currentRule.boobsTat<</if>>.
-</span>
-'' <br>&nbsp;&nbsp;&nbsp;&nbsp;
-
-<<link "No default setting">>
-<<set $currentRule.boobsTat = "no default setting">>
-<<RAChangeChestTattoos>>
-<</link>>
-|
-<<link "None">>
-<<set $currentRule.boobsTat = 0>>
-<<RAChangeChestTattoos>>
-<</link>>
-|
-<<link "Tribal patterns">>
-<<set $currentRule.boobsTat = "tribal patterns">>
-<<RAChangeChestTattoos>>
-<</link>>
-|
-<<link "Flowers">>
-<<set $currentRule.boobsTat = "flowers">>
-<<RAChangeChestTattoos>>
-<</link>>
-|
-<<link "Counting">>
-<<set $currentRule.boobsTat = "counting">>
-<<RAChangeChestTattoos>>
-<</link>>
-|
-<<link "Advertisements">>
-<<set $currentRule.boobsTat = "advertisements">>
-<<RAChangeChestTattoos>>
-<</link>>
-|
-<<link "Rude words">>
-<<set $currentRule.boobsTat = "rude words">>
-<<RAChangeChestTattoos>>
-<</link>>
-|
-<<link "Degradation">>
-<<set $currentRule.boobsTat = "degradation">>
-<<RAChangeChestTattoos>>
-<</link>>
-|
-<<link "Bovine patterns">>
-<<set $currentRule.boobsTat = "bovine patterns">>
-<<RAChangeChestTattoos>>
-<</link>>
-|
-<<link "Asian art">>
-<<set $currentRule.boobsTat = "Asian art">>
-<<RAChangeChestTattoos>>
-<</link>>
-|
-<<link "Scenes">>
-<<set $currentRule.boobsTat = "scenes">>
-<<RAChangeChestTattoos>>
-<</link>>
-|
-<<link "Sacrament">>
-<<set $currentRule.boobsTat = "sacrament">>
-<<RAChangeChestTattoos>>
-<</link>>
-|
-<<link "Sacrilege">>
-<<set $currentRule.boobsTat = "sacrilege">>
-<<RAChangeChestTattoos>>
-<</link>>
-|
-<<link "Possessive">>
-<<set $currentRule.boobsTat = "possessive">>
-<<RAChangeChestTattoos>>
-<</link>>
-|
-<<link "Paternalist">>
-<<set $currentRule.boobsTat = "paternalist">>
-<<RAChangeChestTattoos>>
-<</link>>
-
-<br>
-
-Arm tattoos: ''
-<span id = "armtattoo">
-<<if $currentRule.armsTat == 0>>none<<else>>$currentRule.armsTat<</if>>.
-</span>
-'' <br>&nbsp;&nbsp;&nbsp;&nbsp;
-<<link "No default setting">>
-<<set $currentRule.armsTat = "no default setting">>
-<<RAChangeArmTattoos>>
-<</link>>
-|
-<<link "None">>
-<<set $currentRule.armsTat = 0>>
-<<RAChangeArmTattoos>>
-<</link>>
-|
-<<link "Tribal patterns">>
-<<set $currentRule.armsTat = "tribal patterns">>
-<<RAChangeArmTattoos>>
-<</link>>
-|
-<<link "Flowers">>
-<<set $currentRule.armsTat = "flowers">>
-<<RAChangeArmTattoos>>
-<</link>>
-|
-<<link "Counting">>
-<<set $currentRule.armsTat = "counting">>
-<<RAChangeArmTattoos>>
-<</link>>
-|
-<<link "Advertisements">>
-<<set $currentRule.armsTat = "advertisements">>
-<<RAChangeArmTattoos>>
-<</link>>
-|
-<<link "Rude words">>
-<<set $currentRule.armsTat = "rude words">>
-<<RAChangeArmTattoos>>
-<</link>>
-|
-<<link "Degradation">>
-<<set $currentRule.armsTat = "degradation">>
-<<RAChangeArmTattoos>>
-<</link>>
-|
-<<link "Bovine patterns">>
-<<set $currentRule.armsTat = "bovine patterns">>
-<<RAChangeArmTattoos>>
-<</link>>
-|
-<<link "Asian art">>
-<<set $currentRule.armsTat = "Asian art">>
-<<RAChangeArmTattoos>>
-<</link>>
-|
-<<link "Scenes">>
-<<set $currentRule.armsTat = "scenes">>
-<<RAChangeArmTattoos>>
-<</link>>
-|
-<<link "Sacrament">>
-<<set $currentRule.armsTat = "sacrament">>
-<<RAChangeArmTattoos>>
-<</link>>
-|
-<<link "Sacrilege">>
-<<set $currentRule.armsTat = "sacrilege">>
-<<RAChangeArmTattoos>>
-<</link>>
-|
-<<link "Possessive">>
-<<set $currentRule.armsTat = "possessive">>
-<<RAChangeArmTattoos>>
-<</link>>
-|
-<<link "Paternalist">>
-<<set $currentRule.armsTat = "paternalist">>
-<<RAChangeArmTattoos>>
-<</link>>
-
-<br>
-
-Upper back tattoo: ''
-<span id = "backtattoo">
-<<if $currentRule.backTat == 0>>none<<else>>$currentRule.backTat<</if>>.
-</span>
-'' <br>&nbsp;&nbsp;&nbsp;&nbsp;
-<<link "No default setting">>
-<<set $currentRule.backTat = "no default setting">>
-<<RAChangeBackTattoos>>
-<</link>>
-|
-<<link "None">>
-<<set $currentRule.backTat = 0>>
-<<RAChangeBackTattoos>>
-<</link>>
-|
-<<link "Tribal patterns">>
-<<set $currentRule.backTat = "tribal patterns">>
-<<RAChangeBackTattoos>>
-<</link>>
-|
-<<link "Flowers">>
-<<set $currentRule.backTat = "flowers">>
-<<RAChangeBackTattoos>>
-<</link>>
-|
-<<link "Counting">>
-<<set $currentRule.backTat = "counting">>
-<<RAChangeBackTattoos>>
-<</link>>
-|
-<<link "Advertisements">>
-<<set $currentRule.backTat = "advertisements">>
-<<RAChangeBackTattoos>>
-<</link>>
-|
-<<link "Rude words">>
-<<set $currentRule.backTat = "rude words">>
-<<RAChangeBackTattoos>>
-<</link>>
-|
-<<link "Degradation">>
-<<set $currentRule.backTat = "degradation">>
-<<RAChangeBackTattoos>>
-<</link>>
-|
-<<link "Bovine patterns">>
-<<set $currentRule.backTat = "bovine patterns">>
-<<RAChangeBackTattoos>>
-<</link>>
-|
-<<link "Asian art">>
-<<set $currentRule.backTat = "Asian art">>
-<<RAChangeBackTattoos>>
-<</link>>
-|
-<<link "Scenes">>
-<<set $currentRule.backTat = "scenes">>
-<<RAChangeBackTattoos>>
-<</link>>
-|
-<<link "Sacrament">>
-<<set $currentRule.backTat = "sacrament">>
-<<RAChangeBackTattoos>>
-<</link>>
-|
-<<link "Sacrilege">>
-<<set $currentRule.backTat = "sacrilege">>
-<<RAChangeBackTattoos>>
-<</link>>
-|
-<<link "Possessive">>
-<<set $currentRule.backTat = "possessive">>
-<<RAChangeBackTattoos>>
-<</link>>
-|
-<<link "Paternalist">>
-<<set $currentRule.backTat = "paternalist">>
-<<RAChangeBackTattoos>>
-<</link>>
-
-<br>
-
-Lower back tattoo: ''
-<span id = "stamptattoo">
-<<if $currentRule.stampTat == 0>>none<<else>>$currentRule.stampTat<</if>>.
-</span>
-'' <br>&nbsp;&nbsp;&nbsp;&nbsp;
-
-<<link "No default setting">>
-<<set $currentRule.stampTat = "no default setting">>
-<<RAChangeStampTattoos>>
-<</link>>
-|
-<<link "None">>
-<<set $currentRule.stampTat = 0>>
-<<RAChangeStampTattoos>>
-<</link>>
-|
-<<link "Tribal patterns">>
-<<set $currentRule.stampTat = "tribal patterns">>
-<<RAChangeStampTattoos>>
-<</link>>
-|
-<<link "Flowers">>
-<<set $currentRule.stampTat = "flowers">>
-<<RAChangeStampTattoos>>
-<</link>>
-|
-<<link "Counting">>
-<<set $currentRule.stampTat = "counting">>
-<<RAChangeStampTattoos>>
-<</link>>
-|
-<<link "Advertisements">>
-<<set $currentRule.stampTat = "advertisements">>
-<<RAChangeStampTattoos>>
-<</link>>
-|
-<<link "Rude words">>
-<<set $currentRule.stampTat = "rude words">>
-<<RAChangeStampTattoos>>
-<</link>>
-|
-<<link "Degradation">>
-<<set $currentRule.stampTat = "degradation">>
-<<RAChangeStampTattoos>>
-<</link>>
-|
-<<link "Bovine patterns">>
-<<set $currentRule.stampTat = "bovine patterns">>
-<<RAChangeStampTattoos>>
-<</link>>
-|
-<<link "Asian art">>
-<<set $currentRule.stampTat = "Asian art">>
-<<RAChangeStampTattoos>>
-<</link>>
-|
-<<link "Scenes">>
-<<set $currentRule.stampTat = "scenes">>
-<<RAChangeStampTattoos>>
-<</link>>
-|
-<<link "Sacrament">>
-<<set $currentRule.stampTat = "sacrament">>
-<<RAChangeStampTattoos>>
-<</link>>
-|
-<<link "Sacrilege">>
-<<set $currentRule.stampTat = "sacrilege">>
-<<RAChangeStampTattoos>>
-<</link>>
-|
-<<link "Possessive">>
-<<set $currentRule.stampTat = "possessive">>
-<<RAChangeStampTattoos>>
-<</link>>
-|
-<<link "Paternalist">>
-<<set $currentRule.stampTat = "paternalist">>
-<<RAChangeStampTattoos>>
-<</link>>
-
-<br>
-
-Abdominal tattoo: ''
-<span id = "vaginatattoo">
-<<if $currentRule.vaginaTat == 0>>none<<else>>$currentRule.vaginaTat<</if>>.
-</span>
-'' <br>&nbsp;&nbsp;&nbsp;&nbsp;
-<<link "No default setting">>
-<<set $currentRule.vaginaTat = "no default setting">>
-<<RAChangeVaginaTattoos>>
-<</link>>
-|
-<<link "None">>
-<<set $currentRule.vaginaTat = 0>>
-<<RAChangeVaginaTattoos>>
-<</link>>
-|
-<<link "Tribal patterns">>
-<<set $currentRule.vaginaTat = "tribal patterns">>
-<<RAChangeVaginaTattoos>>
-<</link>>
-|
-<<link "Flowers">>
-<<set $currentRule.vaginaTat = "flowers">>
-<<RAChangeVaginaTattoos>>
-<</link>>
-|
-<<link "Counting">>
-<<set $currentRule.vaginaTat = "counting">>
-<<RAChangeVaginaTattoos>>
-<</link>>
-|
-<<link "Advertisements">>
-<<set $currentRule.vaginaTat = "advertisements">>
-<<RAChangeVaginaTattoos>>
-<</link>>
-|
-<<link "Rude words">>
-<<set $currentRule.vaginaTat = "rude words">>
-<<RAChangeVaginaTattoos>>
-<</link>>
-|
-<<link "Degradation">>
-<<set $currentRule.vaginaTat = "degradation">>
-<<RAChangeVaginaTattoos>>
-<</link>>
-|
-<<link "Bovine patterns">>
-<<set $currentRule.vaginaTat = "bovine patterns">>
-<<RAChangeVaginaTattoos>>
-<</link>>
-|
-<<link "Asian art">>
-<<set $currentRule.vaginaTat = "Asian art">>
-<<RAChangeVaginaTattoos>>
-<</link>>
-|
-<<link "Scenes">>
-<<set $currentRule.vaginaTat = "scenes">>
-<<RAChangeVaginaTattoos>>
-<</link>>
-|
-<<link "Sacrament">>
-<<set $currentRule.vaginaTat = "sacrament">>
-<<RAChangeVaginaTattoos>>
-<</link>>
-|
-<<link "Sacrilege">>
-<<set $currentRule.vaginaTat = "sacrilege">>
-<<RAChangeVaginaTattoos>>
-<</link>>
-|
-<<link "Possessive">>
-<<set $currentRule.vaginaTat = "possessive">>
-<<RAChangeVaginaTattoos>>
-<</link>>
-|
-<<link "Paternalist">>
-<<set $currentRule.vaginaTat = "paternalist">>
-<<RAChangeVaginaTattoos>>
-<</link>>
-
-<<if $seeDicks > 0>>
-<br>
-Dick tattoo: ''
-<span id = "dicktattoo">
-<<if $currentRule.dickTat == 0>>none<<else>>$currentRule.dickTat<</if>>.
-</span>
-'' <br>&nbsp;&nbsp;&nbsp;&nbsp;
-<<link "No default setting">>
-<<set $currentRule.dickTat = "no default setting">>
-<<RAChangeDickTattoos>>
-<</link>>
-|
-<<link "None">>
-<<set $currentRule.dickTat = 0>>
-<<RAChangeDickTattoos>>
-<</link>>
-|
-<<link "Tribal patterns">>
-<<set $currentRule.dickTat = "tribal patterns">>
-<<RAChangeDickTattoos>>
-<</link>>
-|
-<<link "Flowers">>
-<<set $currentRule.dickTat = "flowers">>
-<<RAChangeDickTattoos>>
-<</link>>
-|
-<<link "Counting">>
-<<set $currentRule.dickTat = "counting">>
-<<RAChangeDickTattoos>>
-<</link>>
-|
-<<link "Advertisements">>
-<<set $currentRule.dickTat = "advertisements">>
-<<RAChangeDickTattoos>>
-<</link>>
-|
-<<link "Rude words">>
-<<set $currentRule.dickTat = "rude words">>
-<<RAChangeDickTattoos>>
-<</link>>
-|
-<<link "Degradation">>
-<<set $currentRule.dickTat = "degradation">>
-<<RAChangeDickTattoos>>
-<</link>>
-|
-<<link "Bovine patterns">>
-<<set $currentRule.dickTat = "bovine patterns">>
-<<RAChangeDickTattoos>>
-<</link>>
-|
-<<link "Asian art">>
-<<set $currentRule.dickTat = "Asian art">>
-<<RAChangeDickTattoos>>
-<</link>>
-|
-<<link "Sacrament">>
-<<set $currentRule.dickTat = "sacrament">>
-<<RAChangeDickTattoos>>
-<</link>>
-|
-<<link "Sacrilege">>
-<<set $currentRule.dickTat = "sacrilege">>
-<<RAChangeDickTattoos>>
-<</link>>
-|
-<<link "Possessive">>
-<<set $currentRule.dickTat = "possessive">>
-<<RAChangeDickTattoos>>
-<</link>>
-|
-<<link "Paternalist">>
-<<set $currentRule.dickTat = "paternalist">>
-<<RAChangeDickTattoos>>
-<</link>>
-<</if>>
-
-<br>
-
-
-Buttock tattoos: ''
-<span id = "butttattoo">
-<<if $currentRule.buttTat == 0>>none<<else>>$currentRule.buttTat<</if>>.
-</span>
-'' <br>&nbsp;&nbsp;&nbsp;&nbsp;
-<<link "No default setting">>
-<<set $currentRule.buttTat = "no default setting">>
-<<RAChangeButtTattoos>>
-<</link>>
-|
-<<link "None">>
-<<set $currentRule.buttTat = 0>>
-<<RAChangeButtTattoos>>
-<</link>>
-|
-<<link "Tribal patterns">>
-<<set $currentRule.buttTat = "tribal patterns">>
-<<RAChangeButtTattoos>>
-<</link>>
-|
-<<link "Flowers">>
-<<set $currentRule.buttTat = "flowers">>
-<<RAChangeButtTattoos>>
-<</link>>
-|
-<<link "Counting">>
-<<set $currentRule.buttTat = "counting">>
-<<RAChangeButtTattoos>>
-<</link>>
-|
-<<link "Advertisements">>
-<<set $currentRule.buttTat = "advertisements">>
-<<RAChangeButtTattoos>>
-<</link>>
-|
-<<link "Rude words">>
-<<set $currentRule.buttTat = "rude words">>
-<<RAChangeButtTattoos>>
-<</link>>
-|
-<<link "Degradation">>
-<<set $currentRule.buttTat = "degradation">>
-<<RAChangeButtTattoos>>
-<</link>>
-|
-<<link "Bovine patterns">>
-<<set $currentRule.buttTat = "bovine patterns">>
-<<RAChangeButtTattoos>>
-<</link>>
-|
-<<link "Asian art">>
-<<set $currentRule.buttTat = "Asian art">>
-<<RAChangeButtTattoos>>
-<</link>>
-|
-<<link "Scenes">>
-<<set $currentRule.buttTat = "scenes">>
-<<RAChangeButtTattoos>>
-<</link>>
-|
-<<link "Sacrament">>
-<<set $currentRule.buttTat = "sacrament">>
-<<RAChangeButtTattoos>>
-<</link>>
-|
-<<link "Sacrilege">>
-<<set $currentRule.buttTat = "sacrilege">>
-<<RAChangeButtTattoos>>
-<</link>>
-|
-<<link "Possessive">>
-<<set $currentRule.buttTat = "possessive">>
-<<RAChangeButtTattoos>>
-<</link>>
-|
-<<link "Paternalist">>
-<<set $currentRule.buttTat = "paternalist">>
-<<RAChangeButtTattoos>>
-<</link>>
-
-<br>
-
-Anal tattoo or bleaching: ''
-<span id = "anustattoo">
-<<if $currentRule.anusTat == 0>>none<<else>>$currentRule.anusTat<</if>>.
-</span>
-'' <br>&nbsp;&nbsp;&nbsp;&nbsp;
-<<link "No default setting">>
-<<set $currentRule.anusTat = "no default setting">>
-<<RAChangeAnusTattoos>>
-<</link>>
-|
-<<link "None">>
-<<set $currentRule.anusTat = 0>>
-<<RAChangeAnusTattoos>>
-<</link>>
-|
-<<link "Tribal pattern">>
-<<set $currentRule.anusTat = "tribal patterns">>
-<<RAChangeAnusTattoos>>
-<</link>>
-|
-<<link "Flowers">>
-<<set $currentRule.anusTat = "flowers">>
-<<RAChangeAnusTattoos>>
-<</link>>
-|
-<<link "Counting">>
-<<set $currentRule.anusTat = "counting">>
-<<RAChangeAnusTattoos>>
-<</link>>
-|
-<<link "Advertisements">>
-<<set $currentRule.anusTat = "advertisements">>
-<<RAChangeAnusTattoos>>
-<</link>>
-|
-<<link "Rude words">>
-<<set $currentRule.anusTat = "rude words">>
-<<RAChangeAnusTattoos>>
-<</link>>
-|
-<<link "Degradation">>
-<<set $currentRule.anusTat = "degradation">>
-<<RAChangeAnusTattoos>>
-<</link>>
-|
-<<link "Bovine patterns">>
-<<set $currentRule.anusTat = "bovine patterns">>
-<<RAChangeAnusTattoos>>
-<</link>>
-|
-<<link "Bleached">>
-<<set $currentRule.anusTat = "bleached">>
-<<RAChangeAnusTattoos>>
-<</link>>
-|
-<<link "Sacrament">>
-<<set $currentRule.anusTat = "sacrament">>
-<<RAChangeAnusTattoos>>
-<</link>>
-|
-<<link "Sacrilege">>
-<<set $currentRule.anusTat = "sacrilege">>
-<<RAChangeAnusTattoos>>
-<</link>>
-|
-<<link "Possessive">>
-<<set $currentRule.anusTat = "possessive">>
-<<RAChangeAnusTattoos>>
-<</link>>
-|
-<<link "Paternalist">>
-<<set $currentRule.anusTat = "paternalist">>
-<<RAChangeAnusTattoos>>
-<</link>>
-
-<br>
-
-Leg tattoos: ''
-<span id = "legtattoo">
-<<if $currentRule.legsTat == 0>>none<<else>>$currentRule.legsTat<</if>>.
-</span>
-'' <br>&nbsp;&nbsp;&nbsp;&nbsp;
-<<link "No default setting">>
-<<set $currentRule.legsTat = "no default setting">>
-<<RAChangeLegTattoos>>
-<</link>>
-|
-<<link "None">>
-<<set $currentRule.legsTat = 0>>
-<<RAChangeLegTattoos>>
-<</link>>
-|
-<<link "Tribal patterns">>
-<<set $currentRule.legsTat = "tribal patterns">>
-<<RAChangeLegTattoos>>
-<</link>>
-|
-<<link "Flowers">>
-<<set $currentRule.legsTat = "flowers">>
-<<RAChangeLegTattoos>>
-<</link>>
-|
-<<link "Counting">>
-<<set $currentRule.legsTat = "counting">>
-<<RAChangeLegTattoos>>
-<</link>>
-|
-<<link "Advertisements">>
-<<set $currentRule.legsTat = "advertisements">>
-<<RAChangeLegTattoos>>
-<</link>>
-|
-<<link "Rude words">>
-<<set $currentRule.legsTat = "rude words">>
-<<RAChangeLegTattoos>>
-<</link>>
-|
-<<link "Degradation">>
-<<set $currentRule.legsTat = "degradation">>
-<<RAChangeLegTattoos>>
-<</link>>
-|
-<<link "Bovine patterns">>
-<<set $currentRule.legsTat = "bovine patterns">>
-<<RAChangeLegTattoos>>
-<</link>>
-|
-<<link "Asian art">>
-<<set $currentRule.legsTat = "Asian art">>
-<<RAChangeLegTattoos>>
-<</link>>
-|
-<<link "Scenes">>
-<<set $currentRule.legsTat = "scenes">>
-<<RAChangeLegTattoos>>
-<</link>>
-|
-<<link "Sacrament">>
-<<set $currentRule.legsTat = "sacrament">>
-<<RAChangeLegTattoos>>
-<</link>>
-|
-<<link "Sacrilege">>
-<<set $currentRule.legsTat = "sacrilege">>
-<<RAChangeLegTattoos>>
-<</link>>
-|
-<<link "Possessive">>
-<<set $currentRule.legsTat = "possessive">>
-<<RAChangeLegTattoos>>
-<</link>>
-|
-<<link "Paternalist">>
-<<set $currentRule.legsTat = "paternalist">>
-<<RAChangeLegTattoos>>
-<</link>>
diff --git a/src/uncategorized/cosmeticRulesAssistantSettings.tw b/src/uncategorized/cosmeticRulesAssistantSettings.tw
deleted file mode 100644
index 68ad298663cdd633d94054c7ccab644a5c76a293..0000000000000000000000000000000000000000
--- a/src/uncategorized/cosmeticRulesAssistantSettings.tw
+++ /dev/null
@@ -1,717 +0,0 @@
-:: Cosmetic Rules Assistant Settings [nobr]
-
-
-
-<<set $nextButton = "Back">>
-<<set $nextLink = "Rules Assistant">>
-<<set $showEncyclopedia = 1>><<set $encyclopedia = "Personal Assistant">>
-
-//Please use the 'no default setting' option to identify areas I should not address.//
-
-<br><br>
-__Rule $r Optometry options:__
-<br>
-<span id = "eyewear">
-Eyewear: ''$currentRule.eyewear.''
-</span>
-<<link "No default setting">>
-<<set $currentRule.eyewear = "no default setting">>
-<<RAChangeEyewear>>
-<</link>>
-
-<br>&nbsp;&nbsp;&nbsp;&nbsp;
-<<link "Correct with glasses">>
-<<set $currentRule.eyewear = "correct with glasses">>
-<<RAChangeEyewear>>
-<</link>>
-| <<link "Correct with contacts">>
-<<set $currentRule.eyewear = "correct with contacts">>
-<<RAChangeEyewear>>
-<</link>>
-| <<link "Universal glasses">>
-<<set $currentRule.eyewear = "universal glasses">>
-<<RAChangeEyewear>>
-<</link>>
-| <<link "Blur with glasses">>
-<<set $currentRule.eyewear = "blur with glasses">>
-<<RAChangeEyewear>>
-<</link>>
-| <<link "Blur with contacts">>
-<<set $currentRule.eyewear = "blur with contacts">>
-<<RAChangeEyewear>>
-<</link>>
-
-<br><br>
-
-__Rule $r Cosmetic options:__
-<br>
-<span id = "eyecolor">
-Cosmetic contact lenses: ''$currentRule.eyeColor.''
-</span>
-
-<<link "No default setting">>
-<<set $currentRule.eyeColor = "no default setting">>
-<<RAChangeEyecolor>>
-<</link>>
-
-<br>&nbsp;&nbsp;&nbsp;&nbsp;
-	[[Blue|Cosmetic Rules Assistant Settings][$artificialEyeColor = "blue"]]
-	| [[Black|Cosmetic Rules Assistant Settings][$artificialEyeColor = "black"]]
-	| [[Brown|Cosmetic Rules Assistant Settings][$artificialEyeColor = "brown"]]
-	| [[Green|Cosmetic Rules Assistant Settings][$artificialEyeColor = "green"]]
-	| [[Turquoise|Cosmetic Rules Assistant Settings][$artificialEyeColor = "turquoise"]]
-	| [[Sky-blue|Cosmetic Rules Assistant Settings][$artificialEyeColor = "sky-blue"]]
-	| [[Hazel|Cosmetic Rules Assistant Settings][$artificialEyeColor = "hazel"]]
-	| [[Pale-grey|Cosmetic Rules Assistant Settings][$artificialEyeColor = "pale-grey"]]
-	| [[White|Cosmetic Rules Assistant Settings][$artificialEyeColor = "white"]]
-	| [[Pink|Cosmetic Rules Assistant Settings][$artificialEyeColor = "pink"]]
-	| [[Amber|Cosmetic Rules Assistant Settings][$artificialEyeColor = "amber"]]
-	| [[Red|Cosmetic Rules Assistant Settings][$artificialEyeColor = "red"]]
-	<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-	Shape:
-	[[Catlike|Cosmetic Rules Assistant Settings][$artificialEyeShape = "catlike"]]
-	| [[Serpent-like|Cosmetic Rules Assistant Settings][$artificialEyeShape = "serpent-like"]]
-	| [[Devilish|Cosmetic Rules Assistant Settings][$artificialEyeShape = "devilish"]]
-	| [[Demonic|Cosmetic Rules Assistant Settings][$artificialEyeShape = "demonic"]]
-	| [[Hypnotic|Cosmetic Rules Assistant Settings][$artificialEyeShape = "hypnotic"]]
-	| [[Heart-shaped|Cosmetic Rules Assistant Settings][$artificialEyeShape = "heart-shaped"]]
-	| [[Wide-eyed|Cosmetic Rules Assistant Settings][$artificialEyeShape = "wide-eyed"]]
-	| [[Almond-shaped|Cosmetic Rules Assistant Settings][$artificialEyeShape = "almond-shaped"]]
-	| [[Bright|Cosmetic Rules Assistant Settings][$artificialEyeShape = "bright"]]
-	| [[Teary|Cosmetic Rules Assistant Settings][$artificialEyeShape = "teary"]]
-	| [[Vacant|Cosmetic Rules Assistant Settings][$artificialEyeShape = "vacant"]]
-
-<<if $artificialEyeColor == "" && $artificialEyeShape != "">>
-	<br>&nbsp;&nbsp;&nbsp;&nbsp;	
-	<<link "Set">>
-	<<set $currentRule.eyeColor = ($artificialEyeShape)>>
-	<<RAChangeEyecolor>>
-	<<set $artificialEyeColor = "">>
-	<<set $artificialEyeShape = "">>
-	<</link>>
-	rule to $artificialEyeShape $artificialEyeColor eyes? //This will be applied in addition to eyewear choices.//
-<<elseif $artificialEyeColor != "" || $artificialEyeShape != "">>
-	<br>&nbsp;&nbsp;&nbsp;&nbsp;	
-	<<link "Set">>
-	<<set $currentRule.eyeColor = ($artificialEyeShape + " " + $artificialEyeColor)>>
-	<<RAChangeEyecolor>>
-	<<set $artificialEyeColor = "">>
-	<<set $artificialEyeShape = "">>
-	<</link>>
-	rule to $artificialEyeShape $artificialEyeColor eyes? //This will be applied in addition to eyewear choices.//
-<</if>>
-
-<br><br>
-Makeup:
-<span id = "makeup">
-''
-<<if $currentRule.makeup == 0>>
-	makeup-free.
-<<elseif $currentRule.makeup == 1>>
-	minimal makeup.
-<<elseif $currentRule.makeup == 2>>
-	luxurious, expensive makeup.
-<<elseif $currentRule.makeup == 3>>
-	color-coordinated.
-<<elseif $currentRule.makeup == 4>>
-	garish.
-<<else>>
-	no default setting.
-<</if>>
-''
-</span>
-
-<<link "No default setting">>
-<<set $currentRule.makeup = "no default setting">>
-<<RAChangeMakeup>>
-<</link>>
-
-<br>&nbsp;&nbsp;&nbsp;&nbsp;
-<<link "Makeup-free">>
-<<set $currentRule.makeup = 0>>
-<<RAChangeMakeup>>
-<</link>>
-| <<link "Nice">>
-<<set $currentRule.makeup = 1>>
-<<RAChangeMakeup>>
-<</link>>
-| <<link "Gorgeous">>
-<<set $currentRule.makeup = 2>>
-<<RAChangeMakeup>>
-<</link>>
-| <<link "Color-coordinate with hair">>
-<<set $currentRule.makeup = 3>>
-<<RAChangeMakeup>>
-<</link>>
-| <<link "Slutty">>
-<<set $currentRule.makeup = 4>>
-<<RAChangeMakeup>>
-<</link>>
-
-<br><br>
-Nails:
-<span id = "nails">
-''
-<<if $currentRule.nails == 0>>
-	clipped.
-<<elseif $currentRule.nails == 1>>
-	long and elegant.
-<<elseif $currentRule.nails == 2>>
-	color-coordinated.
-<<elseif $currentRule.nails == 3>>
-	sharp and claw-like.
-<<elseif $currentRule.nails == 4>>
-	bright and glittery.
-<<elseif $currentRule.nails == 5>>
-	garish.
-<<else>>
-	no default setting.
-<</if>>
-''
-</span>
-<<link "No default setting">>
-<<set $currentRule.nails = "no default setting">>
-<<RAChangeNails>>
-<</link>>
-
-<br>&nbsp;&nbsp;&nbsp;&nbsp;
-<<link "Clipped">>
-<<set $currentRule.nails = 0>>
-<<RAChangeNails>>
-<</link>>
-| <<link "Extended">>
-<<set $currentRule.nails = 1>>
-<<RAChangeNails>>
-<</link>>
-| <<link "Color-coordinate with hair">>
-<<set $currentRule.nails = 2>>
-<<RAChangeNails>>
-<</link>>
-| <<link "Sharp and claw-like">>
-<<RAChangeNails>>
-<<set $currentRule.nails = 3>>
-<</link>>
-| <<link "Bright and glittery">>
-<<RAChangeNails>>
-<<set $currentRule.nails = 4>><</link>>
-| <<link "Hooker nails">>
-<<RAChangeNails>>
-<<set $currentRule.nails = 5>>
-<</link>>
-
-<br><br>
-
-<<if $currentRule.hStyle != "shaved">>
-
-<span id = "hlength">
-Hair length: ''$currentRule.hLength.''
-</span>
-
-<<link "No default setting">>
-<<set $currentRule.hLength = "no default setting">>
-<<RAChangeHLength>>
-<</link>>
-
-<br>&nbsp;&nbsp;&nbsp;&nbsp;
-<<link "Very short">>
-<<set $currentRule.hLength = 5>>
-<<RAChangeHLength>>
-<</link>>
-| <<link "Short">>
-<<set $currentRule.hLength = 10>>
-<<RAChangeHLength>>
-<</link>>
-| <<link "Shoulder length">>
-<<set $currentRule.hLength = 30>>
-<<RAChangeHLength>>
-<</link>>
-| <<link "Long">>
-<<set $currentRule.hLength = 60>>
-<<RAChangeHLength>>
-<</link>>
-| <<link "Very long">>
-<<set $currentRule.hLength = 100>>
-<<RAChangeHLength>>
-<</link>>
-| <<link "Floor length">>
-<<set $currentRule.hLength = 150>>
-<<RAChangeHLength>>
-<</link>>
-
-<</if>>
-
-<br>
-
-<span id = "hcolor">
-Hair color: ''$currentRule.hColor.''
-</span>
-
-<<link "No default setting">>
-<<set $currentRule.hColor = "no default setting">>
-<<RAChangeHColor>>
-<</link>>
-
-<br>&nbsp;&nbsp;&nbsp;&nbsp;
-<<link "Blonde">>
-<<set $currentRule.hColor = "blonde">>
-<<RAChangeHColor>>
-<</link>>
-| <<link "Golden">>
-<<set $currentRule.hColor = "golden">>
-<<RAChangeHColor>>
-<</link>>
-| <<link "Platinum Blonde">>
-<<set $currentRule.hColor = "platinum blonde">>
-<<RAChangeHColor>>
-<</link>>
-| <<link "Strawberry-Blonde">>
-<<set $currentRule.hColor = "strawberry-blonde">>
-<<RAChangeHColor>>
-<</link>>
-| <<link "Copper">>
-<<set $currentRule.hColor = "copper">>
-<<RAChangeHColor>>
-<</link>>
-| <<link "Ginger">>
-<<set $currentRule.hColor = "ginger">>
-<<RAChangeHColor>>
-<</link>>
-| <<link "Red">>
-<<set $currentRule.hColor = "red">>
-<<RAChangeHColor>>
-<</link>>
-| <<link "Green">>
-<<set $currentRule.hColor = "green">>
-<<RAChangeHColor>>
-<</link>>
-| <<link "Blue">>
-<<set $currentRule.hColor = "blue">>
-<<RAChangeHColor>>
-<</link>>
-| <<link "Pink">>
-<<set $currentRule.hColor = "pink">>
-<<RAChangeHColor>>
-<</link>>
-| <<link "Dark Brown">>
-<<set $currentRule.hColor = "dark brown">>
-<<RAChangeHColor>>
-<</link>>
-| <<link "Brown">>
-<<set $currentRule.hColor = "brown">>
-<<RAChangeHColor>>
-<</link>>
-| <<link "Auburn">>
-<<set $currentRule.hColor = "auburn">>
-<<RAChangeHColor>>
-<</link>>
-| <<link "Burgundy">>
-<<set $currentRule.hColor = "burgundy">>
-<<RAChangeHColor>>
-<</link>>
-| <<link "Chocolate">>
-<<set $currentRule.hColor = "chocolate">>
-<<RAChangeHColor>>
-<</link>>
-| <<link "Chestnut">>
-<<set $currentRule.hColor = "chestnut">>
-<<RAChangeHColor>>
-<</link>>
-| <<link "Hazel">>
-<<set $currentRule.hColor = "hazel">>
-<<RAChangeHColor>>
-<</link>>
-| <<link "Black">>
-<<set $currentRule.hColor = "black">>
-<<RAChangeHColor>>
-<</link>>
-| <<link "Grey">>
-<<set $currentRule.hColor = "grey">>
-<<RAChangeHColor>>
-<</link>>
-| <<link "Silver">>
-<<set $currentRule.hColor = "silver">>
-<<RAChangeHColor>>
-<</link>>
-| <<link "White">>
-<<set $currentRule.hColor = "white">>
-<<RAChangeHColor>>
-<</link>>
-| <<link "Blue-Violet">>
-<<set $currentRule.hColor = "blue-violet">>
-<<RAChangeHColor>>
-<</link>>
-| <<link "Blazing red">>
-<<set $currentRule.hColor = "red">>
-<<RAChangeHColor>>
-<</link>>
-| <<link "Neon green">>
-<<set $currentRule.hColor = "green">>
-<<RAChangeHColor>>
-<</link>>
-| <<link "Neon blue">>
-<<set $currentRule.hColor = "blue">>
-<<RAChangeHColor>>
-<</link>>
-| <<link "Neon pink">>
-<<set $currentRule.hColor = "pink">>
-<<RAChangeHColor>>
-<</link>>
-<br>
-
-<span id = "hstyle">
-Hair style: ''$currentRule.hStyle.''
-</span>
-
-<<link "No default setting">>
-<<set $currentRule.hStyle = "no default setting">>
-<<RAChangeHStyle>>
-<</link>>
-
-<br>&nbsp;&nbsp;&nbsp;&nbsp;
-<<link "Neat">>
-<<set $currentRule.hStyle = "neat">>
-<<RAChangeHStyle>>
-<</link>>
-| <<link "Shaved">>
-<<set $currentRule.hStyle = "shaved",$currentRule.hLength = 0>>
-<<RAChangeHStyle>>
-<</link>>
-| <<link "Trimmed short">>
-<<set $currentRule.hStyle = "trimmed",$currentRule.hLength = 10>>
-<<RAChangeHStyle>>
-<</link>>
-| <<link "Buzzcut">>
-<<set $currentRule.hStyle = "buzzcut",$currentRule.hLength = 1>>
-<<RAChangeHStyle>>
-<</link>>
-| <<link "Up">>
-<<set $currentRule.hStyle = "up">>
-<<RAChangeHStyle>>
-<</link>>
-| <<link "In a ponytail">>
-<<set $currentRule.hStyle = "ponytail">>
-<<RAChangeHStyle>>
-<</link>>
-| <<link "In a bun">>
-<<set $currentRule.hStyle = "bun">>
-<<RAChangeHStyle>>
-<</link>>
-| <<link "In a messy bun">>
-<<set $currentRule.hStyle = "messy bun">>
-<<RAChangeHStyle>>
-<</link>>
-| <<link "Curled">>
-<<set $currentRule.hStyle = "curled">>
-<<RAChangeHStyle>>
-<</link>>
-| <<link "Permed">>
-<<set $currentRule.hStyle = "permed">>
-<<RAChangeHStyle>>
-<</link>>
-| <<link "Luxurious">>
-<<set $currentRule.hStyle = "luxurious">>
-<<RAChangeHStyle>>
-<</link>>
-| <<link "Dreadlocks">>
-<<set $currentRule.hStyle = "dreadlocks">>
-<<RAChangeHStyle>>
-<</link>>
-| <<link "Cornrows">>
-<<set $currentRule.hStyle = "cornrows">>
-<<RAChangeHStyle>>
-<</link>>
-| <<link "Braided">>
-<<set $currentRule.hStyle = "braided">>
-<<RAChangeHStyle>>
-<</link>>
-| <<link "In tails">>
-<<set $currentRule.hStyle = "tails">>
-<<RAChangeHStyle>>
-<</link>>
-| <<link "Afro">>
-<<set $currentRule.hStyle = "afro">>
-<<RAChangeHStyle>>
-<</link>>
-| <<link "Shaved sides">>
-<<set $currentRule.hStyle = "strip">>
-<<RAChangeHStyle>>
-<</link>>
-
-<br><br>
-
-<span id = "phcolor">
-Pubic hair color, when present: ''$currentRule.pubicHColor.''
-</span>
-<<link "No default setting">>
-<<set $currentRule.pubicHColor = "no default setting">>
-<<RAChangePHColor>>
-<</link>>
-
-<br>&nbsp;&nbsp;&nbsp;&nbsp;
-<<link "Blonde">>
-<<set $currentRule.pubicHColor = "blonde">>
-<<RAChangePHColor>>
-<</link>>
-| <<link "Golden">>
-<<set $currentRule.pubicHColor = "golden">>
-<<RAChangePHColor>>
-<</link>>
-| <<link "Platinum Blonde">>
-<<set $currentRule.pubicHColor = "platinum blonde">>
-<<RAChangePHColor>>
-<</link>>
-| <<link "Strawberry-Blonde">>
-<<set $currentRule.pubicHColor = "strawberry-blonde">>
-<<RAChangePHColor>>
-<</link>>
-| <<link "Copper">>
-<<set $currentRule.pubicHColor = "copper">>
-<<RAChangePHColor>>
-<</link>>
-| <<link "Ginger">>
-<<set $currentRule.pubicHColor = "ginger">>
-<<RAChangePHColor>>
-<</link>>
-| <<link "Red">>
-<<set $currentRule.pubicHColor = "red">>
-<<RAChangePHColor>>
-<</link>>
-| <<link "Green">>
-<<set $currentRule.pubicHColor = "green">>
-<<RAChangePHColor>>
-<</link>>
-| <<link "Blue">>
-<<set $currentRule.pubicHColor = "blue">>
-<<RAChangePHColor>>
-<</link>>
-| <<link "Pink">>
-<<set $currentRule.pubicHColor = "pink">>
-<<RAChangePHColor>>
-<</link>>
-| <<link "Dark Brown">>
-<<set $currentRule.pubicHColor = "dark brown">>
-<<RAChangePHColor>>
-<</link>>
-| <<link "Brown">>
-<<set $currentRule.pubicHColor = "brown">>
-<<RAChangePHColor>>
-<</link>>
-| <<link "Auburn">>
-<<set $currentRule.pubicHColor = "auburn">>
-<<RAChangePHColor>>
-<</link>>
-| <<link "Burgundy">>
-<<set $currentRule.pubicHColor = "burgundy">>
-<<RAChangePHColor>>
-<</link>>
-| <<link "Chocolate">>
-<<set $currentRule.pubicHColor = "chocolate">>
-<<RAChangePHColor>>
-<</link>>
-| <<link "Chestnut">>
-<<set $currentRule.pubicHColor = "chestnut">>
-<<RAChangePHColor>>
-<</link>>
-| <<link "Hazel">>
-<<set $currentRule.pubicHColor = "hazel">>
-<<RAChangePHColor>>
-<</link>>
-| <<link "Black">>
-<<set $currentRule.pubicHColor = "black">>
-<<RAChangePHColor>>
-<</link>>
-| <<link "Grey">>
-<<set $currentRule.pubicHColor = "grey">>
-<<RAChangePHColor>>
-<</link>>
-| <<link "Silver">>
-<<set $currentRule.pubicHColor = "silver">>
-<<RAChangePHColor>>
-<</link>>
-| <<link "White">>
-<<set $currentRule.pubicHColor = "white">>
-<<RAChangePHColor>>
-<</link>>
-| <<link "Blue-Violet">>
-<<set $currentRule.pubicHColor = "blue-violet">>
-<<RAChangePHColor>>
-<</link>>
-| <<link "Blazing red">>
-<<set $currentRule.pubicHColor = "red">>
-<<RAChangePHColor>>
-<</link>>
-| <<link "Neon green">>
-<<set $currentRule.pubicHColor = "green">>
-<<RAChangePHColor>>
-<</link>>
-| <<link "Neon blue">>
-<<set $currentRule.pubicHColor = "blue">>
-<<RAChangePHColor>>
-<</link>>
-| <<link "Neon pink">>
-<<set $currentRule.pubicHColor = "pink">>
-<<RAChangePHColor>>
-<</link>>
-<br>
-<span id = "phstyle">
-Pubic hair style: ''$currentRule.pubicHStyle.''
-</span>
-<<link "No default setting">>
-<<set $currentRule.pubicHStyle = "no default setting">>
-<<RAChangePHStyle>>
-<</link>>
-
-<br>&nbsp;&nbsp;&nbsp;&nbsp;
-<<link "Waxed">>
-<<set $currentRule.pubicHStyle = "waxed">>
-<<RAChangePHStyle>>
-<</link>>
-| <<link "Landing strip">>
-<<set $currentRule.pubicHStyle = "in a strip">>
-<<RAChangePHStyle>>
-<</link>>
-| <<link "Neat">>
-<<set $currentRule.pubicHStyle = "neat">>
-<<RAChangePHStyle>>
-<</link>>
-| <<link "Bushy">>
-<<set $currentRule.pubicHStyle = "bushy">>
-<<RAChangePHStyle>>
-<</link>> 
-| <<link "Bushy in front and clean in back">>
-<<set $currentRule.pubicHStyle = "bushy in the front and neat in the rear">>
-<<RAChangePHStyle>>
-<</link>>
-| <<link "Very bushy">>
-<<set $currentRule.pubicHStyle = "very bushy">>
-<<RAChangePHStyle>>
-<</link>>
-
-<br>
-<span id = "ahcolor">
-Underarm hair color, when present: ''$currentRule.underArmHColor.''
-</span>
-<<link "No default setting">>
-<<set $currentRule.underArmHColor = "no default setting">>
-<<RAChangeAHColor>>
-<</link>>
-
-<br>&nbsp;&nbsp;&nbsp;&nbsp;
-<<link "Blonde">>
-<<set $currentRule.underArmHColor = "blonde">>
-<<RAChangeAHColor>>
-<</link>>
-| <<link "Golden">>
-<<set $currentRule.underArmHColor = "golden">>
-<<RAChangeAHColor>>
-<</link>>
-| <<link "Platinum Blonde">>
-<<set $currentRule.underArmHColor = "platinum blonde">>
-<<RAChangeAHColor>>
-<</link>>
-| <<link "Strawberry-Blonde">>
-<<set $currentRule.underArmHColor = "strawberry-blonde">>
-<<RAChangeAHColor>>
-<</link>>
-| <<link "Copper">>
-<<set $currentRule.underArmHColor = "copper">>
-<<RAChangeAHColor>>
-<</link>>
-| <<link "Ginger">>
-<<set $currentRule.underArmHColor = "ginger">>
-<<RAChangeAHColor>>
-<</link>>
-| <<link "Red">>
-<<set $currentRule.underArmHColor = "red">>
-<<RAChangeAHColor>>
-<</link>>
-| <<link "Green">>
-<<set $currentRule.underArmHColor = "green">>
-<<RAChangeAHColor>>
-<</link>>
-| <<link "Blue">>
-<<set $currentRule.underArmHColor = "blue">>
-<<RAChangeAHColor>>
-<</link>>
-| <<link "Pink">>
-<<set $currentRule.underArmHColor = "pink">>
-<<RAChangeAHColor>>
-<</link>>
-| <<link "Dark Brown">>
-<<set $currentRule.underArmHColor = "dark brown">>
-<<RAChangeAHColor>>
-<</link>>
-| <<link "Brown">>
-<<set $currentRule.underArmHColor = "brown">>
-<<RAChangeAHColor>>
-<</link>>
-| <<link "Auburn">>
-<<set $currentRule.underArmHColor = "auburn">>
-<<RAChangeAHColor>>
-<</link>>
-| <<link "Burgundy">>
-<<set $currentRule.underArmHColor = "burgundy">>
-<<RAChangeAHColor>>
-<</link>>
-| <<link "Chocolate">>
-<<set $currentRule.underArmHColor = "chocolate">>
-<<RAChangeAHColor>>
-<</link>>
-| <<link "Chestnut">>
-<<set $currentRule.underArmHColor = "chestnut">>
-<<RAChangeAHColor>>
-<</link>>
-| <<link "Hazel">>
-<<set $currentRule.underArmHColor = "hazel">>
-<<RAChangeAHColor>>
-<</link>>
-| <<link "Black">>
-<<set $currentRule.underArmHColor = "black">>
-<<RAChangeAHColor>>
-<</link>>
-| <<link "Grey">>
-<<set $currentRule.underArmHColor = "grey">>
-<<RAChangeAHColor>>
-<</link>>
-| <<link "Silver">>
-<<set $currentRule.underArmHColor = "silver">>
-<<RAChangeAHColor>>
-<</link>>
-| <<link "White">>
-<<set $currentRule.underArmHColor = "white">>
-<<RAChangeAHColor>>
-<</link>>
-| <<link "Blue-Violet">>
-<<set $currentRule.underArmHColor = "blue-violet">>
-<<RAChangeAHColor>>
-<</link>>
-
-<br>
-<<if ndef $currentRule.underArmHStyle>>
-<<set $currentRule.underArmHStyle = "no default setting">>
-<</if>>
-<span id = "ahstyle">
-Underarm hair style: ''$currentRule.underArmHStyle.''
-</span>
-<<link "No default setting">>
-<<set $currentRule.underArmHStyle = "no default setting">>
-<<RAChangeAHStyle>>
-<</link>>
-
-<br>&nbsp;&nbsp;&nbsp;&nbsp;
-<<link "Waxed">>
-<<set $currentRule.underArmHStyle = "waxed">>
-<<RAChangeAHStyle>>
-<</link>>
-| <<link "Shaved">>
-<<set $currentRule.underArmHStyle = "shaved">>
-<<RAChangeAHStyle>>
-<</link>>
-| <<link "Neat">>
-<<set $currentRule.underArmHStyle = "neat">>
-<<RAChangeAHStyle>>
-<</link>>
-| <<link "Bushy">>
-<<set $currentRule.underArmHStyle = "bushy">>
-<<RAChangeAHStyle>>
-<</link>>
diff --git a/src/uncategorized/exportAllRules.tw b/src/uncategorized/exportAllRules.tw
deleted file mode 100644
index be6267639804a81e454bb3b3dfbdb80cf839af6f..0000000000000000000000000000000000000000
--- a/src/uncategorized/exportAllRules.tw
+++ /dev/null
@@ -1,22 +0,0 @@
-:: Export All Rules [nobr]
-
-<<set $nextButton = "Continue", $nextLink = "Rules Assistant">>
-
-//Copy one of following blocks for importing later. RA rules become too complex, only new (direct JSON) method guarantee proper result, but may not work in some browsers.//
-
-<br>
-
-<br> __Direct JSON export method__: <br>
-<<set _length = $defaultRules.length>>
-<<for _r = _length - 1; _r >= 0; _r-->>
-<<if $defaultRules[_r] == null>>
-	<<continue>>
-<</if>>
-<<set _currentRule = $defaultRules[_r]>>
-<div class="output">
-<<set _jsonText = toJson(_currentRule)>>
-_jsonText
-</div>
-<br>
-<</for>>
-
diff --git a/src/uncategorized/exportRule.tw b/src/uncategorized/exportRule.tw
deleted file mode 100644
index 4eb191c8685faf5ce2281976e8f1da8f6f26aeb4..0000000000000000000000000000000000000000
--- a/src/uncategorized/exportRule.tw
+++ /dev/null
@@ -1,13 +0,0 @@
-:: Export Rule [nobr]
-
-<<set $nextButton = "Continue", $nextLink = "Rules Assistant">>
-
-//RA rules become too complex, only new (direct JSON) method guarantee proper result, but may not work in some browsers. (Mostly old ones.)//
-
-<br> __Direct JSON export method__: <br><br>
-
-<div class="output">
-<<set _jsonText = toJson($currentRule)>>
-_jsonText
-</div>
-
diff --git a/src/uncategorized/importRule.tw b/src/uncategorized/importRule.tw
deleted file mode 100644
index eb34a980f4a0ce54571ea26838bee25722acde1a..0000000000000000000000000000000000000000
--- a/src/uncategorized/importRule.tw
+++ /dev/null
@@ -1,65 +0,0 @@
-:: Import Rule [nobr]
-
-<<set $nextButton = "Continue", $nextLink = "Rules Assistant">>
-
-//Paste the code into the text box and click Apply//
-
-<br><br>
-<span id = "importmsg">
-	''Enter a rule to import.''
-</span>
-
-<br><br>
-<span id = "textbox">
-	<<set _tempRule = "">>
-	<<textbox "_tempRule" _tempRule>>
-</span>
-
-
-<<link "Apply">>
-	<<if (def _tempRule) && (_tempRule !== "")>>
-		<<set _tempRule = eval('({' + _tempRule + '})')>>
-		<<if (def _tempRule.condition) && (ndef _tempRule.condition.id) && (ndef _tempRule.condition.first) && (ndef _tempRule.condition.second)>>
-			<<set _tempRule.condition = parseCondition(_tempRule.condition)>>
-			<<if _tempRule.condition != null && _tempRule.condition.expr != null>>
-				<<set _tempRule.condition = optimizeExpr(_tempRule.condition.expr)>>
-			<<else>>
-				<<unset _tempRule.condition>>
-			<</if>>
-		<</if>>
-
-		<<if (def _tempRule.condition)>>
-			/* pick an ID higher than the highest ID of any existing rule */
-			<<for _tempRule.ID = 0, _r = 0; _r < $defaultRules.length; _r++>>
-				<<set _tempRule.ID = Math.max(_tempRule.ID, $defaultRules[_r].ID + 1)>>
-			<</for>>
-
-			<<set $defaultRules.push(_tempRule)>> /* add the new rule to the end of the list (lowest priority) */
-
-			<<set $currentRule = _tempRule>> /* view new rule when returning to RA; clear input box */
-
-			<<replace #importmsg>>
-				''Rule imported successfully!''
-			<</replace>>
-			<<replace #textbox>>
-				<<set _tempRule = "">>
-				<<textbox "_tempRule" _tempRule>>
-			<</replace>>
-		<<else>>
-			<<replace #importmsg>>
-				''Parsing failed. Rule not imported!''
-			<</replace>>
-		<</if>>
-	<<else>>
-		<<replace #importmsg>>
-			''Enter a rule to import.''
-		<</replace>>
-	<</if>>
-	<<unset _tempRule>>
-<</link>>
-
-<br><br>
-
-<<link "Back to Rules Assistant">>
-	<<goto "Rules Assistant">>
-<</link>>
diff --git a/src/uncategorized/initRules.tw b/src/uncategorized/initRules.tw
index 1f64b201211cc08b0124b59e2995a7303c9b0236..2dc97f98aaeb64670811464707fb82fd24bea6c0 100644
--- a/src/uncategorized/initRules.tw
+++ b/src/uncategorized/initRules.tw
@@ -3,13 +3,256 @@
 <<silently>>
 <<set $defaultRules = []>>
 
-<<set _activeRule = {ID: 1, name: "Obedient Slaves", condition: {id: ">", first: {id: "(name)", name: "devotion"}, second: {id: "(number)", value: 20}}, releaseRules: "no default setting", clitSetting: "no default setting", clitSettingXY: "no default setting", clitSettingXX: "no default setting", clitSettingEnergy: "no default setting", speechRules: "no default setting", clothes: "no default setting", collar: "no default setting", shoes: "no default setting", virginAccessory: "no default setting", aVirginAccessory: "no default setting", vaginalAccessory: "no default setting", aVirginDickAccessory: "no default setting", dickAccessory: "no default setting", bellyAccessory: "no default setting", aVirginButtplug: "no default setting", buttplug: "no default setting", eyeColor: "no default setting", makeup: "no default setting", nails: "no default setting", hColor: "no default setting", hLength: "no default setting", hStyle: "no default setting", pubicHColor: "no default setting", pubicHStyle: "no default setting", nipplesPiercing: "no default setting", areolaePiercing: "no default setting", clitPiercing: "no default setting", vaginaLube: "no default setting", vaginaPiercing: "no default setting", dickPiercing: "no default setting", anusPiercing: "no default setting", lipsPiercing: "no default setting", tonguePiercing: "no default setting", earPiercing: "no default setting", nosePiercing: "no default setting", eyebrowPiercing: "no default setting", navelPiercing: "no default setting", corsetPiercing: "no default setting", boobsTat: "no default setting", buttTat: "no default setting", vaginaTat: "no default setting", dickTat: "no default setting", lipsTat: "no default setting", anusTat: "no default setting", shouldersTat: "no default setting", armsTat: "no default setting", legsTat: "no default setting", backTat: "no default setting", stampTat: "no default setting", curatives: "no default setting", livingRules: "no default setting", relationshipRules: "no default setting", standardPunishment: "no default setting", standardReward: "no default setting", diet: "no default setting", dietCum: "no default setting", dietMilk: "no default setting", muscles: "no default setting", XY: "no default setting", XX: "no default setting", gelding: "no default setting", preg: "no default setting", growth: {boobs: "no default setting", butt: "no default setting", lips: "no default setting", dick: "no default setting", balls: "no default setting"}, aphrodisiacs: "no default setting", autoSurgery: 0, autoBrand: 0, pornFameSpending: "no default setting", dietGrowthSupport: 0, eyewear: "no default setting", assignment: [], excludeAssignment: [], setAssignment: "no default setting", facility: [], excludeFacility: [], excludeSpecialSlaves: false, facilityRemove: false, removalAssignment: "rest", selectedSlaves: [], excludedSlaves: [], surgery: {eyes: "no default setting", lactation: "no default setting", prostate: "no default setting", cosmetic: "nds", accent: "no default setting", shoulders: "no default setting", shouldersImplant: "no default setting", boobs: "no default setting", hips: "no default setting", hipsImplant: "no default setting", butt: "no default setting", faceShape: "no default setting", lips: "no default setting", holes: "nds"}, underArmHColor: "no default setting", underArmHStyle: "no default setting", drug: "no default setting" }>>
+<<set _activeRule = emptyDefaultRule()>>
+<<set _activeRule.name = "Obedient Slaves">>
+<<set _activeRule.condition.function = "between">>
+<<set _activeRule.condition.data = { attribute: "devotion", value: [20, null] }>>
+<<set _activeRule.set.removalAssignment = "rest">>
 <<set $defaultRules.push(_activeRule)>>
 
-<<set _activeRule = {ID: 2, name: "Disobedient Slaves", condition: {id: "<=", first: {id: "(name)", name: "devotion"}, second: {id: "(number)", value: 20}}, releaseRules: "no default setting", clitSetting: "no default setting", clitSettingXY: "no default setting", clitSettingXX: "no default setting", clitSettingEnergy: "no default setting", speechRules: "no default setting", clothes: "no default setting", collar: "no default setting", shoes: "no default setting", virginAccessory: "no default setting", aVirginAccessory: "no default setting", vaginalAccessory: "no default setting", aVirginDickAccessory: "no default setting", dickAccessory: "no default setting", bellyAccessory: "no default setting", aVirginButtplug: "no default setting", buttplug: "no default setting", eyeColor: "no default setting", makeup: "no default setting", nails: "no default setting", hColor: "no default setting", hLength: "no default setting", hStyle: "no default setting", pubicHColor: "no default setting", pubicHStyle: "no default setting", nipplesPiercing: "no default setting", areolaePiercing: "no default setting", clitPiercing: "no default setting", vaginaLube: "no default setting", vaginaPiercing: "no default setting", dickPiercing: "no default setting", anusPiercing: "no default setting", lipsPiercing: "no default setting", tonguePiercing: "no default setting", earPiercing: "no default setting", nosePiercing: "no default setting", eyebrowPiercing: "no default setting", navelPiercing: "no default setting", corsetPiercing: "no default setting", boobsTat: "no default setting", buttTat: "no default setting", vaginaTat: "no default setting", dickTat: "no default setting", lipsTat: "no default setting", anusTat: "no default setting", shouldersTat: "no default setting", armsTat: "no default setting", legsTat: "no default setting", backTat: "no default setting", stampTat: "no default setting", curatives: "no default setting", livingRules: "spare", relationshipRules: "no default setting", standardPunishment: "no default setting", standardReward: "no default setting", diet: "no default setting", dietCum: "no default setting", dietMilk: "no default setting", muscles: "no default setting", XY: "no default setting", XX: "no default setting", gelding: "no default setting", preg: "no default setting", growth: {boobs: "no default setting", butt: "no default setting", lips: "no default setting", dick: "no default setting", balls: "no default setting"}, aphrodisiacs: "no default setting", autoSurgery: 0, autoBrand: 0, pornFameSpending: "no default setting", dietGrowthSupport: 0, eyewear: "no default setting", assignment: [], excludeAssignment: [], setAssignment: "no default setting", facility: [], excludeFacility: [], excludeSpecialSlaves: false, facilityRemove: false, removalAssignment: "rest", selectedSlaves: [], excludedSlaves: [], surgery: {eyes: "no default setting", lactation: "no default setting", prostate: "no default setting", cosmetic: "nds", accent: "no default setting", shoulders: "no default setting", shouldersImplant: "no default setting", boobs: "no default setting", hips: "no default setting", hipsImplant: "no default setting", butt: "no default setting", faceShape: "no default setting", lips: "no default setting", holes: "nds"}, underArmHColor: "no default setting", underArmHStyle: "no default setting", drug: "no default setting"}>>
+/*
+<<set _activeRule = {
+	ID: 2,
+	name: "Disobedient Slaves",
+	condition: {
+		id: "<=",
+		first: {
+			id: "(name)",
+			name: "devotion"
+		},
+		second: {
+			id: "(number)",
+			value: 20
+		}
+	},
+	releaseRules: "no default setting",
+	clitSetting: "no default setting",
+	clitSettingXY: "no default setting",
+	clitSettingXX: "no default setting",
+	clitSettingEnergy: "no default setting",
+	speechRules: "no default setting",
+	clothes: "no default setting",
+	collar: "no default setting",
+	shoes: "no default setting",
+	virginAccessory: "no default setting",
+	aVirginAccessory: "no default setting",
+	vaginalAccessory: "no default setting",
+	aVirginDickAccessory: "no default setting",
+	dickAccessory: "no default setting",
+	bellyAccessory: "no default setting",
+	aVirginButtplug: "no default setting",
+	buttplug: "no default setting",
+	eyeColor: "no default setting",
+	makeup: "no default setting",
+	nails: "no default setting",
+	hColor: "no default setting",
+	hLength: "no default setting",
+	hStyle: "no default setting",
+	pubicHColor: "no default setting",
+	pubicHStyle: "no default setting",
+	nipplesPiercing: "no default setting",
+	areolaePiercing: "no default setting",
+	clitPiercing: "no default setting",
+	vaginaLube: "no default setting",
+	vaginaPiercing: "no default setting",
+	dickPiercing: "no default setting",
+	anusPiercing: "no default setting",
+	lipsPiercing: "no default setting",
+	tonguePiercing: "no default setting",
+	earPiercing: "no default setting",
+	nosePiercing: "no default setting",
+	eyebrowPiercing: "no default setting",
+	navelPiercing: "no default setting",
+	corsetPiercing: "no default setting",
+	boobsTat: "no default setting",
+	buttTat: "no default setting",
+	vaginaTat: "no default setting",
+	dickTat: "no default setting",
+	lipsTat: "no default setting",
+	anusTat: "no default setting",
+	shouldersTat: "no default setting",
+	armsTat: "no default setting",
+	legsTat: "no default setting",
+	backTat: "no default setting",
+	stampTat: "no default setting",
+	curatives: "no default setting",
+	livingRules: "spare",
+	relationshipRules: "no default setting",
+	standardPunishment: "no default setting",
+	standardReward: "no default setting",
+	diet: "no default setting",
+	dietCum: "no default setting",
+	dietMilk: "no default setting",
+	muscles: "no default setting",
+	XY: "no default setting",
+	XX: "no default setting",
+	gelding: "no default setting",
+	preg: "no default setting",
+	growth: {
+		boobs: "no default setting",
+		butt: "no default setting",
+		lips: "no default setting",
+		dick: "no default setting",
+		balls: "no default setting"
+	},
+	aphrodisiacs: "no default setting",
+	autoSurgery: 0,
+	autoBrand: 0,
+	pornFameSpending: "no default setting",
+	dietGrowthSupport: 0,
+	eyewear: "no default setting",
+	assignment: [],
+	excludeAssignment: [],
+	setAssignment: "no default setting",
+	facility: [],
+	excludeFacility: [],
+	excludeSpecialSlaves: false,
+	facilityRemove: false,
+	removalAssignment: "rest",
+	selectedSlaves: [],
+	excludedSlaves: [],
+	surgery: {
+		eyes: "no default setting",
+		lactation: "no default setting",
+		prostate: "no default setting",
+		cosmetic: "no default setting",
+		accent: "no default setting",
+		shoulders: "no default setting",
+		shouldersImplant: "no default setting",
+		boobs: "no default setting",
+		hips: "no default setting",
+		hipsImplant: "no default setting",
+		butt: "no default setting",
+		faceShape: "no default setting",
+		lips: "no default setting",
+		holes: "no default setting"
+	},
+	underArmHColor: "no default setting",
+	underArmHStyle: "no default setting",
+	drug: "no default setting"
+}>>
 <<set $defaultRules.push(_activeRule)>>
 
-<<set _activeRule = {ID: 3, name: "Unhealthy Slaves", condition: {id: "<", first: {id: "(name)", name: "health"}, second: {id: "(number)", value: -10}}, releaseRules: "no default setting", clitSetting: "no default setting", clitSettingXY: "no default setting", clitSettingXX: "no default setting", clitSettingEnergy: "no default setting", speechRules: "no default setting", clothes: "no default setting", collar: "no default setting", shoes: "no default setting", virginAccessory: "no default setting", aVirginAccessory: "no default setting", vaginalAccessory: "no default setting", dickAccessory: "no default setting", aVirginDickAccessory: "no default setting", bellyAccessory: "no default setting", aVirginButtplug: "no default setting", buttplug: "no default setting", eyeColor: "no default setting", makeup: "no default setting", nails: "no default setting", hColor: "no default setting", hLength: "no default setting", hStyle: "no default setting", pubicHColor: "no default setting", pubicHStyle: "no default setting", nipplesPiercing: "no default setting", areolaePiercing: "no default setting", clitPiercing: "no default setting", vaginaLube: "no default setting", vaginaPiercing: "no default setting", dickPiercing: "no default setting", anusPiercing: "no default setting", lipsPiercing: "no default setting", tonguePiercing: "no default setting", earPiercing: "no default setting", nosePiercing: "no default setting", eyebrowPiercing: "no default setting", navelPiercing: "no default setting", corsetPiercing: "no default setting", boobsTat: "no default setting", buttTat: "no default setting", vaginaTat: "no default setting", dickTat: "no default setting", lipsTat: "no default setting", anusTat: "no default setting", shouldersTat: "no default setting", armsTat: "no default setting", legsTat: "no default setting", backTat: "no default setting", stampTat: "no default setting", curatives: "applied", livingRules: "no default setting", relationshipRules: "no default setting", standardPunishment: "no default setting", standardReward: "no default setting", diet: "no default setting", dietCum: "no default setting", dietMilk: "no default setting", muscles: "no default setting", XY: "no default setting", XX: "no default setting", gelding: "no default setting", preg: "no default setting", growth: {boobs: "no default setting", butt: "no default setting", lips: "no default setting", dick: "no default setting", balls: "no default setting"}, aphrodisiacs: "no default setting", autoSurgery: 0, autoBrand: 0, pornFameSpending: "no default setting", dietGrowthSupport: 0, eyewear: "no default setting", assignment: [], excludeAssignment: [], setAssignment: "no default setting", facility: [], excludeFacility: [], excludeSpecialSlaves: false, facilityRemove: false, removalAssignment: "rest", selectedSlaves: [], excludedSlaves: [], surgery: {eyes: "no default setting", lactation: "no default setting", prostate: "no default setting", cosmetic: "nds", accent: "no default setting", shoulders: "no default setting", shouldersImplant: "no default setting", boobs: "no default setting", hips: "no default setting", hipsImplant: "no default setting", butt: "no default setting", faceShape: "no default setting", lips: "no default setting", holes: "nds"}, underArmHColor: "no default setting", underArmHStyle: "no default setting", drug: "no default setting"}>>
+<<set _activeRule = {
+	ID: 3,
+	name: "Unhealthy Slaves",
+	condition: {
+		id: "<",
+		first: {
+			id: "(name)",
+			name: "health"
+		},
+		second: {
+			id: "(number)",
+			value: -10
+		}
+	},
+	releaseRules: "no default setting",
+	clitSetting: "no default setting",
+	clitSettingXY: "no default setting",
+	clitSettingXX: "no default setting",
+	clitSettingEnergy: "no default setting",
+	speechRules: "no default setting",
+	clothes: "no default setting",
+	collar: "no default setting",
+	shoes: "no default setting",
+	virginAccessory: "no default setting",
+	aVirginAccessory: "no default setting",
+	vaginalAccessory: "no default setting",
+	dickAccessory: "no default setting",
+	aVirginDickAccessory: "no default setting",
+	bellyAccessory: "no default setting",
+	aVirginButtplug: "no default setting",
+	buttplug: "no default setting",
+	eyeColor: "no default setting",
+	makeup: "no default setting",
+	nails: "no default setting",
+	hColor: "no default setting",
+	hLength: "no default setting",
+	hStyle: "no default setting",
+	pubicHColor: "no default setting",
+	pubicHStyle: "no default setting",
+	nipplesPiercing: "no default setting",
+	areolaePiercing: "no default setting",
+	clitPiercing: "no default setting",
+	vaginaLube: "no default setting",
+	vaginaPiercing: "no default setting",
+	dickPiercing: "no default setting",
+	anusPiercing: "no default setting",
+	lipsPiercing: "no default setting",
+	tonguePiercing: "no default setting",
+	earPiercing: "no default setting",
+	nosePiercing: "no default setting",
+	eyebrowPiercing: "no default setting",
+	navelPiercing: "no default setting",
+	corsetPiercing: "no default setting",
+	boobsTat: "no default setting",
+	buttTat: "no default setting",
+	vaginaTat: "no default setting",
+	dickTat: "no default setting",
+	lipsTat: "no default setting",
+	anusTat: "no default setting",
+	shouldersTat: "no default setting",
+	armsTat: "no default setting",
+	legsTat: "no default setting",
+	backTat: "no default setting",
+	stampTat: "no default setting",
+	curatives: "applied",
+	livingRules: "no default setting",
+	relationshipRules: "no default setting",
+	standardPunishment: "no default setting",
+	standardReward: "no default setting",
+	diet: "no default setting",
+	dietCum: "no default setting",
+	dietMilk: "no default setting",
+	muscles: "no default setting",
+	XY: "no default setting",
+	XX: "no default setting",
+	gelding: "no default setting",
+	preg: "no default setting",
+	growth: {
+		boobs: "no default setting",
+		butt: "no default setting",
+		lips: "no default setting",
+		dick: "no default setting",
+		balls: "no default setting"
+	},
+	aphrodisiacs: "no default setting",
+	autoSurgery: 0,
+	autoBrand: 0,
+	pornFameSpending: "no default setting",
+	dietGrowthSupport: 0,
+	eyewear: "no default setting",
+	assignment: [],
+	excludeAssignment: [],
+	setAssignment: "no default setting",
+	facility: [],
+	excludeFacility: [],
+	excludeSpecialSlaves: false,
+	facilityRemove: false,
+	removalAssignment: "rest",
+	selectedSlaves: [],
+	excludedSlaves: [],
+	surgery: {
+		eyes: "no default setting",
+		lactation: "no default setting",
+		prostate: "no default setting",
+		cosmetic: "no default setting",
+		accent: "no default setting",
+		shoulders: "no default setting",
+		shouldersImplant: "no default setting",
+		boobs: "no default setting",
+		hips: "no default setting",
+		hipsImplant: "no default setting",
+		butt: "no default setting",
+		faceShape: "no default setting",
+		lips: "no default setting",
+		holes: "no default setting"
+	},
+	underArmHColor: "no default setting",
+	underArmHStyle: "no default setting",
+	drug: "no default setting"
+}>>
 <<set $defaultRules.push(_activeRule)>>
-
+*/
 <</silently>>
diff --git a/src/uncategorized/main.tw b/src/uncategorized/main.tw
index c7e5ce60fa61b85dd00bbb92669eef9ce844ec27..c5f905e53f874d033cd0822429c927b6f634ae27 100644
--- a/src/uncategorized/main.tw
+++ b/src/uncategorized/main.tw
@@ -109,7 +109,7 @@ __''MAIN MENU''__&nbsp;&nbsp;&nbsp;&nbsp;//[[Summary Options]]//
 	<<else>>
 		| //<<link "Stop applying Rules Assistant at week end">><<set $rulesAssistantAuto = 0>><<goto "Main">><</link>>//
 	<</if>>
-	| //<<link "Re-apply Rules Assistant now (this will only check slaves in the Penthouse)">><<for _i = 0;_i < _SL;_i++>><<if $slaves[_i].assignmentVisible == 1 && $slaves[_i].useRulesAssistant == 1>><<CheckAutoRulesActivate $slaves[_i]>><<DefaultRules $slaves[_i]>><</if>><</for>><<goto "Main">><</link>>//
+	| //<<link "Re-apply Rules Assistant now (this will only check slaves in the Penthouse)">><<for _i = 0;_i < _SL;_i++>><<if $slaves[_i].assignmentVisible == 1 && $slaves[_i].useRulesAssistant == 1>><<= CheckAutoRulesActivate($slaves[_i])>><<= DefaultRules($slaves[_i])>><</if>><</for>><<goto "Main">><</link>>//
 <</if>>
 
 <<if $useSlaveSummaryTabs == 1>>
diff --git a/src/uncategorized/newSlaveIntro.tw b/src/uncategorized/newSlaveIntro.tw
index 0558d5cf95779f46509505e8629588225bec00af..3aff8989f08307083adeb4134e846de11ddb1101 100644
--- a/src/uncategorized/newSlaveIntro.tw
+++ b/src/uncategorized/newSlaveIntro.tw
@@ -531,8 +531,8 @@ The legalities completed, ''__@@.pink;<<SlaveFullName $activeSlave>>@@__'' <<if
 	<span id="rules">
 	<<link "Apply default rules">>
 		<<replace "#rules">>
-			<<CheckAutoRulesActivate $activeSlave>>
-			<<DefaultRules $activeSlave>>
+			<<= CheckAutoRulesActivate($activeSlave)>>
+			<<= DefaultRules($activeSlave)>>
 		<</replace>>
 	<</link>>
 	<<if $activeSlave.devotion <= 20>>
diff --git a/src/uncategorized/rulesAssistant.tw b/src/uncategorized/rulesAssistant.tw
index bfd60699ee9caa555763d284daf270753ff343af..1eb4a9890e539dd550c5a18170e50378b894af95 100644
--- a/src/uncategorized/rulesAssistant.tw
+++ b/src/uncategorized/rulesAssistant.tw
@@ -1,2602 +1,3 @@
-:: Rules Assistant [nobr]
+:: Rules Assistant [nobr]
 
-<<set $nextButton = "Back to Main", $nextLink = "Main", $returnTo = "Main">>
-<<set $showEncyclopedia = 1, $encyclopedia = "Personal Assistant">>
-
-<<set _length = $defaultRules.length>>
-
-<<if _length > 0>>
-
-	<<if ndef $currentRule || $currentRule == null>>  <<set $currentRule = $defaultRules[0]>>           <</if>>
-	<<if ndef $currentRule.selectedSlaves>>           <<set $currentRule.selectedSlaves = []>>          <</if>>
-	<<if ndef $currentRule.excludedSlaves>>           <<set $currentRule.excludedSlaves = []>>          <</if>>
-	<<if ndef $currentRule.assignment>>               <<set $currentRule.assignment = []>>              <</if>>
-	<<if ndef $currentRule.excludeAssignment>>        <<set $currentRule.excludeAssignment = []>>       <</if>>
-	<<if ndef $currentRule.facility>>                 <<set $currentRule.facility = []>>                <</if>>
-	<<if ndef $currentRule.excludeFacility>>          <<set $currentRule.excludeFacility = []>>         <</if>>
-	<<if ndef $currentRule.drug>>                     <<set $currentRule.drug = "no default setting">>  <</if>>
-	<<if ndef $currentRule.pregSpeed>>                <<set $currentRule.pregSpeed = "nds">>			<</if>>
-	
-	/* Sanitize textbox inputs. */
-	<<if $currentRule.growth.boobs != "no default setting">>
-		<<set $currentRule.growth.boobs = Number($currentRule.growth.boobs), $currentRule.growth.boobs = Math.clamp($currentRule.growth.boobs,0,48000)>>
-		<<if isNaN($currentRule.growth.boobs)>>
-			<<set $currentRule.growth.boobs = "no default setting">>
-		<</if>>
-	<</if>>
-	
-	<<if $currentRule.growth.butt != "no default setting">>
-		<<set $currentRule.growth.butt = Number($currentRule.growth.butt), $currentRule.growth.butt = Math.clamp($currentRule.growth.butt,0,10)>>
-		<<if isNaN($currentRule.growth.butt)>>
-			<<set $currentRule.growth.butt = "no default setting">>
-		<</if>>
-	<</if>>
-	
-	<<if $currentRule.growth.lips != "no default setting">>
-		<<set $currentRule.growth.lips = Number($currentRule.growth.lips), $currentRule.growth.lips = Math.clamp($currentRule.growth.lips,0,100)>>
-		<<if isNaN($currentRule.growth.lips)>>
-			<<set $currentRule.growth.lips = "no default setting">>
-		<</if>>
-	<</if>>
-	
-	<<if $currentRule.growth.dick != "no default setting">>
-		<<set $currentRule.growth.dick = Number($currentRule.growth.dick), $currentRule.growth.dick = Math.clamp($currentRule.growth.dick,0,10)>>
-		<<if isNaN($currentRule.growth.dick)>>
-			<<set $currentRule.growth.dick = "no default setting">>
-		<</if>>
-	<</if>>
-	
-	<<if $currentRule.growth.balls != "no default setting">>
-		<<set $currentRule.growth.balls = Number($currentRule.growth.balls), $currentRule.growth.balls = Math.clamp($currentRule.growth.balls,0,10)>>
-		<<if isNaN($currentRule.growth.balls)>>
-			<<set $currentRule.growth.balls = "no default setting">>
-		<</if>>
-	<</if>>
-	
-	<<if !($currentRule.diet == "no default setting" || $currentRule.diet == "attractive" || $currentRule.diet == "XY" || $currentRule.diet == "XX" || $currentRule.diet == "XXY" || $currentRule.diet == "cleansing" || $currentRule.diet == "fertility" || $currentRule.diet == "cum production")>>
-		<<set $currentRule.diet = Number($currentRule.diet), $currentRule.diet = Math.clamp($currentRule.diet,-100,200)>>
-		<<if isNaN($currentRule.diet)>>
-			<<set $currentRule.diet = "no default setting">>
-		<</if>>	<</if>>
-	
-	<<if $currentRule.muscles != "no default setting">>
-		<<set $currentRule.muscles = Number($currentRule.muscles), $currentRule.muscles = Math.clamp($currentRule.muscles,-100,100)>>
-		<<if isNaN($currentRule.muscles)>>
-			<<set $currentRule.muscles = "no default setting">>
-		<</if>>
-	<</if>>
-	
-
-	<<for $r = _length - 1; $r >= 0; $r-->>
-		<<if $defaultRules[$r] == null>>
-			<<set $defaultRules.deleteAt($r)>>
-			<<goto "Rules Assistant">>
-		<<elseif $currentRule.ID == $defaultRules[$r].ID>>
-			<<set $r = $r + 1>>
-			<<break>>
-		<</if>>
-	<</for>>
-
-	<center>
-		<<if $r > 1>>
-			@@.cyan;[Shift+←,Shift+Q] @@
-			<span id="firstRule">
-				''[[First|Rules Assistant][$currentRule = $defaultRules[0]]]''
-			</span>
-			|
-			@@.cyan;[←,Q] @@
-			<span id="prevRule">
-				''[[Prev|Rules Assistant][$currentRule = $defaultRules[$r-2]]]''
-			</span>
-		<<else>>
-			[Shift+←,Shift+Q] First  |  [←,Q] Prev
-		<</if>>
-
-		&nbsp;&nbsp;&nbsp;&nbsp;''Viewing Rule $r of _length''&nbsp;&nbsp;&nbsp;&nbsp;
-
-		<<if $r < _length>>
-			<span id="nextRule">
-				''[[Next|Rules Assistant][$currentRule = $defaultRules[$r]]]''
-			</span>@@.cyan; [E,→]@@
-			|
-			<span id="lastRule">
-				''[[Last|Rules Assistant][$currentRule = $defaultRules[_length-1]]]''
-			</span>@@.cyan; [Shift+E,Shift+→]@@
-		<<else>>
-			Next [E,→]  |  Last [Shift+E,Shift+→]
-		<</if>>
-	</center>
-
-	<center>
-		<<if $r > 1>>
-			<<= $defaultRules[$r-2].name>> &emsp; <- &emsp;&emsp;
-		<<else>>
-			&emsp;&emsp;&emsp;&emsp;&emsp;
-		<</if>>
-
-		<span id="rulename">
-			@@.yellow;$currentRule.name@@
-		</span>
-
-		<<if $r < _length>>
-			&emsp;&emsp; -> &emsp; <<= $defaultRules[$r].name>>
-		<<else>>
-			&emsp;&emsp;&emsp;&emsp;&emsp;
-		<</if>>
-	</center>
-
-	<center>
-		<span id="ruleDown">
-			<<if $r > 1>>
-				<<link "Lower Priority">>
-					<<set _tmpRule = $defaultRules[$r-1]>>
-					<<set $defaultRules[$r-1] = $defaultRules[$r-2]>>
-					<<set $defaultRules[$r-2] = _tmpRule>>
-					<<goto "Rules Assistant">>
-				<</link>>
-			<<else>>
-				Lower Priority
-			<</if>>
-		</span>
-		|
-		<<link "Rename">>
-			<<replace "#rulename">>
-				<<textbox "$currentRule.name" $currentRule.name "Rules Assistant">>
-			<</replace>>
-		<</link>>
-		|
-		<span id="ruleUp">
-			<<if $r < _length>>
-				<<link "Higher Priority">>
-					<<set _tmpRule = $defaultRules[$r-1]>>
-					<<set $defaultRules[$r-1] = $defaultRules[$r]>>
-					<<set $defaultRules[$r] = _tmpRule>>
-					<<goto "Rules Assistant">>
-				<</link>>
-			<<else>>
-				Higher Priority
-			<</if>>
-		</span>
-	</center>
-<</if>> /* closes if _length > 0 */
-
-<br>
-
-//<<if def $PC.customTitle>>$PC.customTitle<<elseif $PC.title != 0>>Sir<<else>>Ma'am<</if>>, I will review your slaves and make changes that will have a beneficial effect. Apologies, sir, but this function is... not fully complete. It may have some serious limitations. Please use the 'no default setting' option to identify areas I should not address.//
-
-<br><br> /* Control method for quick switching to specific rule in list */
-List of rules: <br>
-<<if _length > 1>>
-	<<set _crule = $r-1>>
-	<<for _r = 0; _r < _length; _r++>>
-		<<if _r > 0 >> | <</if>> 
-		<<rbutton "_crule" _r>> $defaultRules[_r].name
-	<</for>>
-	<br>
-	<<link "Switch to selected rule">>  
-		<<set $currentRule = $defaultRules[_crule]>>
-		<<goto "Rules Assistant">>
-	<</link>> | 
-<</if>>
-
-	<<link "Add a new rule">>
-
-		<<set _tempRule = {aphrodisiacs: "no default setting", condition: {id: "false"}, releaseRules: "no default setting", clitSetting: "no default setting", clitSettingXY: "no default setting", clitSettingXX: "no default setting", clitSettingEnergy: "no default setting", speechRules: "no default setting", clothes: "no default setting", collar: "no default setting", shoes: "no default setting", virginAccessory: "no default setting", aVirginAccessory: "no default setting", vaginalAccessory: "no default setting", aVirginDickAccessory: "no default setting", dickAccessory: "no default setting", bellyAccessory: "no default setting", aVirginButtplug: "no default setting", buttplug: "no default setting", eyeColor: "no default setting", makeup: "no default setting", nails: "no default setting", hColor: "no default setting", hLength: "no default setting", hStyle: "no default setting", pubicHColor: "no default setting", pubicHStyle: "no default setting", nipplesPiercing: "no default setting", areolaePiercing: "no default setting", clitPiercing: "no default setting", vaginaLube: "no default setting", vaginaPiercing: "no default setting", dickPiercing: "no default setting", anusPiercing: "no default setting", lipsPiercing: "no default setting", tonguePiercing: "no default setting", earPiercing: "no default setting", nosePiercing: "no default setting", eyebrowPiercing: "no default setting", navelPiercing: "no default setting", corsetPiercing: "no default setting", boobsTat: "no default setting", buttTat: "no default setting", vaginaTat: "no default setting", dickTat: "no default setting", lipsTat: "no default setting", anusTat: "no default setting", shouldersTat: "no default setting", armsTat: "no default setting", legsTat: "no default setting", backTat: "no default setting", stampTat: "no default setting", curatives: "no default setting", livingRules: "no default setting", relationshipRules: "no default setting", standardPunishment: "no default setting", standardReward: "no default setting", diet: "no default setting", dietCum: "no default setting", dietMilk: "no default setting", muscles: "no default setting", XY: "no default setting", XX: "no default setting", gelding: "no default setting", preg: "no default setting", growth: {boobs: "no default setting", butt: "no default setting", lips: "no default setting", dick: "no default setting", balls: "no default setting"}, autoSurgery: 0, autoBrand: 0, pornFameSpending: "no default setting", dietGrowthSupport: 0, eyewear: "no default setting", assignment: [], excludeAssignment: [], setAssignment: "no default setting", facility: [], excludeFacility: [], excludeSpecialSlaves: true, facilityRemove: false, removalAssignment: "rest", selectedSlaves: [], excludedSlaves: [], surgery: {eyes: "no default setting", lactation: "no default setting", prostate: "no default setting", cosmetic: "nds", accent: "no default setting", shoulders: "no default setting", shouldersImplant: "no default setting", boobs: "no default setting", hips: "no default setting", hair: "nds", bodyhair:"nds", hipsImplant: "no default setting", butt: "no default setting", faceShape: "no default setting", lips: "no default setting", holes: "nds", bellyImplant: "no default setting"}, underArmHColor: "no default setting", underArmHStyle: "no default setting", drug: "no default setting", eyes: "no default setting", pregSpeed: "nds", bellyImplantVol: -1}>>
-
-		/* pick an ID higher than the highest ID of any existing rule */
-		<<for _tempRule.ID = 1, _r = 0; _r < _length; _r++>>
-			<<set _tempRule.ID = Math.max(_tempRule.ID, $defaultRules[_r].ID + 1)>>
-		<</for>>
-		<<set _tempRule.name = "Rule " + (_length+1)>>
-
-		<<set $defaultRules.push(_tempRule)>>
-		<<set $currentRule = $defaultRules[_length]>>
-		<<goto "Rules Assistant">>
-
-	<</link>> | 
-	<<link "Remove rule '$currentRule.name'">>
-		<<set $defaultRules.deleteAt($r-1)>>
-		<<for $r = $defaultRules.length; $r > 0; $r-->>
-			<<if def $defaultRules[$r-1]>>
-				<<set $currentRule = $defaultRules[$r-1]>>
-				<<break>>
-			<</if>>
-		<</for>>
-		<<goto "Rules Assistant">>
-	<</link>> |
-	<span class="saveresult"></span>
-		<<timed 50ms>>
-		<<RAChangeSave>>
-	<</timed>>
-<br><br>
-<<if _length >= 10>>''@@.red;ATTENTION! Current rules count is 10 or above. High rules count can dramatically slow down game speed (especially if slaves count is high too), or even cause freeze of game page/browser. Use at your own risk!@@''
-<br><br>
-<</if>>
-
-<<if _length < 1>>
-''No rules.''
-
-<<else>>
-
-__Rule $r Automatic Activation__
-<span id="activation"></span>
-
-<<if isSimpleCondition($currentRule.condition, ["devotion", "trust", "health", "energy", "weight", "actualAge", "physicalAge", "visualAge", "muscles", "lactation", "preg", "pregType", "bellyImplant", "belly"])>>
-
-<<timed 50ms>>
-	<<RAChangeActivation>>
-<</timed>>
-
-<br>
-<<link "None">>
-	<<unset _customCondition>>
-	<<set $currentRule.condition = {id: "false"}>>
-	<<RAChangeActivation>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Always">>
-	<<unset _customCondition>>
-	<<set $currentRule.condition = {id: "true"}>>
-	<<RAChangeActivation>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Devotion">>
-	<<unset _customCondition>>
-	<<set $currentRule.condition = changeVariable($currentRule.condition, "devotion")>>
-	<<RAChangeActivation>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Trust">>
-	<<unset _customCondition>>
-	<<set $currentRule.condition = changeVariable($currentRule.condition, "trust")>>
-	<<RAChangeActivation>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Health">>
-	<<unset _customCondition>>
-	<<set $currentRule.condition = changeVariable($currentRule.condition, "health")>>
-	<<RAChangeActivation>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Sex drive">>
-	<<unset _customCondition>>
-	<<set $currentRule.condition = changeVariable($currentRule.condition, "energy")>>
-	<<RAChangeActivation>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Weight">>
-	<<unset _customCondition>>
-	<<set $currentRule.condition = changeVariable($currentRule.condition, "weight")>>
-	<<RAChangeActivation>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Age">>
-	<<unset _customCondition>>
-	<<set $currentRule.condition = changeVariable($currentRule.condition, "actualAge")>>
-	<<RAChangeActivation>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Body Age">>
-	<<unset _customCondition>>
-	<<set $currentRule.condition = changeVariable($currentRule.condition, "physicalAge")>>
-	<<RAChangeActivation>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Visible Age">>
-	<<unset _customCondition>>
-	<<set $currentRule.condition = changeVariable($currentRule.condition, "visualAge")>>
-	<<RAChangeActivation>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Muscles">>
-	<<unset _customCondition>>
-	<<set $currentRule.condition = changeVariable($currentRule.condition, "muscles")>>
-	<<RAChangeActivation>>
-	<<RARuleModified>>
-<</link>> 
-|
-<<link "Lactation">>
-	<<unset _customCondition>>
-	<<set $currentRule.condition = changeVariable($currentRule.condition, "lactation")>>
-	<<RAChangeActivation>>
-	<<RARuleModified>>
-<</link>> 
-|
-<<link "Pregnancy">>
-	<<unset _customCondition>>
-	<<set $currentRule.condition = changeVariable($currentRule.condition, "preg")>>
-	<<RAChangeActivation>>
-	<<RARuleModified>>
-<</link>> 
-|
-<<link "Pregnancy Multiples">>
-	<<unset _customCondition>>
-	<<set $currentRule.condition = changeVariable($currentRule.condition, "pregType")>>
-	<<RAChangeActivation>>
-	<<RARuleModified>>
-<</link>> 
-<<if $bellyImplants == 1>>
-|
-<<link "Belly implant">>
-	<<unset _customCondition>>
-	<<set $currentRule.condition = changeVariable($currentRule.condition, "bellyImplant")>>
-	<<RAChangeActivation>>
-	<<RARuleModified>>
-<</link>> 
-<</if>>
-|
-<<link "Belly Size">>
-	<<unset _customCondition>>
-	<<set $currentRule.condition = changeVariable($currentRule.condition, "belly")>>
-	<<RAChangeActivation>>
-	<<RARuleModified>>
-<</link>> 
-|
-<<link "Custom">>
-	<<if (def _customConditionOld)>>
-		<<set _customCondition = _customConditionOld>>
-	<<else>>
-		<<set _customCondition = unparseExpr($currentRule.condition)>>
-	<</if>>
-	<<replace "#activation">>
-		(custom): <br>
-		<<textinput "_customCondition" _customCondition>>
-			<<set _customConditionOld = _customCondition>>
-			<<RARuleModified>>
-		<</textinput>>
-	<</replace>>
-	<<RARuleModified>>
-<</link>>
-
-<<else>>
-	<<if (def _customConditionOld)>>
-		<<set _customCondition = _customConditionOld>>
-	<<else>>
-		<<set _customCondition = unparseExpr($currentRule.condition)>>
-	<</if>>
-	<<timed 50ms>>
-	<<replace "#activation">>
-		(custom): <br>
-		//Sir, I'm afraid the condition you have given me is too complex to display in the usual interface.//<br>
-		<<textinput "_customCondition" _customCondition>>
-			<<set _customConditionOld = _customCondition>>
-			<<RARuleModified>>
-		<</textinput>>
-	<</replace>>
-	<</timed>>
-<</if>>
-
-<br><br>
-
-<span id="applyassignment"></span>
-<<timed 50ms>>
-	<<RAChangeApplyAssignment>>
-<</timed>>
-
-<br>
-<span id="excludeassignment"></span>
-<<timed 50ms>>
-	<<RAChangeExcludeAssignment>>
-<</timed>>
-
-<span id="applyfacility"></span>
-<<timed 50ms>>
-	<<RAChangeApplyFacility>>
-<</timed>>
-
-<span id="excludefacility"></span>
-<<timed 50ms>>
-	<<RAChangeExcludeFacility>>
-<</timed>>
-
-<br><br>
-<span id="specialslaves"></span>
-<<timed 50ms>>
-	<<RASpecialSlaves>>
-<</timed>>
-
-&nbsp;&nbsp;&nbsp;&nbsp;
-
-<<if $currentRule.selectedSlaves.length < 1 && $currentRule.excludedSlaves.length < 1>>
-  @@.gray;No specific slaves selected:@@
-	[[Limit to specific slaves|Rules Slave Select][$currentRule.excludedSlaves = []]] | [[Exclude specific slaves|Rules Slave Exclude][$currentRule.selectedSlaves = []]]
-<<elseif $currentRule.selectedSlaves.length < 1 && $currentRule.excludedSlaves.length > 0>>
-	<br>Excluding specific slaves:
-	<ul>
-	<<for _j = 0; _j < $slaves.length; _j++>>
-		<<if $currentRule.excludedSlaves.includes($slaves[_j].ID)>>
-			<li>$slaves[_j].slaveName</li>
-		<</if>>
-	<</for>>
-	</ul>
-	[[Change specific slaves|Rules Slave Exclude]] | [[Don't exclude specific slaves|Rules Assistant][$currentRule.excludedSlaves = []]]
-<<else>>
-	<br>Limited to specific slaves (this list does not override the exclude special slaves setting above):
-	<ul>
-	<<for _j = 0; _j < $slaves.length; _j++>>
-		<<if $currentRule.selectedSlaves.includes($slaves[_j].ID)>>
-			<li>$slaves[_j].slaveName</li>
-		<</if>>
-	<</for>>
-	</ul>
-	[[Change specific slaves|Rules Slave Select]] | [[Don't limit to specific slaves|Rules Assistant][$currentRule.selectedSlaves = [], $currentRule.excludedSlaves = []]]
-<</if>>
-
-<span id="setassignment"></span>
-<<timed 50ms>>
-	<<RAChangeSetAssignment>>
-<</timed>>
-
-<span id="assignfacility"></span>
-<<timed 50ms>>
-	<<RAChangeAssignFacility>>
-<</timed>>
-
-<br><br>
-
-__Rule $r Default Appearance:__
-<br>
-Clothes:
-<span id="clothes">
-<<if ($currentRule.clothes == "choosing her own clothes")>>
-	''slave's choice.''
-<<else>>
-	''$currentRule.clothes.''
-<</if>>
-</span>
-|
-<<link "Select her own outfit">>
-	<<set $currentRule.clothes = "choosing her own clothes">>
-	<<RAChangeClothes>>
-	<<RARuleModified>>
-<</link>>
-
-<br>&nbsp;&nbsp;&nbsp;&nbsp;
-//Nice://
-<<link "No default clothes setting">>
-	<<set $currentRule.clothes = "no default setting">>
-	<<RAChangeClothes>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Apron">>
-	<<set $currentRule.clothes = "an apron">>
-	<<RAChangeClothes>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Bangles">>
-	<<set $currentRule.clothes = "slutty jewelry">>
-	<<RAChangeClothes>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Bodysuit">>
-	<<set $currentRule.clothes = "a comfortable bodysuit">>
-	<<RAChangeClothes>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Cheerleader outfit">>
-	<<set $currentRule.clothes = "a cheerleader outfit">>
-	<<RAChangeClothes>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Clubslut netting">>
-	<<set $currentRule.clothes = "clubslut netting">>
-	<<RAChangeClothes>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Cutoffs and a t-shirt">>
-	<<set $currentRule.clothes = "cutoffs and a t-shirt">>
-	<<RAChangeClothes>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Cybersuit">>
-	<<set $currentRule.clothes = "a cybersuit">>
-	<<RAChangeClothes>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Fallen nun">>
-	<<set $currentRule.clothes = "a fallen nuns habit">>
-	<<RAChangeClothes>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Halter top">>
-	<<set $currentRule.clothes = "a halter top dress">>
-	<<RAChangeClothes>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Hijab and abaya">>
-	<<set $currentRule.clothes = "a hijab and abaya">>
-	<<RAChangeClothes>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Latex catsuit">>
-	<<set $currentRule.clothes = "a latex catsuit">>
-	<<RAChangeClothes>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Leotard">>
-	<<set $currentRule.clothes = "a leotard">>
-	<<RAChangeClothes>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Maid (nice)">>
-	<<set $currentRule.clothes = "a nice maid outfit">>
-	<<RAChangeClothes>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Maid (slutty)">>
-	<<set $currentRule.clothes = "a slutty maid outfit">>
-	<<RAChangeClothes>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Military uniform">>
-	<<set $currentRule.clothes = "a military uniform">>
-	<<RAChangeClothes>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Schutzstaffel uniform">>
-	<<set $currentRule.clothes = "a schutzstaffel uniform">>
-	<<RAChangeClothes>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Schutzstaffel uniform (slutty)">>
-	<<set $currentRule.clothes = "a slutty schutzstaffel uniform">>
-	<<RAChangeClothes>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Red Army uniform">>
-	<<set $currentRule.clothes = "a red army uniform">>
-	<<RAChangeClothes>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Mini dress">>
-	<<set $currentRule.clothes = "a mini dress">>
-	<<RAChangeClothes>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Monokini">>
-	<<set $currentRule.clothes = "a monokini">>
-	<<RAChangeClothes>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Nice lingerie">>
-	<<set $currentRule.clothes = "attractive lingerie">>
-	<<RAChangeClothes>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Nurse (nice)">>
-	<<set $currentRule.clothes = "a nice nurse outfit">>
-	<<RAChangeClothes>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Nurse (slutty)">>
-	<<set $currentRule.clothes = "a slutty nurse outfit">>
-	<<RAChangeClothes>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Scalemail bikini">>
-	<<set $currentRule.clothes = "a scalemail bikini">>
-	<<RAChangeClothes>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Schoolgirl">>
-	<<set $currentRule.clothes = "a schoolgirl outfit">>
-	<<RAChangeClothes>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Silken ballgown">>
-	<<set $currentRule.clothes = "a ball gown">>
-	<<RAChangeClothes>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Skimpy battledress">>
-	<<set $currentRule.clothes = "battledress">>
-	<<RAChangeClothes>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Slave gown">>
-	<<set $currentRule.clothes = "a slave gown">>
-	<<RAChangeClothes>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Slutty outfit">>
-	<<set $currentRule.clothes = "a slutty outfit">>
-	<<RAChangeClothes>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "String bikini">>
-	<<set $currentRule.clothes = "a string bikini">>
-	<<RAChangeClothes>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Succubus costume">>
-	<<set $currentRule.clothes = "a succubus outfit">>
-	<<RAChangeClothes>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Suit (nice)">>
-	<<set $currentRule.clothes = "nice business attire">>
-	<<RAChangeClothes>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Suit (slutty)">>
-	<<set $currentRule.clothes = "slutty business attire">>
-	<<RAChangeClothes>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Spats and tank top">>
-	<<set $currentRule.clothes = "spats and a tank top">>
-	<<RAChangeClothes>>
-	<<RARuleModified>>
-<</link>>
-|
-<<if isItemAccessible("body oil")>>
-	//FS//
-	<<link "Body oil">>
-		<<set $currentRule.clothes = "body oil">>
-		<<RAChangeClothes>>
-		<<RARuleModified>>
-	<</link>>
-	|
-<</if>>
-<<if isItemAccessible("a bunny outfit")>>
-	//FS//
-	<<link "Bunny outfit">>
-		<<set $currentRule.clothes = "a bunny outfit">>
-		<<RAChangeClothes>>
-		<<RARuleModified>>
-	<</link>>
-	|
-<</if>>
-<<if isItemAccessible("a chattel habit")>>
-	//FS//
-	<<link "Chattel habit">>
-		<<set $currentRule.clothes = "a chattel habit">>
-		<<RAChangeClothes>>
-		<<RARuleModified>>
-	<</link>>
-	|
-<</if>>
-<<if isItemAccessible("conservative clothing")>>
-	//FS//
-	<<link "Conservative clothing">>
-		<<set $currentRule.clothes = "conservative clothing">>
-		<<RAChangeClothes>>
-		<<RARuleModified>>
-	<</link>>
-	|
-<</if>>
-<<if isItemAccessible("harem gauze")>>
-	//FS//
-	<<link "Harem gauze">>
-		<<set $currentRule.clothes = "harem gauze">>
-		<<RAChangeClothes>>
-		<<RARuleModified>>
-	<</link>>
-	|
-<</if>>
-<<if isItemAccessible("a huipil")>>
-	//FS//
-	<<link "Huipil">>
-		<<set $currentRule.clothes = "a huipil">>
-		<<RAChangeClothes>>
-		<<RARuleModified>>
-	<</link>>
-	|
-<</if>>
-<<if isItemAccessible("a kimono")>>
-	//FS//
-	<<link "Kimono">>
-		<<set $currentRule.clothes = "a kimono">>
-		<<RAChangeClothes>>
-		<<RARuleModified>>
-	<</link>>
-	|
-<</if>>
-<<if isItemAccessible("a maternity dress")>>
-	//FS//
-	<<link "Maternity dress">>
-		<<set $currentRule.clothes = "a maternity dress">>
-		<<RAChangeClothes>>
-		<<RARuleModified>>
-	<</link>>
-	|
-<</if>>
-<<if isItemAccessible("attractive lingerie for a pregnant woman")>>
-	//FS//
-	<<link "Maternity lingerie">>
-		<<set $currentRule.clothes = "attractive lingerie for a pregnant woman">>
-		<<RAChangeClothes>>
-		<<RARuleModified>>
-	<</link>>
-	|
-<</if>>
-<<if isItemAccessible("a slutty qipao")>>
-	//FS//
-	<<link "Slutty qipao">>
-		<<set $currentRule.clothes = "a slutty qipao">>
-		<<RAChangeClothes>>
-		<<RARuleModified>>
-	<</link>>
-	|
-<</if>>
-<<if isItemAccessible("stretch pants and a crop-top")>>
-	//FS//
-	<<link "Stretch pants and a crop-top">>
-		<<set $currentRule.clothes = "stretch pants and a crop-top">>
-		<<RAChangeClothes>>
-		<<RARuleModified>>
-	<</link>>
-	|
-<</if>>
-<<if isItemAccessible("a toga")>>
-	//FS//
-	<<link "Toga">>
-		<<set $currentRule.clothes = "a toga">>
-		<<RAChangeClothes>>
-		<<RARuleModified>>
-	<</link>>
-	|
-<</if>>
-<<if isItemAccessible("Western clothing")>>
-	//FS//
-	<<link "Western clothing">>
-		<<set $currentRule.clothes = "Western clothing">>
-		<<RAChangeClothes>>
-		<<RARuleModified>>
-	<</link>>
-<</if>>
-
-<br>&nbsp;&nbsp;&nbsp;&nbsp;
-//Harsh://
-<<link "Nude">>
-	<<set $currentRule.clothes = "no clothing">>
-	<<RAChangeClothes>>
-	<<RARuleModified>>
-<</link>>
-<<if isItemAccessible("chains")>>
-	| //FS//
-	<<link "Chains">>
-		<<set $currentRule.clothes = "chains">>
-		<<RAChangeClothes>>
-		<<RARuleModified>>
-	<</link>>
-	|
-<</if>>
-|
-<<link "Penitent nun">>
-	<<set $currentRule.clothes = "a penitent nuns habit">>
-	<<RAChangeClothes>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Restrictive latex">>
-	<<set $currentRule.clothes = "restrictive latex">>
-	<<RAChangeClothes>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Shibari ropes">>
-	<<set $currentRule.clothes = "shibari ropes">>
-	<<RAChangeClothes>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Uncomfortable straps">>
-	<<set $currentRule.clothes = "uncomfortable straps">>
-	<<RAChangeClothes>>
-	<<RARuleModified>>
-<</link>>
-
-
-<br>
-Collar: <span id="collar">''$currentRule.collar.''</span>
-<<link "No default collar setting">>
-	<<set $currentRule.collar = "no default setting">>
-	<<RAChangeCollar>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "No collar">>
-	<<set $currentRule.collar = "none">>
-	<<RAChangeCollar>>
-	<<RARuleModified>>
-<</link>>
-
-<br>&nbsp;&nbsp;&nbsp;&nbsp;
-//Nice://
-<<link "Stylish leather">>
-	<<set $currentRule.collar = "stylish leather">>
-	<<RAChangeCollar>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Satin choker">>
-	<<set $currentRule.collar = "satin choker">>
-	<<RAChangeCollar>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Silken Ribbon">>
-	<<set $currentRule.collar = "silk ribbon">>
-	<<RAChangeCollar>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Heavy Gold">>
-	<<set $currentRule.collar = "heavy gold">>
-	<<RAChangeCollar>>
-<</link>>
-|
-<<link "Pretty jewelry">>
-	<<set $currentRule.collar = "pretty jewelry">>
-	<<RAChangeCollar>>
-	<<RARuleModified>>
-<</link>>
-|
-<<if $seeAge != 0>>
-<<link "Nice retirement counter">>
-	<<set $currentRule.collar = "nice retirement counter">>
-	<<RAChangeCollar>>
-	<<RARuleModified>>
-<</link>>
-|
-<</if>>
-<<link "Cowbell">>
-	<<set $currentRule.collar = "leather with cowbell">>
-	<<RAChangeCollar>>
-	<<RARuleModified>>
-<</link>>
-<<if isItemAccessible("bowtie")>>
-   | //FS//
-<<link "Bowtie collar">>
-	<<set $currentRule.collar = "bowtie">>
-	<<RAChangeCollar>>
-	<<RARuleModified>>
-<</link>>
-<</if>>
-<<if isItemAccessible("ancient Egyptian")>>
-   | //FS//
-<<link "Ancient Egyptian">>
-	<<set $currentRule.collar = "ancient Egyptian">>
-	<<RAChangeCollar>>
-	<<RARuleModified>>
-<</link>>
-<</if>>
-
-<br>&nbsp;&nbsp;&nbsp;&nbsp;
-//Harsh:// 
-<<for _i = 0; _i < setup.harshCollars.length; _i++>>
-	<<if _i == 0>>
-	<<elseif ndef setup.harshCollars[_i].fs && ndef setup.harshCollars[_i].rs>>
-		|
-	<<elseif (setup.harshCollars[_i].fs == "seeage") && ($seeAge != 0)>>
-		|
-	<<elseif $cheatMode == 1>>
-		| //CM//
-	<<elseif (setup.harshCollars[_i].rs == "buyGag") && ($toysBoughtGags == 1)>>
-		| //Purchased//
-	<<else>>
-		<<continue>>
-	<</if>>
-	<<capture _i>>
-	<<link setup.harshCollars[_i].name>>
-		<<set $currentRule.collar = setup.harshCollars[_i].value>>
-		<<RAChangeCollar>>
-		<<RARuleModified>>
-	<</link>>
-	<</capture>>
-<</for>>
-
-
-<br>
-Shoes: <span id="shoes">''$currentRule.shoes.''</span>
-
-<<for _i = 0; _i < setup.shoes.length; _i++>>
-	<<if _i != 0>>
-		|
-	<</if>>
-	<<capture _i>>
-	<<link setup.shoes[_i].name>>
-		<<set $currentRule.shoes = setup.shoes[_i].value>>
-		<<RAChangeShoes>>
-		<<RARuleModified>>
-	<</link>>
-	<</capture>>
-<</for>>
-
-<br>
-Corsetage: <span id="baccessory">''$currentRule.bellyAccessory.''</span>
-
-<<for _i = 0; _i < setup.bellyAccessories.length; _i++>>
-	<<if _i == 0>>
-	<<elseif ndef setup.bellyAccessories[_i].fs && ndef setup.bellyAccessories[_i].rs>>
-		|
-	<<elseif $cheatMode == 1>>
-		| //CM//
-	<<elseif (setup.bellyAccessories[_i].fs == "repopulation") && ($arcologies[0].FSRepopulationFocus != "unset")>>
-		| //FS//
-	<<elseif (setup.bellyAccessories[_i].rs == "boughtBelly") && ($clothesBoughtBelly == 1)>>
-		| //Purchased//
-	<<else>>
-		<<continue>>
-	<</if>>
-	<<capture _i>>
-	<<link setup.bellyAccessories[_i].name>>
-		<<set $currentRule.bellyAccessory = setup.bellyAccessories[_i].value>>
-		<<RAChangeBelly>>
-		<<RARuleModified>>
-	<</link>>
-	<</capture>>
-<</for>>
-
-<br>
-Vaginal accessories for virgins: <span id = "vaccessory">''$currentRule.virginAccessory.''</span>
-<br>&nbsp;&nbsp;&nbsp;&nbsp;
-
-<<for _i =0; _i < setup.vaginalAccessories.length; _i++>>
-	<<if _i == 0>>
-	<<elseif ndef setup.vaginalAccessories[_i].fs && ndef setup.vaginalAccessories[_i].rs>>
-		|
-	<<elseif $cheatMode == 1>>
-		| //CM//
-	<<elseif (setup.vaginalAccessories[_i].rs == "buyBigDildos") && ($toysBoughtDildos == 1)>>
-		| //Purchased//
-	<<else>>
-		<<continue>>
-	<</if>>
-	<<capture _i>>
-	<<link setup.vaginalAccessories[_i].name>>
-		<<set $currentRule.virginAccessory = setup.vaginalAccessories[_i].value>>
-		<<RAChangeVAccessory 0>>
-		<<RARuleModified>>
-	<</link>>
-	<</capture>>
-	<<if setup.vaginalAccessories[_i].value == "huge dildo" || setup.vaginalAccessories[_i].value == "long, huge dildo">>
-		//Will permanently gape pussies//
-	<</if>>
-<</for>>
-
-<br>
-Vaginal accessories for anal virgins: <span id="avaccessory">''$currentRule.aVirginAccessory.''</span>
-<br>&nbsp;&nbsp;&nbsp;&nbsp;
-
-<<for _i = 0; _i < setup.vaginalAccessories.length; _i++>>
-	<<if _i == 0>>
-	<<elseif ndef setup.vaginalAccessories[_i].fs && ndef setup.vaginalAccessories[_i].rs>>
-		|
-	<<elseif $cheatMode == 1>>
-		| //CM//
-	<<elseif (setup.vaginalAccessories[_i].rs == "buyBigDildos") && ($toysBoughtDildos == 1)>>
-		| //Purchased//
-	<<else>>
-		<<continue>>
-	<</if>>
-	<<capture _i>>
-	<<link setup.vaginalAccessories[_i].name>>
-		<<set $currentRule.aVirginAccessory = setup.vaginalAccessories[_i].value>>
-		<<RAChangeVAccessory 1>>
-		<<RARuleModified>>
-	<</link>>
-	<</capture>>
-	<<if setup.vaginalAccessories[_i].value == "huge dildo" || setup.vaginalAccessories[_i].value == "long, huge dildo">>
-		//Will permanently gape pussies//
-	<</if>>
-<</for>>
-
-<br>
-Vaginal accessories for other slaves: <span id="voaccessory">''$currentRule.vaginalAccessory.''</span>
-<br>&nbsp;&nbsp;&nbsp;&nbsp;
-
-<<for _i = 0; _i < setup.vaginalAccessories.length; _i++>>
-	<<if _i == 0>>
-	<<elseif ndef setup.vaginalAccessories[_i].fs && ndef setup.vaginalAccessories[_i].rs>>
-		|
-	<<elseif $cheatMode == 1>>
-		| //CM//
-	<<elseif (setup.vaginalAccessories[_i].rs == "buyBigDildos") && ($toysBoughtDildos == 1)>>
-		| //Purchased//
-	<<else>>
-		<<continue>>
-	<</if>>
-	<<capture _i>>
-	<<link setup.vaginalAccessories[_i].name>>
-		<<set $currentRule.vaginalAccessory = setup.vaginalAccessories[_i].value>>
-		<<RAChangeVAccessory 2>>
-		<<RARuleModified>>
-	<</link>>
-	<</capture>>
-	<<if setup.vaginalAccessories[_i].value == "huge dildo" || setup.vaginalAccessories[_i].value == "long, huge dildo">>
-		//Will permanently gape pussies//
-	<</if>>
-<</for>>
-
-
-<<if $seeDicks != 0 || $makeDicks != 0>>
-<br>
-Dick accessories for anal virgins: <span id="avdaccessory">''$currentRule.aVirginDickAccessory.''</span>
-
-<<for _i = 0; _i < setup.dickAccessories.length; _i++>>
-	<<if _i != 0>>
-	|
-	<</if>>
-	<<capture _i>>
-	<<link setup.dickAccessories[_i].name>>
-		<<set $currentRule.aVirginDickAccessory = setup.dickAccessories[_i].value>>
-		<<RAChangeDAccessory 0>>
-		<<RARuleModified>>
-	<</link>>
-	<</capture>>
-<</for>>
-
-<br>
-Dick accessories for other slaves: <span id="daccessory">''$currentRule.dickAccessory.''</span>
-
-<<for _i = 0; _i < setup.dickAccessories.length; _i++>>
-	<<if _i != 0>>
-	|
-	<</if>>
-	<<capture _i>>
-	<<link setup.dickAccessories[_i].name>>
-		<<set $currentRule.dickAccessory = setup.dickAccessories[_i].value>>
-		<<RAChangeDAccessory 1>>
-		<<RARuleModified>>
-	<</link>>
-	<</capture>>
-<</for>>
-<</if>>
-
-
-<br>
-Buttplugs for anal virgins: <span id="avbuaccessory">''$currentRule.aVirginButtplug.''</span>
-
-<<for _i = 0; _i < setup.buttplugs.length; _i++>>
-	<<if _i == 0>>
-	<<elseif ndef setup.buttplugs[_i].fs && ndef setup.buttplugs[_i].rs>>
-		|
-	<<elseif $cheatMode == 1>>
-		| //CM//
-	<<elseif (setup.buttplugs[_i].rs == "buyBigPlugs") && ($toysBoughtButtPlugs == 1)>>
-		| //Purchased//
-	<<else>>
-		<<continue>>
-	<</if>>
-	<<capture _i>>
-	<<link setup.buttplugs[_i].name>>
-		<<set $currentRule.aVirginButtplug = setup.buttplugs[_i].value>>
-		<<RAChangeBAccessory 0>>
-		<<RARuleModified>>
-	<</link>>
-	<</capture>>
-	<<if setup.buttplugs[_i].value == "huge plug" || setup.buttplugs[_i].value == "long, huge plug">>
-		//Will permanently gape assholes//
-	<</if>>
-<</for>>
-
-<br>
-Buttplugs for other slaves: <span id="buaccessory">''$currentRule.buttplug.''</span>
-
-<<for _i = 0; _i < setup.buttplugs.length; _i++>>
-	<<if _i == 0>>
-	<<elseif ndef setup.buttplugs[_i].fs && ndef setup.buttplugs[_i].rs>>
-		|
-	<<elseif $cheatMode == 1>>
-		| //CM//
-	<<elseif (setup.buttplugs[_i].rs == "buyBigPlugs") && ($toysBoughtButtPlugs == 1)>>
-		| //Purchased//
-	<<else>>
-		<<continue>>
-	<</if>>
-	<<capture _i>>
-	<<link setup.buttplugs[_i].name>>
-		<<set $currentRule.buttplug = setup.buttplugs[_i].value>>
-		<<RAChangeBAccessory 1>>
-		<<RARuleModified>>
-	<</link>>
-	<</capture>>
-	<<if setup.buttplugs[_i].value == "huge plug" || setup.buttplugs[_i].value == "long, huge plug">>
-		//Will permanently gape assholes//
-	<</if>>
-<</for>>
-
-<<if $bellyImplants >= 1>>	
-	<br>
-	Belly implant target volume (if present): ''<span id = "bimpl">no default setting</span>.''
-	<br>
-	<<rbutton "$currentRule.bellyImplantVol" "-1" "bimpl" "no changes">> No changes |
-	<<rbutton "$currentRule.bellyImplantVol" "0" "bimpl" "empty implant">> Empty |
-	<<rbutton "$currentRule.bellyImplantVol" "1500" "bimpl" "early pregnancy">> Small |
-	<<rbutton "$currentRule.bellyImplantVol" "5000" "bimpl" "second trimester pregnancy">> Mid-pregnancy |
-	<<rbutton "$currentRule.bellyImplantVol" "15000" "bimpl" "full-term pregnancy">> Full-term |
-	<<rbutton "$currentRule.bellyImplantVol" "30000" "bimpl" "full-term with twins pregnancy">> Twins |
-	<<rbutton "$currentRule.bellyImplantVol" "45000" "bimpl" "full-term with triplets pregnancy">> Triplets |
-	<<rbutton "$currentRule.bellyImplantVol" "60000" "bimpl" "full-term with quadruplets pregnancy">> Quads |
-	<<rbutton "$currentRule.bellyImplantVol" "75000" "bimpl" "full-term with quintuplets pregnancy">> Quints |
-	<<rbutton "$currentRule.bellyImplantVol" "90000" "bimpl" "full-term with sextuplets pregnancy">> Sextuplets |
-	<<rbutton "$currentRule.bellyImplantVol" "105000" "bimpl" "full-term with septuplets pregnancy">> Septuplets |
-	<<rbutton "$currentRule.bellyImplantVol" "120000" "bimpl" "full-term with octuplets pregnancy">> Octomom 
-<</if>>
-
-<br><br>
-Body modification: [[Cosmetic Rules Assistant Settings][$artificialEyeColor = "",$artificialEyeShape = ""]] | [[Body Mod Rules Assistant Settings]] | [[Autosurgery Settings]]
-<br>
-Assistant-applied implants (Autosurgery global switch):
-<span id = "assistantimplants">
-<<if $currentRule.autoSurgery == 1>>
-	''ACTIVE, STAND CLEAR.''
-	<<link "Off">>
-		<<set $currentRule.autoSurgery = 0>>
-		<<RAChangeAssistantImplants>>
-		<<RARuleModified>>
-	<</link>>
-<<else>>
-	''off.''
-	<<link "Activate">>
-		<<set $currentRule.autoSurgery = 1>>
-		<<RAChangeAssistantImplants>>
-		<<RARuleModified>>
-	<</link>>
-<</if>>
-</span>
-
-<br><br>
-
-__Rule $r Physical Regimen:__
-
-<br>
-
-Growth hormone regimes for healthy slaves:
-<span id="growth"></span>
-
-<<link "No default setting" "Rules Assistant">> <<set $currentRule.growth = {boobs: "no default setting", butt: "no default setting", lips: "no default setting", dick: "no default setting", balls: "no default setting"}>><</link>> |
-<<link "Girlish figure" "Rules Assistant">>     <<set $currentRule.growth = {boobs: 350, butt: 2, lips: 25, dick: 0, balls: 0}>><</link>> |
-<<link "Stacked figure" "Rules Assistant">>	<<set $currentRule.growth = {boobs: 1000, butt: 4, lips: 25, dick: 4, balls: 4}>><</link>> |
-<<link "Huge but functional" "Rules Assistant">><<set $currentRule.growth = {boobs: 9000, butt: 10, lips: 45, dick: 6, balls: 6}>><</link>> |
-<<link "Unlimited" "Rules Assistant">>          <<set $currentRule.growth = {boobs: 48000, butt: 10, lips: 100, dick: 10, balls: 6}>><</link>> |
-<<link "None" "Rules Assistant">>               <<set $currentRule.growth = {boobs: 0, butt: 0, lips: 0, dick: 0, balls: 0}>><</link>>
-
-<br>&nbsp;&nbsp;&nbsp;&nbsp;
-//Breasts://
-<span id="textBoobs"><<textbox "$currentRule.growth.boobs" $currentRule.growth.boobs "Rules Assistant">></span>
-<<link "No default setting">><<set $currentRule.growth.boobs = "no default setting">><<replace "#textBoobs">><<textbox "$currentRule.growth.boobs" $currentRule.growth.boobs "Rules Assistant">><</replace>><</link>> |
-<<link "B Cup">><<set $currentRule.growth.boobs = 350>><<replace "#textBoobs">><<textbox "$currentRule.growth.boobs" $currentRule.growth.boobs "Rules Assistant">><</replace>><</link>> |
-<<link "D Cup">><<set $currentRule.growth.boobs = 1000>><<replace "#textBoobs">><<textbox "$currentRule.growth.boobs" $currentRule.growth.boobs "Rules Assistant">><</replace>><</link>> |
-<<link "Monstrous">><<set $currentRule.growth.boobs = 9000>><<replace "#textBoobs">><<textbox "$currentRule.growth.boobs" $currentRule.growth.boobs "Rules Assistant">><</replace>><</link>> |
-<<link "Unlimited">><<set $currentRule.growth.boobs = 48000>><<replace "#textBoobs">><<textbox "$currentRule.growth.boobs" $currentRule.growth.boobs "Rules Assistant">><</replace>><</link>> |
-<<link "None">><<set $currentRule.growth.boobs = 0>><<replace "#textBoobs">><<textbox "$currentRule.growth.boobs" $currentRule.growth.boobs "Rules Assistant">><</replace>><</link>>
-<br>&nbsp;&nbsp;&nbsp;&nbsp;
-//Butts://
-<span id="textButt"><<textbox "$currentRule.growth.butt" $currentRule.growth.butt "Rules Assistant">></span>
-<<link "No default setting">><<set $currentRule.growth.butt = "no default setting">><<replace "#textButt">><<textbox "$currentRule.growth.butt" $currentRule.growth.butt "Rules Assistant">><</replace>><</link>> |
-<<link "Cute">><<set $currentRule.growth.butt = 2>><<replace "#textButt">><<textbox "$currentRule.growth.butt" $currentRule.growth.butt "Rules Assistant">><</replace>><</link>> |
-<<link "Big">><<set $currentRule.growth.butt = 4>><<replace "#textButt">><<textbox "$currentRule.growth.butt" $currentRule.growth.butt "Rules Assistant">><</replace>><</link>> |
-<<link "Huge">><<set $currentRule.growth.butt = 6>><<replace "#textButt">><<textbox "$currentRule.growth.butt" $currentRule.growth.butt "Rules Assistant">><</replace>><</link>> |
-<<link "Unlimited">><<set $currentRule.growth.butt = 10>><<replace "#textButt">><<textbox "$currentRule.growth.butt" $currentRule.growth.butt "Rules Assistant">><</replace>><</link>> |
-<<link "None">><<set $currentRule.growth.butt = 0>><<replace "#textButt">><<textbox "$currentRule.growth.butt" $currentRule.growth.butt "Rules Assistant">><</replace>><</link>>
-<br>&nbsp;&nbsp;&nbsp;&nbsp;
-//Lips://
-<span id="textLips"><<textbox "$currentRule.growth.lips" $currentRule.growth.lips "Rules Assistant">></span>
-<<link "No default setting">><<set $currentRule.growth.lips = "no default setting">><<replace "#textLips">><<textbox "$currentRule.growth.lips" $currentRule.growth.lips "Rules Assistant">><</replace>><</link>> |
-<<link "Plump">><<set $currentRule.growth.lips = 25>><<replace "#textLips">><<textbox "$currentRule.growth.lips" $currentRule.growth.lips "Rules Assistant">><</replace>><</link>> |
-<<link "Beestung">><<set $currentRule.growth.lips = 45>><<replace "#textLips">><<textbox "$currentRule.growth.lips" $currentRule.growth.lips "Rules Assistant">><</replace>><</link>> |
-<<link "Facepussy">><<set $currentRule.growth.lips = 100>><<replace "#textLips">><<textbox "$currentRule.growth.lips" $currentRule.growth.lips "Rules Assistant">><</replace>><</link>> |
-<<link "None">><<set $currentRule.growth.lips = 0>><<replace "#textLips">><<textbox "$currentRule.growth.lips" $currentRule.growth.lips "Rules Assistant">><</replace>><</link>>
-<<if ($seeDicks > 0 || $makeDicks > 0)>>
-	<br>&nbsp;&nbsp;&nbsp;&nbsp;
-	//Dicks, if present://
-	<span id="textDick"><<textbox "$currentRule.growth.dick" $currentRule.growth.dick "Rules Assistant">></span>
-	<<link "No default setting">><<set $currentRule.growth.dick = "no default setting">><<replace "#textDick">><<textbox "$currentRule.growth.dick" $currentRule.growth.dick "Rules Assistant">><</replace>><</link>> |
-	<<link "Above average">><<set $currentRule.growth.dick = 4>><<replace "#textDick">><<textbox "$currentRule.growth.dick" $currentRule.growth.dick "Rules Assistant">><</replace>><</link>> |
-	<<link "Pornstar">><<set $currentRule.growth.dick = 6>><<replace "#textDick">><<textbox "$currentRule.growth.dick" $currentRule.growth.dick "Rules Assistant">><</replace>><</link>> |
-	<<link "Unlimited">><<set $currentRule.growth.dick = 10>><<replace "#textDick">><<textbox "$currentRule.growth.dick" $currentRule.growth.dick "Rules Assistant">><</replace>><</link>> |
-	<<link "None">><<set $currentRule.growth.dick = 0>><<replace "#textDick">><<textbox "$currentRule.growth.dick" $currentRule.growth.dick "Rules Assistant">><</replace>><</link>>
-	<br>&nbsp;&nbsp;&nbsp;&nbsp;
-	//Balls, if present://
-	<span id="textBalls"><<textbox "$currentRule.growth.balls" $currentRule.growth.balls "Rules Assistant">></span>
-	<<link "No default setting">><<set $currentRule.growth.balls = "no default setting">><<replace "#textBalls">><<textbox "$currentRule.growth.balls" $currentRule.growth.balls "Rules Assistant">><</replace>><</link>> |
-	<<link "Sizeable">><<set $currentRule.growth.balls = 4>><<replace "#textBalls">><<textbox "$currentRule.growth.balls" $currentRule.growth.balls "Rules Assistant">><</replace>><</link>> |
-	<<link "Cumslave">><<set $currentRule.growth.balls = 6>><<replace "#textBalls">><<textbox "$currentRule.growth.balls" $currentRule.growth.balls "Rules Assistant">><</replace>><</link>> |
-	<<link "Unlimited">><<set $currentRule.growth.balls = 10>><<replace "#textBalls">><<textbox "$currentRule.growth.balls" $currentRule.growth.balls "Rules Assistant">><</replace>><</link>> |
-	<<link "None">><<set $currentRule.growth.balls = 0>><<replace "#textBalls">><<textbox "$currentRule.growth.balls" $currentRule.growth.balls "Rules Assistant">><</replace>><</link>>
-<</if>>
-/*
-<br>&nbsp;&nbsp;&nbsp;&nbsp;
-Drug regimes will be
-<<if $currentRule.growth.intensity>>
-	''intensive'' for slaves whose health can bear it. <<link "Moderate" "Rules Assistant">><<set $currentRule.growth.intensity = 0>><</link>>
-<<else>>
-	''moderate'' for all slaves. <<link "Intensify" "Rules Assistant">><<set $currentRule.growth.intensity = 1>><</link>>
-<</if>>
-*/
-
-<br>
-
-Health drugs:
-<span id = "curatives">
-<<if $currentRule.curatives == "no default setting">>
-	''no default setting.''
-<<elseif $currentRule.curatives > 0>>
-	<<if $currentRule.curatives > 1>>
-		''curatives.''
-	<<else>>
-		''preventatives.''
-	<</if>>
-<<else>>
-	''none.''
-<</if>>
-</span>
-
-<<link "No default setting">>
-	<<set $currentRule.curatives = "no default setting">>
-	<<RAChangeCuratives>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "None">>
-	<<set $currentRule.curatives = 0>>
-	<<RAChangeCuratives>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Preventatives">>
-	<<set $currentRule.curatives = 1>>
-	<<RAChangeCuratives>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Curatives">>
-	<<set $currentRule.curatives = 2>>
-	<<RAChangeCuratives>>
-	<<RARuleModified>>
-<</link>>
-
-<br>
-
-Aphrodisiacs:
-<span id = "aphrodisiacs">
-<<if $currentRule.aphrodisiacs == "no default setting">>
-	''no default setting.''
-<<elseif $currentRule.aphrodisiacs > 0>>
-	<<if $currentRule.aphrodisiacs > 1>>
-		''extreme.''
-	<<else>>
-		''standard.''
-	<</if>>
-<<elseif $currentRule.aphrodisiacs === -1>>
-	''anaphrodisiacs.''
-<<else>>
-	''none.''
-<</if>>
-</span>
-
-<<link "No default setting">>
-	<<set $currentRule.aphrodisiacs = "no default setting">>
-	<<RAChangeAphrodisiacs>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "None">>
-	<<set $currentRule.aphrodisiacs = 0>>
-	<<RAChangeAphrodisiacs>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Standard">>
-	<<set $currentRule.aphrodisiacs = 1>>
-	<<RAChangeAphrodisiacs>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Extreme">>
-	<<set $currentRule.aphrodisiacs = 2>>
-	<<RAChangeAphrodisiacs>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Anaphrodisiacs">>
-	<<set $currentRule.aphrodisiacs = -1>>
-	<<RAChangeAphrodisiacs>>
-	<<RARuleModified>>
-<</link>>
-
-<br>
-
-Contraceptives for fertile slaves:
-<span id = "preg">
-<<if $currentRule.preg == 0>>
-	''fertile.''
-<<elseif $currentRule.preg == 1>>
-	''very fertile.''
-<<elseif $currentRule.preg == 2>>
-	''extremely fertile.''
-<<elseif $currentRule.preg == 3>>
-	''hyper fertile.''
-<<elseif $currentRule.preg == 4>>
-	''just knock my shit up.''
-<<elseif $currentRule.preg == -1>>
-	''contraceptives.''
-<<else>>
-	''no default setting.''
-<</if>>
-</span>
-
-<<link "No default setting">>
-	<<set $currentRule.preg = "no default setting">>
-	<<RAChangePreg>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Fertile">>
-	<<set $currentRule.preg = 0>>
-	<<RAChangePreg>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Very fertile">>
-	<<set $currentRule.preg = 1>>
-	<<RAChangePreg>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Extremely fertile">>
-	<<set $currentRule.preg = 2>>
-	<<RAChangePreg>>
-	<<RARuleModified>>
-<</link>>
-| 
-<<if $seeHyperPreg == 1 && $superFertilityDrugs == 1>>
-<<link "Hyper fertile">>
-	<<set $currentRule.preg = 3>>
-	<<RAChangePreg>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Maximize fertility">>
-	<<set $currentRule.preg = 4>>
-	<<RAChangePreg>>
-	<<RARuleModified>>
-<</link>>
-|
-<</if>>
-<<link "Contraceptives">>
-	<<set $currentRule.preg = -1>>
-	<<RAChangePreg>>
-	<<RARuleModified>>
-<</link>>
-
-<br>
-<<if $pregSpeedControl > 0 >>
-Pregnancy control agents for pregnant slaves:  <span id = "pregSpeedControl"></span>
-<<rbutton "$currentRule.pregSpeed" "nds">> No changes | 
-<<rbutton "$currentRule.pregSpeed" "none">> None | 
-<<rbutton "$currentRule.pregSpeed" "fast">> Fast gestation | 
-<<rbutton "$currentRule.pregSpeed" "slow">> Slow gestation | 
-<<rbutton "$currentRule.pregSpeed" "suppress">> Birth supressors | 
-<<rbutton "$currentRule.pregSpeed" "stimulate">> Birth stimulators 
-<br>
-<</if>>
-
-Hormones for female slaves:
-<span id = "xxhormones">
-<<if $currentRule.XX == 0>>
-	''no hormones.''
-<<elseif $currentRule.XX == 1>>
-	''female.''
-<<elseif $currentRule.XX == 2>>
-	''intensive female.''
-<<elseif $currentRule.XX == -1>>
-	''male.''
-<<elseif $currentRule.XX == -2>>
-	''intensive male.''
-<<else>>
-	''no default setting.''
-<</if>>
-</span>
-
-<<link "No default setting">>
-	<<set $currentRule.XX = "no default setting">>
-	<<RAChangeXXHormones>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Intensive Female">>
-	<<set $currentRule.XX = 2>>
-	<<RAChangeXXHormones>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Female">>
-	<<set $currentRule.XX = 1>>
-	<<RAChangeXXHormones>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "None">>
-	<<set $currentRule.XX = 0>>
-	<<RAChangeXXHormones>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Male">>
-	<<set $currentRule.XX = -1>>
-	<<RAChangeXXHormones>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Intensive Male">>
-	<<set $currentRule.XX = -2>>
-	<<RAChangeXXHormones>>
-	<<RARuleModified>>
-<</link>>
-
-<br>
-
-Hormones for shemales:
-<span id = "xyhormones">
-<<if $currentRule.XY == 0>>
-	''no hormones.''
-<<elseif $currentRule.XY == 1>>
-	''female.''
-<<elseif $currentRule.XY == 2>>
-	''intensive female.''
-<<elseif $currentRule.XY == -1>>
-	''male.''
-<<elseif $currentRule.XY == -2>>
-	''intensive male.''
-<<else>>
-	''no default setting.''
-<</if>>
-</span>
-
-<<link "No default setting">>
-	<<set $currentRule.XY = "no default setting">>
-	<<RAChangeXYHormones>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Intensive Female">>
-	<<set $currentRule.XY = 2>>
-	<<RAChangeXYHormones>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Female">>
-	<<set $currentRule.XY = 1>>
-	<<RAChangeXYHormones>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "None">>
-	<<set $currentRule.XY = 0>>
-	<<RAChangeXYHormones>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Male">>
-	<<set $currentRule.XY = -1>>
-	<<RAChangeXYHormones>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Intensive Male">>
-	<<set $currentRule.XY = -2>>
-	<<RAChangeXYHormones>>
-	<<RARuleModified>>
-<</link>>
-
-<br>
-
-Hormones for geldings:
-<span id = "geldhormones">
-<<if $currentRule.gelding == 0>>
-	''no hormones.''
-<<elseif $currentRule.gelding == 1>>
-	''female.''
-<<elseif $currentRule.gelding == 2>>
-	''intensive female.''
-<<elseif $currentRule.gelding == -1>>
-	''male.''
-<<elseif $currentRule.gelding == -2>>
-	''intensive male.''
-<<else>>
-	''no default setting.''
-<</if>>
-</span>
-
-<<link "No default setting">>
-	<<set $currentRule.gelding = "no default setting">>
-	<<RAChangeGeldHormones>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Intensive Female">>
-	<<set $currentRule.gelding = 2>>
-	<<RAChangeGeldHormones>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Female">>
-	<<set $currentRule.gelding = 1>>
-	<<RAChangeGeldHormones>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "None">>
-	<<set $currentRule.gelding = 0>>
-	<<RAChangeGeldHormones>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Male">>
-	<<set $currentRule.gelding = -1>>
-	<<RAChangeGeldHormones>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Intensive Male">>
-	<<set $currentRule.gelding = -2>>
-	<<RAChangeGeldHormones>>
-	<<RARuleModified>>
-<</link>>
-
-<br>
-
-<span id = "otherdrugs">
-Other drugs: // Will be overriden by hormones and other drugs where applicable.// ''$currentRule.drug.''
-</span>
-
-<<for _i = 0; _i < setup.drugs.length; _i++>>
-	<<if _i == 0>>
-	<<elseif ndef setup.drugs[_i].fs && ndef setup.drugs[_i].rs>>
-		|
-	<<elseif $cheatMode == 1>>
-		| //CM//
-	<<elseif (setup.drugs[_i].rs == "growth" && $growthStim == 1)>>
-		| //Research//
-	<<elseif (setup.drugs[_i].rs == "pubHorm" && $precociousPuberty == 1 && $pubertyHormones == 1)>>
-		| //Research//
-	<<elseif (setup.drugs[_i].rs == "nosag" && $purchasedSagBGone == 1)>>
-		| //Product//
-	<<elseif (setup.drugs[_i].fs == "slimness" && $arcologies[0].FSSlimnessEnthusiastResearch == 1)>>
-		| //FS//
-	<<elseif (setup.drugs[_i].fs == "youth" && $arcologies[0].FSYouthPreferentialistResearch == 1)>>
-		| //FS//
-	<<else>>
-		<<continue>>
-	<</if>>
-	<<capture _i>>
-	<<link setup.drugs[_i].name>>
-		<<set $currentRule.drug = setup.drugs[_i].value>>
-		<<RAChangeDrugs>>
-		<<RARuleModified>>
-	<</link>>
-	<</capture>>
-<</for>>
-
-<br>
-
-Slave diets:
-<span id = "diet"><<textbox "$currentRule.diet" $currentRule.diet "Rules Assistant">></span>
-
-<<link "No default setting">>
-	<<set $currentRule.diet = "no default setting">>
-	<<replace "#diet">>
-		<<textbox "$currentRule.diet" $currentRule.diet "Rules Assistant">>
-	<</replace>>
-	<<RAChangeDiet>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Fix fat and skinny slaves">>
-	<<set $currentRule.diet = "attractive">>
-	<<replace "#diet">>
-		<<textbox "$currentRule.diet" $currentRule.diet "Rules Assistant">>
-	<</replace>>
-	<<RARuleModified>>
-<</link>>
-<<if $feeder == 1>>
-	|
-	<<link "Feminine">>
-		<<set $currentRule.diet = "XX">>
-		<<replace "#diet">>
-			<<textbox "$currentRule.diet" $currentRule.diet "Rules Assistant">>
-		<</replace>>
-		<<RARuleModified>>
-	<</link>>
-	|
-	<<link "Masculine">>
-		<<set $currentRule.diet = "XY">>
-		<<replace "#diet">>
-			<<textbox "$currentRule.diet" $currentRule.diet "Rules Assistant">>
-		<</replace>>
-		<<RARuleModified>>
-	<</link>>
-	<<if $dietXXY == 1>>
-		|
-		<<link "Futanari">>
-			<<set $currentRule.diet = "XXY">>
-			<<replace "#diet">>
-				<<textbox "$currentRule.diet" $currentRule.diet "Rules Assistant">>
-			<</replace>>
-			<<RARuleModified>>
-		<</link>>
-	<</if>>
-<</if>>
-<<if $dietCleanse == 1>>
-	|
-	<<link "Cleansing">>
-		<<set $currentRule.diet = "cleansing">>
-		<<replace "#diet">>
-			<<textbox "$currentRule.diet" $currentRule.diet "Rules Assistant">>
-		<</replace>>
-		<<RARuleModified>>
-	<</link>>
-<</if>>
-<<if $dietFertility == 1>>
-	|
-	<<link "Fertility">>
-		<<set $currentRule.diet = "fertility">>
-		<<replace "#diet">>
-			<<textbox "$currentRule.diet" $currentRule.diet "Rules Assistant">>
-		<</replace>>
-		<<RARuleModified>>
-	<</link>>
-<</if>>
-<<if $cumProDiet == 1>>
-	|
-	<<link "Cum production">>
-		<<set $currentRule.diet = "cum production">>
-		<<replace "#diet">>
-			<<textbox "$currentRule.diet" $currentRule.diet "Rules Assistant">>
-		<</replace>>
-		<<RARuleModified>>
-	<</link>>
-<</if>>
-<span id = "dietsupport">
-<<if $currentRule.diet !== "no default setting">>
-
-<br>&nbsp;&nbsp;&nbsp;&nbsp;
-Diet support for growth drugs:
-<<if $currentRule.dietGrowthSupport == 1>>
-	''on.''
-<<else>>
-	''off.''
-<</if>>
-
-<<link "On">>
-	<<set $currentRule.dietGrowthSupport = 1>>
-	<<RAChangeDiet>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Off">>
-	<<set $currentRule.dietGrowthSupport = 0>>
-	<<RAChangeDiet>>
-	<<RARuleModified>>
-<</link>>
-<</if>>
-</span>
-
-<br>
-
-Diet base:
-<span id = "dietBase">
-<<if ($currentRule.dietCum == 2)>>
-	''slaves' diets are heavily based on cum.''
-<<elseif (($currentRule.dietCum == 1) && ($currentRule.dietMilk == 0))>>
-	''cum is added to slaves' diets.''
-<<elseif (($currentRule.dietCum == 1) && ($currentRule.dietMilk == 1))>>
-	''both cum and human milk are added to slaves' diets.''
-<<elseif (($currentRule.dietCum == 0) && ($currentRule.dietMilk == 1))>>
-	''human milk is added to slaves' diets.''
-<<elseif ($currentRule.dietMilk == 2)>>
-	''slaves' diets are heavily based on human milk.''
-<<elseif (($currentRule.dietMilk == 0) && ($currentRule.dietCum == 0))>>
-	''slaves' diets do not include cum or human milk.''
-<<else>>
-	''no default setting.''
-<</if>>
-</span>
-
-<<link "no default setting">>
-	<<set $currentRule.dietCum = "no default setting">>
-	<<RAChangeDietBase>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Normal Diet">>
-	<<set $currentRule.dietCum = 0>>
-	<<set $currentRule.dietMilk = 0>>
-	<<RAChangeDietBase>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Cum Added">>
-	<<set $currentRule.dietCum = 1>>
-	<<set $currentRule.dietMilk = 0>>
-	<<RAChangeDietBase>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Milk Added">>
-	<<set $currentRule.dietCum = 0>>
-	<<set $currentRule.dietMilk = 1>>
-	<<RAChangeDietBase>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Cum & Milk Added">>
-	<<set $currentRule.dietCum = 1>>
-	<<set $currentRule.dietMilk = 1>>
-	<<RAChangeDietBase>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Cum-Based">>
-	<<set $currentRule.dietCum = 2>>
-	<<set $currentRule.dietMilk = 0>>
-	<<RAChangeDietBase>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Milk Based">>
-	<<set $currentRule.dietCum = 0>>
-	<<set $currentRule.dietMilk = 2>>
-	<<RAChangeDietBase>>
-	<<RARuleModified>>
-<</link>>
-
-<br>
-
-Muscles:
-<span id = "muscles"><<textbox "$currentRule.muscles" $currentRule.muscles "Rules Assistant">></span>
-
-
-<<link "No default setting">>
-	<<set $currentRule.muscles = "no default setting">>
-	<<replace "#muscles">>
-		<<textbox "$currentRule.muscles" $currentRule.muscles "Rules Assistant">>
-	<</replace>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "None">>
-	<<set $currentRule.muscles = 0>>
-	<<replace "#muscles">>
-		<<textbox "$currentRule.muscles" $currentRule.muscles "Rules Assistant">>
-	<</replace>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Toned">>
-	<<set $currentRule.muscles = 20>>
-	<<replace "#muscles">>
-		<<textbox "$currentRule.muscles" $currentRule.muscles "Rules Assistant">>
-	<</replace>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Ripped">>
-	<<set $currentRule.muscles = 50>>
-	<<replace "#muscles">>
-		<<textbox "$currentRule.muscles" $currentRule.muscles "Rules Assistant">>
-	<</replace>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Massive">>
-	<<set $currentRule.muscles = 100>>
-	<<replace "#muscles">>
-		<<textbox "$currentRule.muscles" $currentRule.muscles "Rules Assistant">>
-	<</replace>>
-	<<RARuleModified>>
-<</link>>
-
-<br>
-
-Braces:
-<span id = "braces">
-<<if $currentRule.teeth == "straighten">>
-	''straighten'' teeth, then remove.
-<<elseif $currentRule.teeth == "universal">>
-	''universally'' applied.
-<<elseif $currentRule.teeth == "none">>
-	''none.''
-<<else>>
-	''no default setting.''
-<</if>>
-</span>
-
-<<link "No default braces setting">>
-	<<set $currentRule.teeth = "no default setting">>
-	<<RAChangeBraces>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "None">>
-	<<set $currentRule.teeth = "none">>
-	<<RAChangeBraces>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Straighten">>
-	<<set $currentRule.teeth = "straighten">>
-	<<RAChangeBraces>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Universal">>
-	<<set $currentRule.teeth = "universal">>
-	<<RAChangeBraces>>
-	<<RARuleModified>>
-<</link>>
-
-
-
-<br><br>
-
-__Rule $r Behavior Rules:__
-<br>
-
-Living standard: <span id="living">''$currentRule.livingRules.''</span>
-
-<<link "No default setting">>
-	<<set $currentRule.livingRules = "no default setting">>
-	<<RAChangeLiving>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Luxurious">>
-	<<set $currentRule.livingRules = "luxurious">>
-	<<RAChangeLiving>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Normal">>
-	<<set $currentRule.livingRules = "normal">>
-	<<RAChangeLiving>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Spare">>
-	<<set $currentRule.livingRules = "spare">>
-	<<RAChangeLiving>>
-	<<RARuleModified>>
-<</link>>
-
-<br>
-
-Typical punishment: <span id="punish">''$currentRule.standardPunishment.''</span>
-
-<<link "No default setting">>
-	<<set $currentRule.standardPunishment = "no default setting">>
-	<<RAChangePunish>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Confinement">>
-	<<set $currentRule.standardPunishment = "confinement">>
-	<<RAChangePunish>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Whipping">>
-	<<set $currentRule.standardPunishment = "whipping">>
-	<<RAChangePunish>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Chastity">>
-	<<set $currentRule.standardPunishment = "chastity">>
-	<<RAChangePunish>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Situational">>
-	<<set $currentRule.standardPunishment = "situational">>
-	<<RAChangePunish>>
-	<<RARuleModified>>
-<</link>>
-
-<br>
-
-Typical reward: <span id="reward">''$currentRule.standardReward.''</span>
-
-<<link "No default setting">>
-	<<set $currentRule.standardReward = "no default setting">>
-	<<RAChangeReward>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Relaxation">>
-	<<set $currentRule.standardReward = "relaxation">>
-	<<RAChangeReward>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Drugs">>
-	<<set $currentRule.standardReward = "drugs">>
-	<<RAChangeReward>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Orgasm">>
-	<<set $currentRule.standardReward = "orgasm">>
-	<<RAChangeReward>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Situational">>
-	<<set $currentRule.standardReward = "situational">>
-	<<RAChangeReward>>
-	<<RARuleModified>>
-<</link>>
-
-<br>
-
-Release rules: <span id="mast">''$currentRule.releaseRules.''</span>
-
-<<link "No default setting">>
-	<<set $currentRule.releaseRules = "no default setting">>
-	<<RAChangeMast>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Permissive">>
-	<<set $currentRule.releaseRules = "permissive">>
-	<<RAChangeMast>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Sapphic">>
-	<<set $currentRule.releaseRules = "sapphic">>
-	<<RAChangeMast>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Masturbation">>
-	<<set $currentRule.releaseRules = "masturbation">>
-	<<RAChangeMast>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Restrictive">>
-	<<set $currentRule.releaseRules = "restrictive">>
-	<<RAChangeMast>>
-	<<RARuleModified>>
-<</link>>
-
-<br>
-
-Smart piercing fetish target: <span id="spf">''$currentRule.clitSetting.''</span>
-
-<br>&nbsp;&nbsp;&nbsp;&nbsp;
-<<link "No default setting">>
-	<<set $currentRule.clitSetting = "no default setting">>
-	<<RAChangeSPF>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Vanilla">>
-    <<set $currentRule.clitSetting = "vanilla">>
-    <<RAChangeSPF>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Oral">>
-    <<set $currentRule.clitSetting = "oral">>
-    <<RAChangeSPF>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Anal">>
-    <<set $currentRule.clitSetting = "anal">>
-    <<RAChangeSPF>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Boobs">>
-    <<set $currentRule.clitSetting = "boobs">>
-    <<RAChangeSPF>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Sub">>
-    <<set $currentRule.clitSetting = "submissive">>
-    <<RAChangeSPF>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Dom">>
-    <<set $currentRule.clitSetting = "dom">>
-    <<RAChangeSPF>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Humiliation">>
-    <<set $currentRule.clitSetting = "humiliation">>
-    <<RAChangeSPF>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Preg">>
-    <<set $currentRule.clitSetting = "pregnancy">>
-    <<RAChangeSPF>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Pain">>
-    <<set $currentRule.clitSetting = "masochist">>
-    <<RAChangeSPF>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Sadism">>
-    <<set $currentRule.clitSetting = "sadist">>
-    <<RAChangeSPF>>
-	<<RARuleModified>>
-<</link>>
-
-<br>
-
-Smart piercing XY attraction target: <span id = "spxy"><<RAInitSPXY>></span>
-
-<br>&nbsp;&nbsp;&nbsp;&nbsp;
-<<link "No default setting">>
-	<<set $currentRule.clitSettingXY = "no default setting">>
-	<<RAChangeSPXY>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Passionate">>
-	<<set $currentRule.clitSettingXY = 100>>
-	<<RAChangeSPXY>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Attracted">>
-	<<set $currentRule.clitSettingXY = 75>>
-	<<RAChangeSPXY>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Indifferent">>
-	<<set $currentRule.clitSettingXY = 45>>
-	<<RAChangeSPXY>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "None">>
-	<<set $currentRule.clitSettingXY = 0>>
-	<<RAChangeSPXY>>
-	<<RARuleModified>>
-<</link>>
-
-<br>
-
-Smart piercing XX attraction target: <span id = "spxx"><<RAInitSPXX>></span>
-
-<br>&nbsp;&nbsp;&nbsp;&nbsp;
-<<link "No default setting">>
-	<<set $currentRule.clitSettingXX = "no default setting">>
-	<<RAChangeSPXX>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Passionate">>
-	<<set $currentRule.clitSettingXX = 100>>
-	<<RAChangeSPXX>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Attracted">>
-	<<set $currentRule.clitSettingXX = 75>>
-	<<RAChangeSPXX>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Indifferent">>
-	<<set $currentRule.clitSettingXX = 45>>
-	<<RAChangeSPXX>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "None">>
-	<<set $currentRule.clitSettingXX = 0>>
-	<<RAChangeSPXX>>
-	<<RARuleModified>>
-<</link>>
-
-<br>
-
-Smart piercing sex drive target: <span id = "spe"><<RAInitSPE>></span>
-
-<br>&nbsp;&nbsp;&nbsp;&nbsp;
-<<link "No default setting">>
-	<<set $currentRule.clitSettingEnergy = "no default setting">>
-	<<RAChangeSPE>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Nympho">>
-	<<set $currentRule.clitSettingEnergy = 100>>
-	<<RAChangeSPE>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Sex Addict">>
-	<<set $currentRule.clitSettingEnergy = 85>>
-	<<RAChangeSPE>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Powerful">>
-	<<set $currentRule.clitSettingEnergy = 65>>
-	<<RAChangeSPE>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Healthy">>
-	<<set $currentRule.clitSettingEnergy = 45>>
-	<<RAChangeSPE>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Weak">>
-	<<set $currentRule.clitSettingEnergy = 25>>
-	<<RAChangeSPE>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Frigid">>
-	<<set $currentRule.clitSettingEnergy = 0>>
-	<<RAChangeSPE>>
-	<<RARuleModified>>
-<</link>>
-
-<br>
-
-Speech rules: <span id="speech">''$currentRule.speechRules.''</span>
-
-<<link "No default setting">>
-	<<set $currentRule.speechRules = "no default setting">>
-	<<RAChangeSpeech>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Permissive">>
-	<<set $currentRule.speechRules = "permissive">>
-	<<RAChangeSpeech>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Suppress accents">>
-	<<set $currentRule.speechRules = "accent elimination">>
-	<<RAChangeSpeech>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Restrictive">>
-	<<set $currentRule.speechRules = "restrictive">>
-	<<RAChangeSpeech>>
-	<<RARuleModified>>
-<</link>>
-
-<br>
-
-Relationship rules: <span id="relation">''$currentRule.relationshipRules.''</span>
-
-<<link "No default setting">>
-	<<set $currentRule.relationshipRules = "no default setting">>
-	<<RAChangeRelationship>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Permissive">>
-	<<set $currentRule.relationshipRules = "permissive">>
-	<<RAChangeRelationship>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Just friends">>
-	<<set $currentRule.relationshipRules = "just friends">>
-	<<RAChangeRelationship>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "Restrictive">>
-	<<set $currentRule.relationshipRules = "restrictive">>
-	<<RAChangeRelationship>>
-	<<RARuleModified>>
-<</link>>
-
-<<if $studio == 1>>
-<br>
-<span id="pornfame">
-<<if $currentRule.pornFameSpending == -1>>
-	Release of feeds showing excellent slaves' sex lives: ''off.''
-<<else>>
-	Weekly porn publicity subsidy: ''<<print cashFormat($currentRule.pornFameSpending)>>.''
-<</if>>
-</span>
-
-<<link "No default setting">>
-	<<set $currentRule.pornFameSpending = "no default setting">>
-	<<RAChangeFameSpending>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "No broadcasting">>
-	<<set $currentRule.pornFameSpending = -1>>
-	<<RAChangeFameSpending>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "No subsidy">>
-	<<set $currentRule.pornFameSpending = 0>>
-	<<RAChangeFameSpending>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "1000">>
-	<<set $currentRule.pornFameSpending = 1000>>
-	<<RAChangeFameSpending>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "2000">>
-	<<set $currentRule.pornFameSpending = 2000>>
-	<<RAChangeFameSpending>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "3000">>
-	<<set $currentRule.pornFameSpending = 3000>>
-	<<RAChangeFameSpending>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "4000">>
-	<<set $currentRule.pornFameSpending = 4000>>
-	<<RAChangeFameSpending>>
-	<<RARuleModified>>
-<</link>>
-|
-<<link "5000">>
-	<<set $currentRule.pornFameSpending = 5000>>
-	<<RAChangeFameSpending>>
-	<<RARuleModified>>
-<</link>>
-
-<</if>>
-
-
-<br><br>
-
-<span id="saveresult"></span>
-<<timed 50ms>>
-	<<RAChangeSave>>
-<</timed>>
-
-<<if ($currentRule.ID == 1) || ($currentRule.ID == 2) || ($currentRule.ID == 3)>>
-|
-<<link "Reset this rule to use FC Dev's preferred options">>
-
-	<<if ($currentRule.ID == 1)>>
-		<<set $currentRule.name = "Obedient Slaves">>
-		<<set $currentRule.condition = {id: ">", first: {id: "(name)", name: "devotion"}, second: {id: "(number)", value: 20}}>>
-		<<set $currentRule.clothes = "slutty jewelry">>
-		<<set $currentRule.collar = "pretty jewelry">>
-		<<set $currentRule.shoes = "heels">>
-		<<set $currentRule.vaginalAccessory = "none">>
-		<<set $currentRule.virginAccessory = "chastity belt">>
-		<<set $currentRule.aVirginAccessory = "anal chastity">>
-		<<set $currentRule.dickAccessory = "none">>
-		<<set $currentRule.aVirginDickAccessory = "anal chastity">>
-		<<set $currentRule.bellyAccessory = "no default setting">>
-		<<set $currentRule.aVirginButtplug = "none">>
-		<<set $currentRule.buttplug = "none">>
-		<<set $currentRule.eyes = "no default setting">>
-		<<set $currentRule.makeup = 1>>
-		<<set $currentRule.nails = 1>>
-		<<set $currentRule.hColor = "no default setting">>
-		<<set $currentRule.hStyle = "neat">>
-		<<set $currentRule.pubicHColor = "no default setting">>
-		<<set $currentRule.pubicHStyle = "waxed">>
-		<<set $currentRule.underArmHColor = "no default setting">>
-		<<set $currentRule.underArmHStyle = "waxed">>
-		<<set $currentRule.drug = "no default setting">>
-		<<set $currentRule.earPiercing = 1>>
-		<<set $currentRule.nosePiercing = 0>>
-		<<set $currentRule.eyebrowPiercing = 0>>
-		<<set $currentRule.navelPiercing = 1>>
-		<<set $currentRule.nipplesPiercing = 0>>
-		<<set $currentRule.lipsPiercing = 0>>
-		<<set $currentRule.tonguePiercing = 0>>
-		<<set $currentRule.clitPiercing = 3>>
-		<<set $currentRule.vaginaPiercing = 1>>
-		<<set $currentRule.dickPiercing = 1>>
-		<<set $currentRule.anusPiercing = 1>>
-		<<set $currentRule.anusTat = "bleached">>
-		<<set $currentRule.curatives = "no default setting">>
-		<<set $currentRule.preg = -1>>
-		<<set $currentRule.XX = 2>>
-		<<set $currentRule.XY = 2>>
-		<<set $currentRule.gelding = 2>>
-		<<set $currentRule.diet = 30>>
-		<<set $currentRule.dietGrowthSupport = 1>>
-		<<set $currentRule.muscles = 20>>
-		<<set $currentRule.releaseRules = "restrictive">>
-		<<set $currentRule.standardPunishment = "confinement">>
-		<<set $currentRule.standardReward = "relaxation">>
-		<<set $currentRule.clitSetting = "anal", $currentRule.clitSettingXY = 100, $currentRule.clitSettingXX = 100, $currentRule.clitSettingEnergy = 100>>
-		<<set $currentRule.speechRules = "permissive">>
-		<<set $currentRule.relationshipRules = "permissive">>
-		<<set $currentRule.livingRules = "luxurious">>
-		<<set $currentRule.growth = {boobs: 9000, butt: 10, lips: 45, dick: 6, balls: 6}>>
-		<<set $currentRule.autoBrand = 1>>
-		<<set $currentRule.assignment = []>>
-		<<set $currentRule.excludeAssignment = []>>
-		<<set $currentRule.setAssignment = "no default setting">>
-		<<set $currentRule.facility = []>>
-		<<set $currentRule.excludeFacility = []>>
-		<<set $currentRule.excludeSpecialSlaves = true>>
-		<<set $currentRule.facilityRemove = false>>
-		<<set $currentRule.removalAssignment = "rest">>
-		<<set $currentRule.selectedSlaves = []>>
-		<<set $currentRule.excludedSlaves = []>>
-		<<set $currentRule.teeth = "straighten">>
-		<<set $currentRule.autosurgery = 1>>
-		<<set $currentRule.surgery.lactation = "no default setting">>
-		<<set $currentRule.surgery.prostate = "no default setting">>
-		<<set $currentRule.surgery.cosmetic = 1>>
-		<<set $currentRule.surgery.accent = 0>>
-		<<set $currentRule.surgery.shoulders = 0>>
-		<<set $currentRule.surgery.shouldersImplant = 0>>
-		<<set $currentRule.surgery.boobs = 0>>
-		<<set $currentRule.surgery.hips = 0>>
-		<<set $currentRule.surgery.hipsImplant = 0>>
-		<<set $currentRule.surgery.butt = 0>>
-		<<set $currentRule.surgery.faceShape = "normal">>
-		<<set $currentRule.surgery.lips = 0>>
-		<<set $currentRule.surgery.holes = 0>>
-		<<set $currentRule.pregSpeed = "nds">>
-
-	<<elseif ($currentRule.ID == 2)>>
-		<<set $currentRule.name = "Disobedient Slaves">>
-		<<set $currentRule.condition = {id: "<=", first: {id: "(name)", name: "devotion"}, second: {id: "(number)", value: 20}}>>
-		<<set $currentRule.clothes = "uncomfortable straps">>
-		<<set $currentRule.collar = "uncomfortable leather">>
-		<<set $currentRule.shoes = "heels">>
-		<<set $currentRule.vaginalAccessory = "no default setting">>
-		<<set $currentRule.virginAccessory = "no default setting">>
-		<<set $currentRule.aVirginAccessory = "no default setting">>
-		<<set $currentRule.dickAccessory = "no default setting">>
-		<<set $currentRule.aVirginDickAccessory = "no default setting">>
-		<<set $currentRule.bellyAccessory = "no default setting">>
-		<<set $currentRule.aVirginButtplug = "no default setting">>
-		<<set $currentRule.buttplug = "no default setting">>
-		<<set $currentRule.eyes = "no default setting">>
-		<<set $currentRule.makeup = 1>> <<set $currentRule.nails = 1>>
-		<<set $currentRule.hColor = "no default setting">>
-		<<set $currentRule.hStyle = "neat">>
-		<<set $currentRule.pubicHColor = "no default setting">>
-		<<set $currentRule.pubicHStyle = "waxed">>
-		<<set $currentRule.underArmHColor = "no default setting">>
-		<<set $currentRule.underArmHStyle = "waxed">>
-		<<set $currentRule.drug = "no default setting">>
-		<<set $currentRule.earPiercing = 0>>
-		<<set $currentRule.nosePiercing = 0>>
-		<<set $currentRule.eyebrowPiercing = 0>>
-		<<set $currentRule.navelPiercing = 0>>
-		<<set $currentRule.nipplesPiercing = 0>>
-		<<set $currentRule.lipsPiercing = 0>>
-		<<set $currentRule.tonguePiercing = 0>>
-		<<set $currentRule.clitPiercing = 3>>
-		<<set $currentRule.vaginaPiercing = 0>>
-		<<set $currentRule.dickPiercing = 0>>
-		<<set $currentRule.anusPiercing = 0>>
-		<<set $currentRule.anusTat = "no default setting">>
-		<<set $currentRule.curatives = "no default setting">>
-		<<set $currentRule.preg = -1>>
-		<<set $currentRule.XX = 2>>
-		<<set $currentRule.XY = 2>>
-		<<set $currentRule.gelding = 2>>
-		<<set $currentRule.diet = 30>>
-		<<set $currentRule.dietGrowthSupport = 1>>
-		<<set $currentRule.muscles = 20>>
-		<<set $currentRule.releaseRules = "restrictive">>
-		<<set $currentRule.standardPunishment = "whipping">>
-		<<set $currentRule.standardReward = "orgasm">>
-		<<set $currentRule.clitSetting = "anal", $currentRule.clitSettingXY = 100, $currentRule.clitSettingXX = 100, $currentRule.clitSettingEnergy = 100>>
-		<<set $currentRule.speechRules = "restrictive">>
-		<<set $currentRule.relationshipRules = "restrictive">>
-		<<set $currentRule.livingRules = "spare">>
-		<<set $currentRule.autoSurgery = 0>>
-		<<set $currentRule.growth = {boobs: 9000, butt: 10, lips: 45, dick: 6, balls: 6}>>
-		<<set $currentRule.autoBrand = 1>>
-		<<set $currentRule.assignment = []>>
-		<<set $currentRule.excludeAssignment = []>>
-		<<set $currentRule.setAssignment = "no default setting">>
-		<<set $currentRule.facility = []>>
-		<<set $currentRule.excludeFacility = []>>
-		<<set $currentRule.excludeSpecialSlaves = true>>
-		<<set $currentRule.facilityRemove = false>>
-		<<set $currentRule.removalAssignment = "rest">>
-		<<set $currentRule.selectedSlaves = []>>
-		<<set $currentRule.excludedSlaves = []>>
-		<<set $currentRule.surgery.lactation = "no default setting">>
-		<<set $currentRule.surgery.prostate = "no default setting">>
-		<<set $currentRule.surgery.cosmetic = 0>>
-		<<set $currentRule.surgery.accent = 0>>
-		<<set $currentRule.surgery.shoulders = 0>>
-		<<set $currentRule.surgery.shouldersImplant = 0>>
-		<<set $currentRule.surgery.boobs = "no default setting">>
-		<<set $currentRule.surgery.hips = 0>>
-		<<set $currentRule.surgery.hipsImplant = 0>>
-		<<set $currentRule.surgery.butt = "no default setting">>
-		<<set $currentRule.surgery.faceShape = "no default setting">>
-		<<set $currentRule.surgery.lips = "no default setting">>
-		<<set $currentRule.surgery.holes = 0>>
-		<<set $currentRule.pregSpeed = "nds">>
-
-	<<elseif ($currentRule.ID == 3)>>
-		<<set $currentRule.name = "Unhealthy Slaves">>
-		<<set $currentRule.condition = {id: "<", first: {id: "(name)", name: "health"}, second: {id: "(number)", value: -2}}>>
-		<<set $currentRule.clothes = "no default setting">>
-		<<set $currentRule.collar = "no default setting">>
-		<<set $currentRule.shoes = "no default setting">>
-		<<set $currentRule.vaginalAccessory = "no default setting">>
-		<<set $currentRule.virginAccessory = "no default setting">>
-		<<set $currentRule.aVirginAccessory = "no default setting">>
-		<<set $currentRule.dickAccessory = "no default setting">>
-		<<set $currentRule.aVirginDickAccessory = "no default setting">>
-		<<set $currentRule.bellyAccessory = "no default setting">>
-		<<set $currentRule.aVirginButtplug = "no default setting">>
-		<<set $currentRule.buttplug = "no default setting">>
-		<<set $currentRule.eyes = "no default setting">>
-		<<set $currentRule.makeup = "no default setting">>
-		<<set $currentRule.nails = "no default setting">>
-		<<set $currentRule.hColor = "no default setting">>
-		<<set $currentRule.hStyle = "no default setting">>
-		<<set $currentRule.pubicHColor = "no default setting">>
-		<<set $currentRule.pubicHStyle = "no default setting">>
-		<<set $currentRule.underArmHColor = "no default setting">>
-		<<set $currentRule.underArmHStyle = "no default setting">>
-		<<set $currentRule.drug = "no default setting">>
-		<<set $currentRule.earPiercing = "no default setting">>
-		<<set $currentRule.nosePiercing = "no default setting">>
-		<<set $currentRule.eyebrowPiercing = "no default setting">>
-		<<set $currentRule.navelPiercing = "no default setting">>
-		<<set $currentRule.nipplesPiercing = "no default setting">>
-		<<set $currentRule.lipsPiercing = "no default setting">>
-		<<set $currentRule.tonguePiercing = "no default setting">>
-		<<set $currentRule.clitPiercing = "no default setting">>
-		<<set $currentRule.vaginaPiercing = "no default setting">>
-		<<set $currentRule.dickPiercing = "no default setting">>
-		<<set $currentRule.anusPiercing = "no default setting">>
-		<<set $currentRule.anusTat = "no default setting">>
-		<<set $currentRule.curatives = "applied">>
-		<<set $currentRule.preg = "no default setting">>
-		<<set $currentRule.XX = "no default setting">>
-		<<set $currentRule.XY = "no default setting">>
-		<<set $currentRule.gelding = "no default setting">>
-		<<set $currentRule.diet = "no default setting">>
-		<<set $currentRule.muscles = "no default setting">>
-		<<set $currentRule.releaseRules = "no default setting">>
-		<<set $currentRule.standardPunishment = "no default setting">>
-		<<set $currentRule.standardReward = "no default setting">>
-		<<set $currentRule.clitSetting = "no default setting", $currentRule.clitSettingXY = "no default setting", $currentRule.clitSettingXX = "no default setting", $currentRule.clitSettingEnergy = "no default setting">>
-		<<set $currentRule.speechRules = "no default setting">>
-		<<set $currentRule.relationshipRules = "no default setting">>
-		<<set $currentRule.livingRules = "no default setting">>
-		<<set $currentRule.growth = {boobs: 9000, butt: 10, lips: 45, dick: 6, balls: 6}>>
-		<<set $currentRule.autoBrand = "no default setting">>
-		<<set $currentRule.assignment = []>>
-		<<set $currentRule.excludeAssignment = []>>
-		<<set $currentRule.setAssignment = "no default setting">>
-		<<set $currentRule.facility = []>>
-		<<set $currentRule.excludeFacility = []>>
-		<<set $currentRule.excludeSpecialSlaves = true>>
-		<<set $currentRule.facilityRemove = false>>
-		<<set $currentRule.removalAssignment = "rest">>
-		<<set $currentRule.selectedSlaves = []>>
-		<<set $currentRule.excludedSlaves = []>>
-		<<set $currentRule.surgery.lactation = "no default setting">>
-		<<set $currentRule.surgery.prostate = "no default setting">>
-		<<set $currentRule.surgery.cosmetic = 0>>
-		<<set $currentRule.surgery.accent = 0>>
-		<<set $currentRule.surgery.shoulders = 0>>
-		<<set $currentRule.surgery.shouldersImplant = 0>>
-		<<set $currentRule.surgery.boobs = "no default setting">>
-		<<set $currentRule.surgery.hips = 0>>
-		<<set $currentRule.surgery.hipsImplant = 0>>
-		<<set $currentRule.surgery.butt = "no default setting">>
-		<<set $currentRule.surgery.faceShape = "no default setting">>
-		<<set $currentRule.surgery.lips = "no default setting">>
-		<<set $currentRule.surgery.holes = 0>>
-		<<set $currentRule.pregSpeed = "nds">>
-	<</if>>
-
-	<<set $defaultRules[$r-1] = $currentRule>>
-	<<goto "Rules Assistant">>
-<</link>>
-<</if>>
-|
-<span class="saveresult"></span>
-	<<timed 50ms>>
-	<<RAChangeSave>>
-<</timed>>
-|
-<<link "Remove rule '$currentRule.name'">>
-		<<set $defaultRules.deleteAt($r-1)>>
-		<<for $r = $defaultRules.length; $r > 0; $r-->>
-			<<if def $defaultRules[$r-1]>>
-				<<set $currentRule = $defaultRules[$r-1]>>
-				<<break>>
-			<</if>>
-		<</for>>
-		<<goto "Rules Assistant">>
-	<</link>>
-<</if>> /* closes if _length > 0 */
-
-<br><br>
-
-<<if _length > 0>>
-	<span id="applyresult"></span>
-	<span id="applied"></span>
-	<<timed 50ms>>
-	<<RAChangeApply>>
-	<</timed>>
-
-	<br><br>
-
-	[[Export this rule|Export Rule]] |
-	
-	[[Export all rules|Export All Rules]] |
-<</if>>
-
-[[Import a rule|Import Rule]]
+<<run html5passage(rulesAssistantOptions)>>
diff --git a/src/uncategorized/rulesAssistantReport.tw b/src/uncategorized/rulesAssistantReport.tw
index f37a5e42700e162816ce658f40eb4065bf40c8f3..cc9b7ec26466e24466345be87adeeb0ae0daddf1 100644
--- a/src/uncategorized/rulesAssistantReport.tw
+++ b/src/uncategorized/rulesAssistantReport.tw
@@ -4,8 +4,8 @@
 
 <<for $i = 0; $i < _SL; $i++>>
 	<<if ($slaves[$i].useRulesAssistant == 1)>>
-		<<CheckAutoRulesActivate $slaves[$i]>>
-		<<DefaultRules $slaves[$i]>>
+		<<= CheckAutoRulesActivate($slaves[$i])>>
+		<<= DefaultRules($slaves[$i])>>
 	<</if>>
 <</for>>
 
diff --git a/src/uncategorized/rulesAutosurgery.tw b/src/uncategorized/rulesAutosurgery.tw
deleted file mode 100644
index 46c44794e3587777341b0b38bd1a4d46d67489aa..0000000000000000000000000000000000000000
--- a/src/uncategorized/rulesAutosurgery.tw
+++ /dev/null
@@ -1,367 +0,0 @@
-:: Rules Autosurgery [nobr]
-
-<<set $surgeries = []>>
-<<unset $thisSurgery>>
-
-<<if (def $HGTastes) && $HGTastes > 0>>
-	<<if $HGTastes == 1>> 
-		<<set $thisSurgery = {lactation: 0, cosmetic: 1, faceShape: "cute", lips: 10, hips: 0, hipsImplant: 0, butt: 0, accent: 0, shoulders: 0, shouldersImplant: 0, boobs: 0, holes: 0}>>
-	<<elseif $HGTastes == 2>>
-		<<set $thisSurgery = {lactation: 0, cosmetic: 1, faceShape: "cute", lips: 60, hips: 0, hipsImplant: 0, butt: 4, accent: 0, shoulders: 0, shouldersImplant: 0, boobs: 1200, holes: 0}>>
-	<<elseif $HGTastes == 4>>
-		<<set $thisSurgery = {lactation: 1, cosmetic: 1, faceShape: "cute", lips: 10, hips: 3, hipsImplant: 0, butt: 0, accent: 0, shoulders: 0, shouldersImplant: 0, boobs: 0, holes: 0}>>
-	<<else>>
-		<<set $thisSurgery = {lactation: 0, cosmetic: 1, faceShape: "cute", lips: 95, hips: 0, hipsImplant: 0, butt: 8, accent: 0, shoulders: 0, shouldersImplant: 0, boobs: 10000, holes: 2}>>
-	<</if>>
-<<else>>
-	<<set $thisSurgery = autoSurgerySelector($slaves[$i], $defaultRules)>>
-	 <<if ($thisSurgery.hips !== "no default setting") && ($thisSurgery.butt !== "no default setting")>>
-		<<if $slaves[$i].hips < -1>>
-			<<if $thisSurgery.butt > 2>>
-				<<set $thisSurgery.butt = 2>>
-			<</if>>
-		<<elseif $slaves[$i].hips < 0>>
-			<<if $thisSurgery.butt > 4>>
-				<<set $thisSurgery.butt = 4>>
-			<</if>>
-		<<elseif $slaves[$i].hips > 0>>
-			<<if $thisSurgery.butt > 8>>
-				<<set $thisSurgery.butt = 8>>
-			<</if>>
-		<<elseif $slaves[$i].hips > 1>>
-		<<else>>
-			<<if $thisSurgery.butt > 6>>
-				<<set $thisSurgery.butt = 6>>
-			<</if>>
-		<</if>>
-	<</if>>
-<</if>>
-
-<<set $seed = 0>>
-<<for $seed == 0>>
-
-<<if ($slaves[$i].health <= 20)>>
-	<<set $seed = 1>>
-<<else>>
-<<if ($slaves[$i].eyes == -1) && ($thisSurgery.eyes == 1)>>
-	<<set $surgeries.push("surgery to correct her vision"), $slaves[$i].eyes = 1, $cash -= $surgeryCost>>
-	<<if $PC.medicine >= 100>><<set $slaves[$i].health -= 5>><<else>><<set $slaves[$i].health -= 10>><</if>>
-<<elseif ($slaves[$i].eyes == 1) && ($thisSurgery.eyes == -1)>>
-	<<set $surgeries.push("surgery to blur her vision"), $slaves[$i].eyes = -1, $cash -= $surgeryCost>>
-	<<if $PC.medicine >= 100>><<set $slaves[$i].health -= 5>><<else>><<set $slaves[$i].health -= 10>><</if>>
-<<elseif ($slaves[$i].lactation == 2) && ($thisSurgery.lactation == 0)>>
-	<<set $surgeries.push("surgery to remove her lactation implants"), $slaves[$i].lactation = 0, $cash -= $surgeryCost>>
-	<<if $PC.medicine >= 100>><<set $slaves[$i].health -= 5>><<else>><<set $slaves[$i].health -= 10>><</if>>
-<<elseif $slaves[$i].lactation != 2 && ($thisSurgery.lactation == 1)>>
-	<<set $surgeries.push("lactation inducing implanted drugs"), $slaves[$i].lactation = 2, $cash -= $surgeryCost>>
-	<<if $PC.medicine >= 100>><<set $slaves[$i].health -= 5>><<else>><<set $slaves[$i].health -= 10>><</if>>
-<<elseif ($slaves[$i].prostate == 2) && ($thisSurgery.prostate == 0)>>
-	<<set $surgeries.push("surgery to remove her prostate implant"), $slaves[$i].prostate = 0, $cash -= $surgeryCost>>
-	<<if $PC.medicine >= 100>><<set $slaves[$i].health -= 5>><<else>><<set $slaves[$i].health -= 10>><</if>>
-<<elseif $slaves[$i].prostate == 1 && ($thisSurgery.prostate == 1)>>
-	<<set $surgeries.push("a precum production enhancing drug implant"), $slaves[$i].prostate = 2, $cash -= $surgeryCost>>
-	<<if $PC.medicine >= 100>><<set $slaves[$i].health -= 5>><<else>><<set $slaves[$i].health -= 10>><</if>>
-<<elseif ($slaves[$i].anus > 3) && ($thisSurgery.cosmetic > 0)>>
-	<<set $surgeries.push("a restored anus")>>
-	<<set $slaves[$i].anus = 3>>
-	<<if $slaves[$i].analSkill > 10>>
-		<<set $slaves[$i].analSkill -= 10>>
-	<</if>>
-	<<set $cash -= $surgeryCost>>
-	<<if $PC.medicine >= 100>><<set $slaves[$i].health -= 5>><<else>><<set $slaves[$i].health -= 10>><</if>>
-<<elseif ($slaves[$i].vagina > 3) && ($thisSurgery.cosmetic > 0)>>
-	<<set $surgeries.push("a restored pussy")>>
-	<<set $slaves[$i].vagina = 3>>
-	<<if $slaves[$i].vaginalSkill > 10>>
-		<<set $slaves[$i].vaginalSkill -= 10>>
-	<</if>>
-	<<set $cash -= $surgeryCost>>
-	<<if $PC.medicine >= 100>><<set $slaves[$i].health -= 5>><<else>><<set $slaves[$i].health -= 10>><</if>>
-<<elseif ($slaves[$i].faceImplant <= 15) && ($slaves[$i].face <= 95) && ($thisSurgery.cosmetic > 0)>>
-	<<set $surgeries.push("a nicer face")>>
-	<<if $slaves[$i].faceShape == "masculine">><<set $slaves[$i].faceShape = "androgynous">><</if>>
-	<<set $slaves[$i].faceImplant += 25-5*Math.trunc($PC.medicine/50)-5*$surgeryUpgrade>>
-	<<set $slaves[$i].face = Math.clamp($slaves[$i].face+20,-100,100)>>
-	<<set $cash -= $surgeryCost>>
-	<<if $PC.medicine >= 100>><<set $slaves[$i].health -= 5>><<else>><<set $slaves[$i].health -= 10>><</if>>
-<<elseif ($slaves[$i].faceImplant <= 15) && ($slaves[$i].ageImplant != 1) && ($slaves[$i].visualAge >= 25) && ($thisSurgery.cosmetic > 0)>>
-	<<set $surgeries.push("an age lift")>>
-	<<set $slaves[$i].ageImplant = 1>>
-	<<set $slaves[$i].faceImplant += 25-5*Math.trunc($PC.medicine/50)-5*$surgeryUpgrade>>
-	<<if $slaves[$i].visualAge > 80>>
-		<<set $slaves[$i].visualAge -= 40>>
-	<<elseif $slaves[$i].visualAge >= 70>>
-		<<set $slaves[$i].visualAge -= 30>>
-	<<elseif $slaves[$i].visualAge > 50>>
-		<<set $slaves[$i].visualAge -= 20>>
-	<<elseif $slaves[$i].visualAge > 36>>
-		<<set $slaves[$i].visualAge -= 10>>
-	<<else>>
-		<<set $slaves[$i].visualAge -= 5>>
-	<</if>>
-	<<set $cash -= $surgeryCost>>
-	<<if $PC.medicine >= 100>><<set $slaves[$i].health -= 5>><<else>><<set $slaves[$i].health -= 10>><</if>>
-<<elseif (($slaves[$i].underArmHStyle != "bald" && $slaves[$i].underArmHStyle != "hairless") || ($slaves[$i].pubicHStyle != "bald" && $slaves[$i].pubicHStyle != "hairless")) && ($thisSurgery.bodyhair == 2)>>
-	<<set $surgeries.push("body hair removal")>>
-	<<if $slaves[$i].underArmHStyle != "hairless">><<set $slaves[$i].underArmHStyle = "bald">><</if>>
-	<<if $slaves[$i].pubicHStyle != "hairless">><<set $slaves[$i].pubicHStyle = "bald">><</if>>
-	<<set $cash -= $surgeryCost>>
-<<elseif ($slaves[$i].bald == 0 || $slaves[$i].hStyle != "bald") && ($thisSurgery.hair == 2)>>
-	<<set $surgeries.push("hair removal")>>
-	<<set $slaves[$i].hStyle = "bald", $slaves[$i].bald = 1>>
-	<<set $cash -= $surgeryCost>>
-<<elseif ($slaves[$i].weight >= 10) && ($thisSurgery.cosmetic > 0)>>
-	<<set $surgeries.push("liposuction")>>
-	<<set $slaves[$i].weight -= 50>>
-	<<set $cash -= $surgeryCost>>
-	<<if $PC.medicine >= 100>><<set $slaves[$i].health -= 5>><<else>><<set $slaves[$i].health -= 10>><</if>>
-<<elseif ($slaves[$i].voice == 1) && ($slaves[$i].voiceImplant == 0) && ($thisSurgery.cosmetic > 0)>>
-	<<set $surgeries.push("a feminine voice")>>
-	<<set $slaves[$i].voice += 1>>
-	<<set $slaves[$i].voiceImplant += 1>>
-	<<set $cash -= $surgeryCost>>
-	<<if $PC.medicine >= 100>><<set $slaves[$i].health -= 5>><<else>><<set $slaves[$i].health -= 10>><</if>>
-<<elseif ($slaves[$i].waist >= -10) && ($thisSurgery.cosmetic > 0)>>
-	<<set $surgeries.push("a narrower waist")>>
-	<<set $slaves[$i].waist -= 20>>
-	<<set $cash -= $surgeryCost>>
-	<<if $PC.medicine >= 100>><<set $slaves[$i].health -= 5>><<else>><<set $slaves[$i].health -= 10>><</if>>
-<<elseif (($slaves[$i].boobShape == "saggy") || ($slaves[$i].boobShape == "downward-facing")) && ($thisSurgery.cosmetic > 0) && ($slaves[$i].breastMesh != 1)>>
-	<<set $surgeries.push("a breast lift")>>
-	<<set $slaves[$i].boobShape = "normal">>
-	<<set $cash -= $surgeryCost>>
-	<<if $PC.medicine >= 100>><<set $slaves[$i].health -= 5>><<else>><<set $slaves[$i].health -= 10>><</if>>
-<<elseif (($slaves[$i].boobShape == "normal") || ($slaves[$i].boobShape == "wide-set")) && ($thisSurgery.cosmetic > 0) && ($slaves[$i].breastMesh != 1)>>
-	<<if $slaves[$i].boobs > 800>>
-		<<set $slaves[$i].boobShape = "torpedo-shaped">>
-	<<else>>
-		<<set $slaves[$i].boobShape = "perky">>
-	<</if>>
-	<<set $surgeries.push("more interestingly shaped breasts")>>
-	<<set $cash -= $surgeryCost>>
-	<<if $PC.medicine >= 100>><<set $slaves[$i].health -= 5>><<else>><<set $slaves[$i].health -= 10>><</if>>
-<<elseif ($thisSurgery.lips == 0) && ($slaves[$i].lipsImplant > 0)>>
-	<<set $surgeries.push("surgery to remove her lip implants")>>
-	<<set $slaves[$i].lips -= $slaves[$i].lipsImplant>>
-	<<set $slaves[$i].lipsImplant = 0>>
-	<<if $slaves[$i].oralSkill > 10>>
-		<<set $slaves[$i].oralSkill -= 10>>
-	<</if>>
-	<<set $cash -= $surgeryCost>>
-	<<if $PC.medicine >= 100>><<set $slaves[$i].health -= 5>><<else>><<set $slaves[$i].health -= 10>><</if>>
-<<elseif ($slaves[$i].lips <= 95) && ($slaves[$i].lips < $thisSurgery.lips)>>
-	<<if $thisSurgery.lips !== "no default setting">>
-		<<set $surgeries.push("bigger lips")>>
-		<<set $slaves[$i].lipsImplant += 10>>
-		<<set $slaves[$i].lips += 10>>
-		<<if $slaves[$i].oralSkill > 10>>
-			<<set $slaves[$i].oralSkill -= 10>>
-		<</if>>
-		<<set $cash -= $surgeryCost>>
-		<<if $PC.medicine >= 100>><<set $slaves[$i].health -= 5>><<else>><<set $slaves[$i].health -= 10>><</if>>
-	<</if>>
-<<elseif ($slaves[$i].faceImplant <= 45) && ($slaves[$i].face <= 95) && ($thisSurgery.cosmetic == 2)>>
-	<<set $surgeries.push("a nicer face")>>
-	<<if $slaves[$i].faceShape == "masculine">><<set $slaves[$i].faceShape = "androgynous">><</if>>
-	<<set $slaves[$i].faceImplant += 25-5*Math.trunc($PC.medicine/50)-5*$surgeryUpgrade>>
-	<<set $slaves[$i].face = Math.clamp($slaves[$i].face+20,-100,100)>>
-	<<set $cash -= $surgeryCost>>
-	<<if $PC.medicine >= 100>><<set $slaves[$i].health -= 5>><<else>><<set $slaves[$i].health -= 10>><</if>>
-<<elseif ($slaves[$i].hips < 1) && ($slaves[$i].hips < $thisSurgery.hips) && ($surgeryUpgrade == 1)>>
-	<<set $surgeries.push("wider hips")>>
-	<<set $slaves[$i].hips++, $slaves[$i].hipsImplant++>>
-	<<set $cash -= $surgeryCost>>
-	<<if $PC.medicine >= 100>><<set $slaves[$i].health -= 5>><<else>><<set $slaves[$i].health -= 10>><</if>>
-<<elseif ($slaves[$i].faceImplant <= 45) && ($slaves[$i].ageImplant != 1) && ($slaves[$i].visualAge >= 25) && ($thisSurgery.cosmetic == 2)>>
-	<<set $surgeries.push("an age lift")>>
-	<<set $slaves[$i].ageImplant = 1>>
-	<<if $slaves[$i].visualAge > 80>>
-		<<set $slaves[$i].visualAge -= 40>>
-	<<elseif $slaves[$i].visualAge >= 70>>
-		<<set $slaves[$i].visualAge -= 30>>
-	<<elseif $slaves[$i].visualAge > 50>>
-		<<set $slaves[$i].visualAge -= 20>>
-	<<elseif $slaves[$i].visualAge > 36>>
-		<<set $slaves[$i].visualAge -= 10>>
-	<<else>>
-		<<set $slaves[$i].visualAge -= 5>>
-	<</if>>
-	<<set $slaves[$i].faceImplant += 25-5*Math.trunc($PC.medicine/50)-5*$surgeryUpgrade>>
-	<<set $cash -= $surgeryCost>>
-	<<if $PC.medicine >= 100>><<set $slaves[$i].health -= 5>><<else>><<set $slaves[$i].health -= 10>><</if>>
-<<elseif ($slaves[$i].waist >= -95) && ($thisSurgery.cosmetic == 2) && ($seeExtreme == 1)>>
-	<<set $surgeries.push("a narrower waist")>>
-	<<set $slaves[$i].waist = Math.clamp($slaves[$i].waist-20,-100,100)>>
-	<<set $cash -= $surgeryCost>>
-	<<if $PC.medicine >= 100>><<set $slaves[$i].health -= 5>><<else>><<set $slaves[$i].health -= 10>><</if>>
-<<elseif ($slaves[$i].voice < 3) && ($slaves[$i].voiceImplant == 0) && ($thisSurgery.cosmetic == 2)>>
-	<<set $surgeries.push("a bimbo's voice")>>
-	<<set $slaves[$i].voice += 1>>
-	<<set $slaves[$i].voiceImplant += 1>>
-	<<set $cash -= $surgeryCost>>
-	<<if $PC.medicine >= 100>><<set $slaves[$i].health -= 5>><<else>><<set $slaves[$i].health -= 10>><</if>>
-<<elseif ($thisSurgery.butt == 0) && ($slaves[$i].buttImplant > 0)>>
-	<<set $surgeries.push("surgery to remove her butt implants")>>
-	<<set $slaves[$i].butt -= $slaves[$i].buttImplant>>
-	<<set $slaves[$i].buttImplant = 0>>
-	<<set $slaves[$i].buttImplantType = 0>>
-	<<set $cash -= $surgeryCost>>
-	<<if $PC.medicine >= 100>><<set $slaves[$i].health -= 5>><<else>><<set $slaves[$i].health -= 10>><</if>>
-<<elseif ($thisSurgery.boobs == 0) && ($slaves[$i].boobsImplant > 0)>>
-	<<set $surgeries.push("surgery to remove her boob implants")>>
-	<<set $slaves[$i].boobs -= $slaves[$i].boobsImplant>>
-	<<set $slaves[$i].boobsImplant = 0>>
-	<<set $slaves[$i].boobsImplantType = 0>>
-	<<set $cash -= $surgeryCost>>
-	<<if $PC.medicine >= 100>><<set $slaves[$i].health -= 5>><<else>><<set $slaves[$i].health -= 10>><</if>>
-<<elseif ($slaves[$i].butt <= 3) && ($slaves[$i].butt < $thisSurgery.butt)>>
-	<<if $thisSurgery.butt !== "no default setting">>
-		<<set $surgeries.push("a bigger butt")>>
-		<<set $slaves[$i].buttImplant = 1>>
-		<<set $slaves[$i].butt += 1>>
-		<<set $cash -= $surgeryCost>>
-		<<if $PC.medicine >= 100>><<set $slaves[$i].health -= 5>><<else>><<set $slaves[$i].health -= 10>><</if>>
-	<</if>>
-<<elseif ($slaves[$i].boobs <= 600) && ($slaves[$i].lactation < 2) && ($slaves[$i].boobs+400 <= $thisSurgery.boobs)>>
-	<<if $thisSurgery.boobs !== "no default setting">>
-		<<set $surgeries.push("bigger boobs")>>
-		<<set $slaves[$i].boobsImplant += 400>>
-		<<set $slaves[$i].boobs += 400>>
-		<<set $cash -= $surgeryCost>>
-		<<if $PC.medicine >= 100>>
-		<<set $slaves[$i].health -= 5>><<else>><<set $slaves[$i].health -= 10>><</if>>
-	<</if>>
-<<elseif ($slaves[$i].boobs <= 600) && ($slaves[$i].lactation < 2) && ($slaves[$i].boobs+200 <= $thisSurgery.boobs)>>
-	<<if $thisSurgery.boobs !== "no default setting">>
-		<<set $surgeries.push("modestly bigger boobs")>>
-		<<set $slaves[$i].boobsImplant += 200>>
-		<<set $slaves[$i].boobs += 200>>
-		<<set $cash -= $surgeryCost>>
-		<<if $PC.medicine >= 100>><<set $slaves[$i].health -= 5>><<else>><<set $slaves[$i].health -= 10>><</if>>
-	<</if>>
-<<elseif ($slaves[$i].butt <= 5) && ($slaves[$i].butt < $thisSurgery.butt)>>
-	<<if $thisSurgery.butt !== "no default setting">>
-		<<set $surgeries.push("a bigger butt")>>
-		<<set $slaves[$i].buttImplant = 1>>
-		<<set $slaves[$i].butt += 1>>
-		<<set $cash -= $surgeryCost>>
-		<<if $PC.medicine >= 100>><<set $slaves[$i].health -= 5>><<else>><<set $slaves[$i].health -= 10>><</if>>
-	<</if>>
-<<elseif ($slaves[$i].boobs <= 2000) && ($slaves[$i].lactation < 2) && ($slaves[$i].boobs+400 < $thisSurgery.boobs)>>
-	<<if $thisSurgery.boobs !== "no default setting">>
-		<<set $surgeries.push("bigger boobs")>>
-		<<set $slaves[$i].boobsImplant += 400>>
-		<<set $slaves[$i].boobs += 400>>
-		<<set $cash -= $surgeryCost>>
-		<<if $PC.medicine >= 100>><<set $slaves[$i].health -= 5>><<else>><<set $slaves[$i].health -= 10>><</if>>
-	<</if>>
-<<elseif ($slaves[$i].anus > 0) && ($surgeryUpgrade == 1) && ($thisSurgery.holes == 2)>>
-	<<set $surgeries.push("a virgin anus")>>
-	<<set $slaves[$i].anus = 0>>
-	<<if $slaves[$i].analSkill > 10>>
-		<<set $slaves[$i].analSkill -= 10>>
-	<</if>>
-	<<set $cash -= $surgeryCost>>
-	<<if $PC.medicine >= 100>><<set $slaves[$i].health -= 5>><<else>><<set $slaves[$i].health -= 10>><</if>>
-<<elseif ($slaves[$i].vagina > 0) && ($surgeryUpgrade == 1) && ($thisSurgery.holes == 2)>>
-	<<set $surgeries.push("a virgin pussy")>>
-	<<set $slaves[$i].vagina = 0>>
-	<<if $slaves[$i].vaginalSkill > 10>>
-		<<set $slaves[$i].vaginalSkill -= 10>>
-	<</if>>
-	<<set $cash -= $surgeryCost>>
-	<<if $PC.medicine >= 100>><<set $slaves[$i].health -= 5>><<else>><<set $slaves[$i].health -= 10>><</if>>
-<<elseif ($slaves[$i].hips < 2) && ($slaves[$i].hips < $thisSurgery.hips) && ($surgeryUpgrade == 1)>>
-	<<set $surgeries.push("wider hips")>>
-	<<set $slaves[$i].hips++, $slaves[$i].hipsImplant++>>
-	<<set $cash -= $surgeryCost>>
-	<<if $PC.medicine >= 100>><<set $slaves[$i].health -= 5>><<else>><<set $slaves[$i].health -= 10>><</if>>
-<<elseif ($slaves[$i].anus > 1) && ($thisSurgery.holes == 1)>>
-	<<set $surgeries.push("a tighter anus")>>
-	<<set $slaves[$i].anus = 1>>
-	<<if $slaves[$i].analSkill > 10>>
-		<<set $slaves[$i].analSkill -= 10>>
-	<</if>>
-	<<set $cash -= $surgeryCost>>
-	<<if $PC.medicine >= 100>><<set $slaves[$i].health -= 5>><<else>><<set $slaves[$i].health -= 10>><</if>>
-<<elseif ($slaves[$i].vagina > 1) && ($thisSurgery.holes == 1)>>
-	<<set $surgeries.push("a tighter pussy")>>
-	<<set $slaves[$i].vagina = 1>>
-	<<if $slaves[$i].vaginalSkill > 10>>
-		<<set $slaves[$i].vaginalSkill -= 10>>
-	<</if>>
-	<<set $cash -= $surgeryCost>>
-	<<if $PC.medicine >= 100>><<set $slaves[$i].health -= 5>><<else>><<set $slaves[$i].health -= 10>><</if>>
-<<elseif ($slaves[$i].butt <= 8) && ($slaves[$i].butt < $thisSurgery.butt)>>
-	<<if $thisSurgery.butt !== "no default setting">>
-		<<set $surgeries.push("a bigger butt")>>
-		<<set $slaves[$i].buttImplant = 1>>
-		<<set $slaves[$i].butt += 1>>
-		<<set $cash -= $surgeryCost>>
-		<<if $PC.medicine >= 100>><<set $slaves[$i].health -= 5>><<else>><<set $slaves[$i].health -= 10>><</if>>
-	<</if>>
-<<elseif ($slaves[$i].boobs <= 9000) && ($slaves[$i].lactation < 2) && ($slaves[$i].boobs < $thisSurgery.boobs)>>
-	<<if $thisSurgery.boobs !== "no default setting">>
-		<<set $surgeries.push("bigger boobs")>>
-		<<set $slaves[$i].boobsImplant += 200>>
-		<<set $slaves[$i].boobs += 200>>
-		<<set $cash -= $surgeryCost>>
-		<<if $PC.medicine >= 100>><<set $slaves[$i].health -= 5>><<else>><<set $slaves[$i].health -= 10>><</if>>
-	<</if>>
-<<elseif ($slaves[$i].hips < 3) && ($slaves[$i].hips < $thisSurgery.hips) && ($surgeryUpgrade == 1)>>
-	<<set $surgeries.push("wider hips")>>
-	<<set $slaves[$i].hips++, $slaves[$i].hipsImplant++>>
-	<<set $cash -= $surgeryCost>>
-	<<if $PC.medicine >= 100>><<set $slaves[$i].health -= 5>><<else>><<set $slaves[$i].health -= 10>><</if>>
-<<elseif $slaves[$i].bellyImplant < 0 && $bellyImplants > 0 && $thisSurgery.bellyImplant == "install" && $slaves[$i].womb.length == 0 && $slaves[$i].broodmother == 0>>
-	<<set $slaves[$i].bellyImplant = 100>>
-	<<set $slaves[$i].preg = -2>>
-	<<set $cash -= $surgeryCost>>
-	<<if $activeSlave.ovaries == 1 || $activeSlave.mpreg == 1>>
-		<<set $surgeries.push("belly implant"), $surgeryType = "bellyIn">>
-		<<if $PC.medicine >= 100>><<set $slaves[$i].health -= 5>><<else>><<set $slaves[$i].health -= 10>><</if>>
-	<<else>>
-		<<set $surgeries.push("male belly implant"), $surgeryType = "bellyInMale">>
-		<<if $PC.medicine >= 100>><<set $slaves[$i].health -= 25>><<else>><<set $slaves[$i].health -= 50>><</if>>
-	<</if>>
-	<<silently>>
-		<<set _tmpNextL = $nextLink, _tmpNextB = $nextButton>>
-		<<include "Surgery Degradation">>
-		<<set $nextLink = _tmpNextL, $nextButton = _tmpNextB>>
-	<</silently>>
-<<elseif $slaves[$i].bellyImplant >= 0 && $thisSurgery.bellyImplant == "remove">>
-	<<set $surgeries.push("belly implant removal"), $surgeryType = "bellyOut">>
-	<<if $PC.medicine >= 100>><<set $slaves[$i].health -= 5>><<else>><<set $slaves[$i].health -= 10>><</if>>
-	<<set $slaves[$i].preg = 0>>
-	<<set $slaves[$i].bellyImplant = -1>>
-	<<set $cash -= $surgeryCost>>
-	<<silently>>
-		<<set _tmpNextL = $nextLink, _tmpNextB = $nextButton>>
-		<<include "Surgery Degradation">>
-		<<set $nextLink = _tmpNextL, $nextButton = _tmpNextB>>
-	<</silently>>
-<<else>>
-
-<<set $seed = 1>>
-<</if>>
-<</if>>
-
-<</for>>
-
-<<if $surgeries.length > 0>>
-	<<set $surgeriesDisplay = "">>
-	<<for $j = 0; $j < $surgeries.length; $j++>>
-		<<set $seed = $surgeries[$j]>>
-		<<set $surgeriesDisplay = ($surgeriesDisplay + $seed)>>
-		<<if $j < $surgeries.length-2>>
-		<<set $surgeriesDisplay = ($surgeriesDisplay + ", ")>>
-		<<elseif $j < $surgeries.length-1>>
-		<<if $surgeries.length > 2>>
-			<<set $surgeriesDisplay = ($surgeriesDisplay + ", and ")>>
-		<<else>>
-			<<set $surgeriesDisplay = ($surgeriesDisplay + " and ")>>
-		<</if>>
-		<</if>>
-	<</for>>
-	<<if $assistantName == "your personal assistant">>Your personal assistant<<else>>$assistantName<</if>>, ordered to apply surgery, gives $slaves[$i].slaveName @@.lime;$surgeriesDisplay.@@
-<</if>>
diff --git a/src/uncategorized/rulesFacilityRemove.tw b/src/uncategorized/rulesFacilityRemove.tw
deleted file mode 100644
index e14cd3977c75d6275b83852e3c7d7808e94cea29..0000000000000000000000000000000000000000
--- a/src/uncategorized/rulesFacilityRemove.tw
+++ /dev/null
@@ -1,92 +0,0 @@
-:: Rules Facility Remove [nobr]
-
-<<if _combinedRule.facilityRemove>>
-
-	<<switch _combinedRule.assignFacility>>
-	<<case "brothel">>
-		<<if $activeSlave.assignment == "work in the brothel">>
-			<<if ($Madam == 0) || ($Madam.ID != $activeSlave.ID)>>
-				<br>$activeSlave.slaveName has been removed from $brothelName and has been assigned to _combinedRule.removalAssignment.
-				<<assignJob $activeSlave _combinedRule.removalAssignment>>
-			<</if>>
-		<</if>>
-
-	<<case "club">>
-		<<if $activeSlave.assignment == "serve in the club">>
-			<<if ($DJ == 0) || ($DJ.ID != $activeSlave.ID)>>
-				<br>$activeSlave.slaveName has been removed from $clubName and has been assigned to _combinedRule.removalAssignment.
-				<<assignJob $activeSlave _combinedRule.removalAssignment>>
-			<</if>>
-		<</if>>
-
-	<<case "dairy">>
-		<<if $activeSlave.assignment == "work in the dairy">>
-			<<if ($Milkmaid == 0) || ($Milkmaid.ID != $activeSlave.ID)>>
-				<br>$activeSlave.slaveName has been removed from $dairyName and has been assigned to _combinedRule.removalAssignment.
-				<<assignJob $activeSlave _combinedRule.removalAssignment>>
-			<</if>>
-		<</if>>
-
-	<<case "arcade">>
-		<<if $activeSlave.assignment == "be confined in the arcade">>
-			<br>$activeSlave.slaveName has been removed from $arcadeName and has been assigned to _combinedRule.removalAssignment.
-			<<assignJob $activeSlave _combinedRule.removalAssignment>>
-		<</if>>
-
-	<<case "spa">>
-		<<if $activeSlave.assignment == "rest in the spa">>
-			<<if ($Attendant == 0) || ($Attendant.ID != $activeSlave.ID)>>
-				<br>$activeSlave.slaveName has been removed from $spaName and has been assigned to _combinedRule.removalAssignment.
-				<<assignJob $activeSlave _combinedRule.removalAssignment>>
-			<</if>>
-		<</if>>
-
-	<<case "clinic">>
-		<<if $activeSlave.assignment == "get treatment in the clinic">>
-			<<if ($Nurse == 0) || ($Nurse.ID != $activeSlave.ID)>>
-				<br>$activeSlave.slaveName has been removed from $clinicName and has been assigned to _combinedRule.removalAssignment.
-				<<assignJob $activeSlave _combinedRule.removalAssignment>>
-			<</if>>
-		<</if>>
-
-	<<case "mastersuite">>
-		<<if $activeSlave.assignment == "serve in the master suite">>
-			<<if ($Concubine == 0) || ($Concubine.ID != $activeSlave.ID)>>
-				<br>$activeSlave.slaveName has been removed from $masterSuiteName and has been assigned to _combinedRule.removalAssignment.
-				<<assignJob $activeSlave _combinedRule.removalAssignment>>
-			<</if>>
-		<</if>>
-
-	<<case "hgsuite">>
-		<<if $activeSlave.assignment == "live with your Head Girl">>
-			<<if ($HeadGirl == 0) || ($HeadGirl.ID != $activeSlave.ID)>>
-				<br>$activeSlave.slaveName has been removed from $HGSuiteName and has been assigned to _combinedRule.removalAssignment.
-				<<assignJob $activeSlave _combinedRule.removalAssignment>>
-			<</if>>
-		<</if>>
-
-	<<case "servantsquarters">>
-		<<if $activeSlave.assignment == "work as a servant">>
-			<<if ($Stewardess == 0) || ($Stewardess.ID != $activeSlave.ID)>>
-				<br>$activeSlave.slaveName has been removed from $servantsQuartersName and has been assigned to _combinedRule.removalAssignment.
-				<<assignJob $activeSlave _combinedRule.removalAssignment>>
-			<</if>>
-		<</if>>
-
-	<<case "schoolroom">>
-		<<if $activeSlave.assignment == "learn in the schoolroom">>
-			<<if ($Schoolteacher == 0) || ($Schoolteacher.ID != $activeSlave.ID)>>
-				<br>$activeSlave.slaveName has been removed from $schoolroomName and has been assigned to _combinedRule.removalAssignment.
-				<<assignJob $activeSlave _combinedRule.removalAssignment>>
-			<</if>>
-		<</if>>
-
-	<<case "cellblock">>
-		<<if $activeSlave.assignment == "be confined in the cellblock">>
-			<<if ($Wardeness == 0) || ($Wardeness.ID != $activeSlave.ID)>>
-				<br>$activeSlave.slaveName has been removed from $cellblockName and has been assigned to _combinedRule.removalAssignment.
-				<<assignJob $activeSlave _combinedRule.removalAssignment>>
-			<</if>>
-		<</if>>
-	<</switch>>
-<</if>>
diff --git a/src/uncategorized/saLiveWithHG.tw b/src/uncategorized/saLiveWithHG.tw
index c12a39cdb8382593490c1ab953cb6e3db1ebf82e..46e0ebe7a5029c0f36ccdde2fcbca32e1bd255c1 100644
--- a/src/uncategorized/saLiveWithHG.tw
+++ b/src/uncategorized/saLiveWithHG.tw
@@ -886,7 +886,7 @@
 <<if $HGSuiteSurgery != 0>>
 	<<if ($slaves[$i].health > 40) && $arcologies[0].FSBodyPurist == "unset">>
 		$HeadGirl.slaveName sends $assistantName notes on what surgical modifications she wants for $slaves[$i].slaveName.
-		<<include "Rules Autosurgery">>
+		<<= rulesAutosurgery($slaves[$i])>>
 	<</if>>
 	<<if $HeadGirl.fetishKnown == 1>>
 		<<if ($HeadGirl.fetish == "sadist") && ($HeadGirl.fetishStrength > 95) && ($seeExtreme == 1) && ($slaves[$i].fetish != "mindbroken")>>
diff --git a/src/uncategorized/saLongTermEffects.tw b/src/uncategorized/saLongTermEffects.tw
index 7ad1bfec148a41b33f0bcfe2d0927028fd26b2fa..0150dd6f2f1a5a7e906553f88227828c43577bf8 100644
--- a/src/uncategorized/saLongTermEffects.tw
+++ b/src/uncategorized/saLongTermEffects.tw
@@ -112,7 +112,7 @@
 <<if ($slaves[$i].assignment != "guard you")>>
 <<if ($slaves[$i].assignment != "live with your Head Girl")>>
 <<if ($cash > 0)>>
-	<<include "Rules Autosurgery">>
+	<<= rulesAutoSurgery($slaves[$i])>>
 <</if>>
 <</if>>
 <</if>>
diff --git a/src/uncategorized/slaveInteract.tw b/src/uncategorized/slaveInteract.tw
index 0a63d8d634b08ad324884ab57f157b4187fc1ed6..07eefa8f21e8c1968735d4432bbe21f001adbe18 100644
--- a/src/uncategorized/slaveInteract.tw
+++ b/src/uncategorized/slaveInteract.tw
@@ -396,8 +396,8 @@
 	<</if>>
 	<<link "//Apply rules//">>
 		<<silently>>
-		<<CheckAutoRulesActivate $activeSlave>>
-		<<DefaultRules $activeSlave>>
+		<<run CheckAutoRulesActivate($activeSlave)>>
+		<<run DefaultRules($activeSlave)>>
 		<</silently>>
 		<<goto "Slave Interact">>
 	<</link>>
diff --git a/src/utility/assignWidgets.tw b/src/utility/assignWidgets.tw
index 597107d99dbf8a890cbd27c2abd5b8cfc7122875..68339781768584d000e8b6d8b3709ca49b2a1247 100644
--- a/src/utility/assignWidgets.tw
+++ b/src/utility/assignWidgets.tw
@@ -1,148 +1,15 @@
 :: Assign Widgets [widget nobr]
 
-/%
+/*
 	Call as <<assignJob slaveObject $returnTo | _currentRule.facilityRemove | "serve in the master suite"
 	$args[0] slave object. *MUST be present*
 	$args[1] Job to assign slave to. Will accept the $returnTo vars and the _currentRule.assignFacility vars and the actual job assignments "serve in the master suite" etc.
 
 	This is basically a Widget version of assign but will work anywhere, and saves to the slaves[..] array, and changes your $args[0] var sent.
-%/
-<<widget assignJob>>
-<<if ($args[1] != "Pit") && ($args[1] != "Coursing Association")>>
-
-	<<removeJob $args[0] $args[0].assignment>> /* sets _wID and _wi */
+*/
 
-	/% use .toLowerCase() to get rid of a few dupe conditions. %/
-	<<switch $args[1].toLowerCase()>>
-		<<case "be confined in the arcade" "arcade">>
-			<<set $args[0].assignment = "be confined in the arcade",    $args[0].assignmentVisible = 0, $arcadeSlaves++, $ArcadeiIDs.push(_wID)>>
-			<<set $args[0].clothing = "none", $args[0].shoes = "none", $args[0].collar = "none", $args[0].livingRules = "spare">>
-		<<case "work in the brothel" "brothel">>
-			<<set $args[0].assignment = "work in the brothel",          $args[0].assignmentVisible = 0, $brothelSlaves++, $BrothiIDs.push(_wID)>>
-			<<switch $brothelDecoration>>
-			<<case "Degradationist" "standard">>
-				<<set $args[0].livingRules = "spare">>
-			<<default>>
-				<<set $args[0].livingRules = "normal">>
-			<</switch>>
-		<<case "be confined in the cellblock" "cellblock">>
-			<<set $args[0].assignment = "be confined in the cellblock", $args[0].assignmentVisible = 0, $cellblockSlaves++, $CellBiIDs.push(_wID)>>
-			<<switch $cellblockDecoration>>
-			<<case "Paternalist">>
-				<<set $args[0].livingRules = "normal">>
-			<<default>>
-				<<set $args[0].livingRules = "spare">>
-			<</switch>>
-		<<case "get treatment in the clinic" "clinic">>
-			<<set $args[0].assignment = "get treatment in the clinic",  $args[0].assignmentVisible = 0, $clinicSlaves++, $CliniciIDs.push(_wID)>>
-			<<switch $clinicDecoration>>
-			<<case "Repopulation Focus" "Eugenics" "Gender Radicalist" "Gender Fundamentalist" "Paternalist" "Maturity Preferentialist" "Youth Preferentialist" "Slimness Enthusiast" "Hedonistic">>
-				<<set $args[0].livingRules = "luxurious">>
-			<<case "Roman Revivalist" "Aztec Revivalist" "Egyptian Revivalist" "Arabian Revivalist" "Chinese Revivalist" "Chattel Religionist" "Edo Revivalist">>
-				<<set $args[0].livingRules = "normal">>
-			<<default>>
-				<<set $args[0].livingRules = "spare">>
-			<</switch>>
-		<<case "serve in the club" "club">>
-			<<set $args[0].assignment = "serve in the club",            $args[0].assignmentVisible = 0, $clubSlaves++, $ClubiIDs.push(_wID)>>
-			<<set $args[0].livingRules = "normal">>
-		<<case "work in the dairy" "dairy">>
-			<<set $args[0].assignment = "work in the dairy",            $args[0].assignmentVisible = 0, $dairySlaves++, $DairyiIDs.push(_wID)>>
-			<<switch $dairyDecoration>>
-			<<case "Roman Revivalist" "Aztec Revivalist" "Chinese Revivalist" "Chattel Religionist" "Edo Revivalist" "Arabian Revivalist" "Egyptian Revivalist" "Supremacist" "Subjugationist" "Degradationist">>
-				<<set $args[0].livingRules = "spare">>
-			<<default>>
-				<<set $args[0].livingRules = "normal">>
-			<</switch>>
-		<<case "live with your head girl" "head girl suite" "hgsuite">>
-			<<set $args[0].assignment = "live with your Head Girl",     $args[0].assignmentVisible = 0, $HGSuiteSlaves++, $HGSuiteiIDs.push(_wID)>>
-			<<set $args[0].livingRules = "luxurious">>
-		<<case "serve in the master suite" "master suite" "mastersuite">>
-			<<set $args[0].assignment = "serve in the master suite",    $args[0].assignmentVisible = 0, $masterSuiteSlaves++, $MastSiIDs.push(_wID)>>
-			<<if $masterSuiteUpgradeLuxury > 0>>
-				<<set $args[0].livingRules = "luxurious">>
-			<<else>>
-				<<set $args[0].livingRules = "spare">>
-			<</if>>
-		<<case "learn in the schoolroom" "schoolroom">>
-			<<set $args[0].assignment = "learn in the schoolroom",      $args[0].assignmentVisible = 0, $schoolroomSlaves++, $SchlRiIDs.push(_wID)>>
-			<<set $args[0].livingRules = "normal">>
-		<<case "work as a servant" "servants' quarters" "servantsquarters">>
-			<<set $args[0].assignment = "work as a servant",            $args[0].assignmentVisible = 0, $servantsQuartersSlaves++, $ServQiIDs.push(_wID)>>
-			<<switch $servantsQuartersDecoration>>
-			<<case "Roman Revivalist" "Aztec Revivalist" "Chinese Revivalist" "Chattel Religionist" "Edo Revivalist" "Supremacist" "Subjugationist" "Degradationist" "Arabian Revivalist" "Egyptian Revivalist">>
-				<<set $args[0].livingRules = "spare">>
-			<<default>>
-				<<set $args[0].livingRules = "normal">>
-			<</switch>>
-		<<case "rest in the spa" "spa">>
-			<<set $args[0].assignment = "rest in the spa",              $args[0].assignmentVisible = 0, $spaSlaves++, $SpaiIDs.push(_wID)>>
-			<<switch $spaDecoration>>
-			<<case "Chattel Religionist" "Chinese Revivalist">>
-				<<set $args[0].livingRules = "normal">>
-			<<case "Degradationist">>
-				<<set $args[0].livingRules = "spare">>
-			<<default>>
-				<<set $args[0].livingRules = "luxurious">>
-			<</switch>>
-		<<case "be the attendant" "be the dj" "be the madam" "be the milkmaid" "be the nurse" "be the schoolteacher" "be the stewardess" "be the wardeness">>
-			<<set $args[0].assignment = $args[1],                       $args[0].assignmentVisible = 0>>     /* non-visible leadership roles */
-			<<set $args[0].livingRules = "luxurious">>
-		<<case "be your concubine">>
-			<<set $args[0].assignment = $args[1],                       $args[0].assignmentVisible = 0>>     /* non-visible leadership roles */
-			<<if $masterSuiteUpgradeLuxury > 0>>
-				<<set $args[0].livingRules = "luxurious">>
-			<<else>>
-				<<set $args[0].livingRules = "normal">>
-			<</if>>
-		<<case "be your head girl">>
-			<<set $args[0].assignment = $args[1]>>
-			<<if $HGSuite == 1>>
-				<<set $args[0].livingRules = "luxurious">>
-			<</if>>
-		<<case "guard you">>
-			<<set $args[0].assignment = $args[1]>>
-			<<if $dojo > 1>>
-				<<set $args[0].livingRules = "luxurious">>
-			<</if>>
-			<<if $pitBG == 1 && $fighterIDs.includes(_wID)>>
-				<<set $fighterIDs.delete(_wID)>>
-			<</if>>
-		<<case "be your agent" "live with your agent">>
-			<<set $args[0].assignment = $args[1],                       $args[0].assignmentVisible = 0,      $args[0].useRulesAssistant = 0>> /* non-visible roles exempt from Rules Assistant */
-			<<if $args[1] == "be your agent">>
-				<<set $leaders.push($args[0])>>
-			<</if>>
-		<<case "choose her own job">>
-			<<set $args[0].assignment = $args[1],                       $args[0].choosesOwnAssignment = 1>>  /* removeJob already set assignmentVisible = 1 */
-		<<default>>
-			<<set $args[0].assignment = $args[1]>>                      /* removeJob already set assignmentVisible = 1 and choosesOwnAssignment = 0 */
-	<</switch>>
-
-	<<if $args[0].assignmentVisible == 0 && Array.isArray($personalAttention)>>
-		<<set _awi = $personalAttention.findIndex(function(s) { return s.ID == _wID; })>>
-		<<if _awi != -1>>
-			<<set $personalAttention.deleteAt(_awi)>>
-			<<if $personalAttention.length == 0>>
-				<<if $PC.career == "escort">>
-					<<set $personalAttention = "whoring">>
-				<<elseif $PC.career == "servant">>
-					<<set $personalAttention = "upkeep">>
-				<<else>>
-					<<set $personalAttention = "business">>
-				<</if>>
-				$args[0].slaveName no longer has your personal attention; you plan to focus on $personalAttention.
-			<<else>>
-				$args[0].slaveName no longer has your personal attention.
-			<</if>>
-		<</if>>
-	<</if>>
-
-	<<if _wi >= 0>>
-		<<set $slaves[_wi] = $args[0]>> /* save changes to slave array */
-	<</if>>
-
-<</if>> /* not Pit or Coursing Association */
+<<widget assignJob>>
+	<<= assignJob($args[0], $args[1]) >>
 <</widget>>
 
 /%
@@ -154,106 +21,5 @@
 	Retrieve overrides the 'rest' in most cases.
 %/
 <<widget removeJob>>
-<<set _wID = $args[0].ID>>
-<<set _wi = $slaveIndices[_wID]>>
-
-<<if ($args[1] == "Pit")>>
-	<<set $fighterIDs.delete(_wID)>>
-
-<<elseif ($args[1] == "Coursing Association")>>
-	<<set $Lurcher = 0>>
-
-<<else>>
-
-	<<if $HeadGirl != 0      && _wID == $HeadGirl.ID>><<set $HeadGirl = 0>><</if>>
-	<<if $Recruiter != 0     && _wID == $Recruiter.ID>><<set $Recruiter = 0>><</if>>
-	<<if $Bodyguard != 0     && _wID == $Bodyguard.ID>><<set $Bodyguard = 0>><</if>>
-	<<if $Madam != 0         && _wID == $Madam.ID>><<set $Madam = 0>><</if>>
-	<<if $DJ != 0            && _wID == $DJ.ID>><<set $DJ = 0>><</if>>
-	<<if $Milkmaid != 0      && _wID == $Milkmaid.ID>><<set $Milkmaid = 0>><</if>>
-	<<if $Schoolteacher != 0 && _wID == $Schoolteacher.ID>><<set $Schoolteacher = 0>><</if>>
-	<<if $Attendant != 0     && _wID == $Attendant.ID>><<set $Attendant = 0>><</if>>
-	<<if $Nurse != 0         && _wID == $Nurse.ID>><<set $Nurse = 0>><</if>>
-	<<if $Stewardess != 0    && _wID == $Stewardess.ID>><<set $Stewardess = 0>><</if>>
-	<<if $Wardeness != 0     && _wID == $Wardeness.ID>><<set $Wardeness = 0>><</if>>
-	<<if $Concubine != 0     && _wID == $Concubine.ID>><<set $Concubine = 0>><</if>>
-	<<if $Collectrix != 0    && _wID == $Collectrix.ID>><<set $Collectrix = 0>><</if>>
-
-	/% use .toLowerCase() to get rid of a few dupe conditions. %/
-	<<switch $args[1].toLowerCase()>>
-		<<case "be confined in the arcade" "arcade">>
-			<<set $args[0].assignment = "work a glory hole">>
-			<<set $ArcadeiIDs.delete(_wID), $arcadeSlaves-->>
-		<<case "work in the brothel" "brothel">>
-			<<set $args[0].assignment = "whore">>
-			<<set $BrothiIDs.delete(_wID), $brothelSlaves-->>
-		<<case "be confined in the cellblock" "cellblock">>
-			<<set $args[0].assignment = "rest">>
-			<<if ($args[0].inflation > 0)>>
-				<<set $args[0].inflation = 0, $args[0].inflationType = "none", $args[0].inflationMethod = 0>>
-				<<SetBellySize $args[0]>>
-			<</if>>
-			<<set $CellBiIDs.delete(_wID), $cellblockSlaves-->>
-		<<case "get treatment in the clinic" "clinic">>
-			<<set $args[0].assignment = "rest">>
-			<<set $CliniciIDs.delete(_wID), $clinicSlaves-->>
-		<<case "serve in the club" "club">>
-			<<set $args[0].assignment = "serve the public">>
-			<<set $ClubiIDs.delete(_wID), $clubSlaves-->>
-		<<case "work in the dairy" "dairy">>
-			<<set $args[0].assignment = "get milked">>
-			<<set $DairyiIDs.delete(_wID), $dairySlaves-->>
-		<<case "learn in the schoolroom" "schoolroom">>
-			<<set $args[0].assignment = "rest">>
-			<<set $SchlRiIDs.delete(_wID), $schoolroomSlaves-->>
-		<<case "rest in the spa" "spa">>
-			<<set $args[0].assignment = "rest">>
-			<<set $SpaiIDs.delete(_wID), $spaSlaves-->>
-		<<case "work as a servant" "servants' quarters" "servantsquarters">>
-			<<set $args[0].assignment = "be a servant">>
-			<<set $ServQiIDs.delete(_wID), $servantsQuartersSlaves-->>
-		<<case "serve in the master suite" "master suite" "mastersuite">>
-			<<set $args[0].assignment = "please you">>
-			<<set $MastSiIDs.delete(_wID), $masterSuiteSlaves-->>
-		<<case "live with your head girl" "head girl suite" "hgsuite">>
-			<<set $args[0].assignment = "rest">>
-			<<set $HGSuiteiIDs.delete(_wID), $HGSuiteSlaves-->>
-		<<case "be your head girl">>
-			<<set $args[0].assignment = "rest">>
-			<<if $HGSuiteEquality == 0 && $personalAttention == "HG">>
-				<<if $PC.career == "escort">>
-					<<set $personalAttention = "whoring">>
-				<<elseif $PC.career == "servant">>
-					<<set $personalAttention = "upkeep">>
-				<<else>>
-					<<set $personalAttention = "business">>
-				<</if>>
-				You no longer have a slave assigned to be your Head Girl, so you turn your personal attention to focus on $personalAttention.
-			<</if>>
-		<<case "be your agent" "live with your agent">>
-			<<set $args[0].assignment = "rest">>
-			<<set _leaderIndex = $leaders.findIndex(function(x) { return x.ID == $args[0].ID })>>
-			<<if _leaderIndex != -1>>
-				<<set $leaders.deleteAt(_leaderIndex)>>
-			<</if>>
-			<<if $args[0].relationshipTarget > 0>> /* following code assumes there can be at most one companion */
-				<<set _lover = $slaves.findIndex(function(s) { return s.relationshipTarget == $args[0].ID && s.assignment == "live with your agent"; })>>
-				<<if _lover != -1>>
-					<<set $slaves[_lover].assignment = "rest", $slaves[_lover].assignmentVisible = 1>>
-				<</if>>
-			<</if>>
-		<<default>>
-			<<set $args[0].assignment = "rest">>
-	<</switch>>
-
-	<<if $args[0].livingRules == "luxurious" && $args[0].assignmentVisible != 1>>
-		<<set $args[0].livingRules = "normal">>
-	<</if>>
-	<<set $args[0].assignmentVisible = 1, $args[0].choosesOwnAssignment = 0, $args[0].sentence = 0>>
-
-	<<if _wi >= 0>>
-		<<set $slaves[_wi] = $args[0]>> /* save changes to slave array */
-	<</if>>
-
-<</if>> /* not Pit or Coursing Association */
+	<<= removeJob($args[0], $args[1]) >>
 <</widget>>
diff --git a/src/utility/miscWidgets.tw b/src/utility/miscWidgets.tw
index 40c0cc6a34d2beb1bd46414f383f5beb5269b242..e58a0a8238765e991653fde38e92133f17548f48 100644
--- a/src/utility/miscWidgets.tw
+++ b/src/utility/miscWidgets.tw
@@ -18,6 +18,22 @@
 	<</replace>>
 <</widget>>
 
+/%
+ Call as <<AssayedSlaveAvailable>>
+ Checks $assayedSlave for availability, e.g. not strapped to a machine or distant.
+%/
+<<widget "AssayedSlaveAvailable">>
+<<if $assayedSlave.assignment == "be your agent">>
+	<<set $assayedSlaveAvailable = 0>>
+<<elseif $assayedSlave.assignment == "live with your agent">>
+	<<set $assayedSlaveAvailable = 0>>
+<<elseif ($assayedSlave.assignment == "work in the dairy") && ($dairyRestraintsSetting >= 2)>>
+	<<set $assayedSlaveAvailable = 0>>
+<<else>>
+	<<set $assayedSlaveAvailable = 1>>
+<</if>>
+<</widget>>
+
 /%
  Call as <<AnalVCheck 10>> or <<AnalVCheck>>
  $arg[0] is how many times to increment the Anal counts.
@@ -1785,8 +1801,8 @@
 <<if $universalRulesNewSlavesRA == 1>>
 <<if $rulesAssistantAuto != 0>>
 	<<silently>>
-	<<CheckAutoRulesActivate $args[0]>>
-	<<DefaultRules $args[0]>>
+	<<run CheckAutoRulesActivate($args[0])>>
+	<<run DefaultRules($args[0])>>
 	<</silently>>
 <</if>>
 <</if>>
@@ -2653,26 +2669,7 @@ This experience
 
 	This block now relpaced with universal code
 */
-	<<set WombNormalizePreg($args[0])>> /*now with support for legacy code that advance pregnancy by setting .preg++ */
-
-	<<if $args[0].bellyImplant > 0>>
-		<<set _implantSize = $args[0].bellyImplant>>
-	<<else>>
-		<<set _implantSize = 0>>
-	<</if>>
-
-	<<if $args[0].inflation == 3>>
-		<<set $args[0].bellyFluid = 10000>>
-	<<elseif $args[0].inflation == 2>>
-		<<set $args[0].bellyFluid = 5000>>
-	<<elseif $args[0].inflation == 1>>
-		<<set $args[0].bellyFluid = 2000>>
-	<<else>>
-		<<set $args[0].bellyFluid = 0>>
-	<</if>>
-
-	<<set $args[0].belly = $args[0].bellyPreg+$args[0].bellyFluid+_implantSize>>
-
+	<<run SetBellySize($args[0])>>
 <</widget>>
 
 /* see how they are on a single line? This permits "."s and other things to be appended directly onto the widget result */
diff --git a/src/utility/raWidgets.tw b/src/utility/raWidgets.tw
deleted file mode 100644
index 548dd69f894d0d75ef839730338a71f8ee32c82b..0000000000000000000000000000000000000000
--- a/src/utility/raWidgets.tw
+++ /dev/null
@@ -1,4842 +0,0 @@
-:: RA widgets [widget nobr]
-
-/%
- % Call as <<RAChangeActivation>>
- %/
-<<widget "RAChangeActivation">>
-<<replace #activation>>
-
-    <<if ($currentRule.condition.id === "true")>>
-        (always): <br> ''always.''
-
-    <<elseif ($currentRule.condition.id === "false")>>
-        (never): <br> ''never''
-
-    <<else>>
-        <<set _activation = getVariable($currentRule.condition)>>
-
-        (_activation): <br>
-
-        <<switch $currentRule.condition.id>>
-        <<case "<">>
-            When ''_activation'' is ''less than''
-            <<textbox "$currentRule.condition.second.value" $currentRule.condition.second.value>>
-        <<case "<=">>
-            When ''_activation'' is
-            <<textbox "$currentRule.condition.second.value" $currentRule.condition.second.value>> ''or less''
-
-        <<case ">" ">=">>
-            (no upper limit)
-
-        <<case "&&" "||">>
-            <<if $currentRule.condition.first.id == "<">>
-                When ''_activation'' is ''less than''
-                <<textbox "$currentRule.condition.first.second.value" $currentRule.condition.first.second.value>>
-            <<else>>
-                When ''_activation'' is
-                <<textbox "$currentRule.condition.first.second.value" $currentRule.condition.first.second.value>> ''or less''
-            <</if>>
-        <</switch>>
-
-        <<link "<">>
-            <<set $currentRule.condition = changeComparison($currentRule.condition, "<")>>
-            <<RAChangeActivation>>
-        <</link>>
-        |
-        <<link "&le;">>
-            <<set $currentRule.condition = changeComparison($currentRule.condition, "<=")>>
-            <<RAChangeActivation>>
-        <</link>>
-        |
-        <<link "no upper limit">>
-            <<set $currentRule.condition = removeComparison($currentRule.condition, "upper")>>
-            <<RAChangeActivation>>
-        <</link>>
-
-        <br>
-        <<switch $currentRule.condition.id>>
-        <<case "<" "<=" ">" ">=">>
-            and
-        <<case "&&">>
-            ''and''
-            |
-            <<link "or">>
-                <<set $currentRule.condition = changeConnective($currentRule.condition, "||")>>
-                <<RAChangeActivation>>
-            <</link>>
-        <<case "||">>
-            <<link "and">>
-                <<set $currentRule.condition = changeConnective($currentRule.condition, "&&")>>
-                <<RAChangeActivation>>
-            <</link>>
-            |
-            ''or''
-        <</switch>>
-        <br>
-
-        <<switch $currentRule.condition.id>>
-        <<case "<" "<=">>
-            (no lower limit)
-
-        <<case ">">>
-            When ''_activation'' is ''more than''
-            <<textbox "$currentRule.condition.second.value" $currentRule.condition.second.value>>
-        <<case ">=">>
-            When ''_activation'' is
-            <<textbox "$currentRule.condition.second.value" $currentRule.condition.second.value>> ''or more''
-
-        <<case "&&" "||">>
-            <<if ($currentRule.condition.second.id == ">")>>
-                When ''_activation'' is ''more than''
-                <<textbox "$currentRule.condition.second.second.value" $currentRule.condition.second.second.value>>
-            <<else>>
-                When ''_activation'' is
-                <<textbox "$currentRule.condition.second.second.value" $currentRule.condition.second.second.value>> ''or more''
-            <</if>>
-        <</switch>>
-
-        <<link ">">>
-            <<set $currentRule.condition = changeComparison($currentRule.condition, ">")>>
-            <<RAChangeActivation>>
-        <</link>>
-        |
-        <<link "&ge;">>
-            <<set $currentRule.condition = changeComparison($currentRule.condition, ">=")>>
-            <<RAChangeActivation>>
-        <</link>>
-        |
-        <<link "no lower limit">>
-            <<set $currentRule.condition = removeComparison($currentRule.condition, "lower")>>
-            <<RAChangeActivation>>
-        <</link>>
-
-        <<switch _activation>>
-        <<case "devotion">>
-            <br>@@.darkviolet;Very hateful@@: under -95, @@.darkviolet;Hateful@@: -95 to under -50, @@.mediumorchid;Resistant@@: -50 to under -20, @@.yellow;Ambivalent@@: -20 to 20, @@.hotpink;Accepting@@: over 20 to 50, @@.deeppink;Devoted@@: over 50 to 95, @@.magenta;Worshipful@@: over 95
-        <<case "trust">>
-            <br>@@.goldenrod;Extremely terrified@@: under -95, @@.goldenrod;Terrified@@: -95 to under -50, @@.gold;Frightened@@: -50 to under -20,
-            <br>@@.yellow;Fearful@@: -20 to 20, @@.mediumaquamarine;Careful@@: over 40 to 50, @@.mediumseagreen;Trusting@@: 50 to 95, @@.seagreen;Total trust@@: over 95
-        <<case "health">>
-            <br>@@.red;Death@@: under -100, @@.red;Near death@@: -100 to less than -90, @@.red;Extremely unhealthy@@: -90 to less than -50, @@.red;Unhealthy@@: -50 to less than -20
-            <br>@@.green;Healthy@@: -20 to 20, @@.green;Very healthy@@: 20 to 50, @@.green;Extremely healthy@@: over 50 to 90, @@.green;Unnaturally healthy@@: over 90
-        <<case "sex drive">>
-            <br>@@.red;Frigid@@: 20 or under, @@.red;Poor@@: 21 to 40, @@.yellow;Average@@: 41 to 60, @@.green;Powerful@@: 61 to 80, @@.green;Sex addict@@: 81 to 99, @@.green;Nympho@@: 100
-        <<case "weight">>
-            <br>@@.red;Emaciated@@: under -95, @@.red;Skinny@@: -95 to less than -30,
-            <br>Thin: -30 to less than -10, Average weight: -10 to 10, Plush: over 10 to 30,
-            <br>@@.red;Fat@@: over 30 to 95, @@.red;Overweight@@: over 95
-        <<case "lactation">>
-            <br>// 0 - none, 1 - natural, 2 - lactation implant. //
-        <<case "preg">>
-            <br>// >1 - pregnancy week(s), 0 - not pregnant, -1 - on contraceptives, -2 - barren. //
-        <<case "pregType">>
-            <br>// Fetus count, rule can be applied only after week 10 of pregnancy. //
-        <<case "bellyImplant">>
-            <br>// Volume of belly implant in ccs. -1 - none. //
-        <<case "belly">>
-            <br>// Volume of belly in ccs. Any source. //
-        <<case "custom">>
-            <br>// Enter custom condition. //
-        <</switch>>
-    <</if>>
-<</replace>>
-<</widget>>
-
-/%
- % Call as <<RACommonAssignmentVariables>>
- %/
-<<widget "RACommonAssignmentVariables">>
-    <<set _penthouseAssignments = [
-		"rest",
-		"whore",
-		"please you",
-		"get milked",
-		"be a servant",
-		"take classes",
-		"stay confined",
-		"serve the public",
-		"work a glory hole",
-		"be a subordinate slave"
-	]>>
-
-	<<set _facilityAssignments = [
-		"rest in the spa",
-		"serve in the club",
-		"work as a servant",
-		"work in the dairy",
-		"work in the brothel",
-		"learn in the schoolroom",
-		"live with your Head Girl",
-		"be confined in the arcade",
-		"serve in the master suite",
-		"get treatment in the clinic",
-		"be confined in the cellblock"
-	]>>
-<</widget>>
-
-/%
- % Call as <<RANormalizeAssignments>>
- %/
-<<widget "RANormalizeAssignments">>
-<<RACommonAssignmentVariables>>
-
-<<switch $args[0]>>
-<<case "assignment">>
-	<<if $currentRule.assignment.length > 0>>
-		<<set $currentRule.excludeAssignment = []>>
-		<<set $currentRule.facilityRemove = false>>
-		<<RAChangeAssignFacility>>
-	<</if>>
-	/% RAChangeExcludeAssignment is also responsible for the case that both
-	 % assignment and excludeAssignment are empty (it sets some colors and
-	 % stuff) so we always need to call it.
-	 %/
-	<<RAChangeExcludeAssignment>>
-	<<RAChangeApplyAssignment>>
-	<<RARuleModified>>
-
-<<case "excludeAssignment">>
-	<<if $currentRule.excludeAssignment.length > 0>>
-		<<set $currentRule.assignment = []>>
-		<<RAChangeApplyAssignment>>
-	<</if>>
-	<<RAChangeExcludeAssignment>>
-	<<RARuleModified>>
-
-<<case "facility">>
-	<<if $currentRule.facility.length > 0>>
-		<<set $currentRule.excludeFacility = []>>
-		<<if !$currentRule.facility.includes($currentRule.setAssignment)>>
-			<<set $currentRule.facilityRemove = false>>
-			<<RAChangeAssignFacility>>
-		<</if>>
-	<</if>>
-	/% same as above with RAChangeExcludeAssignment %/
-	<<RAChangeExcludeFacility>>
-	<<RAChangeApplyFacility>>
-	<<RARuleModified>>
-
-<<case "excludeFacility">>
-	<<if $currentRule.excludeFacility.length > 0>>
-		<<set $currentRule.facility = []>>
-		<<if $currentRule.excludeFacility.includes($currentRule.setAssignment)>>
-			<<set $currentRule.facilityRemove = false>>
-			<<RAChangeAssignFacility>>
-		<</if>>
-		<<RAChangeApplyFacility>>
-	<</if>>
-	<<RAChangeExcludeFacility>>
-	<<RARuleModified>>
-
-<<case "setAssignment">>
-	<<if _facilityAssignments.includes($currentRule.setAssignment) && $currentRule.facilityRemove>>
-		/% If a rule sends a slave to a facility that it does not
-		 % manage (due to exclusion or inclusion settings) and
-		 % facilityRemove is turned on, then the slave would be sent to
-		 % the facility, the rule would not apply anymore and so she
-		 % would be removed from the facility.  So we try to prevent
-		 % that.
-		 %/
-		<<if $currentRule.excludeFacility.includes($currentRule.setAssignment)>>
-			<<set $currentRule.excludeFacility.delete($currentRule.setAssignment)>>
-			<<RAChangeExcludeFacility>>
-		<</if>>
-		<<if $currentRule.facility.length > 0 && !$currentRule.facility.includes($currentRule.setAssignment)>>
-			<<set $currentRule.facility.push($currentRule.setAssignment)>>
-			<<RAChangeApplyFacility>>
-		<</if>>
-	<<else>>
-		/% facilityRemove would have no effect when the assignment is not in a
-		 % facility, but we reset anyway to prevent potential surprises to the
-		 % user later
-		 %/
-		<<set $currentRule.facilityRemove = false>>
-	<</if>>
-	<<RAChangeSetAssignment>>
-	<<RAChangeAssignFacility>>
-	<<RARuleModified>>
-
-<<case "facilityRemove">>
-	<<if $currentRule.facilityRemove>>
-		/% If facilityRemove is true that means that it was just set
-		 % which means that setAssignment is a facility (because otherwise
-		 % the UI that enables facilityRemove wouldn't be visible)
-		 %/
-		<<set $currentRule.assignment = []>>
-		<<set $currentRule.excludeFacility.delete($currentRule.setAssignment)>>
-		<<if $currentRule.facility.length > 0>>
-			<<set $currentRule.facility.push($currentRule.setAssignment)>>
-			<<RAChangeApplyFacility>>
-		<</if>>
-		/% again the thing with the RAChangeExcludeAssignment %/
-		<<RAChangeExcludeAssignment>>
-		<<RAChangeApplyAssignment>>
-		<<RAChangeExcludeFacility>>
-	<<else>>
-		/% nothing to do here really... %/
-	<</if>>
-	<<RAChangeAssignFacility>>
-	<<RARuleModified>>
-
-<</switch>>
-<</widget>>
-
-/%
- % Call as <<RAChangeApplyAssignment>>
- %/
-<<widget "RAChangeApplyAssignment">>
-<<if (ndef $currentRule.assignment)>><<set $currentRule.assignment = []>><</if>>
-<<if (ndef $currentRule.excludeAssignment)>><<set $currentRule.excludeAssignment = []>><</if>>
-
-<<set _rest = _whore = _fucktoy = _milked = _servant = _classes = _confined = _public = _gloryhole = _subordinate = false>>
-<<for _a = 0; _a < $currentRule.assignment.length; _a++>>
-	<<switch $currentRule.assignment[_a]>>
-	<<case "rest">>                     <<set _rest = true>>
-	<<case "whore">>                    <<set _whore = true>>
-	<<case "please you">>               <<set _fucktoy = true>>
-	<<case "get milked">>               <<set _milked = true>>
-	<<case "be a servant">>             <<set _servant = true>>
-	<<case "take classes">>             <<set _classes = true>>
-	<<case "stay confined">>            <<set _confined = true>>
-	<<case "serve the public">>         <<set _public = true>>
-	<<case "work a glory hole">>        <<set _gloryhole = true>>
-	<<case "be a subordinate slave">>   <<set _subordinate = true>>
-	<</switch>>
-<</for>>
-
-<<replace #applyassignment>>
-<<if _rest || _fucktoy || _servant || _confined || _whore || _public || _milked || _subordinate || _gloryhole || _classes>>
-	Apply to assignments:
-	<<link "All">>
-		<<set $currentRule.assignment = []>>
-		<<RANormalizeAssignments "assignment">>
-	<</link>>
-<<else>>
-	@@.gray;Apply to assignments:@@ ''All''
-<</if>>
-|
-<<if !_rest>>
-	<<link "Rest">>
-		<<set $currentRule.assignment.push("rest")>>
-		<<RANormalizeAssignments "assignment">>
-	<</link>>
-<<else>>
-	''Rest''
-	<<link Stop>>
-		<<set $currentRule.assignment.delete("rest")>>
-		<<RANormalizeAssignments "assignment">>
-	<</link>>
-<</if>>
-|
-<<if !_fucktoy>>
-	<<link "Fucktoy">>
-		<<set $currentRule.assignment.push("please you")>>
-		<<RANormalizeAssignments "assignment">>
-	<</link>>
-<<else>>
-	''Fucktoy''
-	<<link Stop>>
-		<<set $currentRule.assignment.delete("please you")>>
-		<<RANormalizeAssignments "assignment">>
-	<</link>>
-<</if>>
-|
-<<if !_subordinate>>
-	<<link "Subordinate Slave">>
-		<<set $currentRule.assignment.push("be a subordinate slave")>>
-		<<RANormalizeAssignments "assignment">>
-	<</link>>
-<<else>>
-	''Subordinate Slave''
-	<<link Stop>>
-		<<set $currentRule.assignment.delete("be a subordinate slave")>>
-		<<RANormalizeAssignments "assignment">>
-	<</link>>
-<</if>>
-|
-<<if !_servant>>
-	<<link "House Servant">>
-		<<set $currentRule.assignment.push("be a servant")>>
-		<<RANormalizeAssignments "assignment">>
-	<</link>>
-<<else>>
-	''House Servant''
-	<<link Stop>>
-		<<set $currentRule.assignment.delete("be a servant")>>
-		<<RANormalizeAssignments "assignment">>
-	<</link>>
-<</if>>
-|
-<<if !_confined>>
-	<<link "Confined">>
-		<<set $currentRule.assignment.push("stay confined")>>
-		<<RANormalizeAssignments "assignment">>
-	<</link>>
-<<else>>
-	''Confined''
-	<<link Stop>>
-		<<set $currentRule.assignment.delete("stay confined")>>
-		<<RANormalizeAssignments "assignment">>
-	<</link>>
-<</if>>
-|
-<<if !_whore>>
-	<<link "Whore">>
-		<<set $currentRule.assignment.push("whore")>>
-		<<RANormalizeAssignments "assignment">>
-	<</link>>
-<<else>>
-	''Whore''
-	<<link Stop>>
-		<<set $currentRule.assignment.delete("whore")>>
-		<<RANormalizeAssignments "assignment">>
-	<</link>>
-<</if>>
-|
-<<if !_public>>
-	<<link "Public Servant">>
-		<<set $currentRule.assignment.push("serve the public")>>
-		<<RANormalizeAssignments "assignment">>
-	<</link>>
-<<else>>
-	''Public Servant''
-	<<link Stop>>
-		<<set $currentRule.assignment.delete("serve the public")>>
-		<<RANormalizeAssignments "assignment">>
-	<</link>>
-<</if>>
-|
-<<if !_classes>>
-	<<link "Classes">>
-		<<set $currentRule.assignment.push("take classes")>>
-		<<RANormalizeAssignments "assignment">>
-	<</link>>
-<<else>>
-	''Classes''
-	<<link Stop>>
-		<<set $currentRule.assignment.delete("take classes")>>
-		<<RANormalizeAssignments "assignment">>
-	<</link>>
-<</if>>
-|
-<<if !_milked>>
-	<<link "Milked">>
-		<<set $currentRule.assignment.push("get milked")>>
-		<<RANormalizeAssignments "assignment">>
-	<</link>>
-<<else>>
-	''Milking''
-	<<link Stop>>
-		<<set $currentRule.assignment.delete("get milked")>>
-		<<RANormalizeAssignments "assignment">>
-	<</link>>
-<</if>>
-|
-<<if !_gloryhole>>
-	<<link "Gloryhole">>
-		<<set $currentRule.assignment.push("work a glory hole")>>
-		<<RANormalizeAssignments "assignment">>
-	<</link>>
-<<else>>
-	''Gloryhole''
-	<<link Stop>>
-		<<set $currentRule.assignment.delete("work a glory hole")>>
-		<<RANormalizeAssignments "assignment">>
-	<</link>>
-<</if>>
-<</replace>>
-<</widget>>
-
-/%
- % Call as <<RAChangeExcludeAssignment>>
- %/
-<<widget "RAChangeExcludeAssignment">>
-<<if (ndef $currentRule.assignment)>><<set $currentRule.assignment = []>><</if>>
-<<if (ndef $currentRule.excludeAssignment)>><<set $currentRule.excludeAssignment = []>><</if>>
-
-<<set _rest = _whore = _fucktoy = _milked = _servant = _classes = _confined = _public = _gloryhole = _subordinate = false>>
-<<for _a = 0; _a < $currentRule.excludeAssignment.length; _a++>>
-	<<switch $currentRule.excludeAssignment[_a]>>
-	<<case "rest">>                     <<set _rest = true>>
-	<<case "whore">>                    <<set _whore = true>>
-	<<case "please you">>               <<set _fucktoy = true>>
-	<<case "get milked">>               <<set _milked = true>>
-	<<case "be a servant">>             <<set _servant = true>>
-	<<case "take classes">>             <<set _classes = true>>
-	<<case "stay confined">>            <<set _confined = true>>
-	<<case "serve the public">>         <<set _public = true>>
-	<<case "work a glory hole">>        <<set _gloryhole = true>>
-	<<case "be a subordinate slave">>   <<set _subordinate = true>>
-	<</switch>>
-<</for>>
-
-<<replace #excludeassignment>>
-<<if _rest || _fucktoy || _servant || _confined || _whore || _public || _milked || _subordinate || _gloryhole || _classes>>
-	Include all assignments except:
-	<<link "None">>
-		<<set $currentRule.excludeAssignment = []>>
-		<<RANormalizeAssignments "excludeAssignment">>
-	<</link>>
-<<elseif ($currentRule.assignment.length > 0)>>
-	@@.gray;Exclude assignments:@@ ''None''
-<<else>>
-	Excluded assignments: ''None''
-<</if>>
-|
-<<if !_rest>>
-	<<link "Rest">>
-		<<set $currentRule.excludeAssignment.push("rest")>>
-		<<RANormalizeAssignments "excludeAssignment">>
-	<</link>>
-<<else>>
-	''Rest''
-	<<link Stop>>
-		<<set $currentRule.excludeAssignment.delete("rest")>>
-		<<RANormalizeAssignments "excludeAssignment">>
-	<</link>>
-<</if>>
-|
-<<if !_fucktoy>>
-	<<link "Fucktoy">>
-		<<set $currentRule.excludeAssignment.push("please you")>>
-		<<RANormalizeAssignments "excludeAssignment">>
-	<</link>>
-<<else>>
-	''Fucktoy''
-	<<link Stop>>
-		<<set $currentRule.excludeAssignment.delete("please you")>>
-		<<RANormalizeAssignments "excludeAssignment">>
-	<</link>>
-<</if>>
-|
-<<if !_subordinate>>
-	<<link "Subordinate Slave">>
-		<<set $currentRule.excludeAssignment.push("be a subordinate slave")>>
-		<<RANormalizeAssignments "excludeAssignment">>
-	<</link>>
-<<else>>
-	''Subordinate Slave''
-	<<link Stop>>
-		<<set $currentRule.excludeAssignment.delete("be a subordinate slave")>>
-		<<RANormalizeAssignments "excludeAssignment">>
-	<</link>>
-<</if>>
-|
-<<if !_servant>>
-	<<link "House Servant">>
-		<<set $currentRule.excludeAssignment.push("be a servant")>>
-		<<RANormalizeAssignments "excludeAssignment">>
-	<</link>>
-<<else>>
-	''House Servant''
-	<<link Stop>>
-		<<set $currentRule.excludeAssignment.delete("be a servant")>>
-		<<RANormalizeAssignments "excludeAssignment">>
-	<</link>>
-<</if>>
-|
-<<if !_confined>>
-	<<link "Confined">>
-		<<set $currentRule.excludeAssignment.push("stay confined")>>
-		<<RANormalizeAssignments "excludeAssignment">>
-	<</link>>
-<<else>>
-	''Confined''
-	<<link Stop>>
-		<<set $currentRule.excludeAssignment.delete("stay confined")>>
-		<<RANormalizeAssignments "excludeAssignment">>
-	<</link>>
-<</if>>
-|
-<<if !_whore>>
-	<<link "Whore">>
-		<<set $currentRule.excludeAssignment.push("whore")>>
-		<<RANormalizeAssignments "excludeAssignment">>
-	<</link>>
-<<else>>
-	''Whore''
-	<<link Stop>>
-		<<set $currentRule.excludeAssignment.delete("whore")>>
-		<<RANormalizeAssignments "excludeAssignment">>
-	<</link>>
-<</if>>
-|
-<<if !_public>>
-	<<link "Public Servant">>
-		<<set $currentRule.excludeAssignment.push("serve the public")>>
-		<<RANormalizeAssignments "excludeAssignment">>
-	<</link>>
-<<else>>
-	''Public Servant''
-	<<link Stop>>
-		<<set $currentRule.excludeAssignment.delete("serve the public")>>
-		<<RANormalizeAssignments "excludeAssignment">>
-	<</link>>
-<</if>>
-|
-<<if !_classes>>
-	<<link "Classes">>
-		<<set $currentRule.excludeAssignment.push("take classes")>>
-		<<RANormalizeAssignments "excludeAssignment">>
-	<</link>>
-<<else>>
-	''Classes''
-	<<link Stop>>
-		<<set $currentRule.excludeAssignment.delete("take classes")>>
-		<<RANormalizeAssignments "excludeAssignment">>
-	<</link>>
-<</if>>
-|
-<<if !_milked>>
-	<<link "Milked">>
-		<<set $currentRule.excludeAssignment.push("get milked")>>
-		<<RANormalizeAssignments "excludeAssignment">>
-	<</link>>
-<<else>>
-	''Milking''
-	<<link Stop>>
-		<<set $currentRule.excludeAssignment.delete("get milked")>>
-		<<RANormalizeAssignments "excludeAssignment">>
-	<</link>>
-<</if>>
-|
-<<if !_gloryhole>>
-	<<link "Gloryhole">>
-		<<set $currentRule.excludeAssignment.push("work a glory hole")>>
-		<<RANormalizeAssignments "excludeAssignment">>
-	<</link>>
-<<else>>
-	''Gloryhole''
-	<<link Stop>>
-		<<set $currentRule.excludeAssignment.delete("work a glory hole")>>
-		<<RANormalizeAssignments "excludeAssignment">>
-	<</link>>
-<</if>>
-|
-<<link "Exclude all">>
-	<<set $currentRule.excludeAssignment.push("work a glory hole")>>
-	<<set $currentRule.excludeAssignment.push("get milked")>>
-	<<set $currentRule.excludeAssignment.push("take classes")>>
-	<<set $currentRule.excludeAssignment.push("serve the public")>>
-	<<set $currentRule.excludeAssignment.push("whore")>>
-	<<set $currentRule.excludeAssignment.push("stay confined")>>
-	<<set $currentRule.excludeAssignment.push("be a servant")>>
-	<<set $currentRule.excludeAssignment.push("be a subordinate slave")>>
-	<<set $currentRule.excludeAssignment.push("please you")>>
-	<<set $currentRule.excludeAssignment.push("rest")>>
-	<<RANormalizeAssignments "excludeAssignment">>
-<</link>>
-<</replace>>
-<</widget>>
-
-/%
- % Call as <<RAChangeApplyFacility>>
- %/
-<<widget "RAChangeApplyFacility">>
-<<if (ndef $currentRule.facility)>><<set $currentRule.facility = []>><</if>>
-<<if (ndef $currentRule.excludeFacility)>><<set $currentRule.excludeFacility = []>><</if>>
-
-<<replace #applyfacility>>
-<<if ($HGSuite > 0) || ($brothel > 0) || ($club > 0) || ($arcade > 0) || ($dairy > 0) || ($servantsQuarters > 0) || ($masterSuite > 0) || ($schoolroom > 0) || ($spa > 0) || ($clinic > 0) || ($cellblock > 0)>>
-<br><br>
-<<if ($currentRule.facility.length > 0)>>
-	Apply to facilities:
-	<<link "All">>
-		<<set $currentRule.facility = []>>
-		<<RANormalizeAssignments "facility">>
-	<</link>>
-<<else>>
-	@@.gray;Apply to facilities:@@ ''All''
-<</if>>
-<<if ($HGSuite > 0)>>
-|
-<<if !$currentRule.facility.includes("live with your Head Girl")>>
-	<<link $HGSuiteNameCaps>>
-		<<set $currentRule.facility.push("live with your Head Girl")>>
-		<<RANormalizeAssignments "facility">>
-	<</link>>
-<<else>>
-	''$HGSuiteNameCaps''
-	<<link Stop>>
-		<<set $currentRule.facility.delete("live with your Head Girl")>>
-		<<RANormalizeAssignments "facility">>
-	<</link>>
-<</if>>
-<</if>>
-<<if ($brothel > 0)>>
-|
-<<if !$currentRule.facility.includes("work in the brothel")>>
-	<<link $brothelNameCaps>>
-		<<set $currentRule.facility.push("work in the brothel")>>
-		<<RANormalizeAssignments "facility">>
-	<</link>>
-<<else>>
-	''$brothelNameCaps''
-	<<link Stop>>
-		<<set $currentRule.facility.delete("work in the brothel")>>
-		<<RANormalizeAssignments "facility">>
-	<</link>>
-<</if>>
-<</if>>
-<<if ($club > 0)>>
-|
-<<if !$currentRule.facility.includes("serve in the club")>>
-	<<link $clubNameCaps>>
-		<<set $currentRule.facility.push("serve in the club")>>
-		<<RANormalizeAssignments "facility">>
-	<</link>>
-<<else>>
-	''$clubNameCaps''
-	<<link Stop>>
-		<<set $currentRule.facility.delete("serve in the club")>>
-		<<RANormalizeAssignments "facility">>
-	<</link>>
-<</if>>
-<</if>>
-<<if ($arcade > 0)>>
-|
-<<if !$currentRule.facility.includes("be confined in the arcade")>>
-	<<link $arcadeNameCaps>>
-		<<set $currentRule.facility.push("be confined in the arcade")>>
-		<<RANormalizeAssignments "facility">>
-	<</link>>
-<<else>>
-	''$arcadeNameCaps''
-	<<link Stop>>
-		<<set $currentRule.facility.delete("be confined in the arcade")>>
-		<<RANormalizeAssignments "facility">>
-	<</link>>
-<</if>>
-<</if>>
-<<if ($dairy > 0)>>
-|
-<<if !$currentRule.facility.includes("work in the dairy")>>
-	<<link $dairyNameCaps>>
-		<<set $currentRule.facility.push("work in the dairy")>>
-		<<RANormalizeAssignments "facility">>
-	<</link>>
-<<else>>
-	''$dairyNameCaps''
-	<<link Stop>>
-		<<set $currentRule.facility.delete("work in the dairy")>>
-		<<RANormalizeAssignments "facility">>
-	<</link>>
-<</if>>
-<</if>>
-<<if ($servantsQuarters > 0)>>
-|
-<<if !$currentRule.facility.includes("work as a servant")>>
-	<<link $servantsQuartersNameCaps>>
-		<<set $currentRule.facility.push("work as a servant")>>
-		<<RANormalizeAssignments "facility">>
-	<</link>>
-<<else>>
-	''$servantsQuartersNameCaps''
-	<<link Stop>>
-		<<set $currentRule.facility.delete("work as a servant")>>
-		<<RANormalizeAssignments "facility">>
-	<</link>>
-<</if>>
-<</if>>
-<<if ($masterSuite > 0)>>
-|
-<<if !$currentRule.facility.includes("serve in the master suite")>>
-	<<link $masterSuiteNameCaps>>
-		<<set $currentRule.facility.push("serve in the master suite")>>
-		<<RANormalizeAssignments "facility">>
-	<</link>>
-<<else>>
-	''$masterSuiteNameCaps''
-	<<link Stop>>
-		<<set $currentRule.facility.delete("serve in the master suite")>>
-		<<RANormalizeAssignments "facility">>
-	<</link>>
-<</if>>
-<</if>>
-<<if ($schoolroom > 0)>>
-|
-<<if !$currentRule.facility.includes("learn in the schoolroom")>>
-	<<link $schoolroomNameCaps>>
-		<<set $currentRule.facility.push("learn in the schoolroom")>>
-		<<RANormalizeAssignments "facility">>
-	<</link>>
-<<else>>
-	''$schoolroomNameCaps''
-	<<link Stop>>
-		<<set $currentRule.facility.delete("learn in the schoolroom")>>
-		<<RANormalizeAssignments "facility">>
-	<</link>>
-<</if>>
-<</if>>
-<<if ($spa > 0)>>
-|
-<<if !$currentRule.facility.includes("rest in the spa")>>
-	<<link $spaNameCaps>>
-		<<set $currentRule.facility.push("rest in the spa")>>
-		<<RANormalizeAssignments "facility">>
-	<</link>>
-<<else>>
-	''$spaNameCaps''
-	<<link Stop>>
-		<<set $currentRule.facility.delete("rest in the spa")>>
-		<<RANormalizeAssignments "facility">>
-	<</link>>
-<</if>>
-<</if>>
-<<if ($clinic > 0)>>
-|
-<<if !$currentRule.facility.includes("get treatment in the clinic")>>
-	<<link $clinicNameCaps>>
-		<<set $currentRule.facility.push("get treatment in the clinic")>>
-		<<RANormalizeAssignments "facility">>
-	<</link>>
-<<else>>
-	''$clinicNameCaps''
-	<<link Stop>>
-		<<set $currentRule.facility.delete("get treatment in the clinic")>>
-		<<RANormalizeAssignments "facility">>
-	<</link>>
-<</if>>
-<</if>>
-<<if ($cellblock > 0)>>
-|
-<<if !$currentRule.facility.includes("be confined in the cellblock")>>
-	<<link $cellblockNameCaps>>
-		<<set $currentRule.facility.push("be confined in the cellblock")>>
-		<<RANormalizeAssignments "facility">>
-	<</link>>
-<<else>>
-	''$cellblockNameCaps''
-	<<link Stop>>
-		<<set $currentRule.facility.delete("be confined in the cellblock")>>
-		<<RANormalizeAssignments "facility">>
-	<</link>>
-<</if>>
-<</if>>
-<</if>>
-<</replace>>
-<</widget>>
-
-/%
- % Call as <<RAChangeExcludeFacility>>
- %/
-<<widget "RAChangeExcludeFacility">>
-<<if (ndef $currentRule.facility)>><<set $currentRule.facility = []>><</if>>
-<<if (ndef $currentRule.excludeFacility)>><<set $currentRule.excludeFacility = []>><</if>>
-
-<<replace #excludefacility>>
-<<if ($HGSuite > 0) || ($brothel > 0) || ($club > 0) || ($arcade > 0) || ($dairy > 0) || ($servantsQuarters > 0) || ($masterSuite > 0) || ($schoolroom > 0) || ($spa > 0) || ($clinic > 0) || ($cellblock > 0)>>
-<br>
-<<if ($currentRule.excludeFacility.length > 0)>>
-	Applying to all facilities except:
-	<<link "None">>
-		<<set $currentRule.excludeFacility = []>>
-		<<RANormalizeAssignments "excludeFacility">>
-	<</link>>
-<<elseif ($currentRule.facility.length > 0)>>
-	@@.gray;Exclude facilities:@@ ''None''
-<<else>>
-	Excluded facilities: ''None''
-<</if>>
-<<if ($HGSuite > 0)>>
-|
-<<if !$currentRule.excludeFacility.includes("live with your Head Girl")>>
-	<<link $HGSuiteNameCaps>>
-		<<set $currentRule.excludeFacility.push("live with your Head Girl")>>
-		<<RANormalizeAssignments "excludeFacility">>
-	<</link>>
-<<else>>
-	''$HGSuiteNameCaps''
-	<<link Stop>>
-		<<set $currentRule.excludeFacility.delete("live with your Head Girl")>>
-		<<RANormalizeAssignments "excludeFacility">>
-	<</link>>
-<</if>>
-<</if>>
-<<if ($brothel > 0)>>
-|
-<<if !$currentRule.excludeFacility.includes("work in the brothel")>>
-	<<link $brothelNameCaps>>
-		<<set $currentRule.excludeFacility.push("work in the brothel")>>
-		<<RANormalizeAssignments "excludeFacility">>
-	<</link>>
-<<else>>
-	''$brothelNameCaps''
-	<<link Stop>>
-		<<set $currentRule.excludeFacility.delete("work in the brothel")>>
-		<<RANormalizeAssignments "excludeFacility">>
-	<</link>>
-<</if>>
-<</if>>
-<<if ($club > 0)>>
-|
-<<if !$currentRule.excludeFacility.includes("serve in the club")>>
-	<<link $clubNameCaps>>
-		<<set $currentRule.excludeFacility.push("serve in the club")>>
-		<<RANormalizeAssignments "excludeFacility">>
-	<</link>>
-<<else>>
-	''$clubNameCaps''
-	<<link Stop>>
-		<<set $currentRule.excludeFacility.delete("serve in the club")>>
-		<<RANormalizeAssignments "excludeFacility">>
-	<</link>>
-<</if>>
-<</if>>
-<<if ($arcade > 0)>>
-|
-<<if !$currentRule.excludeFacility.includes("be confined in the arcade")>>
-	<<link $arcadeNameCaps>>
-		<<set $currentRule.excludeFacility.push("be confined in the arcade")>>
-		<<RANormalizeAssignments "excludeFacility">>
-	<</link>>
-<<else>>
-	''$arcadeNameCaps''
-	<<link Stop>>
-		<<set $currentRule.excludeFacility.delete("be confined in the arcade")>>
-		<<RANormalizeAssignments "excludeFacility">>
-	<</link>>
-<</if>>
-<</if>>
-<<if ($dairy > 0)>>
-|
-<<if !$currentRule.excludeFacility.includes("work in the dairy")>>
-	<<link $dairyNameCaps>>
-		<<set $currentRule.excludeFacility.push("work in the dairy")>>
-		<<RANormalizeAssignments "excludeFacility">>
-	<</link>>
-<<else>>
-	''$dairyNameCaps''
-	<<link Stop>>
-		<<set $currentRule.excludeFacility.delete("work in the dairy")>>
-		<<RANormalizeAssignments "excludeFacility">>
-	<</link>>
-<</if>>
-<</if>>
-<<if ($servantsQuarters > 0)>>
-|
-<<if !$currentRule.excludeFacility.includes("work as a servant")>>
-	<<link $servantsQuartersNameCaps>>
-		<<set $currentRule.excludeFacility.push("work as a servant")>>
-		<<RANormalizeAssignments "excludeFacility">>
-	<</link>>
-<<else>>
-	''$servantsQuartersNameCaps''
-	<<link Stop>>
-		<<set $currentRule.excludeFacility.delete("work as a servant")>>
-		<<RANormalizeAssignments "excludeFacility">>
-	<</link>>
-<</if>>
-<</if>>
-<<if ($masterSuite > 0)>>
-|
-<<if !$currentRule.excludeFacility.includes("serve in the master suite")>>
-	<<link $masterSuiteNameCaps>>
-		<<set $currentRule.excludeFacility.push("serve in the master suite")>>
-		<<RANormalizeAssignments "excludeFacility">>
-	<</link>>
-<<else>>
-	''$masterSuiteNameCaps''
-	<<link Stop>>
-		<<set $currentRule.excludeFacility.delete("serve in the master suite")>>
-		<<RANormalizeAssignments "excludeFacility">>
-	<</link>>
-<</if>>
-<</if>>
-<<if ($schoolroom > 0)>>
-|
-<<if !$currentRule.excludeFacility.includes("learn in the schoolroom")>>
-	<<link $schoolroomNameCaps>>
-		<<set $currentRule.excludeFacility.push("learn in the schoolroom")>>
-		<<RANormalizeAssignments "excludeFacility">>
-	<</link>>
-<<else>>
-	''$schoolroomNameCaps''
-	<<link Stop>>
-		<<set $currentRule.excludeFacility.delete("learn in the schoolroom")>>
-		<<RANormalizeAssignments "excludeFacility">>
-	<</link>>
-<</if>>
-<</if>>
-<<if ($spa > 0)>>
-|
-<<if !$currentRule.excludeFacility.includes("rest in the spa")>>
-	<<link $spaNameCaps>>
-		<<set $currentRule.excludeFacility.push("rest in the spa")>>
-		<<RANormalizeAssignments "excludeFacility">>
-	<</link>>
-<<else>>
-	''$spaNameCaps''
-	<<link Stop>>
-		<<set $currentRule.excludeFacility.delete("rest in the spa")>>
-		<<RANormalizeAssignments "excludeFacility">>
-	<</link>>
-<</if>>
-<</if>>
-<<if ($clinic > 0)>>
-|
-<<if !$currentRule.excludeFacility.includes("get treatment in the clinic")>>
-	<<link $clinicNameCaps>>
-		<<set $currentRule.excludeFacility.push("get treatment in the clinic")>>
-		<<RANormalizeAssignments "excludeFacility">>
-	<</link>>
-<<else>>
-	''$clinicNameCaps''
-	<<link Stop>>
-		<<set $currentRule.excludeFacility.delete("get treatment in the clinic")>>
-		<<RANormalizeAssignments "excludeFacility">>
-	<</link>>
-<</if>>
-<</if>>
-<<if ($cellblock > 0)>>
-|
-<<if !$currentRule.excludeFacility.includes("be confined in the cellblock")>>
-	<<link $cellblockNameCaps>>
-		<<set $currentRule.excludeFacility.push("be confined in the cellblock")>>
-		<<RANormalizeAssignments "excludeFacility">>
-	<</link>>
-<<else>>
-	''$cellblockNameCaps''
-	<<link Stop>>
-		<<set $currentRule.excludeFacility.delete("be confined in the cellblock")>>
-		<<RANormalizeAssignments "excludeFacility">>
-	<</link>>
-<</if>>
-<</if>>
-|
-<<link "Exclude all">>
-	<<set $currentRule.excludeFacility.push("be confined in the cellblock")>>
-	<<set $currentRule.excludeFacility.push("get treatment in the clinic")>>
-	<<set $currentRule.excludeFacility.push("rest in the spa")>>
-	<<set $currentRule.excludeFacility.push("learn in the schoolroom")>>
-	<<set $currentRule.excludeFacility.push("serve in the master suite")>>
-	<<set $currentRule.excludeFacility.push("work as a servant")>>
-	<<set $currentRule.excludeFacility.push("work in the dairy")>>
-	<<set $currentRule.excludeFacility.push("be confined in the arcade")>>
-	<<set $currentRule.excludeFacility.push("serve in the club")>>
-	<<set $currentRule.excludeFacility.push("work in the brothel")>>
-	<<set $currentRule.excludeFacility.push("live with your Head Girl")>>
-	<<RANormalizeAssignments "excludeFacility">>
-<</link>>
-<</if>>
-<</replace>>
-<</widget>>
-
-/%
- % Call as <<RAChangeSetAssignment>>
- %/
-<<widget "RAChangeSetAssignment">>
-<<RACommonAssignmentVariables>>
-
-<<if (ndef $currentRule.assignment)>><<set $currentRule.assignment = []>><</if>>
-<<if (ndef $currentRule.excludeAssignment)>><<set $currentRule.excludeAssignment = []>><</if>>
-
-<<replace #setassignment>>
-<br><br>
-<<if _penthouseAssignments.includes($currentRule.setAssignment)>>
-	Automatically set assignment:
-	<<link "None">>
-		<<set $currentRule.setAssignment = "no default setting">>
-		<<RANormalizeAssignments "setAssignment">>
-	<</link>>
-<<else>>
-	@@.gray;Automatically set assignment:@@ ''None''
-<</if>>
-|
-<<if ($currentRule.setAssignment != "rest")>>
-	<<link "Rest">>
-		<<set $currentRule.setAssignment = "rest">>
-		<<RANormalizeAssignments "setAssignment">>
-	<</link>>
-<<else>>
-	''Rest''
-<</if>>
-|
-<<if ($currentRule.setAssignment != "please you")>>
-	<<link "Fucktoy">>
-		<<set $currentRule.setAssignment = "please you">>
-		<<RANormalizeAssignments "setAssignment">>
-	<</link>>
-<<else>>
-	''Fucktoy''
-<</if>>
-|
-<<if ($currentRule.setAssignment != "be a servant")>>
-	<<link "House Servant">>
-		<<set $currentRule.setAssignment = "be a servant">>
-		<<RANormalizeAssignments "setAssignment">>
-	<</link>>
-<<else>>
-	''House Servant''
-<</if>>
-|
-<<if ($currentRule.setAssignment != "stay confined")>>
-	<<link "Confined">>
-		<<set $currentRule.setAssignment = "stay confined">>
-		<<RANormalizeAssignments "setAssignment">>
-	<</link>>
-<<else>>
-	''Confined''
-<</if>>
-|
-<<if ($currentRule.setAssignment != "whore")>>
-	<<link "Whore">>
-		<<set $currentRule.setAssignment = "whore">>
-		<<RANormalizeAssignments "setAssignment">>
-	<</link>>
-<<else>>
-	''Whore''
-<</if>>
-|
-<<if ($currentRule.setAssignment != "serve the public")>>
-	<<link "Public Servant">>
-		<<set $currentRule.setAssignment = "serve the public">>
-		<<RANormalizeAssignments "setAssignment">>
-	<</link>>
-<<else>>
-	''Public Servant''
-<</if>>
-|
-<<if ($currentRule.setAssignment != "take classes")>>
-	<<link "Classes">>
-		<<set $currentRule.setAssignment = "take classes">>
-		<<RANormalizeAssignments "setAssignment">>
-	<</link>>
-<<else>>
-	''Classes''
-<</if>>
-|
-<<if ($currentRule.setAssignment != "get milked")>>
-	<<link "Milking">>
-		<<set $currentRule.setAssignment = "get milked">>
-		<<RANormalizeAssignments "setAssignment">>
-	<</link>>
-<<else>>
-	''Milking''
-<</if>>
-|
-<<if ($currentRule.setAssignment != "work a glory hole")>>
-	<<link "Gloryhole">>
-		<<set $currentRule.setAssignment = "work a glory hole">>
-		<<RANormalizeAssignments "setAssignment">>
-	<</link>>
-<<else>>
-	''Gloryhole''
-<</if>>
-|
-<<if ($currentRule.setAssignment != "choose her own job")>>
-	<<link "Let her choose">>
-		<<set $currentRule.setAssignment = "choose her own job">>
-		<<RANormalizeAssignments "setAssignment">>
-	<</link>>
-<<else>>
-	''Let her choose''
-<</if>>
-<</replace>>
-<</widget>>
-
-/%
- % Call as <<RAChangeAssignFacility>>
- %/
-<<widget "RAChangeAssignFacility">>
-<<RACommonAssignmentVariables>>
-
-<<if (ndef $currentRule.facility)>><<set $currentRule.facility = []>><</if>>
-<<if (ndef $currentRule.excludeFacility)>><<set $currentRule.excludeFacility = []>><</if>>
-
-<<replace #assignfacility>>
-<<if ($HGSuite > 0) || ($brothel > 0) || ($club > 0) || ($arcade > 0) || ($dairy > 0) || ($servantsQuarters > 0) || ($masterSuite > 0) || ($schoolroom > 0) || ($spa > 0) || ($clinic > 0) || ($cellblock > 0)>>
-<br>
-<<if _facilityAssignments.includes($currentRule.setAssignment)>>
-	Automatically assigning slaves to facility (when possible):
-	<<link "None">>
-		<<set $currentRule.setAssignment = "no default setting">>
-		<<RANormalizeAssignments "setAssignment">>
-	<</link>>
-<<else>>
-	@@.gray;Automatically assign slaves to facility:@@ ''None''
-<</if>>
-<<if ($HGSuite > 0)>>
-|
-<<if ($currentRule.setAssignment != "live with your Head Girl")>>
-	<<link $HGSuiteNameCaps>>
-		<<set $currentRule.setAssignment = "live with your Head Girl">>
-		<<RANormalizeAssignments "setAssignment">>
-	<</link>>
-<<else>>
-	''$HGSuiteNameCaps''<<if $HGSuiteSlaves >= $HGSuite>> @@.red;(full)@@<</if>>
-<</if>>
-<</if>>
-<<if ($brothel > 0)>>
-|
-<<if ($currentRule.setAssignment != "work in the brothel")>>
-	<<link $brothelNameCaps>>
-		<<set $currentRule.setAssignment = "work in the brothel">>
-		<<RANormalizeAssignments "setAssignment">>
-	<</link>>
-<<else>>
-	''$brothelNameCaps''<<if $brothelSlaves >= $brothel>> @@.red;(full)@@<</if>>
-<</if>>
-<</if>>
-<<if ($club > 0)>>
-|
-<<if ($currentRule.setAssignment != "serve in the club")>>
-	<<link $clubNameCaps>>
-		<<set $currentRule.setAssignment = "serve in the club">>
-		<<RANormalizeAssignments "setAssignment">>
-	<</link>>
-<<else>>
-	''$clubNameCaps''<<if $clubSlaves >= $club>> @@.red;(full)@@<</if>>
-<</if>>
-<</if>>
-<<if ($arcade > 0)>>
-|
-<<if ($currentRule.setAssignment != "be confined in the arcade")>>
-	<<link $arcadeNameCaps>>
-		<<set $currentRule.setAssignment = "be confined in the arcade">>
-		<<RANormalizeAssignments "setAssignment">>
-	<</link>>
-<<else>>
-	''$arcadeNameCaps''<<if $arcadeSlaves >= $arcade>> @@.red;(full)@@<</if>>
-<</if>>
-<</if>>
-<<if ($dairy > 0)>>
-|
-<<if ($currentRule.setAssignment != "work in the dairy")>>
-	<<link $dairyNameCaps>>
-		<<set $currentRule.setAssignment = "work in the dairy">>
-		<<RANormalizeAssignments "setAssignment">>
-	<</link>>
-<<else>>
-	''$dairyNameCaps''<<if $dairySlaves >= $dairy>> @@.red;(full)@@<</if>>
-<</if>>
-<</if>>
-<<if ($servantsQuarters > 0)>>
-|
-<<if ($currentRule.setAssignment != "work as a servant")>>
-	<<link $servantsQuartersNameCaps>>
-		<<set $currentRule.setAssignment = "work as a servant">>
-		<<RANormalizeAssignments "setAssignment">>
-	<</link>>
-<<else>>
-	''$servantsQuartersNameCaps''<<if $servantsQuartersSlaves >= $servantsQuarters>> @@.red;(full)@@<</if>>
-<</if>>
-<</if>>
-<<if ($masterSuite > 0)>>
-|
-<<if ($currentRule.setAssignment != "serve in the master suite")>>
-	<<link $masterSuiteNameCaps>>
-		<<set $currentRule.setAssignment = "serve in the master suite">>
-		<<RANormalizeAssignments "setAssignment">>
-	<</link>>
-<<else>>
-	''$masterSuiteNameCaps''<<if $masterSuiteSlaves >= $masterSuite>> @@.red;(full)@@<</if>>
-<</if>>
-<</if>>
-<<if ($schoolroom > 0)>>
-|
-<<if ($currentRule.setAssignment != "learn in the schoolroom")>>
-	<<link $schoolroomNameCaps>>
-		<<set $currentRule.setAssignment = "learn in the schoolroom">>
-		<<RANormalizeAssignments "setAssignment">>
-	<</link>>
-<<else>>
-	''$schoolroomNameCaps''<<if $schoolroomSlaves >= $schoolroom>> @@.red;(full)@@<</if>>
-<</if>>
-<</if>>
-<<if ($spa > 0)>>
-|
-<<if ($currentRule.setAssignment != "rest in the spa")>>
-	<<link $spaNameCaps>>
-		<<set $currentRule.setAssignment = "rest in the spa">>
-		<<RANormalizeAssignments "setAssignment">>
-	<</link>>
-<<else>>
-	''$spaNameCaps''<<if $spaSlaves >= $spa>> @@.red;(full)@@<</if>>
-<</if>>
-<</if>>
-<<if ($clinic > 0)>>
-|
-<<if ($currentRule.setAssignment != "get treatment in the clinic")>>
-	<<link $clinicNameCaps>>
-		<<set $currentRule.setAssignment = "get treatment in the clinic">>
-		<<RANormalizeAssignments "setAssignment">>
-	<</link>>
-<<else>>
-	''$clinicNameCaps''<<if $clinicSlaves >= $clinic>> @@.red;(full)@@<</if>>
-<</if>>
-<</if>>
-<<if ($cellblock > 0)>>
-|
-<<if ($currentRule.setAssignment != "be confined in the cellblock")>>
-	<<link $cellblockNameCaps>>
-		<<set $currentRule.setAssignment = "be confined in the cellblock">>
-		<<RANormalizeAssignments "setAssignment">>
-	<</link>>
-<<else>>
-	''$cellblockNameCaps''<<if $cellblockSlaves >= $cellblock>> @@.red;(full)@@<</if>>
-<</if>>
-<</if>>
-
-<<if _facilityAssignments.includes($currentRule.setAssignment)>>
-<br>&nbsp;&nbsp;&nbsp;&nbsp;
-Automatically remove from facility when rule stops applying:
-<<if $currentRule.facilityRemove>>
-	''True'' |
-	<<link False>>
-		<<set $currentRule.facilityRemove = false>>
-		<<RANormalizeAssignments "facilityRemove">>
-	<</link>>
-<<else>>
-	''False'' |
-	<<link True>>
-		<<set $currentRule.facilityRemove = true>>
-		<<RANormalizeAssignments "facilityRemove">>
-	<</link>>
-<</if>>
-
-<br>&nbsp;&nbsp;&nbsp;&nbsp;
-Assignment on removal: ''$currentRule.removalAssignment''
-<<if ($currentRule.removalAssignment != "rest")>>
-	| <<link "Rest">>
-		<<set $currentRule.removalAssignment = "rest">>
-		<<RAChangeAssignFacility>>
-		<<RARuleModified>>
-	<</link>>
-<</if>>
-<<if ($currentRule.removalAssignment != "please you")>>
-	| <<link "Fucktoy">>
-		<<set $currentRule.removalAssignment = "please you">>
-		<<RAChangeAssignFacility>>
-		<<RARuleModified>>
-	<</link>>
-<</if>>
-<<if ($currentRule.removalAssignment != "be a servant")>>
-	| <<link "House Servant">>
-		<<set $currentRule.removalAssignment = "be a servant">>
-		<<RAChangeAssignFacility>>
-		<<RARuleModified>>
-	<</link>>
-<</if>>
-<<if ($currentRule.removalAssignment != "stay confined")>>
-	| <<link "Confined">>
-		<<set $currentRule.removalAssignment = "stay confined">>
-		<<RAChangeAssignFacility>>
-		<<RARuleModified>>
-	<</link>>
-<</if>>
-<<if ($currentRule.removalAssignment != "whore")>>
-	| <<link "Whore">>
-		<<set $currentRule.removalAssignment = "whore">>
-		<<RAChangeAssignFacility>>
-		<<RARuleModified>>
-	<</link>>
-<</if>>
-<<if ($currentRule.removalAssignment != "serve the public")>>
-	| <<link "Public Servant">>
-		<<set $currentRule.removalAssignment = "serve the public">>
-		<<RAChangeAssignFacility>>
-		<<RARuleModified>>
-	<</link>>
-<</if>>
-<<if ($currentRule.removalAssignment != "work a glory hole")>>
-	| <<link "Gloryhole">>
-		<<set $currentRule.removalAssignment = "work a glory hole">>
-		<<RAChangeAssignFacility>>
-		<<RARuleModified>>
-	<</link>>
-<</if>>
-<</if>>
-<</if>>
-<</replace>>
-<</widget>>
-
-/%
- Call as <<RASpecialSlaves>>
-%/
-<<widget "RASpecialSlaves">>
-<<replace #specialslaves>>
-<<if $currentRule.excludeSpecialSlaves>>
-	Excluding special slaves:
-	''True'' |
-	<<link False>>
-		<<set $currentRule.excludeSpecialSlaves = false>>
-		<<RASpecialSlaves>>
-		<<RARuleModified>>
-	<</link>>
-<<else>>
-	@@.gray;Exclude special slaves:@@
-	''False'' |
-	<<link True>>
-		<<set $currentRule.excludeSpecialSlaves = true>>
-		<<RASpecialSlaves>>
-		<<RARuleModified>>
-	<</link>>
-<</if>>
-<</replace>>
-<</widget>>
-
-/%
- Call as <<RAChangeClothes>>
-%/
-<<widget "RAChangeClothes">>
-<<replace #clothes>>
-<<if ($currentRule.clothes == "choosing her own clothes")>>
-	''slave's choice.''
-<<else>>
-	''$currentRule.clothes.''
-<</if>>
-<</replace>>
-<</widget>>
-
-/%
- Call as <<RAChangeCollar>>
-%/
-<<widget "RAChangeCollar">>
-<<replace #collar>>
-	''$currentRule.collar.''
-<</replace>>
-<</widget>>
-
-/%
- Call as <<RAChangeShoes>>
-%/
-<<widget "RAChangeShoes">>
-<<replace #shoes>>
-	''$currentRule.shoes.''
-<</replace>>
-<</widget>>
-
-/%
- Call as <<RAChangeBelly>>
-%/
-<<widget "RAChangeBelly">>
-<<replace #baccessory>>
-	''$currentRule.bellyAccessory.''
-<</replace>>
-<</widget>>
-
-/%
- Call as <<RAChangeVAccessory>>
- $arg[0] - 0: virgin, 1: anal virgin, else non-virgin.
-%/
-<<widget "RAChangeVAccessory">>
-<<if $args[0] == 0>>
-	<<replace #vaccessory>>
-		''$currentRule.virginAccessory.''
-	<</replace>>
-<<elseif $args[0] == 1>>
-	<<replace #avaccessory>>
-		''$currentRule.aVirginAccessory.''
-	<</replace>>
-<<else>>
-	<<replace #voaccessory>>
-		''$currentRule.vaginalAccessory.''
-	<</replace>>
-<</if>>
-<</widget>>
-
-/%
- Call as <<RAChangeDAccessory>>
- $arg[0] - 0: anal virgin, else non-virgin.
-%/
-<<widget "RAChangeDAccessory">>
-<<if $args[0] == 0>>
-	<<replace #avdaccessory>>
-		''$currentRule.aVirginDickAccessory.''
-	<</replace>>
-<<else>>
-	<<replace #daccessory>>
-		''$currentRule.dickAccessory.''
-	<</replace>>
-<</if>>
-<</widget>>
-
-/%
- Call as <<RAChangeBAccessory>>
- $arg[0] - 0: anal virgin, else non-virgin.
-%/
-<<widget "RAChangeBAccessory">>
-<<if $args[0] == 0>>
-	<<replace #avbuaccessory>>
-		''$currentRule.aVirginButtplug.''
-	<</replace>>
-<<else>>
-	<<replace #buaccessory>>
-		''$currentRule.buttplug.''
-	<</replace>>
-<</if>>
-<</widget>>
-
-/%
- Call as <<RAChangeCuratives>>
-%/
-<<widget "RAChangeCuratives">>
-<<replace #curatives>>
-<<if $currentRule.curatives == "no default setting">>
-	''no default setting.''
-<<elseif $currentRule.curatives > 0>>
-	<<if $currentRule.curatives > 1>>
-		''curatives.''
-	<<else>>
-		''preventatives.''
-	<</if>>
-<<else>>
-	''none.''
-<</if>>
-<</replace>>
-<</widget>>
-
-/%
- Call as <<RAChangeAphrodisiacs>>
-%/
-<<widget "RAChangeAphrodisiacs">>
-<<replace #aphrodisiacs>>
-<<if $currentRule.aphrodisiacs == "no default setting">>
-	''no default setting.''
-<<elseif $currentRule.aphrodisiacs > 0>>
-	<<if $currentRule.aphrodisiacs > 1>>
-		''extreme.''
-	<<else>>
-		''standard.''
-	<</if>>
-<<elseif $currentRule.aphrodisiacs === -1>>
-	''anaphrodisiacs.''
-<<else>>
-	''none.''
-<</if>>
-<</replace>>
-<</widget>>
-
-/%
- Call as <<RAChangePreg>>
-%/
-<<widget "RAChangePreg">>
-<<replace #preg>>
-<<if $currentRule.preg == 0>>
-	''fertile.''
-<<elseif $currentRule.preg == 1>>
-	''very fertile.''
-<<elseif $currentRule.preg == 2>>
-	''extremely fertile.''
-<<elseif $currentRule.preg == 3>>
-	''hyper fertile.''
-<<elseif $currentRule.preg == 4>>
-	''just knock my shit up.''
-<<elseif $currentRule.preg == -1>>
-	''contraceptives.''
-<<else>>
-	''no default setting.''
-<</if>>
-<</replace>>
-<</widget>>
-
-/%
- Call as <<RAChangeXXHormones>>
-%/
-<<widget "RAChangeXXHormones">>
-<<replace #xxhormones>>
-<<if $currentRule.XX == 0>>
-	''no hormones.''
-<<elseif $currentRule.XX == 1>>
-	''female.''
-<<elseif $currentRule.XX == 2>>
-	''intensive female.''
-<<elseif $currentRule.XX == -1>>
-	''male.''
-<<elseif $currentRule.XX == -2>>
-	''intensive male.''
-<<else>>
-	''no default setting.''
-<</if>>
-<</replace>>
-<</widget>>
-
-/%
- Call as <<RAChangeXYHormones>>
-%/
-<<widget "RAChangeXYHormones">>
-<<replace #xyhormones>>
-<<if $currentRule.XY == 0>>
-	''no hormones.''
-<<elseif $currentRule.XY == 1>>
-	''female.''
-<<elseif $currentRule.XY == 2>>
-	''intensive female.''
-<<elseif $currentRule.XY == -1>>
-	''male.''
-<<elseif $currentRule.XY == -2>>
-	''intensive male.''
-<<else>>
-	''no default setting.''
-<</if>>
-<</replace>>
-<</widget>>
-
-/%
- Call as <<RAChangeGeldHormones>>
-%/
-<<widget "RAChangeGeldHormones">>
-<<replace #geldhormones>>
-<<if $currentRule.gelding == 0>>
-	''no hormones.''
-<<elseif $currentRule.gelding == 1>>
-	''female.''
-<<elseif $currentRule.gelding == 2>>
-	''intensive female.''
-<<elseif $currentRule.gelding == -1>>
-	''male.''
-<<elseif $currentRule.gelding == -2>>
-	''intensive male.''
-<<else>>
-	''no default setting.''
-<</if>>
-<</replace>>
-<</widget>>
-
-/%
- Call as <<RAChangeDrugs>>
-%/
-<<widget "RAChangeDrugs">>
-<<if $currentRule.drug == "none">>
-	<<set $currentRule.drug = "no drugs">>
-<</if>>
-<<replace #otherdrugs>>
-Other drugs: // Will be overriden by hormones and other drugs where applicable.// ''$currentRule.drug.''
-<</replace>>
-<</widget>>
-
-/%
- Call as <<RAChangeDiet>>
-%/
-<<widget "RAChangeDiet">>
-<<replace #dietsupport>>
-<<if $currentRule.diet !== "no default setting">>
-<br>&nbsp;&nbsp;&nbsp;&nbsp;
-Diet support for growth drugs:
-<<if $currentRule.dietGrowthSupport == 1>>
-	''on.''
-<<else>>
-	''off.''
-<</if>>
-
-<<link "On">>
-	<<set $currentRule.dietGrowthSupport = 1>>
-	<<RAChangeDiet>>
-<</link>>
-|
-<<link "Off">>
-	<<set $currentRule.dietGrowthSupport = 0>>
-	<<RAChangeDiet>>
-<</link>>
-<</if>>
-<</replace>>
-<</widget>>
-
-/%
- % Call as <<RAChangeDietBase>>
- %/
-<<widget "RAChangeDietBase">>
-<<replace #dietBase>>
-<<if $currentRule.dietCum == 2>>
-	''Cum-Based.''
-<<elseif (($currentRule.dietCum == 1) && ($currentRule.dietMilk == 0))>>
-	''Cum Added.''
-<<elseif (($currentRule.dietCum == 0) && ($currentRule.dietMilk == 1))>>
-	''Milk Added.''
-<<elseif (($currentRule.dietCum == 1) && ($currentRule.dietMilk == 1))>>
-	''Cum & Milk Added.''
-<<elseif ($currentRule.dietMilk == 2)>>
-	''Milk Based.''
-<<elseif (($currentRule.dietCum == 0) && ($currentRule.dietMilk == 0))>>
-	''Normal Diet.''
-<<else>>
-	''no default setting.''
-<</if>>
-<</replace>>
-<</widget>>
-
-
-/%
- Call as <<RAChangeBraces>>
-%/
-<<widget "RAChangeBraces">>
-<<replace #braces>>
-<<if $currentRule.teeth == "straighten">>
-	''straighten'' teeth, then remove.
-<<elseif $currentRule.teeth == "universal">>
-	''universally'' applied.
-<<elseif $currentRule.teeth == "none">>
-	''none.''
-<<else>>
-	''no default setting.''
-<</if>>
-<</replace>>
-<</widget>>
-
-/%
- Call as <<RAChangeAssistantImplants>>
-%/
-<<widget "RAChangeAssistantImplants">>
-<<replace #assistantimplants>>
-<<if $currentRule.autoSurgery == 1>>
-	''ACTIVE, STAND CLEAR.''
-	<<link "Off">>
-		<<set $currentRule.autoSurgery = 0>>
-		<<RAChangeAssistantImplants>>
-		<<RARuleModified>>
-	<</link>>
-<<else>>
-	''off.''
-	<<link "Activate">>
-		<<set $currentRule.autoSurgery = 1>>
-		<<RAChangeAssistantImplants>>
-		<<RARuleModified>>
-	<</link>>
-<</if>>
-<</replace>>
-<</widget>>
-
-/%
- Call as <<RAChangeLiving>>
-%/
-<<widget "RAChangeLiving">>
-<<replace #living>>
-	''$currentRule.livingRules.''
-<</replace>>
-<</widget>>
-
-/%
- Call as <<RAChangePunish>>
-%/
-<<widget "RAChangePunish">>
-<<replace #punish>>
-	''$currentRule.standardPunishment.''
-<</replace>>
-<</widget>>
-
-/%
- Call as <<RAChangeReward>>
-%/
-<<widget "RAChangeReward">>
-<<replace #reward>>
-	''$currentRule.standardReward.''
-<</replace>>
-<</widget>>
-
-/%
- Call as <<RAChangeMast>>
-%/
-<<widget "RAChangeMast">>
-<<replace #mast>>
-	''$currentRule.releaseRules.''
-<</replace>>
-<</widget>>
-
-/%
- Call as <<RAChangeSPF>>
-%/
-<<widget "RAChangeSPF">>
-<<replace #spf>>
-	''$currentRule.clitSetting.''
-<</replace>>
-<</widget>>
-
-/%
- Call as <<RAChangeSPXY>>
-%/
-<<widget "RAChangeSPXY">>
-<<replace #spxy>>
-	<<RAInitSPXY>>
-<</replace>>
-<</widget>>
-
-<<widget "RAInitSPXY">>
-	<<if $currentRule.clitSettingXY == "no default setting">>
-		''no default setting.''
-	<<elseif $currentRule.clitSettingXY > 95>>
-		''passionate.''
-	<<elseif $currentRule.clitSettingXY > 70>>
-		''attracted.''
-	<<elseif $currentRule.clitSettingXY > 30>>
-		''indifferent.''
-	<<else>>
-		''none.''
-	<</if>>
-<</widget>>
-
-/%
- Call as <<RAChangeSPXX>>
-%/
-<<widget "RAChangeSPXX">>
-<<replace #spxx>>
-	<<RAInitSPXX>>
-<</replace>>
-<</widget>>
-
-<<widget "RAInitSPXX">>
-	<<if $currentRule.clitSettingXX == "no default setting">>
-		''no default setting.''
-	<<elseif $currentRule.clitSettingXX > 95>>
-		''passionate.''
-	<<elseif $currentRule.clitSettingXX > 70>>
-		''attracted.''
-	<<elseif $currentRule.clitSettingXX > 30>>
-		''indifferent.''
-	<<else>>
-		''none.''
-	<</if>>
-<</widget>>
-
-/%
- Call as <<RAChangeSPE>>
-%/
-<<widget "RAChangeSPE">>
-<<replace #spe>>
-	<<RAInitSPE>>
-<</replace>>
-<</widget>>
-
-<<widget "RAInitSPE">>
-	<<if $currentRule.clitSettingEnergy == "no default setting">>
-		''no default setting.''
-	<<elseif $currentRule.clitSettingEnergy > 95>>
-		''nympho.''
-	<<elseif $currentRule.clitSettingEnergy > 80>>
-		''sex addict.''
-	<<elseif $currentRule.clitSettingEnergy > 60>>
-		''powerful.''
-	<<elseif $currentRule.clitSettingEnergy > 40>>
-		''healthy.''
-	<<elseif $currentRule.clitSettingEnergy > 20>>
-		''weak.''
-	<<else>>
-		''frigid.''
-	<</if>>
-<</widget>>
-
-
-/%
- Call as <<RAChangeSpeech>>
-%/
-<<widget "RAChangeSpeech">>
-<<replace #speech>>
-	''$currentRule.speechRules.''
-<</replace>>
-<</widget>>
-
-/%
- Call as <<RAChangeRelationship>>
-%/
-<<widget "RAChangeRelationship">>
-<<replace #relation>>
-	''$currentRule.relationshipRules.''
-<</replace>>
-<</widget>>
-
-/%
- Call as <<RAChangeFameSpending>>
-%/
-<<widget "RAChangeFameSpending">>
-<<replace #pornfame>>
-<<if $currentRule.pornFameSpending == -1>>
-	Release of feeds showing excellent slaves' sex lives: ''off.''
-<<else>>
-	Weekly porn publicity subsidy: ''<<print cashFormat($currentRule.pornFameSpending)>>.''
-<</if>>
-<</replace>>
-<</widget>>
-
-/%
- % Call as <<RASaveRule>>
- %/
-<<widget "RASaveRule">>
-<<replace .saveresult>>
-<<for _t = 0; _t < $defaultRules.length; _t++>>
-	<<if ($currentRule.ID != $defaultRules[_t].ID)>>
-		<<continue>>
-	<</if>>
-
-	<<if (def _customCondition)>>
-		<<set _parsedCondition = parseCondition(_customCondition)>>
-		<<if (_parsedCondition.error)>>
-			//There seems to be something wrong with the condition that you have given me sir,
-			<br> <<print printError(_customCondition, _parsedCondition.error)>>
-			<br> _parsedCondition.error.message//
-			<br>
-			<<break>>
-		<</if>>
-		<<set $currentRule.condition = optimizeExpr(_parsedCondition.expr)>>
-	<</if>>
-
-	<<set $defaultRules[_t] = $currentRule>>
-	//Rule '$currentRule.name' saved//
-	<<break>>
-<</for>>
-<</replace>>
-<</widget>>
-
-
-/%
- % Call as <<RAChangeSave>>
- %/
-<<widget "RAChangeSave">>
-<<replace .saveresult>>
-<<link "Save Rule '$currentRule.name'">>
-	<<RASaveRule>>
-<</link>>
-<</replace>>
-<</widget>>
-
-/%
- % Call as <<RAChangeApply>>
- %/
-<<widget "RAChangeApply">>
-<<replace #applied>>
-	/% empty %/
-<</replace>>
-
-<<replace #applyresult>>
-<<link "Apply rules">>
-	<<RASaveRule>>
-	<<replace "#applied">>
-		<<for _rai = 0; _rai < $slaves.length; _rai++>>
-			<<if ($slaves[_rai].useRulesAssistant)>>
-				<<ClearSummaryCache $slaves[_rai]>>
-				<<CheckAutoRulesActivate $slaves[_rai]>> /* does not use or modify $currentRule */
-				<<DefaultRules $slaves[_rai]>>           /* does not use or modify $currentRule */
-			<</if>>
-		<</for>>
-	<</replace>>
-
-	<<replace "#applyresult">>
-		//Rules applied.//<br>
-	<</replace>>
-<</link>>
-<</replace>>
-<</widget>>
-
-/%
- % <<RARuleModified>>
- %/
-<<widget "RARuleModified">>
-    <<RAChangeSave>>
-    <<RAChangeApply>>
-<</widget>>
-
-/%
- Call as <<RAChangeEyewear>>
-%/
-<<widget "RAChangeEyewear">>
-<<replace #eyewear>>
-Eyewear: ''$currentRule.eyewear.''
-<</replace>>
-<</widget>>
-/%
- Call as <<RAChangeEyecolor>>
-%/
-<<widget "RAChangeEyecolor">>
-<<replace #eyecolor>>
-Eye coloring: ''$currentRule.eyeColor.''
-<</replace>>
-<</widget>>
-/%
- Call as <<RAChangeMakeup>>
-%/
-<<widget "RAChangeMakeup">>
-<<replace #makeup>>
-''
-<<if $currentRule.makeup == 0>>
-	makeup-free.
-<<elseif $currentRule.makeup == 1>>
-	minimal makeup.
-<<elseif $currentRule.makeup == 2>>
-	luxurious, expensive makeup.
-<<elseif $currentRule.makeup == 3>>
-	color-coordinated.
-<<elseif $currentRule.makeup == 4>>
-	garish.
-<<else>>
-	no default setting.
-<</if>>
-''
-<</replace>>
-<</widget>>
-/%
- Call as <<RAChangeNails>>
-%/
-<<widget "RAChangeNails">>
-<<replace #nails>>
-''
-<<if $currentRule.nails == 0>>
-	clipped.
-<<elseif $currentRule.nails == 1>>
-	long and elegant.
-<<elseif $currentRule.nails == 2>>
-	color-coordinated.
-<<elseif $currentRule.nails == 3>>
-	sharp and claw-like.
-<<elseif $currentRule.nails == 4>>
-	bright and glittery.
-<<elseif $currentRule.nails == 5>>
-	garish.
-<<else>>
-	no default setting.
-<</if>>
-''
-<</replace>>
-<</widget>>
-/%
- Call as <<RAChangeHColor>>
-%/
-<<widget "RAChangeHColor">>
-<<replace #hcolor>>
-Hair color: ''$currentRule.hColor.''
-<</replace>>
-<</widget>>
-/%
- Call as <<RAChangeHStyle>>
-%/
-<<widget "RAChangeHStyle">>
-<<replace #hstyle>>
-Hair style: ''$currentRule.hStyle.''
-<</replace>>
-<</widget>>
-/%
- Call as <<RAChangeHLength>>
-%/
-<<widget "RAChangeHLength">>
-<<replace #hlength>>
-Hair length: ''$currentRule.hLength.''
-<</replace>>
-<</widget>>
-/%
- Call as <<RAChangePHColor>>
-%/
-<<widget "RAChangePHColor">>
-<<replace #phcolor>>
-Pubic hair color, when present: ''$currentRule.pubicHColor.''
-<</replace>>
-<</widget>>
-/%
- Call as <<RAChangePHStyle>>
-%/
-<<widget "RAChangePHStyle">>
-<<replace #phstyle>>
-Pubic hair style: ''$currentRule.pubicHStyle.''
-<</replace>>
-<</widget>>
-/%
- Call as <<RAChangeAHColor>>
-%/
-<<widget "RAChangeAHColor">>
-<<replace #ahcolor>>
-Underarm hair color, when present: ''$currentRule.underArmHColor.''
-<</replace>>
-<</widget>>
-/%
- Call as <<RAChangeAHStyle>>
-%/
-<<widget "RAChangeAHStyle">>
-<<replace #ahstyle>>
-Underarm hair style: ''$currentRule.underArmHStyle.''
-<</replace>>
-<</widget>>
-/%
- Call as <<RAChangeEarPiercings>>
-%/
-<<widget "RAChangeEarPiercings">>
-<<replace #earpiercing>>
-<<if $currentRule.earPiercing == "no default setting">>No default setting.<<elseif $currentRule.earPiercing == 0>>None.<<elseif $currentRule.earPiercing == 1>>Light.
-<<elseif $currentRule.earPiercing == 2>>Heavy.<</if>>
-<</replace>>
-<</widget>>
-/%
- Call as <<RAChangeNosePiercings>>
-%/
-<<widget "RAChangeNosePiercings">>
-<<replace #nosepiercing>>
-<<if $currentRule.nosePiercing == "no default setting">>No default setting.<<elseif $currentRule.nosePiercing == 0>>None.<<elseif $currentRule.nosePiercing == 1>>Light.
-<<elseif $currentRule.nosePiercing == 2>>Heavy.<</if>>
-<</replace>>
-<</widget>>
-/%
- Call as <<RAChangeEybrowPiercings>>
-%/
-<<widget "RAChangeEyebrowPiercings">>
-<<replace #eyebrowpiercing>>
-<<if $currentRule.eyebrowPiercing == "no default setting">>No default setting.<<elseif $currentRule.eyebrowPiercing == 0>>None.<<elseif $currentRule.eyebrowPiercing == 1>>Light.
-<<elseif $currentRule.eyebrowPiercing == 2>>Heavy.<</if>>
-<</replace>>
-<</widget>>
-/%
- Call as <<RAChangeNavelPiercings>>
-%/
-<<widget "RAChangeNavelPiercings">>
-<<replace #navelpiercing>>
-<<if $currentRule.navelPiercing == "no default setting">>No default setting.<<elseif $currentRule.navelPiercing == 0>>None.<<elseif $currentRule.navelPiercing == 1>>Light.
-<<elseif $currentRule.navelPiercing == 2>>Heavy.<</if>>
-<</replace>>
-<</widget>>
-/%
- Call as <<RAChangeNipplePiercings>>
-%/
-<<widget "RAChangeNipplePiercings">>
-<<replace #nipplepiercing>>
-<<if $currentRule.nipplesPiercing == "no default setting">>No default setting.<<elseif $currentRule.nipplesPiercing == 0>>None.<<elseif $currentRule.nipplesPiercing == 1>>Light.
-<<elseif $currentRule.nipplesPiercing == 2>>Heavy.<</if>>
-<</replace>>
-<</widget>>
-/%
- Call as <<RAChangeAreolaPiercings>>
-%/
-<<widget "RAChangeAreolaPiercings">>
-<<replace #areolapiercing>>
-<<if $currentRule.areolaePiercing == "no default setting">>No default setting.<<elseif $currentRule.areolaePiercing == 0>>None.<<elseif $currentRule.areolaePiercing == 1>>Studded.<</if>>
-<</replace>>
-<</widget>>
-/%
- Call as <<RAChangeLipPiercings>>
-%/
-<<widget "RAChangeLipPiercings">>
-<<replace #lippiercing>>
-<<if $currentRule.lipsPiercing == "no default setting">>No default setting.<<elseif $currentRule.lipsPiercing == 0>>None.<<elseif $currentRule.lipsPiercing == 1>>Light.
-<<elseif $currentRule.lipsPiercing == 2>>Heavy.<</if>>
-<</replace>>
-<</widget>>
-/%
- Call as <<RAChangeTonguePiercings>>
-%/
-<<widget "RAChangeTonguePiercings">>
-<<replace #tonguepiercing>>
-<<if $currentRule.tonguePiercing == "no default setting">>No default setting.<<elseif $currentRule.tonguePiercing == 0>>None.<<elseif $currentRule.tonguePiercing == 1>>Light.
-<<elseif $currentRule.tonguePiercing == 2>>Heavy.<</if>>
-<</replace>>
-<</widget>>
-/%
- Call as <<RAChangeClitPiercings>>
-%/
-<<widget "RAChangeClitPiercings">>
-<<replace #clitpiercing>>
-<<if $currentRule.clitPiercing == "no default setting">>No default setting.<<elseif $currentRule.clitPiercing == 0>>None.<<elseif $currentRule.clitPiercing == 1>>Light.
-<<elseif $currentRule.clitPiercing == 2>>Heavy.
-<<elseif $currentRule.clitPiercing == 3>>Smart.<</if>>
-<</replace>>
-<</widget>>
-/%
- Call as <<RAChangeVaginaPiercings>>
-%/
-<<widget "RAChangeVaginaPiercings">>
-<<replace #vaginapiercing>>
-<<if $currentRule.vaginaPiercing == "no default setting">>No default setting.<<elseif $currentRule.vaginaPiercing == 0>>None.<<elseif $currentRule.vaginaPiercing == 1>>Light.
-<<elseif $currentRule.vaginaPiercing == 2>>Heavy.<</if>>
-<</replace>>
-<</widget>>
-/%
- Call as <<RAChangeDickPiercings>>
-%/
-<<widget "RAChangeDickPiercings">>
-<<replace #dickpiercing>>
-<<if $currentRule.dickPiercing == "no default setting">>No default setting.<<elseif $currentRule.dickPiercing == 0>>None.<<elseif $currentRule.dickPiercing == 1>>Light.
-<<elseif $currentRule.dickPiercing == 2>>Heavy.<</if>>
-<</replace>>
-<</widget>>
-/%
- Call as <<RAChangeAnusPiercings>>
-%/
-<<widget "RAChangeAnusPiercings">>
-<<replace #anuspiercing>>
-<<if $currentRule.anusPiercing == "no default setting">>No default setting.<<elseif $currentRule.anusPiercing == 0>>None.<<elseif $currentRule.anusPiercing == 1>>Light.
-<<elseif $currentRule.anusPiercing == 2>>Heavy.<</if>>
-<</replace>>
-<</widget>>
-/%
- Call as <<RAChangeCorsetPiercings>>
-%/
-<<widget "RAChangeCorsetPiercings">>
-<<replace #corsetpiercing>>
-<<if $currentRule.corsetPiercing == "no default setting">>No default setting.<<elseif $currentRule.corsetPiercing == 0>>None.<<elseif $currentRule.corsetPiercing == 1>>Applied.<</if>>
-<</replace>>
-<</widget>>
-/%
- Call as <<RAChangeBranding>>
-%/
-<<widget "RAChangeBranding">>
-<<replace #branding>>
-<<if $currentRule.autoBrand == 1>>
-	''on.''
-	<<link "Deactivate">>
-		<<set $currentRule.autoBrand = 0>>
-		<<RAChangeBranding>>
-	<</link>>
-<<else>>
-	''off.''
-	<<link "Activate">>
-		<<set $currentRule.autoBrand = 1>>
-		<<RAChangeBranding>>
-	<</link>>
-<</if>>
-<</replace>>
-<</widget>>
-/%
- Call as <<RAChangeBrandTarget>>
-%/
-<<widget "RAChangeBrandTarget">>
-<<replace #brandtarget>>
-Your preferred location for brands is the ''$brandTarget.''
-<</replace>>
-<</widget>>
-/%
- Call as <<RAChangeBrandDesign>>
-%/
-<<widget "RAChangeBrandDesign">>
-<<replace #branddesign>>
-Your brand design is ''$brandDesign.''
-<</replace>>
-<</widget>>
-/%
- Call as <<RAChangeChestTattoos>>
-%/
-<<widget "RAChangeChestTattoos">>
-<<replace #chesttattoo>>
-<<if $currentRule.boobsTat == 0>>none<<else>>$currentRule.boobsTat<</if>>.
-<</replace>>
-<</widget>>
-/%
- Call as <<RAChangeButtTattoos>>
-%/
-<<widget "RAChangeButtTattoos">>
-<<replace #butttattoo>>
-<<if $currentRule.buttTat == 0>>none<<else>>$currentRule.buttTat<</if>>.
-<</replace>>
-<</widget>>
-/%
- Call as <<RAChangeFaceTattoos>>
-%/
-<<widget "RAChangeFaceTattoos">>
-<<replace #facetattoo>>
-<<if $currentRule.lipsTat == 0>>none<<else>>$currentRule.lipsTat<</if>>.
-<</replace>>
-<</widget>>
-/%
- Call as <<RAChangeShoulderTattoos>>
-%/
-<<widget "RAChangeShoulderTattoos">>
-<<replace #shouldertattoo>>
-<<if $currentRule.shouldersTat == 0>>none<<else>>$currentRule.shouldersTat<</if>>.
-<</replace>>
-<</widget>>
-/%
- Call as <<RAChangeArmTattoos>>
-%/
-<<widget "RAChangeArmTattoos">>
-<<replace #armtattoo>>
-<<if $currentRule.armsTat == 0>>none<<else>>$currentRule.armsTat<</if>>.
-<</replace>>
-<</widget>>
-/%
- Call as <<RAChangeLegTattoos>>
-%/
-<<widget "RAChangeLegTattoos">>
-<<replace #legtattoo>>
-<<if $currentRule.legsTat == 0>>none<<else>>$currentRule.legsTat<</if>>.
-<</replace>>
-<</widget>>
-/%
- Call as <<RAChangeBackTattoos>>
-%/
-<<widget "RAChangeBackTattoos">>
-<<replace #backtattoo>>
-<<if $currentRule.backTat == 0>>none<<else>>$currentRule.backTat<</if>>.
-<</replace>>
-<</widget>>
-/%
- Call as <<RAChangeStampTattoos>>
-%/
-<<widget "RAChangeStampTattoos">>
-<<replace #stamptattoo>>
-<<if $currentRule.stampTat == 0>>none<<else>>$currentRule.stampTat<</if>>.
-<</replace>>
-<</widget>>
-/%
- Call as <<RAChangeVaginaTattoos>>
-%/
-<<widget "RAChangeVaginaTattoos">>
-<<replace #vaginatattoo>>
-<<if $currentRule.vaginaTat == 0>>none<<else>>$currentRule.vaginaTat<</if>>.
-<</replace>>
-<</widget>>
-/%
- Call as <<RAChangeDickTattoos>>
-%/
-<<widget "RAChangeDickTattoos">>
-<<replace #dicktattoo>>
-<<if $currentRule.dickTat == 0>>none<<else>>$currentRule.dickTat<</if>>.
-<</replace>>
-<</widget>>
-/%
- Call as <<RAChangeAnusTattoos>>
-%/
-<<widget "RAChangeAnusTattoos">>
-<<replace #anustattoo>>
-<<if $currentRule.anusTat == 0>>none<<else>>$currentRule.anusTat<</if>>.
-<</replace>>
-<</widget>>
-
-
-/%
- Call as <<RASurgeryChangeEyes>>
-%/
-<<widget "RASurgeryChangeEyes">>
-<<replace #eyes>>
-	<<if ($currentRule.surgery.eyes == -1)>>
-		''blurred.''
-	<<elseif ($currentRule.surgery.eyes == 1)>>
-		''fixed.''
-	<<else>>
-		''no default setting.''
-
-	<</if>>
-
-	<br>
-
-	<<if ($currentRule.surgery.eyes !== "no default setting")>>
-		<<link "No default setting">>
-			<<set $currentRule.surgery.eyes = "no default setting">>
-			<<RASurgeryChangeEyes>>
-		<</link>> |
-	<<else>>
-		No default setting |
-	<</if>>
-	<<if ($currentRule.surgery.eyes !== 1)>>
-		<<link "Corrected">>
-			<<set $currentRule.surgery.eyes = 1>>
-			<<RASurgeryChangeEyes>>
-		<</link>> |
-	<<else>>
-		Corrected |
-	<</if>>
-	<<if ($currentRule.surgery.eyes !== -1)>>
-		<<link "Blurred">>
-			<<set $currentRule.surgery.eyes = -1>>
-			<<RASurgeryChangeEyes>>
-		<</link>>
-	<<else>>
-		Blurred
-	<</if>>
-<</replace>>
-<</widget>>
-
-/%
- Call as <<RASurgeryChangeLactation>>
-%/
-<<widget "RASurgeryChangeLactation">>
-<<replace #lactation>>
-	<<if ($currentRule.surgery.lactation == "no default setting")>>
-		''no default setting.''
-	<<elseif ($currentRule.surgery.lactation == 1)>>
-		''implanted.''
-	<<else>>
-		''implants will be removed.''
-	<</if>>
-
-	<br>
-
-	<<if ($currentRule.surgery.lactation !== "no default setting")>>
-		<<link "No default setting">>
-			<<set $currentRule.surgery.lactation = "no default setting">>
-			<<RASurgeryChangeLactation>>
-		<</link>> |
-	<<else>>
-		No default setting |
-	<</if>>
-	<<if ($currentRule.surgery.lactation !== 0)>>
-		<<link "Removed">>
-			<<set $currentRule.surgery.lactation = 0>>
-			<<RASurgeryChangeLactation>>
-		<</link>> |
-	<<else>>
-		Removed |
-	<</if>>
-	<<if ($currentRule.surgery.lactation !== 1)>>
-		<<link "Implanted">>
-			<<set $currentRule.surgery.lactation = 1>>
-			<<RASurgeryChangeLactation>>
-		<</link>>
-	<<else>>
-		Implanted
-	<</if>>
-<</replace>>
-<</widget>>
-
-/%
- Call as <<RASurgeryChangeProstate>>
-%/
-<<widget "RASurgeryChangeProstate">>
-<<replace #prostate>>
-	<<if ($currentRule.surgery.prostate == "no default setting")>>
-		''no default setting.''
-	<<elseif ($currentRule.surgery.prostate == 1)>>
-		''implanted.''
-	<<else>>
-		''implants will be removed.''
-	<</if>>
-
-	<br>
-
-	<<if ($currentRule.surgery.prostate !== "no default setting")>>
-		<<link "No default setting">>
-			<<set $currentRule.surgery.prostate = "no default setting">>
-			<<RASurgeryChangeProstate>>
-		<</link>> |
-	<<else>>
-		No default setting |
-	<</if>>
-	<<if ($currentRule.surgery.prostate !== 0)>>
-		<<link "Removed">>
-			<<set $currentRule.surgery.prostate = 0>>
-			<<RASurgeryChangeProstate>>
-		<</link>> |
-	<<else>>
-		Removed |
-	<</if>>
-	<<if ($currentRule.surgery.prostate !== 1)>>
-		<<link "Implanted">>
-			<<set $currentRule.surgery.prostate = 1>>
-			<<RASurgeryChangeProstate>>
-		<</link>>
-	<<else>>
-		Implanted
-	<</if>>
-<</replace>>
-<</widget>>
-
-/%
- Call as <<RASurgeryChangeCosmetic>>
-%/
-<<widget "RASurgeryChangeCosmetic">>
-<<replace #cosmetic>>
-	<<if ($currentRule.surgery.cosmetic == 2)>>
-		''invasive.''
-	<<elseif ($currentRule.surgery.cosmetic == 1)>>
-		''subtle.''
-	<<elseif $currentRule.surgery.cosmetic == 0>>
-		''none.''
-	<<else>>
-		''off.''
-	<</if>>
-
-	<br>
-
-	<<if ($currentRule.surgery.cosmetic !== "nds")>>
-		<<link "No default setting">>
-			<<set $currentRule.surgery.cosmetic = "nds">>
-			<<RASurgeryChangeCosmetic>>
-		<</link>> |
-	<<else>>
-		Off |
-	<</if>>
-	<<if ($currentRule.surgery.cosmetic !== 0)>>
-		<<link "None">>
-			<<set $currentRule.surgery.cosmetic = 0>>
-			<<RASurgeryChangeCosmetic>>
-		<</link>> |
-	<<else>>
-		None |
-	<</if>>
-	<<if ($currentRule.surgery.cosmetic !== 1)>>
-		<<link "Subtle">>
-			<<set $currentRule.surgery.cosmetic = 1>>
-			<<RASurgeryChangeCosmetic>>
-		<</link>> |
-	<<else>>
-		Subtle |
-	<</if>>
-	<<if ($currentRule.surgery.cosmetic !== 2)>>
-		<<link "Invasive">>
-			<<set $currentRule.surgery.cosmetic = 2>>
-			<<RASurgeryChangeCosmetic>>
-		<</link>>
-	<<else>>
-		Invasive
-	<</if>>
-<</replace>>
-<</widget>>
-
-/%
- Call as <<RASurgeryChangeLips>>
-%/
-<<widget "RASurgeryChangeLips">>
-<<replace #lips>>
-	<<if ($currentRule.surgery.lips == "no default setting")>>
-		''no default setting.''
-	<<elseif ($currentRule.surgery.lips == 95)>>
-		implanted until a ''facepussy.''
-	<<elseif ($currentRule.surgery.lips == 70)>>
-		implanted until ''huge.''
-	<<elseif ($currentRule.surgery.lips == 40)>>
-		implanted until ''big.''
-	<<elseif ($currentRule.surgery.lips == 20)>>
-		implanted until ''plush.''
-	<<else>>
-		''implants will be removed.''
-	<</if>>
-
-	<br>
-
-	<<if ($currentRule.surgery.lips !== "no default setting")>>
-		<<link "No default setting">>
-		<<set $currentRule.surgery.lips = "no default setting">>
-		<<RASurgeryChangeLips>>
-		<</link>> |
-	<<else>>
-		No default setting |
-	<</if>>
-	<<if ($currentRule.surgery.lips != 0)>>
-		<<link "Removed">>
-		<<set $currentRule.surgery.lips = 0>>
-		<<RASurgeryChangeLips>>
-		<</link>> |
-	<<else>>
-		Removed |
-	<</if>>
-	<<if ($currentRule.surgery.lips != 20)>>
-		<<link "Plush">>
-		<<set $currentRule.surgery.lips = 20>>
-		<<RASurgeryChangeLips>>
-		<</link>> |
-	<<else>>
-		Plush |
-	<</if>>
-	<<if ($currentRule.surgery.lips != 40)>>
-		<<link "Big">>
-		<<set $currentRule.surgery.lips = 40>>
-		<<RASurgeryChangeLips>>
-		<</link>> |
-	<<else>>
-		Big |
-	<</if>>
-	<<if ($currentRule.surgery.lips != 70)>>
-		<<link "Huge">>
-		<<set $currentRule.surgery.lips = 70>>
-		<<RASurgeryChangeLips>>
-		<</link>>
-	<<else>>
-		Huge
-	<</if>>
-	<<if ($seeExtreme != 0)>>
-	<<if ($currentRule.surgery.lips != 95)>>
-		| <<link "Facepussy">>
-		<<set $currentRule.surgery.lips = 95>>
-		<<RASurgeryChangeLips>>
-		<</link>>
-	<<else>>
-		| Facepussy
-	<</if>>
-	<</if>>
-<</replace>>
-<</widget>>
-
-/%
- Call as <<RASurgeryChangeButt>>
-%/
-<<widget "RASurgeryChangeButt">>
-<<replace #butt>>
-	<<if ($currentRule.surgery.butt == "no default setting")>>
-		''no default setting.''
-	<<elseif ($currentRule.surgery.butt == 9)>>
-		implanted until ''maximized.''
-	<<elseif ($currentRule.surgery.butt == 6)>>
-		implanted until ''huge.''
-	<<elseif ($currentRule.surgery.butt == 4)>>
-		implanted until ''stacked.''
-	<<elseif ($currentRule.surgery.butt == 2)>>
-		implanted until ''slim.''
-	<<else>>
-		''implants will be removed.''
-	<</if>>
-
-	<br>
-
-	<<if ($currentRule.surgery.butt !== "no default setting")>>
-		<<link "No default setting">>
-		<<set $currentRule.surgery.butt = "no default setting">>
-		<<RASurgeryChangeButt>>
-		<</link>> |
-	<<else>>
-		No default setting |
-	<</if>>
-	<<if ($currentRule.surgery.butt != 0)>>
-		<<link "Removed">>
-		<<set $currentRule.surgery.butt = 0>>
-		<<RASurgeryChangeButt>>
-		<</link>> |
-	<<else>>
-		Removed |
-	<</if>>
-	<<if ($currentRule.surgery.butt != 2)>>
-		<<link "Slim">>
-		<<set $currentRule.surgery.butt = 2>>
-		<<RASurgeryChangeButt>>
-		<</link>> |
-	<<else>>
-		Slim |
-	<</if>>
-	<<if ($currentRule.surgery.butt != 4)>>
-		<<link "Stacked">>
-		<<set $currentRule.surgery.butt = 4>>
-		<<RASurgeryChangeButt>>
-		<</link>> |
-	<<else>>
-		Stacked |
-	<</if>>
-	<<if ($currentRule.surgery.butt != 6)>>
-		<<link "Huge">>
-		<<set $currentRule.surgery.butt = 6>>
-		<<RASurgeryChangeButt>>
-		<</link>> |
-	<<else>>
-		Huge |
-	<</if>>
-	<<if ($currentRule.surgery.butt != 9)>>
-		<<link "Maximize">>
-		<<set $currentRule.surgery.butt = 9>>
-		<<RASurgeryChangeButt>>
-		<</link>>
-	<<else>>
-		Maximize
-	<</if>>
-<</replace>>
-<</widget>>
-
-/%
- Call as <<RASurgeryChangeBoobs>>
-%/
-<<widget "RASurgeryChangeBoobs">>
-<<replace #boobs>>
-	<<if ($currentRule.surgery.boobs == "no default setting")>>
-		''no default setting.''
-	<<elseif ($currentRule.surgery.boobs == 48000)>>
-		implanted until ''maximized.''
-	<<elseif ($currentRule.surgery.boobs == 9000)>>
-		implanted to maximally ''functional,'' where more would immobilize the slave.
-	<<elseif ($currentRule.surgery.boobs == 2000)>>
-		implanted until ''huge.''
-	<<elseif ($currentRule.surgery.boobs == 1000)>>
-		implanted until ''stacked.''
-	<<elseif ($currentRule.surgery.boobs == 400)>>
-		implanted until ''slim.''
-	<<else>>
-		''implants will be removed.''
-	<</if>>
-
-	<br>
-
-	<<if ($currentRule.surgery.boobs != "no default setting")>>
-		<<link "No default setting">>
-		<<set $currentRule.surgery.boobs = "no default setting">>
-		<<RASurgeryChangeBoobs>>
-		<</link>> |
-	<<else>>
-		No default setting |
-	<</if>>
-	<<if ($currentRule.surgery.boobs != 0)>>
-		<<link "Removed">>
-		<<set $currentRule.surgery.boobs = 0>>
-		<<RASurgeryChangeBoobs>>
-		<</link>> |
-	<<else>>
-		Removed |
-	<</if>>
-	<<if ($currentRule.surgery.boobs != 400)>>
-		<<link "Slim">>
-		<<set $currentRule.surgery.boobs = 400>>
-		<<RASurgeryChangeBoobs>>
-		<</link>> |
-	<<else>>
-		Slim |
-	<</if>>
-	<<if ($currentRule.surgery.boobs != 1000)>>
-		<<link "Stacked">>
-		<<set $currentRule.surgery.boobs = 1000>>
-		<<RASurgeryChangeBoobs>>
-		<</link>> |
-	<<else>>
-		Stacked |
-	<</if>>
-	<<if ($currentRule.surgery.boobs != 2000)>>
-		<<link "Huge">>
-		<<set $currentRule.surgery.boobs = 2000>>
-		<<RASurgeryChangeBoobs>>
-		<</link>> |
-	<<else>>
-		Huge |
-	<</if>>
-	<<if ($currentRule.surgery.boobs != 9000)>>
-		<<link "Functional">>
-		<<set $currentRule.surgery.boobs = 9000>>
-		<<RASurgeryChangeBoobs>>
-		<</link>> |
-	<<else>>
-		Functional |
-	<</if>>
-	<<if ($currentRule.surgery.boobs != 48000)>>
-		<<link "Maximize">>
-		<<set $currentRule.surgery.boobs = 48000>>
-		<<RASurgeryChangeBoobs>>
-		<</link>>
-	<<else>>
-		Maximize
-	<</if>>
-<</replace>>
-<</widget>>
-
-/%
- Call as <<RASurgeryChangeHoles>>
-%/
-<<widget "RASurgeryChangeHoles">>
-<<replace #holes>>
-	<<if ($currentRule.surgery.holes == 2)>>
-		''virginity restoration'' will be applied where possible.
-	<<elseif ($currentRule.surgery.holes == 1)>>
-		''hole tightening'' will be applied.
-	<<else>>
-		''No default setting.''
-	<</if>>
-
-	<br>
-	<<if ($currentRule.surgery.holes != "nds")>>
-		<<link "No default setting">>
-		<<set $currentRule.surgery.holes = "nds">>
-		<<RASurgeryChangeHoles>>
-		<</link>> |
-	<<else>>
-		No default setting |
-	<</if>>
-	<<if ($currentRule.surgery.holes != 1)>>
-		<<link "Tightening">>
-		<<set $currentRule.surgery.holes = 1>>
-		<<RASurgeryChangeHoles>>
-		<</link>> |
-	<<else>>
-		Tightening |
-	<</if>>
-	<<if ($currentRule.surgery.holes != 2)>>
-		<<link "Virginity">>
-		<<set $currentRule.surgery.holes = 2>>
-		<<RASurgeryChangeHoles>>
-		<</link>>
-	<<else>>
-		Virginity
-	<</if>>
-<</replace>>
-<</widget>>
-
-/%
- Call as <<RASurgeryBodyHair>>
-%/
-<<widget "RASurgeryBodyHair">>
-<<replace #bodyhair>>
-	<<if ($currentRule.surgery.bodyhair == 2)>>
-		''Removal''
-	<<elseif ($currentRule.surgery.bodyhair == 1)>>
-		''Keep''
-	<<else>>
-		''No default setting.''
-	<</if>>
-
-	<br>
-	<<if ($currentRule.surgery.bodyhair != "nds")>>
-		<<link "No default setting">>
-		<<set $currentRule.surgery.bodyhair = "nds">>
-		<<RASurgeryBodyHair>>
-		<</link>> |
-	<<else>>
-		No default setting |
-	<</if>>
-
-	<<if ($currentRule.surgery.bodyhair != 1)>>
-		<<link "Keep">>
-		<<set $currentRule.surgery.bodyhair = 1>>
-		<<RASurgeryBodyHair>>
-		<</link>> |
-	<<else>>
-		Keep |
-	<</if>>
-
-	<<if ($currentRule.surgery.bodyhair != 2)>>
-		<<link "Removal">>
-		<<set $currentRule.surgery.bodyhair = 2>>
-		<<RASurgeryBodyHair>>
-		<</link>>
-	<<else>>
-		Removal
-	<</if>>
-<</replace>>
-<</widget>>
-
-
-/%
- Call as <<RASurgeryHair>>
-%/
-<<widget "RASurgeryHair">>
-<<replace #hair>>
-	<<if ($currentRule.surgery.hair == 2)>>
-		''Removal''
-	<<elseif ($currentRule.surgery.hair == 1)>>
-		''Keep''
-	<<else>>
-		''No default setting.''
-	<</if>>
-
-	<br>
-	<<if ($currentRule.surgery.hair != "nds")>>
-		<<link "No default setting">>
-		<<set $currentRule.surgery.hair = "nds">>
-		<<RASurgeryHair>>
-		<</link>> |
-	<<else>>
-		No default setting |
-	<</if>>
-
-	<<if ($currentRule.surgery.hair != 1)>>
-		<<link "Keep">>
-		<<set $currentRule.surgery.hair = 1>>
-		<<RASurgeryHair>>
-		<</link>> |
-	<<else>>
-		Keep |
-	<</if>>
-
-	<<if ($currentRule.surgery.hair != 2)>>
-		<<link "Removal">>
-		<<set $currentRule.surgery.hair = 2>>
-		<<RASurgeryHair>>
-		<</link>>
-	<<else>>
-		Removal
-	<</if>>
-<</replace>>
-<</widget>>
-
-/%
- % Call as <<RAFacilityRemove SlaveObject RuleObject>>
- %/
-<<widget "RAFacilityRemove">>
-<<if $args[1].facilityRemove>>
-	<<switch $args[1].setAssignment>>
-	<<case "be confined in the arcade">>
-		<<if $args[0].assignment == "be confined in the arcade">>
-			<br>$args[0].slaveName has been removed from $arcadeName and has been assigned to $args[1].removalAssignment.
-			<<assignJob $args[0] $args[1].removalAssignment>>
-		<</if>>
-
-	<<case "work in the brothel">>
-		<<if $args[0].assignment == "work in the brothel">>
-			<br>$args[0].slaveName has been removed from $brothelName and has been assigned to $args[1].removalAssignment.
-			<<assignJob $args[0] $args[1].removalAssignment>>
-		<</if>>
-
-	<<case "serve in the club">>
-		<<if $args[0].assignment == "serve in the club">>
-			<br>$args[0].slaveName has been removed from $clubName and has been assigned to $args[1].removalAssignment.
-			<<assignJob $args[0] $args[1].removalAssignment>>
-		<</if>>
-
-	<<case "work in the dairy">>
-		<<if $args[0].assignment == "work in the dairy">>
-			<br>$args[0].slaveName has been removed from $dairyName and has been assigned to $args[1].removalAssignment.
-			<<assignJob $args[0] $args[1].removalAssignment>>
-		<</if>>
-
-	<<case "rest in the spa">>
-		<<if $args[0].assignment == "rest in the spa">>
-			<br>$args[0].slaveName has been removed from $spaName and has been assigned to $args[1].removalAssignment.
-			<<assignJob $args[0] $args[1].removalAssignment>>
-		<</if>>
-
-	<<case "get treatment in the clinic">>
-		<<if $args[0].assignment == "get treatment in the clinic">>
-			<br>$args[0].slaveName has been removed from $clinicName and has been assigned to $args[1].removalAssignment.
-			<<assignJob $args[0] $args[1].removalAssignment>>
-		<</if>>
-
-	<<case "serve in the master suite">>
-		<<if $args[0].assignment == "serve in the master suite">>
-			<br>$args[0].slaveName has been removed from $masterSuiteName and has been assigned to $args[1].removalAssignment.
-			<<assignJob $args[0] $args[1].removalAssignment>>
-		<</if>>
-
-	<<case "live with your Head Girl">>
-		<<if $args[0].assignment == "live with your Head Girl">>
-			<br>$args[0].slaveName has been removed from $HGSuiteName and has been assigned to $args[1].removalAssignment.
-			<<assignJob $args[0] $args[1].removalAssignment>>
-		<</if>>
-
-	<<case "work as a servant">>
-		<<if $args[0].assignment == "work as a servant">>
-			<br>$args[0].slaveName has been removed from $servantsQuartersName and has been assigned to $args[1].removalAssignment.
-			<<assignJob $args[0] $args[1].removalAssignment>>
-		<</if>>
-
-	<<case "learn in the schoolroom">>
-		<<if $args[0].assignment == "learn in the schoolroom">>
-			<br>$args[0].slaveName has been removed from $schoolroomName and has been assigned to $args[1].removalAssignment.
-			<<assignJob $args[0] $args[1].removalAssignment>>
-		<</if>>
-
-	<<case "be confined in the cellblock">>
-		<<if $args[0].assignment == "be confined in the cellblock">>
-			<br>$args[0].slaveName has been removed from $cellblockName and has been assigned to $args[1].removalAssignment.
-			<<assignJob $args[0] $args[1].removalAssignment>>
-		<</if>>
-	<</switch>>
-<</if>>
-<</widget>>
-
-/%
- % Call as <<RARemoveRule SlaveObject RuleObject>>
- %/
-<<widget "RARemoveRule">>
-<<for _s = 0; _s < $args[0].currentRules.length; _s++>>
-	<<if $args[1].ID == $args[0].currentRules[_s]>>
-		<<set $args[0].currentRules.deleteAt(_s)>>
-		<br>//@@.tan;Rule _rule ($args[1].name) no longer applies to $args[0].slaveName, who is assigned to $args[0].assignment.@@//
-		<<RAFacilityRemove $args[0] $args[1]>>
-		<<break>>
-	<</if>>
-<</for>>
-<</widget>>
-
-/%
- % Call as <<DefaultRules SlaveObject>>
- % Does not use or modify $currentRule
- %/
-<<widget "DefaultRules">>
-<<set _combinedRule = {}>>
-<<for _r = 0; _r < $defaultRules.length; _r++>>
-	<<set _currentRule = clone($defaultRules[_r])>>
-	/% skip inapplicable rules %/
-	<<if !ruleApplied($args[0], _currentRule.ID)>>
-		<<continue>>
-	<</if>>
-
-	/% Before merging rules, we process assignments for each rule separately so we can remove slaves from facilities when they no longer qualify, even if the final "winning" rule assigns them elsewhere %/
-	/% We also ignore inapplicable assignments for the current slave, so we only merge assignments that are valid %/
-	<<switch _currentRule.setAssignment>>
-	<<case "no default setting">>
-		<<run delete _currentRule.setAssignment>>
-
-	<<case "rest" "please you">>
-		/% slaves always qualify for this assignment %/
-
-	<<case "live with your Head Girl">>
-		<<if ($HGSuiteSlaves < 1 && $args[0].indentureRestrictions <= 0)>>
-		<<else>>
-			<<RAFacilityRemove $args[0] _currentRule>> /% before deleting _currentRule.setAssignment %/
-			<<run delete _currentRule.setAssignment>>
-		<</if>>
-
-	<<case "be confined in the arcade">>
-		<<if ($arcadeSlaves < $arcade && $args[0].indentureRestrictions <= 0 && $args[0].breedingMark != 1)>>
-		<<else>>
-			<<RAFacilityRemove $args[0] _currentRule>> /% before deleting _currentRule.setAssignment %/
-			<<run delete _currentRule.setAssignment>>
-		<</if>>
-
-	<<case "serve in the master suite">>
-		<<if ($masterSuiteSlaves < $masterSuite && ($args[0].devotion > 20 || $args[0].trust < -50 || ($args[0].devotion >= -50 && $args[0].trust < -20)))>>
-		<<else>>
-			<<RAFacilityRemove $args[0] _currentRule>> /% before deleting _currentRule.setAssignment %/
-			<<run delete _currentRule.setAssignment>>
-		<</if>>
-
-	<<case "get treatment in the clinic">>
-		<<if ($clinicSlaves < $clinic && ($args[0].health < 20 || ($args[0].chem > 15 && $Nurse != 0 && $clinicUpgradeFilters == 1)) || (($args[0].bellyImplant > -1) && ($bellyImplants == 1)) || $args[0].preg > 1)>>
-		<<else>>
-			<<RAFacilityRemove $args[0] _currentRule>> /% before deleting _currentRule.setAssignment %/
-			<<run delete _currentRule.setAssignment>>
-		<</if>>
-
-	<<case "rest in the spa">>
-		<<if ($spaSlaves < $spa) && ($args[0].health < 20) || ($args[0].trust < 60) || ($args[0].devotion <= 60) || ($args[0].fetish == "mindbroken") && ($args[0].devotion >= -20)>>
-		<<else>>
-			<<RAFacilityRemove $args[0] _currentRule>> /% before deleting _currentRule.setAssignment %/
-			<<run delete _currentRule.setAssignment>>
-		<</if>>
-
-	<<case "work in the brothel">>
-		<<if ($brothelSlaves < $brothel && ($args[0].devotion > 50 || $args[0].trust > 50 || $args[0].trust < -50 || ($args[0].devotion >= -50 && $args[0].trust < -20)) && $args[0].breedingMark != 1)>>
-		<<else>>
-			<<RAFacilityRemove $args[0] _currentRule>> /% before deleting _currentRule.setAssignment %/
-			<<run delete _currentRule.setAssignment>>
-		<</if>>
-
-	<<case "serve in the club">>
-		<<if ($clubSlaves < $club && ($args[0].devotion > 50 || $args[0].trust > 50 || $args[0].trust < -50 || ($args[0].devotion >= -50 && $args[0].trust < -20)) && $args[0].breedingMark != 1)>>
-		<<else>>
-			<<RAFacilityRemove $args[0] _currentRule>> /% before deleting _currentRule.setAssignment %/
-			<<run delete _currentRule.setAssignment>>
-		<</if>>
-
-	<<case "work in the dairy">>
-		<<if ($dairy > $dairySlaves+$bioreactorsXY+$bioreactorsXX+$bioreactorsHerm+$bioreactorsBarren)>>
-			<<if ($args[0].indentureRestrictions > 0) && ($dairyRestraintsSetting > 1)>>
-			<<elseif (($args[0].indentureRestrictions > 1) && ($dairyRestraintsSetting > 0)) || ($args[0].breedingMark == 1 && $dairyRestraintsSetting > 0) || (($dairyPregSetting > 0) && (($args[0].bellyImplant != -1) || ($args[0].broodmother != 0)))>>
-			<<else>>
-				<<if ($args[0].lactation > 0 || (($dairySlimMaintainUpgrade == 0 || $dairySlimMaintain == 0) && ($args[0].boobs > 300 || $args[0].dick == 0 || $dairyImplantsSetting == 1) && $dairyImplantsSetting != 2)) || ($args[0].balls > 0)>>
-					<<if ($args[0].devotion > 20) || (($args[0].devotion >= -50) && ($args[0].trust < -20)) || ($args[0].trust < -50) || ($args[0].amp == 1) || ($dairyRestraintsUpgrade == 1)>>
-						<<if ($dairyStimulatorsSetting < 2) || ($args[0].anus > 2) || ($dairyPrepUpgrade == 1)>>
-							<<if ($dairyPregSetting < 2) || ($args[0].vagina > 2) || ($args[0].ovaries == 0) || ($dairyPrepUpgrade == 1)>>
-							<<else>>
-								<<RAFacilityRemove $args[0] _currentRule>> /% before deleting _currentRule.setAssignment %/
-								<<run delete _currentRule.setAssignment>>
-							<</if>>
-						<<else>>
-							<<RAFacilityRemove $args[0] _currentRule>> /% before deleting _currentRule.setAssignment %/
-							<<run delete _currentRule.setAssignment>>
-						<</if>>
-					<<else>>
-						<<RAFacilityRemove $args[0] _currentRule>> /% before deleting _currentRule.setAssignment %/
-						<<run delete _currentRule.setAssignment>>
-					<</if>>
-				<<else>>
-					<<RAFacilityRemove $args[0] _currentRule>> /% before deleting _currentRule.setAssignment %/
-					<<run delete _currentRule.setAssignment>>
-				<</if>>
-			<</if>>
-		<</if>>
-
-	<<case "work as a servant">>
-		<<if ($servantsQuartersSlaves < $servantsQuarters && canSee($args[0]) && canWalk($args[0]) && ($args[0].devotion >= -20 || $args[0].trust < -20 || ($args[0].devotion >= -50 && $args[0].trust <= 20)))>>
-		<<else>>
-			<<RAFacilityRemove $args[0] _currentRule>> /% before deleting _currentRule.setAssignment %/
-			<<run delete _currentRule.setAssignment>>
-		<</if>>
-
-	<<case "learn in the schoolroom">>
-		<<if ($schoolroomSlaves < $schoolroom && $args[0].fetish != "mindbroken" && ($args[0].devotion >= -20 || $args[0].trust < -50 || ($args[0].devotion >= -50 && $args[0].trust < -20)))>>
-			<<if ($args[0].intelligenceImplant < 1) || ($args[0].voice != 0 && $args[0].accent+$schoolroomUpgradeLanguage > 2) || ($args[0].oralSkill <= 10+$schoolroomUpgradeSkills*20) || ($args[0].whoreSkill <= 10+$schoolroomUpgradeSkills*20) || ($args[0].entertainSkill <= 10+$schoolroomUpgradeSkills*20) || ($args[0].analSkill < 10+$schoolroomUpgradeSkills*20) || (($args[0].vagina >= 0) && ($args[0].vaginalSkill < 10+$schoolroomUpgradeSkills*20))>>
-			<<else>>
-				<<RAFacilityRemove $args[0] _currentRule>> /% before deleting _currentRule.setAssignment %/
-				<<run delete _currentRule.setAssignment>>
-			<</if>>
-		<<else>>
-			<<RAFacilityRemove $args[0] _currentRule>> /% before deleting _currentRule.setAssignment %/
-			<<run delete _currentRule.setAssignment>>
-		<</if>>
-
-	<<case "be confined in the cellblock">>
-		<<if ($cellblockSlaves < $cellblock && (($args[0].devotion < -20 && $args[0].trust >= -20) || ($args[0].devotion < -50 && $args[0].trust >= -50)))>>
-		<<else>>
-			<<RAFacilityRemove $args[0] _currentRule>> /% before deleting _currentRule.setAssignment %/
-			<<run delete _currentRule.setAssignment>>
-		<</if>>
-
-	<<case "take classes">>
-		<<if (!$args[0].intelligenceImplant && $args[0].fetish != "mindbroken" && ($args[0].devotion >= -20 || $args[0].trust < -50 || ($args[0].trust < -20 && $args[0].devotion >= -50)))>>
-		<<else>>
-			<<run delete _currentRule.setAssignment>>
-		<</if>>
-
-	<<case "choose her own job">>
-		<<if ($args[0].fetish != "mindbroken")>>
-		<<else>>
-			<<run delete _currentRule.setAssignment>>
-		<</if>>
-
-	<<case "get milked">>
-		<<if ($args[0].lactation > 0 || $args[0].balls > 0)>>
-		<<else>>
-			<<run delete _currentRule.setAssignment>>
-		<</if>>
-
-	<<case "be a servant">>
-		<<if (canWalk($args[0]) && canSee($args[0]) && ($args[0].devotion >= -20 || $args[0].trust < -50 || ($args[0].trust < -20 && $args[0].devotion >= -50)))>>
-		<<else>>
-			<<run delete _currentRule.setAssignment>>
-		<</if>>
-
-	<<case "work a glory hole">>
-		<<if $args[0].indentureRestrictions <= 0 && $args[0].breedingMark != 1>>
-		<<else>>
-			<<run delete _currentRule.setAssignment>>
-		<</if>>
-
-	<<case "whore" "serve the public" "stay confined">>
-		<<if ($args[0].fuckdoll == 0) && $args[0].breedingMark != 1>>
-		<<else>>
-			<<run delete _currentRule.setAssignment>>
-		<</if>>
-
-	<<default>>
-		@@.red;raWidgets missing case for assignment '<<print _currentRule.setAssignment>>'@@.
-
-	<</switch>>
-
-	/% merge the current rule (possibly modified by the code above) into the combined rule %/
-	/* <br>+++ currentRule <<print JSON.stringify(_currentRule)>><br>	*/
-	<<set _combinedRule = mergeRules([_combinedRule, _currentRule])>>
-
-<</for>> /* done merging rules; from here onwards, we should only use _combinedRule */
-
-/% If a slave has no rules applying to them, _combinedRule would (should) be an
- % empty object, and that would wreak havoc on the rest of the code. So we
- % check if a rule property, any one, is defined and otherwise skip everything.
- %/
-<<if (def _combinedRule.clothes)>>
-
-<<if (def _combinedRule.setAssignment && _combinedRule.setAssignment != "no default setting")>>
-<<if ((_combinedRule.setAssignment == "choose her own job" && !$args[0].choosesOwnAssignment) || _combinedRule.setAssignment != $args[0].assignment)>>
-	<<switch _combinedRule.setAssignment>>
-	<<case "live with your Head Girl">>
-		<br>$args[0].slaveName has been automatically assigned to live in your Head Girl's private suite.
-	<<case "be confined in the arcade">>
-		<br>$args[0].slaveName has been automatically assigned to be confined in $arcadeName.
-	<<case "serve in the master suite">>
-		<br>$args[0].slaveName has been automatically assigned to $masterSuiteName.
-	<<case "get treatment in the clinic">>
-		<br>$args[0].slaveName has been automatically assigned to get treatment in $clinicName.
-	<<case "rest in the spa">>
-		<br>$args[0].slaveName has been automatically assigned to rest in $spaName.
-	<<case "work in the brothel">>
-		<br>$args[0].slaveName has been automatically assigned to work in $brothelName.
-	<<case "serve in the club">>
-		<br>$args[0].slaveName has been automatically assigned to serve in $clubName.
-	<<case "work in the dairy">>
-		<br>$args[0].slaveName has been automatically assigned to be milked in $dairyName.
-	<<case "work as a servant">>
-		<br>$args[0].slaveName has been automatically assigned to work in $servantsQuartersName.
-	<<case "work as a servant">>
-		<br>$args[0].slaveName has been automatically assigned to work in $servantsQuartersName.
-	<<case "learn in the schoolroom">>
-		<br>$args[0].slaveName has been automatically assigned to study in $schoolroomName.
-	<<case "be confined in the cellblock">>
-		<br>$args[0].slaveName has been automatically assigned to be confined in $cellblockName.
-	<<case "choose her own job">>
-		<br>$args[0].slaveName is now allowed to select her own assignments.
-	<<default>>
-		<br>$args[0].slaveName has been automatically assigned to _combinedRule.setAssignment.
-	<</switch>>
-	<<assignJob $args[0] _combinedRule.setAssignment>>
-<</if>>
-<</if>>
-
-<<if $args[0].fuckdoll == 0>>
-
-<<if (def _combinedRule.clothes) && (_combinedRule.clothes !== "no default setting")>>
-<<if (_combinedRule.clothes == "choosing her own clothes")>>
-<<if ($args[0].choosesOwnClothes == 0)>>
-	<<set $args[0].clothes = "choosing her own clothes">>
-	<<set $args[0].choosesOwnClothes = 1>>
-	<br>$args[0].slaveName is now allowed to choose her own clothes.
-<</if>>
-<<elseif ($args[0].clothes !== _combinedRule.clothes)>>
-	<<set $args[0].clothes = _combinedRule.clothes>>
-	<<set $args[0].choosesOwnClothes = 0>>
-	<br>$args[0].slaveName is now wearing $args[0].clothes.
-<</if>>
-<</if>>
-
-<<if (def _combinedRule.collar) && (_combinedRule.collar != "no default setting")>>
-<<if ($args[0].collar !== _combinedRule.collar)>>
-	<br>
-	<<if (_combinedRule.collar == "preg biometrics" && $args[0].preg <= -1)>>
-		<<set $args[0].collar = "none">>
-		$args[0].slaveName cannot utilize preg biometrics.
-	<<elseif (_combinedRule.collar == "massive dildo gag" && $args[0].oralSkill <= 50)>>
-		<<set $args[0].collar = "none">>
-		$args[0].slaveName lacks the oral skill to successfully keep the massive dildo gag in her throat.
-	<<else>>
-		<<set $args[0].collar = _combinedRule.collar>>
-	<</if>>
-	<<if ($args[0].collar == "none")>>
-		$args[0].slaveName has been given no collar.
-	<<else>>
-		$args[0].slaveName has been given a $args[0].collar collar.
-	<</if>>
-<</if>>
-<</if>>
-
-<<if (def _combinedRule.eyewear) && (_combinedRule.eyewear !== "no default setting")>>
-    <<switch _combinedRule.eyewear>>
-    <<case "correct with glasses">>
-        <<if $args[0].eyes == -1>>
-            <<if $args[0].eyewear != "corrective glasses">>
-                <<set $args[0].eyewear = "corrective glasses">>
-                <<set $cash -= $modCost>>
-                <br>$args[0].slaveName has been given corrective glasses.
-            <</if>>
-        <<else>>
-            <<if $args[0].eyewear != "none">>
-                <<set $args[0].eyewear = "none">>
-                <br>$args[0].slaveName's eyewear has been removed.
-            <</if>>
-        <</if>>
-
-    <<case "correct with contacts">>
-        <<if $args[0].eyes == -1>>
-            <<if $args[0].eyewear != "corrective contacts">>
-                <<set $args[0].eyewear = "corrective contacts">>
-                <<set $cash -= $modCost>>
-                <br>$args[0].slaveName has been given corrective contacts.
-            <</if>>
-        <<else>>
-            <<if $args[0].eyewear != "none">>
-                <<set $args[0].eyewear = "none">>
-                <br>$args[0].slaveName's eyewear has been removed.
-            <</if>>
-        <</if>>
-
-    <<case "blur with glasses">>
-        <<if $args[0].eyes > -1>>
-            <<if $args[0].eyewear != "blurring glasses">>
-                <<set $args[0].eyewear = "blurring glasses">>
-                <<set $cash -= $modCost>>
-                <br>$args[0].slaveName has been given blurring glasses.
-            <</if>>
-        <<else>>
-            <<if $args[0].eyewear != "none">>
-                <<set $args[0].eyewear = "none">>
-                <br>$args[0].slaveName's eyewear has been removed.
-            <</if>>
-        <</if>>
-
-    <<case "blur with contacts">>
-        <<if $args[0].eyes > -1>>
-            <<if $args[0].eyewear != "blurring contacts">>
-                <<set $args[0].eyewear = "blurring contacts">>
-                <<set $cash -= $modCost>>
-                <br>$args[0].slaveName has been given blurring contacts.
-            <</if>>
-        <<else>>
-            <<if $args[0].eyewear != "none">>
-                <<set $args[0].eyewear = "none">>
-                <br>Since $args[0].slaveName's eyewear has been removed.
-            <</if>>
-        <</if>>
-
-    <<case "universal glasses">>
-        <<if $args[0].eyes == -1>>
-            <<if $args[0].eyewear != "corrective glasses">>
-                <<set $args[0].eyewear = "corrective glasses">>
-                <<set $cash -= $modCost>>
-                <br>$args[0].slaveName has been given corrective glasses.
-            <</if>>
-        <<else>>
-            <<if $args[0].eyewear != "glasses">>
-                <<set $args[0].eyewear = "glasses">>
-                <<set $cash -= $modCost>>
-                <br>$args[0].slaveName has been given decorative glasses.
-            <</if>>
-        <</if>>
-
-    <<default>>
-        <<if $args[0].eyewear != "none">>
-            <<set $args[0].eyewear = "none">>
-            <br>$args[0].slaveName's eyewear has been removed.
-        <</if>>
-    <</switch>>
-<</if>>
-
-<<if $args[0].vagina == 0>>
-<<if (def _combinedRule.virginAccessory) && (_combinedRule.virginAccessory !== "no default setting")>>
-<<if $args[0].vaginalAccessory !== _combinedRule.virginAccessory>>
-	<<set $args[0].vaginalAccessory = _combinedRule.virginAccessory>>
-	<<switch $args[0].vaginalAccessory>>
-	<<case "huge dildo">>
-		<br>$args[0].slaveName is a virgin and has been given a
-		<<if $args[0].vagina >= 2>>
-			massive dildo to permanently gape her cunt.
-		<<else>>
-			large dildo for her pussy, since it must be stretched before it can accommodate a huge one.
-			<<set $args[0].vaginalAccessory = "large dildo">>
-		<</if>>
-	<<case "long dildo">>
-		<<if $activeSlave.breedingMark == 1>>
-			<br>Breeding regulations forbid the use of cervix penetrating dildos on marked slaves, so the virgin $args[0].slaveName has been given a standard length dildo for her pussy.
-			<<set $args[0].vaginalAccessory = "dildo">>
-		<</if>>
-	<<case "long, large dildo">>
-		<<if $activeSlave.breedingMark == 1>>
-			<br>Breeding regulations forbid the use of cervix penetrating dildos on marked slaves, so the virgin $args[0].slaveName has been given a standard length large dildo for her pussy.
-			<<set $args[0].vaginalAccessory = "large dildo">>
-		<</if>>
-	<<case "long, huge dildo">>
-		<<if $activeSlave.breedingMark == 1>>
-			<br>Breeding regulations forbid the use of cervix penetrating dildos on marked slaves, so the virgin $args[0].slaveName has been given a standard length huge dildo for her pussy.
-			<<set $args[0].vaginalAccessory = "huge dildo">>
-		<<else>>
-			<br>$args[0].slaveName is a virgin and has been given a
-			<<if $args[0].vagina >= 2>>
-				massive and oversized dildo to permanently gape her cunt.
-			<<else>>
-				long, large dildo for her pussy, since it must be stretched before it can accommodate a huge one.
-				<<set $args[0].vaginalAccessory = "long, large dildo">>
-			<</if>>
-		<</if>>
-	<<case "none">>
-		<br>$args[0].slaveName is a virgin and has been instructed not to use a vaginal accessory.
-	<<default>>
-		<br>$args[0].slaveName is a virgin and has been given a $args[0].vaginalAccessory for her pussy.
-	<</switch>>
-<</if>>
-<</if>>
-<<elseif ($args[0].vagina > 0) && ($args[0].anus == 0)>>
-<<if (def _combinedRule.aVirginAccessory) && (_combinedRule.aVirginAccessory !== "no default setting")>>
-<<if $args[0].vaginalAccessory !== _combinedRule.aVirginAccessory>>
-	<<set $args[0].vaginalAccessory = _combinedRule.aVirginAccessory>>
-	<<switch $args[0].vaginalAccessory>>
-	<<case "huge dildo">>
-		<br>$args[0].slaveName is a virgin and has been given a
-		<<if $args[0].vagina >= 2>>
-			massive dildo to permanently gape her cunt.
-		<<else>>
-			large dildo for her pussy, since it must be stretched before it can accommodate a huge one.
-			<<set $args[0].vaginalAccessory = "large dildo">>
-		<</if>>
-	<<case "long dildo">>
-		<<if $activeSlave.breedingMark == 1>>
-			<br>Breeding regulations forbid the use of cervix penetrating dildos on marked slaves, so the virgin $args[0].slaveName has been given a standard length dildo for her pussy.
-			<<set $args[0].vaginalAccessory = "dildo">>
-		<</if>>
-	<<case "long, large dildo">>
-		<<if $activeSlave.breedingMark == 1>>
-			<br>Breeding regulations forbid the use of cervix penetrating dildos on marked slaves, so the virgin $args[0].slaveName has been given a standard length large dildo for her pussy.
-			<<set $args[0].vaginalAccessory = "large dildo">>
-		<</if>>
-	<<case "long, huge dildo">>
-		<<if $activeSlave.breedingMark == 1>>
-			<br>Breeding regulations forbid the use of cervix penetrating dildos on marked slaves, so the virgin $args[0].slaveName has been given a standard length huge dildo for her pussy.
-			<<set $args[0].vaginalAccessory = "huge dildo">>
-		<<else>>
-			<br>$args[0].slaveName is a virgin and has been given a
-			<<if $args[0].vagina >= 2>>
-				massive and oversized dildo to permanently gape her cunt.
-			<<else>>
-				long, large dildo for her pussy, since it must be stretched before it can accommodate a huge one.
-				<<set $args[0].vaginalAccessory = "long, large dildo">>
-			<</if>>
-		<</if>>
-	<<case "none">>
-		<br>$args[0].slaveName is a virgin and has been instructed not to use a vaginal accessory.
-	<<default>>
-		<br>$args[0].slaveName is a virgin and has been given a $args[0].vaginalAccessory for her pussy.
-	<</switch>>
-<</if>>
-<</if>>
-<<elseif $args[0].vagina > 0>>
-<<if (def _combinedRule.vaginalAccessory) && (_combinedRule.vaginalAccessory !== "no default setting")>>
-<<if $args[0].vaginalAccessory !== _combinedRule.vaginalAccessory>>
-	<<set $args[0].vaginalAccessory = _combinedRule.vaginalAccessory>>
-	<<switch $args[0].vaginalAccessory>>
-	<<case "huge dildo">>
-		<br>$args[0].slaveName has been given a
-		<<if $args[0].vagina >= 2>>
-			massive dildo to permanently gape her cunt.
-		<<else>>
-			large dildo for her pussy, since it must be stretched before it can accommodate a huge one.
-			<<set $args[0].vaginalAccessory = "large dildo">>
-		<</if>>
-	<<case "long dildo">>
-		<<if $activeSlave.breedingMark == 1>>
-			<br>Breeding regulations forbid the use of cervix penetrating dildos on marked slaves, so $args[0].slaveName has been given a standard length dildo for her pussy.
-			<<set $args[0].vaginalAccessory = "dildo">>
-		<</if>>
-	<<case "long, large dildo">>
-		<<if $activeSlave.breedingMark == 1>>
-			<br>Breeding regulations forbid the use of cervix penetrating dildos on marked slaves, so $args[0].slaveName has been given a standard length large dildo for her pussy.
-			<<set $args[0].vaginalAccessory = "large dildo">>
-		<</if>>
-	<<case "long, huge dildo">>
-		<<if $activeSlave.breedingMark == 1>>
-			<br>Breeding regulations forbid the use of cervix penetrating dildos on marked slaves, so $args[0].slaveName has been given a standard length huge dildo for her pussy.
-			<<set $args[0].vaginalAccessory = "huge dildo">>
-		<<else>>
-			<br>$args[0].slaveName has been given a
-			<<if $args[0].vagina >= 2>>
-				massive and oversized dildo to permanently gape her cunt.
-			<<else>>
-				long, large dildo for her pussy, since it must be stretched before it can accommodate a huge one.
-				<<set $args[0].vaginalAccessory = "long, large dildo">>
-			<</if>>
-		<</if>>
-	<<case "none">>
-		<br>$args[0].slaveName has been instructed not to use a vaginal accessory.
-	<<default>>
-		<br>$args[0].slaveName has been given a $args[0].vaginalAccessory for her pussy.
-	<</switch>>
-<</if>>
-<</if>>
-<</if>>
-
-<<if ($args[0].dick > 0)>>
-<<if $args[0].anus == 0>>
-<<if (def _combinedRule.aVirginDickAccessory) && (_combinedRule.aVirginDickAccessory !== "no default setting")>>
-<<if ($args[0].dickAccessory !== _combinedRule.aVirginDickAccessory)>>
-	<<set $args[0].dickAccessory = _combinedRule.aVirginDickAccessory>>
-	<<if $args[0].dickAccessory == "none">>
-		<br>$args[0].slaveName is a virgin and has been instructed not to wear a dick accessory.
-	<<else>>
-		<br>$args[0].slaveName is a virgin and has been given a $args[0].dickAccessory accessory for her cock.
-	<</if>>
-<</if>>
-<</if>>
-<<else>>
-<<if (def _combinedRule.dickAccessory) && (_combinedRule.dickAccessory !== "no default setting")>>
-<<if ($args[0].dickAccessory !== _combinedRule.dickAccessory)>>
-	<<set $args[0].dickAccessory = _combinedRule.dickAccessory>>
-	<<if $args[0].dickAccessory == "none">>
-		<br>$args[0].slaveName has been instructed not to wear a dick accessory.
-	<<else>>
-		<br>$args[0].slaveName has been given a $args[0].dickAccessory accessory for her cock.
-	<</if>>
-<</if>>
-<</if>>
-<</if>>
-<</if>>
-
-<<if ($args[0].vaginalAccessory !== "anal chastity") && ($args[0].vaginalAccessory !== "combined chastity") && ($args[0].dickAccessory !== "anal chastity") && ($args[0].dickAccessory !== "combined chastity")>>
-<<if $args[0].anus == 0>>
-<<if (def _combinedRule.aVirginButtplug) && (_combinedRule.aVirginButtplug !== "no default setting")>>
-<<if ($args[0].buttplug !== _combinedRule.aVirginButtplug)>>
-	<<set $args[0].buttplug = _combinedRule.aVirginButtplug>>
-	<<switch $args[0].buttplug>>
-	<<case "huge plug">>
-		<br>$args[0].slaveName is an anal virgin and has been given a
-		<<if ($args[0].anus >= 2)>>
-			massive plug to permanently gape her asshole.
-		<<else>>
-			<<set $args[0].buttplug = "large plug">>
-			large buttplug for her asshole, since it must be stretched before it can accommodate a huge one.
-		<</if>>
-	<<case "long plug">>
-		<<if $activeSlave.breedingMark == 1>>
-			<br>Breeding regulations forbid the use of anal plugs that can damage a growing fetus on marked slaves, so the anal virgin $args[0].slaveName has been given a standard length plug for her anus.
-			<<set $args[0].buttplug = "plug">>
-		<</if>>
-	<<case "long, large plug">>
-		<<if $activeSlave.breedingMark == 1>>
-			<br>Breeding regulations forbid the use of anal plugs that can damage a growing fetus on marked slaves, so the anal virgin $args[0].slaveName has been given a standard length large plug for her anus.
-			<<set $args[0].buttplug = "large plug">>
-		<</if>>
-	<<case "long, huge plug">>
-		<<if $activeSlave.breedingMark == 1>>
-			<br>Breeding regulations forbid the use of anal plugs that can damage a growing fetus on marked slaves, so the anal virgin $args[0].slaveName has been given a standard length huge plug for her anus.
-			<<set $args[0].buttplug = "huge plug">>
-		<<else>>
-			<br>$args[0].slaveName is an anal virgin and has been given a
-			<<if $args[0].anus >= 2>>
-				massive and oversized plug to permanently gape her asshole.
-			<<else>>
-				long, large buttplug for her asshole, since it must be stretched before it can accommodate a huge one.
-				<<set $args[0].buttplug = "long, large plug">>
-			<</if>>
-		<</if>>
-	<<case "none">>
-		<br>$args[0].slaveName is an anal virgin and has been instructed not to use an anal accessory.
-	<<default>>
-		<br>$args[0].slaveName is an anal virgin and has been given a $args[0].buttplug for her asshole.
-	<</switch>>
-<</if>>
-<</if>>
-<<else>>
-<<if (def _combinedRule.buttplug) && (_combinedRule.buttplug !== "no default setting")>>
-<<if ($args[0].buttplug !== _combinedRule.buttplug)>>
-	<<set $args[0].buttplug = _combinedRule.buttplug>>
-	<<switch $args[0].buttplug>>
-	<<case "huge plug">>
-		<br>$args[0].slaveName has been given a
-		<<if ($args[0].anus >= 2)>>
-			massive plug to permanently gape her asshole.
-		<<else>>
-			<<set $args[0].buttplug = "large plug">>
-			large buttplug for her asshole, since it must be stretched before it can accommodate a huge one.
-		<</if>>
-	<<case "long plug">>
-		<<if $activeSlave.breedingMark == 1>>
-			<br>Breeding regulations forbid the use of anal plugs that can damage a growing fetus on marked slaves, so $args[0].slaveName has been given a standard length plug for her anus.
-			<<set $args[0].buttplug = "plug">>
-		<</if>>
-	<<case "long, large plug">>
-		<<if $activeSlave.breedingMark == 1>>
-			<br>Breeding regulations forbid the use of anal plugs that can damage a growing fetus on marked slaves, so $args[0].slaveName has been given a standard length large plug for her anus.
-			<<set $args[0].buttplug = "large plug">>
-		<</if>>
-	<<case "long, huge plug">>
-		<<if $activeSlave.breedingMark == 1>>
-			<br>Breeding regulations forbid the use of anal plugs that can damage a growing fetus on marked slaves, so $args[0].slaveName has been given a standard length huge plug for her anus.
-			<<set $args[0].buttplug = "huge plug">>
-		<<else>>
-			<br>$args[0].slaveName has been given a
-			<<if $args[0].anus >= 2>>
-				massive and oversized plug to permanently gape her asshole.
-			<<else>>
-				long, large buttplug for her asshole, since it must be stretched before it can accommodate a huge one.
-				<<set $args[0].buttplug = "long, large plug">>
-			<</if>>
-		<</if>>
-	<<case "none">>
-		<br>$args[0].slaveName has been instructed not to use an anal accessory.
-	<<default>>
-		<br>$args[0].slaveName has been given a $args[0].buttplug for her asshole.
-	<</switch>>
-<</if>>
-<</if>>
-<</if>>
-<</if>>
-
-<<if (def _combinedRule.shoes) && (_combinedRule.shoes !== "no default setting")>>
-<<if ($args[0].shoes !== _combinedRule.shoes)>>
-<<if ($args[0].amp != 1)>>
-	<<set $args[0].shoes = _combinedRule.shoes>>
-	<br>$args[0].slaveName's shoes have been set to $args[0].shoes.
-<</if>>
-<</if>>
-<</if>>
-
-<<if (def _combinedRule.bellyAccessory) && (_combinedRule.bellyAccessory !== "no default setting")>>
-<<if ($args[0].bellyAccessory !== _combinedRule.bellyAccessory)>>
-	<<if ($args[0].belly >= 1500 || $args[0].weight >= 130) && setup.fakeBellies.includes(_combinedRule.bellyAccessory)>>
-		<br>$args[0].slaveName's natural belly is too big to properly wear an empathy belly.
-		<<set $args[0].bellyAccessory = "none">>
-	<<else>>
-		<<set $args[0].bellyAccessory = _combinedRule.bellyAccessory>>
-		<<if $args[0].bellyAccessory == "none">>
-			<br>$args[0].slaveName has been instructed not to wear a torso accessory.
-		<<else>>
-			<br>$args[0].slaveName has been given $args[0].bellyAccessory to wear.
-		<</if>>
-	<</if>>
-<</if>>
-<</if>>
-
-<</if>> /* CLOSES FUCKDOLL CHECK */
-
-/* Here is belly implant size control, it's used in Surgery Degradation passage to setup devotion and trust changes. */
-<<if (def _combinedRule.bellyImplantVol) && $args[0].bellyImplant >= 0 && _combinedRule.bellyImplantVol >= 0>>
-	<<set _tmpNextL = $nextLink, _tmpNextB = $nextButton, _as = $activeSlave, $activeSlave = $args[0]>> /* this is hack to use Surgery Degradation without breaking normal End Week routine */
-	<br>
-	<<if $args[0].health > -10 >>
-		<<set _bdiff = _combinedRule.bellyImplantVol - $args[0].bellyImplant>>
-		<<if _bdiff >= 5000 && $activeSlave.bellyPain == 0 && $args[0].health > 50>>
-			$args[0].slaveName's belly is way too small, so she has been directed to have intensive belly implant filling procedures throughout this week.
-			<<set $surgeryType = "bellyUp", $activeSlave.bellyImplant += 1000, $activeSlave.bellyPain += 2>>
-			<<silently>>
-				<<include "Surgery Degradation">>
-			<</silently>>
-		<<elseif _bdiff >= 500 && $activeSlave.bellyPain < 2 >>
-			$args[0].slaveName's belly has not reached the desired size, so she has been directed to have belly implant filling procedures throughout this week.
-			<<set $surgeryType = "bellyUp", $activeSlave.bellyImplant += 500, $activeSlave.bellyPain += 1>>
-			<<silently>>
-				<<include "Surgery Degradation">>
-			<</silently>>
-		<<elseif _bdiff <= -5000 >>
-			$args[0].slaveName's belly is way too big, so she has been directed to have intensive belly implant draining procedures throughout this week.
-			<<set $surgeryType = "bellyDown", $activeSlave.bellyImplant -= 1000>>
-			<<silently>>
-				<<include "Surgery Degradation">>
-			<</silently>>
-		<<elseif _bdiff <= -500 >>
-			$args[0].slaveName's belly is too big, so she has been directed to have belly implant draining procedures throughout this week.
-			<<set $surgeryType = "bellyDown", $activeSlave.bellyImplant -= 500>>
-			<<silently>>
-				<<include "Surgery Degradation">>
-			<</silently>>
-		<</if>>
-	<<else>>
-		$args[0].slaveName is not healthy enough to safely adjust her belly implant.
-	<</if>>
-	<<set $nextLink = _tmpNextL, $nextButton = _tmpNextB, $activeSlave = _as>>
-<</if>>
-
-/* < -------------------------------------------------------------------------Drug Assignment -------------------------------------------------------------------------------------------> */
-/* Fertility */
-<<if isFertile($args[0])>>
-	<<if (def _combinedRule.preg) && (_combinedRule.preg !== "no default setting")>>
-		<<if (_combinedRule.preg == -1)>>
-			<<if $args[0].preg !== -1>>
-				<br>$args[0].slaveName is fertile, so she has been put on the appropriate contraceptive regime.
-				<<set $args[0].preg = -1>>
-			<</if>>
-			<<if $args[0].drugs == "fertility drugs" || $args[0].drugs == "super fertility drugs">>
-				<<set $args[0].drugs = "no drugs">>
-			<</if>>
-		<<elseif (_combinedRule.preg == 0)>>
-			<<if $args[0].preg !== 0>>
-				<br>$args[0].slaveName is fertile, so she has been taken off contraceptives.
-				<<set $args[0].preg = 0>>
-			<</if>>
-			<<if $args[0].drugs == "fertility drugs" || $args[0].drugs == "super fertility drugs">>
-				<<set $args[0].drugs = "no drugs">>
-			<</if>>
-		<<elseif (_combinedRule.preg == 1)>>
-			<<if $args[0].preg !== 0 || $args[0].drugs !== "fertility drugs" || $args[0].hormones !== 0>>
-				<<set $args[0].preg = 0>>
-				<<set $args[0].drugs = "fertility drugs">>
-				<<set $args[0].hormones = 0>>
-				<br>$args[0].slaveName is fertile, so she has been put on the appropriate fertility regime.
-			<</if>>
-		<<elseif (_combinedRule.preg == 2)>>
-			<<if $args[0].preg !== 0 || $args[0].drugs !== "fertility drugs" || $args[0].hormones !== 2>>
-				<<set $args[0].preg = 0>>
-				<<set $args[0].drugs = "fertility drugs">>
-				<<set $args[0].hormones = 2>>
-				<br>$args[0].slaveName is fertile, so she has been put on the appropriate fertility regime.
-			<</if>>
-		<<elseif (_combinedRule.preg == 3) && $args[0].indentureRestrictions < 1>>
-			<<if $args[0].preg !== 0 || $args[0].drugs !== "super fertility drugs" || $args[0].hormones !== 0>>
-				<<set $args[0].preg = 0>>
-				<<set $args[0].drugs = "super fertility drugs">>
-				<<set $args[0].hormones = 0>>
-				<br>$args[0].slaveName is fertile, so she has been put on the appropriate fertility regime.
-			<</if>>
-		<<elseif (_combinedRule.preg == 4) && $args[0].indentureRestrictions < 1>>
-			<<if $args[0].preg !== 0 || $args[0].drugs !== "super fertility drugs" || $args[0].hormones !== 2>>
-				<<set $args[0].preg = 0>>
-				<<set $args[0].drugs = "super fertility drugs">>
-				<<set $args[0].hormones = 2>>
-				<br>$args[0].slaveName is fertile, so she has been put on the appropriate fertility regime.
-			<</if>>
-		<</if>>
-	<</if>>
-<</if>>
-
-/* Asset Growth */
-	<<set _tempAssetGrowthDrugs = ["breast injections", "intensive breast injections", "breast redistributors", "butt injections", "intensive butt injections", "butt redistributors", "lip injections", "lip atrophiers", "penis enhancement", "intensive penis enhancement", "penis atrophiers", "testicle enhancement", "intensive testicle enhancement", "testicle atrophiers", "hyper breast injections", "hyper butt injections", "hyper penis enhancement", "hyper testicle enhancement"]>>
-	<<for _g = 0; _g < 1; _g++>> /* Growth drugs. Single loop broken when we find a drug to apply, or that a currently active drug is working on an unsatisfied growth target. Please advise if cleaner or more efficient code is possible. */
-	<<if ($args[0].drugs == "super fertility drugs" || $args[0].drugs == "fertility drugs") && isFertile($args[0])>>
-	<br>$args[0].slaveName is on $args[0].drugs and will not be considered for drug enhancement until that regime is complete.
-	<<break>>
-	<<elseif (_combinedRule.growth.boobs == "no default setting" && _combinedRule.growth.butt == "no default setting" && _combinedRule.growth.lips == "no default setting" && _combinedRule.growth.dick == "no default setting" && _combinedRule.growth.dick == "no default setting" && _combinedRule.growth.balls == "no default setting")>>
-		<<break>>
-	<</if>>
-	<<if $args[0].assignmentVisible>> /* More resource intensive version with prioritizing. Possible to give this a toggle rather than basing it on visibility. */
-		<<set _priorities = []>>
-		<<if _combinedRule.growth.boobs != "no default setting">>
-			<<if $args[0].boobs < _combinedRule.growth.boobs>>
-				<<set _priority = {drug: "breast injections", weight: (_combinedRule.growth.boobs-$args[0].boobs)/_combinedRule.growth.boobs}, _priorities.push(_priority)>>
-			<<elseif ($args[0].boobs > _combinedRule.growth.boobs+200) && $args[0].weight < 100 && ($arcologies[0].FSSlimnessEnthusiastResearch == 1)>>
-				<<set _priority = {drug: "breast redistributors", weight: (1+(($args[0].boobs-$args[0].boobsImplant-_combinedRule.growth.boobs)/_combinedRule.growth.boobs))}, _priorities.push(_priority)>>
-			<</if>>
-		<</if>>
-		<<if _combinedRule.growth.butt != "no default setting">>
-			<<if $args[0].butt < _combinedRule.growth.butt>>
-				<<set _priority = {drug: "butt injections", weight: (_combinedRule.growth.butt-$args[0].butt)/_combinedRule.growth.butt}, _priorities.push(_priority)>>
-			<<elseif (Math.trunc($args[0].butt) > _combinedRule.growth.butt) && $args[0].weight < 100 && ($arcologies[0].FSSlimnessEnthusiastResearch == 1)>>
-				<<set _priority = {drug: "butt redistributors", weight: (1+(($args[0].butt-$args[0].buttImplant-_combinedRule.growth.butt)/_combinedRule.growth.butt))}, _priorities.push(_priority)>>
-			<</if>>
-		<</if>>
-		<<if _combinedRule.growth.lips != "no default setting">>
-			<<if $args[0].lips < _combinedRule.growth.lips>>
-				<<set _priority = {drug: "lip injections", weight: (_combinedRule.growth.lips-$args[0].lips)/_combinedRule.growth.lips}, _priorities.push(_priority)>>
-			<<elseif ($args[0].lips > _combinedRule.growth.lips) && ($arcologies[0].FSSlimnessEnthusiastResearch == 1)>>
-				<<set _priority = {drug: "lip atrophiers", weight: (1+(($args[0].lips-$args[0].lipsImplant-_combinedRule.growth.lips)/_combinedRule.growth.lips))}, _priorities.push(_priority)>>
-			<</if>>
-		<</if>>
-		<<if _combinedRule.growth.dick != "no default setting">>
-			<<if $args[0].dick>>
-			<<if $args[0].dick < _combinedRule.growth.dick>>
-				<<set _priority = {drug: "penis enhancement", weight: (_combinedRule.growth.dick-$args[0].dick)/_combinedRule.growth.dick}, _priorities.push(_priority)>>
-			<<elseif ($args[0].dick > _combinedRule.growth.dick) && ($arcologies[0].FSSlimnessEnthusiastResearch == 1)>>
-				<<set _priority = {drug: "penis atrophiers", weight: (1+(($args[0].dick-_combinedRule.growth.dick)/_combinedRule.growth.dick))}, _priorities.push(_priority)>>
-			<</if>>
-			<</if>>
-		<</if>>
-		<<if _combinedRule.growth.balls != "no default setting">>
-			<<if $args[0].balls>>
-			<<if $args[0].balls < _combinedRule.growth.balls>>
-				<<set _priority = {drug: "testicle enhancement", weight: (_combinedRule.growth.balls-$args[0].balls)/_combinedRule.growth.balls}, _priorities.push(_priority)>>
-			<<elseif ($args[0].balls > _combinedRule.growth.balls) && ($arcologies[0].FSSlimnessEnthusiastResearch == 1)>>
-				<<set _priority = {drug: "testicle atrophiers", weight: (1+(($args[0].balls-_combinedRule.growth.balls)/_combinedRule.growth.balls))}, _priorities.push(_priority)>>
-			<</if>>
-			<</if>>
-		<</if>>
-		<<if _priorities.length > 1>>
-			<<set _priorities = _priorities.sort(function(a, b){if(a.weight > b.weight) return -1; if(a.weight < b.weight) return 1; return 0;})>>
-			<<if $args[0].drugs != _priorities[0].drug>>
-				<<set $args[0].drugs = _priorities[0].drug>>
-				<br>$args[0].slaveName has been put on
-				<<if _combinedRule.growth.intensity && $args[0].drugs != "lip injections" && $args[0].health > 0>>
-					<<set $args[0].drugs = "intensive " + $args[0].drugs>>
-					$args[0].drugs, since she's healthy enough to take them, and
-				<<else>>
-					$args[0].drugs, since
-				<</if>>
-				that part of her body is <<print Math.trunc(_priorities[0].weight*100)>>%
-				<<if _priorities[0].weight < 1>>below
-				<<else>>above
-				<</if>>
-				 the targeted size.
-			<</if>>
-			<<break>>
-		<<elseif _priorities.length > 0>>
-			<<if $args[0].drugs != _priorities[0].drug>>
-				<<set $args[0].drugs = _priorities[0].drug>>
-				<br>$args[0].slaveName has been put on
-				<<if _combinedRule.growth.intensity && $args[0].drugs != "lip injections" && $args[0].health > 0>>
-					<<set $args[0].drugs = "intensive " + $args[0].drugs>>
-					$args[0].drugs, since she's healthy enough to take them, and
-				<<else>>
-					$args[0].drugs, since
-				<</if>>
-				that is the only part of her body that does not meet the targeted size.
-			<</if>>
-			<<break>>
-		<<elseif _tempAssetGrowthDrugs.includes($args[0].drugs)>>
-			<<set $args[0].drugs = "no drugs">>
-			<br>$args[0].slaveName's body has met all relevant growth targets, so her pharmaceutical regime has been ended.
-			<<break>>
-		<</if>>
-	<<else>>
-		<<if $arcologies[0].FSAssetExpansionistResearch == 1>>
-			<<set _hyper = "hyper ">>
-		<<else>>
-			<<set _hyper = "">>
-		<</if>>
-		<<if _combinedRule.growth.boobs != "no default setting">>
-			<<if $args[0].boobs < _combinedRule.growth.boobs>>
-				<<if $args[0].drugs != _hyper + "breast injections">>
-					<<set $args[0].drugs = _hyper + "breast injections">>
-					<br>$args[0].slaveName has been put on $args[0].drugs.
-				<</if>>
-				<<break>>
-			<</if>>
-		<</if>>
-		<<if _combinedRule.growth.butt != "no default setting">>
-			<<if $args[0].butt < _combinedRule.growth.butt>>
-				<<if $args[0].drugs != _hyper + "butt injections">>
-					<<set $args[0].drugs = _hyper + "butt injections">>
-					<br>$args[0].slaveName has been put on $args[0].drugs.
-				<</if>>
-				<<break>>
-			<</if>>
-		<</if>>
-		<<if _combinedRule.growth.lips != "no default setting">>
-			<<if $args[0].lips < _combinedRule.growth.lips>>
-				<<if $args[0].drugs != "lip injections">>
-					<<set $args[0].drugs = "lip injections">>
-					<br>$args[0].slaveName has been put on $args[0].drugs.
-				<</if>>
-				<<break>>
-			<</if>>
-		<</if>>
-		<<if _combinedRule.growth.dick != "no default setting">>
-			<<if $args[0].dick>>
-			<<if $args[0].dick < _combinedRule.growth.dick>>
-				<<if $args[0].drugs != _hyper + "penis enhancement">>
-					<<set $args[0].drugs = _hyper + "penis enhancement">>
-					<br>$args[0].slaveName has been put on $args[0].drugs.
-				<</if>>
-				<<break>>
-			<</if>>
-			<</if>>
-		<</if>>
-		<<if _combinedRule.growth.balls != "no default setting">>
-			<<if $args[0].balls>>
-			<<if $args[0].balls < _combinedRule.growth.balls>>
-				<<if $args[0].drugs != _hyper + "testicle enhancement">>
-					<<set $args[0].drugs = _hyper + "testicle enhancement">>
-					<br>$args[0].slaveName has been put on $args[0].drugs.
-				<</if>>
-				<<break>>
-			<</if>>
-			<</if>>
-		<</if>>
-		<<if $arcologies[0].FSSlimnessEnthusiastResearch == 1>>
-			<<if _combinedRule.growth.boobs != "no default setting">>
-				<<if $args[0].boobs-$args[0].boobsImplant > _combinedRule.growth.boobs+200 && $args[0].weight < 100>>
-					<<if $args[0].drugs != "breast redistributors">>
-						<<set $args[0].drugs = "breast redistributors">>
-						<br>$args[0].slaveName has been put on $args[0].drugs.
-					<</if>>
-					<<break>>
-				<</if>>
-			<</if>>
-			<<if _combinedRule.growth.butt != "no default setting">>
-				<<if Math.trunc($args[0].butt-$args[0].buttImplant) > _combinedRule.growth.butt && $args[0].weight < 100>>
-					<<if $args[0].drugs != "butt redistributors">>
-						<<set $args[0].drugs = "butt redistributors">>
-						<br>$args[0].slaveName has been put on $args[0].drugs.
-					<</if>>
-					<<break>>
-				<</if>>
-			<</if>>
-			<<if _combinedRule.growth.lips != "no default setting">>
-				<<if $args[0].lips-$args[0].lipsImplant > _combinedRule.growth.lips>>
-					<<if $args[0].drugs != "lip atrophiers">>
-						<<set $args[0].drugs = "lip atrophiers">>
-						<br>$args[0].slaveName has been put on $args[0].drugs.
-					<</if>>
-					<<break>>
-				<</if>>
-			<</if>>
-			<<if _combinedRule.growth.dick != "no default setting">>
-				<<if $args[0].dick>>
-				<<if $args[0].dick > _combinedRule.growth.dick>>
-					<<if $args[0].drugs != "penis atrophiers">>
-						<<set $args[0].drugs = "penis atrophiers">>
-						<br>$args[0].slaveName has been put on $args[0].drugs.
-					<</if>>
-					<<break>>
-				<</if>>
-				<</if>>
-			<</if>>
-			<<if _combinedRule.growth.balls != "no default setting">>
-				<<if $args[0].balls>>
-				<<if $args[0].balls > _combinedRule.growth.balls>>
-					<<if $args[0].drugs != "testicle atrophiers">>
-						<<set $args[0].drugs = "testicle atrophiers">>
-						<br>$args[0].slaveName has been put on $args[0].drugs.
-					<</if>>
-					<<break>>
-				<</if>>
-				<</if>>
-			<</if>>
-		<</if>>
-		<<if (_tempAssetGrowthDrugs.includes($args[0].drugs))>>
-			<<set $args[0].drugs = "no drugs">>
-			<br>$args[0].slaveName has met all relevant growth targets, so her pharmaceutical regime has been ended.
-			<<break>>
-		<</if>>
-	<</if>>
-
-	<</for>>
-/* Closes single for loop for growth drugs. */
-
-/* Other Drugs */
-<<set _tempDrugsDrugs = ["psychosuppressants", "no drugs", "steroids", "hormone enhancers", "hormone blockers", "anti-aging cream", "growth stimulants", "sag-B-gone", "male hormone injections", "female hormone injections", "none"]>>
-<<if _tempDrugsDrugs.includes(_combinedRule.drug)>>
-	<<if _tempDrugsDrugs.includes($args[0].drugs) && ($args[0].drugs != _combinedRule.drug)>>
-		<<switch _combinedRule.drug>>
-		<<case "anti-aging cream">>
-			<<if $args[0].visualAge > 18>>
-				<<set $args[0].drugs = _combinedRule.drug >>
-				<br> $args[0].slaveName has been put on $args[0].drugs.
-			<<else>>
-				<<set $args[0].drugs = "no drugs" >>
-				<br> $args[0].slaveName cannot benefit from her assigned drug and has been defaulted to $args[0].drugs.
-			<</if>>
-		<<case "growth stimulants">>
-			<<if $args[0].height < 274 && $args[0].height < Math.clamp((Height.mean($args[0]) * 1.25),0,274)>>
-				<<set $args[0].drugs = _combinedRule.drug >>
-				<br> $args[0].slaveName has been put on $args[0].drugs.
-			<<else>>
-				<<set $args[0].drugs = "no drugs" >>
-				<br> $args[0].slaveName cannot benefit from her assigned drug and has been defaulted to $args[0].drugs.
-			<</if>>
-		<<case "sag-B-gone">>
-			<<if $args[0].boobs > 250 && $args[0].boobShape != "saggy">>
-				<<set $args[0].drugs = _combinedRule.drug >>
-				<br> $args[0].slaveName has been put on $args[0].drugs.
-			<<else>>
-				<<set $args[0].drugs = "no drugs" >>
-				<br> $args[0].slaveName cannot benefit from her assigned drug and has been defaulted to $args[0].drugs.
-			<</if>>
-		<<case "female hormone injections">>
-			<<if $args[0].breedingMark != 1 && ($args[0].ovaries == 1 || $args[0].mpreg == 1) && $args[0].pubertyXX == 0>>
-				<<set $args[0].drugs = _combinedRule.drug >>
-				<br> $args[0].slaveName has been put on $args[0].drugs.
-			<<else>>
-				<<set $args[0].drugs = "no drugs" >>
-				<br> $args[0].slaveName cannot benefit from her assigned drug and has been defaulted to $args[0].drugs.
-			<</if>>
-		<<case "male hormone injections">>
-			<<if $args[0].breedingMark != 1 && $args[0].balls > 0 && $args[0].pubertyXY == 0>>
-				<<set $args[0].drugs = _combinedRule.drug >>
-				<br> $args[0].slaveName has been put on $args[0].drugs.
-			<<else>>
-				<<set $args[0].drugs = "no drugs" >>
-				<br> $args[0].slaveName cannot benefit from her assigned drug and has been defaulted to $args[0].drugs.
-			<</if>>
-		<<default>>
-			<<set $args[0].drugs = _combinedRule.drug >>
-			<br> $args[0].slaveName has been put on $args[0].drugs.
-		<</switch>>
-	<</if>>
-<</if>>
-
-/* Diet Setting */
-<<if (def _combinedRule.diet) && (_combinedRule.diet !== "no default setting")>>
-	<<if (_combinedRule.dietGrowthSupport == 1) && (($args[0].drugs == "breast injections") || ($args[0].drugs == "butt injections")) && ($args[0].weight <= 95)>>
-		<<if $args[0].diet !== "fattening">>
-			<<set $args[0].diet = "fattening">>
-			<br>$args[0].slaveName is on drugs designed to expand major body parts, so she's been put on a fattening diet to provide her body as much fuel for growth as possible.
-		<</if>>
-	<<else>>
-		<<if (!(isNaN(_combinedRule.diet)))>>
-			<<if ($args[0].weight > _combinedRule.diet)>>
-				<<if ($args[0].diet !== "restricted")>>
-					<<set $args[0].diet = "restricted">>
-					<br>$args[0].slaveName is too fat so her diet has been set to restricted.
-				<</if>>
-				<<if ($arcologies[0].FSSlimnessEnthusiastResearch == 1 && ($args[0].drugs == "no drugs" || $args[0].drugs == "none"))>>
-					<<set $args[0].drugs = "appetite suppressors">>
-					<br>$args[0].slaveName is too fat so she will be given weight loss pills.
-				<</if>>
-			<<elseif ($args[0].weight < _combinedRule.diet)>>
-				<<if ($args[0].diet !== "fattening")>>
-					<<set $args[0].diet = "fattening">>
-					<br>$args[0].slaveName is too skinny so her diet has been set to fattening.
-				<</if>>
-				<<if ($args[0].drugs == "appetite suppressors")>>
-					<<set $args[0].drugs = "no drugs">>
-					<br>$args[0].slaveName is too skinny so she will no longer be given weight loss pills.
-				<</if>>
-			<<elseif (def _combinedRule.muscles) && (_combinedRule.muscles !== "no default setting") && ($args[0].amp != 1)>>
-				<<if ($args[0].muscles >= _combinedRule.muscles+8)>>
-					<<if ($args[0].diet !== "slimming")>>
-						<<set $args[0].diet = "slimming">>
-						<br>$args[0].slaveName has been put on a slimming exercise regime.
-					<</if>>
-				<<elseif ($args[0].muscles <= _combinedRule.muscles-2)>>
-					<<if ($args[0].diet !== "muscle building")>>
-						<<set $args[0].diet = "muscle building">>
-						<br>$args[0].slaveName has been put on a muscle building exercise regime.
-					<</if>>
-				<<else>>
-					<<if ($args[0].diet !== "healthy")>>
-						<<set $args[0].diet = "healthy">>
-						<br>$args[0].slaveName is at the target weight, so her diet has been normalized.
-					<</if>>
-				<</if>>
-			<<else>>
-				<<if ($args[0].diet !== "healthy")>>
-					<<set $args[0].diet = "healthy">>
-					<br>$args[0].slaveName is at the target weight, so her diet has been normalized.
-				<</if>>
-				<<if ($args[0].drugs == "appetite suppressors")>>
-					<<set $args[0].drugs = "no drugs">>
-					<br>$args[0].slaveName is at the target weight, so she will no longer be given weight loss pills.
-				<</if>>
-			<</if>>
-		<<elseif (_combinedRule.diet == "attractive")>>
-			<<if (($args[0].weight > 95) || (($args[0].weight > 30) && ($args[0].hips < 2)))>>
-				<<if ($args[0].diet !== "restricted")>>
-					<<set $args[0].diet = "restricted">>
-					<br>$args[0].slaveName is too fat so her diet has been set to restricted.
-				<</if>>
-				<<if ($arcologies[0].FSSlimnessEnthusiastResearch == 1 && ($args[0].drugs == "no drugs" || $args[0].drugs == "none"))>>
-					<<set $args[0].drugs = "appetite suppressors">>
-					<br>$args[0].slaveName is too fat so she will be given weight loss pills.
-				<</if>>
-			<<elseif (($args[0].weight < -95) || (($args[0].weight < -30) && ($args[0].hips > -2)))>>
-				<<if ($args[0].diet !== "fattening")>>
-					<<set $args[0].diet = "fattening">>
-					<br>$args[0].slaveName is too skinny so her diet has been set to fattening.
-				<</if>>
-				<<if ($args[0].drugs == "appetite suppressors")>>
-					<<set $args[0].drugs = "no drugs">>
-					<br>$args[0].slaveName is too skinny so she will no longer be given weight loss pills.
-				<</if>>
-			<<elseif (def _combinedRule.muscles) && (_combinedRule.muscles !== "no default setting") && ($args[0].amp != 1)>>
-				<<if ($args[0].muscles >= _combinedRule.muscles+8)>>
-					<<if ($args[0].diet !== "slimming")>>
-						<<set $args[0].diet = "slimming">>
-						<br>$args[0].slaveName has been put on a slimming exercise regime.
-					<</if>>
-				<<elseif ($args[0].muscles <= _combinedRule.muscles-2)>>
-					<<if ($args[0].diet !== "muscle building")>>
-						<<set $args[0].diet = "muscle building">>
-						<br>$args[0].slaveName has been put on a muscle building exercise regime.
-					<</if>>
-				<<else>>
-					<<if ($args[0].diet !== "healthy")>>
-						<<set $args[0].diet = "healthy">>
-						<br>$args[0].slaveName is at the target weight, so her diet has been normalized.
-					<</if>>
-					<<if ($args[0].drugs == "appetite suppressors")>>
-						<<set $args[0].drugs = "no drugs">>
-						<br>$args[0].slaveName is at the target weight, so she will no longer be given weight loss pills.
-					<</if>>
-				<</if>>
-			<<else>>
-				<<if ($args[0].diet !== "healthy")>>
-					<<set $args[0].diet = "healthy">>
-					<br>$args[0].slaveName is at the target weight, so her diet has been normalized.
-				<</if>>
-				<<if ($args[0].drugs == "appetite suppressors")>>
-					<<set $args[0].drugs = "no drugs">>
-					<br>$args[0].slaveName is at the target weight, so she will no longer be given weight loss pills.
-				<</if>>
-			<</if>>
-		<<elseif (_combinedRule.diet == "XX")>>
-			<<if ($args[0].diet !== "XX")>>
-				<<set $args[0].diet = "XX">>
-				<br>$args[0].slaveName has been put on a diet that favors feminine development.
-			<</if>>
-		<<elseif (_combinedRule.diet == "XY")>>
-			<<if ($args[0].diet !== "XY")>>
-				<<set $args[0].diet = "XY">>
-				<br>$args[0].slaveName has been put on a diet that favors masculine development.
-			<</if>>
-		<<elseif (_combinedRule.diet == "XXY")>>
-			<<if $args[0].balls > 0 && ($args[0].ovaries == 1 || $args[0].mpreg == 1)>>
-				<<if ($args[0].diet !== "XXY")>>
-					<<set $args[0].diet = "XXY">>
-					<br>$args[0].slaveName has been put on a diet that enhances a herm's unique sexuality.
-				<</if>>
-			<<else>>
-				<<if ($args[0].diet !== "healthy")>>
-					<<set $args[0].diet = "healthy">>
-					<br>$args[0].slaveName has been put on a standard diet since she is not a hermaphrodite.
-				<</if>>
-			<</if>>
-		<<elseif (_combinedRule.diet == "cleansing")>>
-			<<if (($args[0].diet !== "cleansing") && ($args[0].health < 100))>>
-				<<set $args[0].diet = "cleansing">>
-				<br>$args[0].slaveName has been put on a diet of cleansers.
-			<</if>>
-		<<elseif (_combinedRule.diet == "fertility")>>
-			<<if canGetPregnant($args[0])>>
-				<<if ($args[0].diet !== "fertility")>>
-					<<set $args[0].diet = "fertility">>
-					<br>$args[0].slaveName has been put on a diet to enhance fertility.
-				<</if>>
-			<<else>>
-				<<if ($args[0].diet !== "healthy")>>
-					<<set $args[0].diet = "healthy">>
-					<<if $args[0].pregKnown == 0 && $args[0].preg > 0>>
-						<br>$args[0].slaveName has been put on a standard diet since tests reveal she has become pregnant.
-						<<set $args[0].pregKnown = 1>>
-					<<else>>
-						<br>$args[0].slaveName has been put on a standard diet since she is currently unable to become pregnant.
-					<</if>>
-				<</if>>
-			<</if>>
-		<<elseif (_combinedRule.diet == "cum production")>>
-			<<if ($args[0].balls > 0)>>
-				<<if ($args[0].diet !== "cum production")>>
-					<<set $args[0].diet = "cum production">>
-					<br>$args[0].slaveName has been put on a diet to promote cum production.
-				<</if>>
-			<<else>>
-				<<if ($args[0].diet !== "healthy")>>
-					<<set $args[0].diet = "healthy">>
-					<br>$args[0].slaveName has been put on a standard diet since she is no longer able to produce cum.
-				<</if>>
-			<</if>>
-		<</if>>
-	<</if>>
-<<elseif (def _combinedRule.muscles) && (_combinedRule.muscles !== "no default setting") && ($args[0].amp != 1)>> /* no diet rule, muscles only */
-	<<if ($args[0].muscles >= _combinedRule.muscles+8)>>
-		<<if ($args[0].diet !== "slimming")>>
-			<<set $args[0].diet = "slimming">>
-			<br>$args[0].slaveName has been put on a slimming exercise regime.
-		<</if>>
-	<<elseif ($args[0].muscles <= _combinedRule.muscles-2)>>
-		<<if ($args[0].diet !== "muscle building")>>
-			<<set $args[0].diet = "muscle building">>
-			<br>$args[0].slaveName has been put on a muscle building exercise regime.
-		<</if>>
-	<<else>>
-		<<if ($args[0].diet !== "healthy")>>
-			<<set $args[0].diet = "healthy">>
-			<br>$args[0].slaveName has achieved the target musculature, so her exercise regime has been normalized.
-		<</if>>
-	<</if>>
-<</if>>
-
-/* <-------------------------------------------------------------- End of Drugs ----------------------------------------------------------------------------------------------> */
-
-<<if (def _combinedRule.curatives) && (_combinedRule.curatives != "no default setting")>>
-<<if $args[0].curatives != _combinedRule.curatives>>
-	<<if _combinedRule.curatives == 2>>
-		<<if $args[0].health > 100>>
-			<<if ($args[0].curatives != 1)>>
-			<br>$args[0].slaveName has been	put on preventatives, since curatives cannot improve her health further.
-			<<set $args[0].curatives = 1>>
-			<</if>>
-		<<else>>
-			<br>$args[0].slaveName has been	put on curatives.
-			<<set $args[0].curatives = _combinedRule.curatives>>
-		<</if>>
-	<<else>>
-		<br>$args[0].slaveName has been	<<if _combinedRule.curatives > 0>>put on preventatives<<else>>taken off health drugs<</if>>.
-		<<set $args[0].curatives = _combinedRule.curatives>>
-	<</if>>
-<</if>>
-<</if>>
-
-<<if (def _combinedRule.aphrodisiacs) && (_combinedRule.aphrodisiacs != "no default setting")>>
-<<if $args[0].aphrodisiacs != _combinedRule.aphrodisiacs>>
-	<br>$args[0].slaveName has been	<<if _combinedRule.aphrodisiacs > 0>>put on the proper<<else>>taken off<</if>> aphrodisiacs.
-	<<set $args[0].aphrodisiacs = _combinedRule.aphrodisiacs>>
-<</if>>
-<</if>>
-
-<<if ($args[0].dick > 0)>>
-<<if ($args[0].balls == 0)>>
-<<if (def _combinedRule.gelding) && (_combinedRule.gelding !== "no default setting")>>
-<<if ($args[0].hormones !== _combinedRule.gelding)>>
-	<<set _oldHormones = $args[0].hormones, $args[0].hormones = _combinedRule.gelding>>
-	<<if $args[0].indentureRestrictions >= 2>>
-		<<set $args[0].hormones = Math.clamp($args[0].hormones, -1, 1)>>
-	<</if>>
-	<<if $args[0].hormones != _oldHormones>>
-		<br>$args[0].slaveName is a gelding, so she has been put on the appropriate hormonal regime.
-	<</if>>
-<</if>>
-<</if>>
-<<elseif ($args[0].balls > 0)>>
-<<if (def _combinedRule.XY) && (_combinedRule.XY !== "no default setting")>>
-<<if ($args[0].hormones !== _combinedRule.XY)>>
-<<if ($args[0].assignment != "recruit girls")>>
-<<if ($args[0].assignment != "be the Wardeness")>>
-<<if ($args[0].assignment != "be the Madam")>>
-	<<set _oldHormones = $args[0].hormones, $args[0].hormones = _combinedRule.XY>>
-	<<if $args[0].indentureRestrictions >= 2>>
-		<<set $args[0].hormones = Math.clamp($args[0].hormones, -1, 1)>>
-	<</if>>
-	<<if $args[0].hormones != _oldHormones>>
-		<br>$args[0].slaveName is a shemale, so she has been put on the appropriate hormonal regime.
-	<</if>>
-<</if>>
-<</if>>
-<</if>>
-<</if>>
-<</if>>
-<</if>>
-<</if>>
-
-<<if ($args[0].vagina > -1) && ($args[0].dick == 0) && (def _combinedRule.XX) && (_combinedRule.XX !== "no default setting")>>
-	<<if ($args[0].hormones !== _combinedRule.XX)>>
-		<<set _oldHormones = $args[0].hormones, $args[0].hormones = _combinedRule.XX>>
-		<<if $args[0].indentureRestrictions >= 2>>
-			<<set $args[0].hormones = Math.clamp($args[0].hormones, -1, 1)>>
-		<</if>>
-		<<if $args[0].hormones != _oldHormones>>
-			<br>$args[0].slaveName is a female, so she has been put on the appropriate hormonal regime.
-		<</if>>
-	<</if>>
-<</if>>
-
-<<if $args[0].pregKnown == 1 && _combinedRule.pregSpeed != "nds" && $args[0].breedingMark != 1 && $args[0].indentureRestrictions < 1 && $args[0].broodmother == 0>>
-	<<if _combinedRule.pregSpeed == "slow" && $args[0].preg < 35>>
-		<<set $args[0].pregControl = "slow gestation">>
-		<br>$args[0].slaveName is pregnant, so she has been put on the gestation slowing agents.
-	<<elseif _combinedRule.pregSpeed == "fast" && $args[0].preg < 35 && $args[0].health > -50>>
-		<<set $args[0].pregControl = "speed up">>
-		<br>$args[0].slaveName is pregnant, so she has been put on rapid gestation  agents. CAUTION! Can be dangerous. Clinic supervision is recommended.
-	<<elseif _combinedRule.pregSpeed == "suppress" && $args[0].preg > 34 && $args[0].health > -50>>
-		<<set $args[0].pregControl = "labor supressors">>
-		<br>$args[0].slaveName is ready to birth, so she has been put on labor suppressing agents.
-	<<elseif _combinedRule.pregSpeed == "stimulate" && $args[0].preg >= 37 && $args[0].health > -50>>
-		<<set $args[0].labor = 1,$args[0].induce = 1,$birthee = 1>>
-		<br>$args[0].slaveName is ready to birth, so her labor has been stimulated.
-	<<elseif _combinedRule.pregSpeed == "fast" && $args[0].pregControl == "speed up" && $args[0].health <= -50>>
-		<<set $args[0].pregControl = "none">>
-		<br>$args[0].slaveName is on rapid gestation agents and dangerously unhealthy, so her agent regimen has been stopped.
-	<<elseif _combinedRule.pregSpeed == "suppress" && $args[0].pregControl == "labor supressors" && $args[0].health <= -50>>
-		<<set $args[0].pregControl = "none">>
-		<br>$args[0].slaveName is on labor suppression agents and unhealthy, so her agent regimen has been stopped.
-	<</if>>
-<</if>>
-
-<<if $args[0].fuckdoll == 0>>
-
-<<if (def _combinedRule.livingRules) && (_combinedRule.livingRules !== "no default setting")>>
-<<if setup.facilityCareers.includes($args[0].assignment)>>
-	<br>$args[0].slaveName's living standards are controlled by her assignment.
-<<elseif (($args[0].assignment == "be your Head Girl") && ($HGSuite == 1)) || (($args[0].assignment == "guard you") && ($dojo > 1))>>
-	<br>$args[0].slaveName has a private room.
-<<elseif ($args[0].fetish == "mindbroken")>>
-	<<if ($args[0].livingRules !== "spare")>>
-	<<set $args[0].livingRules = "spare">>
-	<br>Since $args[0].slaveName is mindbroken her living standard has been set to spare.
-	<</if>>
-<<elseif $args[0].livingRules !== _combinedRule.livingRules>>
-	<<if _combinedRule.livingRules !== "luxurious">>
-		<<if $roomsPopulation <= $rooms-0.5>>
-			<<set $args[0].livingRules = _combinedRule.livingRules>>
-			<br>$args[0].slaveName's living standard has been set to _combinedRule.livingRules.
-			<<if $args[0].relationship >= 4>><<set $roomsPopulation += 0.5>><<else>><<set $roomsPopulation += 1>><</if>>
-		<<else>>
-			<<set $args[0].livingRules = "normal">>
-			<br>$args[0].slaveName's living standard has been set to normal, since there is no room for her to occupy.
-		<</if>>
-	<<else>>
-		<<set $args[0].livingRules = _combinedRule.livingRules>>
-		<br>$args[0].slaveName's living standard has been set to _combinedRule.livingRules.
-	<</if>>
-<</if>>
-<</if>>
-
-<<if (def _combinedRule.speechRules) && (_combinedRule.speechRules !== "no default setting")>>
-<<if ($args[0].fetish == "mindbroken")>>
-	<<if ($args[0].speechRules !== "restrictive")>>
-	<<set $args[0].speechRules = "restrictive">>
-	<br>Since $args[0].slaveName is mindbroken her speech rules have been set to restrictive.
-	<</if>>
-<<elseif ($args[0].speechRules !== _combinedRule.speechRules)>>
-	<<set $args[0].speechRules = _combinedRule.speechRules>>
-	<br>$args[0].slaveName's speech rules have been set to _combinedRule.speechRules.
-<</if>>
-<</if>>
-
-<<if ($args[0].fetish !== "mindbroken")>>
- <<if (def _combinedRule.relationshipRules) && (_combinedRule.relationshipRules !== "no default setting")>>
- <<if ($args[0].relationshipRules !== _combinedRule.relationshipRules )>>
- 	<<set $args[0].relationshipRules = _combinedRule.relationshipRules >>
- 	<br>$args[0].slaveName's relationship rules have been set to _combinedRule.relationshipRules.
- <</if>>
- <</if>>
-<</if>>
-
-<<if (def _combinedRule.releaseRules) && (_combinedRule.releaseRules !== "no default setting")>>
-	<<set _release = 0>>
-	<<if (_combinedRule.releaseRules == "restrictive")>>
-		<<if ($args[0].assignment != "serve the public")>>
-		<<if ($args[0].assignment != "serve in the club")>>
-		<<if ($args[0].assignment != "whore")>>
-		<<if ($args[0].assignment != "work in the brothel")>>
-		<<if ($args[0].assignment != "please you")>>
-		<<if ($args[0].assignment != "serve in the master suite")>>
-		<<if ($args[0].assignment != "be a subordinate slave")>>
-		<<if ($args[0].assignment != "work a glory hole")>>
-		<<if ($args[0].assignment != "be confined in the arcade")>>
-		<<if ($args[0].assignment != "get milked") || (($args[0].fetish != "boobs") || ($args[0].energy <= 95))>>
-		<<if ($args[0].assignment != "work in the dairy") || (($args[0].fetish != "boobs") || ($args[0].energy <= 95))>>
-		<<if ($args[0].assignment != "get milked") || $args[0].balls == 0>>
-		<<if ($args[0].assignment != "work in the dairy") || $args[0].balls == 0>>
-		<<if ($args[0].assignment != "be your Head Girl")>>
-			<<set _release = 1>>
-		<</if>>
-		<</if>>
-		<</if>>
-		<</if>>
-		<</if>>
-		<</if>>
-		<</if>>
-		<</if>>
-		<</if>>
-		<</if>>
-		<</if>>
-		<</if>>
-		<</if>>
-		<</if>>
-	<<else>>
-		<<set _release = 1>>
-	<</if>>
-	<<if ($args[0].fetish == "mindbroken") && ($args[0].releaseRules !== "permissive")>>
-		<<set $args[0].releaseRules = "permissive">>
-		<br>Since $args[0].slaveName is mindbroken her masturbation rules have been set to permissive.
-	<<elseif ($args[0].amp === 1 || $args[0].fuckdoll > 0) && ($args[0].releaseRules === "masturbation")>>
-		<<set $args[0].releaseRules = "restrictive">>
-		<br>Since $args[0].slaveName is unable to masturbate, her masturbation rules have been set to restrictive.
-	<<elseif (_release != 0) && ($args[0].releaseRules !== _combinedRule.releaseRules)>>
-	  <<set $args[0].releaseRules = _combinedRule.releaseRules>>
-	  <br>$args[0].slaveName's masturbation rules have been set to _combinedRule.releaseRules.
-	<</if>>
-<</if>>
-
-<<if (def _combinedRule.standardPunishment) && (_combinedRule.standardPunishment !== "no default setting")>>
- <<if ($args[0].standardPunishment !== _combinedRule.standardPunishment)>>
- 	<<set $args[0].standardPunishment = _combinedRule.standardPunishment >>
- 	<br>$args[0].slaveName's typical punishment has been updated to _combinedRule.standardPunishment.
- <</if>>
-<</if>>
-
-<<if (def _combinedRule.standardReward) && (_combinedRule.standardReward !== "no default setting")>>
- <<if ($args[0].standardReward !== _combinedRule.standardReward)>>
- 	<<set $args[0].standardReward = _combinedRule.standardReward >>
- 	<br>$args[0].slaveName's typical reward has been updated to _combinedRule.standardReward.
- <</if>>
-<</if>>
-
-<</if>> /* CLOSES FUCKDOLL CHECK */
-
-<<if (def _combinedRule.dietCum) && (_combinedRule.dietCum !== "no default setting")>>
-	<<if $args[0].dietCum != _combinedRule.dietCum>>
-		<<set $args[0].dietCum = _combinedRule.dietCum>>
-		<<if $args[0].dietCum == 2>>
-			<br>$args[0].slaveName has been put on a diet based on cum.
-			<<set $args[0].dietMilk = 0>>
-		<<elseif $args[0].dietCum == 1>>
-			<br>$args[0].slaveName has had cum added to her diet.
-		<<else>>
-			<br>$args[0].slaveName has had cum removed from her diet.
-		<</if>>
-	<</if>>
-<</if>>
-
-<<if (def _combinedRule.dietMilk) && (_combinedRule.dietMilk !== "no default setting")>>
-	<<if $args[0].dietMilk != _combinedRule.dietMilk>>
-		<<set $args[0].dietMilk = _combinedRule.dietMilk>>
-		<<if $args[0].dietMilk == 2>>
-			<br>$args[0].slaveName has been put on a diet based on human milk.
-			<<set $args[0].dietCum = 0>>
-		<<elseif $args[0].dietMilk == 1>>
-			<br>$args[0].slaveName has had human milk added to her diet.
-		<<else>>
-			<br>$args[0].slaveName has had human milk removed from her diet.
-		<</if>>
-	<</if>>
-<</if>>
-
-<<if (def _combinedRule.teeth) && (_combinedRule.teeth !== "no default setting")>>
-  <<if (_combinedRule.teeth == "universal")>>
-	<<if ($args[0].teeth == "crooked")>>
-		<<set $args[0].teeth = "straightening braces">>
-		<<set $cash -= $surgeryCost>>
-		<br>$args[0].slaveName has been given braces for her crooked teeth.
-	<<elseif ($args[0].teeth == "normal")>>
-		<<set $args[0].teeth = "cosmetic braces">>
-		<<set $cash -= $surgeryCost>>
-		<br>$args[0].slaveName has been given cosmetic braces.
-	<</if>>
-  <<elseif (_combinedRule.teeth == "straighten")>>
-	<<if ($args[0].teeth == "crooked")>>
-		<<set $args[0].teeth = "straightening braces">>
-		<<set $cash -= $surgeryCost>>
-		<br>$args[0].slaveName has been given braces for her crooked teeth.
-	<<elseif ($args[0].teeth == "cosmetic braces")>>
-		<<set $args[0].teeth = "normal">>
-		<br>$args[0].slaveName has gotten her braces off, since her teeth are straight.
-	<</if>>
-  <<elseif (_combinedRule.teeth == "none")>>
-	<<if ($args[0].teeth == "straightening braces")>>
-		<<set $args[0].teeth = "crooked">>
-		<br>$args[0].slaveName has gotten her braces off.
-	<<elseif ($args[0].teeth == "cosmetic braces")>>
-		<<set $args[0].teeth = "normal">>
-		<br>$args[0].slaveName has gotten her braces off.
-	<</if>>
-	<</if>>
-<</if>>
-
-<<if (def _combinedRule.eyeColor) && (_combinedRule.eyeColor !== "no default setting")>>
-<<if ($args[0].eyeColor !== _combinedRule.eyeColor)>>
-    <<set $args[0].eyeColor = _combinedRule.eyeColor>>
-    <<set $cash -= $modCost>>
-    <br>$args[0].slaveName has been given $args[0].eyeColor contact lenses.
-<</if>>
-<</if>>
-
-<<if (def _combinedRule.makeup) && (_combinedRule.makeup !== "no default setting")>>
-<<if ($args[0].makeup !== _combinedRule.makeup)>>
-    <<set $args[0].makeup = _combinedRule.makeup>>
-    <<set $cash -= $modCost>>
-    <br>$args[0].slaveName has been assigned the standard makeup.
-<</if>>
-<</if>>
-
-<<if ($args[0].amp != 1)>>
-<<if (def _combinedRule.nails) && (_combinedRule.nails !== "no default setting")>>
-<<if ($args[0].nails !== _combinedRule.nails)>>
-    <<set $args[0].nails = _combinedRule.nails>>
-    <<set $cash -= $modCost>>
-    <br>$args[0].slaveName has been assigned the standard nails.
-<</if>>
-<</if>>
-<</if>>
-
-<<if (def _combinedRule.hColor) && (_combinedRule.hColor !== "no default setting")>>
-<<if $args[0].bald != 1>>
-<<if ($args[0].hColor !== _combinedRule.hColor)>>
-    <<set $args[0].hColor = _combinedRule.hColor>>
-    <<set $cash -= $modCost>>
-    <br>$args[0].slaveName's hair has been dyed _combinedRule.hColor.
-<</if>>
-<</if>>
-<</if>>
-
-<<if (def _combinedRule.hStyle) && (_combinedRule.hStyle !== "no default setting")>>
-<<if $args[0].bald != 1>>
-<<if ($args[0].hStyle !== _combinedRule.hStyle)>>
-    <<set $args[0].hStyle = _combinedRule.hStyle>>
-    <<set $cash -= $modCost>>
-    <<if (_combinedRule.hStyle == "shaved")>>
-        <<set $args[0].hLength = 0>>
-        <br>$args[0].slaveName's hair has been shaved.
-    <<else>>
-        <br>$args[0].slaveName's hair has been restyled.
-    <</if>>
-<</if>>
-<</if>>
-<</if>>
-
-<<if (def _combinedRule.hLength) && (_combinedRule.hLength !== "no default setting")>>
-<<if $args[0].bald != 1>>
-<<if ($args[0].hLength !== _combinedRule.hLength)>>
-<<if ($args[0].hLength > _combinedRule.hLength)>>
-	<<set $cash -= $modCost>>
-	<br>$args[0].slaveName's hair has been cut; it
-<<else>>
-	<<set $cash -= $modCost*Math.trunc((_combinedRule.hLength-$args[0].hLength)/10)>>
-	<br>$args[0].slaveName has been given extensions; her hair
-<</if>>
-is now _combinedRule.hLength cm long.
-<<set $args[0].hLength = _combinedRule.hLength>>
-<</if>>
-<</if>>
-<</if>>
-
-<<if (def _combinedRule.pubicHColor) && (_combinedRule.pubicHColor !== "no default setting")>>
-<<if $args[0].pubicHStyle != "bald" && $args[0].pubicHStyle != "hairless">>
-<<if ($args[0].pubicHColor !== _combinedRule.pubicHColor)>>
-    <<set $args[0].pubicHColor = _combinedRule.pubicHColor>>
-    <<set $cash -= $modCost>>
-    <br>$args[0].slaveName's pubic hair, if present, has been dyed _combinedRule.pubicHColor.
-<</if>>
-<</if>>
-<</if>>
-
-<<if (def _combinedRule.pubicHStyle) && (_combinedRule.pubicHStyle !== "no default setting")>>
-<<if $args[0].pubicHStyle != "bald" && $args[0].pubicHStyle != "hairless">>
-<<if ($args[0].pubicHStyle !== _combinedRule.pubicHStyle)>>
-    <<set $args[0].pubicHStyle = _combinedRule.pubicHStyle>>
-    <<set $cash -= $modCost>>
-    <br>$args[0].slaveName's pubic hair has been restyled; it is now _combinedRule.pubicHStyle.
-<</if>>
-<</if>>
-<</if>>
-
-<<if (def _combinedRule.underArmHColor) && (_combinedRule.underArmHColor !== "no default setting")>>
-<<if $args[0].underArmHStyle != "bald" && $args[0].underArmHStyle != "hairless">>
-<<if ($args[0].underArmHColor !== _combinedRule.underArmHColor)>>
-	<<set $args[0].underArmHColor = _combinedRule.underArmHColor>>
-	<<set $cash -= $modCost>>
-	<br>$args[0].slaveName's underarm hair, if present, has been dyed _combinedRule.underArmHColor.
-<</if>>
-<</if>>
-<</if>>
-
-<<if (def _combinedRule.underArmHStyle) && (_combinedRule.underArmHStyle !== "no default setting")>>
-<<if $args[0].underArmHStyle != "bald" && $args[0].underArmHStyle != "hairless">>
-<<if ($args[0].underArmHStyle !== _combinedRule.underArmHStyle)>>
-	<<set $args[0].underArmHStyle = _combinedRule.underArmHStyle>>
-	<<set $cash -= $modCost>>
-	<br>$args[0].slaveName's underarm hair has been restyled; it is now _combinedRule.underArmHStyle.
-<</if>>
-<</if>>
-<</if>>
-
-<<if (def _combinedRule.nipplesPiercing) && (_combinedRule.nipplesPiercing !== "no default setting")>>
-<<if ($args[0].nipplesPiercing !== _combinedRule.nipplesPiercing)>>
-    <<if (_combinedRule.nipplesPiercing == 0)>>
-        <<set $args[0].nipplesPiercing = 0>>
-        <br>$args[0].slaveName's nipple piercings have been removed.
-    <<elseif $args[0].nipples != "fuckable">>
-        <<set $args[0].nipplesPiercing = _combinedRule.nipplesPiercing>>
-        <<set $cash -= $modCost>>
-        <br>$args[0].slaveName's nipples have been pierced.
-	<<else>>
-		 <br>$args[0].slaveName's nipples are inverted and cannot be pierced.
-    <</if>>
-<</if>>
-<</if>>
-
-<<if (def _combinedRule.areolaePiercing) && (_combinedRule.areolaePiercing !== "no default setting")>>
-<<if ($args[0].areolaePiercing !== _combinedRule.areolaePiercing)>>
-    <<if (_combinedRule.areolaePiercing == 0)>>
-        <<set $args[0].areolaePiercing = 0>>
-        <br>$args[0].slaveName's areolae piercings have been removed.
-    <<else>>
-        <<set $args[0].areolaePiercing = _combinedRule.areolaePiercing>>
-        <<set $cash -= $modCost>>
-        <br>$args[0].slaveName's areolae have been given stud piercings.
-    <</if>>
-<</if>>
-<</if>>
-
-<<if (def _combinedRule.clitPiercing) && (_combinedRule.clitPiercing !== "no default setting")>>
-<<if ($args[0].clitPiercing !== _combinedRule.clitPiercing)>>
-    <<if (_combinedRule.clitPiercing == 0)>>
-        <<set $args[0].clitPiercing = 0>>
-        <<if $args[0].dick > 0>>
-            <br>$args[0].slaveName's frenulum piercing has been removed.
-        <<else>>
-            <br>$args[0].slaveName's clit piercing has been removed.
-        <</if>>
-
-    <<elseif ($args[0].vagina != -1) || ($args[0].dick != 0)>>
-        <<set $args[0].clitPiercing = _combinedRule.clitPiercing>>
-        <<if $args[0].dick > 0>>
-            <br>$args[0].slaveName's frenulum has been pierced.
-        <<else>>
-            <br>$args[0].slaveName's clit has been pierced.
-	<</if>>
-	<<if _combinedRule.clitPiercing == 3>>
-            <<set $cash -= 1000>>
-        <<else>>
-            <<set $cash -= $modCost>>
-        <</if>>
-    <</if>>
-<</if>>
-<</if>>
-
-<<if ($args[0].clitPiercing == 3)>>
-	<<set _used = 0>>
-	<<if (def _combinedRule.clitSetting) && (_combinedRule.clitSetting !== "no default setting")>>
-	<<if $args[0].clitSetting !== _combinedRule.clitSetting>>
-		<<set $args[0].clitSetting = _combinedRule.clitSetting, _used = 1>>
-		<br>$args[0].slaveName's smart piercing has been set to $args[0].clitSetting.
-	<<elseif $args[0].fetishStrength < 100>>
-		<<set _used = 1>>
-	<</if>>
-	<</if>>
-		<<if _used == 0>>
-		<<if (def _combinedRule.clitSettingEnergy) && (_combinedRule.clitSettingEnergy !== "no default setting")>>
-		<<if $args[0].energy < _combinedRule.clitSettingEnergy>>
-			<<if $args[0].clitSetting !== "all">>
-				<br>$args[0].slaveName's smart piercing has been set to enhance libido.
-			<</if>>
-			<<set $args[0].clitSetting = "all", _used = 1>>
-		<<elseif $args[0].energy >= _combinedRule.clitSettingEnergy + 10>>
-			<<if $args[0].clitSetting !== "none">>
-				<br>$args[0].slaveName's smart piercing has been set to suppress libido.
-			<</if>>
-			<<set $args[0].clitSetting = "none", _used = 1>>
-		<</if>>
-		<</if>>
-	<</if>>
-	<<if _used == 0>>
-		<<if (def _combinedRule.clitSettingXY) && (_combinedRule.clitSettingXY !== "no default setting")>>
-		<<if $args[0].attrXY < _combinedRule.clitSettingXY>>
-			<<if $args[0].clitSetting !== "men">>
-				<br>$args[0].slaveName's smart piercing has been set to encourage attraction to men.
-			<</if>>
-			<<set $args[0].clitSetting = "men", _used = 1>>
-		<<elseif $args[0].attrXY >= _combinedRule.clitSettingXY + 10>>
-			<<if $args[0].clitSetting !== "anti-men">>
-				<br>$args[0].slaveName's smart piercing has been set to discourage attraction to men.
-			<</if>>
-			<<set $args[0].clitSetting = "anti-men", _used = 1>>
-		<</if>>
-		<</if>>
-	<</if>>
-	<<if _used == 0>>
-		<<if (def _combinedRule.clitSettingXX) && (_combinedRule.clitSettingXX !== "no default setting")>>
-		<<if $args[0].attrXX < _combinedRule.clitSettingXX>>
-			<<if $args[0].clitSetting !== "women">>
-				<br>$args[0].slaveName's smart piercing has been set to encourage attraction to women.
-			<</if>>
-			<<set $args[0].clitSetting = "women", _used = 1>>
-		<<elseif $args[0].attrXX >= _combinedRule.clitSettingXX + 10>>
-			<<if $args[0].clitSetting !== "anti-women">>
-				<br>$args[0].slaveName's smart piercing has been set to discourage attraction to women.
-			<</if>>
-			<<set $args[0].clitSetting = "anti-women", _used = 1>>
-		<</if>>
-		<</if>>
-	<</if>>
-<</if>>
-
-<<if ($args[0].vagina != -1)>>
-<<if (def _combinedRule.vaginaPiercing) && (_combinedRule.vaginaPiercing !== "no default setting")>>
-<<if ($args[0].vaginaPiercing !== _combinedRule.vaginaPiercing)>>
-    <<if (_combinedRule.vaginaPiercing == 0)>>
-        <<set $args[0].vaginaPiercing = 0>>
-        <br>$args[0].slaveName's labia piercings have been removed.
-    <<else>>
-        <<set $args[0].vaginaPiercing = _combinedRule.vaginaPiercing>>
-        <<set $cash -= $modCost>>
-        <br>$args[0].slaveName's pussylips have been pierced.
-    <</if>>
-<</if>>
-<</if>>
-<</if>>
-
-<<if ($args[0].dick > 0)>>
-<<if (def _combinedRule.dickPiercing) && (_combinedRule.dickPiercing !== "no default setting")>>
-<<if ($args[0].dickPiercing !== _combinedRule.dickPiercing)>>
-    <<if (_combinedRule.dickPiercing == 0)>>
-        <<set $args[0].dickPiercing = 0>>
-        <br>$args[0].slaveName's shaft piercings have been removed.
-    <<else>>
-        <<set $args[0].dickPiercing = _combinedRule.dickPiercing>>
-        <<set $cash -= $modCost>>
-        <br>$args[0].slaveName's shaft has been pierced.
-    <</if>>
-<</if>>
-<</if>>
-<</if>>
-
-<<if (def _combinedRule.anusPiercing) && (_combinedRule.anusPiercing !== "no default setting")>>
-<<if ($args[0].anusPiercing !== _combinedRule.anusPiercing)>>
-    <<if (_combinedRule.anusPiercing == 0)>>
-        <<set $args[0].anusPiercing = 0>>
-        <br>$args[0].slaveName's asshole piercings have been removed.
-    <<else>>
-        <<set $args[0].anusPiercing = _combinedRule.anusPiercing>>
-        <<set $cash -= $modCost>>
-        <br>$args[0].slaveName's asshole has been pierced.
-    <</if>>
-<</if>>
-<</if>>
-
-<<if (def _combinedRule.lipsPiercing) && (_combinedRule.lipsPiercing !== "no default setting")>>
-<<if ($args[0].lipsPiercing !== _combinedRule.lipsPiercing)>>
-    <<if (_combinedRule.lipsPiercing == 0)>>
-        <<set $args[0].lipsPiercing = 0>>
-        <br>$args[0].slaveName's lip piercings have been removed.
-    <<else>>
-        <<set $args[0].lipsPiercing = _combinedRule.lipsPiercing>>
-        <<set $cash -= $modCost>>
-        <br>$args[0].slaveName's lips have been pierced.
-    <</if>>
-<</if>>
-<</if>>
-
-<<if (def _combinedRule.tonguePiercing) && (_combinedRule.tonguePiercing !== "no default setting")>>
-<<if ($args[0].tonguePiercing !== _combinedRule.tonguePiercing)>>
-    <<if (_combinedRule.tonguePiercing == 0)>>
-        <<set $args[0].tonguePiercing = 0>>
-        <br>$args[0].slaveName's tongue piercings have been removed.
-    <<else>>
-        <<set $args[0].tonguePiercing = _combinedRule.tonguePiercing>>
-        <<set $cash -= $modCost>>
-        <br>$args[0].slaveName's tongue has been pierced.
-    <</if>>
-<</if>>
-<</if>>
-
-<<if (def _combinedRule.earPiercing) && (_combinedRule.earPiercing !== "no default setting")>>
-<<if ($args[0].earPiercing !== _combinedRule.earPiercing)>>
-    <<if (_combinedRule.earPiercing == 0)>>
-        <<set $args[0].earPiercing = 0>>
-        <br>$args[0].slaveName's ear piercings have been removed.
-    <<else>>
-        <<set $args[0].earPiercing = _combinedRule.earPiercing>>
-        <<set $cash -= $modCost>>
-        <br>$args[0].slaveName's ears have been pierced.
-    <</if>>
-<</if>>
-<</if>>
-
-<<if (def _combinedRule.nosePiercing) && (_combinedRule.nosePiercing !== "no default setting")>>
-<<if ($args[0].nosePiercing !== _combinedRule.nosePiercing)>>
-    <<if (_combinedRule.nosePiercing == 0)>>
-        <<set $args[0].nosePiercing = 0>>
-        <br>$args[0].slaveName's nose piercing has been removed.
-    <<else>>
-        <<set $args[0].nosePiercing = _combinedRule.nosePiercing>>
-        <<set $cash -= $modCost>>
-        <br>$args[0].slaveName's nose has been pierced.
-    <</if>>
-<</if>>
-<</if>>
-
-<<if (def _combinedRule.eyebrowPiercing) && (_combinedRule.eyebrowPiercing !== "no default setting")>>
-<<if ($args[0].eyebrowPiercing !== _combinedRule.eyebrowPiercing)>>
-    <<if (_combinedRule.eyebrowPiercing == 0)>>
-        <<set $args[0].eyebrowPiercing = 0>>
-        <br>$args[0].slaveName's eyebrow piercings have been removed.
-    <<else>>
-        <<set $args[0].eyebrowPiercing = _combinedRule.eyebrowPiercing>>
-        <<set $cash -= $modCost>>
-        <br>$args[0].slaveName's eyebrows have been pierced.
-    <</if>>
-<</if>>
-<</if>>
-
-<<if (def _combinedRule.navelPiercing) && (_combinedRule.navelPiercing !== "no default setting")>>
-<<if ($args[0].navelPiercing !== _combinedRule.navelPiercing)>>
-    <<if (_combinedRule.navelPiercing == 0)>>
-        <<set $args[0].navelPiercing = 0>>
-        <br>$args[0].slaveName's navel piercing have been removed.
-    <<else>>
-        <<set $args[0].navelPiercing = _combinedRule.navelPiercing>>
-        <<set $cash -= $modCost>>
-        <br>$args[0].slaveName's navel has been pierced.
-    <</if>>
-<</if>>
-<</if>>
-
-<<if (def _combinedRule.corsetPiercing) && (_combinedRule.corsetPiercing !== "no default setting")>>
-<<if ($args[0].corsetPiercing !== _combinedRule.corsetPiercing)>>
-    <<if (_combinedRule.corsetPiercing == 0)>>
-        <<set $args[0].corsetPiercing = 0>>
-        <br>$args[0].slaveName's corset piercings have been removed.
-    <<else>>
-        <<set $args[0].corsetPiercing = _combinedRule.corsetPiercing>>
-        <<set $cash -= $modCost>>
-        <br>$args[0].slaveName has been given a set of corset piercings.
-    <</if>>
-<</if>>
-<</if>>
-
-<<if (def _combinedRule.boobsTat) && (_combinedRule.boobsTat !== "no default setting")>>
-<<if ($args[0].boobsTat !== _combinedRule.boobsTat)>>
-    <<set $args[0].boobsTat = _combinedRule.boobsTat>>
-    <<set $cash -= $modCost>>
-    <br>$args[0].slaveName's chest has been tattooed.
-<</if>>
-<</if>>
-
-<<if (def _combinedRule.buttTat) && (_combinedRule.buttTat !== "no default setting")>>
-<<if ($args[0].buttTat !== _combinedRule.buttTat)>>
-    <<set $args[0].buttTat = _combinedRule.buttTat>>
-    <<set $cash -= $modCost>>
-    <br>$args[0].slaveName's butt has been tattooed.
-<</if>>
-<</if>>
-
-<<if (def _combinedRule.vaginaTat) && (_combinedRule.vaginaTat !== "no default setting")>>
-<<if ($args[0].vaginaTat !== _combinedRule.vaginaTat)>>
-    <<set $args[0].vaginaTat = _combinedRule.vaginaTat>>
-    <<set $cash -= $modCost>>
-    <br>$args[0].slaveName's abdomen has been tattooed.
-<</if>>
-<</if>>
-
-<<if ($args[0].dick > 0)>>
-<<if (def _combinedRule.dickTat) && (_combinedRule.dickTat !== "no default setting")>>
-<<if ($args[0].dickTat !== _combinedRule.dickTat)>>
-    <<set $args[0].dickTat = _combinedRule.dickTat>>
-    <<set $cash -= $modCost>>
-    <br>$args[0].slaveName's dick has been tattooed.
-<</if>>
-<</if>>
-<</if>>
-
-<<if (def _combinedRule.lipsTat) && (_combinedRule.lipsTat !== "no default setting")>>
-<<if ($args[0].lipsTat !== _combinedRule.lipsTat)>>
-    <<set $args[0].lipsTat = _combinedRule.lipsTat>>
-    <<set $cash -= $modCost>>
-    <br>$args[0].slaveName's face has been tattooed.
-<</if>>
-<</if>>
-
-<<if (def _combinedRule.anusTat) && (_combinedRule.anusTat !== "no default setting")>>
-<<if ($args[0].anusTat !== _combinedRule.anusTat)>>
-    <<set $args[0].anusTat = _combinedRule.anusTat>>
-    <<set $cash -= $modCost>>
-    <br>$args[0].slaveName's asshole has been modded.
-<</if>>
-<</if>>
-
-<<if (def _combinedRule.shouldersTat) && (_combinedRule.shouldersTat !== "no default setting")>>
-<<if ($args[0].shouldersTat !== _combinedRule.shouldersTat)>>
-    <<set $args[0].shouldersTat = _combinedRule.shouldersTat>>
-    <<set $cash -= $modCost>>
-    <br>$args[0].slaveName's shoulders have been tattooed.
-<</if>>
-<</if>>
-
-<<if (def _combinedRule.armsTat) && (_combinedRule.armsTat !== "no default setting")>>
-<<if ($args[0].armsTat !== _combinedRule.armsTat)>>
-    <<set $args[0].armsTat = _combinedRule.armsTat>>
-    <<set $cash -= $modCost>>
-    <br>$args[0].slaveName's arms have been tattooed.
-<</if>>
-<</if>>
-
-<<if (def _combinedRule.legsTat) && (_combinedRule.legsTat !== "no default setting")>>
-<<if ($args[0].legsTat !== _combinedRule.legsTat)>>
-    <<set $args[0].legsTat = _combinedRule.legsTat>>
-    <<set $cash -= $modCost>>
-    <br>$args[0].slaveName's legs have been tattooed.
-<</if>>
-<</if>>
-
-<<if (def _combinedRule.stampTat) && (_combinedRule.stampTat !== "no default setting")>>
-<<if ($args[0].stampTat !== _combinedRule.stampTat)>>
-    <<set $args[0].stampTat = _combinedRule.stampTat>>
-    <<set $cash -= $modCost>>
-    <br>$args[0].slaveName's lower back has been tattooed.
-<</if>>
-<</if>>
-
-<<if (def _combinedRule.pornFameSpending) && (_combinedRule.pornFameSpending !== "no default setting")>>
-<<if ($args[0].prestige < 3)>>
-<<if ($args[0].pornFameSpending !== _combinedRule.pornFameSpending)>>
-    <<set $args[0].pornFameSpending = _combinedRule.pornFameSpending>>
-    <br>$args[0].slaveName's porn publicity has been corrected.
-<</if>>
-<</if>>
-<</if>>
-
-<<if (_combinedRule.autoBrand == 1)>>
-<<if ($args[0].brand == 0)>>
-<<if ($args[0].health > -20)>>
-	<<set $args[0].brand = $brandDesign>>
-	<<set $args[0].brandLocation = $brandTarget>>
-	<<if ($args[0].devotion < 18)>><<set $args[0].devotion -= 5>><</if>>
-	<<set $args[0].trust -= 5>>
-	<<set $args[0].health -= 10>>
-	<br>$args[0].slaveName has been branded, with @@.gold;fear@@<<if ($args[0].devotion < 18)>>, @@.mediumorchid;regard@@,<</if>> and @@.red;health@@ consequences.
-<</if>>
-<</if>>
-<</if>>
-
-<</if>> /* closes we have at least one non-default rule setting */
-
-<</widget>>
-
-/%
- % Call as <<CheckAutoRulesActivate SlaveObject>>
- % Does not use or modify $currentRule
- %/
-<<widget "CheckAutoRulesActivate">>
-	<<if (ndef $args[0].currentRules) || ($args[0].currentRules.length < 1)>>
-		<<set $args[0].currentRules = []>>
-	<</if>>
-
-	<<set _leaders = [$HeadGirl, $Bodyguard, $Recruiter, $Concubine, $Nurse, $Attendant, $Madam, $DJ, $Milkmaid, $Stewardess, $Schoolteacher, $Wardeness]>>
-
-	<<for _r = 0; _r < $defaultRules.length; _r++>>
-		<<set _currentRule = $defaultRules[_r], _rule = _r+1>>
-
-		<<set _ruleAppliesToThisSlave = evalExpr(_currentRule.condition, $args[0])>>
-
-		<<if _ruleAppliesToThisSlave && _currentRule.excludeSpecialSlaves>>
-			<<for _L = 0; _L < _leaders.length; _L++>>
-		<<if (def _leaders[_L].ID && _leaders[_L].ID == $args[0].ID)>>
-					<<set _ruleAppliesToThisSlave = false>>
-					<<break>>
-				<</if>>
-			<</for>>
-		<</if>>
-
-		/% check exclusion/inclusion %/
-		<<if _ruleAppliesToThisSlave>>
-	    <<if (_currentRule.assignment.length > 0 || _currentRule.facility.length > 0)>>
-		<<set _ruleAppliesToThisSlave = ruleAssignmentSelected($args[0], _currentRule)>>
-	    <<elseif (_currentRule.excludeAssignment.length > 0 || _currentRule.excludeFacility.length > 0)>>
-		<<set _ruleAppliesToThisSlave = !ruleAssignmentExcluded($args[0], _currentRule)>>
-			<</if>>
-
-	    /% We then check if a slave is specifically included or
-	     % excluded.  This takes precedence over any assignment
-	     % checks.
-			 %/
-	    <<if (_currentRule.selectedSlaves.length > 0)>>
-				<<set _ruleAppliesToThisSlave = ruleSlaveSelected($args[0], _currentRule)>>
-	    <<elseif (_currentRule.excludedSlaves.length > 0)>>
-				<<set _ruleAppliesToThisSlave = !ruleSlaveExcluded($args[0], _currentRule)>>
-			<</if>>
-		<</if>>
-
-		<<if _ruleAppliesToThisSlave>>
-			<<if !ruleApplied($args[0], _currentRule.ID)>> /* rule applies now, but did not apply before */
-				<<set $args[0].currentRules.push(_currentRule.ID)>>
-				<br>//@@.tan;Rule _rule (_currentRule.name) now applies to $args[0].slaveName, who is assigned to $args[0].assignment.@@//
-			<</if>>
-		<<elseif ruleApplied($args[0], _currentRule.ID)>> /* rule does not apply now, but did before */
-			<<RARemoveRule $args[0] _currentRule>>    /* prints message and calls RAFacilityRemove */
-		<</if>>
-	<</for>>
-
-	/* done checking/applying/removing rules - sort this slave's updated applied rules to match the current priority order in the rules assistant */
-	<<set $args[0].currentRules = $args[0].currentRules.sort(function(a, b) { return a-b; });>>
-
-<</widget>>
-
-/*
-	Call as <<RulesDeconfliction SlaveObject>>
-	Saves the slave, silently fires the RA, saves the slave's after-RA state, and then reverts the slave.
-	Call and then check potential change against $slaveAfterRA to see if the RA would revert it.
-*/
-<<widget "RulesDeconfliction">>
-
-<<set _slaveBeforeRA = clone($args[0])>>
-<<silently>>
-	<<CheckAutoRulesActivate $args[0]>>
-	<<DefaultRules $args[0]>>
-<</silently>>
-<<set $slaveAfterRA = clone($args[0])>>
-<<set $args[0] = _slaveBeforeRA>>
-
-<</widget>>