diff --git a/src/interaction/main/walkPast.js b/src/interaction/main/walkPast.js
index 46cef660ef0b7c185624cbd9e9b3814fde8e24d3..5aa7a52da3742bcc50ebf34728a80d596ae7579c 100644
--- a/src/interaction/main/walkPast.js
+++ b/src/interaction/main/walkPast.js
@@ -6,6 +6,7 @@ globalThis.walkPast = (function() {
 
 	// selection variables
 	let target;
+	let partner;
 
 	// rng variables
 	let seed;
@@ -32,31 +33,30 @@ globalThis.walkPast = (function() {
 		let flag;
 		if (totalRelatives(activeSlave) > 0 && ((fixedTarget === "FRelation") || (!fixedTarget && jsRandom(1, 100) > 80))) {
 			flag = 110;
-			V.partner = "relation";
+			partner = "relation";
 		} else if (activeSlave.relationship > 0 && ((fixedTarget === "FRelation") || (!fixedTarget && jsRandom(1, 100) > 70))) {
 			flag = 120;
-			V.partner = "relationship";
+			partner = "relationship";
 		} else if (activeSlave.rivalry !== 0 && hasAllLimbs(activeSlave) && ((fixedTarget === "FRival") || (!fixedTarget && jsRandom(1, 100) > 70))) {
 			flag = 130;
-			V.partner = "rivalry";
+			partner = "rivalry";
 		} else {
 			flag = 99;
-			V.partner = "";
+			partner = "";
 		}
 
 		// return if we insist on a relation or rival but we didn't find one above
-		if (["FRelation", "FRival"].includes(fixedTarget) && !(V.partner)) {
+		if (["FRelation", "FRival"].includes(fixedTarget) && !partner) {
 			return;
 		}
 
-		App.Utils.setLocalPronouns(activeSlave); // Needed for the few places that still call widgets instead of functions, such as <<faceDescription>>
 		output += primeSlave(activeSlave, seed);
 
-		if (V.partner === "rivalry") {
+		if (partner === "rivalry") {
 			output += rivalSlave(activeSlave, seed);
-		} else if (V.partner === "relationship" && App.Utils.hasPartnerSex(activeSlave)) {
+		} else if (partner === "relationship" && App.Utils.hasPartnerSex(activeSlave)) {
 			output += loverSlave(activeSlave);
-		} else if (V.partner === "relationship" || V.partner === "relation") {
+		} else if (partner === "relationship" || partner === "relation") {
 			output += relatedSlave(activeSlave);
 		} else {
 			switch (fixedTarget) {
@@ -137,7 +137,7 @@ globalThis.walkPast = (function() {
 					V.partner = partner;
 					V.relation = relation; // TODO: remove these once FRelation/FRival don't need them anymore
 					executeWalkpast(target);
-				}, [V.partner, flag === 110 ? V.relation : null, target]));
+				}, [partner, flag === 110 ? partnerSlave.ID : null, target]));
 			} else if (activeSlave.assignment === Job.CONFINEMENT) {
 				links.push(App.UI.DOM.link(`Have ${him} brought out of ${his} cell`, executeWalkpast, target));
 			} else if (activeSlave.assignment === Job.DAIRY && V.dairyRestraintsSetting > 1) {
@@ -177,7 +177,7 @@ globalThis.walkPast = (function() {
 	function primeSlave(activeSlave, seed) {
 		r = "";
 
-		if (V.partner !== "relationship" || !App.Utils.hasPartnerSex(activeSlave)) {
+		if (partner !== "relationship" || !App.Utils.hasPartnerSex(activeSlave)) {
 			r += `${activeSlave.slaveName} `;
 			r += walkPasts(activeSlave, seed);
 			t = "";
@@ -1413,16 +1413,15 @@ globalThis.walkPast = (function() {
 			He, His
 		} = getPronouns(activeSlave);
 
-		if (V.partner === "relation") {
+		if (partner === "relation") {
 			partnerSlave = randomRelatedSlave(activeSlave);
-			V.relation = partnerSlave.ID;
 		} else {
 			partnerSlave = getSlave(activeSlave.relationshipTarget);
 		}
 
 		if (partnerSlave !== undefined) { /* potential problem point */
 			r += ` ${His} `;
-			if (V.partner === "relation") {
+			if (partner === "relation") {
 				r += `${relativeTerm(activeSlave, partnerSlave)} `;
 			} else {
 				r += `${relationshipTerm(activeSlave)} `;