From 7da4f647aa0ffa97e90ed63b5893c3151d1a5142 Mon Sep 17 00:00:00 2001
From: klorpa <30924131+klorpa@users.noreply.github.com>
Date: Tue, 26 Feb 2019 14:56:52 -0600
Subject: [PATCH] JSWork

---
 src/endWeek/saChoosesOwnClothes.js     | 20 ++++++-------
 src/js/DefaultRules.js                 |  4 +--
 src/js/SlaveState.js                   | 33 +++++++---------------
 src/js/datatypeCleanupJS.js            |  6 ----
 src/js/eventSelectionJS.js             | 22 +++++++--------
 src/js/slaveSummaryWidgets.js          | 39 +++++++++++---------------
 src/js/storyJS.js                      | 20 ++++++++++---
 src/js/vignettes.js                    | 26 +++++++++++++----
 src/js/walkPastJS.js                   | 10 +++----
 src/pregmod/widgets/bodyswapWidgets.tw |  2 +-
 10 files changed, 91 insertions(+), 91 deletions(-)

diff --git a/src/endWeek/saChoosesOwnClothes.js b/src/endWeek/saChoosesOwnClothes.js
index 32eeeb6d794..18d0119a6a9 100644
--- a/src/endWeek/saChoosesOwnClothes.js
+++ b/src/endWeek/saChoosesOwnClothes.js
@@ -63,22 +63,22 @@ window.saChoosesOwnClothes = (function() {
 			slave.devotion += 1;
 
 			if (V.arcologies[0].FSRestart !== "unset" && slave.choosesOwnChastity == 1) {
-				if (slave.vagina > -1 && slave.breedingMark === 1 && slave.chastityVagina === 1) {
+				if (slave.vagina > -1 && slave.breedingMark === 1 && (slave.vaginalAccessory === "chastity belt" || slave.vaginalAccessory === "combined chastity")) {
 					r += `${He} unfastens ${his} chastity belt knowing full well ${his} role in life is to carry ${his} ${WrittenMaster(slave)}'s children. `;
-					slave.chastityVagina = 0;
-				} else if (slave.vagina > -1 && slave.ovaries === 1 && slave.preg === 0 && slave.chastityVagina !== 1) {
+					slave.vaginalAccessory = "none";
+				} else if (slave.vagina > -1 && slave.ovaries === 1 && slave.preg === 0 && slave.vaginalAccessory !== "chastity belt") {
 					r += `${He} also affixes a chastity belt over ${his} vagina to discourage use of ${his} reproductive organ. `;
-					slave.chastityVagina = 1;
-				} else if (slave.vagina > -1 && (slave.ovaries === 0 || slave.preg < -1) && slave.chastityVagina === 1) {
+					slave.vaginalAccessory = "chastity belt";
+				} else if (slave.vagina > -1 && (slave.ovaries === 0 || slave.preg < -1) && slave.vaginalAccessory === "chastity belt") {
 					r += `${He} removes ${his} chastity belt since no matter how hard someone tries, ${he} can never become pregnant. `;
-					slave.chastityVagina = 0;
+					slave.vaginalAccessory = "none";
 				}
-				if (slave.dick > 0 && slave.balls > 0 && slave.chastityPenis !== 1) {
+				if (slave.dick > 0 && slave.balls > 0 && slave.dickAccessory !== "chastity") {
 					r += `${He} also affixes a chastity cage onto ${his} dick to discourage use of ${his} reproductive organ. `;
-					slave.chastityPenis = 1;
-				} else if (slave.dick > 0 && slave.balls === 0 && slave.chastityPenis === 1) {
+					slave.dickAccessory = "chastity";
+				} else if (slave.dick > 0 && slave.balls === 0 && slave.dickAccessory === "chastity") {
 					r += `${He} removes ${his} chastity cage since even if ${he} could get erect, ${he} only shoots blanks. `;
-					slave.chastityPenis = 0;
+					slave.dickAccessory = "none";
 				}
 			}
 
diff --git a/src/js/DefaultRules.js b/src/js/DefaultRules.js
index 0296ee7a28e..3213b126b16 100644
--- a/src/js/DefaultRules.js
+++ b/src/js/DefaultRules.js
@@ -549,7 +549,7 @@ window.DefaultRules = (function() {
 
 	/** @param {App.Entity.SlaveState} slave */
 	function ProcessVVirginDildos(slave, rule) {
-		// apply vaginal dildos to vaginal virgins
+		// apply vaginal dildos to varginal virgins
 		if ((rule.virginAccessory !== undefined) && (rule.virginAccessory !== "no default setting")) {
 			if (slave.vaginalAccessory !== rule.virginAccessory) {
 				slave.vaginalAccessory = rule.virginAccessory;
@@ -791,7 +791,7 @@ window.DefaultRules = (function() {
 	/** @param {App.Entity.SlaveState} slave */
 	function ProcessAnalAccessories(slave, rule) {
 		// apply buttplugs and buttplug accessories to slave
-		if (slave.chastityAnus !== 1) {
+		if ((slave.vaginalAccessory !== "anal chastity") && (slave.vaginalAccessory !== "combined chastity") && (slave.dickAccessory !== "anal chastity") && (slave.dickAccessory !== "combined chastity")) {
 			if (slave.anus === 0)
 				ProcessAnalVirginButtplugs(slave, rule);
 			else
diff --git a/src/js/SlaveState.js b/src/js/SlaveState.js
index 535ed3a0e34..a8ec2e1d4ad 100644
--- a/src/js/SlaveState.js
+++ b/src/js/SlaveState.js
@@ -468,7 +468,7 @@ App.Entity.SlaveState = class SlaveState {
 		this.shouldersImplant = 0;
 		/**
 		 *  slave boob size (in cc)
-		 * * 0-299	- flat;
+		 * * 0-299    - flat;
 		 * * 300-399   - A-cup;
 		 * * 400-499   - B-cup
 		 * * 500-649   - C-cup
@@ -1536,6 +1536,9 @@ App.Entity.SlaveState = class SlaveState {
 		/**
 		 * may accept strings, use at own risk
 		 * * "none"
+		 * * "chastity belt"
+		 * * "combined chastity"
+		 * * "anal chastity"
 		 * * "dildo"
 		 * * "large dildo"
 		 * * "huge dildo"
@@ -1547,28 +1550,12 @@ App.Entity.SlaveState = class SlaveState {
 		/**
 		 * may accept strings, use at own risk
 		 * * "none"
+		 * * "chastity"
+		 * * "anal chastity"
+		 * * "combined chastity"
 		 */
 		this.dickAccessory = "none";
 		/**
-		* whether the slave has a chastity device on their anus
-		* 0 - no
-		* 1 - yes
-		*/
-		this.chastityAnus = 0;
-		/**
-		* whether the slave has a chastity device on their penis
-		* 0 - no
-		* 1 - yes
-		*/
-		this.chastityPenis = 0;
-		/**
-		* whether the slave has a chastity device on their vagina
-		* 0 - no
-		* 1 - yes
-		*/
-		this.chastityVagina = 0;
-		/**
-		 * may accept strings, use at own risk
 		 * * "none"
 		 * * "short stockings"
 		 * * "long stockings"
@@ -1887,7 +1874,7 @@ App.Entity.SlaveState = class SlaveState {
 		 *
 		 * ||thresholds:|
 		 * |-|-|
-		 * 100	| bloated
+		 * 100    | bloated
 		 * 1500   | early pregnancy
 		 * 5000   | obviously pregnant
 		 * 10000  | very pregnant
@@ -1911,7 +1898,7 @@ App.Entity.SlaveState = class SlaveState {
 		 *
 		 * ||thresholds|
 		 * |-|-|
-		 * 100	| bloated
+		 * 100    | bloated
 		 * 1500   | early pregnancy
 		 * 5000   | obviously pregnant
 		 * 10000  | very pregnant
@@ -2062,7 +2049,7 @@ App.Entity.SlaveState = class SlaveState {
 		/**
 		 * Slave's current hormonal balance, directs saHormones changes
 		 *
-		 * ||thresholds|
+		 * ||tresholds|
 		 * |-|-|
 		 * -500 - -400 | overwhelmingly masculine
 		 * -399 - -300 | extremely masculine
diff --git a/src/js/datatypeCleanupJS.js b/src/js/datatypeCleanupJS.js
index 075c6ec516c..22ccf04dc7b 100644
--- a/src/js/datatypeCleanupJS.js
+++ b/src/js/datatypeCleanupJS.js
@@ -373,9 +373,6 @@ window.SlaveDatatypeCleanup = (function SlaveDatatypeCleanup() {
 		slave.makeup = Math.clamp(+slave.makeup, 0, 8) || 0;
 		slave.nails = Math.clamp(+slave.nails, 0, 9) || 0;
 		slave.scars = Math.clamp(+slave.scars, 0, 6) || 0;
-		slave.chastityAnus = Math.clamp(+slave.chastityAnus, 0, 1) || 0;
-		slave.chastityPenis = Math.clamp(+slave.chastityPenis, 0, 1) || 0;
-		slave.chastityVagina = Math.clamp(+slave.chastityVagina, 0, 1) || 0;
 		slave.choosesOwnClothes = Math.clamp(+slave.choosesOwnClothes, 0, 1) || 0;
 		if (typeof slave.clothes !== "string") {
 			slave.clothes = "no clothing";
@@ -948,9 +945,6 @@ window.childCosmeticsDatatypeCleanup = function childCosmeticsDatatypeCleanup(ch
 	child.makeup = Math.clamp(+child.makeup, 0, 8) || 0;
 	child.nails = Math.clamp(+child.nails, 0, 9) || 0;
 	child.scars = Math.clamp(+child.scars, 0, 6) || 0;
-	child.chastityAnus = Math.clamp(+child.chastityAnus, 0, 1) || 0;
-	child.chastityPenis = Math.clamp(+child.chastityPenis, 0, 1) || 0;
-	child.chastityVagina = Math.clamp(+child.chastityVagina, 0, 1) || 0;
 	child.choosesOwnClothes = Math.clamp(+child.choosesOwnClothes, 0, 1) || 0;
 	if (typeof child.clothes !== "string") {
 		child.clothes = "no clothing";
diff --git a/src/js/eventSelectionJS.js b/src/js/eventSelectionJS.js
index 0a54dedb63f..714fa412f42 100644
--- a/src/js/eventSelectionJS.js
+++ b/src/js/eventSelectionJS.js
@@ -254,7 +254,7 @@ window.generateRandomEventPoolStandard = function (eventSlave) {
 					if (eventSlave.devotion > 20) {
 						if (eventSlave.releaseRules !== "restrictive" && eventSlave.releaseRules !== "masturbation" && eventSlave.releaseRules !== "chastity") {
 							if (eventSlave.fetish === "buttslut" || eventSlave.fetish === "sadist" || eventSlave.fetish === "dom") {
-								if ((eventSlave.chastityPenis !== 1) || (eventSlave.dick === 0)) {
+								if ((eventSlave.dickAccessory !== "chastity" && eventSlave.dickAccessory !== "combined chastity") || eventSlave.dick === 0) {
 									State.variables.RETSevent.push("anal cowgirl");
 								}
 							}
@@ -321,7 +321,7 @@ window.generateRandomEventPoolStandard = function (eventSlave) {
 								State.variables.RESSevent.push("devoted nympho");
 							}
 							if (eventSlave.releaseRules === "permissive" || eventSlave.releaseRules === "masturbation") {
-								if ((eventSlave.chastityPenis !== 1) || (eventSlave.dick === 0)) {
+								if (!["chastity", "combined chastity"].includes(eventSlave.dickAccessory) || eventSlave.dick === 0) {
 									State.variables.RESSevent.push("permitted masturbation");
 								}
 							}
@@ -854,7 +854,7 @@ window.generateRandomEventPoolStandard = function (eventSlave) {
 				if (eventSlave.trust <= -20) {
 					if (eventSlave.genes === "XY") {
 						if (eventSlave.dick > 0) {
-							if (eventSlave.chastityPenis !== 1) {
+							if (!["chastity", "combined chastity"].includes(eventSlave.dickAccessory)) {
 								if (eventSlave.vagina === -1) {
 									if (eventSlave.attrXY < 50) {
 										State.variables.RESSevent.push("transition anxiety");
@@ -1020,7 +1020,7 @@ window.generateRandomEventPoolStandard = function (eventSlave) {
 
 			if (eventSlave.balls > 0) {
 				if (eventSlave.scrotum > 0) {
-					if (eventSlave.chastityPenis === 1) {
+					if (eventSlave.dickAccessory === "chastity" || eventSlave.dickAccessory === "combined chastity") {
 						if (eventSlave.devotion <= 95) {
 							if (eventSlave.energy > 50) {
 								if (eventSlave.energy < 95) {
@@ -1183,7 +1183,7 @@ window.generateRandomEventPoolStandard = function (eventSlave) {
 				if (eventSlave.need) {
 					if (eventSlave.devotion <= 95) {
 						if (eventSlave.trust >= -20) {
-							if ((eventSlave.chastityPenis !== 1) || (eventSlave.dick === 0)) {
+							if ((eventSlave.dickAccessory !== "chastity" && eventSlave.dickAccessory !== "combined chastity") || (eventSlave.dick === 0)) {
 								State.variables.RESSevent.push("forbidden masturbation");
 							}
 						}
@@ -1354,7 +1354,7 @@ window.generateRandomEventPoolStandard = function (eventSlave) {
 				if (eventSlave.devotion > 20) {
 					if (eventSlave.trust >= -20) {
 						if (canDoAnal(eventSlave) || canDoVaginal(eventSlave)) {
-							if ((eventSlave.chastityPenis !== 1) || (eventSlave.dick === 0)) {
+							if (!["chastity", "combined chastity"].includes(eventSlave.dickAccessory) || eventSlave.dick === 0) {
 								if (State.variables.corpIncorporated !== 0) {
 									State.variables.RESSevent.push("shift sleep");
 								}
@@ -1383,7 +1383,7 @@ window.generateRandomEventPoolStandard = function (eventSlave) {
 				if (eventSlave.devotion > 20) {
 					if (eventSlave.trust >= -20) {
 						if (canDoAnal(eventSlave) || canDoVaginal(eventSlave)) {
-							if ((eventSlave.chastityPenis !== 1) || (eventSlave.dick === 0)) {
+							if ((!["chastity", "combined chastity"].includes(eventSlave.dickAccessory)) || (eventSlave.dick === 0)) {
 								if (State.variables.corpIncorporated !== 0) {
 									State.variables.RESSevent.push("shift sleep");
 								}
@@ -1610,7 +1610,7 @@ window.generateRandomEventPoolStandard = function (eventSlave) {
 				if (eventSlave.amp !== 1) {
 					if (canAchieveErection(eventSlave)) {
 						if (eventSlave.belly < 10000) {
-							if (eventSlave.chastityPenis !== 1) {
+							if (eventSlave.dickAccessory !== "chastity" && eventSlave.dickAccessory !== "combined chastity") {
 								State.variables.RESSevent.push("slave dick huge");
 							}
 						}
@@ -2448,7 +2448,7 @@ window.generateRandomEventPoolServant = function (eventSlave) {
 
 			if (eventSlave.balls > 0) {
 				if (eventSlave.scrotum > 0) {
-					if (eventSlave.chastityPenis === 1) {
+					if (eventSlave.dickAccessory === "chastity" || eventSlave.dickAccessory === "combined chastity") {
 						if (eventSlave.devotion <= 95) {
 							if (eventSlave.energy > 50) {
 								if (eventSlave.energy < 95) {
@@ -2577,7 +2577,7 @@ window.generateRandomEventPoolServant = function (eventSlave) {
 				if (eventSlave.need) {
 					if (eventSlave.devotion <= 95) {
 						if (eventSlave.trust >= -20) {
-							if (eventSlave.chastityPenis !== 1 || (eventSlave.dick === 0)) {
+							if ((eventSlave.dickAccessory !== "chastity" && eventSlave.dickAccessory !== "combined chastity") || (eventSlave.dick === 0)) {
 								State.variables.RESSevent.push("forbidden masturbation");
 							}
 						}
@@ -2820,7 +2820,7 @@ window.generateRandomEventPoolServant = function (eventSlave) {
 				if (eventSlave.amp !== 1) {
 					if (canAchieveErection(eventSlave)) {
 						if (eventSlave.belly < 10000) {
-							if (eventSlave.chastityPenis !== 1) {
+							if (eventSlave.dickAccessory !== "chastity" && eventSlave.dickAccessory !== "combined chastity") {
 								State.variables.RESSevent.push("slave dick huge");
 							}
 						}
diff --git a/src/js/slaveSummaryWidgets.js b/src/js/slaveSummaryWidgets.js
index 57f376538b8..330594256e5 100644
--- a/src/js/slaveSummaryWidgets.js
+++ b/src/js/slaveSummaryWidgets.js
@@ -246,7 +246,7 @@ window.SlaveSummaryUncached = (function(){
 			if (V.abbreviateClothes === 2) {
 				r += `&nbsp;&nbsp;&nbsp;&nbsp;`;
 				if (slave.choosesOwnClothes === 1)
-					r += `Dressing herself.`;
+					r += `Dressing herself. `;
 				long_clothes(slave);
 				long_collar(slave);
 				long_belly(slave);
@@ -254,7 +254,6 @@ window.SlaveSummaryUncached = (function(){
 					long_legs(slave);
 				if (canWalk(slave))
 					long_shoes(slave);
-				long_chastity(slave);
 				long_vaginal_acc(slave);
 				long_dick_acc(slave);
 				long_buttplug(slave);
@@ -4599,27 +4598,19 @@ window.SlaveSummaryUncached = (function(){
 		}
 		r += " ";
 	}
-	
-	/** @param {App.Entity.SlaveState} slave */
-	function long_chastity(slave) {
-		if (slave.chastityAnus === 1 && slave.chastityPenis === 1 && slave.chastityVagina === 1) {
-			r += `Full chastity.`;
-		} else if (slave.chastityPenis === 1 && slave.chastityVagina === 1) {
-			r += `Genital chastity.`;
-		} else if ((slave.chastityAnus === 1 && slave.chastityVagina === 1) || (slave.chastityAnus === 1 && slave.chastityPenis === 1)) {
-			r += `Combined chastity.`;
-		} else if (slave.chastityVagina === 1) {
-			r += `Vaginal chastity.`;
-		} else if (slave.chastityPenis === 1) {
-			r += `Chastity cage.`;
-		} else if (slave.chastityAnus === 1) {
-			r += `Anal chastity.`;
-		}
-	}
 
 	/** @param {App.Entity.SlaveState} slave */
 	function long_vaginal_acc(slave) {
 		switch (slave.vaginalAccessory) {
+			case "chastity belt":
+				r += `Vaginal chastity.`;
+				break;
+			case "combined chastity":
+				r += `Combined chastity.`;
+				break;
+			case "anal chastity":
+				r += `Anal chastity.`;
+				break;
 			case "dildo":
 				r += `Vaginal dildo.`;
 				break;
@@ -4644,10 +4635,12 @@ window.SlaveSummaryUncached = (function(){
 
 	/** @param {App.Entity.SlaveState} slave */
 	function long_dick_acc(slave) {
-		switch (slave.dickAccessory) {
-			case "sock":
-				r += `Cock sock.`;
-				break;
+		if (slave.dickAccessory === "chastity") {
+			r += `Chastity cage.`;
+		} else if (slave.dickAccessory === "combined chastity") {
+			r += `Combined chastity.`;
+		} else if (slave.dickAccessory === "anal chastity") {
+			r += `Anal chastity.`;
 		}
 		r += " ";
 	}
diff --git a/src/js/storyJS.js b/src/js/storyJS.js
index fec6bd89a78..9dec944bddd 100644
--- a/src/js/storyJS.js
+++ b/src/js/storyJS.js
@@ -177,7 +177,9 @@ window.canImpreg = function(slave1, slave2) {
 		}
 	} else if (slave2.balls < 1) {
 		return false;
-	} else if (slave2.chastityPenis === 1) {
+	} else if (slave2.dickAccessory === "chastity") {
+		return false;
+	} else if (slave2.dickAccessory === "combined chastity") {
 		return false;
 	} else if (slave2.pubertyXY === 0) { /* pregmod start */
 		return false;
@@ -263,7 +265,9 @@ window.canPenetrate = /** @param {App.Entity.SlaveState} slave */ function (slav
 		return null;
 	} else if (!canAchieveErection(slave)) {
 		return false;
-	} else if (slave.chastityPenis === 1) {
+	} else if (slave.dickAccessory === "chastity") {
+		return false;
+	} else if (slave.dickAccessory === "combined chastity") {
 		return false;
 	} else if (slave.dick > 7) {
 		return false;
@@ -346,7 +350,13 @@ window.canTalk = /** @param {App.Entity.SlaveState} slave */ function (slave) {
 window.canDoAnal = /** @param {App.Entity.SlaveState} slave */ function (slave) {
 	if (!slave) {
 		return null;
-	} else if (slave.chastityAnus === 1) {
+	} else if (slave.vaginalAccessory === "anal chastity") {
+		return false;
+	} else if (slave.dickAccessory === "anal chastity") {
+		return false;
+	} else if (slave.vaginalAccessory === "combined chastity") {
+		return false;
+	} else if (slave.dickAccessory === "combined chastity") {
 		return false;
 	}
 	return true;
@@ -357,7 +367,9 @@ window.canDoVaginal = /** @param {App.Entity.SlaveState} slave */ function (slav
 		return null;
 	} else if (slave.vagina < 0) {
 		return false;
-	} else if (slave.chastityVagina === 1) {
+	} else if (slave.vaginalAccessory === "chastity belt") {
+		return false;
+	} else if (slave.vaginalAccessory === "combined chastity") {
 		return false;
 	}
 	return true;
diff --git a/src/js/vignettes.js b/src/js/vignettes.js
index 3df4b398ee6..7586914ecb9 100644
--- a/src/js/vignettes.js
+++ b/src/js/vignettes.js
@@ -1151,19 +1151,26 @@ window.GetVignette = /** @param {App.Entity.SlaveState} slave */ function GetVig
 				effect: -1,
 			});
 		}
-		if (slave.heels === 1 && !(["heels", "pumps", "extreme heels", "boots"].includes(slave.shoes))) {
+		if (slave.heels === 1 && !(["boots", "extreme heels", "heels", "pumps"].includes(slave.shoes))) {
 			vignettes.push({
 				text: `${he} enticed a new customer who had never really considered buttsex before they saw ${him} crawling along with ${his} asshole vulnerable,`,
-				type: "cash",
+				type: "rep",
 				effect: 1,
 			});
 		}
 		if (slave.chastityVagina === 1) {
 			vignettes.push({
-				text: `a wavering customer who was disappointed that ${his} pussy is unavailable decided to try ${his} ass instead,`,
-				type: "cash",
+				text: `a wavering customer who was disappointed that ${his} pussy was unavailable decided to try ${his} mouth instead,`,
+				type: "rep",
 				effect: 1,
 			});
+			if (slave.chastityAnus !== 1) {
+				vignettes.push({
+					text: `a wavering customer who was disappointed that ${his} pussy was unavailable decided to try ${his} ass instead,`,
+					type: "rep",
+					effect: 1,
+				});
+			}
 		}
 		if (slave.collar === "shock punishment") {
 			vignettes.push({
@@ -2728,7 +2735,7 @@ window.GetVignette = /** @param {App.Entity.SlaveState} slave */ function GetVig
 				effect: -1,
 			});
 		}
-		if (slave.heels === 1 && !(["heels", "pumps", "extreme heels", "boots"].includes(slave.shoes))) {
+		if (slave.heels === 1 && !(["boots", "extreme heels", "heels", "pumps"].includes(slave.shoes))) {
 			vignettes.push({
 				text: `${he} enticed a new patron who had never really considered buttsex before they saw ${him} crawling along with ${his} asshole vulnerable,`,
 				type: "rep",
@@ -2737,10 +2744,17 @@ window.GetVignette = /** @param {App.Entity.SlaveState} slave */ function GetVig
 		}
 		if (slave.chastityVagina === 1) {
 			vignettes.push({
-				text: `a wavering citizen who was disappointed that ${his} pussy is unavailable decided to try ${his} ass instead,`,
+				text: `a wavering citizen who was disappointed that ${his} pussy was unavailable decided to try ${his} mouth instead,`,
 				type: "rep",
 				effect: 1,
 			});
+			if (slave.chastityAnus !== 1) {
+				vignettes.push({
+					text: `a wavering citizen who was disappointed that ${his} pussy was unavailable decided to try ${his} ass instead,`,
+					type: "rep",
+					effect: 1,
+				});
+			}
 		}
 		if (slave.collar === "shock punishment") {
 			vignettes.push({
diff --git a/src/js/walkPastJS.js b/src/js/walkPastJS.js
index 5bd048c7480..30b6c741fca 100644
--- a/src/js/walkPastJS.js
+++ b/src/js/walkPastJS.js
@@ -292,9 +292,9 @@ window.loverSlave = function(activeSlave) {
 						break;
 					case "cumslut":
 						t += `sharing oral pleasure ${_fuckSpot}. ${name} is such an oral addict that ${he} wants it all the time, and ${partnerName} certainly doesn't mind all the loving oral attention. `;
-						if (((activeSlave.chastityPenis !== 1 && activeSlave.dick > 0) || canDoVaginal(activeSlave)) && ((_partnerSlave.chastityPenis !== 1 && _partnerSlave.dick > 0) || canDoVaginal(_partnerSlave))) {
+						if (((!["chastity", "combined chastity"].includes(activeSlave.dickAccessory) && activeSlave.dick > 0) || canDoVaginal(activeSlave)) && ((!["chastity", "combined chastity"].includes(_partnerSlave.dickAccessory) && _partnerSlave.dick > 0) || canDoVaginal(_partnerSlave))) {
 							t += `They're lying down to 69 comfortably, `;
-							if (_partnerSlave.chastityPenis !== 1 && _partnerSlave.dick > 0) {
+							if (!["chastity", "combined chastity"].includes(_partnerSlave.dickAccessory) && _partnerSlave.dick > 0) {
 								if (canPenetrate(_partnerSlave)) {
 									t += `with ${name} hungrily sucking ${his} ${activeSlaveRel}'s turgid cock.`;
 								} else if (_partnerSlave.dick > 7 && activeSlave.amp !== 1) {
@@ -313,9 +313,9 @@ window.loverSlave = function(activeSlave) {
 							} else {
 								t += `and ${name} is sating ${his} oral fixation for the moment by eagerly polishing ${his} ${activeSlaveRel}'s pearl.`;
 							}
-						} else if ((_partnerSlave.chastityPenis !== 1 && _partnerSlave.dick > 0) || canDoVaginal(_partnerSlave)) {
+						} else if ((!["chastity", "combined chastity"].includes(_partnerSlave.dickAccessory) && _partnerSlave.dick > 0) || canDoVaginal(_partnerSlave)) {
 							t += `${name} has ${his} face to ${partnerName}'s crotch and is `;
-							if (_partnerSlave.chastityPenis !== 1 && _partnerSlave.dick > 0) {
+							if (!["chastity", "combined chastity"].includes(_partnerSlave.dickAccessory) && _partnerSlave.dick > 0) {
 								if (canPenetrate(_partnerSlave)) {
 									t += `hungrily sucking ${his} ${activeSlaveRel}'s turgid cock.`;
 								} else if (_partnerSlave.dick > 7 && activeSlave.amp !== 1) {
@@ -1569,7 +1569,7 @@ window.walkPasts = function(slave, _seed) {
 			} else if (_seed > 40) {
 				if (canPenetrate(slave)) {
 					t += `with ${his} dick inside `;
-				} else if (slave.dick > 0 && slave.chastityPenis !== 1) {
+				} else if (slave.dick > 0 && slave.dickAccessory !== "chastity" && slave.dick !== "combined chastity") {
 					t += `getting ${his} soft dick sucked by `;
 				} else if (canDoVaginal(slave) || canDoAnal(slave)) {
 					t += "getting eaten out by ";
diff --git a/src/pregmod/widgets/bodyswapWidgets.tw b/src/pregmod/widgets/bodyswapWidgets.tw
index 82dfaf71bc7..8131801c5b9 100644
--- a/src/pregmod/widgets/bodyswapWidgets.tw
+++ b/src/pregmod/widgets/bodyswapWidgets.tw
@@ -179,7 +179,7 @@
 <<set $args[0].clothes = $args[1].clothes>>
 <<set $args[0].collar = $args[1].collar>>
 <<set $args[0].shoes = $args[1].shoes>>
-<<set $args[0].vaginalChastity = $args[1].vaginalChastity>>
+<<set $args[0].vaginalAccessory = $args[1].vaginalAccessory>>
 <<set $args[0].dickAccessory = $args[1].dickAccessory>>
 <<set $args[0].chastityVagina = $args[1].chastityVagina>>
 <<set $args[0].chastityPenis = $args[1].chastityPenis>>
-- 
GitLab