From afdeac769eb9702b1b425832d161f958248afbf1 Mon Sep 17 00:00:00 2001
From: Svornost <11434-svornost@users.noreply.gitgud.io>
Date: Sun, 23 May 2021 15:07:09 -0700
Subject: [PATCH] Inline fucktoy/bodyguard interaction scenes and remove
 passages.

---
 src/005-passages/interactPassages.js | 41 --------------------
 src/js/main.js                       | 57 ++++++++++++----------------
 2 files changed, 24 insertions(+), 74 deletions(-)

diff --git a/src/005-passages/interactPassages.js b/src/005-passages/interactPassages.js
index cc3673cb1a6..bab037625e4 100644
--- a/src/005-passages/interactPassages.js
+++ b/src/005-passages/interactPassages.js
@@ -161,47 +161,6 @@ new App.DomPassage("Aztec Slave Sacrifice Life",
 	}
 );
 
-new App.DomPassage("fLips",
-	() => {
-		return App.Interact.fLips(getSlave(V.AS));
-	}
-);
-
-new App.DomPassage("fBoobs",
-	() => {
-		return App.Interact.fBoobs(getSlave(V.AS));
-	}
-);
-
-new App.DomPassage("fVagina",
-	() => {
-		return App.Interact.fVagina(getSlave(V.AS));
-	}
-);
-
-new App.DomPassage("fRival",
-	() => {
-		return App.Interact.fRival(getSlave(V.AS));
-	}
-);
-new App.DomPassage("fButt",
-	() => {
-		return App.Interact.fButt(getSlave(V.AS));
-	}
-);
-
-new App.DomPassage("fDick",
-	() => {
-		return App.Interact.fDick(getSlave(V.AS));
-	}
-);
-
-new App.DomPassage("fAnus",
-	() => {
-		return App.Interact.fAnus(getSlave(V.AS));
-	}
-);
-
 new App.DomPassage("Abort",
 	() => {
 		V.nextButton = "Back";
diff --git a/src/js/main.js b/src/js/main.js
index accb599874e..66b976f0875 100644
--- a/src/js/main.js
+++ b/src/js/main.js
@@ -3,14 +3,6 @@
  * @returns {HTMLDivElement}
  */
 App.MainView.useFucktoy = function(slave) {
-	const fragment = document.createDocumentFragment();
-
-	function setEnvironment() {
-		V.AS = slave.ID;
-		V.nextButton = "Back";
-		V.nextLink = passage();
-	}
-
 	const {him, his} = getPronouns(slave);
 
 	const div = document.createElement("div");
@@ -29,37 +21,38 @@ App.MainView.useFucktoy = function(slave) {
 	if (slave.fuckdoll === 0) {
 		div.append(", but for now:");
 
+		const showScene = (passage, ...args) => $(linkDiv).empty().append(App.Interact[passage](slave, ...args));
+
 		const linkArray = [];
 
 		linkArray.push(
-			App.UI.DOM.passageLink(`Use ${his} mouth`, "fLips", setEnvironment),
-			App.UI.DOM.passageLink("Play with " + his + " tits", "fBoobs", setEnvironment)
+			App.UI.DOM.link(`Use ${his} mouth`, showScene, ["fLips"]),
+			App.UI.DOM.link(`Play with ${his} tits`, showScene, ["fBoobs"])
 		);
 
 		if (canDoVaginal(slave)) {
-			linkArray.push(App.UI.DOM.passageLink(`Fuck ${him}`, "fVagina", setEnvironment));
+			linkArray.push(App.UI.DOM.link(`Fuck ${him}`, showScene, ["fVagina"]));
 			if (canDoAnal(slave)) {
-				linkArray.push(App.UI.DOM.passageLink(`Use ${his} holes`, "fButt", setEnvironment));
+				linkArray.push(App.UI.DOM.link(`Use ${his} holes`, showScene, ["fButt"]));
 			}
 		}
 		if (canDoAnal(slave)) {
-			linkArray.push(App.UI.DOM.passageLink(`Fuck ${his} ass`, "fAnus", setEnvironment));
+			linkArray.push(App.UI.DOM.link(`Fuck ${his} ass`, showScene, ["fAnus"]));
 		}
 		if (canDoVaginal(slave) || canDoAnal(slave)) {
 			if (slave.belly >= 300000) {
-				linkArray.push(App.UI.DOM.passageLink(`Fuck ${him} over ${his} belly`, "fBellyFuck", setEnvironment));
+				linkArray.push(App.UI.DOM.link(`Fuck ${him} over ${his} belly`, showScene, ["fBellyFuck"]));
 			}
 		}
 		if (canPenetrate(slave)) {
-			linkArray.push(App.UI.DOM.passageLink(`Ride ${him}`, "fDick", setEnvironment));
+			linkArray.push(App.UI.DOM.link(`Ride ${him}`, showScene, ["fDick"]));
 		}
-		linkArray.push(App.UI.DOM.passageLink(`Abuse ${him}`, "fAbuse", setEnvironment));
+		linkArray.push(App.UI.DOM.link(`Abuse ${him}`, showScene, ["fAbuse"]));
 
-		App.UI.DOM.appendNewElement("div", div, App.UI.DOM.generateLinksStrip(linkArray), "indent");
+		const linkDiv = App.UI.DOM.appendNewElement("div", div, App.UI.DOM.generateLinksStrip(linkArray), "indent");
 	} else {
 		div.append(".");
 	}
-	fragment.append(div);
 
 	return div;
 };
@@ -78,38 +71,36 @@ App.MainView.useGuard = function() {
 
 	App.UI.DOM.appendNewElement("span", outerDiv, App.Interact.guardPose(guard), "scene-intro");
 
-	function setEnvironment() {
-		V.AS = guard.ID;
-		V.nextButton = "Back";
-		V.nextLink = passage();
-	}
+	const showScene = (passage, ...args) => $(linkDiv).empty().append(App.Interact[passage](guard, ...args));
 
 	const {him, his} = getPronouns(guard);
 	const linkArray = [];
 
 	linkArray.push(
-		App.UI.DOM.passageLink(`Use ${his} mouth`, "fLips", setEnvironment),
-		App.UI.DOM.passageLink(`Play with ${his} tits`, "fBoobs", setEnvironment)
+		App.UI.DOM.link(`Use ${his} mouth`, showScene, ["fLips"]),
+		App.UI.DOM.link(`Play with ${his} tits`, showScene, ["fBoobs"])
 	);
 
 	if (canDoVaginal(guard)) {
-		linkArray.push(App.UI.DOM.passageLink(`Fuck ${him}`, "fVagina", setEnvironment));
+		linkArray.push(App.UI.DOM.link(`Fuck ${him}`, showScene, ["fVagina"]));
 		if (canDoAnal(guard)) {
-			linkArray.push(App.UI.DOM.passageLink(`Use ${his} holes`, "fButt", setEnvironment));
+			linkArray.push(App.UI.DOM.link(`Use ${his} holes`, showScene, ["fButt"]));
 		}
+	}
+	if (canDoAnal(guard)) {
+		linkArray.push(App.UI.DOM.link(`Fuck ${his} ass`, showScene, ["fAnus"]));
+	}
+	if (canDoVaginal(guard) || canDoAnal(guard)) {
 		if (guard.belly >= 300000) {
-			linkArray.push(App.UI.DOM.passageLink(`Fuck ${him} over ${his} belly`, "fBellyFuck", setEnvironment));
+			linkArray.push(App.UI.DOM.link(`Fuck ${him} over ${his} belly`, showScene, ["fBellyFuck"]));
 		}
 	}
 
 	if (canPenetrate(guard)) {
-		linkArray.push(App.UI.DOM.passageLink(`Ride ${him}`, "fDick", setEnvironment));
-	}
-	if (canDoAnal(guard)) {
-		linkArray.push(App.UI.DOM.passageLink(`Fuck ${his} ass`, "fAnus", setEnvironment));
+		linkArray.push(App.UI.DOM.link(`Ride ${him}`, showScene, ["fDick"]));
 	}
 	linkArray.push(App.UI.DOM.passageLink(`Abuse ${him}`, "Gameover", () => { V.gameover = "idiot ball"; }));
-	App.UI.DOM.appendNewElement("div", outerDiv, App.UI.DOM.generateLinksStrip(linkArray), "indent");
+	const linkDiv = App.UI.DOM.appendNewElement("div", outerDiv, App.UI.DOM.generateLinksStrip(linkArray), "indent");
 
 	return outerDiv;
 };
-- 
GitLab