From 50d7e6082d7fa09d3d73845df114d72facd83a64 Mon Sep 17 00:00:00 2001
From: Svornost <11434-svornost@users.noreply.gitgud.io>
Date: Mon, 23 Dec 2019 01:13:59 -0800
Subject: [PATCH] respect $seeIncest in utility functions and UI

---
 src/js/releaseRules.js             | 42 ++++++++++++++++--------------
 src/uncategorized/slaveInteract.tw | 12 +++++----
 2 files changed, 29 insertions(+), 25 deletions(-)

diff --git a/src/js/releaseRules.js b/src/js/releaseRules.js
index 8dab2f50350..2a19f47f112 100644
--- a/src/js/releaseRules.js
+++ b/src/js/releaseRules.js
@@ -13,9 +13,9 @@ App.Utils.sexAllowed = function sexAllowed(slaveA, slaveB) {
 	} else if (haveRelationshipP(slaveA, slaveB)) {
 		return (slaveA.rules.release.partner === 1) && (slaveB.rules.release.partner === 1);
 	} else if (V.familyTesting === 0 && haveRelationP(slaveA, slaveB)) {
-		return (slaveA.rules.release.family === 1) && (slaveB.rules.release.family === 1);
+		return V.seeIncest && (slaveA.rules.release.family === 1) && (slaveB.rules.release.family === 1);
 	} else if (V.familyTesting === 1 && areRelated(slaveA, slaveB)) {
-		return (slaveA.rules.release.family === 1) && (slaveB.rules.release.family === 1);
+		return V.seeIncest && (slaveA.rules.release.family === 1) && (slaveB.rules.release.family === 1);
 	} else {
 		return (slaveA.rules.release.slaves === 1) && (slaveB.rules.release.slaves === 1);
 	}
