From 775ae0ea90dcc0a01bdcc9a7b11238807934009e Mon Sep 17 00:00:00 2001
From: kopareigns <kopareigns@gmail.com>
Date: Wed, 25 Jul 2018 22:22:11 -0400
Subject: [PATCH] JSify rendered art code

---
 devNotes/twine JS.txt                         | 118 +++++++++++++++++-
 src/art/artWidgets.tw                         | 102 +--------------
 src/js/artJS.tw                               | 115 +++++++++++++++++
 src/pregmod/assistantAppearancePackTwo.tw     |   2 +-
 src/uncategorized/RESS.tw                     |   2 +-
 src/uncategorized/assistantEvents.tw          |   2 +-
 src/uncategorized/personalAssistantOptions.tw |   2 +-
 7 files changed, 237 insertions(+), 106 deletions(-)
 create mode 100644 src/js/artJS.tw

diff --git a/devNotes/twine JS.txt b/devNotes/twine JS.txt
index 3f24d236b3f..f52c99e75f5 100644
--- a/devNotes/twine JS.txt	
+++ b/devNotes/twine JS.txt	
@@ -23157,4 +23157,120 @@ window.getHighestPorn = function(slave) {
 	}
 	
 	return max;
-}
\ No newline at end of file
+}
+
+/*:: Art JS [script]*/
+
+/*
+Displays assistant images. Currently passage-based.
+sizePlacement: Image size/center.
+	3: Large, right. Example: description.
+	2: Medium, right. Example: random events.
+*/
+window.AssistantArtRendered = function AssistantArtRendered(sizePlacement) {
+	const V = State.variables;
+	let fileName = "";
+
+	if (V.imageChoice === 0) {
+		switch (V.assistantAppearance) {
+			case "monstergirl":
+				fileName = "'resources/renders/assistant monstergirl.png'";;
+				break;
+			case "shemale":
+				fileName = "'resources/renders/assistant shemale.png'";
+				break;
+			case "amazon":
+				fileName = "'resources/renders/assistant amazon.png'";
+				break;
+			case "businesswoman":
+				fileName = "'resources/renders/assistant businesswoman.png'";
+				break;
+			case "goddess":
+				fileName = "'resources/renders/assistant goddess.png'";
+				break;
+			case "schoolgirl":
+				fileName = "'resources/renders/assistant schoolgirl.png'";
+				break;
+			default:
+				fileName = "'resources/renders/assistant default.png'";
+		}
+		if (sizePlacement === 3) {
+			fileName = `<img src=${fileName} style='float:right; border:3px hidden'/>`;
+		} else {
+			fileName = `<img src=${fileName} style='float:right; border:3px hidden' width='300' height='300'/>`;
+		}
+	}
+	return fileName;
+};
+
+window.ArtControlRendered = function ArtControlRendered(slave, sizePlacement) {
+	const V = State.variables;
+	let fileName = "";
+	let r = "";
+
+	if (slave.vagina > -1) {
+		if (slave.dick > 0) {
+			if (slave.balls > 0) {
+				fileName = "futanari";
+			} else {
+				fileName = "herm";
+			}
+		} else {
+			fileName = "female";
+		}
+	} else {
+		if (slave.balls > 0) {
+			fileName = "shemale";
+		} else {
+			fileName = "gelding";
+		}
+	}
+	if (slave.belly > 1500) {
+		fileName = `preg ${fileName}`;
+	}
+	if (slave.boobs < 400) {
+		fileName = `${fileName} small`;
+	} else if (slave.boobs < 800) {
+		fileName = `${fileName} big`;
+	} else if (slave.boobs < 6000) {
+		fileName = `${fileName} huge`;
+	} else {
+		fileName = `${fileName} hyper`;
+	}
+	if (slave.muscles > 30) {
+		fileName = `${fileName} muscle`;
+	} else {
+		fileName = `${fileName} soft`;
+	}
+	if (slave.fuckdoll > 0) {
+		fileName = `${fileName} rebellious`;
+	} else if (slave.devotion <= 20) {
+		if (slave.trust < -20) {
+			fileName = `${fileName} reluctant`;
+		} else {
+			fileName = `${fileName} rebellious`;
+		}
+	} else if (slave.fetish === "mindbroken") {
+		fileName = `${fileName} reluctant`;
+	} else if (slave.devotion <= 50 || slave.fetishKnown !== 1 || V.seeMainFetishes === 0 && sizePlacement < 2) {
+		fileName = `${fileName} obedient`;
+	} else {
+		if (slave.fetish === "none") {
+			fileName = `${fileName} obedient`;
+		} else {
+			fileName = `${fileName} ${slave.fetish}`;
+		}
+	}
+
+	fileName = `'resources/renders/${fileName}.png'`;
+	if (sizePlacement === 3) {
+		r = `<img src=${fileName} style='float:right; border:3px hidden'>`;
+	} else if (sizePlacement === 2) {
+		r = `<img src=${fileName} style='float:right; border:3px hidden' width='300' height='300'>`;
+	} else if (sizePlacement === 1) {
+		r = `<img src=${fileName} style='float:left; border:3px hidden' width='150' height='150'>`;
+	} else {
+		r = `<img src=${fileName} style='float:left; border:3px hidden' width='120' height='120'>`;
+	}
+	return r;
+};
diff --git a/src/art/artWidgets.tw b/src/art/artWidgets.tw
index 27a152a7f6a..acddbd12af6 100644
--- a/src/art/artWidgets.tw
+++ b/src/art/artWidgets.tw
@@ -1,42 +1,5 @@
 :: art widgets [nobr widget]
 
