From 36716afc2b6c853aaa407919eb0f230ddcb0866b Mon Sep 17 00:00:00 2001
From: lowercasedonkey <lowercasedonkey@gmail.com>
Date: Thu, 20 Feb 2020 00:29:06 -0500
Subject: [PATCH] vaginalAttachment

---
 js/003-data/miscData.js            | 21 +++++++++-
 src/js/wardrobeUse.js              | 62 +++++++++++++++++++++++++++++-
 src/uncategorized/slaveInteract.tw |  9 +----
 3 files changed, 83 insertions(+), 9 deletions(-)

diff --git a/js/003-data/miscData.js b/js/003-data/miscData.js
index e257949a12a..a071438fa14 100644
--- a/js/003-data/miscData.js
+++ b/js/003-data/miscData.js
@@ -2485,7 +2485,26 @@ App.Data.misc = {
 
 	vaginalAttachments: [
 		{name: "None", value: "none"},
-		{name: "Vibrating attachment", value: "vibrator"}
+		{
+			name: "Vibrating attachment",
+			value: "vibrator",
+			unlock: function(slave) {
+				if (V.toysBoughtVaginalAttachments > 0) {
+					if (slave) {
+						if (slave.vaginalAccessory === "none") {
+							return "No vaginal accessory to attach it to";
+						} else if (slave.vaginalAccessory === "bullet vibrator" || slave.vaginalAccessory === "smart bullet vibrator") {
+							return "Vaginal accessory already vibrates";
+						} else {
+							return true;
+						}
+					} else {
+						return true;
+					}
+				}
+			}
+
+		}
 	],
 
 	dickAccessories: [
diff --git a/src/js/wardrobeUse.js b/src/js/wardrobeUse.js
index ebbf024f6de..f4e8cf0ceae 100644
--- a/src/js/wardrobeUse.js
+++ b/src/js/wardrobeUse.js
@@ -524,6 +524,66 @@ App.UI.Wardrobe.vaginalAccessory = function(slave) {
 	return jQuery('#vaginalAccessory').empty().append(el);
 };
 
+App.UI.Wardrobe.vaginalAttachment = function(slave) {
+	if (slave.fuckdoll !== 0) {
+		return;
+	} else if (slave.vaginalAccessory === "none") {
+		return jQuery('#vaginalAttachment').empty();
+	}
+
+	const
+		{
+			// eslint-disable-next-line no-unused-vars
+			he, him, his, hers, himself, boy, He, His
+		} = getPronouns(slave);
+
+	let el = document.createElement('div');
+
+	let label = document.createElement('div');
+	label.append(`Vaginal accessory attachment: `);
+
+	let choice = document.createElement('span');
+	choice.style.fontWeight = "bold";
+	choice.textContent = (`${slave.vaginalAttachment} `);
+	label.appendChild(choice);
+
+	if (slave.vaginalAttachment !== `none`) {
+		let choiceOptionsArray = [];
+		choiceOptionsArray.push({text: `None`, updateSlave: {vaginalAttachment: `none`}});
+		label.appendChild(App.UI.Wardrobe.generateRows(choiceOptionsArray, "vaginalAttachment", slave, false));
+	}
+	el.appendChild(label);
+
+	let optionsArray = [];
+
+	let clothingOption;
+	App.Data.misc.vaginalAttachments.forEach(item => {
+		clothingOption = {
+			text: item.name,
+			updateSlave: {vaginalAttachment: item.value}
+		};
+		if (item.fs) {
+			clothingOption.FS = item.fs;
+		}
+
+		if (item.value !== "none") {
+			// skip none in set, we set the link elsewhere.
+			optionsArray.push(clothingOption);
+		}
+	});
+
+	// Sort
+	optionsArray = optionsArray.sort((a, b) => (a.text > b.text) ? 1 : -1);
+
+	// Options
+	let links = document.createElement('div');
+	links.className = "choices";
+	links.appendChild(App.UI.Wardrobe.generateRows(optionsArray, "vaginalAttachment", slave, true));
+	el.appendChild(links);
+
+	return jQuery('#vaginalAttachment').empty().append(el);
+};
+
 
 
 App.UI.Wardrobe.generateRows = function(array, category, slave, accessCheck=false) { // category should be in the form of slave.category, the thing we want to update.
@@ -612,7 +672,7 @@ App.UI.Wardrobe.refreshAll = function(slave) {
 	App.UI.Wardrobe.buttplug(slave);
 	App.UI.Wardrobe.buttplugAttachment(slave);
 	App.UI.Wardrobe.vaginalAccessory(slave);
-	
+	App.UI.Wardrobe.vaginalAttachment(slave);
 	return;
 };
 
diff --git a/src/uncategorized/slaveInteract.tw b/src/uncategorized/slaveInteract.tw
index 6c3bba5ed1a..71e840b7b1e 100644
--- a/src/uncategorized/slaveInteract.tw
+++ b/src/uncategorized/slaveInteract.tw
@@ -227,13 +227,8 @@
 	<<if $activeSlave.vagina > -1>>
 		<span id="vaginalAccessory"></span>
 		<script>App.UI.Wardrobe.vaginalAccessory(V.activeSlave)</script>
-		<<if isItemAccessible("vibrator") && ($activeSlave.vaginalAccessory != "none" && $activeSlave.vaginalAccessory != "bullet vibrator" && $activeSlave.vaginalAccessory != "smart bullet vibrator") && $toysBoughtVaginalAttachments == 1>>
-			<br>
-			&nbsp;&nbsp;&nbsp;&nbsp;Vaginal accessory attachment:
-			''<span id="vaginalAttachment">$activeSlave.vaginalAttachment</span>.''
-			<<link "None">><<set $activeSlave.vaginalAttachment = "none">><<replace "#vaginalAttachment">>$activeSlave.vaginalAttachment<</replace>><</link>>
-			| <<link "Vibrating dildo">><<set $activeSlave.vaginalAttachment = "vibrator">><<replace "#vaginalAttachment">>$activeSlave.vaginalAttachment<</replace>><</link>>
-		<</if>>
+		<span id="vaginalAttachment"></span>
+		<script>App.UI.Wardrobe.vaginalAttachment(V.activeSlave)</script>
 	<</if>>
 
 	<<if $activeSlave.dick > 0>>
-- 
GitLab