@@ -35,7 +35,7 @@ App.Utils.releaseSummaryShort = function releaseSummaryShort(slave) {
 	if (rel.partner === 1) {
 		ret += "P";
 	}
-	if (rel.family === 1) {
+	if (rel.family === 1 && V.seeIncest === 1) {
 		ret += "F";
 	}
 	if (rel.slaves === 1) {
@@ -57,15 +57,16 @@ App.Utils.releaseSummaryShort = function releaseSummaryShort(slave) {
  */
 App.Utils.releaseSummaryLong = function releaseSummaryLong(slave) {
 	const rel = slave.rules.release;
-	if (rel.masturbation === 0 && rel.partner === 0 && rel.family === 0 && rel.slaves === 0 && rel.master === 0) {
+	const includeFamily = (rel.family === 1) && (V.seeIncest === 1);
+	if (rel.masturbation === 0 && rel.partner === 0 && includeFamily === 0 && rel.slaves === 0 && rel.master === 0) {
 		return "chastity";
-	} else if (rel.masturbation === 1 && rel.partner === 0 && rel.family === 0 && rel.slaves === 0 && rel.master === 0) {
+	} else if (rel.masturbation === 1 && rel.partner === 0 && includeFamily === 0 && rel.slaves === 0 && rel.master === 0) {
 		return "masturbation only";
-	} else if (rel.masturbation === 0 && rel.partner === 1 && rel.family === 0 && rel.slaves === 0 && rel.master === 0) {
+	} else if (rel.masturbation === 0 && rel.partner === 1 && includeFamily === 0 && rel.slaves === 0 && rel.master === 0) {
 		return "partner only";
-	} else if (rel.masturbation === 0 && rel.partner === 0 && rel.family === 1 && rel.slaves === 0 && rel.master === 0) {
+	} else if (rel.masturbation === 0 && rel.partner === 0 && includeFamily === 1 && rel.slaves === 0 && rel.master === 0) {
 		return "family only";
-	} else if (rel.masturbation === 0 && rel.partner === 0 && rel.family === 0 && rel.slaves === 0 && rel.master === 1) {
+	} else if (rel.masturbation === 0 && rel.partner === 0 && includeFamily === 0 && rel.slaves === 0 && rel.master === 1) {
 		return "you only";
 	} else if (rel.slaves === 1) {
 		let ret = "permissive";
@@ -73,7 +74,7 @@ App.Utils.releaseSummaryLong = function releaseSummaryLong(slave) {
 		if (rel.partner === 0) {
 			exceptions.push("partner");
 		}
-		if (rel.family === 0) {
+		if (includeFamily === 0) {
 			exceptions.push("family");
 		}
 		if (rel.master === 0) {
@@ -94,7 +95,7 @@ App.Utils.releaseSummaryLong = function releaseSummaryLong(slave) {
 		if (rel.partner === 1) {
 			permissions.push("partner");
 		}
-		if (rel.family === 1) {
+		if (includeFamily === 1) {
 			permissions.push("family");
 		}
 		if (rel.master === 1) {
@@ -111,28 +112,29 @@ App.Utils.releaseSummaryLong = function releaseSummaryLong(slave) {
  */
 App.Desc.releaseDesc = function releaseDesc(slave) {
 	const rel = slave.rules.release;
+	const includeFamily = (rel.family === 1) && (V.seeIncest === 1);
 	let r = "and ";
 	let appendFrequency = false;
-	if (rel.masturbation === 0 && rel.partner === 0 && rel.family === 0 && rel.slaves === 0 && rel.master === 0) {
+	if (rel.masturbation === 0 && rel.partner === 0 && includeFamily === 0 && rel.slaves === 0 && rel.master === 0) {
 		r += "$he is to remain completely chaste.";
-	} else if (rel.masturbation === 1 && rel.partner === 0 && rel.family === 0 && rel.slaves === 0 && rel.master === 0) {
+	} else if (rel.masturbation === 1 && rel.partner === 0 && includeFamily === 0 && rel.slaves === 0 && rel.master === 0) {
 		r += "$he is only allowed to masturbate";
 		if (slave.energy > 95) {
 			r += ", which $he is constantly doing.";
 		} else {
 			r += ".";
 		}
-	} else if (rel.masturbation === 0 && rel.partner === 1 && rel.family === 0 && rel.slaves === 0 && rel.master === 0) {
+	} else if (rel.masturbation === 0 && rel.partner === 1 && includeFamily === 0 && rel.slaves === 0 && rel.master === 0) {
 		r += "$he is not allowed to masturbate or proposition ";
 		if (slave.rules.relationship === "permissive" && slave.relationship >= 3) {
 			r += `slaves other than $his ${relationshipTerm(slave)}.`;
 		} else {
 			r += "other slaves; $he must find sexual release in $his duties.";
 		}
-	} else if (rel.masturbation === 0 && rel.partner === 0 && rel.family === 1 && rel.slaves === 0 && rel.master === 0) {
+	} 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,";
 		appendFrequency = true;
-	} else if (rel.masturbation === 0 && rel.partner === 0 && rel.family === 0 && rel.slaves === 0 && rel.master === 1) {
+	} 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,";
 		appendFrequency = true;
 	} else if (rel.slaves === 1) {
@@ -148,11 +150,11 @@ App.Desc.releaseDesc = function releaseDesc(slave) {
 		}
 
 		const exceptPartner = (rel.partner === 0) && (slave.rules.relationship === "permissive") && (slave.relationship >= 3);
-		if (exceptPartner && rel.family === 0) {
+		if (exceptPartner && includeFamily === 0) {
 			r += ` except for $his ${relationshipTerm(slave)} and close family members,`;
 		} else if (exceptPartner) {
 			r += ` except for $his ${relationshipTerm(slave)},`;
-		} else if (rel.family === 0) {
+		} else if (includeFamily === 0) {
 			r += ` except for $his close family members,`;
 		}
 
@@ -165,13 +167,13 @@ App.Desc.releaseDesc = function releaseDesc(slave) {
 		}
 
 		const showPartner = (rel.partner === 1) && (slave.rules.relationship === "permissive") && (slave.relationship >= 3);
-		if (rel.family === 1 && showPartner) {
+		if (includeFamily === 1 && showPartner) {
 			r += `have sex with $his ${relationshipTerm(slave)} and close family members,`;
 		} else if (showPartner) {
 			r += `fuck $his ${relationshipTerm(slave)} as much as he wants,`;
-		} else if (rel.family === 1 && rel.master === 1) {
+		} else if (includeFamily === 1 && rel.master === 1) {
 			r += `proposition sex from $his close family members and you,`;
-		} else if (rel.family === 1) {
+		} else if (includeFamily === 1) {
 			r += `proposition sex from $his close family members,`;
 		} else { // should mean rel.master === 1
 			r += `find you for sexual relief,`;
diff --git a/src/uncategorized/slaveInteract.tw b/src/uncategorized/slaveInteract.tw
index 76fe0ece46b..2c9f5b874e8 100644
--- a/src/uncategorized/slaveInteract.tw
+++ b/src/uncategorized/slaveInteract.tw
@@ -1563,11 +1563,13 @@ Hormones: <strong><span id="hormones">
 		<<link "Allow">><<set $activeSlave.rules.release.partner = 1>><<replace "#relPartner">>allowed<</replace>><</link>> |
 		<<link "Forbid">><<set $activeSlave.rules.release.partner = 0>><<replace "#relPartner">>forbidden<</replace>><</link>>
 	</div>
-	<div style="text-indent:2em">
-	Sex with close family is ''<span id="relFamily"><<if $activeSlave.rules.release.family === 1>>allowed<<else>>forbidden<</if>></span>.''
-		<<link "Allow">><<set $activeSlave.rules.release.family = 1>><<replace "#relFamily">>allowed<</replace>><</link>> |
-		<<link "Forbid">><<set $activeSlave.rules.release.family = 0>><<replace "#relFamily">>forbidden<</replace>><</link>>
-	</div>
+	<<if $seeIncest == 1>>
+		<div style="text-indent:2em">
+		Sex with close family is ''<span id="relFamily"><<if $activeSlave.rules.release.family === 1>>allowed<<else>>forbidden<</if>></span>.''
+			<<link "Allow">><<set $activeSlave.rules.release.family = 1>><<replace "#relFamily">>allowed<</replace>><</link>> |
+			<<link "Forbid">><<set $activeSlave.rules.release.family = 0>><<replace "#relFamily">>forbidden<</replace>><</link>>
+		</div>
+	<</if>>
 	<div style="text-indent:2em">
 	Sex with other slaves is ''<span id="relSlaves"><<if $activeSlave.rules.release.slaves === 1>>allowed<<else>>forbidden<</if>></span>.''
 		<<link "Allow">><<set $activeSlave.rules.release.slaves = 1>><<replace "#relSlaves">>allowed<</replace>><</link>> |
-- 
GitLab