-/%
-Call as <<AssistantArt>>
-Displays assistant images. Currently passage-based.
-$args[0]: Image size/center.
-	3: Large, right. Example: description.
-	2: Medium, right. Example: random events.
-%/
-<<widget "AssistantArt">>
-
-<<if $imageChoice == 0>> /* RENDERED IMAGES BY SHOKUSHU */
-
-<<switch $assistantAppearance>>
-<<case "monstergirl">>
-	<<set _fileName = "'resources/renders/assistant monstergirl.png' ">>
-<<case "shemale">>
-	<<set _fileName = "'resources/renders/assistant shemale.png' ">>
-<<case "amazon">>
-	<<set _fileName = "'resources/renders/assistant amazon.png' ">>
-<<case "businesswoman">>
-	<<set _fileName = "'resources/renders/assistant businesswoman.png' ">>
-<<case "goddess">>
-	<<set _fileName = "'resources/renders/assistant goddess.png' ">>
-<<case "schoolgirl">>
-	<<set _fileName = "'resources/renders/assistant schoolgirl.png' ">>
-<<default>>
-	<<set _fileName = "'resources/renders/assistant default.png' ">>
-<</switch>>
-<<if $args[1] == 3>>
-	<<print "<img src=" + _fileName + "style='float:right; border:3px hidden'/>">>
-<<else>>
-	<<print "<img src=" + _fileName + "style='float:right; border:3px hidden' width='300' height='300'/>">>
-<</if>>
-
-<</if>> /* CLOSES IMAGE CHOICE */
-
-<</widget>>
-
 /%
 Call as <<SlaveArt>>
 Displays slave images. Currently passage-based.
@@ -598,70 +561,7 @@ vector art added later is drawn over previously added art
 	<<include Art_Vector_Revamped_Control_>> 
 <<else>> /* RENDERED IMAGES BY SHOKUSHU */
 
-<<if $args[0].vagina > -1>>
-	<<if $args[0].dick > 0>>
-		<<if $args[0].balls > 0>>
-			<<set _fileName = "futanari">>
-		<<else>>
-			<<set _fileName = "herm">>
-		<</if>>
-	<<else>>
-		<<set _fileName = "female">>
-	<</if>>
-<<else>>
-	<<if $args[0].balls > 0>>
-		<<set _fileName = "shemale">>
-	<<else>>
-		<<set _fileName = "gelding">>
-	<</if>>
-<</if>>
-<<if $args[0].belly > 1500>>
-	<<set _fileName = "preg " + _fileName>>
-<</if>>
-<<if $args[0].boobs < 400>>
-	<<set _fileName = _fileName + " small">>
-<<elseif $args[0].boobs < 800>>
-	<<set _fileName = _fileName + " big">>
-<<elseif $args[0].boobs < 6000>>
-	<<set _fileName = _fileName + " huge">>
-<<else>>
-	<<set _fileName = _fileName + " hyper">>
-<</if>>
-<<if $args[0].muscles > 30>>
-	<<set _fileName = _fileName + " muscle">>
-<<else>>
-	<<set _fileName = _fileName + " soft">>
-<</if>>
-<<if $args[0].fuckdoll > 0>>
-	<<set _fileName = _fileName + " rebellious">>
-<<elseif $args[0].devotion <= 20>>
-	<<if $args[0].trust < -20>>
-		<<set _fileName = _fileName + " reluctant">>
-	<<else>>
-		<<set _fileName = _fileName + " rebellious">>
-	<</if>>
-<<elseif $args[0].fetish == "mindbroken">>
-	<<set _fileName = _fileName + " reluctant">>
-<<elseif $args[0].devotion <= 50 || $args[0].fetishKnown != 1 || ($seeMainFetishes == 0 && $args[1] < 2)>>
-	<<set _fileName = _fileName + " obedient">>
-<<else>>
-	<<if $args[0].fetish == "none">>
-		<<set _fileName = _fileName + " obedient">>
-	<<else>>
-		<<set _fileName = _fileName + " " + $args[0].fetish>>
-	<</if>>
-<</if>>
-
-<<set _fileName = "'resources/renders/" + _fileName + ".png' ">>
-<<if $args[1] == 3>>
-	<<print "<img src=" + _fileName + "style='float:right; border:3px hidden'/>">>
-<<elseif $args[1] == 2>>
-	<<print "<img src=" + _fileName + "style='float:right; border:3px hidden' width='300' height='300'/>">>
-<<elseif $args[1] == 1>>
-	<<print "<img src=" + _fileName + "style='float:left; border:3px hidden' width='150' height='150'/>">>
-<<else>>
-	<<print "<img src=" + _fileName + "style='float:left; border:3px hidden' width='120' height='120'/>">>
-<</if>>
+	<<= ArtControlRendered($args[0], $args[1])>>
 
 <</if>> /* CLOSES IMAGE CHOICE */
 
