diff --git a/src/interaction/siRules.js b/src/interaction/siRules.js
index 0a2a8e381634687f4330d665bde0e4d9826be815..36e60ce7c78167a305fae5064d9f92661ac6933a 100644
--- a/src/interaction/siRules.js
+++ b/src/interaction/siRules.js
@@ -139,9 +139,11 @@ App.UI.SlaveInteract.rules = function(slave) {
 		}
 
 		// Rest
-		if (["be a servant", "be a subordinate slave", "get milked", "please you", "serve in the club", "serve the public", "whore", "work as a farmhand", "work in the brothel", "work a glory hole"].includes(slave.assignment) || (V.dairyRestraintsSetting < 2 && slave.assignment === "work in the dairy")) {
-			div = document.createElement("div");
-			div.append("Sleep rules: ");
+		div = document.createElement("div");
+		div.append("Sleep rules: ");
+		if ([Job.NURSE, Job.HEADGIRL, Job.TEACHER, Job.STEWARD, Job.MATRON, Job.FARMER, Job.MADAM, Job.WARDEN, Job.DJ, Job.MILKMAID].includes(slave.assignment)) {
+			App.UI.DOM.appendNewElement("span", div, ` ${His} sleeping schedule is managed by ${his} assignment.`, "note");
+		} else if ([Job.QUARTER, Job.DAIRY, Job.FUCKTOY, Job.CLUB, Job.PUBLIC, Job.FARMYARD, Job.WHORE, Job.GLORYHOLE].includes(slave.assignment) || (V.dairyRestraintsSetting < 2 && slave.assignment === Job.DAIRY)) {
 			choices = [
 				{value: "none"},
 				{value: "cruel"},
@@ -150,8 +152,11 @@ App.UI.SlaveInteract.rules = function(slave) {
 				{value: "mandatory"},
 			];
 			div.append(listChoices(choices, "rest"));
-			p.append(div);
+		} else {
+			App.UI.DOM.appendNewElement("span", div, ` ${His} assignment does not allow setting a sleeping schedule.`, "note");
 		}
+		p.append(div);
+
 
 		// Mobility Aids
 		if (!canWalk(slave) && canMove(slave)) {
diff --git a/src/js/DefaultRules.js b/src/js/DefaultRules.js
index 8d8a956ee2cb007cdfe57b036380c0d2e035a721..b30d6a50d7437588c04866f84fa997f7df4f94c4 100644
--- a/src/js/DefaultRules.js
+++ b/src/js/DefaultRules.js
@@ -63,8 +63,7 @@ globalThis.DefaultRules = (function() {
 		if (slave.preg > 0 && slave.pregKnown === 1 && slave.broodmother === 0) {
 			ProcessAbortions(slave, rule);
 		}
-		ProcessOtherDrugs(slave, rule);
-		ProcessAssetGrowthDrugs(slave, rule);
+		ProcessDrugs(slave, rule);
 		ProcessEnema(slave, rule);
 		ProcessDiet(slave, rule);
 		ProcessCuratives(slave, rule);
@@ -1165,12 +1164,13 @@ globalThis.DefaultRules = (function() {
 	 * @param {App.Entity.SlaveState} slave
 	 * @param {FC.RA.RuleSetters} rule
 	 */
-	function ProcessAssetGrowthDrugs(slave, rule) {
+	function ProcessDrugs(slave, rule) {
+		// First we check AssetGrowthDrugs, then if 1. no growth targets or 2. targets have been hit, we check other drugs.
 		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;
+			ProcessOtherDrugs(slave, rule);
 		} else if (slave.indentureRestrictions > 1 || (rule.growth.boobs === null && rule.growth.butt === null && rule.growth.lips === null && rule.growth.dick === null && rule.growth.balls === null)) {
-			return;
+			ProcessOtherDrugs(slave, rule);
 		}
 
 		// Asset Growth
@@ -1208,7 +1208,7 @@ globalThis.DefaultRules = (function() {
 			growDrugs.balls = "testicle enhancement";
 		}
 
-		if (rule.hyper_drugs === 1 && V.arcologies[0].FSAssetExpansionistResearch === 1) {
+		if (V.arcologies[0].FSAssetExpansionistResearch === 1 && rule.hyper_drugs === 1) {
 			growDrugs.boobs = "hyper breast injections";
 			growDrugs.butt = "hyper butt injections";
 			if (slave.dick > 0) {
@@ -1307,8 +1307,8 @@ globalThis.DefaultRules = (function() {
 				}
 			}
 		} else if (growthDrugs.has(slave.drugs)) {
-			slave.drugs = "no drugs";
 			r += `<br>${slave.slaveName}'s body has met all relevant growth targets, so ${his} pharmaceutical regime has been ended.`;
+			ProcessOtherDrugs(slave,rule);
 		}
 	}
 
@@ -1322,19 +1322,19 @@ globalThis.DefaultRules = (function() {
 			let flag = true;
 			switch (rule.drug) {
 				case "anti-aging cream":
-					if (slave.visualAge < 18) {
+					if (V.arcologies[0].FSYouthPreferentialistResearch !== 1 || slave.visualAge < 18) {
 						flag = false;
 					}
 					break;
 
 				case "growth stimulants":
-					if (!canImproveHeight(slave)) {
+					if (V.growthStim !== 1 || !canImproveHeight(slave)) {
 						flag = false;
 					}
 					break;
 
 				case "sag-B-gone":
-					if (!(slave.boobs > 250 && slave.boobShape !== "saggy")) {
+					if (V.purchasedSagBGone !== 1 || (!(slave.boobs > 250 && slave.boobShape !== "saggy"))) {
 						flag = false;
 					}
 					break;
@@ -1358,7 +1358,7 @@ globalThis.DefaultRules = (function() {
 					break;
 
 				case "psychostimulants":
-					if (!canImproveIntelligence(slave)) {
+					if (V.arcologies[0].FSSlaveProfessionalismResearch !== 1 || !canImproveIntelligence(slave)) {
 						flag = false;
 					}
 					break;
@@ -1370,7 +1370,7 @@ globalThis.DefaultRules = (function() {
 					break;
 
 				case "hyper breast injections":
-					if (slave.boobs >= 50000) {
+					if (V.arcologies[0].FSAssetExpansionistResearch !== 1 || slave.boobs >= 50000) {
 						flag = false;
 					}
 					break;
@@ -1381,7 +1381,7 @@ globalThis.DefaultRules = (function() {
 					}
 					break;
 				case "breast redistributors":
-					if (slave.boobs - slave.boobsImplant <= 100) {
+					if (V.arcologies[0].FSSlimnessEnthusiastResearch !== 1 || (slave.boobs - slave.boobsImplant <= 100)) {
 						flag = false;
 					}
 					break;
@@ -1393,19 +1393,19 @@ globalThis.DefaultRules = (function() {
 					break;
 
 				case "hyper butt injections":
-					if (slave.butt >= 20) {
+					if (V.arcologies[0].FSAssetExpansionistResearch !== 1 || slave.butt >= 20) {
 						flag = false;
 					}
 					break;
 
 				case "nipple atrophiers":
-					if (!(["cute", "huge", "puffy"].includes(slave.nipples))) {
+					if (V.arcologies[0].FSSlimnessEnthusiastResearch !== 1 || !(["cute", "huge", "puffy"].includes(slave.nipples))) {
 						flag = false;
 					}
 					break;
 
 				case "butt redistributors":
-					if (slave.buttImplant <= 0) {
+					if (V.arcologies[0].FSSlimnessEnthusiastResearch !== 1 || slave.buttImplant <= 0) {
 						flag = false;
 					}
 					break;
@@ -1417,13 +1417,13 @@ globalThis.DefaultRules = (function() {
 					break;
 
 				case "lip atrophiers":
-					if (slave.lips - slave.lipsImplant <= 0) {
+					if (V.arcologies[0].FSSlimnessEnthusiastResearch !== 1 || slave.lips - slave.lipsImplant <= 0) {
 						flag = false;
 					}
 					break;
 
 				case "super fertility drugs":
-					if (!(slave.indentureRestrictions < 1 && (slave.breedingMark !== 1 || V.propOutcome === 0 || V.eugenicsFullControl === 1 || V.arcologies[0].FSRestart === "unset"))) {
+					if ((V.seeHyperPreg !== 1 || V.superFertilityDrugs !== 1) || !(slave.indentureRestrictions < 1 && (slave.breedingMark !== 1 || V.propOutcome === 0 || V.eugenicsFullControl === 1 || V.arcologies[0].FSRestart === "unset"))) {
 						flag = false;
 					}
 					break;
@@ -1435,13 +1435,13 @@ globalThis.DefaultRules = (function() {
 					break;
 
 				case "hyper penis enhancement":
-					if (!((slave.dick > 0 && slave.dick < 31) || slave.clit < 5)) {
+					if (V.arcologies[0].FSAssetExpansionistResearch !== 1 || !((slave.dick > 0 && slave.dick < 31) || slave.clit < 5)) {
 						flag = false;
 					}
 					break;
 
 				case "penis atrophiers":
-					if (slave.dick <= 1) {
+					if (V.arcologies[0].FSSlimnessEnthusiastResearch !== 1 || slave.dick <= 1) {
 						flag = false;
 					}
 					break;
@@ -1453,37 +1453,37 @@ globalThis.DefaultRules = (function() {
 					break;
 
 				case "hyper testicle enhancement":
-					if (slave.balls <= 0) {
+					if (V.arcologies[0].FSAssetExpansionistResearch !== 1 || slave.balls <= 0) {
 						flag = false;
 					}
 					break;
 
 				case "testicle atrophiers":
-					if (slave.balls <= 1) {
+					if (V.arcologies[0].FSSlimnessEnthusiastResearch !== 1 || slave.balls <= 1) {
 						flag = false;
 					}
 					break;
 
 				case "clitoris atrophiers":
-					if (slave.clit <= 0) {
+					if (V.arcologies[0].FSSlimnessEnthusiastResearch !== 1 || slave.clit <= 0) {
 						flag = false;
 					}
 					break;
 
 				case "labia atrophiers":
-					if (slave.labia <= 0) {
+					if (V.arcologies[0].FSSlimnessEnthusiastResearch !== 1 || slave.labia <= 0) {
 						flag = false;
 					}
 					break;
 
 				case "appetite suppressors":
-					if (slave.weight > -95) {
+					if (V.arcologies[0].FSSlimnessEnthusiastResearch !== 1 || slave.weight > -95) {
 						flag = false;
 					}
 					break;
 
 				case "priapism agents":
-					if (slave.dick === 0 || slave.dick > 10 || slave.chastityPenis === 1 || (canAchieveErection(slave) && slave.drugs !== "priapism agents")) {
+					if (slave.dick === 0 || slave.dick > 10 || slave.chastityPenis === 1 || (canAchieveErection(slave))) {
 						flag = false;
 					}
 					break;
@@ -1491,7 +1491,7 @@ globalThis.DefaultRules = (function() {
 			if (flag) {
 				slave.drugs = rule.drug;
 				r += `<br>${slave.slaveName} has been put on ${slave.drugs}.`;
-			} else {
+			} else if (slave.drugs !== "no drugs") {
 				slave.drugs = "no drugs";
 				r += `<br>${slave.slaveName} cannot benefit from ${his} assigned drug and has been defaulted to ${slave.drugs}`;
 			}
@@ -1563,20 +1563,76 @@ globalThis.DefaultRules = (function() {
 	 * @param {FC.RA.RuleSetters} rule
 	 */
 	function ProcessDiet(slave, rule) {
-		// Diet Setting
-		if ((rule.diet !== undefined && rule.diet !== null) || rule.weight !== null || rule.muscles !== null) {
-			/*
-			if ((slave.boobs >= 1600) && (slave.muscles <= 5) && !isAmputee(slave) && ((rule.muscles == null) || (rule.muscles === 0))) {
+		/* Here the slave's diets are processed, with the following priorities:
+		1. Attractive Weight
+		2. Weight Based Rule
+		3. Muscle Rule
+		4. Specific Diet Rule
+		?. TODO: appetite suppressors
+		*/
+
+		function weightRule(slave, rule) {
+			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 ${his} diet has been set to restricted.`;
+					}
+				} 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 ${his} diet has been set to fattening.`;
+					}
+				} else if (["restricted", "fattening"].includes(slave.diet)){
+						r += `<br>${slave.slaveName} is at the target weight, so ${his} diet has been normalized.`;
+						muscleRule(slave, rule);
+				} else {
+					muscleRule(slave, rule);
+				}
+			} else {
+				if (slave.weight > rule.weight.max) {
+					if (slave.diet !== "restricted") {
+						slave.diet = "restricted";
+						r += `<br>${slave.slaveName} is too fat so ${his} diet has been set to restricted.`;
+					}
+				} else if (slave.weight < rule.weight.min) {
+					if (slave.diet !== "fattening") {
+						slave.diet = "fattening";
+						r += `<br>${slave.slaveName} is too skinny so ${his} diet has been set to fattening.`;
+					}
+				} else if (["restricted", "fattening"].includes(slave.diet)) {
+					r += `<br>${slave.slaveName} is at the target weight, so ${his} diet has been normalized.`;
+					muscleRule(slave, rule);
+				} else {
+					muscleRule(slave, rule);
+				}
+			}
+		}
+
+		function muscleRule(slave, rule) {
+			if (!isAmputee(slave) && App.RA.shallShrink(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 (!isAmputee(slave) && App.RA.shallGrow(slave.muscles, rule.muscles, 2)) {
 				if ((slave.diet !== "muscle building")) {
-					slave.diet = "muscle building"
-					r += `<br>${slave.slaveName} has big tits and no back muscles, so ${he}'s been assigned to gain some.`
+					slave.diet = "muscle building";
+					r += `<br>${slave.slaveName} has been put on a muscle building exercise regime.`;
 				}
-			} else if ((slave.boobs >= 1600) && (slave.muscles > 5) && (slave.diet == "muscle building") && ((rule.muscles == null) || (rule.muscles === 0))) {
-			*/
+			} else if (!isAmputee(slave) && ["slimming", "muscle building"].includes(slave.diet)) {
+				r += `<br>${slave.slaveName} is at the target musculature, so ${his} diet has been normalized.`;
+				dietRule(slave, rule);
+			} else {
+				dietRule(slave, rule);
+			}
+		}
+
+		function dietRule(slave, rule) {
 			if (rule.diet === "healthy" && slave.diet !== "healthy") {
 				slave.diet = "healthy";
 				r += `<br>${slave.slaveName} has been assigned to a healthy diet.`;
-			} else if ((slave.boobs >= 1600) && (slave.muscles > 5) && (slave.diet === "muscle building") && ((rule.muscles === null) || (rule.muscles.val === 0))) {
+			} else if ((slave.boobs >= 1600) && (slave.muscles > 5) && (slave.diet === "muscle building") && ((rule.muscles === null) || (rule.muscles.val < 5))) {
 				slave.diet = "healthy";
 				r += `<br>${slave.slaveName} has huge boobs, but ${he} already has the back muscles to bear them, so ${he}'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)) {
@@ -1584,117 +1640,87 @@ globalThis.DefaultRules = (function() {
 					slave.diet = "fattening";
 					r += `<br>${slave.slaveName} is on drugs designed to expand major body parts, so ${he}'s been put on a fattening diet to provide ${his} body as much fuel for growth as possible.`;
 				}
-			} else {
-				// priority to growing/losing muscles, then general body mass, then rest of the diets
-				if (!isAmputee(slave) && App.RA.shallShrink(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 (!isAmputee(slave) && App.RA.shallGrow(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 (!isAmputee(slave) && ["slimming", "muscle building"].includes(slave.diet)) {
-					slave.diet = "healthy";
-					r += `<br>${slave.slaveName} is at the target musculature, so ${his} diet has been normalized.`;
-				} else if (rule.weight !== null && slave.weight > rule.weight.max) {
-					if (slave.diet !== "restricted") {
-						slave.diet = "restricted";
-						r += `<br>${slave.slaveName} is too fat so ${his} diet has been set to restricted.`;
+			}  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 (rule.weight !== null && slave.weight < rule.weight.min) {
-					if (slave.diet !== "fattening") {
-						slave.diet = "fattening";
-						r += `<br>${slave.slaveName} is too skinny so ${his} diet has been set to fattening.`;
+				} else {
+					if ((slave.diet !== "healthy")) {
+						slave.diet = "healthy";
+						r += `<br>${slave.slaveName} has been put on a standard diet since ${he} is not a hermaphrodite.`;
 					}
-				} else if (rule.weight !== null && ["restricted", "fattening"].includes(slave.diet)) {
-					slave.diet = "healthy";
-					r += `<br>${slave.slaveName} is at the target weight, so ${his} diet has been normalized.`;
-				} 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 ${his} diet has been set to restricted.`;
-						}
-					} 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 ${his} diet has been set to fattening.`;
-						}
-					} else {
-						if ((slave.diet !== "healthy")) {
-							slave.diet = "healthy";
-							r += `<br>${slave.slaveName} is at the target weight, so ${his} diet has been normalized.`;
-						}
+				}
+			} else if (V.dietCleanse === 1 && (rule.diet === "cleansing")) {
+				if ((slave.diet !== "cleansing")) {
+					slave.diet = "cleansing";
+					r += `<br>${slave.slaveName} has been put on a diet of cleansers.`;
+				}
+			} else if ((rule.diet === "fertility")) {
+				if ((isFertile(slave) && slave.preg === 0) || (slave.geneticQuirks.superfetation === 2 && canGetPregnant(slave) && V.geneticMappingUpgrade !== 0)) {
+					if ((slave.diet !== "fertility")) {
+						slave.diet = "fertility";
+						r += `<br>${slave.slaveName} has been put on a diet to enhance fertility.`;
 					}
-				} 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 ${he} is not a hermaphrodite.`;
+				} 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 ${he} has become pregnant.`;
+							slave.pregKnown = 1;
+						} else {
+							r += `<br>${slave.slaveName} has been put on a standard diet since ${he} is currently unable to become pregnant.`;
 						}
 					}
-				} else if ((rule.diet === "cleansing")) {
-					if ((slave.diet !== "cleansing") && (slave.health.condition < 90 || slave.chem >= 10)) {
-						slave.diet = "cleansing";
-						r += `<br>${slave.slaveName} has been put on a diet of cleansers.`;
-					}
-				} else if ((rule.diet === "fertility")) {
-					if ((isFertile(slave) && slave.preg === 0) || (slave.geneticQuirks.superfetation === 2 && canGetPregnant(slave) && V.geneticMappingUpgrade !== 0)) {
-						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 ${he} has become pregnant.`;
-								slave.pregKnown = 1;
-							} else {
-								r += `<br>${slave.slaveName} has been put on a standard diet since ${he} 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 ((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 ${he} is no longer able to produce cum.`;
-						}
+				} else {
+					if ((slave.diet !== "healthy")) {
+						slave.diet = "healthy";
+						r += `<br>${slave.slaveName} has been put on a standard diet since ${he} is no longer able to produce cum.`;
 					}
 				}
+			} else {
+				if (slave.diet !== "healthy") {
+					slave.diet = "healthy";
+					r += `<br>${slave.slaveName} has been put on a standard diet.`;
+				}
 			}
+		}
 
-			if (slave.drugs === "appetite suppressors" && slave.diet !== "restricted") {
-				slave.drugs = "no drugs";
-				r += `<br>${slave.slaveName} no longer needs to lose weight, so ${he}'s no longer being given appetite suppressors.`;
-			} else if (slave.diet === "restricted" && V.arcologies[0].FSSlimnessEnthusiastResearch === 1 && slave.drugs === "no drugs") {
-				slave.drugs = "appetite suppressors";
-				r += `<br>${slave.slaveName} needs to lose weight so ${he} will be given weight loss pills.`;
-			}
+		if (rule.weight !== null) {
+			weightRule(slave, rule);
+		}
+		if (rule.weight === null && rule.muscles !== null) {
+			muscleRule(slave, rule);
+		}
+		if (rule.weight === null && rule.muscles === null && (rule.diet !== undefined && rule.diet !== null)) {
+			dietRule(slave, rule);
+		}
+
+		// TODO: Place these somewhere in a function too.
+		if (slave.drugs === "appetite suppressors" && slave.diet !== "restricted") {
+			slave.drugs = "no drugs";
+			r += `<br>${slave.slaveName} no longer needs to lose weight, so ${he}'s no longer being given appetite suppressors.`;
+		} else if (slave.diet === "restricted" && V.arcologies[0].FSSlimnessEnthusiastResearch === 1 && slave.drugs === "no drugs") {
+			slave.drugs = "appetite suppressors";
+			r += `<br>${slave.slaveName} needs to lose weight so ${he} will be given weight loss pills.`;
 		}
 	}
 
@@ -1835,18 +1861,19 @@ globalThis.DefaultRules = (function() {
 	 * @param {FC.RA.RuleSetters} rule
 	 */
 	function ProcessLivingStandard(slave, rule) {
-		if ((rule.livingRules !== undefined) && (rule.livingRules !== null)) {
+		if (rule.livingRules !== undefined && rule.livingRules !== null && slave.rules.living !== rule.livingRules) {
 			if (setup.facilityCareers.includes(slave.assignment)) {
-				r += ""; // `<br>${slave.slaveName}'s living standards are controlled by ${his} assignment.`;
+				// Handled in Rules tab of SI now.
+				//r += `<br>${slave.slaveName}'s living standards are controlled by ${his} assignment.`;
 			} else if (((slave.assignment === Job.HEADGIRL) && (V.HGSuite === 1)) || ((slave.assignment === Job.BODYGUARD) && (V.dojo > 1))) {
-				r += `<br>${slave.slaveName} has a private room.`;
+				//r += `<br>${slave.slaveName} has a private room.`;
 			} else if ((slave.fetish === "mindbroken")) {
 				if ((slave.rules.living !== "spare")) {
 					slave.rules.living = "spare";
 					r += `<br>Since ${slave.slaveName} is mindbroken, ${his} living standard has been set to spare.`;
 				}
-			} else if (slave.rules.living !== rule.livingRules) {
-				if (rule.livingRules !== "luxurious") {
+			} else {
+				if (rule.livingRules === "luxurious") {
 					if (canMoveToRoom(slave)) {
 						slave.rules.living = rule.livingRules;
 						r += `<br>${slave.slaveName}'s living standard has been set to ${rule.livingRules}.`;
@@ -1858,9 +1885,9 @@ globalThis.DefaultRules = (function() {
 					slave.rules.living = rule.livingRules;
 					r += `<br>${slave.slaveName}'s living standard has been set to ${rule.livingRules}.`;
 				}
-				penthouseCensus();
 			}
 		}
+		penthouseCensus();
 	}
 
 	/**
@@ -1870,8 +1897,12 @@ globalThis.DefaultRules = (function() {
 	function ProcessRest(slave, rule) {
 		if ((rule.restRules !== undefined) && (rule.restRules !== null)) {
 			if (slave.rules.rest !== rule.restRules ) {
-				slave.rules.rest = rule.restRules;
-				r += `<br>${slave.slaveName}'s resting time has been set to ${rule.restRules}.`;
+				if ([Job.NURSE, Job.HEADGIRL, Job.TEACHER, Job.STEWARD, Job.MATRON, Job.FARMER, Job.MADAM, Job.WARDEN, Job.DJ, Job.MILKMAID].includes(slave.assignment)) {
+					// These assignments enforce "restrictive", do not let RA attempt to change it.
+				} else {
+					slave.rules.rest = rule.restRules;
+					r += `<br>${slave.slaveName}'s resting time has been set to ${rule.restRules}.`;
+				}
 			}
 		}
 	}
@@ -1930,26 +1961,28 @@ globalThis.DefaultRules = (function() {
 	 * @param {FC.RA.RuleSetters} rule
 	 */
 	function ProcessRelease(slave, rule) {
-		if ((rule.releaseRules !== undefined) && (rule.releaseRules !== null)) {
+		const releaseProperties = [
+			'masturbation',
+			'partner',
+			'facilityLeader',
+			'family',
+			'slaves',
+			'master',
+		];
+		if ((rule.releaseRules !== undefined) && (rule.releaseRules !== null) && processReleaseProp(releaseProperties)) {
+			r += `<br>${slave.slaveName}'s release rules have been set to: ${App.Utils.releaseSummaryLong(slave)}.`;
+		}
+		function processReleaseProp(releaseProperties) {
 			let changed = false;
-			let processReleaseProp = (property) => {
+			for (const property of releaseProperties) {
 				if (rule.releaseRules[property] !== undefined && rule.releaseRules[property] !== null) {
 					if (slave.rules.release[property] !== rule.releaseRules[property]) {
 						slave.rules.release[property] = rule.releaseRules[property];
-						return true;
+						changed = true;
 					}
 				}
-				return false;
-			};
-			changed = processReleaseProp('masturbation') || false;
-			changed = processReleaseProp('partner') || false;
-			changed = processReleaseProp('facilityLeader') || false;
-			changed = processReleaseProp('family') || false;
-			changed = processReleaseProp('slaves') || false;
-			changed = processReleaseProp('master') || false;
-			if (changed) {
-				r += `<br>${slave.slaveName}'s release rules have been set to: ${App.Utils.releaseSummaryLong(slave)}.`;
 			}
+			return changed;
 		}
 	}
 
@@ -2402,8 +2435,10 @@ globalThis.DefaultRules = (function() {
 
 		if (rule.skinColor !== undefined && rule.skinColor !== null && rule.skinColor !== slave.skin) {
 			if (rule.skinColor === "natural") {
-				slave.skin = slave.origSkin;
-				r += `<br>${slave.slaveName}'s skin color has been returned to ${slave.origSkin}.`;
+				if (slave.skin !== slave.origSkin) {
+					slave.skin = slave.origSkin;
+					r += `<br>${slave.slaveName}'s skin color has been returned to ${slave.origSkin}.`;
+				}
 			} else {
 				slave.skin = rule.skinColor;
 				r += `<br>${slave.slaveName}'s skin color has been set to ${rule.skinColor}.`;
@@ -2613,7 +2648,7 @@ globalThis.DefaultRules = (function() {
 		if (slave.clitPiercing === 3) {
 			let _used = 0;
 			if (rule.clitSetting !== undefined && rule.clitSetting !== null && rule.clitSetting !== "random") {
-				if (slave.clitSetting !== rule.clitSetting) {
+				if (slave.clitSetting !== rule.clitSetting && slave.fetishStrength !== 100) {
 					slave.clitSetting = rule.clitSetting;
 					_used = 1;
 					r += `<br>${slave.slaveName}'s smart piercing has been set to ${slave.clitSetting}.`;
@@ -2676,6 +2711,13 @@ globalThis.DefaultRules = (function() {
 					}
 				}
 			}
+			if (_used === 0) {
+				if (rule.clitSetting !== undefined && rule.clitSetting !== null && slave.clitSetting !== rule.clitSetting) {
+					slave.clitSetting = rule.clitSetting;
+					_used = 1;
+					r += `<br>${slave.slaveName}'s smart piercing has been set to ${slave.clitSetting}.`;
+				}
+			}
 		}
 	}
 
diff --git a/src/js/releaseRules.js b/src/js/releaseRules.js
index fd443122021f54e376d41afbe1fb3c1caa402b32..e16e71cac7e98ea7233a9e7f3156962923b418a5 100644
--- a/src/js/releaseRules.js
+++ b/src/js/releaseRules.js
@@ -117,22 +117,34 @@ App.Utils.releaseSummaryShort = function releaseSummaryShort(slave) {
 App.Utils.releaseSummaryLong = function releaseSummaryLong(slave) {
 	const rel = slave.rules.release;
 	const includeFamily = (rel.family === 1) && (V.seeIncest === 1);
-	if (rel.masturbation === 0 && rel.partner === 0 && !includeFamily && rel.slaves === 0 && rel.master === 0) {
+	let _counter = rel.masturbation + rel.partner + rel.facilityLeader + rel.slaves + rel.master;
+	if (includeFamily) {
+		_counter += 1;
+	}
+
+	if (rel.masturbation === 0 && rel.partner === 0 && rel.facilityLeader === 0 && !includeFamily && rel.slaves === 0 && rel.master === 0) {
 		return "chastity";
-	} else if (rel.masturbation === 1 && rel.partner === 0 && !includeFamily && rel.slaves === 0 && rel.master === 0) {
+	} else if (rel.masturbation === 1 && rel.partner === 0 && rel.facilityLeader === 0 && !includeFamily && rel.slaves === 0 && rel.master === 0) {
 		return "masturbation only";
-	} else if (rel.masturbation === 0 && rel.partner === 1 && !includeFamily && rel.slaves === 0 && rel.master === 0) {
+	} else if (rel.masturbation === 0 && rel.partner === 1 && rel.facilityLeader === 0 && !includeFamily && rel.slaves === 0 && rel.master === 0) {
 		return "partner only";
-	} else if (rel.masturbation === 0 && rel.partner === 0 && includeFamily && rel.slaves === 0 && rel.master === 0) {
+	} else if (rel.masturbation === 0 && rel.partner === 0 && rel.facilityLeader === 1 && !includeFamily && rel.slaves === 0 && rel.master === 0) {
+		return "facility leaders only";
+	} else if (rel.masturbation === 0 && rel.partner === 0 && rel.facilityLeader === 0 &&  includeFamily && rel.slaves === 0 && rel.master === 0) {
 		return "family only";
-	} else if (rel.masturbation === 0 && rel.partner === 0 && !includeFamily && rel.slaves === 0 && rel.master === 1) {
+	} else if (rel.masturbation === 0 && rel.partner === 0 && rel.facilityLeader === 0 && !includeFamily && rel.slaves === 1 && rel.master === 0) {
+		return "slaves only";
+	} else if (rel.masturbation === 0 && rel.partner === 0 && rel.facilityLeader === 0 && !includeFamily && rel.slaves === 0 && rel.master === 1) {
 		return "you only";
-	} else if (rel.slaves === 1) {
+	} else if (_counter >= 3) {
 		let ret = "permissive";
 		let exceptions = [];
 		if (rel.partner === 0) {
 			exceptions.push("partner");
 		}
+		if (rel.facilityLeader === 0) {
+			exceptions.push("facility leaders");
+		}
 		if (!includeFamily) {
 			exceptions.push("family");
 		}
@@ -146,22 +158,30 @@ App.Utils.releaseSummaryLong = function releaseSummaryLong(slave) {
 			ret += ", no masturbation";
 		}
 		return ret;
-	} else {
+	} else if (_counter > 0 && _counter < 3){
+		let ret = "restrictive";
 		let permissions = [];
-		if (rel.masturbation === 1) {
-			permissions.push("masturbation");
-		}
 		if (rel.partner === 1) {
 			permissions.push("partner");
 		}
+		if (rel.facilityLeader === 1) {
+			permissions.push("facility leaders");
+		}
 		if (includeFamily) {
 			permissions.push("family");
 		}
 		if (rel.master === 1) {
 			permissions.push("you");
 		}
-		if (permissions.length < 1) { return "unknown"; } // probably means BC didn't get run, but let's not die because of it
-		return permissions.reduce(function(res, ch, i, arr) { return res + (i === arr.length - 1 ? ' and ' : ', ') + ch; });
+		if (permissions.length > 0) {
+			ret += " but permits " + permissions.reduce(function(res, ch, i, arr) { return res + (i === arr.length - 1 ? ' and ' : ', ') + ch; });
+		}
+		if (rel.masturbation === 1) {
+			ret += ", and allowed to masturbate";
+		}
+		return ret;
+	} else {
+		return "no release rules";
 	}
 };