diff --git a/slave variables documentation - Pregmod.txt b/slave variables documentation - Pregmod.txt
index 082c9704b3a33be4fcddcffa4a0ab14352c3d35f..719097a67b9216a23349cf9c971e028cfe08ca00 100644
--- a/slave variables documentation - Pregmod.txt	
+++ b/slave variables documentation - Pregmod.txt	
@@ -456,6 +456,7 @@ rules.living:
 rules.rest:
 
 "none"			- slave may be worked into exhaustion
+"cruel"			- slave is allowed rest when exhausted
 "restrictive"	- slave is allowed to rest when fatigued
 "permissive"	- slave is allowed to rest when tired
 "mandatory"		- day of rest each week to recover
diff --git a/src/endWeek/healthFunctions.js b/src/endWeek/healthFunctions.js
index 76e4acc132aa5ffc9ffe8a3f891caf1232ebb043..ce11266bc87fd7257fcb4dbfe5cb6cfeffb1b233 100644
--- a/src/endWeek/healthFunctions.js
+++ b/src/endWeek/healthFunctions.js
@@ -62,8 +62,10 @@ window.illness = function illness(slave) {
 	let r = ``;
 	let assignBonus = 0; // bonus for healthy assignments
 
+	// eslint-disable-next-line no-unused-vars
 	let he, him, his, hers, himself, girl, loli, He, His;
 	({
+		// eslint-disable-next-line no-unused-vars
 		he, him, his, hers, himself, girl, He, His, loli
 	} = getPronouns(slave));
 	let sicknessDegree = ["fine", "minor illness", "illness", "bad illness", "severe illness", "life-threatening illness"];
@@ -325,7 +327,7 @@ window.endWeekHealthDamage = function endWeekHealthDamage(slave) {
 };
 
 /**
- * Tells if a slave will try to work to death due to mental hangups
+ * Tells if a slave will willingly work to death
  * @param {App.Entity.SlaveState} slave
  * @returns {boolean}
  */
@@ -333,8 +335,28 @@ window.willWorkToDeath = function willWorkToDeath(slave) {
 	// More to come in the future
 	if (slave.trust < -50) { // Maybe lower
 		return true;
+	} else if (slave.devotion > 50) {
+		return true;
 	} else if (slave.sexualFlaw === "self hating") {
 		return true;
+	} else if (slave.fetish === "mindbroken") {
+		return true;
+	}
+	return false;
+};
+
+/**
+ * Tells if a slave is taking the week off to rest
+ * @param {App.Entity.SlaveState} slave
+ * @returns {boolean}
+ */
+window.slaveResting = function slaveResting(slave) {
+	if (slave.rules.rest === "cruel" && slave.health.tired > 90) {
+		return true;
+	} else if (slave.rules.rest === "restrictive" && slave.health.tired > 60) {
+		return true;
+	} else if (slave.rules.rest === "permissive" && slave.health.tired > 30) {
+		return true;
 	}
 	return false;
 };
@@ -347,6 +369,7 @@ window.willWorkToDeath = function willWorkToDeath(slave) {
 window.tired = function tired(slave) {
 	const H = slave.health;
 	let livingRules = 0;
+	let restRules = 0;
 	let assignment = 0;
 	let reward = 0;
 	let punishment = 0;
@@ -439,21 +462,23 @@ window.tired = function tired(slave) {
 			} else {
 				assignment -= 8;
 			}
-		} else if (["be confined in the arcade"].includes(slave.assignment)) { // Brutal assignments
-			// assignment += 50; // We should have a safeguard in place to prevent slave health meltdown while contained in the machine
+		} else if (["be confined in the arcade"].includes(slave.assignment)) {
+			assignment += 35;
+			if (V.arcadeUpgradeHealth === 2) {
+				assignment -= 60;
+			} else if (V.arcadeUpgradeHealth === 1) {
+				assignment -= 30;
+			}
 		} else if (["work a glory hole", "work as a farmhand"].includes(slave.assignment)) { // Hard assignments
-			if (!willWorkToDeath(slave)) {
-				if (slave.tired > 90) {
-					assignment += 1;
-				} else if (slave.tired > 60) {
-					assignment += 10;
-				}
+			if (slaveResting(slave)) {
+				assignment -= 20;
+				V.slaveUsedRest = 1;
+			} else if (slave.tired + 20 >= 90 && !willWorkToDeath(slave)) {
+				assignment += 1;
+			} else if (slave.devotion > 20) {
+				assignment += 15;
 			} else {
-				if (slave.devotion > 20) {
-					assignment += 15;
-				} else {
-					assignment += 20;
-				}
+				assignment += 20;
 			}
 		} else if (["serve in the club", "serve the public", "whore", "work in the brothel"].includes(slave.assignment)) { // Moderate assignments
 			if (!willWorkToDeath(slave)) {
@@ -576,7 +601,14 @@ window.tired = function tired(slave) {
 		// Add advanced pregnancy/high .bellyPreg (it is either caused by an advanced pregnancy or high multiples, both draining) tiredness gain gated under preg effects
 		// Add pregnancy speed up effects
 
-		tiredChange = livingRules + assignment + reward + punishment; //  + muscles + health
+		// day of rest
+		if (slave.rules.rest === "mandatory") {
+			if (["work a glory hole", "work as a farmhand", "serve in the club", "serve the public", "whore", "work in the brothel", "be a subordinate slave", "be a servant", "work as a servant", "please you", "serve in the master suite"].includes(slave.assignment) || (V.dairyRestraintsSetting < 2 && slave.assignment === "work in the dairy")) {
+				restRules -= 20;
+			}
+		}
+
+		tiredChange = livingRules + assignment + restRules + reward + punishment; //  + muscles + health
 		H.tired += tiredChange;
 
 		// HG special cases
diff --git a/src/endWeek/saDrugs.js b/src/endWeek/saDrugs.js
index 14ff02217e899363736465aff1cb110fbcade21c..fbade7dfab63562aaecc6ad914c0acedf6616b31 100644
--- a/src/endWeek/saDrugs.js
+++ b/src/endWeek/saDrugs.js
@@ -1724,13 +1724,14 @@ window.saDrugs = (function saDrugs() {
 					r += ` ${He} has been worked to the bone`;
 					if (slave.devotion < 20) {
 						r += ` and <span class="hotpink">bends a little more to your will,</span> while <span class="gold">fearing ${he}'ll never earn a reprieve</span> from toiling.`;
-						slave.devotion += 2;
+						slave.devotion += 1;
 						slave.trust -= 2;
 					} else if (slave.devotion < 50) {
 						r += ` and can't help but <span class="gold">worry a little about ${his} well-being.</span>`;
 						slave.trust -= 1;
 					} else {
-						r += ` but ${he} carries on without reservations.`;
+						r += ` but ${he} carries on without complaint, keeping ${his} <span class="mediumorchid">growing doubts</span> to $himself.`;
+						slave.devotion -= 2;
 					}
 				} else if (slave.health.tired > 60) {
 					r += ` ${He} is suffering from exhaustion`;
diff --git a/src/endWeek/saWorkAGloryHole.js b/src/endWeek/saWorkAGloryHole.js
index b2aef70b900e3caa3fc7726a5559b63037f51abe..be070d9b0c08daa395234020f252dc0ec488acf6 100644
--- a/src/endWeek/saWorkAGloryHole.js
+++ b/src/endWeek/saWorkAGloryHole.js
@@ -148,10 +148,40 @@ window.saWorkAGloryHole = (function saWorkAGloryHole() {
 			if (slave.health.tired > 90) {
 				r += ` exhausted`;
 			} else if (slave.health.tired > 60) {
-				r += ` tired`;
+				r += ` fatigued`;
 			}
 			r += `,</span> but no one cared.`;
 		}
+		if (slave.assignment === "be confined in the arcade") {
+			if (!slave.fuckdoll) {
+				r += ` $He spends $his working hours constrained to a box, and $his time outside preparing for $his next shift; <span class="red">an exhausting life for even the healthiest of slaves.</span>`;
+				if (V.arcadeUpgradeHealth > 0) {
+					r += ` The curative cocktail pumped into ${him} is laced with `;
+					if (V.arcadeUpgradeHealth === 2) {
+						r += `sedatives and painkillers to keep $him in a <span class="green">state of forced rest.</span>`;
+					} else {
+						r += `painkillers and mild muscle relaxants; Not enough to ruin a customor's fun, but enough to keep ${him} in a <span class="green">state of pseudo-rest.</span>`;
+					}
+				} else {
+					r += ` If ${he} needs to rest, however, ${he} can always just pass out in ${his} restraints.`;
+				}
+			}
+			tired(slave);
+		} else if (slave.assignment === "work a glory hole") {
+			if (!slave.fuckdoll) {
+				if (slaveResting(slave)) {
+					r += ` ${He} spends reduced hours serving ${his} glory hole in order to <span class="green">offset ${his} lack of rest.</span>`;
+				} else if (slave.tired + 20 >= 90 && !willWorkToDeath(slave)) {
+					r += ` ${He} attempts to refuse work due to ${his} exhaustion, but can do little to stop it or the resulting <span class="trust dec">severe punishment.</span> ${He} <span class="devotion dec">purposefully underperforms,</span> choosing ${his} overall well-being over the consequences, <span class="reputation dec">aggravating customers and damaging the establishment's image.</span>`;
+					slave.devotion -= 10;
+					slave.trust -= 5;
+					repX(forceNeg(50), "gloryhole", slave);
+				} else {
+					r += ` ${He} spends long hours cooped up in a small box with nothing to rest on. Even if ${he} where to try to lean against its side, it won't be long before another dick pokes through the hole demanding service. <span class="red">By the time ${he} is released, ${he} is nothing short of exhausted.</span>`;
+				}
+			}
+			tired(slave);
+		}
 
 		if (slave.vagina === 0 && canDoVaginal(slave)) {
 			r += ` A `;
diff --git a/src/events/RESS/muscles.js b/src/events/RESS/muscles.js
index cbe2e93b62d76a394f4479047fabedd52c5e2cc6..8f8e32c68d481e22e41ccdd0e25e16ff59942a76 100644
--- a/src/events/RESS/muscles.js
+++ b/src/events/RESS/muscles.js
@@ -175,7 +175,11 @@ App.Events.RESSMuscles = class RESSMuscles extends App.Events.BaseEvent {
 			t.push(`${He} dominantly fucks you, ${his} muscles flexing powerfully with every thrust. You're no slouch when it comes to muscles yourself, so when you feel ${him} tense with orgasm you wrap your legs around ${him} and hilt ${him} deep inside you. This only encourages ${him} to fuck you harder, quickly bring you to climax as well. ${He} gently carries you to your couch, where ${he} slides in behind you for a little post-coitus spooning. You definitely appreciate ${his} gains after such a good fuck. <span class="trust inc">${His} confidence in ${his} place has increased,</span> as has ${his} <span class="devotion inc">love for you.</span>`);
 			eventSlave.trust += 4;
 			eventSlave.devotion += 4;
-			seX(eventSlave, "penetrative", V.PC, "vaginal");
+			if (V.PC.vagina !== -1) {
+				seX(eventSlave, "penetrative", V.PC, "anal");
+			} else {
+				seX(eventSlave, "penetrative", V.PC, "vaginal");
+			}
 			if (canImpreg(V.PC, eventSlave)) {
 				knockMeUp(V.PC, 50, 0, eventSlave.ID);
 			}
diff --git a/src/js/SlaveState.js b/src/js/SlaveState.js
index bfe1313c4b6bacb7b2b37b4e0183ba0a7fc3145e..cf787f4df749f6cc223f12c5d1aa0ed129e451a3 100644
--- a/src/js/SlaveState.js
+++ b/src/js/SlaveState.js
@@ -38,6 +38,7 @@ App.Entity.RuleState = class RuleState {
 		this.living = "spare";
 		/**
 		 * * "none"
+		 * * "cruel"
 		 * * "restrictive"
 		 * * "permissive"
 		 * * "mandatory"
diff --git a/src/uncategorized/arcade.tw b/src/uncategorized/arcade.tw
index 403a8e3358b0e07db48ce61d8e754cf23b63c803..ff29e44aa97626a585b961dd1b6468dc5c20e2e8 100644
--- a/src/uncategorized/arcade.tw
+++ b/src/uncategorized/arcade.tw
@@ -134,7 +134,7 @@
 			[[Decrease power|Arcade][$arcadeUpgradeHealth = 1]]
 		</div>
 	<<elseif $arcadeUpgradeHealth == 1>>
-		It has been upgraded with curative injectors. inmates will be kept alive and productive, so they may be held locked in place for as long as necessary and available for use.
+		It has been upgraded with curative injectors. Inmates will be kept alive and productive, so they may be held locked in place for as long as necessary and available for use.
 		<div class="choices">
 			[[Increase power|Arcade][$arcadeUpgradeHealth = 2]] | [[Turn off|Arcade][$arcadeUpgradeHealth = 0]]
 		</div>
diff --git a/src/uncategorized/saRules.tw b/src/uncategorized/saRules.tw
index 0f89b59cb3e5d96bd17efa56b7d295a3c6d8687e..e97817e4c5281e31b066819d4ad4e7e813839fd1 100644
--- a/src/uncategorized/saRules.tw
+++ b/src/uncategorized/saRules.tw
@@ -5750,6 +5750,54 @@
 				<</if>>
 			<</if>>
 
+			/* rules rest block only applies to certain jobs for now - may consider dropping the condition during finalization */
+			<<if ["work a glory hole"].includes($slaves[$i].assignment)>>
+				<<if $slaves[$i].rules.rest == "mandatory">>
+					<<if ($slaves[$i].devotion <= 20)>>
+						Getting a day off each week @@.mediumaquamarine;builds feelings of liberty@@ a slave shouldn't have.
+						<<set $slaves[$i].trust += 3>>
+					<<else>>
+						$He appreciates having a weekly day off and takes it as a sign that $he has a @@.mediumaquamarine;caring <<= WrittenMaster()>>.@@
+						<<set $slaves[$i].trust += 1>>
+					<</if>>
+				<<elseif $slaveUsedRest>>
+					<<if $slaves[$i].rules.rest == "permissive">>
+						<<if ($slaves[$i].devotion <= 20)>>
+							$He's permitted to rest whenever $he feels even the slightest bit tired; @@.mediumaquamarine;a privilege not lost on $him.@@
+							<<set $slaves[$i].trust += 2>>
+						<<else>>
+							$He @@.hotpink;likes@@ that you @@.mediumaquamarine;care enough@@ to let him rest when he gets tired.
+							<<set $slaves[$i].devotion += 1>>
+							<<set $slaves[$i].trust += 1>>
+						<</if>>
+					<<elseif $slaves[$i].rules.rest == "restrictive">>
+						<<if ($slaves[$i].devotion <= -20)>>
+							$He's permitted to rest when fatigue sets in, but not enough to shake $his tiredness; $he feels this @@.gold;deprivation@@ is intentional.
+							<<set $slaves[$i].trust -= 1>>
+						<<elseif ($slaves[$i].devotion <= 20)>>
+							$He's permitted to rest when fatigue sets in, and @@.hotpink;understands@@ this is less for $his wellbeing and more to prevent $him from become unproductive.
+							<<set $slaves[$i].devotion += 1>>
+						<<else>>
+							$He's permitted to rest when fatigue sets in and is @@.mediumaquamarine;thankful@@ you would allow $him the privilege so that $he may serve you better.
+							<<set $slaves[$i].trust += 1>>
+						<</if>>
+					<<elseif $slaves[$i].rules.rest == "cruel">>
+						<<if ($slaves[$i].devotion <= -20)>>
+							$He's @@.gold;terrified@@ that the only reason $he is given any time to rest at all is just to prolong your torment of $him.
+							<<set $slaves[$i].trust -= 3>>
+						<<elseif ($slaves[$i].devotion <= 20)>>
+							You work $him to the bone and only allow $him rest when on the verge of collapsing. $He @@.gold;fears@@ this @@.mediumorchid;cruelty@@ is just the beginning.
+							<<set $slaves[$i].trust -= 3>>
+							<<set $slaves[$i].devotion -= 3>>
+						<<else>>
+							Only being allowed rest when on the verge of collapsing @@.mediumorchid;shakes $his faith@@ in you a little.
+							<<set $slaves[$i].devotion -= 2>>
+						<</if>>
+					<</if>>
+					<<unset $slaveUsedRest>>
+				<</if>>
+			<</if>>
+
 			<<if ($universalRulesConsent == 0)>>
 				<<if ($slaves[$i].devotion <= 20)>>
 					<<if ($slaves[$i].trust > -10)>>
diff --git a/src/uncategorized/slaveInteract.tw b/src/uncategorized/slaveInteract.tw
index 27b6312ae845bbda60c3feb2ffb1b682c1375830..ff492afca56eb001cec9f782233f677da74b1239 100644
--- a/src/uncategorized/slaveInteract.tw
+++ b/src/uncategorized/slaveInteract.tw
@@ -475,6 +475,7 @@
 			/*
 			<br>Sleep Rules: ''<span id="restRules">$slaves[_i].rules.rest</span>.''
 			<<link "None">><<set $slaves[_i].rules.rest = "none">><<replace "#restRules">>$slaves[_i].rules.rest<</replace>><</link>> |
+			<<link "Cruel">><<set $slaves[_i].rules.rest = "cruel">><<replace "#restRules">>$slaves[_i].rules.rest<</replace>><</link>> |
 			<<link "Restrictive">><<set $slaves[_i].rules.rest = "restrictive">><<replace "#restRules">>$slaves[_i].rules.rest<</replace>><</link>> |
 			<<link "Permissive">><<set $slaves[_i].rules.rest = "permissive">><<replace "#restRules">>$slaves[_i].rules.rest<</replace>><</link>> |
 			<<link "Mandatory">><<set $slaves[_i].rules.rest = "mandatory">><<replace "#restRules">>$slaves[_i].rules.rest<</replace>><</link>> |