diff --git a/src/js/artJS.tw b/src/js/artJS.tw
new file mode 100644
index 00000000000..3405c98d0c1
--- /dev/null
+++ b/src/js/artJS.tw
@@ -0,0 +1,115 @@
+:: Art JS [script]
+
+/*
+Displays assistant images. Currently passage-based.
+sizePlacement: Image size/center.
+	3: Large, right. Example: description.
+	2: Medium, right. Example: random events.
+*/
+window.AssistantArtRendered = function AssistantArtRendered(sizePlacement) {
+	const V = State.variables;
+	let fileName = "";
+
+	if (V.imageChoice === 0) {
+		switch (V.assistantAppearance) {
+			case "monstergirl":
+				fileName = "'resources/renders/assistant monstergirl.png'";;
+				break;
+			case "shemale":
+				fileName = "'resources/renders/assistant shemale.png'";
+				break;
+			case "amazon":
+				fileName = "'resources/renders/assistant amazon.png'";
+				break;
+			case "businesswoman":
+				fileName = "'resources/renders/assistant businesswoman.png'";
+				break;
+			case "goddess":
+				fileName = "'resources/renders/assistant goddess.png'";
+				break;
+			case "schoolgirl":
+				fileName = "'resources/renders/assistant schoolgirl.png'";
+				break;
+			default:
+				fileName = "'resources/renders/assistant default.png'";
+		}
+		if (sizePlacement === 3) {
+			fileName = `<img src=${fileName} style='float:right; border:3px hidden'/>`;
+		} else {
+			fileName = `<img src=${fileName} style='float:right; border:3px hidden' width='300' height='300'/>`;
+		}
+	}
+	return fileName;
+};
+
+window.ArtControlRendered = function ArtControlRendered(slave, sizePlacement) {
+	const V = State.variables;
+	let fileName = "";
+	let r = "";
+
+	if (slave.vagina > -1) {
+		if (slave.dick > 0) {
+			if (slave.balls > 0) {
+				fileName = "futanari";
+			} else {
+				fileName = "herm";
+			}
+		} else {
+			fileName = "female";
+		}
+	} else {
+		if (slave.balls > 0) {
+			fileName = "shemale";
+		} else {
+			fileName = "gelding";
+		}
+	}
+	if (slave.belly > 1500) {
+		fileName = `preg ${fileName}`;
+	}
+	if (slave.boobs < 400) {
+		fileName = `${fileName} small`;
+	} else if (slave.boobs < 800) {
+		fileName = `${fileName} big`;
+	} else if (slave.boobs < 6000) {
+		fileName = `${fileName} huge`;
+	} else {
+		fileName = `${fileName} hyper`;
+	}
+	if (slave.muscles > 30) {
+		fileName = `${fileName} muscle`;
+	} else {
+		fileName = `${fileName} soft`;
+	}
+	if (slave.fuckdoll > 0) {
+		fileName = `${fileName} rebellious`;
+	} else if (slave.devotion <= 20) {
+		if (slave.trust < -20) {
+			fileName = `${fileName} reluctant`;
+		} else {
+			fileName = `${fileName} rebellious`;
+		}
+	} else if (slave.fetish === "mindbroken") {
+		fileName = `${fileName} reluctant`;
+	} else if (slave.devotion <= 50 || slave.fetishKnown !== 1 || V.seeMainFetishes === 0 && sizePlacement < 2) {
+		fileName = `${fileName} obedient`;
+	} else {
+		if (slave.fetish === "none") {
+			fileName = `${fileName} obedient`;
+		} else {
+			fileName = `${fileName} ${slave.fetish}`;
+		}
+	}
+
+	fileName = `'resources/renders/${fileName}.png'`;
+	if (sizePlacement === 3) {
+		r = `<img src=${fileName} style='float:right; border:3px hidden'>`;
+	} else if (sizePlacement === 2) {
+		r = `<img src=${fileName} style='float:right; border:3px hidden' width='300' height='300'>`;
+	} else if (sizePlacement === 1) {
+		r = `<img src=${fileName} style='float:left; border:3px hidden' width='150' height='150'>`;
+	} else {
+		r = `<img src=${fileName} style='float:left; border:3px hidden' width='120' height='120'>`;
+	}
+	return r;
+};
diff --git a/src/pregmod/assistantAppearancePackTwo.tw b/src/pregmod/assistantAppearancePackTwo.tw
index a8cb264ecbd..7be9a3cb85a 100644
--- a/src/pregmod/assistantAppearancePackTwo.tw
+++ b/src/pregmod/assistantAppearancePackTwo.tw
@@ -1,6 +1,6 @@
 :: Assistant Appearance Pack Two [nobr]
 
