diff --git a/src/endWeek/saRules_old.js b/src/endWeek/saRules_old.js
index 85ed0e37dc10a9d5ddf6a3459f0ef1bd62cd1c0b..491d9382acfc594875cebe9dbc130b6d591fcdef 100644
--- a/src/endWeek/saRules_old.js
+++ b/src/endWeek/saRules_old.js
@@ -4,8 +4,7 @@
 	const
 		PC = V.PC,
 		energy = V.freeSexualEnergy,
-		averageDick = V.averageDick,
-		slaves = V.slaves;
+		averageDick = V.averageDick;
 
 	/**
 	 * @param {App.Entity.SlaveState} slave
@@ -98,6 +97,7 @@
 										r += `is forbidden to masturbate or seek sexual release, which <span class="mediumorchid">highly frustrates</span> ${him}. `;
 										slave.devotion -= 2;
 									}
+									/* r += `${noReleaseDrugEffects(slave)}`; - port it from saRulesWidgets when we need it */
 								}
 							} else if (!App.Utils.hasNonassignmentSex(slave) && release.masturbation === 1) {
 								if (slave.devotion <= 20) {
@@ -137,8 +137,9 @@
 							} else { // hasNonassignmentSex is true
 								if (!App.Utils.hasFamilySex(slave) && release.slaves === 0) {
 									// no family and no other slaves, so must be his partner
-									r += `finds frequent sexual release with his ${relationshipTerm(slave)} <span class="lightgreen">${getSlave(slave.relationshipTarget).slaveName}</span>, which he is <span class="mediumaquamarine">thankful for</span>. `;
-									slave.need -= 20; // TODO: probably should be based on BOTH slaves' need, leaving the less needy partner slighly frustrated
+									r += `finds frequent sexual release with his ${relationshipTerm(slave)} <span class="lightgreen">${getSlave(slave.relationshipTarget).slaveName},</span> which he is <span class="mediumaquamarine">thankful for.</span> `;
+									/* r += `${partnerDrugEffects(slave)}`; - port it from saRulesWidgets when we need it */
+									slave.need -= 20; // TODO: probably should be based on BOTH slaves' need, leaving the less needy partner slightly frustrated
 									slave.trust++;
 								} else if (!V.universalRulesConsent) {
 									const whom = (release.slaves === 1) ? `other slaves` : `${his} family`;
@@ -1060,7 +1061,11 @@
 					SimpleSexAct.Slave(slave, 7);
 					break;
 				case "cumslut":
-					r += `suck or be sucked by any slave ${he} fancies. `;
+					if (slave.rules.release.slaves === 1) {
+						r += `suck or be sucked by any slave ${he} fancies. `;
+					} else {
+						r += `suck or be sucked by any relative ${he} fancies. `;
+					}
 					fuckCount = jsRandom(5, 15);
 					slave.counter.oral += fuckCount;
 					V.oralTotal += fuckCount;
diff --git a/src/js/economyJS.js b/src/js/economyJS.js
index 1d87f72018f4b2392fa33f9c08080ccbdd2eeb27..792083c0306dfc87624eab738247e6a0707221ea 100644
--- a/src/js/economyJS.js
+++ b/src/js/economyJS.js
@@ -1421,7 +1421,7 @@ window.slaveJobValues = function(lowerClassSexDemandRef, middleClassSexDemandRef
 
 		// The quality/value of each sexual act
 		s.sexQuality = FResult(s);
-		if (!App.Utils.hasNonAssignmentSex(s) && s.rules.reward !== "orgasm" && s.energy >= 20) {
+		if (!App.Utils.hasNonassignmentSex(s) && s.rules.reward !== "orgasm" && s.energy >= 20) {
 			s.sexQuality += 2;
 		}
 		if (canDoAnal(s) && s.anus === 0) {
diff --git a/src/js/releaseRules.js b/src/js/releaseRules.js
index b622efdbdf67798a96533c965fd2db8bf70fcf59..07f353a444c00a914ed7dd6df9f10bcffbaa186f 100644
--- a/src/js/releaseRules.js
+++ b/src/js/releaseRules.js
@@ -56,6 +56,15 @@ App.Utils.hasNonassignmentSex = function hasNonassignmentSex(slave) {
 	return (slave.rules.release.slaves === 1) || this.hasFamilySex(slave) || this.hasPartnerSex(slave);
 };
 
+/**
+ * Returns true if there is any restriction at all on how a slave may choose to get off.
+ * @param {App.Entity.SlaveState} slave
+ * @returns {boolean}
+ */
+App.Utils.releaseRestricted = function releaseRestricted(slave) {
+	return (slave.rules.release.slaves === 0) || (slave.rules.release.family === 0) || (slave.rules.release.masturbation === 0) || (slave.rules.release.partner === 0);
+};
+
 /**
  * Returns a short summary of the slave's release rules
  * @param {App.Entity.SlaveState} slave
@@ -168,7 +177,7 @@ App.Desc.releaseDesc = function releaseDesc(slave) {
 			r += "other slaves; $he must find sexual release in $his duties.";
 		}
 	} else if (rel.masturbation === 0 && rel.partner === 0 && includeFamily === 1 && rel.slaves === 0 && rel.master === 0) {
-		r += "$he is not allowed to masturbate. $He is only allowed to acheive sexual release with close family members,";
+		r += "$he is not allowed to masturbate. $He is only allowed to achieve sexual release with close family members,";
 		appendFrequency = true;
 	} else if (rel.masturbation === 0 && rel.partner === 0 && includeFamily === 0 && rel.slaves === 0 && rel.master === 1) {
 		r += "$he is not allowed to masturbate. $He must find you if $he wants sexual release,";
diff --git a/src/uncategorized/saRules.tw b/src/uncategorized/saRules.tw
index 3062b5fde3c6c80af278d4fd701214118f95717b..b1586cb4733706731e3d7d580b41dbdcdec20ff9 100644
--- a/src/uncategorized/saRules.tw
+++ b/src/uncategorized/saRules.tw
@@ -2,8 +2,6 @@
 
 <<set _release = $slaves[$i].rules.release>>
 
-/* TODO: may need updating to detail effects of chastity */
-
 <<if $slaves[$i].fuckdoll == 0>>
 	$He
 	<<if $slaves[$i].fetish == "mindbroken">>
@@ -25,14 +23,14 @@
 						$He hates $himself for climaxing, and knows the mild aphrodisiacs in the food are forcing $his arousal, @@.gold;frightening $him.@@
 						<<set $slaves[$i].trust -= 1>>
 					<</if>>
-					<<set $slaves[$i].need -= 20>>
-				<<elseif (_release != "permissive") && (_release != "masturbation") && (_release != "chastity")>>
-					gets off at work, so being unable to sate $his urges doesn't affect $him seriously.
-					<<set $slaves[$i].need -= 20>>
-				<<else>>
+				<<elseif App.Utils.hasNonassignmentSex($slaves[$i])>>
+					gets off at work as well as during $his rest time.
+				<<elseif _release.masturbation == 0>>
 					gets off at work, so being unable to touch $himself doesn't bother $him.
-					<<set $slaves[$i].need -= 20>>
+				<<else>>
+					gets off at work, so being unable to sate $his urges doesn't affect $him seriously.
 				<</if>>
+				<<set $slaves[$i].need -= 20>>
 			<<else>>
 				wasn't a popular enough hole to sate $his arousal, leaving $him @@.gold;uncomfortably horny@@ despite $his conditions.
 				<<set $slaves[$i].trust -= 3>>
@@ -47,31 +45,43 @@
 		<<case "be the Madam">>
 			<<set $slaves[$i].need -= ($BrothiIDs.length*10)>>
 			<<if $slaves[$i].energy <= 20>>
-				is frigid and has little interest in getting off<<if (_release != "permissive")>>, making the rule restricting $his sexual outlets superfluous<</if>>.
+				is frigid and has little interest in getting off<<if App.Utils.releaseRestricted($slaves[$i])>>, making the rule restricting $his sexual outlets superfluous<</if>>.
 				<<set $slaves[$i].need = 0>>
 			<<elseif $slaves[$i].need < $slaves[$i].needCap*0.5>>
-				<<if (_release != "permissive") && (_release != "masturbation") && (_release != "chastity")>>
-					gets off at work, so being forbidden from masturbation doesn't really bother $him.
-					<<set $slaves[$i].need -= 20>>
+				<<if App.Utils.hasNonassignmentSex($slaves[$i])>>
+					gets off at work as well as during $his rest time.
+				<<elseif _release.masturbation == 0>>
+					gets off at work, so being unable to touch $himself doesn't bother $him.
 				<<else>>
-					gets off at work, so $he doesn't feel the need for release that often.
-					<<set $slaves[$i].need -= 20>>
+					gets off at work, so being unable to sate $his urges doesn't affect $him seriously.
 				<</if>>
+				<<set $slaves[$i].need -= 20>>
 			<<else>>
-				<<if (_release == "restrictive" || _release == "chastity")>>
-					willingly begs you to
-					<<saRulesPlayerFetishPlay>>
-					whenever $he crosses paths with you.
-					<<saRulesPlayerEnergy>>
-					<<saRulesPlayerDiscoversFetish>>
-					<<saRulesPlayerDrugEffects>>
-				<<elseif (_release == "masturbation")>>
+				<<if (!App.Utils.hasNonassignmentSex($slaves[$i]) && _release.masturbation === 0)>>
+					<<if (_release.master === 1)>>
+						willingly begs you to
+						<<saRulesPlayerFetishPlay>>
+						whenever $he crosses paths with you.
+						<<saRulesPlayerEnergy>>
+						<<saRulesPlayerDiscoversFetish>>
+						<<saRulesPlayerDrugEffects>>
+					<<else>> /* _release.master === 0 */
+						<<saRulesNoRelease>>
+						<<saRulesNoReleaseDrugEffects>>
+					<</if>>
+				<<elseif (!App.Utils.hasNonassignmentSex($slaves[$i]) && _release.masturbation === 1)>>
 					<<if ($slaves[$i].devotion < 80)>>
 						is a little disappointed that $he's limited to $his <<if !hasAnyArms($slaves[$i])>>imagination<<else>>hand<<if hasBothArms($slaves[$i])>>s<</if>><</if>> and toys, but @@.mediumaquamarine;trusts you know what's best for $him.@@
 						<<set $slaves[$i].trust += 1, $slaves[$i].need = 0>>
 					<<else>>
-						@@.mediumaquamarine;trusts your judgment@@ that only $he really knows how to pleasure $himself, though $he @@.mediumorchid;often wonders why you don't use $him.@@
-						<<set $slaves[$i].trust += 1, $slaves[$i].devotion -= 2, $slaves[$i].need = 0>>
+						@@.mediumaquamarine;trusts your judgment@@ that only $he really knows how to pleasure
+						<<if _release.master === 0>>
+							$himself, though $he @@.mediumorchid;often wonders why you don't use $him.@@
+							<<set $slaves[$i].devotion -= 2>>
+						<<else>>
+							$himself.
+						<</if>>
+						<<set $slaves[$i].trust += 1, $slaves[$i].need = 0>>
 					<</if>>
 					<<if $slaves[$i].devotion > 20>>
 						When $he does play with $himself, $he
@@ -79,14 +89,19 @@
 						<<saRulesMasturbationDiscoversFetish>>
 					<</if>>
 					<<saRulesMasturbationDrugEffects>>
-				<<else>> /* releaseRules not restrictive */
-					<<if ($universalRulesConsent == 0)>>
+				<<else>> /* hasNonassignmentSex is true */
+					<<if (!App.Utils.hasFamilySex($slaves[$i]) && _release.slaves === 0)>>
+						/* no family and no other slaves, so release must be coming from her partner */
+						finds frequent sexual release with his <<= relationshipTerm($slaves[$i])>> @@.lightgreen;<<= getSlave($slaves[$i].relationshipTarget).slaveName>>,@@ which $he is @@.mediumaquamarine;thankful for.@@
+						<<set $slaves[$i].trust++, $slaves[$i].need -= 20>> /* TODO: probably should be based on BOTH slaves' need, leaving the less needy partner slightly frustrated */
+						<<saRulesPartnerDrugEffects>>
+					<<elseif ($universalRulesConsent == 0)>>
 						happily @@.mediumaquamarine;avails $himself@@ of your permission to
 						<<set $slaves[$i].trust += 1, $slaves[$i].need = 0>>
 						<<saRulesRapeFetish>>
 						<<saRulesRapeDiscoversFetish>>
 					<<else>> /* universalRulesConsent is not zero */
-						@@.mediumaquamarine;relies@@ on your other slaves for mutual satisfaction,
+						@@.mediumaquamarine;relies@@ on <<if _release.slaves === 1>>your other slaves<<else>>$his family<</if>> for mutual satisfaction,
 						<<set $slaves[$i].trust += 1, $slaves[$i].need = 0>>
 						<<saRulesConsentFetish>>
 						<<saRulesConsentDiscoversFetish>>
@@ -99,7 +114,7 @@
 			<<set $slaves[$i].devotion += 1, $slaves[$i].trust += 1>>
 
 			<<if ($universalRulesConsent == 0)>>
-				<<if (_release != "restrictive" && _release != "chastity" && _release != "chastity")>>
+				<<if (_release.slaves === 1)>>
 					<<if ($slaves[$i].energy > 95)>>
 						<<if $BrothiIDs.length > 2>>
 							Under the rules, $he's allowed to demand that other slaves get $him off, and $he @@.hotpink;adores@@ you for leaving plentiful outlets for $his nymphomania under $his care.
@@ -215,35 +230,40 @@
 						$He hates $himself for climaxing, and knows the mild aphrodisiacs in the food are forcing $his arousal, @@.gold;frightening $him.@@
 						<<set $slaves[$i].trust -= 1>>
 					<</if>>
-					<<set $slaves[$i].need -= 20>>
-				<<elseif (_release != "permissive") && (_release != "masturbation") && (_release != "chastity")>>
-					gets off at work, so being forbidden to masturbate doesn't affect $him seriously.
-					<<set $slaves[$i].need -= 20>>
+				<<elseif App.Utils.hasNonassignmentSex($slaves[$i])>>
+					gets off at work as well as during $his rest time.
+				<<elseif _release.masturbation == 0>>
+					gets off at work, so being unable to touch $himself doesn't bother $him.
 				<<else>>
-					gets off at work, so $he doesn't feel the need to masturbate frequently.
-					<<set $slaves[$i].need -= 20>>
+					gets off at work, so being unable to sate $his urges doesn't affect $him seriously.
 				<</if>>
+				<<set $slaves[$i].need -= 20>>
 			<<else>>
-				<<if (_release == "restrictive" || _release == "chastity")>>
-					<<if ($slaves[$i].devotion <= 20) && ($slaves[$i].trust >= -20)>>
-						refuses to come up to the penthouse for sexual release, and is @@.gold;severely punished@@ for illicit masturbation.
-						<<set $slaves[$i].trust -= 2>>
-					<<elseif ($slaves[$i].devotion <= 50)>>
-						<<if $slaves[$i].devotion <= 20>>
-							occasionally comes to the penthouse to beg for sexual release.
-						<<else>>
-							doesn't mind having to come to the penthouse to beg for sexual release.
-						<</if>>
-						<<saRulesPlayerEnergy>>
-					<<else>> /* $slaves[$i].devotion > 50 */
-						willingly comes up to the penthouse and begs you to
-						<<saRulesPlayerFetishPlay>>
-						every break $he gets.
-						<<saRulesPlayerEnergy>>
-					<</if>> /* closes $slaves[$i].devotion > 50 */
-					<<saRulesPlayerDiscoversFetish>>
-					<<saRulesPlayerDrugEffects>>
-				<<elseif (_release == "masturbation")>>
+				<<if (!App.Utils.hasNonassignmentSex($slaves[$i]) && _release.masturbation === 0)>>
+					<<if _release.master == 1>>
+						<<if ($slaves[$i].devotion <= 20) && ($slaves[$i].trust >= -20)>>
+							refuses to come up to the penthouse for sexual release, and is @@.gold;severely punished@@ for illicit masturbation.
+							<<set $slaves[$i].trust -= 2>>
+						<<elseif ($slaves[$i].devotion <= 50)>>
+							<<if $slaves[$i].devotion <= 20>>
+								occasionally comes to the penthouse to beg for sexual release.
+							<<else>>
+								doesn't mind having to come to the penthouse to beg for sexual release.
+							<</if>>
+							<<saRulesPlayerEnergy>>
+						<<else>> /* $slaves[$i].devotion > 50 */
+							willingly comes up to the penthouse and begs you to
+							<<saRulesPlayerFetishPlay>>
+							every break $he gets.
+							<<saRulesPlayerEnergy>>
+						<</if>> /* closes $slaves[$i].devotion > 50 */
+						<<saRulesPlayerDiscoversFetish>>
+						<<saRulesPlayerDrugEffects>>
+					<<else>> //* _release.master === 0 */
+						<<saRulesNoRelease>>
+						<<saRulesNoReleaseDrugEffects>>
+					<</if>>
+				<<elseif (!App.Utils.hasNonassignmentSex($slaves[$i]) && _release.masturbation === 1)>>
 					<<if $slaves[$i].sexualFlaw == "attention whore">>
 						@@.hotpink;enjoys being allowed to masturbate,@@ especially since it's often to the pleasure of an aroused client.
 						<<set $slaves[$i].devotion += 1, $slaves[$i].need = 0>>
@@ -260,8 +280,14 @@
 						is a little disappointed that $he's limited to $his <<if !hasAnyArms($slaves[$i])>>imagination<<else>>hand<<if hasBothArms($slaves[$i])>>s<</if>><</if>> and toys, but @@.mediumaquamarine;trusts you know what's best for $him.@@
 						<<set $slaves[$i].trust += 1, $slaves[$i].need = 0>>
 					<<else>>
-						@@.mediumaquamarine;trusts your judgment@@ that only $he really knows how to pleasure $himself, though $he @@.mediumorchid;often wonders why you don't use $him.@@
-						<<set $slaves[$i].trust += 1, $slaves[$i].devotion -= 2, $slaves[$i].need = 0>>
+						@@.mediumaquamarine;trusts your judgment@@ that only $he really knows how to pleasure
+						<<if _release.master === 0>>
+							$himself, though $he @@.mediumorchid;often wonders why you don't use $him.@@
+							<<set $slaves[$i].devotion -= 2>>
+						<<else>>
+							$himself.
+						<</if>>
+						<<set $slaves[$i].trust += 1, $slaves[$i].need = 0>>
 					<</if>>
 					<<if $slaves[$i].devotion > 20>>
 						When $he does play with $himself, $he
@@ -269,22 +295,28 @@
 						<<saRulesMasturbationDiscoversFetish>>
 					<</if>>
 					<<saRulesMasturbationDrugEffects>>
-				<<else>> /* releaseRules not restrictive */
-					<<if ($universalRulesConsent == 0)>>
+				<<else>> /* hasNonassignmentSex is true */
+					<<set _whom = (_release.slaves === 1) ? "other slaves" : $his + " family">>
+					<<if (!App.Utils.hasFamilySex($slaves[$i]) && _release.slaves === 0)>>
+						/* no family and no other slaves, so release comes from her partner */
+						finds frequent sexual release with his <<= relationshipTerm($slaves[$i])>> @@.lightgreen;<<= getSlave($slaves[$i].relationshipTarget).slaveName>>,@@ which $he is @@.mediumaquamarine;thankful for.@@
+						<<set $slaves[$i].trust++, $slaves[$i].need -= 20>> /* TODO: probably should be based on BOTH slaves' need, leaving the less needy partner slightly frustrated */
+						<<saRulesPartnerDrugEffects>>
+					<<elseif ($universalRulesConsent == 0)>>
 						<<if ($slaves[$i].devotion <= 20) && ($slaves[$i].trust >= -20)>>
-							<<if (_release == "permissive")>>
+							<<if (_release.masturbation === 1)>>
 								masturbates whenever $he can find a private moment to take care of the urges induced by the food, @@.mediumaquamarine;slightly reducing $his fear@@ of you.
 								<<set $slaves[$i].trust += 1, $slaves[$i].need = 0>>
 							<<else>>
-								refuses to use other slaves to get off, and is forced to take additional clients @@.gold;as punishment@@ for illicit masturbation.
+								refuses to use _whom to get off, and is forced to take additional clients @@.gold;as punishment@@ for illicit masturbation.
 								<<set $slaves[$i].trust -= 2, $slaves[$i].need -= 10>>
 							<</if>>
 						<<elseif ($slaves[$i].devotion <= 20)>>
-							<<if (_release == "permissive")>>
-								prefers to masturbate rather than demanding sex from other slaves or giving free samples, @@.mediumaquamarine;slightly reducing $his fear@@ of you.
+							<<if (_release.masturbation === 1)>>
+								prefers to masturbate rather than demanding sex from _whom or giving free samples, @@.mediumaquamarine;slightly reducing $his fear@@ of you.
 								<<set $slaves[$i].trust += 1, $slaves[$i].need = 0>>
 							<<else>>
-								is forced by the urges induced by the food to either demand sex from other slaves or attempt to attract additional clients. $He @@.hotpink;hates $himself@@ for it.
+								is forced by the urges induced by the food to either demand sex from _whom or attempt to attract additional clients. $He @@.hotpink;hates $himself@@ for it.
 								<<set $slaves[$i].devotion += 1, $slaves[$i].need *= 0.5>>
 							<</if>>
 						<<elseif ($slaves[$i].devotion <= 50)>>
@@ -300,28 +332,28 @@
 						<</if>>
 					<<else>> /* universalRulesConsent is not zero */
 						<<if ($slaves[$i].devotion <= 20) && ($slaves[$i].trust >= -20)>>
-							<<if (_release == "permissive")>>
-								prefers to masturbate rather than asking other slaves for sex or giving free samples, @@.mediumaquamarine;slightly reducing $his fear@@ of you.
+							<<if (_release.masturbation === 1)>>
+								prefers to masturbate rather than asking _whom for sex or giving free samples, @@.mediumaquamarine;slightly reducing $his fear@@ of you.
 								<<set $slaves[$i].trust += 1, $slaves[$i].need = 0>>
 							<<else>>
-								refuses to ask other slaves for sex, and is @@.gold;severely punished@@ for illicit masturbation.
+								refuses to ask _whom for sex, and is @@.gold;severely punished@@ for illicit masturbation.
 								<<set $slaves[$i].trust -= 2, $slaves[$i].need -= 10>>
 							<</if>>
 						<<elseif ($slaves[$i].devotion <= 20)>>
-							<<if (_release == "permissive")>>
-								prefers to masturbate rather than trading sex with other slaves or giving free samples, @@.mediumaquamarine;slightly reducing $his fear@@ of you.
+							<<if (_release.masturbation === 1)>>
+								prefers to masturbate rather than trading sex with _whom or giving free samples, @@.mediumaquamarine;slightly reducing $his fear@@ of you.
 								<<set $slaves[$i].trust += 1, $slaves[$i].need = 0>>
 							<<else>>
-								is forced by the urges induced by the food to either swap sex with other slaves or attempt to attract additional clients. $He @@.hotpink;hates $himself@@ for it.
+								is forced by the urges induced by the food to either swap sex with _whom or attempt to attract additional clients. $He @@.hotpink;hates $himself@@ for it.
 								<<set $slaves[$i].devotion += 1, $slaves[$i].need *= 0.5>>
 							<</if>>
 						<<elseif ($slaves[$i].devotion <= 50)>>
-							@@.hotpink;accepts having to ask@@ other slaves for sex,
+							@@.hotpink;accepts having to ask@@ _whom for sex,
 							<<set $slaves[$i].devotion += 1, $slaves[$i].need = 0>>
 							<<saRulesConsentFetish>>
 							<<saRulesConsentDiscoversFetish>>
 						<<else>>
-							@@.mediumaquamarine;relies@@ on your other slaves for mutual satisfaction,
+							@@.mediumaquamarine;relies@@ on _whom for mutual satisfaction,
 							<<set $slaves[$i].trust += 1, $slaves[$i].need = 0>>
 							<<saRulesConsentFetish>>
 							<<saRulesConsentDiscoversFetish>>
@@ -394,7 +426,7 @@
 							Under the rules, $he will someday find $himself constantly molested by other slaves, but $he's already in such constant terror it that it doesn't cross $his mind.
 						<</if>>
 					<</if>>
-				<<elseif (_release != "restrictive" && _release != "chastity" && _release != "chastity")>>
+				<<elseif (_release.slaves === 1)>>
 					<<if ($slaves[$i].energy > 95)>>
 						<<if $BrothiIDs.length > 2>>
 							Under the rules, $he's allowed to demand that other slaves get $him off, and $he @@.hotpink;adores@@ you for providing plentiful outlets for $his nymphomania.
@@ -540,31 +572,43 @@
 			<</if>>
 		<<case "be the DJ">>
 			<<if $slaves[$i].energy <= 20>>
-				is frigid and has little interest in getting off<<if (_release != "permissive")>>, making the rule restricting $his sexual outlets superfluous<</if>>.
+				is frigid and has little interest in getting off<<if App.Utils.releaseRestricted($slaves[$i])>>, making the rule restricting $his sexual outlets superfluous<</if>>.
 				<<set $slaves[$i].need = 0>>
 			<<elseif $slaves[$i].need < $slaves[$i].needCap*0.5>>
-				<<if (_release != "permissive") && (_release != "masturbation") && (_release != "chastity")>>
-					gets off at work, so being forbidden from masturbation doesn't really bother $him.
-					<<set $slaves[$i].need -= 20>>
+				<<if App.Utils.hasNonassignmentSex($slaves[$i])>>
+					gets off at work as well as during $his rest time.
+				<<elseif _release.masturbation == 0>>
+					gets off at work, so being unable to touch $himself doesn't bother $him.
 				<<else>>
-					gets off at work, so $he doesn't feel the need for release that often.
-					<<set $slaves[$i].need -= 20>>
+					gets off at work, so being unable to sate $his urges doesn't affect $him seriously.
 				<</if>>
+				<<set $slaves[$i].need -= 20>>
 			<<else>>
-				<<if (_release == "restrictive" || _release == "chastity")>>
-					willingly begs you to
-					<<saRulesPlayerFetishPlay>>
-					whenever $he crosses paths with you.
-					<<saRulesPlayerEnergy>>
-					<<saRulesPlayerDiscoversFetish>>
-					<<saRulesPlayerDrugEffects>>
-				<<elseif (_release == "masturbation")>>
+				<<if (!App.Utils.hasNonassignmentSex($slaves[$i]) && _release.masturbation === 0)>>
+					<<if _release.master === 1>>
+						willingly begs you to
+						<<saRulesPlayerFetishPlay>>
+						whenever $he crosses paths with you.
+						<<saRulesPlayerEnergy>>
+						<<saRulesPlayerDiscoversFetish>>
+						<<saRulesPlayerDrugEffects>>
+					<<else>> /* _release.master === 0 */
+						<<saRulesNoRelease>>
+						<<saRulesNoReleaseDrugEffects>>
+					<</if>>
+				<<elseif (!App.Utils.hasNonassignmentSex($slaves[$i]) && _release.masturbation === 1)>>
 					<<if ($slaves[$i].devotion < 80)>>
 						is a little disappointed that $he's limited to $his <<if !hasAnyArms($slaves[$i])>>imagination<<else>>hand<<if hasBothArms($slaves[$i])>>s<</if>><</if>> and toys, but @@.mediumaquamarine;trusts you know what's best for $him.@@
 						<<set $slaves[$i].trust += 1, $slaves[$i].need = 0>>
 					<<else>>
-						@@.mediumaquamarine;trusts your judgment@@ that only $he really knows how to pleasure $himself, though $he @@.mediumorchid;often wonders why you don't use $him.@@
-						<<set $slaves[$i].trust += 1, $slaves[$i].devotion -= 2, $slaves[$i].need = 0>>
+						@@.mediumaquamarine;trusts your judgment@@ that only $he really knows how to pleasure
+						<<if _release.master === 0>>
+							$himself, though $he @@.mediumorchid;often wonders why you don't use $him.@@
+							<<set $slaves[$i].devotion -= 2>>
+						<<else>>
+							$himself.
+						<</if>>
+						<<set $slaves[$i].trust += 1, $slaves[$i].need = 0>>
 					<</if>>
 					<<if $slaves[$i].devotion > 20>>
 						When $he does play with $himself, $he
@@ -572,14 +616,19 @@
 						<<saRulesMasturbationDiscoversFetish>>
 					<</if>>
 					<<saRulesMasturbationDrugEffects>>
-				<<else>> /* releaseRules not restrictive */
-					<<if ($universalRulesConsent == 0)>>
+				<<else>> /* hasNonassignmentSex is true */
+					<<if (!App.Utils.hasFamilySex($slaves[$i]) && _release.slaves === 0)>>
+						/* no family and no other slaves, so release comes from her partner */
+						finds frequent sexual release with his <<= relationshipTerm($slaves[$i])>> @@.lightgreen;<<= getSlave($slaves[$i].relationshipTarget).slaveName>>,@@ which $he is @@.mediumaquamarine;thankful for.@@
+						<<set $slaves[$i].trust++, $slaves[$i].need -= 20>> /* TODO: probably should be based on BOTH slaves' need, leaving the less needy partner slightly frustrated */
+						<<saRulesPartnerDrugEffects>>
+					<<elseif ($universalRulesConsent == 0)>>
 						happily @@.mediumaquamarine;avails $himself@@ of your permission to
 						<<set $slaves[$i].trust += 1, $slaves[$i].need = 0>>
 						<<saRulesRapeFetish>>
 						<<saRulesRapeDiscoversFetish>>
 					<<else>> /* universalRulesConsent is not zero */
-						@@.mediumaquamarine;relies@@ on your other slaves for mutual satisfaction,
+						@@.mediumaquamarine;relies@@ on <<if _release.slaves === 1>>your other slaves<<else>>$his family<</if>> for mutual satisfaction,
 						<<set $slaves[$i].trust += 1, $slaves[$i].need = 0>>
 						<<saRulesConsentFetish>>
 						<<saRulesConsentDiscoversFetish>>
@@ -592,7 +641,7 @@
 			<<set $slaves[$i].devotion += 1, $slaves[$i].trust += 1>>
 
 			<<if ($universalRulesConsent == 0)>>
-				<<if (_release != "restrictive" && _release != "chastity" && _release != "chastity")>>
+				<<if (_release.slaves === 1)>>
 					<<if ($slaves[$i].energy > 95)>>
 						<<if $ClubiIDs.length > 2>>
 							Under the rules, $he's allowed to demand that other slaves get $him off, and $he @@.hotpink;adores@@ you for leaving plentiful, tantalizing, outlets for $his nymphomania under $his care.
@@ -716,35 +765,40 @@
 						$He hates $himself for climaxing, and knows the mild aphrodisiacs in the food are forcing $his arousal, @@.gold;frightening $him.@@
 						<<set $slaves[$i].trust -= 1>>
 					<</if>>
-					<<set $slaves[$i].need -= 20>>
-				<<elseif (_release != "permissive") && (_release != "masturbation") && (_release != "chastity")>>
-					gets off at work, so being forbidden to masturbate doesn't affect $him seriously.
-					<<set $slaves[$i].need -= 20>>
+				<<elseif App.Utils.hasNonassignmentSex($slaves[$i])>>
+					gets off at work as well as during $his rest time.
+				<<elseif _release.masturbation == 0>>
+					gets off at work, so being unable to touch $himself doesn't bother $him.
 				<<else>>
-					gets off at work, so $he doesn't feel the need to masturbate frequently.
-					<<set $slaves[$i].need -= 20>>
+					gets off at work, so being unable to sate $his urges doesn't affect $him seriously.
 				<</if>>
+				<<set $slaves[$i].need -= 20>>
 			<<else>>
-				<<if (_release == "restrictive" || _release == "chastity")>>
-					<<if ($slaves[$i].devotion <= 20) && ($slaves[$i].trust >= -20)>>
-						refuses to come up to the penthouse for sexual release, and is @@.gold;severely punished@@ for illicit masturbation.
-						<<set $slaves[$i].trust -= 2>>
-					<<elseif ($slaves[$i].devotion <= 50)>>
-						<<if $slaves[$i].devotion <= 20>>
-							occasionally comes to the penthouse to beg for sexual release.
-						<<else>>
-							doesn't mind having to come to the penthouse to beg for sexual release.
-						<</if>>
-						<<saRulesPlayerEnergy>>
-					<<else>> /* $slaves[$i].devotion > 50 */
-						willingly comes up to the penthouse and begs you to
-						<<saRulesPlayerFetishPlay>>
-						every break $he gets.
-						<<saRulesPlayerEnergy>>
-					<</if>> /* closes $slaves[$i].devotion > 50 */
-					<<saRulesPlayerDiscoversFetish>>
-					<<saRulesPlayerDrugEffects>>
-				<<elseif (_release == "masturbation")>>
+				<<if (!App.Utils.hasNonassignmentSex($slaves[$i]) && _release.masturbation === 0)>>
+					<<if _release.master === 1>>
+						<<if ($slaves[$i].devotion <= 20) && ($slaves[$i].trust >= -20)>>
+							refuses to come up to the penthouse for sexual release, and is @@.gold;severely punished@@ for illicit masturbation.
+							<<set $slaves[$i].trust -= 2>>
+						<<elseif ($slaves[$i].devotion <= 50)>>
+							<<if $slaves[$i].devotion <= 20>>
+								occasionally comes to the penthouse to beg for sexual release.
+							<<else>>
+								doesn't mind having to come to the penthouse to beg for sexual release.
+							<</if>>
+							<<saRulesPlayerEnergy>>
+						<<else>> /* $slaves[$i].devotion > 50 */
+							willingly comes up to the penthouse and begs you to
+							<<saRulesPlayerFetishPlay>>
+							every break $he gets.
+							<<saRulesPlayerEnergy>>
+						<</if>> /* closes $slaves[$i].devotion > 50 */
+						<<saRulesPlayerDiscoversFetish>>
+						<<saRulesPlayerDrugEffects>>
+					<<else>> /* _release.master === 0 */
+						<<saRulesNoRelease>>
+						<<saRulesNoReleaseDrugEffects>>
+					<</if>>
+				<<elseif (!App.Utils.hasNonassignmentSex($slaves[$i]) && _release.masturbation === 1)>>
 					<<if $slaves[$i].sexualFlaw == "attention whore">>
 						@@.hotpink;enjoys being allowed to masturbate,@@ especially since it's often on stage for $clubName's amusement.
 						<<set $slaves[$i].devotion += 1, $slaves[$i].need = 0>>
@@ -761,8 +815,14 @@
 						is a little disappointed that $he's limited to $his <<if !hasAnyArms($slaves[$i])>>imagination<<else>>hand<<if hasBothArms($slaves[$i])>>s<</if>><</if>> and toys, but @@.mediumaquamarine;trusts you know what's best for $him.@@
 						<<set $slaves[$i].trust += 1, $slaves[$i].need = 0>>
 					<<else>>
-						@@.mediumaquamarine;trusts your judgment@@ that only $he really knows how to pleasure $himself, though $he @@.mediumorchid;often wonders why you don't use $him.@@
-						<<set $slaves[$i].trust += 1, $slaves[$i].devotion -= 2, $slaves[$i].need = 0>>
+						@@.mediumaquamarine;trusts your judgment@@ that only $he really knows how to pleasure
+						<<if _release.master === 0>>
+							$himself, though $he @@.mediumorchid;often wonders why you don't use $him.@@
+							<<set $slaves[$i].devotion -= 2>>
+						<<else>>
+							$himself.
+						<</if>>
+						<<set $slaves[$i].trust += 1, $slaves[$i].need = 0>>
 					<</if>>
 					<<if $slaves[$i].devotion > 20>>
 						When $he does play with $himself, $he
@@ -770,22 +830,28 @@
 						<<saRulesMasturbationDiscoversFetish>>
 					<</if>>
 					<<saRulesMasturbationDrugEffects>>
-				<<else>> /* releaseRules not restrictive */
-					<<if ($universalRulesConsent == 0)>>
+				<<else>> /* hasNonassignmentSex is true */
+					<<set _whom = (_release.slaves === 1) ? "other slaves" : $his + " family">>
+					<<if (!App.Utils.hasFamilySex($slaves[$i]) && _release.slaves === 0)>>
+						/* no family and no other slaves, so release comes from her partner */
+						finds frequent sexual release with his <<= relationshipTerm($slaves[$i])>> @@.lightgreen;<<= getSlave($slaves[$i].relationshipTarget).slaveName>>,@@ which $he is @@.mediumaquamarine;thankful for.@@
+						<<set $slaves[$i].trust++, $slaves[$i].need -= 20>> /* TODO: probably should be based on BOTH slaves' need, leaving the less needy partner slightly frustrated */
+						<<saRulesPartnerDrugEffects>>
+					<<elseif ($universalRulesConsent == 0)>>
 						<<if ($slaves[$i].devotion <= 20) && ($slaves[$i].trust >= -20)>>
-							<<if (_release == "permissive")>>
+							<<if (_release.masturbation === 1)>>
 								masturbates whenever $he can find a private moment to take care of the urges induced by the food, @@.mediumaquamarine;slightly reducing $his fear@@ of you.
 								<<set $slaves[$i].trust += 1, $slaves[$i].need = 0>>
 							<<else>>
-								refuses to use other slaves to get off, and is forced to spend time with the citizens and their wandering hands @@.gold;as punishment@@ for illicit masturbation.
+								refuses to use _whom to get off, and is forced to spend time with the citizens and their wandering hands @@.gold;as punishment@@ for illicit masturbation.
 								<<set $slaves[$i].trust -= 2, $slaves[$i].need -= 10>>
 							<</if>>
 						<<elseif ($slaves[$i].devotion <= 20)>>
-							<<if (_release == "permissive")>>
-								prefers to masturbate rather than demanding sex from other slaves or offering $himself up, @@.mediumaquamarine;slightly reducing $his fear@@ of you.
+							<<if (_release.masturbation === 1)>>
+								prefers to masturbate rather than demanding sex from _whom or offering $himself up, @@.mediumaquamarine;slightly reducing $his fear@@ of you.
 								<<set $slaves[$i].trust += 1, $slaves[$i].need = 0>>
 							<<else>>
-								is forced by the urges induced by the food to either demand sex from other slaves or offering $himself to patrons. $He @@.hotpink;hates $himself@@ for it.
+								is forced by the urges induced by the food to either demand sex from _whom or offering $himself to patrons. $He @@.hotpink;hates $himself@@ for it.
 								<<set $slaves[$i].devotion += 1, $slaves[$i].need *= 0.5>>
 							<</if>>
 						<<elseif ($slaves[$i].devotion <= 50)>>
@@ -801,28 +867,28 @@
 						<</if>>
 					<<else>> /* universalRulesConsent is not zero */
 						<<if ($slaves[$i].devotion <= 20) && ($slaves[$i].trust >= -20)>>
-							<<if (_release == "permissive")>>
-								prefers to masturbate rather than asking other slaves for sex or offering $himself to patrons, @@.mediumaquamarine;slightly reducing $his fear@@ of you.
+							<<if (_release.masturbation === 1)>>
+								prefers to masturbate rather than asking _whom for sex or offering $himself to patrons, @@.mediumaquamarine;slightly reducing $his fear@@ of you.
 								<<set $slaves[$i].trust += 1, $slaves[$i].need = 0>>
 							<<else>>
-								refuses to ask other slaves for sex, and is @@.gold;severely punished@@ for illicit masturbation.
+								refuses to ask _whom for sex, and is @@.gold;severely punished@@ for illicit masturbation.
 								<<set $slaves[$i].trust -= 2, $slaves[$i].need -= 10>>
 							<</if>>
 						<<elseif ($slaves[$i].devotion <= 20)>>
-							<<if (_release == "permissive")>>
-								prefers to masturbate rather than trading sex with other slaves or offering $himself up, @@.mediumaquamarine;slightly reducing $his fear@@ of you.
+							<<if (_release.masturbation === 1)>>
+								prefers to masturbate rather than trading sex with _whom or offering $himself up, @@.mediumaquamarine;slightly reducing $his fear@@ of you.
 								<<set $slaves[$i].trust += 1, $slaves[$i].need = 0>>
 							<<else>>
-								is forced by the urges induced by the food to either swap sex with other slaves or attempt to seduce amorous citizens. $He @@.hotpink;hates $himself@@ for it.
+								is forced by the urges induced by the food to either swap sex with _whom or attempt to seduce amorous citizens. $He @@.hotpink;hates $himself@@ for it.
 								<<set $slaves[$i].devotion += 1, $slaves[$i].need *= 0.5>>
 							<</if>>
 						<<elseif ($slaves[$i].devotion <= 50)>>
-							@@.hotpink;accepts having to ask@@ other slaves for sex,
+							@@.hotpink;accepts having to ask@@ _whom for sex,
 							<<set $slaves[$i].devotion += 1, $slaves[$i].need = 0>>
 							<<saRulesConsentFetish>>
 							<<saRulesConsentDiscoversFetish>>
 						<<else>>
-							@@.mediumaquamarine;relies@@ on your other slaves for mutual satisfaction,
+							@@.mediumaquamarine;relies@@ on _whom for mutual satisfaction,
 							<<set $slaves[$i].trust += 1, $slaves[$i].need = 0>>
 							<<saRulesConsentFetish>>
 							<<saRulesConsentDiscoversFetish>>
@@ -867,7 +933,7 @@
 							Under the rules, $he will someday find $himself constantly molested by other slaves, but $he's already in such constant terror it that it doesn't cross $his mind.
 						<</if>>
 					<</if>>
-				<<elseif (_release != "restrictive" && _release != "chastity" && _release != "chastity")>>
+				<<elseif (_release.slaves === 1)>>
 					<<if ($slaves[$i].energy > 95)>>
 						<<if $ClubiIDs.length > 2>>
 							Under the rules, $he's allowed to demand that other slaves get $him off, and $he @@.hotpink;adores@@ you for providing plentiful outlets for $his nymphomania.
@@ -1014,31 +1080,43 @@
 		<<case "be the Nurse">>
 			<<set $slaves[$i].need -= ($CliniciIDs.length*3)>>
 			<<if $slaves[$i].energy <= 20>>
-				is frigid and has little interest in getting off<<if (_release != "permissive")>>, making the rule restricting $his sexual outlets superfluous<</if>>.
+				is frigid and has little interest in getting off<<if App.Utils.releaseRestricted($slaves[$i])>>, making the rule restricting $his sexual outlets superfluous<</if>>.
 				<<set $slaves[$i].need = 0>>
 			<<elseif $slaves[$i].need < $slaves[$i].needCap*0.5>>
-				<<if (_release != "permissive") && (_release != "masturbation") && (_release != "chastity")>>
-					gets off at work, so being forbidden from masturbation doesn't really bother $him.
-					<<set $slaves[$i].need -= 20>>
+				<<if App.Utils.hasNonassignmentSex($slaves[$i])>>
+					gets off at work as well as during $his rest time.
+				<<elseif _release.masturbation == 0>>
+					gets off at work, so being unable to touch $himself doesn't bother $him.
 				<<else>>
-					gets off at work, so $he doesn't feel the need for release that often.
-					<<set $slaves[$i].need -= 20>>
+					gets off at work, so being unable to sate $his urges doesn't affect $him seriously.
 				<</if>>
+				<<set $slaves[$i].need -= 20>>
 			<<else>>
-				<<if (_release == "restrictive" || _release == "chastity")>>
-					willingly begs you to
-					<<saRulesPlayerFetishPlay>>
-					whenever $he crosses paths with you.
-					<<saRulesPlayerEnergy>>
-					<<saRulesPlayerDiscoversFetish>>
-					<<saRulesPlayerDrugEffects>>
-				<<elseif (_release == "masturbation")>>
+				<<if (!App.Utils.hasNonassignmentSex($slaves[$i]) && _release.masturbation === 0)>>
+					<<if _release.master === 1>>
+						willingly begs you to
+						<<saRulesPlayerFetishPlay>>
+						whenever $he crosses paths with you.
+						<<saRulesPlayerEnergy>>
+						<<saRulesPlayerDiscoversFetish>>
+						<<saRulesPlayerDrugEffects>>
+					<<else>> /* _release.master === 0 */
+						<<saRulesNoRelease>>
+						<<saRulesNoReleaseDrugEffects>>
+					<</if>>
+				<<elseif (!App.Utils.hasNonassignmentSex($slaves[$i]) && _release.masturbation === 1)>>
 					<<if ($slaves[$i].devotion < 80)>>
 						is a little disappointed that $he's limited to $his <<if !hasAnyArms($slaves[$i])>>imagination<<else>>hand<<if hasBothArms($slaves[$i])>>s<</if>><</if>> and toys, but @@.mediumaquamarine;trusts you know what's best for $him.@@
 						<<set $slaves[$i].trust += 1, $slaves[$i].need = 0>>
 					<<else>>
-						@@.mediumaquamarine;trusts your judgment@@ that only $he really knows how to pleasure $himself, though $he @@.mediumorchid;often wonders why you don't use $him.@@
-						<<set $slaves[$i].trust += 1, $slaves[$i].devotion -= 2, $slaves[$i].need = 0>>
+						@@.mediumaquamarine;trusts your judgment@@ that only $he really knows how to pleasure
+						<<if _release.master === 0>>
+							$himself, though $he @@.mediumorchid;often wonders why you don't use $him.@@
+							<<set $slaves[$i].devotion -= 2>>
+						<<else>>
+							$himself.
+						<</if>>
+						<<set $slaves[$i].trust += 1, $slaves[$i].need = 0>>
 					<</if>>
 					<<if $slaves[$i].devotion > 20>>
 						When $he does play with $himself, $he
@@ -1046,14 +1124,19 @@
 						<<saRulesMasturbationDiscoversFetish>>
 					<</if>>
 					<<saRulesMasturbationDrugEffects>>
-				<<else>> /* releaseRules not restrictive */
-					<<if ($universalRulesConsent == 0)>>
+				<<else>> /* hasNonassignmentSex is true */
+					<<if (!App.Utils.hasFamilySex($slaves[$i]) && _release.slaves === 0)>>
+						/* no family and no other slaves, so release comes from her partner */
+						finds frequent sexual release with his <<= relationshipTerm($slaves[$i])>> @@.lightgreen;<<= getSlave($slaves[$i].relationshipTarget).slaveName>>,@@ which $he is @@.mediumaquamarine;thankful for.@@
+						<<set $slaves[$i].trust++, $slaves[$i].need -= 20>> /* TODO: probably should be based on BOTH slaves' need, leaving the less needy partner slightly frustrated */
+						<<saRulesPartnerDrugEffects>>
+					<<elseif ($universalRulesConsent == 0)>>
 						happily @@.mediumaquamarine;avails $himself@@ of your permission to
 						<<set $slaves[$i].trust += 1, $slaves[$i].need = 0>>
 						<<saRulesRapeFetish>>
 						<<saRulesRapeDiscoversFetish>>
 					<<else>> /* universalRulesConsent is not zero */
-						@@.mediumaquamarine;relies@@ on your other slaves for mutual satisfaction,
+						@@.mediumaquamarine;relies@@ on <<if _release.slaves === 1>>your other slaves<<else>>$his family<</if>> for mutual satisfaction,
 						<<set $slaves[$i].trust += 1, $slaves[$i].need = 0>>
 						<<saRulesConsentFetish>>
 						<<saRulesConsentDiscoversFetish>>
@@ -1066,7 +1149,7 @@
 			<<set $slaves[$i].devotion += 1, $slaves[$i].trust += 1>>
 
 			<<if ($universalRulesConsent == 0)>>
-				<<if (_release != "restrictive" && _release != "chastity" && _release != "chastity")>>
+				<<if (_release.slaves === 1)>>
 					<<if ($slaves[$i].energy > 95)>>
 						<<if $slaves.length > 5>>
 							Under the rules, $he's allowed to demand that other slaves get $him off, and $he @@.hotpink;happily avails@@ $himself to any slaves visiting the patients under $his care.
@@ -1174,11 +1257,14 @@
 			<<else>>
 				<<set _lover = 0>>
 			<</if>>
+			<<if _lover == 0 && $seeIncest == 1 && $familyTesting == 1>>
+				<<set _famVisitor = randomRelatedSlave($slaves[$i], (s) => { return canWalk(s) && isSlaveAvailable(s) && App.Utils.sexAllowed($slaves[$i], s); } )>>
+			<</if>>
 			<<if $slaves[$i].devotion < -50>>
-				is so unhappy that $he has little interest in getting off<<if (_release != "permissive")>>, making the rule restricting $his sexual outlets superfluous<</if>>.
+				is so unhappy that $he has little interest in getting off<<if App.Utils.releaseRestricted($slaves[$i])>>, making the rule restricting $his sexual outlets superfluous<</if>>.
 				<<set $slaves[$i].need = 0>>
 			<<elseif $slaves[$i].energy <= 20>>
-				is frigid and has little interest in getting off<<if (_release != "permissive")>>, making the rule restricting $his sexual outlets superfluous<</if>>.
+				is frigid and has little interest in getting off<<if App.Utils.releaseRestricted($slaves[$i])>>, making the rule restricting $his sexual outlets superfluous<</if>>.
 				<<set $slaves[$i].need = 0>>
 			<<elseif $slaves[$i].relationship == -3>>
 				is well taken care of during $his stay in $clinicName; you make sure your $wife's every sexual need is handled personally.
@@ -1199,6 +1285,10 @@
 				<<set $slaves[$i].need = 0>>
 				is well taken care of during $his stay in $clinicName; $his <<if $slaves[$i].relationship == 3>>friend with benefits<<elseif $slaves[$i].relationship == 4>>sweetheart<<else>>_wife2<</if>> frequently stops by when $he gets the chance to make sure $his sexual needs are properly handled.
 				<<set $slaves[_lover].counter.oral += 14, $oralTotal += 14>>
+			<<elseif (def _famVisitor)>>
+				is well-loved by $his family; this week, his <<= relativeTerm($slaves[$i], _famVisitor)>> @@.lightgreen;_famVisitor.slaveName@@ pays special attention to $him, making sure $his sexual needs are met.
+				<<set $slaves[$i].need = 0>>
+				<<set _famVisitor.counter.oral += 7, $oralTotal += 7>>
 			<<elseif $Nurse != 0>>
 				is routinely brought to orgasm by $Nurse.slaveName as part of $his duties.
 				<<if canPenetrate($slaves[$i]) && $Nurse.boobs >= 500>>
@@ -1208,7 +1298,7 @@
 					/* possible cumflation code here */
 				<</if>>
 				<<set $slaves[$i].need -= 60>>
-			<<elseif (_release == "masturbation") || (_release == "permissive")>>
+			<<elseif _release.masturbation === 1>>
 				<<if ($slaves[$i].devotion <= 20) && ($slaves[$i].trust >= -20)>>
 					takes solace in $his permission to masturbate rather than being forced to seek other means of release, @@.mediumaquamarine;reducing $his fear@@ of you.
 					<<set $slaves[$i].trust += 2, $slaves[$i].need = 0>>
@@ -1311,7 +1401,7 @@
 					<<else>>
 						Under the rules, $he will find $himself constantly molested by other slaves once $he leaves $clinicName, but $he's already in such constant terror it that it doesn't cross $his mind.
 					<</if>>
-				<<elseif (_release != "restrictive" && _release != "chastity")>>
+				<<elseif (_release.slaves === 1)>>
 					<<if ($slaves[$i].energy > 95)>>
 						Under the rules, $he's allowed to demand that other slaves get $him off, and $he @@.hotpink;eagerly takes the opportunity@@ whenever visiting slaves are present.
 						<<set $slaves[$i].devotion += 1>>
@@ -1434,32 +1524,59 @@
 		<<case "be the Wardeness">>
 			<<set $slaves[$i].need -= ($CellBiIDs.length*5)>>
 			<<if $slaves[$i].energy <= 20>>
-				is frigid and has little interest in getting off<<if (_release != "permissive")>>, making the rule restricting $his sexual outlets superfluous<</if>>.
+				is frigid and has little interest in getting off<<if App.Utils.releaseRestricted($slaves[$i])>>, making the rule restricting $his sexual outlets superfluous<</if>>.
 				<<set $slaves[$i].need = 0>>
 			<<elseif $slaves[$i].need < $slaves[$i].needCap*0.5>>
 				gets off at work, so $he doesn't feel the need for release that often.
 				<<set $slaves[$i].need -= 20>>
 			<<else>>
-				<<if (_release == "restrictive" || _release == "chastity")>>
-					willingly begs you to
-					<<saRulesPlayerFetishPlay>>
-					whenever $he crosses paths with you.
-					<<saRulesPlayerEnergy>>
-					<<saRulesPlayerDiscoversFetish>>
-					<<saRulesPlayerDrugEffects>>
-				<<elseif (_release == "masturbation")>>
-					opts to @@.mediumaquamarine;take advantage of the prisoners@@ to
-					<<set $slaves[$i].trust += 1, $slaves[$i].need = 0>>
-					<<saRulesRapeFetish>>
-					<<saRulesRapeDiscoversFetish>>
-					<<saRulesPermissiveDrugEffects>>
+				<<if (!App.Utils.hasNonassignmentSex($slaves[$i]) && _release.masturbation === 0)>>
+					<<if _release.master === 1>>
+						willingly begs you to
+						<<saRulesPlayerFetishPlay>>
+						whenever $he crosses paths with you.
+						<<saRulesPlayerEnergy>>
+						<<saRulesPlayerDiscoversFetish>>
+						<<saRulesPlayerDrugEffects>>
+					<<else>> /* _release.master === 0 */
+						<<saRulesNoRelease>>
+						<<saRulesNoReleaseDrugEffects>>
+					<</if>>
+				<<elseif (!App.Utils.hasNonassignmentSex($slaves[$i]) && _release.masturbation === 1)>>
+					<<if ($slaves[$i].devotion < 80)>>
+						is a little disappointed that $he's limited to $his <<if !hasAnyArms($slaves[$i])>>imagination<<else>>hand<<if hasBothArms($slaves[$i])>>s<</if>><</if>> and toys, especially with her prisoners available to her, but @@.mediumaquamarine;trusts you know what's best for $him.@@
+						<<set $slaves[$i].trust += 1, $slaves[$i].need = 0>>
+					<<else>>
+						@@.mediumaquamarine;trusts your judgment@@ that only $he really knows how to pleasure
+						<<if _release.master === 0>>
+							$himself, though $he @@.mediumorchid;often wonders why you don't use $him.@@
+							<<set $slaves[$i].devotion -= 2>>
+						<<else>>
+							$himself.
+						<</if>>
+						<<set $slaves[$i].trust += 1, $slaves[$i].need = 0>>
+					<</if>>
+					<<if $slaves[$i].devotion > 20>>
+						When $he does play with $himself, $he
+						<<saRulesMasturbationFetishPlay>>
+						<<saRulesMasturbationDiscoversFetish>>
+					<</if>>
+					<<saRulesMasturbationDrugEffects>>
 				<<else>>
-					happily @@.mediumaquamarine;avails $himself of the prisoners@@ to
-					<<set $slaves[$i].trust += 1, $slaves[$i].need = 0>>
-					<<saRulesRapeFetish>>
-					<<saRulesRapeDiscoversFetish>>
-					<<saRulesPermissiveDrugEffects>>
-				<</if>> /* closes releaseRules not restrictive */
+					<<if (!App.Utils.hasFamilySex($slaves[$i]) && _release.slaves === 0)>>
+						/* no family and no other slaves, so release comes from her partner */
+						finds frequent sexual release with his <<= relationshipTerm($slaves[$i])>> @@.lightgreen;<<= getSlave($slaves[$i].relationshipTarget).slaveName>>,@@ which $he is @@.mediumaquamarine;thankful for.@@
+						<<set $slaves[$i].trust++, $slaves[$i].need -= 20>> /* TODO: probably should be based on BOTH slaves' need, leaving the less needy partner slightly frustrated */
+						<<saRulesPartnerDrugEffects>>
+					<<else>>
+						/* wardeness is not bound by Universal Consent */
+						opts to @@.mediumaquamarine;take advantage of the prisoners@@ to
+						<<set $slaves[$i].trust += 1, $slaves[$i].need = 0>>
+						<<saRulesRapeFetish>>
+						<<saRulesRapeDiscoversFetish>>
+						<<saRulesPermissiveDrugEffects>>
+					<</if>>
+				<</if>>
 			<</if>>
 
 			$He is @@.hotpink;very happy@@ with $his private room in $cellblockName and @@.mediumaquamarine;trusts@@ you a bit more for placing $him in charge of it.
@@ -1691,31 +1808,43 @@
 		<<case "be the Attendant">>
 			<<set $slaves[$i].need -= ($SpaiIDs.length*3)>>
 			<<if $slaves[$i].energy <= 20>>
-				is frigid and has little interest in getting off<<if (_release != "permissive")>>, making the rule restricting $his sexual outlets superfluous<</if>>.
+				is frigid and has little interest in getting off<<if App.Utils.releaseRestricted($slaves[$i])>>, making the rule restricting $his sexual outlets superfluous<</if>>.
 				<<set $slaves[$i].need = 0>>
 			<<elseif $slaves[$i].need < $slaves[$i].needCap*0.5>>
-				<<if (_release != "permissive") && (_release != "masturbation") && (_release != "chastity")>>
-					gets off while relieving $his charges, so being forbidden from masturbation doesn't really bother $him.
-					<<set $slaves[$i].need -= 20>>
+				<<if App.Utils.hasNonassignmentSex($slaves[$i])>>
+					gets off at work as well as during $his rest time.
+				<<elseif _release.masturbation == 0>>
+					gets off at work, so being unable to touch $himself doesn't bother $him.
 				<<else>>
-					gets off while relieving $his charges, so $he doesn't feel the need for release that often.
-					<<set $slaves[$i].need -= 20>>
+					gets off at work, so being unable to sate $his urges doesn't affect $him seriously.
 				<</if>>
+				<<set $slaves[$i].need -= 20>>
 			<<else>>
-				<<if (_release == "restrictive" || _release == "chastity")>>
-					willingly begs you to
-					<<saRulesPlayerFetishPlay>>
-					whenever $he crosses paths with you.
-					<<saRulesPlayerEnergy>>
-					<<saRulesPlayerDiscoversFetish>>
-					<<saRulesPlayerDrugEffects>>
-				<<elseif (_release == "masturbation")>>
+				<<if (!App.Utils.hasNonassignmentSex($slaves[$i]) && _release.masturbation === 0)>>
+					<<if _release.master === 1>>
+						willingly begs you to
+						<<saRulesPlayerFetishPlay>>
+						whenever $he crosses paths with you.
+						<<saRulesPlayerEnergy>>
+						<<saRulesPlayerDiscoversFetish>>
+						<<saRulesPlayerDrugEffects>>
+					<<else>> /* _release.master === 0 */
+						<<saRulesNoRelease>>
+						<<saRulesNoReleaseDrugEffects>>
+					<</if>>
+				<<elseif (!App.Utils.hasNonassignmentSex($slaves[$i]) && _release.masturbation === 1)>>
 					<<if ($slaves[$i].devotion < 80)>>
 						is a little disappointed that $he's limited to $his <<if !hasAnyArms($slaves[$i])>>imagination<<else>>hand<<if hasBothArms($slaves[$i])>>s<</if>><</if>>, creams, and toys, but @@.mediumaquamarine;trusts you know what's best for $him.@@
 						<<set $slaves[$i].trust += 1, $slaves[$i].need = 0>>
 					<<else>>
-						@@.mediumaquamarine;trusts your judgment@@ that only $he really knows how to pleasure $himself, though $he @@.mediumorchid;often wonders why you don't use $him.@@
-						<<set $slaves[$i].trust += 1, $slaves[$i].devotion -= 2, $slaves[$i].need = 0>>
+						@@.mediumaquamarine;trusts your judgment@@ that only $he really knows how to pleasure
+						<<if _release.master === 0>>
+							$himself, though $he @@.mediumorchid;often wonders why you don't use $him.@@
+							<<set $slaves[$i].devotion -= 2>>
+						<<else>>
+							$himself.
+						<</if>>
+						<<set $slaves[$i].trust += 1, $slaves[$i].need = 0>>
 					<</if>>
 					<<if $slaves[$i].devotion > 20>>
 						When $he does play with $himself, $he
@@ -1723,14 +1852,19 @@
 						<<saRulesMasturbationDiscoversFetish>>
 					<</if>>
 					<<saRulesMasturbationDrugEffects>>
-				<<else>> /* releaseRules not restrictive */
-					<<if ($universalRulesConsent == 0)>>
+				<<else>> /* hasNonassignmentSex is true */
+					<<if (!App.Utils.hasFamilySex($slaves[$i]) && _release.slaves === 0)>>
+						/* no family and no other slaves, so release comes from her partner */
+						finds frequent sexual release with his <<= relationshipTerm($slaves[$i])>> @@.lightgreen;<<= getSlave($slaves[$i].relationshipTarget).slaveName>>@@ which $he is @@.mediumaquamarine;thankful for.@@
+						<<set $slaves[$i].trust++, $slaves[$i].need -= 20>> /* TODO: probably should be based on BOTH slaves' need, leaving the less needy partner slightly frustrated */
+						<<saRulesPartnerDrugEffects>>
+					<<elseif ($universalRulesConsent == 0)>>
 						happily @@.mediumaquamarine;avails $himself@@ of your permission to
 						<<set $slaves[$i].trust += 1, $slaves[$i].need = 0>>
 						<<saRulesRapeFetish>>
 						<<saRulesRapeDiscoversFetish>>
 					<<else>> /* universalRulesConsent is not zero */
-						@@.mediumaquamarine;relies@@ on your other slaves for mutual satisfaction,
+						@@.mediumaquamarine;relies@@ on <<if _release.slaves === 1>>your other slaves<<else>>$his family<</if>> for mutual satisfaction,
 						<<set $slaves[$i].trust += 1, $slaves[$i].need = 0>>
 						<<saRulesConsentFetish>>
 						<<saRulesConsentDiscoversFetish>>
@@ -1743,7 +1877,7 @@
 			<<set $slaves[$i].devotion += 1, $slaves[$i].trust += 1>>
 
 			<<if ($universalRulesConsent == 0)>>
-				<<if (_release != "restrictive" && _release != "chastity" && _release != "chastity")>>
+				<<if (_release.slaves === 1)>>
 					<<if ($slaves[$i].energy > 95)>>
 						<<if $SpaiIDs.length > 2>>
 							Under the rules, $he's allowed to demand that other slaves get $him off, and $he @@.hotpink;adores@@ you for all the warm, moist bodies lounging around $spaName.
@@ -1864,26 +1998,31 @@
 				<</if>>
 				<<set $slaves[$i].need -= 60>>
 			<<else>>
-				<<if (_release == "restrictive" || _release == "chastity")>>
-					<<if ($slaves[$i].devotion <= 20) && ($slaves[$i].trust >= -20)>>
-						refuses to come up to the penthouse for sexual release, or to beg to share a bath with you, and is @@.gold;severely punished@@ for illicit masturbation.
-						<<set $slaves[$i].trust -= 2>>
-					<<elseif ($slaves[$i].devotion <= 50)>>
-						<<if $slaves[$i].devotion <= 20>>
-							occasionally comes to the penthouse to beg for sexual release or for you to join $him in $spaName.
-						<<else>>
-							doesn't mind having to come to the penthouse to beg for sexual release or for you to join $him in $spaName.
-						<</if>>
-						<<saRulesPlayerEnergy>>
-					<<else>> /* $slaves[$i].devotion > 50 */
-						willingly comes up to the penthouse and begs you to
-						<<saRulesPlayerFetishPlay>>
-						whenever the urge strikes.
-						<<saRulesPlayerEnergy>>
-					<</if>> /* closes $slaves[$i].devotion > 50 */
-					<<saRulesPlayerDiscoversFetish>>
-					<<saRulesPlayerDrugEffects>>
-				<<elseif (_release == "masturbation")>>
+				<<if (!App.Utils.hasNonassignmentSex($slaves[$i]) && _release.masturbation === 0)>>
+					<<if _release.master === 1>>
+						<<if ($slaves[$i].devotion <= 20) && ($slaves[$i].trust >= -20)>>
+							refuses to come up to the penthouse for sexual release, or to beg to share a bath with you, and is @@.gold;severely punished@@ for illicit masturbation.
+							<<set $slaves[$i].trust -= 2>>
+						<<elseif ($slaves[$i].devotion <= 50)>>
+							<<if $slaves[$i].devotion <= 20>>
+								occasionally comes to the penthouse to beg for sexual release or for you to join $him in $spaName.
+							<<else>>
+								doesn't mind having to come to the penthouse to beg for sexual release or for you to join $him in $spaName.
+							<</if>>
+							<<saRulesPlayerEnergy>>
+						<<else>> /* $slaves[$i].devotion > 50 */
+							willingly comes up to the penthouse and begs you to
+							<<saRulesPlayerFetishPlay>>
+							whenever the urge strikes.
+							<<saRulesPlayerEnergy>>
+						<</if>> /* closes $slaves[$i].devotion > 50 */
+						<<saRulesPlayerDiscoversFetish>>
+						<<saRulesPlayerDrugEffects>>
+					<<else>> /* _release.master === 0 */
+						<<saRulesNoRelease>>
+						<<saRulesNoReleaseDrugEffects>>
+					<</if>>
+				<<elseif (!App.Utils.hasNonassignmentSex($slaves[$i]) && _release.masturbation === 1)>>
 					<<if ($slaves[$i].devotion <= 20) && ($slaves[$i].trust >= -20)>>
 						takes solace in $his permission to masturbate rather than being forced to beg for sex, @@.mediumaquamarine;reducing $his fear@@ of you.
 						<<set $slaves[$i].trust += 2, $slaves[$i].need = 0>>
@@ -1897,8 +2036,14 @@
 						is a little disappointed that $he's limited to $his <<if !hasAnyArms($slaves[$i])>>imagination<<else>>hand<<if hasBothArms($slaves[$i])>>s<</if>><</if>> and toys, but @@.mediumaquamarine;trusts you know what's best for $him.@@
 						<<set $slaves[$i].trust += 1, $slaves[$i].need = 0>>
 					<<else>>
-						@@.mediumaquamarine;trusts your judgment@@ that only $he really knows how to pleasure $himself, though $he @@.mediumorchid;often wonders why you don't use $him.@@
-						<<set $slaves[$i].trust += 1, $slaves[$i].devotion -= 2, $slaves[$i].need = 0>>
+						@@.mediumaquamarine;trusts your judgment@@ that only $he really knows how to pleasure
+						<<if _release.master === 0>>
+							$himself, though $he @@.mediumorchid;often wonders why you don't use $him.@@
+							<<set $slaves[$i].devotion -= 2>>
+						<<else>>
+							$himself.
+						<</if>>
+						<<set $slaves[$i].trust += 1, $slaves[$i].need = 0>>
 					<</if>>
 					<<if $slaves[$i].devotion > 20>>
 						When $he does play with $himself, $he
@@ -1906,22 +2051,28 @@
 						<<saRulesMasturbationDiscoversFetish>>
 					<</if>>
 					<<saRulesMasturbationDrugEffects>>
-				<<else>> /* releaseRules not restrictive */
-					<<if ($universalRulesConsent == 0)>>
+				<<else>> /* hasNonassignmentSex is true */
+					<<set _whom = (_release.slaves === 1) ? "other slaves" : $his + " family">>
+					<<if (!App.Utils.hasFamilySex($slaves[$i]) && _release.slaves === 0)>>
+						/* no family and no other slaves, so release comes from her partner */
+						finds frequent sexual release with his <<= relationshipTerm($slaves[$i])>> @@.lightgreen;<<= getSlave($slaves[$i].relationshipTarget).slaveName>>@@ which $he is @@.mediumaquamarine;thankful for.@@
+						<<set $slaves[$i].trust++, $slaves[$i].need -= 20>> /* TODO: probably should be based on BOTH slaves' need, leaving the less needy partner slightly frustrated */
+						<<saRulesPartnerDrugEffects>>
+					<<elseif ($universalRulesConsent == 0)>>
 						<<if ($slaves[$i].devotion <= 20) && ($slaves[$i].trust >= -20)>>
-							<<if (_release == "permissive")>>
+							<<if (_release.masturbation === 1)>>
 								masturbates whenever $he can find a private moment to take care of the urges induced by the food, @@.mediumaquamarine;slightly reducing $his fear@@ of you.
 								<<set $slaves[$i].trust += 1, $slaves[$i].need = 0>>
 							<<else>>
-								refuses to ask other slaves for sex, and is @@.gold;severely punished@@ for illicit masturbation.
+								refuses to ask _whom for sex, and is @@.gold;severely punished@@ for illicit masturbation.
 								<<set $slaves[$i].trust -= 2, $slaves[$i].need -= 10>>
 							<</if>>
 						<<elseif ($slaves[$i].devotion <= 20)>>
-							<<if (_release == "permissive")>>
-								prefers to masturbate rather than demanding sex from other slaves, @@.mediumaquamarine;slightly reducing $his fear@@ of you.
+							<<if (_release.masturbation === 1)>>
+								prefers to masturbate rather than demanding sex from _whom, @@.mediumaquamarine;slightly reducing $his fear@@ of you.
 								<<set $slaves[$i].trust += 1, $slaves[$i].need = 0>>
 							<<else>>
-								is forced by the urges induced by the food to demand sex from other slaves, and @@.hotpink;hates $himself@@ for it.
+								is forced by the urges induced by the food to demand sex from _whom, and @@.hotpink;hates $himself@@ for it.
 								<<set $slaves[$i].devotion += 1, $slaves[$i].need *= 0.5>>
 							<</if>>
 						<<elseif ($slaves[$i].devotion <= 50)>>
@@ -1937,28 +2088,28 @@
 						<</if>>
 					<<else>> /* universalRulesConsent is not zero */
 						<<if ($slaves[$i].devotion <= 20) && ($slaves[$i].trust >= -20)>>
-							<<if (_release == "permissive")>>
-								prefers to masturbate rather than asking other slaves for sex or giving free samples, @@.mediumaquamarine;slightly reducing $his fear@@ of you.
+							<<if (_release.masturbation === 1)>>
+								prefers to masturbate rather than asking _whom for sex or giving free samples, @@.mediumaquamarine;slightly reducing $his fear@@ of you.
 								<<set $slaves[$i].trust += 1, $slaves[$i].need = 0>>
 							<<else>>
-								refuses to ask other slaves for sex, and is @@.gold;severely punished@@ for illicit masturbation.
+								refuses to ask _whom for sex, and is @@.gold;severely punished@@ for illicit masturbation.
 								<<set $slaves[$i].trust -= 2, $slaves[$i].need -= 10>>
 							<</if>>
 						<<elseif ($slaves[$i].devotion <= 20)>>
-							<<if (_release == "permissive")>>
-								prefers to masturbate rather than trading sex with other slaves, @@.mediumaquamarine;slightly reducing $his fear@@ of you.
+							<<if (_release.masturbation === 1)>>
+								prefers to masturbate rather than trading sex with _whom, @@.mediumaquamarine;slightly reducing $his fear@@ of you.
 								<<set $slaves[$i].trust += 1, $slaves[$i].need = 0>>
 							<<else>>
-								is forced by the urges induced by the food to swap sex with other slaves, and @@.hotpink;hates $himself@@ for it.
+								is forced by the urges induced by the food to swap sex with _whom, and @@.hotpink;hates $himself@@ for it.
 								<<set $slaves[$i].devotion += 1, $slaves[$i].need *= 0.5>>
 							<</if>>
 						<<elseif ($slaves[$i].devotion <= 50)>>
-							@@.hotpink;accepts having to ask@@ other slaves for sex,
+							@@.hotpink;accepts having to ask@@ _whom for sex,
 							<<set $slaves[$i].devotion += 1, $slaves[$i].need = 0>>
 							<<saRulesConsentFetish>>
 							<<saRulesConsentDiscoversFetish>>
 						<<else>>
-							@@.mediumaquamarine;relies@@ on your other slaves for mutual satisfaction,
+							@@.mediumaquamarine;relies@@ on _whom for mutual satisfaction,
 							<<set $slaves[$i].trust += 1, $slaves[$i].need = 0>>
 							<<saRulesConsentFetish>>
 							<<saRulesConsentDiscoversFetish>>
@@ -2054,7 +2205,7 @@
 							Under the rules, $he will someday find $himself constantly molested by other slaves, but $he's already in such constant terror it that it doesn't cross $his mind.
 						<</if>>
 					<</if>>
-				<<elseif (_release != "restrictive" && _release != "chastity")>>
+				<<elseif (_release.slaves === 1)>>
 					<<if ($slaves[$i].energy > 95)>>
 						<<if $SpaiIDs.length > 2>>
 							Under the rules, $he's allowed to demand that other slaves get $him off, and $he @@.hotpink;adores@@ you for providing plentiful outlets for $his nymphomania.
@@ -2196,31 +2347,41 @@
 		<<case "be the Matron">>
 			<<set $slaves[$i].need -= ($NurseryiIDs.length*3)>>
 			<<if $slaves[$i].energy <= 20>>
-				is frigid and has little interest in getting off<<if (_release != "permissive")>>, making the rule restricting $his sexual outlets superfluous<</if>>.
+				is frigid and has little interest in getting off<<if App.Utils.releaseRestricted($slaves[$i])>>, making the rule restricting $his sexual outlets superfluous<</if>>.
 				<<set $slaves[$i].need = 0>>
 			<<elseif $slaves[$i].need < $slaves[$i].needCap*0.5>>
-				<<if (_release != "permissive") && (_release != "masturbation") && (_release != "chastity")>>
+				<<if (_release.masturbation === 0)>>
 					gets off while relieving $his charges, so being forbidden from masturbation doesn't really bother $him.
-					<<set $slaves[$i].need -= 20>>
 				<<else>>
 					gets off while relieving $his charges, so $he doesn't feel the need for release that often.
-					<<set $slaves[$i].need -= 20>>
 				<</if>>
+				<<set $slaves[$i].need -= 20>>
 			<<else>>
-				<<if (_release == "restrictive" || _release == "chastity")>>
-					willingly begs you to
-					<<saRulesPlayerFetishPlay>>
-					whenever $he crosses paths with you.
-					<<saRulesPlayerEnergy>>
-					<<saRulesPlayerDiscoversFetish>>
-					<<saRulesPlayerDrugEffects>>
-				<<elseif (_release == "masturbation")>>
+				<<if (!App.Utils.hasNonassignmentSex($slaves[$i]) && _release.masturbation === 0)>>
+					<<if _release.master === 1>>
+						willingly begs you to
+						<<saRulesPlayerFetishPlay>>
+						whenever $he crosses paths with you.
+						<<saRulesPlayerEnergy>>
+						<<saRulesPlayerDiscoversFetish>>
+						<<saRulesPlayerDrugEffects>>
+					<<else>> /* _release.master === 0 */
+						<<saRulesNoRelease>>
+						<<saRulesNoReleaseDrugEffects>>
+					<</if>>
+				<<elseif (!App.Utils.hasNonassignmentSex($slaves[$i]) && _release.masturbation === 1)>>
 					<<if ($slaves[$i].devotion < 80)>>
 						is a little disappointed that $he's limited to $his <<if !hasAnyArms($slaves[$i])>>imagination<<else>>hand<<if hasBothArms($slaves[$i])>>s<</if>><</if>>, creams, and toys, but @@.mediumaquamarine;trusts you know what's best for $him.@@
 						<<set $slaves[$i].trust += 1, $slaves[$i].need = 0>>
 					<<else>>
-						@@.mediumaquamarine;trusts your judgment@@ that only $he really knows how to pleasure $himself, though $he @@.mediumorchid;often wonders why you don't use $him.@@
-						<<set $slaves[$i].trust += 1, $slaves[$i].devotion -= 2, $slaves[$i].need = 0>>
+						@@.mediumaquamarine;trusts your judgment@@ that only $he really knows how to pleasure
+						<<if _release.master === 0>>
+							$himself, though $he @@.mediumorchid;often wonders why you don't use $him.@@
+							<<set $slaves[$i].devotion -= 2>>
+						<<else>>
+							$himself.
+						<</if>>
+						<<set $slaves[$i].trust += 1, $slaves[$i].need = 0>>
 					<</if>>
 					<<if $slaves[$i].devotion > 20>>
 						When $he does play with $himself, $he
@@ -2228,14 +2389,19 @@
 						<<saRulesMasturbationDiscoversFetish>>
 					<</if>>
 					<<saRulesMasturbationDrugEffects>>
-				<<else>> /* releaseRules not restrictive */
-					<<if ($universalRulesConsent == 0)>>
+				<<else>> /* hasNonassignmentSex is true */
+					<<if (!App.Utils.hasFamilySex($slaves[$i]) && _release.slaves === 0)>>
+						/* no family and no other slaves, so release comes from her partner */
+						finds frequent sexual release with his <<= relationshipTerm($slaves[$i])>> @@.lightgreen;<<= getSlave($slaves[$i].relationshipTarget).slaveName>>@@ which $he is @@.mediumaquamarine;thankful for.@@
+						<<set $slaves[$i].trust++, $slaves[$i].need -= 20>> /* TODO: probably should be based on BOTH slaves' need, leaving the less needy partner slightly frustrated */
+						<<saRulesPartnerDrugEffects>>
+					<<elseif ($universalRulesConsent == 0)>>
 						happily @@.mediumaquamarine;avails $himself@@ of your permission to
 						<<set $slaves[$i].trust += 1, $slaves[$i].need = 0>>
 						<<saRulesRapeFetish>>
 						<<saRulesRapeDiscoversFetish>>
 					<<else>> /* universalRulesConsent is not zero */
-						@@.mediumaquamarine;relies@@ on your other slaves for mutual satisfaction,
+						@@.mediumaquamarine;relies@@ on <<if _release.slaves === 1>>your other slaves<<else>>$his family<</if>> for mutual satisfaction,
 						<<set $slaves[$i].trust += 1, $slaves[$i].need = 0>>
 						<<saRulesConsentFetish>>
 						<<saRulesConsentDiscoversFetish>>
@@ -2248,7 +2414,7 @@
 			<<set $slaves[$i].devotion += 1, $slaves[$i].trust += 1>>
 
 			<<if ($universalRulesConsent == 0)>>
-				<<if (_release != "restrictive" && _release != "chastity" && _release != "chastity")>>
+				<<if (_release.slaves === 1)>>
 					<<if ($slaves[$i].energy > 95)>>
 						<<if $NurseryiIDs.length > 2>>
 							Under the rules, $he's allowed to demand that other slaves get $him off, and $he @@.hotpink;adores@@ you for all the nannies busily scurrying around $nurseryName.
@@ -2369,26 +2535,31 @@
 				<</if>>
 				<<set $slaves[$i].need -= 60>>
 			<<else>>
-				<<if (_release == "restrictive" || _release == "chastity")>>
-					<<if ($slaves[$i].devotion <= 20) && ($slaves[$i].trust >= -20)>>
-						refuses to come up to the penthouse for sexual release and is @@.gold;severely punished@@ for illicit masturbation.
-						<<set $slaves[$i].trust -= 2>>
-					<<elseif ($slaves[$i].devotion <= 50)>>
-						<<if $slaves[$i].devotion <= 20>>
-							occasionally comes to the penthouse to beg for sexual release.
-						<<else>>
-							doesn't mind having to come to the penthouse to beg for sexual release.
-						<</if>>
-						<<saRulesPlayerEnergy>>
-					<<else>> /* $slaves[$i].devotion > 50 */
-						willingly comes up to the penthouse and begs you to
-						<<saRulesPlayerFetishPlay>>
-						whenever the urge strikes.
-						<<saRulesPlayerEnergy>>
-					<</if>> /* closes $slaves[$i].devotion > 50 */
-					<<saRulesPlayerDiscoversFetish>>
-					<<saRulesPlayerDrugEffects>>
-				<<elseif (_release == "masturbation")>>
+				<<if (!App.Utils.hasNonassignmentSex($slaves[$i]) && _release.masturbation === 0)>>
+					<<if _release.master === 1>>
+						<<if ($slaves[$i].devotion <= 20) && ($slaves[$i].trust >= -20)>>
+							refuses to come up to the penthouse for sexual release and is @@.gold;severely punished@@ for illicit masturbation.
+							<<set $slaves[$i].trust -= 2>>
+						<<elseif ($slaves[$i].devotion <= 50)>>
+							<<if $slaves[$i].devotion <= 20>>
+								occasionally comes to the penthouse to beg for sexual release.
+							<<else>>
+								doesn't mind having to come to the penthouse to beg for sexual release.
+							<</if>>
+							<<saRulesPlayerEnergy>>
+						<<else>> /* $slaves[$i].devotion > 50 */
+							willingly comes up to the penthouse and begs you to
+							<<saRulesPlayerFetishPlay>>
+							whenever the urge strikes.
+							<<saRulesPlayerEnergy>>
+						<</if>> /* closes $slaves[$i].devotion > 50 */
+						<<saRulesPlayerDiscoversFetish>>
+						<<saRulesPlayerDrugEffects>>
+					<<else>> /* _release.master === 0 */
+						<<saRulesNoRelease>>
+						<<saRulesNoReleaseDrugEffects>>
+					<</if>>
+				<<elseif (!App.Utils.hasNonassignmentSex($slaves[$i]) && _release.masturbation === 1)>>
 					<<if ($slaves[$i].devotion <= 20) && ($slaves[$i].trust >= -20)>>
 						takes solace in $his permission to masturbate rather than being forced to beg for sex, @@.mediumaquamarine;reducing $his fear@@ of you.
 						<<set $slaves[$i].trust += 2, $slaves[$i].need = 0>>
@@ -2402,8 +2573,14 @@
 						is a little disappointed that $he's limited to $his <<if !hasAnyArms($slaves[$i])>>imagination<<else>>hand<<if hasBothArms($slaves[$i])>>s<</if>><</if>> and toys, but @@.mediumaquamarine;trusts you know what's best for $him.@@
 						<<set $slaves[$i].trust += 1, $slaves[$i].need = 0>>
 					<<else>>
-						@@.mediumaquamarine;trusts your judgment@@ that only $he really knows how to pleasure $himself, though $he @@.mediumorchid;often wonders why you don't use $him.@@
-						<<set $slaves[$i].trust += 1, $slaves[$i].devotion -= 2, $slaves[$i].need = 0>>
+						@@.mediumaquamarine;trusts your judgment@@ that only $he really knows how to pleasure
+						<<if _release.master === 0>>
+							$himself, though $he @@.mediumorchid;often wonders why you don't use $him.@@
+							<<set $slaves[$i].devotion -= 2>>
+						<<else>>
+							$himself.
+						<</if>>
+						<<set $slaves[$i].trust += 1, $slaves[$i].need = 0>>
 					<</if>>
 					<<if $slaves[$i].devotion > 20>>
 						When $he does play with $himself, $he
@@ -2411,22 +2588,28 @@
 						<<saRulesMasturbationDiscoversFetish>>
 					<</if>>
 					<<saRulesMasturbationDrugEffects>>
-				<<else>> /* releaseRules not restrictive */
-					<<if ($universalRulesConsent == 0)>>
+				<<else>> /* hasNonassignmentSex is true */
+					<<set _whom = (_release.slaves === 1) ? "other slaves" : $his + " family">>
+					<<if (!App.Utils.hasFamilySex($slaves[$i]) && _release.slaves === 0)>>
+						/* no family and no other slaves, so release comes from her partner */
+						finds frequent sexual release with his <<= relationshipTerm($slaves[$i])>> @@.lightgreen;<<= getSlave($slaves[$i].relationshipTarget).slaveName>>@@ which $he is @@.mediumaquamarine;thankful for.@@
+						<<set $slaves[$i].trust++, $slaves[$i].need -= 20>> /* TODO: probably should be based on BOTH slaves' need, leaving the less needy partner slightly frustrated */
+						<<saRulesPartnerDrugEffects>>
+					<<elseif ($universalRulesConsent == 0)>>
 						<<if ($slaves[$i].devotion <= 20) && ($slaves[$i].trust >= -20)>>
-							<<if (_release == "permissive")>>
+							<<if (_release.masturbation === 1)>>
 								masturbates whenever $he can find a private moment to take care of the urges induced by the food, @@.mediumaquamarine;slightly reducing $his fear@@ of you.
 								<<set $slaves[$i].trust += 1, $slaves[$i].need = 0>>
 							<<else>>
-								refuses to ask other slaves for sex, and is @@.gold;severely punished@@ for illicit masturbation.
+								refuses to ask _whom for sex, and is @@.gold;severely punished@@ for illicit masturbation.
 								<<set $slaves[$i].trust -= 2, $slaves[$i].need -= 10>>
 							<</if>>
 						<<elseif ($slaves[$i].devotion <= 20)>>
-							<<if (_release == "permissive")>>
-								prefers to masturbate rather than demanding sex from other slaves, @@.mediumaquamarine;slightly reducing $his fear@@ of you.
+							<<if (_release.masturbation === 1)>>
+								prefers to masturbate rather than demanding sex from _whom, @@.mediumaquamarine;slightly reducing $his fear@@ of you.
 								<<set $slaves[$i].trust += 1, $slaves[$i].need = 0>>
 							<<else>>
-								is forced by the urges induced by the food to demand sex from other slaves, and @@.hotpink;hates $himself@@ for it.
+								is forced by the urges induced by the food to demand sex from _whom, and @@.hotpink;hates $himself@@ for it.
 								<<set $slaves[$i].devotion += 1, $slaves[$i].need *= 0.5>>
 							<</if>>
 						<<elseif ($slaves[$i].devotion <= 50)>>
@@ -2442,28 +2625,28 @@
 						<</if>>
 					<<else>> /* universalRulesConsent is not zero */
 						<<if ($slaves[$i].devotion <= 20) && ($slaves[$i].trust >= -20)>>
-							<<if (_release == "permissive")>>
-								prefers to masturbate rather than asking other slaves for sex or giving free samples, @@.mediumaquamarine;slightly reducing $his fear@@ of you.
+							<<if (_release.masturbation === 1)>>
+								prefers to masturbate rather than asking _whom for sex or giving free samples, @@.mediumaquamarine;slightly reducing $his fear@@ of you.
 								<<set $slaves[$i].trust += 1, $slaves[$i].need = 0>>
 							<<else>>
-								refuses to ask other slaves for sex, and is @@.gold;severely punished@@ for illicit masturbation.
+								refuses to ask _whom for sex, and is @@.gold;severely punished@@ for illicit masturbation.
 								<<set $slaves[$i].trust -= 2, $slaves[$i].need -= 10>>
 							<</if>>
 						<<elseif ($slaves[$i].devotion <= 20)>>
-							<<if (_release == "permissive")>>
-								prefers to masturbate rather than trading sex with other slaves, @@.mediumaquamarine;slightly reducing $his fear@@ of you.
+							<<if (_release.masturbation === 1)>>
+								prefers to masturbate rather than trading sex with _whom, @@.mediumaquamarine;slightly reducing $his fear@@ of you.
 								<<set $slaves[$i].trust += 1, $slaves[$i].need = 0>>
 							<<else>>
-								is forced by the urges induced by the food to swap sex with other slaves, and @@.hotpink;hates $himself@@ for it.
+								is forced by the urges induced by the food to swap sex with _whom, and @@.hotpink;hates $himself@@ for it.
 								<<set $slaves[$i].devotion += 1, $slaves[$i].need *= 0.5>>
 							<</if>>
 						<<elseif ($slaves[$i].devotion <= 50)>>
-							@@.hotpink;accepts having to ask@@ other slaves for sex,
+							@@.hotpink;accepts having to ask@@ _whom for sex,
 							<<set $slaves[$i].devotion += 1, $slaves[$i].need = 0>>
 							<<saRulesConsentFetish>>
 							<<saRulesConsentDiscoversFetish>>
 						<<else>>
-							@@.mediumaquamarine;relies@@ on your other slaves for mutual satisfaction,
+							@@.mediumaquamarine;relies@@ on _whom for mutual satisfaction,
 							<<set $slaves[$i].trust += 1, $slaves[$i].need = 0>>
 							<<saRulesConsentFetish>>
 							<<saRulesConsentDiscoversFetish>>
@@ -2559,7 +2742,7 @@
 							Under the rules, $he will someday find $himself constantly molested by other slaves, but $he's already in such constant terror it that it doesn't cross $his mind.
 						<</if>>
 					<</if>>
-				<<elseif (_release != "restrictive" && _release != "chastity")>>
+				<<elseif (_release.slaves === 1)>>
 					<<if ($slaves[$i].energy > 95)>>
 						<<if $NurseryiIDs.length > 2>>
 							Under the rules, $he's allowed to demand that other slaves get $him off, and $he @@.hotpink;adores@@ you for providing plentiful outlets for $his nymphomania.
@@ -2717,31 +2900,41 @@
 			<</if>>
 			<<set $slaves[$i].counter.oral += _sexLessons, $oralTotal += _sexLessons>>
 			<<if $slaves[$i].energy <= 20>>
-				is frigid and has little interest in getting off<<if (_release != "permissive")>>, making the rule restricting $his sexual outlets superfluous<</if>>.
+				is frigid and has little interest in getting off<<if App.Utils.releaseRestricted($slaves[$i])>>, making the rule restricting $his sexual outlets superfluous<</if>>.
 				<<set $slaves[$i].need = 0>>
 			<<elseif $slaves[$i].need < $slaves[$i].needCap*0.5>>
-				<<if (_release != "permissive") && (_release != "masturbation") && (_release != "chastity")>>
+				<<if (_release.masturbation == 0)>>
 					gets off with $his students, so being forbidden from masturbation doesn't really bother $him.
-					<<set $slaves[$i].need -= 20>>
 				<<else>>
 					gets off with $his students, so $he doesn't feel the need for release that often.
-					<<set $slaves[$i].need -= 20>>
 				<</if>>
+				<<set $slaves[$i].need -= 20>>
 			<<else>>
-				<<if (_release == "restrictive" || _release == "chastity")>>
-					willingly begs you to
-					<<saRulesPlayerFetishPlay>>
-					in front of $his class whenever $he crosses paths with you.
-					<<saRulesPlayerEnergy>>
-					<<saRulesPlayerDiscoversFetish>>
-					<<saRulesPlayerDrugEffects>>
-				<<elseif (_release == "masturbation")>>
+				<<if (!App.Utils.hasNonassignmentSex($slaves[$i]) && _release.masturbation === 0)>>
+					<<if _release.master === 1>>
+						willingly begs you to
+						<<saRulesPlayerFetishPlay>>
+						in front of $his class whenever $he crosses paths with you.
+						<<saRulesPlayerEnergy>>
+						<<saRulesPlayerDiscoversFetish>>
+						<<saRulesPlayerDrugEffects>>
+					<<else>> /* _release.master === 0 */
+						<<saRulesNoRelease>>
+						<<saRulesNoReleaseDrugEffects>>
+					<</if>>
+				<<elseif (!App.Utils.hasNonassignmentSex($slaves[$i]) && _release.masturbation === 1)>>
 					<<if ($slaves[$i].devotion < 80)>>
 						is a little disappointed that $he's limited to $his <<if !hasAnyArms($slaves[$i])>>imagination<<else>>hand<<if hasBothArms($slaves[$i])>>s<</if>><</if>> and toys outside of class, but @@.mediumaquamarine;trusts you know what's best for $him.@@
 						<<set $slaves[$i].trust += 1, $slaves[$i].need = 0>>
 					<<else>>
-						@@.mediumaquamarine;trusts your judgment@@ that only $he really knows how to pleasure $himself, though $he @@.mediumorchid;often wonders why you won't make an example out of $him.@@
-						<<set $slaves[$i].trust += 1, $slaves[$i].devotion -= 2, $slaves[$i].need = 0>>
+						@@.mediumaquamarine;trusts your judgment@@ that only $he really knows how to pleasure
+						<<if _release.master === 0>>
+							$himself, though $he @@.mediumorchid;often wonders why you won't make an example out of $him.@@
+							<<set $slaves[$i].devotion -= 2>>
+						<<else>>
+							$himself.
+						<</if>>
+						<<set $slaves[$i].trust += 1, $slaves[$i].need = 0>>
 					<</if>>
 					<<if $slaves[$i].devotion > 20>>
 						When $he does play with $himself, $he
@@ -2749,14 +2942,19 @@
 						<<saRulesMasturbationDiscoversFetish>>
 					<</if>>
 					<<saRulesMasturbationDrugEffects>>
-				<<else>> /* releaseRules not restrictive */
-					<<if ($universalRulesConsent == 0)>>
+				<<else>> /* hasNonassignmentSex is true */
+					<<if (!App.Utils.hasFamilySex($slaves[$i]) && _release.slaves === 0)>>
+						/* no family and no other slaves, so release comes from her partner */
+						finds frequent sexual release with his <<= relationshipTerm($slaves[$i])>> @@.lightgreen;<<= getSlave($slaves[$i].relationshipTarget).slaveName>>@@ which $he is @@.mediumaquamarine;thankful for.@@
+						<<set $slaves[$i].trust++, $slaves[$i].need -= 20>> /* TODO: probably should be based on BOTH slaves' need, leaving the less needy partner slightly frustrated */
+						<<saRulesPartnerDrugEffects>>
+					<<elseif ($universalRulesConsent == 0)>>
 						happily @@.mediumaquamarine;takes advantage@@ of your permission to
 						<<set $slaves[$i].trust += 1, $slaves[$i].need = 0>>
 						<<saRulesRapeFetish>>
 						<<saRulesRapeDiscoversFetish>>
 					<<else>> /* universalRulesConsent is not zero */
-						@@.mediumaquamarine;relies@@ on your other slaves for mutual satisfaction,
+						@@.mediumaquamarine;relies@@ on <<if _release.slaves === 1>>your other slaves<<else>>$his family<</if>> for mutual satisfaction,
 						<<set $slaves[$i].trust += 1, $slaves[$i].need = 0>>
 						<<saRulesConsentFetish>>
 						<<saRulesConsentDiscoversFetish>>
@@ -2769,7 +2967,7 @@
 			<<set $slaves[$i].devotion += 1, $slaves[$i].trust += 1>>
 
 			<<if ($universalRulesConsent == 0)>>
-				<<if (_release != "restrictive" && _release != "chastity" && _release != "chastity")>>
+				<<if (_release.slaves === 1)>>
 					<<if ($slaves[$i].energy > 95)>>
 						<<if $SchlRiIDs.length > 2>>
 							Under the rules, $he's allowed to demand that other slaves get $him off, and $he @@.hotpink;adores@@ you for giving $him plentiful teacher's assistants for $his nymphomania.
@@ -2918,35 +3116,40 @@
 						$He hates $himself for climaxing, and knows the mild aphrodisiacs in the food are forcing $his arousal, @@.gold;frightening $him.@@
 						<<set $slaves[$i].trust -= 1>>
 					<</if>>
-					<<set $slaves[$i].need -= 20>>
-				<<elseif (_release != "permissive") && (_release != "masturbation") && (_release != "chastity")>>
-					gets off during class, so being forbidden to masturbate doesn't affect $him seriously.
-					<<set $slaves[$i].need -= 20>>
+				<<elseif App.Utils.hasNonassignmentSex($slaves[$i])>>
+					gets off during class as well as during $his rest time.
+				<<elseif _release.masturbation == 0>>
+					gets off during class, so being unable to touch $himself doesn't bother $him.
 				<<else>>
 					gets off during class, so $he doesn't feel the need to masturbate frequently.
-					<<set $slaves[$i].need -= 20>>
 				<</if>>
+				<<set $slaves[$i].need -= 20>>
 			<<else>>
-				<<if (_release == "restrictive" || _release == "chastity")>>
-					<<if ($slaves[$i].devotion <= 20) && ($slaves[$i].trust >= -20)>>
-						refuses to come to you for sexual release, and is @@.gold;severely punished@@ for illicit masturbation.
-						<<set $slaves[$i].trust -= 2>>
-					<<elseif ($slaves[$i].devotion <= 50)>>
-						<<if $slaves[$i].devotion <= 20>>
-							occasionally comes to you to beg for sexual release.
-						<<else>>
-							doesn't mind having to come to you to beg for sexual release.
-						<</if>>
-						<<saRulesPlayerEnergy>>
-					<<else>> /* $slaves[$i].devotion > 50 */
-						willingly begs you to
-						<<saRulesPlayerFetishPlay>>
-						every chance $he gets.
-						<<saRulesPlayerEnergy>>
-					<</if>> /* closes $slaves[$i].devotion > 50 */
-					<<saRulesPlayerDiscoversFetish>>
-					<<saRulesPlayerDrugEffects>>
-				<<elseif (_release == "masturbation")>>
+				<<if (!App.Utils.hasNonassignmentSex($slaves[$i]) && _release.masturbation === 0)>>
+					<<if _release.master === 1>>
+						<<if ($slaves[$i].devotion <= 20) && ($slaves[$i].trust >= -20)>>
+							refuses to come to you for sexual release, and is @@.gold;severely punished@@ for illicit masturbation.
+							<<set $slaves[$i].trust -= 2>>
+						<<elseif ($slaves[$i].devotion <= 50)>>
+							<<if $slaves[$i].devotion <= 20>>
+								occasionally comes to you to beg for sexual release.
+							<<else>>
+								doesn't mind having to come to you to beg for sexual release.
+							<</if>>
+							<<saRulesPlayerEnergy>>
+						<<else>> /* $slaves[$i].devotion > 50 */
+							willingly begs you to
+							<<saRulesPlayerFetishPlay>>
+							every chance $he gets.
+							<<saRulesPlayerEnergy>>
+						<</if>> /* closes $slaves[$i].devotion > 50 */
+						<<saRulesPlayerDiscoversFetish>>
+						<<saRulesPlayerDrugEffects>>
+					<<else>> /* _release.master === 0 */
+						<<saRulesNoRelease>>
+						<<saRulesNoReleaseDrugEffects>>
+					<</if>>
+				<<elseif (!App.Utils.hasNonassignmentSex($slaves[$i]) && _release.masturbation === 1)>>
 					<<if ($slaves[$i].devotion <= 20) && ($slaves[$i].trust >= -20)>>
 						takes solace in $his permission to masturbate rather than being forced to beg for sex, @@.mediumaquamarine;reducing $his fear@@ of you.
 						<<set $slaves[$i].trust += 2, $slaves[$i].need = 0>>
@@ -2960,8 +3163,14 @@
 						is a little disappointed that $he's limited to $his <<if !hasAnyArms($slaves[$i])>>imagination<<else>>hand<<if hasBothArms($slaves[$i])>>s<</if>><</if>> and toys, but @@.mediumaquamarine;trusts you know what's best for $him.@@
 						<<set $slaves[$i].trust += 1, $slaves[$i].need = 0>>
 					<<else>>
-						@@.mediumaquamarine;trusts your judgment@@ that only $he really knows how to pleasure $himself, though $he @@.mediumorchid;often wonders why you don't use $him.@@
-						<<set $slaves[$i].trust += 1, $slaves[$i].devotion -= 2, $slaves[$i].need = 0>>
+						@@.mediumaquamarine;trusts your judgment@@ that only $he really knows how to pleasure
+						<<if _release.master === 0>>
+							$himself, though $he @@.mediumorchid;often wonders why you don't use $him.@@
+							<<set $slaves[$i].devotion -= 2>>
+						<<else>>
+							$himself.
+						<</if>>
+						<<set $slaves[$i].trust += 1, $slaves[$i].need = 0>>
 					<</if>>
 					<<if $slaves[$i].devotion > 20>>
 						When $he does play with $himself, $he
@@ -2969,22 +3178,28 @@
 						<<saRulesMasturbationDiscoversFetish>>
 					<</if>>
 					<<saRulesMasturbationDrugEffects>>
-				<<else>> /* releaseRules not restrictive */
-					<<if ($universalRulesConsent == 0)>>
+				<<else>> /* hasNonassignmentSex is true */
+					<<set _whom = (_release.slaves === 1) ? "other slaves" : $his + " family">>
+					<<if (!App.Utils.hasFamilySex($slaves[$i]) && _release.slaves === 0)>>
+						/* no family and no other slaves, so release comes from her partner */
+						finds frequent sexual release with his <<= relationshipTerm($slaves[$i])>> @@.lightgreen;<<= getSlave($slaves[$i].relationshipTarget).slaveName>>@@ which $he is @@.mediumaquamarine;thankful for.@@
+						<<set $slaves[$i].trust++, $slaves[$i].need -= 20>> /* TODO: probably should be based on BOTH slaves' need, leaving the less needy partner slightly frustrated */
+						<<saRulesPartnerDrugEffects>>
+					<<elseif ($universalRulesConsent == 0)>>
 						<<if ($slaves[$i].devotion <= 20) && ($slaves[$i].trust >= -20)>>
-							<<if (_release == "permissive")>>
+							<<if (_release.masturbation === 1)>>
 								masturbates whenever $he can find a private moment to take care of the urges induced by the food, @@.mediumaquamarine;slightly reducing $his fear@@ of you.
 								<<set $slaves[$i].trust += 1, $slaves[$i].need = 0>>
 							<<else>>
-								refuses to use other slaves to get off, and is @@.gold;severely punished@@ for illicit masturbation.
+								refuses to use _whom to get off, and is @@.gold;severely punished@@ for illicit masturbation.
 								<<set $slaves[$i].trust -= 2, $slaves[$i].need -= 10>>
 							<</if>>
 						<<elseif ($slaves[$i].devotion <= 20)>>
-							<<if (_release == "permissive")>>
-								prefers to masturbate rather than demanding sex from other slaves, @@.mediumaquamarine;slightly reducing $his fear@@ of you.
+							<<if (_release.masturbation === 1)>>
+								prefers to masturbate rather than demanding sex from _whom, @@.mediumaquamarine;slightly reducing $his fear@@ of you.
 								<<set $slaves[$i].trust += 1, $slaves[$i].need = 0>>
 							<<else>>
-								is forced to demand sex from other slaves by the urges induced by the food, and @@.hotpink;hates $himself@@ for it.
+								is forced to demand sex from _whom by the urges induced by the food, and @@.hotpink;hates $himself@@ for it.
 								<<set $slaves[$i].devotion += 1, $slaves[$i].need *= 0.5>>
 							<</if>>
 						<<elseif ($slaves[$i].devotion <= 50)>>
@@ -3000,28 +3215,28 @@
 						<</if>>
 					<<else>> /* universalRulesConsent is not zero */
 						<<if ($slaves[$i].devotion <= 20) && ($slaves[$i].trust >= -20)>>
-							<<if (_release == "permissive")>>
-								prefers to masturbate rather than asking other slaves for sex, @@.mediumaquamarine;slightly reducing $his fear@@ of you.
+							<<if (_release.masturbation === 1)>>
+								prefers to masturbate rather than asking _whom for sex, @@.mediumaquamarine;slightly reducing $his fear@@ of you.
 								<<set $slaves[$i].trust += 1, $slaves[$i].need = 0>>
 							<<else>>
-								refuses to ask other slaves for sex, and is @@.gold;severely punished@@ for illicit masturbation.
+								refuses to ask _whom for sex, and is @@.gold;severely punished@@ for illicit masturbation.
 								<<set $slaves[$i].trust -= 2, $slaves[$i].need -= 10>>
 							<</if>>
 						<<elseif ($slaves[$i].devotion <= 20)>>
-							<<if (_release == "permissive")>>
-								prefers to masturbate rather than trading sex with other slaves, @@.mediumaquamarine;slightly reducing $his fear@@ of you.
+							<<if (_release.masturbation === 1)>>
+								prefers to masturbate rather than trading sex with _whom, @@.mediumaquamarine;slightly reducing $his fear@@ of you.
 								<<set $slaves[$i].trust += 1, $slaves[$i].need = 0>>
 							<<else>>
-								is forced to swap sex with other slaves by the urges induced by the food, and @@.hotpink;hates $himself@@ for it.
+								is forced to swap sex with _whom by the urges induced by the food, and @@.hotpink;hates $himself@@ for it.
 								<<set $slaves[$i].devotion += 1, $slaves[$i].need *= 0.5>>
 							<</if>>
 						<<elseif ($slaves[$i].devotion <= 50)>>
-							@@.hotpink;accepts having to ask@@ other slaves for sex,
+							@@.hotpink;accepts having to ask@@ _whom for sex,
 							<<set $slaves[$i].devotion += 1, $slaves[$i].need = 0>>
 							<<saRulesConsentFetish>>
 							<<saRulesConsentDiscoversFetish>>
 						<<else>>
-							@@.mediumaquamarine;relies@@ on your other slaves for mutual satisfaction,
+							@@.mediumaquamarine;relies@@ on _whom for mutual satisfaction,
 							<<set $slaves[$i].trust += 1, $slaves[$i].need = 0>>
 							<<saRulesConsentFetish>>
 							<<saRulesConsentDiscoversFetish>>
@@ -3067,7 +3282,7 @@
 							Under the rules, $he will someday find $himself constantly molested by other slaves, but $he's already in such constant terror it that it doesn't cross $his mind.
 						<</if>>
 					<</if>>
-				<<elseif (_release != "restrictive" && _release != "chastity")>>
+				<<elseif (_release.slaves === 1)>>
 					<<if ($slaves[$i].energy > 95)>>
 						<<if $SchlRiIDs.length > 2>>
 							Under the rules, $he's allowed to demand that other slaves get $him off, and $he @@.hotpink;adores@@ you for providing plentiful outlets for $his nymphomania.
@@ -3214,10 +3429,10 @@
 		<<case "be the Stewardess">>
 			<<set $slaves[$i].need -= $ServQiIDs.length*10>>
 			<<if $slaves[$i].energy <= 20>>
-				is frigid and has little interest in getting off<<if (_release != "permissive")>>, making the rule restricting $his sexual outlets superfluous<</if>>.
+				is frigid and has little interest in getting off<<if App.Utils.releaseRestricted($slaves[$i])>>, making the rule restricting $his sexual outlets superfluous<</if>>.
 				<<set $slaves[$i].need = 0>>
 			<<elseif $slaves[$i].need < $slaves[$i].needCap*0.5>>
-				<<if (_release != "permissive") && (_release != "masturbation") && (_release != "chastity")>>
+				<<if _release.masturbation === 0>>
 					gets off while performing $his duties, so being forbidden from masturbation doesn't really bother $him.
 					<<set $slaves[$i].need -= 20>>
 				<<else>>
@@ -3225,20 +3440,31 @@
 					<<set $slaves[$i].need -= 20>>
 				<</if>>
 			<<else>>
-				<<if (_release == "restrictive" || _release == "chastity")>>
-					willingly begs you to
-					<<saRulesPlayerFetishPlay>>
-					whenever $he crosses paths with you.
-					<<saRulesPlayerEnergy>>
-					<<saRulesPlayerDiscoversFetish>>
-					<<saRulesPlayerDrugEffects>>
-				<<elseif (_release == "masturbation")>>
+				<<if (_!App.Utils.hasNonassignmentSex($slaves[$i]) && _release.masturbation === 0)>>
+					<<if _release.master === 1>>
+						willingly begs you to
+						<<saRulesPlayerFetishPlay>>
+						whenever $he crosses paths with you.
+						<<saRulesPlayerEnergy>>
+						<<saRulesPlayerDiscoversFetish>>
+						<<saRulesPlayerDrugEffects>>
+					<<else>> /* _release.master === 0 */
+						<<saRulesNoRelease>>
+						<<saRulesNoReleaseDrugEffects>>
+					<</if>>
+				<<elseif (!App.Utils.hasNonassignmentSex($slaves[$i]) && _release.masturbation === 1)>>
 					<<if ($slaves[$i].devotion < 80)>>
 						is a little disappointed that $he's limited to $his <<if !hasAnyArms($slaves[$i])>>imagination<<else>>hand<<if hasBothArms($slaves[$i])>>s<</if>><</if>> and toys, but @@.mediumaquamarine;trusts you know what's best for $him.@@
 						<<set $slaves[$i].trust += 1, $slaves[$i].need = 0>>
 					<<else>>
-						@@.mediumaquamarine;trusts your judgment@@ that only $he really knows how to pleasure $himself, though $he @@.mediumorchid;often wonders why you don't use $him.@@
-						<<set $slaves[$i].trust += 1, $slaves[$i].devotion -= 2, $slaves[$i].need = 0>>
+						@@.mediumaquamarine;trusts your judgment@@ that only $he really knows how to pleasure
+						<<if _release.master === 0>>
+							$himself, though $he @@.mediumorchid;often wonders why you don't use $him.@@
+							<<set $slaves[$i].devotion -= 2>>
+						<<else>>
+							$himself.
+						<</if>>
+						<<set $slaves[$i].trust += 1, $slaves[$i].need = 0>>
 					<</if>>
 					<<if $slaves[$i].devotion > 20>>
 						When $he does play with $himself, $he
@@ -3246,14 +3472,19 @@
 						<<saRulesMasturbationDiscoversFetish>>
 					<</if>>
 					<<saRulesMasturbationDrugEffects>>
-				<<else>> /* releaseRules not restrictive */
-					<<if ($universalRulesConsent == 0)>>
+				<<else>> /* hasNonassignmentSex is true */
+					<<if (!App.Utils.hasFamilySex($slaves[$i]) && _release.slaves === 0)>>
+						/* no family and no other slaves, so release comes from her partner */
+						finds frequent sexual release with his <<= relationshipTerm($slaves[$i])>> @@.lightgreen;<<= getSlave($slaves[$i].relationshipTarget).slaveName>>@@ which $he is @@.mediumaquamarine;thankful for.@@
+						<<set $slaves[$i].trust++, $slaves[$i].need -= 20>> /* TODO: probably should be based on BOTH slaves' need, leaving the less needy partner slightly frustrated */
+						<<saRulesPartnerDrugEffects>>
+					<<elseif ($universalRulesConsent == 0)>>
 						happily @@.mediumaquamarine;avails $himself@@ of your permission to
 						<<set $slaves[$i].trust += 1, $slaves[$i].need = 0>>
 						<<saRulesRapeFetish>>
 						<<saRulesRapeDiscoversFetish>>
 					<<else>> /* universalRulesConsent is not zero */
-						@@.mediumaquamarine;relies@@ on your other slaves for mutual satisfaction,
+						@@.mediumaquamarine;relies@@ on <<if _release.slaves === 1>>your other slaves<<else>>$his family<</if>> for mutual satisfaction,
 						<<set $slaves[$i].trust += 1, $slaves[$i].need = 0>>
 						<<saRulesConsentFetish>>
 						<<saRulesConsentDiscoversFetish>>
@@ -3266,7 +3497,7 @@
 			<<set $slaves[$i].devotion += 1, $slaves[$i].trust += 1>>
 
 			<<if ($universalRulesConsent == 0)>>
-				<<if (_release != "restrictive" && _release != "chastity" && _release != "chastity")>>
+				<<if (_release.slaves === 1)>>
 					<<if ($slaves[$i].energy > 95)>>
 						<<if $ServQiIDs.length > 2>>
 							Under the rules, $he's allowed to demand that other slaves get $him off, and $he @@.hotpink;adores@@ you for leaving plentiful outlets for $his nymphomania under $his charge.
@@ -3383,35 +3614,40 @@
 						$He hates $himself for climaxing, and knows the mild aphrodisiacs in the food are forcing $his arousal, @@.gold;frightening $him.@@
 						<<set $slaves[$i].trust -= 1>>
 					<</if>>
-					<<set $slaves[$i].need -= 20>>
-				<<elseif (_release != "permissive") && (_release != "masturbation") && (_release != "chastity")>>
-					gets off at work, so being forbidden to masturbate doesn't affect $him seriously.
-					<<set $slaves[$i].need -= 20>>
+				<<elseif App.Utils.hasNonassignmentSex($slaves[$i])>>
+					gets off at work as well as during $his rest time.
+				<<elseif _release.masturbation == 0>>
+					gets off at work, so being unable to touch $himself doesn't bother $him.
 				<<else>>
-					gets off at work, so $he doesn't feel the need to masturbate frequently.
-					<<set $slaves[$i].need -= 20>>
+					gets off at work, so being unable to sate $his urges doesn't affect $him seriously.
 				<</if>>
+				<<set $slaves[$i].need -= 20>>
 			<<else>>
-				<<if (_release == "restrictive" || _release == "chastity")>>
-					<<if ($slaves[$i].devotion <= 20) && ($slaves[$i].trust >= -20)>>
-						refuses to offer $himself to you for sexual release, and is @@.gold;severely punished@@ for illicit masturbation.
-						<<set $slaves[$i].trust -= 2>>
-					<<elseif ($slaves[$i].devotion <= 50)>>
-						<<if $slaves[$i].devotion <= 20>>
-							occasionally stops by your office to offer $himself to you.
-						<<else>>
-							doesn't mind stopping by your office to beg for sexual release.
-						<</if>>
-						<<saRulesPlayerEnergy>>
-					<<else>> /* $slaves[$i].devotion > 50 */
-						willingly stops by your office and begs you to
-						<<saRulesPlayerFetishPlay>>
-						every break $he gets.
-						<<saRulesPlayerEnergy>>
-					<</if>> /* closes $slaves[$i].devotion > 50 */
-					<<saRulesPlayerDiscoversFetish>>
-					<<saRulesPlayerDrugEffects>>
-				<<elseif (_release == "masturbation")>>
+				<<if (!App.Utils.hasNonassignmentSex($slaves[$i]) && _release.masturbation === 0)>>
+					<<if _release.master === 1>>
+						<<if ($slaves[$i].devotion <= 20) && ($slaves[$i].trust >= -20)>>
+							refuses to offer $himself to you for sexual release, and is @@.gold;severely punished@@ for illicit masturbation.
+							<<set $slaves[$i].trust -= 2>>
+						<<elseif ($slaves[$i].devotion <= 50)>>
+							<<if $slaves[$i].devotion <= 20>>
+								occasionally stops by your office to offer $himself to you.
+							<<else>>
+								doesn't mind stopping by your office to beg for sexual release.
+							<</if>>
+							<<saRulesPlayerEnergy>>
+						<<else>> /* $slaves[$i].devotion > 50 */
+							willingly stops by your office and begs you to
+							<<saRulesPlayerFetishPlay>>
+							every break $he gets.
+							<<saRulesPlayerEnergy>>
+						<</if>> /* closes $slaves[$i].devotion > 50 */
+						<<saRulesPlayerDiscoversFetish>>
+						<<saRulesPlayerDrugEffects>>
+					<<else>> /* _release.master === 0 */
+						<<saRulesNoRelease>>
+						<<saRulesNoReleaseDrugEffects>>
+					<</if>>
+				<<elseif (!App.Utils.hasNonassignmentSex($slaves[$i]) && _release.masturbation === 1)>>
 					<<if ($slaves[$i].devotion <= 20) && ($slaves[$i].trust >= -20)>>
 						takes solace in $his permission to masturbate rather than being forced to beg for sex, @@.mediumaquamarine;reducing $his fear@@ of you.
 						<<set $slaves[$i].trust += 2, $slaves[$i].need = 0>>
@@ -3425,8 +3661,14 @@
 						is a little disappointed that $he's limited to $his <<if !hasAnyArms($slaves[$i])>>imagination<<else>>hand<<if hasBothArms($slaves[$i])>>s<</if>><</if>> and toys, but @@.mediumaquamarine;trusts you know what's best for $him.@@
 						<<set $slaves[$i].trust += 1, $slaves[$i].need = 0>>
 					<<else>>
-						@@.mediumaquamarine;trusts your judgment@@ that only $he really knows how to pleasure $himself, though $he @@.mediumorchid;often wonders why you don't use $him.@@
-						<<set $slaves[$i].trust += 1, $slaves[$i].devotion -= 2, $slaves[$i].need = 0>>
+						@@.mediumaquamarine;trusts your judgment@@ that only $he really knows how to pleasure
+						<<if _release.master === 0>>
+							$himself, though $he @@.mediumorchid;often wonders why you don't use $him.@@
+							<<set $slaves[$i].devotion -= 2>>
+						<<else>>
+							$himself.
+						<</if>>
+						<<set $slaves[$i].trust += 1, $slaves[$i].need = 0>>
 					<</if>>
 					<<if $slaves[$i].devotion > 20>>
 						When $he does play with $himself, $he
@@ -3434,22 +3676,28 @@
 						<<saRulesMasturbationDiscoversFetish>>
 					<</if>>
 					<<saRulesMasturbationDrugEffects>>
-				<<else>> /* releaseRules not restrictive */
-					<<if ($universalRulesConsent == 0)>>
+				<<else>> /* hasNonassignmentSex is true */
+					<<set _whom = (_release.slaves === 1) ? "other slaves" : $his + " family">>
+					<<if (!App.Utils.hasFamilySex($slaves[$i]) && _release.slaves === 0)>>
+						/* no family and no other slaves, so release comes from her partner */
+						finds frequent sexual release with his <<= relationshipTerm($slaves[$i])>> @@.lightgreen;<<= getSlave($slaves[$i].relationshipTarget).slaveName>>@@ which $he is @@.mediumaquamarine;thankful for.@@
+						<<set $slaves[$i].trust++, $slaves[$i].need -= 20>> /* TODO: probably should be based on BOTH slaves' need, leaving the less needy partner slightly frustrated */
+						<<saRulesPartnerDrugEffects>>
+					<<elseif ($universalRulesConsent == 0)>>
 						<<if ($slaves[$i].devotion <= 20) && ($slaves[$i].trust >= -20)>>
-							<<if (_release == "permissive")>>
+							<<if (_release.masturbation === 1)>>
 								masturbates whenever $he can find a private moment to take care of the urges induced by the food, @@.mediumaquamarine;slightly reducing $his fear@@ of you.
 								<<set $slaves[$i].trust += 1, $slaves[$i].need = 0>>
 							<<else>>
-								refuses to use other slaves to get off, and is @@.gold;severely punished@@ for illicit masturbation.
+								refuses to use _whom to get off, and is @@.gold;severely punished@@ for illicit masturbation.
 								<<set $slaves[$i].trust -= 2, $slaves[$i].need -= 10>>
 							<</if>>
 						<<elseif ($slaves[$i].devotion <= 20)>>
-							<<if (_release == "permissive")>>
-								prefers to masturbate rather than demanding sex from other slaves, @@.mediumaquamarine;slightly reducing $his fear@@ of you.
+							<<if (_release.masturbation === 1)>>
+								prefers to masturbate rather than demanding sex from _whom, @@.mediumaquamarine;slightly reducing $his fear@@ of you.
 								<<set $slaves[$i].trust += 1, $slaves[$i].need = 0>>
 							<<else>>
-								is forced to demand sex from other slaves by the urges induced by the food, and @@.hotpink;hates $himself@@ for it.
+								is forced to demand sex from _whom by the urges induced by the food, and @@.hotpink;hates $himself@@ for it.
 								<<set $slaves[$i].devotion += 1, $slaves[$i].need *= 0.5>>
 							<</if>>
 						<<elseif ($slaves[$i].devotion <= 50)>>
@@ -3465,28 +3713,28 @@
 						<</if>>
 					<<else>> /* universalRulesConsent is not zero */
 						<<if ($slaves[$i].devotion <= 20) && ($slaves[$i].trust >= -20)>>
-							<<if (_release == "permissive")>>
-								prefers to masturbate rather than asking other slaves for sex, @@.mediumaquamarine;slightly reducing $his fear@@ of you.
+							<<if (_release.masturbation === 1)>>
+								prefers to masturbate rather than asking _whom for sex, @@.mediumaquamarine;slightly reducing $his fear@@ of you.
 								<<set $slaves[$i].trust += 1, $slaves[$i].need = 0>>
 							<<else>>
-								refuses to ask other slaves for sex, and is @@.gold;severely punished@@ for illicit masturbation.
+								refuses to ask _whom for sex, and is @@.gold;severely punished@@ for illicit masturbation.
 								<<set $slaves[$i].trust -= 2, $slaves[$i].need -= 10>>
 							<</if>>
 						<<elseif ($slaves[$i].devotion <= 20)>>
-							<<if (_release == "permissive")>>
-								prefers to masturbate rather than trading sex with other slaves, @@.mediumaquamarine;slightly reducing $his fear@@ of you.
+							<<if (_release.masturbation === 1)>>
+								prefers to masturbate rather than trading sex with _whom, @@.mediumaquamarine;slightly reducing $his fear@@ of you.
 								<<set $slaves[$i].trust += 1, $slaves[$i].need = 0>>
 							<<else>>
-								is forced to swap sex with other slaves by the urges induced by the food, and @@.hotpink;hates $himself@@ for it.
+								is forced to swap sex with _whom by the urges induced by the food, and @@.hotpink;hates $himself@@ for it.
 								<<set $slaves[$i].devotion += 1, $slaves[$i].need *= 0.5>>
 							<</if>>
 						<<elseif ($slaves[$i].devotion <= 50)>>
-							@@.hotpink;accepts having to ask@@ other slaves for sex,
+							@@.hotpink;accepts having to ask@@ _whom for sex,
 							<<set $slaves[$i].devotion += 1, $slaves[$i].need = 0>>
 							<<saRulesConsentFetish>>
 							<<saRulesConsentDiscoversFetish>>
 						<<else>>
-							@@.mediumaquamarine;relies@@ on your other slaves for mutual satisfaction,
+							@@.mediumaquamarine;relies@@ on _whom for mutual satisfaction,
 							<<set $slaves[$i].trust += 1, $slaves[$i].need = 0>>
 							<<saRulesConsentFetish>>
 							<<saRulesConsentDiscoversFetish>>
@@ -3588,7 +3836,7 @@
 							Under the rules and $his job, $he will someday find $himself constantly molested by other slaves, but $he's already in such constant terror it that it doesn't cross $his mind.
 						<</if>>
 					<</if>>
-				<<elseif (_release != "restrictive" && _release != "chastity")>>
+				<<elseif (_release.slaves === 1)>>
 					Under the rules, $he's allowed to demand that other slaves to get $him off, but only when $he's finished $his shift. $He still @@.hotpink;adores@@ having the option.
 					<<set $slaves[$i].devotion += 1>>
 				<</if>>
@@ -3713,31 +3961,41 @@
 		<<case "be the Milkmaid">>
 			<<set $slaves[$i].need -= $DairyiIDs.length*5>>
 			<<if $slaves[$i].energy <= 20>>
-				is frigid and has little interest in getting off<<if (_release != "permissive")>>, making the rule restricting $his sexual outlets superfluous<</if>>.
+				is frigid and has little interest in getting off<<if App.Utils.releaseRestricted($slaves[$i])>>, making the rule restricting $his sexual outlets superfluous<</if>>.
 				<<set $slaves[$i].need = 0>>
 			<<elseif $slaves[$i].need < $slaves[$i].needCap*0.5>>
-				<<if (_release != "permissive") && (_release != "masturbation") && (_release != "chastity")>>
+				<<if (_release.masturbation === 0)>>
 					gets off while performing $his duties, so being forbidden from masturbation doesn't really bother $him.
-					<<set $slaves[$i].need -= 20>>
 				<<else>>
 					gets off while performing $his duties, so $he doesn't feel the need for release that often.
-					<<set $slaves[$i].need -= 20>>
 				<</if>>
+				<<set $slaves[$i].need -= 20>>
 			<<else>>
-				<<if (_release == "restrictive" || _release == "chastity")>>
-					willingly begs you to
-					<<saRulesPlayerFetishPlay>>
-					whenever you inspect $dairyName.
-					<<saRulesPlayerEnergy>>
-					<<saRulesPlayerDiscoversFetish>>
-					<<saRulesPlayerDrugEffects>>
-				<<elseif (_release == "masturbation")>>
+				<<if (!App.Utils.hasNonassignmentSex($slaves[$i]) && _release.masturbation === 0)>>
+					<<if _release.master === 1>>
+						willingly begs you to
+						<<saRulesPlayerFetishPlay>>
+						whenever you inspect $dairyName.
+						<<saRulesPlayerEnergy>>
+						<<saRulesPlayerDiscoversFetish>>
+						<<saRulesPlayerDrugEffects>>
+					<<else>> /* _release.master === 0 */
+						<<saRulesNoRelease>>
+						<<saRulesNoReleaseDrugEffects>>
+					<</if>>
+				<<elseif (!App.Utils.hasNonassignmentSex($slaves[$i]) && _release.masturbation === 1)>>
 					<<if ($slaves[$i].devotion < 80)>>
 						is a little disappointed that $he's limited to $his <<if !hasAnyArms($slaves[$i])>>imagination<<else>>hand<<if hasBothArms($slaves[$i])>>s<</if>><</if>> and toys when off duty, but @@.mediumaquamarine;trusts you know what's best for $him.@@
 						<<set $slaves[$i].trust += 1, $slaves[$i].need = 0>>
 					<<else>>
-						@@.mediumaquamarine;trusts your judgment@@ that only $he really knows how to pleasure $himself, though $he @@.mediumorchid;often wonders why you don't use $him.@@
-						<<set $slaves[$i].trust += 1, $slaves[$i].devotion -= 2, $slaves[$i].need = 0>>
+						@@.mediumaquamarine;trusts your judgment@@ that only $he really knows how to pleasure
+						<<if _release.master === 0>>
+							$himself, though $he @@.mediumorchid;often wonders why you don't use $him.@@
+							<<set $slaves[$i].devotion -= 2>>
+						<<else>>
+							$himself.
+						<</if>>
+						<<set $slaves[$i].trust += 1, $slaves[$i].need = 0>>
 					<</if>>
 					<<if $slaves[$i].devotion > 20>>
 						When $he does play with $himself, $he
@@ -3745,14 +4003,19 @@
 						<<saRulesMasturbationDiscoversFetish>>
 					<</if>>
 					<<saRulesMasturbationDrugEffects>>
-				<<else>> /* releaseRules not restrictive */
-					<<if ($universalRulesConsent == 0)>>
+				<<else>> /* hasNonassignmentSex is true */
+					<<if (!App.Utils.hasFamilySex($slaves[$i]) && _release.slaves === 0)>>
+						/* no family and no other slaves, so release comes from her partner */
+						finds frequent sexual release with his <<= relationshipTerm($slaves[$i])>> @@.lightgreen;<<= getSlave($slaves[$i].relationshipTarget).slaveName>>@@ which $he is @@.mediumaquamarine;thankful for.@@
+						<<set $slaves[$i].trust++, $slaves[$i].need -= 20>> /* TODO: probably should be based on BOTH slaves' need, leaving the less needy partner slightly frustrated */
+						<<saRulesPartnerDrugEffects>>
+					<<elseif ($universalRulesConsent == 0)>>
 						happily @@.mediumaquamarine;avails $himself@@ of your permission to
 						<<set $slaves[$i].trust += 1, $slaves[$i].need = 0>>
 						<<saRulesRapeFetish>>
 						<<saRulesRapeDiscoversFetish>>
 					<<else>> /* universalRulesConsent is not zero */
-						@@.mediumaquamarine;relies@@ on your other slaves for mutual satisfaction,
+						@@.mediumaquamarine;relies@@ on <<if _release.slaves === 1>>your other slaves<<else>>$his family<</if>> for mutual satisfaction,
 						<<set $slaves[$i].trust += 1, $slaves[$i].need = 0>>
 						<<saRulesConsentFetish>>
 						<<saRulesConsentDiscoversFetish>>
@@ -3765,7 +4028,7 @@
 			<<set $slaves[$i].devotion += 1, $slaves[$i].trust += 1>>
 
 			<<if ($universalRulesConsent == 0)>>
-				<<if (_release != "restrictive" && _release != "chastity" && _release != "chastity")>>
+				<<if (_release.slaves === 1)>>
 					<<if ($slaves[$i].energy > 95)>>
 						<<if $DairyiIDs.length > 2>>
 							Under the rules, $he's allowed to demand that other slaves get $him off, and $he @@.hotpink;adores@@ you for leaving plentiful outlets for $his nymphomania under $his charge.
@@ -3880,10 +4143,10 @@
 				<</if>>
 			<<else>>
 				<<if $slaves[$i].devotion < -50>>
-					is so unhappy that $he has little interest in getting off<<if (_release != "permissive")>>, making the rule restricting $his sexual outlets superfluous<</if>>.
+					is so unhappy that $he has little interest in getting off<<if App.Utils.releaseRestricted($slaves[$i])>>, making the rule restricting $his sexual outlets superfluous<</if>>.
 					<<set $slaves[$i].need = 0>>
 				<<elseif $slaves[$i].energy <= 20>>
-					is frigid and has little interest in getting off<<if (_release != "permissive")>>, making the rule restricting $his sexual outlets superfluous<</if>>.
+					is frigid and has little interest in getting off<<if App.Utils.releaseRestricted($slaves[$i])>>, making the rule restricting $his sexual outlets superfluous<</if>>.
 					<<set $slaves[$i].need = 0>>
 				<<elseif $slaves[$i].need < $slaves[$i].needCap*0.5>>
 					<<if ($slaves[$i].devotion <= 20)>>
@@ -3894,7 +4157,7 @@
 							<<set $slaves[$i].trust -= 1>>
 						<</if>>
 						<<set $slaves[$i].need -= 20>>
-					<<elseif (_release != "permissive") && (_release != "masturbation") && (_release != "chastity")>>
+					<<elseif (_release.masturbation === 0)>>
 						gets off from being milked, so being forbidden to masturbate doesn't affect $him seriously.
 						<<set $slaves[$i].need -= 20>>
 					<<else>>
@@ -3902,26 +4165,31 @@
 						<<set $slaves[$i].need -= 20>>
 					<</if>>
 				<<else>>
-					<<if (_release == "restrictive" || _release == "chastity")>>
-						<<if ($slaves[$i].devotion <= 20) && ($slaves[$i].trust >= -20)>>
-							refuses to come to you for sexual release, and is @@.gold;severely punished@@ for illicit masturbation.
-							<<set $slaves[$i].trust -= 2>>
-						<<elseif ($slaves[$i].devotion <= 50)>>
-							<<if $slaves[$i].devotion <= 20>>
-								occasionally comes to you to beg for sexual release.
-							<<else>>
-								doesn't mind having to come to you to beg for sexual release.
-							<</if>>
-							<<saRulesPlayerEnergy>>
-						<<else>> /* $slaves[$i].devotion > 50 */
-							willingly begs you to
-							<<saRulesPlayerFetishPlay>>
-							every chance $he gets.
-							<<saRulesPlayerEnergy>>
-						<</if>> /* closes $slaves[$i].devotion > 50 */
-						<<saRulesPlayerDiscoversFetish>>
-						<<saRulesPlayerDrugEffects>>
-					<<elseif (_release == "masturbation")>>
+					<<if (!App.Utils.hasNonassignmentSex($slaves[$i]) && _release.masturbation === 0)>>
+						<<if _release.master === 1>>
+							<<if ($slaves[$i].devotion <= 20) && ($slaves[$i].trust >= -20)>>
+								refuses to come to you for sexual release, and is @@.gold;severely punished@@ for illicit masturbation.
+								<<set $slaves[$i].trust -= 2>>
+							<<elseif ($slaves[$i].devotion <= 50)>>
+								<<if $slaves[$i].devotion <= 20>>
+									occasionally comes to you to beg for sexual release.
+								<<else>>
+									doesn't mind having to come to you to beg for sexual release.
+								<</if>>
+								<<saRulesPlayerEnergy>>
+							<<else>> /* $slaves[$i].devotion > 50 */
+								willingly begs you to
+								<<saRulesPlayerFetishPlay>>
+								every chance $he gets.
+								<<saRulesPlayerEnergy>>
+							<</if>> /* closes $slaves[$i].devotion > 50 */
+							<<saRulesPlayerDiscoversFetish>>
+							<<saRulesPlayerDrugEffects>>
+						<<else>> /* _release.master === 0 */
+							<<saRulesNoRelease>>
+							<<saRulesNoReleaseDrugEffects>>
+						<</if>>
+					<<elseif (!App.Utils.hasNonassignmentSex($slaves[$i]) && _release.masturbation === 1)>>
 						<<if ($slaves[$i].devotion <= 20) && ($slaves[$i].trust >= -20)>>
 							takes solace in $his permission to masturbate rather than being forced to beg for sex, @@.mediumaquamarine;reducing $his fear@@ of you.
 							<<set $slaves[$i].trust += 2, $slaves[$i].need = 0>>
@@ -3935,8 +4203,14 @@
 							is a little disappointed that $he's limited to $his <<if !hasAnyArms($slaves[$i])>>imagination<<else>>hand<<if hasBothArms($slaves[$i])>>s<</if>><</if>> and toys, but @@.mediumaquamarine;trusts you know what's best for $him.@@
 							<<set $slaves[$i].trust += 1, $slaves[$i].need = 0>>
 						<<else>>
-							@@.mediumaquamarine;trusts your judgment@@ that only $he really knows how to pleasure $himself, though $he @@.mediumorchid;often wonders why you don't use $him.@@
-							<<set $slaves[$i].trust += 1, $slaves[$i].devotion -= 2, $slaves[$i].need = 0>>
+							@@.mediumaquamarine;trusts your judgment@@ that only $he really knows how to pleasure
+							<<if _release.master === 0>>
+								$himself, though $he @@.mediumorchid;often wonders why you don't use $him.@@
+								<<set $slaves[$i].devotion -= 2>>
+							<<else>>
+								$himself.
+							<</if>>
+							<<set $slaves[$i].trust += 1, $slaves[$i].need = 0>>
 						<</if>>
 						<<if $slaves[$i].devotion > 20>>
 							When $he does play with $himself, $he
@@ -3944,22 +4218,28 @@
 							<<saRulesMasturbationDiscoversFetish>>
 						<</if>>
 						<<saRulesMasturbationDrugEffects>>
-					<<else>> /* releaseRules not restrictive */
-						<<if ($universalRulesConsent == 0)>>
+					<<else>> /* hasNonassignmentSex is true */
+						<<set _whom = (_release.slaves === 1) ? "other slaves" : $his + " family">>
+						<<if (!App.Utils.hasFamilySex($slaves[$i]) && _release.slaves === 0)>>
+							/* no family and no other slaves, so release comes from her partner */
+							finds frequent sexual release with his <<= relationshipTerm($slaves[$i])>> @@.lightgreen;<<= getSlave($slaves[$i].relationshipTarget).slaveName>>@@ which $he is @@.mediumaquamarine;thankful for.@@
+							<<set $slaves[$i].trust++, $slaves[$i].need -= 20>> /* TODO: probably should be based on BOTH slaves' need, leaving the less needy partner slightly frustrated */
+							<<saRulesPartnerDrugEffects>>
+						<<elseif ($universalRulesConsent == 0)>>
 							<<if ($slaves[$i].devotion <= 20) && ($slaves[$i].trust >= -20)>>
-								<<if (_release == "permissive")>>
+								<<if (_release.masturbation === 1)>>
 									masturbates whenever $he can find a private moment to take care of the urges induced by the food, @@.mediumaquamarine;slightly reducing $his fear@@ of you.
 									<<set $slaves[$i].trust += 1, $slaves[$i].need = 0>>
 								<<else>>
-									refuses to use other slaves to get off, and is @@.gold;severely punished@@ for illicit masturbation.
+									refuses to use _whom to get off, and is @@.gold;severely punished@@ for illicit masturbation.
 									<<set $slaves[$i].trust -= 2, $slaves[$i].need -= 10>>
 								<</if>>
 							<<elseif ($slaves[$i].devotion <= 20)>>
-								<<if (_release == "permissive")>>
-									prefers to masturbate rather than demanding sex from other slaves, @@.mediumaquamarine;slightly reducing $his fear@@ of you.
+								<<if (_release.masturbation === 1)>>
+									prefers to masturbate rather than demanding sex from _whom, @@.mediumaquamarine;slightly reducing $his fear@@ of you.
 									<<set $slaves[$i].trust += 1, $slaves[$i].need = 0>>
 								<<else>>
-									is forced to demand sex from other slaves by the urges induced by the food, and @@.hotpink;hates $himself@@ for it.
+									is forced to demand sex from _whom by the urges induced by the food, and @@.hotpink;hates $himself@@ for it.
 									<<set $slaves[$i].devotion += 1, $slaves[$i].need *= 0.5>>
 								<</if>>
 							<<elseif ($slaves[$i].devotion <= 50)>>
@@ -3975,28 +4255,28 @@
 							<</if>>
 						<<else>> /* universalRulesConsent is not zero */
 							<<if ($slaves[$i].devotion <= 20) && ($slaves[$i].trust >= -20)>>
-								<<if (_release == "permissive")>>
-									prefers to masturbate rather than asking other slaves for sex, @@.mediumaquamarine;slightly reducing $his fear@@ of you.
+								<<if (_release.masturbation === 1)>>
+									prefers to masturbate rather than asking _whom for sex, @@.mediumaquamarine;slightly reducing $his fear@@ of you.
 									<<set $slaves[$i].trust += 1, $slaves[$i].need = 0>>
 								<<else>>
-									refuses to ask other slaves for sex, and is @@.gold;severely punished@@ for illicit masturbation.
+									refuses to ask _whom for sex, and is @@.gold;severely punished@@ for illicit masturbation.
 									<<set $slaves[$i].trust -= 2, $slaves[$i].need -= 10>>
 								<</if>>
 							<<elseif ($slaves[$i].devotion <= 20)>>
-								<<if (_release == "permissive")>>
-									prefers to masturbate rather than trading sex with other slaves, @@.mediumaquamarine;slightly reducing $his fear@@ of you.
+								<<if (_release.masturbation === 1)>>
+									prefers to masturbate rather than trading sex with _whom, @@.mediumaquamarine;slightly reducing $his fear@@ of you.
 									<<set $slaves[$i].trust += 1, $slaves[$i].need = 0>>
 								<<else>>
-									is forced to swap sex with other slaves by the urges induced by the food, and @@.hotpink;hates $himself@@ for it.
+									is forced to swap sex with _whom by the urges induced by the food, and @@.hotpink;hates $himself@@ for it.
 									<<set $slaves[$i].devotion += 1, $slaves[$i].need *= 0.5>>
 								<</if>>
 							<<elseif ($slaves[$i].devotion <= 50)>>
-								@@.hotpink;accepts having to ask@@ other slaves for sex,
+								@@.hotpink;accepts having to ask@@ _whom for sex,
 								<<set $slaves[$i].devotion += 1, $slaves[$i].need = 0>>
 								<<saRulesConsentFetish>>
 								<<saRulesConsentDiscoversFetish>>
 							<<else>>
-								@@.mediumaquamarine;relies@@ on your other slaves for mutual satisfaction,
+								@@.mediumaquamarine;relies@@ on _whom for mutual satisfaction,
 								<<set $slaves[$i].trust += 1, $slaves[$i].need = 0>>
 								<<saRulesConsentFetish>>
 								<<saRulesConsentDiscoversFetish>>
@@ -4123,7 +4403,7 @@
 									Under the rules, $he will someday find $himself constantly molested by other slaves, but $he's already in such constant terror it that it doesn't cross $his mind.
 								<</if>>
 							<</if>>
-						<<elseif (_release != "restrictive" && _release != "chastity")>>
+						<<elseif (_release.slaves === 1)>>
 							<<if ($slaves[$i].energy > 95)>>
 								<<if $DairyiIDs.length > 2>>
 									Under the rules, $he's allowed to demand that other slaves to get $him off, and $he @@.hotpink;adores@@ you for providing plentiful outlets for $his nymphomania.
@@ -4266,10 +4546,10 @@
 		<<case "be the Farmer">>
 			<<set $slaves[$i].need -= $FarmyardiIDs.length*5>>
 			<<if $slaves[$i].energy <= 20>>
-				is frigid and has little interest in getting off<<if (_release != "permissive")>>, making the rule restricting $his sexual outlets superfluous<</if>>.
+				is frigid and has little interest in getting off<<if App.Utils.releaseRestricted($slaves[$i])>>, making the rule restricting $his sexual outlets superfluous<</if>>.
 				<<set $slaves[$i].need = 0>>
 			<<elseif $slaves[$i].need < $slaves[$i].needCap*0.5>>
-				<<if (_release != "permissive") && (_release != "masturbation") && (_release != "chastity")>>
+				<<if (_release.masturbation === 0)>>
 					gets off while performing $his duties, so being forbidden from masturbation doesn't really bother $him.
 					<<set $slaves[$i].need -= 20>>
 				<<else>>
@@ -4277,20 +4557,31 @@
 					<<set $slaves[$i].need -= 20>>
 				<</if>>
 			<<else>>
-				<<if (_release == "restrictive" || _release == "chastity")>>
-					willingly begs you to
-					<<saRulesPlayerFetishPlay>>
-					whenever you inspect $farmyardName.
-					<<saRulesPlayerEnergy>>
-					<<saRulesPlayerDiscoversFetish>>
-					<<saRulesPlayerDrugEffects>>
-				<<elseif (_release == "masturbation")>>
+				<<if (!App.Utils.hasNonassignmentSex($slaves[$i]) && _release.masturbation === 0)>>
+					<<if _release.master === 1>>
+						willingly begs you to
+						<<saRulesPlayerFetishPlay>>
+						whenever you inspect $farmyardName.
+						<<saRulesPlayerEnergy>>
+						<<saRulesPlayerDiscoversFetish>>
+						<<saRulesPlayerDrugEffects>>
+					<<else>> /* _release.master === 0 */
+						<<saRulesNoRelease>>
+						<<saRulesNoReleaseDrugEffects>>
+					<</if>>
+				<<elseif (!App.Utils.hasNonassignmentSex($slaves[$i]) && _release.masturbation === 1)>>
 					<<if ($slaves[$i].devotion < 80)>>
 						is a little disappointed that $he's limited to $his <<if !hasAnyArms($slaves[$i])>>imagination<<else>>hand<<if hasBothArms($slaves[$i])>>s<</if>><</if>> and toys when off duty, but @@.mediumaquamarine;trusts you know what's best for $him.@@
 						<<set $slaves[$i].trust += 1, $slaves[$i].need = 0>>
 					<<else>>
-						@@.mediumaquamarine;trusts your judgment@@ that only $he really knows how to pleasure $himself, though $he @@.mediumorchid;often wonders why you don't use $him.@@
-						<<set $slaves[$i].trust += 1, $slaves[$i].devotion -= 2, $slaves[$i].need = 0>>
+						@@.mediumaquamarine;trusts your judgment@@ that only $he really knows how to pleasure
+						<<if _release.master === 0>>
+							$himself, though $he @@.mediumorchid;often wonders why you don't use $him.@@
+							<<set $slaves[$i].devotion -= 2>>
+						<<else>>
+							$himself.
+						<</if>>
+						<<set $slaves[$i].trust += 1, $slaves[$i].need = 0>>
 					<</if>>
 					<<if $slaves[$i].devotion > 20>>
 						When $he does play with $himself, $he
@@ -4298,14 +4589,19 @@
 						<<saRulesMasturbationDiscoversFetish>>
 					<</if>>
 					<<saRulesMasturbationDrugEffects>>
-				<<else>> /* releaseRules not restrictive */
-					<<if ($universalRulesConsent == 0)>>
+				<<else>> /* hasNonassignmentSex is true */
+					<<if (!App.Utils.hasFamilySex($slaves[$i]) && _release.slaves === 0)>>
+						/* no family and no other slaves, so release comes from her partner */
+						finds frequent sexual release with his <<= relationshipTerm($slaves[$i])>> @@.lightgreen;<<= getSlave($slaves[$i].relationshipTarget).slaveName>>@@ which $he is @@.mediumaquamarine;thankful for.@@
+						<<set $slaves[$i].trust++, $slaves[$i].need -= 20>> /* TODO: probably should be based on BOTH slaves' need, leaving the less needy partner slightly frustrated */
+						<<saRulesPartnerDrugEffects>>
+					<<elseif ($universalRulesConsent == 0)>>
 						happily @@.mediumaquamarine;avails $himself@@ of your permission to
 						<<set $slaves[$i].trust += 1, $slaves[$i].need = 0>>
 						<<saRulesRapeFetish>>
 						<<saRulesRapeDiscoversFetish>>
 					<<else>> /* universalRulesConsent is not zero */
-						@@.mediumaquamarine;relies@@ on your other slaves for mutual satisfaction,
+						@@.mediumaquamarine;relies@@ on <<if _release.slaves === 1>>your other slaves<<else>>$his family<</if>> for mutual satisfaction,
 						<<set $slaves[$i].trust += 1, $slaves[$i].need = 0>>
 						<<saRulesConsentFetish>>
 						<<saRulesConsentDiscoversFetish>>
@@ -4318,7 +4614,7 @@
 			<<set $slaves[$i].devotion += 1, $slaves[$i].trust += 1>>
 
 			<<if ($universalRulesConsent == 0)>>
-				<<if (_release != "restrictive" && _release != "chastity" && _release != "chastity")>>
+				<<if (_release.slaves === 1)>>
 					<<if ($slaves[$i].energy > 95)>>
 						<<if $FarmyardiIDs.length > 2>>
 							Under the rules, $he's allowed to demand that other slaves get $him off, and $he @@.hotpink;adores@@ you for leaving plentiful outlets for $his nymphomania under $his charge.
@@ -4421,10 +4717,10 @@
 			<</if>>
 		<<case "work as a farmhand">>
 			<<if $slaves[$i].devotion < -50>>
-				is so unhappy that $he has little interest in getting off<<if (_release != "permissive")>>, making the rule restricting $his sexual outlets superfluous<</if>>.
+				is so unhappy that $he has little interest in getting off<<if App.Utils.releaseRestricted($slaves[$i])>>, making the rule restricting $his sexual outlets superfluous<</if>>.
 				<<set $slaves[$i].need = 0>>
 			<<elseif $slaves[$i].energy <= 20>>
-				is frigid and has little interest in getting off<<if (_release != "permissive")>>, making the rule restricting $his sexual outlets superfluous<</if>>.
+				is frigid and has little interest in getting off<<if App.Utils.releaseRestricted($slaves[$i])>>, making the rule restricting $his sexual outlets superfluous<</if>>.
 				<<set $slaves[$i].need = 0>>
 			<<elseif $slaves[$i].need < $slaves[$i].needCap*0.5>>
 				<<if ($slaves[$i].devotion <= 20)>>
@@ -4435,7 +4731,7 @@
 						<<set $slaves[$i].trust -= 1>>
 					<</if>>
 					<<set $slaves[$i].need -= 20>>
-				<<elseif (_release != "permissive") && (_release != "masturbation") && (_release != "chastity")>>
+				<<elseif (_release.masturbation === 0)>>
 					gets off from working as a farmhand, so being forbidden to masturbate doesn't affect $him seriously.
 					<<set $slaves[$i].need -= 20>>
 				<<else>>
@@ -4443,26 +4739,31 @@
 					<<set $slaves[$i].need -= 20>>
 				<</if>>
 			<<else>>
-				<<if (_release == "restrictive" || _release == "chastity")>>
-					<<if ($slaves[$i].devotion <= 20) && ($slaves[$i].trust >= -20)>>
-						refuses to come to you for sexual release, and is @@.gold;severely punished@@ for illicit masturbation.
-						<<set $slaves[$i].trust -= 2>>
-					<<elseif ($slaves[$i].devotion <= 50)>>
-						<<if $slaves[$i].devotion <= 20>>
-							occasionally comes to you to beg for sexual release.
-						<<else>>
-							doesn't mind having to come to you to beg for sexual release.
-						<</if>>
-						<<saRulesPlayerEnergy>>
-					<<else>> /* $slaves[$i].devotion > 50 */
-						willingly begs you to
-						<<saRulesPlayerFetishPlay>>
-						every chance $he gets.
-						<<saRulesPlayerEnergy>>
-					<</if>> /* closes $slaves[$i].devotion > 50 */
-					<<saRulesPlayerDiscoversFetish>>
-					<<saRulesPlayerDrugEffects>>
-				<<elseif (_release == "masturbation")>>
+				<<if (!App.Utils.hasNonassignmentSex($slaves[$i]) && _release.masturbation === 0)>>
+					<<if _release.master === 1>>
+						<<if ($slaves[$i].devotion <= 20) && ($slaves[$i].trust >= -20)>>
+							refuses to come to you for sexual release, and is @@.gold;severely punished@@ for illicit masturbation.
+							<<set $slaves[$i].trust -= 2>>
+						<<elseif ($slaves[$i].devotion <= 50)>>
+							<<if $slaves[$i].devotion <= 20>>
+								occasionally comes to you to beg for sexual release.
+							<<else>>
+								doesn't mind having to come to you to beg for sexual release.
+							<</if>>
+							<<saRulesPlayerEnergy>>
+						<<else>> /* $slaves[$i].devotion > 50 */
+							willingly begs you to
+							<<saRulesPlayerFetishPlay>>
+							every chance $he gets.
+							<<saRulesPlayerEnergy>>
+						<</if>> /* closes $slaves[$i].devotion > 50 */
+						<<saRulesPlayerDiscoversFetish>>
+						<<saRulesPlayerDrugEffects>>
+					<<else>> /* _release.master === 0 */
+						<<saRulesNoRelease>>
+						<<saRulesNoReleaseDrugEffects>>
+					<</if>>
+				<<elseif (!App.Utils.hasNonassignmentSex($slaves[$i]) && _release.masturbation === 1)>>
 					<<if ($slaves[$i].devotion <= 20) && ($slaves[$i].trust >= -20)>>
 						takes solace in $his permission to masturbate rather than being forced to beg for sex, @@.mediumaquamarine;reducing $his fear@@ of you.
 						<<set $slaves[$i].trust += 2, $slaves[$i].need = 0>>
@@ -4476,8 +4777,14 @@
 						is a little disappointed that $he's limited to $his <<if !hasAnyArms($slaves[$i])>>imagination<<else>>hand<<if hasBothArms($slaves[$i])>>s<</if>><</if>> and toys, but @@.mediumaquamarine;trusts you know what's best for $him.@@
 						<<set $slaves[$i].trust += 1, $slaves[$i].need = 0>>
 					<<else>>
-						@@.mediumaquamarine;trusts your judgment@@ that only $he really knows how to pleasure $himself, though $he @@.mediumorchid;often wonders why you don't use $him.@@
-						<<set $slaves[$i].trust += 1, $slaves[$i].devotion -= 2, $slaves[$i].need = 0>>
+						@@.mediumaquamarine;trusts your judgment@@ that only $he really knows how to pleasure
+						<<if _release.master === 0>>
+							$himself, though $he @@.mediumorchid;often wonders why you don't use $him.@@
+							<<set $slaves[$i].devotion -= 2>>
+						<<else>>
+							$himself.
+						<</if>>
+						<<set $slaves[$i].trust += 1, $slaves[$i].need = 0>>
 					<</if>>
 					<<if $slaves[$i].devotion > 20>>
 						When $he does play with $himself, $he
@@ -4485,22 +4792,28 @@
 						<<saRulesMasturbationDiscoversFetish>>
 					<</if>>
 					<<saRulesMasturbationDrugEffects>>
-				<<else>> /* releaseRules not restrictive */
-					<<if ($universalRulesConsent == 0)>>
+				<<else>> /* hasNonassignmentSex is true */
+					<<set _whom = (_release.slaves === 1) ? "other slaves" : $his + " family">>
+					<<if (!App.Utils.hasFamilySex($slaves[$i]) && _release.slaves === 0)>>
+						/* no family and no other slaves, so release comes from her partner */
+						finds frequent sexual release with his <<= relationshipTerm($slaves[$i])>> @@.lightgreen;<<= getSlave($slaves[$i].relationshipTarget).slaveName>>@@ which $he is @@.mediumaquamarine;thankful for.@@
+						<<set $slaves[$i].trust++, $slaves[$i].need -= 20>> /* TODO: probably should be based on BOTH slaves' need, leaving the less needy partner slightly frustrated */
+						<<saRulesPartnerDrugEffects>>
+					<<elseif ($universalRulesConsent == 0)>>
 						<<if ($slaves[$i].devotion <= 20) && ($slaves[$i].trust >= -20)>>
-							<<if (_release == "permissive")>>
+							<<if (_release.masturbation === 1)>>
 								masturbates whenever $he can find a private moment to take care of the urges induced by the food, @@.mediumaquamarine;slightly reducing $his fear@@ of you.
 								<<set $slaves[$i].trust += 1, $slaves[$i].need = 0>>
 							<<else>>
-								refuses to use other slaves to get off, and is @@.gold;severely punished@@ for illicit masturbation.
+								refuses to use _whom to get off, and is @@.gold;severely punished@@ for illicit masturbation.
 								<<set $slaves[$i].trust -= 2, $slaves[$i].need -= 10>>
 							<</if>>
 						<<elseif ($slaves[$i].devotion <= 20)>>
-							<<if (_release == "permissive")>>
-								prefers to masturbate rather than demanding sex from other slaves, @@.mediumaquamarine;slightly reducing $his fear@@ of you.
+							<<if (_release.masturbation === 1)>>
+								prefers to masturbate rather than demanding sex from _whom, @@.mediumaquamarine;slightly reducing $his fear@@ of you.
 								<<set $slaves[$i].trust += 1, $slaves[$i].need = 0>>
 							<<else>>
-								is forced to demand sex from other slaves by the urges induced by the food, and @@.hotpink;hates $himself@@ for it.
+								is forced to demand sex from _whom by the urges induced by the food, and @@.hotpink;hates $himself@@ for it.
 								<<set $slaves[$i].devotion += 1, $slaves[$i].need *= 0.5>>
 							<</if>>
 						<<elseif ($slaves[$i].devotion <= 50)>>
@@ -4516,28 +4829,28 @@
 						<</if>>
 					<<else>> /* universalRulesConsent is not zero */
 						<<if ($slaves[$i].devotion <= 20) && ($slaves[$i].trust >= -20)>>
-							<<if (_release == "permissive")>>
-								prefers to masturbate rather than asking other slaves for sex, @@.mediumaquamarine;slightly reducing $his fear@@ of you.
+							<<if (_release.masturbation === 1)>>
+								prefers to masturbate rather than asking _whom for sex, @@.mediumaquamarine;slightly reducing $his fear@@ of you.
 								<<set $slaves[$i].trust += 1, $slaves[$i].need = 0>>
 							<<else>>
-								refuses to ask other slaves for sex, and is @@.gold;severely punished@@ for illicit masturbation.
+								refuses to ask _whom for sex, and is @@.gold;severely punished@@ for illicit masturbation.
 								<<set $slaves[$i].trust -= 2, $slaves[$i].need -= 10>>
 							<</if>>
 						<<elseif ($slaves[$i].devotion <= 20)>>
-							<<if (_release == "permissive")>>
-								prefers to masturbate rather than trading sex with other slaves, @@.mediumaquamarine;slightly reducing $his fear@@ of you.
+							<<if (_release.masturbation === 1)>>
+								prefers to masturbate rather than trading sex with _whom, @@.mediumaquamarine;slightly reducing $his fear@@ of you.
 								<<set $slaves[$i].trust += 1, $slaves[$i].need = 0>>
 							<<else>>
-								is forced to swap sex with other slaves by the urges induced by the food, and @@.hotpink;hates $himself@@ for it.
+								is forced to swap sex with _whom by the urges induced by the food, and @@.hotpink;hates $himself@@ for it.
 								<<set $slaves[$i].devotion += 1, $slaves[$i].need *= 0.5>>
 							<</if>>
 						<<elseif ($slaves[$i].devotion <= 50)>>
-							@@.hotpink;accepts having to ask@@ other slaves for sex,
+							@@.hotpink;accepts having to ask@@ _whom for sex,
 							<<set $slaves[$i].devotion += 1, $slaves[$i].need = 0>>
 							<<saRulesConsentFetish>>
 							<<saRulesConsentDiscoversFetish>>
 						<<else>>
-							@@.mediumaquamarine;relies@@ on your other slaves for mutual satisfaction,
+							@@.mediumaquamarine;relies@@ on _whom for mutual satisfaction,
 							<<set $slaves[$i].trust += 1, $slaves[$i].need = 0>>
 							<<saRulesConsentFetish>>
 							<<saRulesConsentDiscoversFetish>>
@@ -4663,7 +4976,7 @@
 							Under the rules, $he will someday find $himself constantly molested by other slaves, but $he's already in such constant terror it that it doesn't cross $his mind.
 						<</if>>
 					<</if>>
-				<<elseif (_release != "restrictive" && _release != "chastity")>>
+				<<elseif (_release.slaves === 1)>>
 					<<if ($slaves[$i].energy > 95)>>
 						<<if $FarmyardiIDs.length > 2>>
 							Under the rules, $he's allowed to demand that other slaves to get $him off, and $he @@.hotpink;adores@@ you for providing plentiful outlets for $his nymphomania.
@@ -4893,7 +5206,7 @@
 						<<set $slaves[$i].trust -= 1>>
 					<</if>>
 					<<set $slaves[$i].need -= 20>>
-				<<elseif (_release != "permissive") && (_release != "masturbation") && (_release != "chastity")>>
+				<<elseif (_release.masturbation === 0)>>
 					gets off regularly, so being forbidden to masturbate doesn't affect $him seriously.
 					<<set $slaves[$i].need -= 20>>
 				<<else>>
@@ -5049,7 +5362,7 @@
 						<<set $slaves[$i].trust -= 1>>
 					<</if>>
 					<<set $slaves[$i].need -= 20>>
-				<<elseif (_release != "permissive") && (_release != "masturbation") && (_release != "chastity")>>
+				<<elseif (_release.masturbation === 0)>>
 					gets off with $HeadGirl.slaveName, so being forbidden to masturbate doesn't affect $him seriously.
 					<<set $slaves[$i].need -= 20>>
 				<<else>>
@@ -5188,10 +5501,10 @@
 			<</if>>
 		<<default>>
 			<<if $slaves[$i].devotion < -50>>
-				is so unhappy that $he has little interest in getting off<<if (_release != "permissive")>>, making the rule restricting $his sexual outlets superfluous<</if>>.
+				is so unhappy that $he has little interest in getting off<<if App.Utils.releaseRestricted($slaves[$i])>>, making the rule restricting $his sexual outlets superfluous<</if>>.
 				<<set $slaves[$i].need = 0>>
 			<<elseif $slaves[$i].energy <= 20>>
-				is frigid and has little interest in getting off<<if (_release != "permissive")>>, making the rule restricting $his sexual outlets superfluous<</if>>.
+				is frigid and has little interest in getting off<<if App.Utils.releaseRestricted($slaves[$i])>>, making the rule restricting $his sexual outlets superfluous<</if>>.
 				<<set $slaves[$i].need = 0>>
 			<<elseif $slaves[$i].need < $slaves[$i].needCap*0.5>>
 				<<if ($slaves[$i].devotion <= 20)>>
@@ -5201,35 +5514,38 @@
 						$He hates $himself for climaxing, and knows the mild aphrodisiacs in the food are forcing $his arousal, @@.gold;frightening $him.@@
 						<<set $slaves[$i].trust -= 1>>
 					<</if>>
-					<<set $slaves[$i].need -= 20>>
-				<<elseif (_release != "permissive") && (_release != "masturbation") && (_release != "chastity")>>
+				<<elseif (_release.masturbation === 0)>>
 					gets off at work, so being forbidden to masturbate doesn't affect $him seriously.
-					<<set $slaves[$i].need -= 20>>
 				<<else>>
 					gets off at work, so $he doesn't feel the need to masturbate frequently.
-					<<set $slaves[$i].need -= 20>>
 				<</if>>
+				<<set $slaves[$i].need -= 20>>
 			<<else>>
-				<<if (_release == "restrictive" || _release == "chastity")>>
-					<<if ($slaves[$i].devotion <= 20) && ($slaves[$i].trust >= -20)>>
-						refuses to come to you for sexual release, and is @@.gold;severely punished@@ for illicit masturbation.
-						<<set $slaves[$i].trust -= 2>>
-					<<elseif ($slaves[$i].devotion <= 50)>>
-						<<if $slaves[$i].devotion <= 20>>
-							occasionally comes to you to beg for sexual release.
-						<<else>>
-							doesn't mind having to come to you to beg for sexual release.
-						<</if>>
-						<<saRulesPlayerEnergy>>
-					<<else>> /* $slaves[$i].devotion > 50 */
-						willingly begs you to
-						<<saRulesPlayerFetishPlay>>
-						every chance $he gets.
-						<<saRulesPlayerEnergy>>
-					<</if>> /* closes $slaves[$i].devotion > 50 */
-					<<saRulesPlayerDiscoversFetish>>
-					<<saRulesPlayerDrugEffects>>
-				<<elseif (_release == "masturbation")>>
+				<<if (!App.Utils.hasNonassignmentSex($slaves[$i]) && _release.masturbation === 0)>>
+					<<if _release.master === 1>>
+						<<if ($slaves[$i].devotion <= 20) && ($slaves[$i].trust >= -20)>>
+							refuses to come to you for sexual release, and is @@.gold;severely punished@@ for illicit masturbation.
+							<<set $slaves[$i].trust -= 2>>
+						<<elseif ($slaves[$i].devotion <= 50)>>
+							<<if $slaves[$i].devotion <= 20>>
+								occasionally comes to you to beg for sexual release.
+							<<else>>
+								doesn't mind having to come to you to beg for sexual release.
+							<</if>>
+							<<saRulesPlayerEnergy>>
+						<<else>> /* $slaves[$i].devotion > 50 */
+							willingly begs you to
+							<<saRulesPlayerFetishPlay>>
+							every chance $he gets.
+							<<saRulesPlayerEnergy>>
+						<</if>> /* closes $slaves[$i].devotion > 50 */
+						<<saRulesPlayerDiscoversFetish>>
+						<<saRulesPlayerDrugEffects>>
+					<<else>> /* _release.master === 0 */
+						<<saRulesNoRelease>>
+						<<saRulesNoReleaseDrugEffects>>
+					<</if>>
+				<<elseif (!App.Utils.hasNonassignmentSex($slaves[$i]) && _release.masturbation === 1)>>
 					<<if ($slaves[$i].devotion <= 20) && ($slaves[$i].trust >= -20)>>
 						takes solace in $his permission to masturbate rather than being forced to beg for sex, @@.mediumaquamarine;reducing $his fear@@ of you.
 						<<set $slaves[$i].trust += 2, $slaves[$i].need = 0>>
@@ -5243,8 +5559,14 @@
 						is a little disappointed that $he's limited to $his <<if !hasAnyArms($slaves[$i])>>imagination<<else>>hand<<if hasBothArms($slaves[$i])>>s<</if>><</if>> and toys, but @@.mediumaquamarine;trusts you know what's best for $him.@@
 						<<set $slaves[$i].trust += 1, $slaves[$i].need = 0>>
 					<<else>>
-						@@.mediumaquamarine;trusts your judgment@@ that only $he really knows how to pleasure $himself, though $he @@.mediumorchid;often wonders why you don't use $him.@@
-						<<set $slaves[$i].trust += 1, $slaves[$i].devotion -= 2, $slaves[$i].need = 0>>
+						@@.mediumaquamarine;trusts your judgment@@ that only $he really knows how to pleasure
+						<<if _release.master === 0>>
+							$himself, though $he @@.mediumorchid;often wonders why you don't use $him.@@
+							<<set $slaves[$i].devotion -= 2>>
+						<<else>>
+							$himself.
+						<</if>>
+						<<set $slaves[$i].trust += 1, $slaves[$i].need = 0>>
 					<</if>>
 					<<if $slaves[$i].devotion > 20>>
 						When $he does play with $himself, $he
@@ -5252,22 +5574,28 @@
 						<<saRulesMasturbationDiscoversFetish>>
 					<</if>>
 					<<saRulesMasturbationDrugEffects>>
-				<<else>> /* releaseRules not restrictive */
-					<<if ($universalRulesConsent == 0)>>
+				<<else>> /* hasNonassignmentSex is true */
+					<<set _whom = (_release.slaves === 1) ? "other slaves" : $his + " family">>
+					<<if (!App.Utils.hasFamilySex($slaves[$i]) && _release.slaves === 0)>>
+						/* no family and no other slaves, so release comes from her partner */
+						finds frequent sexual release with his <<= relationshipTerm($slaves[$i])>> @@.lightgreen;<<= getSlave($slaves[$i].relationshipTarget).slaveName>>@@ which $he is @@.mediumaquamarine;thankful for.@@
+						<<set $slaves[$i].trust++, $slaves[$i].need -= 20>> /* TODO: probably should be based on BOTH slaves' need, leaving the less needy partner slightly frustrated */
+						<<saRulesPartnerDrugEffects>>
+					<<elseif ($universalRulesConsent == 0)>>
 						<<if ($slaves[$i].devotion <= 20) && ($slaves[$i].trust >= -20)>>
-							<<if (_release == "permissive")>>
+							<<if (_release.masturbation === 1)>>
 								masturbates whenever $he can find a private moment to take care of the urges induced by the food, @@.mediumaquamarine;slightly reducing $his fear@@ of you.
 								<<set $slaves[$i].trust += 1, $slaves[$i].need = 0>>
 							<<else>>
-								refuses to use other slaves to get off, and is @@.gold;severely punished@@ for illicit masturbation.
+								refuses to use _whom to get off, and is @@.gold;severely punished@@ for illicit masturbation.
 								<<set $slaves[$i].trust -= 2, $slaves[$i].need -= 10>>
 							<</if>>
 						<<elseif ($slaves[$i].devotion <= 20)>>
-							<<if (_release == "permissive")>>
-								prefers to masturbate rather than demanding sex from other slaves, @@.mediumaquamarine;slightly reducing $his fear@@ of you.
+							<<if (_release.masturbation === 1)>>
+								prefers to masturbate rather than demanding sex from _whom, @@.mediumaquamarine;slightly reducing $his fear@@ of you.
 								<<set $slaves[$i].trust += 1, $slaves[$i].need = 0>>
 							<<else>>
-								is forced to demand sex from other slaves by the urges induced by the food, and @@.hotpink;hates $himself@@ for it.
+								is forced to demand sex from _whom by the urges induced by the food, and @@.hotpink;hates $himself@@ for it.
 								<<set $slaves[$i].devotion += 1, $slaves[$i].need *= 0.5>>
 							<</if>>
 						<<elseif ($slaves[$i].devotion <= 50)>>
@@ -5283,28 +5611,28 @@
 						<</if>>
 					<<else>> /* universalRulesConsent is not zero */
 						<<if ($slaves[$i].devotion <= 20) && ($slaves[$i].trust >= -20)>>
-							<<if (_release == "permissive")>>
-								prefers to masturbate rather than asking other slaves for sex, @@.mediumaquamarine;slightly reducing $his fear@@ of you.
+							<<if (_release.masturbation === 1)>>
+								prefers to masturbate rather than asking _whom for sex, @@.mediumaquamarine;slightly reducing $his fear@@ of you.
 								<<set $slaves[$i].trust += 1, $slaves[$i].need = 0>>
 							<<else>>
-								refuses to ask other slaves for sex, and is @@.gold;severely punished@@ for illicit masturbation.
+								refuses to ask _whom for sex, and is @@.gold;severely punished@@ for illicit masturbation.
 								<<set $slaves[$i].trust -= 2, $slaves[$i].need -= 10>>
 							<</if>>
 						<<elseif ($slaves[$i].devotion <= 20)>>
-							<<if (_release == "permissive")>>
-								prefers to masturbate rather than trading sex with other slaves, @@.mediumaquamarine;slightly reducing $his fear@@ of you.
+							<<if (_release.masturbation === 1)>>
+								prefers to masturbate rather than trading sex with _whom, @@.mediumaquamarine;slightly reducing $his fear@@ of you.
 								<<set $slaves[$i].trust += 1, $slaves[$i].need = 0>>
 							<<else>>
-								is forced to swap sex with other slaves by the urges induced by the food, and @@.hotpink;hates $himself@@ for it.
+								is forced to swap sex with _whom by the urges induced by the food, and @@.hotpink;hates $himself@@ for it.
 								<<set $slaves[$i].devotion += 1, $slaves[$i].need *= 0.5>>
 							<</if>>
 						<<elseif ($slaves[$i].devotion <= 50)>>
-							@@.hotpink;accepts having to ask@@ other slaves for sex,
+							@@.hotpink;accepts having to ask@@ _whom for sex,
 							<<set $slaves[$i].devotion += 1, $slaves[$i].need = 0>>
 							<<saRulesConsentFetish>>
 							<<saRulesConsentDiscoversFetish>>
 						<<else>>
-							@@.mediumaquamarine;relies@@ on your other slaves for mutual satisfaction,
+							@@.mediumaquamarine;relies@@ on _whom for mutual satisfaction,
 							<<set $slaves[$i].trust += 1, $slaves[$i].need = 0>>
 							<<saRulesConsentFetish>>
 							<<saRulesConsentDiscoversFetish>>
@@ -5428,7 +5756,7 @@
 							Under the rules, $he will someday find $himself constantly molested by other slaves, but $he's already in such constant terror it that it doesn't cross $his mind.
 						<</if>>
 					<</if>>
-				<<elseif (_release != "restrictive" && _release != "chastity")>>
+				<<elseif (_release.slaves === 1)>>
 					<<if ($slaves[$i].energy > 95)>>
 						<<if $slaves.length > 2 || $menials > 0>>
 							Under the rules, $he's allowed to demand that other slaves get $him off, and $he @@.hotpink;adores@@ you for providing plentiful outlets for $his nymphomania.
diff --git a/src/utility/saRulesWidgets.tw b/src/utility/saRulesWidgets.tw
index 28932d0984fbf21c7045876e790fb7ae04b20b98..e2d02816346caf7b2be24ae81600969ac53f1556 100644
--- a/src/utility/saRulesWidgets.tw
+++ b/src/utility/saRulesWidgets.tw
@@ -409,9 +409,10 @@ and
 
 <<widget "saRulesRapeFetish">>
 
+<<set _who = ($slaves[$i].rules.release.slaves === 1) ? "other slaves" : $his + " family">> /* should be the only two choices if we get here */
 <<if ($slaves[$i].fetishKnown == 1) && ($slaves[$i].fetishStrength > 60)>>
 	<<if ($slaves[$i].fetish == "submissive")>>
-		plead that other slaves fuck $him.
+		plead that _who fuck $him.
 		<<if $averageDick > 4>>
 			<<if $slaves[$i].anus > 0 && $slaves[$i].anus < 3 && canDoAnal($slaves[$i])>>
 				<<if ($slaves[$i].anus*40)-($averageDick*5) < random(1,100)>>
@@ -432,11 +433,11 @@ and
 		<</if>>
 		<<run SimpleSexAct.Slave($slaves[$i], 7)>>
 	<<elseif ($slaves[$i].fetish == "cumslut")>>
-		suck or be sucked by any slave $he fancies.
+		suck or be sucked by any <<if $slaves[$i].rules.release.slaves === 1>>slave<<else>>relative<</if>> $he fancies.
 		<<set _fuckCount = random(5,15)>>
 		<<set $slaves[$i].counter.oral += _fuckCount, $oralTotal += _fuckCount>>
 	<<elseif ($slaves[$i].fetish == "humiliation")>>
-		demand that other slaves let $him fuck them in public.
+		demand that _who let $him fuck them in public.
 		<<if !$slaves[$i].rivalry>>
 			<<set _rival = randomRapeRivalryTarget($slaves[$i], (s) => { return (s.devotion <= 20 && s.trust < -20); })>>
 			<<if def _rival>>
@@ -459,7 +460,7 @@ and
 			<<set $slaves[$i].counter.penetrative += _fuckCount, $penetrativeTotal += _fuckCount>>
 		<</if>>
 	<<elseif ($slaves[$i].fetish == "buttslut") && canDoAnal($slaves[$i])>>
-		demand that other slaves penetrate $his anus.
+		demand that _who penetrate $his anus.
 		<<if $averageDick > 4>>
 			<<if $slaves[$i].anus > 0 && $slaves[$i].anus < 3 && canDoAnal($slaves[$i])>>
 				<<if ($slaves[$i].anus*30)-($averageDick*5) < random(1,100)>>
@@ -471,7 +472,7 @@ and
 		<<set _fuckCount = random(5,12)>>
 		<<set $slaves[$i].counter.anal += _fuckCount, $analTotal += _fuckCount>>
 	<<elseif ($slaves[$i].fetish == "boobs")>>
-		demand that other slaves massage $his breasts.
+		demand that _who massage $his breasts.
 		<<if $slaves[$i].lactation > 0>>
 			<<set $slaves[$i].lactationDuration = 2>>
 			<<set $slaves[$i].boobs -= $slaves[$i].boobsMilk, $slaves[$i].boobsMilk = 0>>
@@ -481,7 +482,7 @@ and
 		<<set _fuckCount = random(10,25)>>
 		<<set $slaves[$i].counter.mammary += _fuckCount, $mammaryTotal += _fuckCount>>
 	<<elseif ($slaves[$i].fetish == "sadist")>>
-		force the most reluctant slaves to let $him fuck them.
+		force the most reluctant <<if $slaves[$i].rules.release.slaves === 1>>slaves<<else>>members of his family<</if>> to let $him fuck them.
 		<<if !$slaves[$i].rivalry>>
 			<<set _rival = randomRapeRivalryTarget($slaves[$i], (s) => { return (s.devotion <= 50 && s.sexualFlaw !== "none"); })>>
 			<<if def _rival>>
@@ -490,7 +491,7 @@ and
 					rapes the poor slave's face<<if !canAchieveErection($slaves[$i])>> with <<if (hasAnyArms($slaves[$i]))>>$his fingers<<else>>a strap-on<</if>><</if>>. _rival.slaveName hates oral
 				<<elseif _rival.sexualFlaw == "hates penetration" && canDoVaginal(_rival)>>
 					rapes the poor slave's pussy<<if !canAchieveErection($slaves[$i])>> with <<if (hasAnyArms($slaves[$i]))>>$his fingers<<else>>a strap-on<</if>><</if>>. _rival.slaveName hates penetration
-				<<elseif (_rival.sexualFlaw == "hates anal" || _rival.sexualFlaw == "hates penetration") && canDoAnal(_rival>>
+				<<elseif (_rival.sexualFlaw == "hates anal" || _rival.sexualFlaw == "hates penetration") && canDoAnal(_rival)>>
 					rapes the poor slave's ass<<if !canAchieveErection($slaves[$i])>> with <<if (hasAnyArms($slaves[$i]))>>$his fingers<<else>>a strap-on<</if>><</if>>. _rival.slaveName hates anal
 				<<elseif _rival.sexualFlaw == "shamefast">>
 					rapes the poor slave in public. _rival.slaveName is terribly shamefast
@@ -518,7 +519,7 @@ and
 			<<set $slaves[$i].counter.penetrative += _fuckCount, $penetrativeTotal += _fuckCount>>
 		<</if>>
 	<<elseif ($slaves[$i].fetish == "masochist")>>
-		demand that other slaves hurt $him.
+		demand that _who hurt $him.
 		<<if $averageDick > 4>>
 			<<if $slaves[$i].anus > 0 && $slaves[$i].anus < 3 && canDoAnal($slaves[$i])>>
 				<<if ($slaves[$i].anus*30)-($averageDick*5) < random(1,100)>>
@@ -539,7 +540,7 @@ and
 		<</if>>
 		<<run SimpleSexAct.Slave($slaves[$i], 12)>>
 	<<elseif ($slaves[$i].fetish == "dom")>>
-		force other slaves to submit to $him.
+		force _who to submit to $him.
 		<<if !$slaves[$i].rivalry>>
 			<<set _rival = randomRapeRivalryTarget($slaves[$i], (s) => { return (s.devotion <= 20 && s.trust < -20); })>>
 			<<if def _rival>>
@@ -558,7 +559,7 @@ and
 			<<set $slaves[$i].counter.penetrative += _fuckCount, $penetrativeTotal += _fuckCount>>
 		<</if>>
 	<<elseif ($slaves[$i].fetish == "pregnancy")>>
-		demand that other slaves indulge $his pregnancy fetish.
+		demand that _who indulge $his pregnancy fetish.
 		<<if $averageDick > 5>>
 			<<if $slaves[$i].mpreg == 0>>
 				<<if $slaves[$i].vagina > 0 && $slaves[$i].vagina < 3 && canDoVaginal($slaves[$i])>>
@@ -585,7 +586,7 @@ and
 			<<set $slaves[$i].counter.penetrative += _fuckCount, $penetrativeTotal += _fuckCount>>
 		<</if>>
 	<<elseif ($slaves[$i].energy > 95)>>
-		demand that your other slaves satisfy $his formidable appetites.
+		demand that _who satisfy $his formidable appetites.
 		<<if $averageDick > 4>>
 			<<if $slaves[$i].anus > 0 && $slaves[$i].anus < 3 && canDoAnal($slaves[$i])>>
 				<<if ($slaves[$i].anus*30)-($averageDick*5) < random(1,100)>>
@@ -610,7 +611,7 @@ and
 			<<set $slaves[$i].counter.penetrative += _fuckCount, $penetrativeTotal += _fuckCount>>
 		<</if>>
 	<<else>>
-		demand that other slaves have sex with $him.
+		demand that _who have sex with $him.
 		<<run SimpleSexAct.Slave($slaves[$i], 7)>>
 		<<if canPenetrate($slaves[$i])>>
 			<<set _fuckCount = random(3,6)>>
@@ -618,7 +619,7 @@ and
 		<</if>>
 	<</if>>
 <<else>>
-	demand that other slaves have sex with $him.
+	demand that _who have sex with $him.
 	<<run SimpleSexAct.Slave($slaves[$i], 7)>>
 	<<if canPenetrate($slaves[$i])>>
 		<<set _fuckCount = random(3,6)>>
@@ -897,6 +898,7 @@ and
 
 <<widget "saRulesPermissiveDrugEffects">>
 
+<<set _who = ($slaves[$i].rules.release.slaves === 1) ? "other slaves" : $his + " family">> /* should be the only two choices if we get here */
 <<if $slaves[$i].balls > 0>>
 	<<if $slaves[$i].drugs == "testicle enhancement" || $slaves[$i].drugs == "intensive testicle enhancement">>
 		<<if ($slaves[$i].devotion > 20) || ($slaves[$i].trust < -20)>>
@@ -907,9 +909,9 @@ and
 				<<else>>
 					$his cumhole produces slow, anemic ejaculations, no matter how backed up $he is.
 				<</if>>
-				$He is very reliant on your other slaves to help $him, which @@.mediumaquamarine;habituates $him@@ to slave sex.
+				$He is very reliant on _who to help $him, which @@.mediumaquamarine;habituates $him@@ to slave sex.
 			<<else>>
-				$His terribly swollen balls force $him to rely on other slaves for release several times a day, and jetting cum into and onto them @@.mediumaquamarine;habituates $him@@ to slave sex.
+				$His terribly swollen balls force $him to rely on _who for release several times a day, and jetting cum into and onto them @@.mediumaquamarine;habituates $him@@ to slave sex.
 			<</if>>
 			<<set $slaves[$i].trust += 1>>
 		<<else>>
@@ -925,9 +927,9 @@ and
 				<<else>>
 					$his cumhole produces slow, anemic ejaculations, no matter how backed up $he is.
 				<</if>>
-				$He is completely dependent on your other slaves to help $him, which @@.mediumaquamarine;habituates $him@@ to slave sex.
+				$He is completely dependent on your _who to help $him, which @@.mediumaquamarine;habituates $him@@ to slave sex.
 			<<else>>
-				$His grotesquely swollen balls force $him to rely on other slaves for release throughout times a day, and swelling them with cum @@.mediumaquamarine;habituates $him@@ to slave sex, though you have to take precautions so $he doesn't knock up your entire stock.
+				$His grotesquely swollen balls force $him to rely on _who for release throughout times a day, and swelling them with cum @@.mediumaquamarine;habituates $him@@ to slave sex, though you have to take precautions so $he doesn't knock up your entire stock.
 			<</if>>
 			<<set $slaves[$i].trust += 1>>
 		<<else>>
@@ -937,8 +939,116 @@ and
 	<</if>>
 <</if>>
 <<if $slaves[$i].drugs == "super fertility drugs" && canGetPregnant($slaves[$i])>>
-	$His reproductive system is in overdrive leading $him to seek out any dicked slaves $he can find several times a day. $He @@.mediumaquamarine;desperately longs@@ for the day $his efforts fill $his womb with child.
+	$His reproductive system is in overdrive leading $him to seek out any dicked <<if $slaves[$i].rules.release.slaves === 1>>slaves<<else>>relatives<</if>> $he can find several times a day. $He @@.mediumaquamarine;desperately longs@@ for the day $his efforts fill $his womb with child.
 	<<set $slaves[$i].trust += 1>>
 <</if>>
 
 <</widget>>
+
+<<widget "saRulesNoRelease">>
+
+	<<if (disobedience($slaves[$i]) > random(0, 100))>>
+		is forbidden to masturbate or seek sexual release. In $his @@.mediumorchid;intense frustration@@ $he disobeys and is @@.gold;severely punished@@ for illicit masturbation.
+		<<set $slaves[$i].devotion -= 2, $slaves[$i].trust -= 2>>
+	<<else>>
+		is forbidden to masturbate or seek sexual release, which @@.mediumorchid;highly frustrates@@ $him.
+		<<set $slaves[$i].devotion -= 2>>
+	<</if>>
+	
+<</widget>>
+
+<<widget "saRulesNoReleaseDrugEffects">>
+
+<<if $slaves[$i].balls > 0>>
+	<<if $slaves[$i].drugs == "testicle enhancement" || $slaves[$i].drugs == "intensive testicle enhancement">>
+		<<if $slaves[$i].hormoneBalance >= 100>>
+			$He can't seem to get enough cum out of $his terribly swollen balls in one orgasm to get relieve the pressure:
+			<<if $slaves[$i].dick>>
+				$his poor soft dick produces slow, anemic ejaculations, no matter how backed up $he is.
+			<<else>>
+				$his cumhole produces slow, anemic ejaculations, no matter how backed up $he is.
+			<</if>>
+			Forbidden to masturbate or seek relief through sex, he @@.mediumorchid;can't find relief@@ and @@.red;the situation harms $his health.@@
+			<<set $slaves[$i].devotion -= 2>>
+		<<else>>
+			$His terribly swollen balls ache, cultivating a need for sex that @@.mediumorchid;$he can't fulfill@@ and @@.red;harming his health.@@
+			<<set $slaves[$i].devotion -= 2>>
+		<</if>>
+		<<run healthDamage($slaves[$i], 3)>>
+	<<elseif $slaves[$i].drugs == "hyper testicle enhancement">>
+		<<if $slaves[$i].hormoneBalance >= 100>>
+			$He can't seem to get enough cum out of $his grotesquely swollen balls in one orgasm to get relieve the pressure:
+			<<if $slaves[$i].dick>>
+				$his poor soft dick produces slow, anemic ejaculations, no matter how backed up $he is.
+			<<else>>
+				$his cumhole produces slow, anemic ejaculations, no matter how backed up $he is.
+			<</if>>
+			Forbidden to masturbate or seek relief through sex, he @@.mediumorchid;can't find relief@@ and @@.red;the situation harms $his health.@@
+			<<set $slaves[$i].devotion -= 4>>
+		<<else>>
+			$His grotesquely swollen balls ache, cultivating a need for sex that @@.mediumorchid;$he can't fulfill@@ and @@.red;harming his health.@@
+			<<set $slaves[$i].devotion -= 4>>
+		<</if>>
+		<<run healthDamage($slaves[$i], 6)>>
+	<</if>>
+<</if>>
+<<if $slaves[$i].drugs == "super fertility drugs" && canGetPregnant($slaves[$i])>>
+	$His reproductive system is in overdrive,
+	<<if ($slaves[$i].devotion >= -20)>>
+		leaving $him @@.mediumorchid;completely unfulfilled@@ since @@.gold;you won't <<if $PC.dick != 0>>give $him<<else>>let $him find<</if>> the dick $he needs.@@
+		<<set $slaves[$i].devotion -= 3, $slaves[$i].trust -= 2>>
+	<<else>>
+		leaving $him desperate for a thorough seeding @@.mediumorchid;that you've forbidden $him from having.@@
+		<<set $slaves[$i].devotion -= 3>>
+	<</if>>
+<</if>>
+<<if $slaves[$i].energy > 50>>
+	$His enforced chastity @@.red;habituates him to a lack of release.@@
+	<<set $slaves[$i].energy -= 2>>
+<</if>>
+
+<</widget>>
+
+<<widget "saRulesPartnerDrugEffects">>
+
+<<set _sr = getSlave($slaves[$i].relationshipTarget)>>
+<<setLocalPronouns _sr 2>>
+<<if $slaves[$i].balls > 0>>
+	<<if ($slaves[$i].drugs == "testicle enhancement" || $slaves[$i].drugs == "intensive testicle enhancement")>>
+		<<if $slaves[$i].hormoneBalance >= 100>>
+			$He can't seem to get enough cum out of $his terribly swollen balls in one orgasm to relieve the pressure:
+			<<if $slaves[$i].dick>>
+				$his poor soft dick produces slow, anemic ejaculations, no matter how backed up $he is.
+			<<else>>
+				$his cumhole produces slow, anemic ejaculations, no matter how backed up $he is.
+			<</if>>
+			This forces $him to find $his <<= relationshipTerm($slaves[$i])>> for release many times a day, and $he @@.mediumaquamarine;is desperately reliant@@ on _him2 for relief.
+			<<set $slaves[$i].trust += 2>>
+		<<else>>
+			$His terribly swollen balls force $him to find $his <<= relationshipTerm($slaves[$i])>> for release several times a day, and $he @@.mediumaquamarine;relies@@ on _him2 for relief.
+			<<set $slaves[$i].trust += 1>>
+		<</if>>
+	<<elseif $slaves[$i].drugs == "hyper testicle enhancement">>
+		<<if $slaves[$i].hormoneBalance >= 100>>
+			$He can't seem to get enough cum out of $his grotesquely swollen balls in one orgasm to get relieve the pressure:
+			<<if $slaves[$i].dick>>
+				$his poor soft dick produces slow, anemic ejaculations, no matter how backed up $he is.
+			<<else>>
+				$his cumhole produces slow, anemic ejaculations, no matter how backed up $he is.
+			<</if>>
+			This forces $him to find $his <<= relationshipTerm($slaves[$i])>> for release many times a day, and $he @@.mediumaquamarine;is desperately reliant@@ on _him2 for relief.
+			<<set $slaves[$i].trust += 2>>
+		<<else>>
+			$His grotesquely swollen balls force $him to come to find $his <<= relationshipTerm($slaves[$i])>> for release dozens of times a day, and $he @@.mediumaquamarine;is desperately reliant@@ on _him2 for relief.
+			<<set $slaves[$i].trust += 1>>
+		<</if>>
+	<</if>>
+<</if>> /* close overactive balls block */
+<<if $slaves[$i].drugs == "super fertility drugs" && canImpreg($slaves[$i], _sr)>>
+	<<if ($slaves[$i].devotion > 20) || ($slaves[$i].trust < -20)>>
+		$His reproductive system is in overdrive leading $him to come to find $his <<= relationshipTerm($slaves[$i])>> for insemination several times a day; $he @@.mediumaquamarine;desperately hopes@@ for the day _his2 seed takes root in $his womb.
+		<<set $slaves[$i].trust += 1>>
+	<</if>>
+<</if>>
+
+<</widget>>
\ No newline at end of file