-<<if $seeImages == 1>><<AssistantArt 3>><</if>>
+<<if $seeImages == 1>><<= AssistantArtRendered(3)>><</if>>
 
 "Cool! New appearances to play around with!" Your assistant happily chimes. "Let's see what's inside! This looks heavenly..." She hunches forward as a large pair of white feathered wings extend from her upper back. She takes several experimental flaps before taking to the sky. "I feel positively radiant! Maybe a smaller version will be more to your liking?" She loses both height and wingspan until she stands roughly equivalent to <<= heightToEitherUnit(120)>>. She flutters around cutely. "This is neat, I'm like cupid. Want me to hook you up with anyone?" She winks as her wings become bat-like and a pair of cute little nubs appears on her head. "Or maybe you'd just like to play with me instead." The impish figure flirts, before landing and blossoming into a stunning woman. "You know a succubus can take her lover's ideal form." She runs her hands down her sides and to her crotch. <<if $seeDicks != 0>>She begins rubbing her clit as it steadily grows into a meaty cock. "Or an incubus, for the ladies." She returns to her previous form. <</if>>"Says here it comes with 'bonus novice witch' too. Neat. What's this though? It looks like an appeara"
 
diff --git a/src/uncategorized/RESS.tw b/src/uncategorized/RESS.tw
index 883921dd3a7..53383d3a988 100644
--- a/src/uncategorized/RESS.tw
+++ b/src/uncategorized/RESS.tw
@@ -2526,7 +2526,7 @@ running her tongue over her<<if $activeSlave.lips > 40>> whorish<<elseif $active
 
 <<case "PA flirting">>
 
-<<if $seeImages == 1>><<AssistantArt 2>><</if>>
+<<if $seeImages == 1>><<= AssistantArtRendered(2)>><</if>>
 
 Partway through <<EventNameLink $activeSlave>>'s weekly inspection, you have to leave for a moment to deal with a minor matter. Inspecting such a devoted slave is a pleasure, but you tear yourself away. Such sacrifices must be made.
 <br><br>
diff --git a/src/uncategorized/assistantEvents.tw b/src/uncategorized/assistantEvents.tw
index 4440b557e22..4b6873329a5 100644
--- a/src/uncategorized/assistantEvents.tw
+++ b/src/uncategorized/assistantEvents.tw
@@ -4,7 +4,7 @@
 
 <<set $nextButton = "Continue", $nextLink = "Random Nonindividual Event">>
 
-<<if $seeImages == 1>><<AssistantArt 3>><</if>>
+<<if $seeImages == 1>><<= AssistantArtRendered(3)>><</if>>
 
 <<switch $Event>>
 <<case "assistant">>
diff --git a/src/uncategorized/personalAssistantOptions.tw b/src/uncategorized/personalAssistantOptions.tw
index 51d1502d6b9..6c64aecee43 100644
--- a/src/uncategorized/personalAssistantOptions.tw
+++ b/src/uncategorized/personalAssistantOptions.tw
@@ -5,7 +5,7 @@
 
 <<if $marketAssistantLimit>><<set $marketAssistantLimit to Math.clamp($marketAssistantLimit, 10000, 10000000)>><</if>>
 
-<<if $seeImages == 1>><<AssistantArt 3>><</if>>
+<<if $seeImages == 1>><<= AssistantArtRendered(3)>><</if>>
 
 Seated at your desk, you glance at the visual representation of $assistantName, down in one corner of your desk's glass top.
 
-- 
GitLab