From 158d716fb657cb22fc7f4739186c5cf1e11a5019 Mon Sep 17 00:00:00 2001
From: lowercasedonkey <lowercasedonkey@gmail.com>
Date: Sun, 27 Sep 2020 19:29:23 -0400
Subject: [PATCH] move more activeSlave to AS

---
 src/Mods/DinnerParty/dinnerPartyExecution.tw  |   2 +-
 src/Mods/SpecialForce/TrickShotNight.tw       |   2 +-
 .../brothel/brothelAssignmentScene.tw         |   2 +-
 src/interaction/main/walkPast.js              |   2 +-
 src/js/main.js                                |  10 +-
 src/npc/acquisition.tw                        |   4 +-
 src/npc/exportSlave.tw                        |   2 +-
 src/npc/interaction/FFuckdollAnal.tw          |   3 +-
 src/npc/interaction/FFuckdollImpreg.tw        |   3 +-
 src/npc/interaction/FFuckdollOral.tw          |   3 +-
 src/npc/interaction/FFuckdollVaginal.tw       |   3 +-
 src/npc/interaction/FSuckle.tw                |   5 +-
 src/npc/interaction/fAbuse.tw                 |   3 +-
 src/npc/interaction/fAnus.tw                  |   3 +-
 src/npc/interaction/fAssistedSex.tw           |   3 +-
 src/npc/interaction/fBeg.tw                   |   8 +-
 src/npc/interaction/fBellyFuck.tw             |   3 +-
 src/npc/interaction/fBoobs.tw                 |   3 +-
 src/npc/interaction/fButt.tw                  |   3 +-
 src/npc/interaction/fCaress.tw                |   3 +-
 src/npc/interaction/fDance.tw                 |   3 +-
 src/npc/interaction/fDick.tw                  |   3 +-
 src/npc/interaction/fEmbrace.tw               |   5 +-
 src/npc/interaction/fFeelings.tw              |   4 +-
 src/npc/interaction/fFeet.tw                  |   3 +-
 src/npc/interaction/fKiss.tw                  |   3 +-
 src/npc/interaction/fLickPussy.tw             |   3 +-
 src/npc/interaction/fLips.tw                  |   3 +-
 src/npc/interaction/fMaternitySwing.tw        |   3 +-
 src/npc/interaction/fNippleFuck.tw            |   5 +-
 src/npc/interaction/fPCImpreg.tw              |   3 +-
 src/npc/interaction/fPat.tw                   |   5 +-
 src/npc/interaction/fPoolSex.tw               |   3 +-
 src/npc/interaction/fRelation.tw              |   6 +-
 src/npc/interaction/fRival.tw                 | 153 +++++++++++++-----
 src/npc/interaction/fSlaveFeed.tw             |   3 +-
 src/npc/interaction/fSlaveImpregConsummate.tw |   3 +-
 src/npc/interaction/fSlaveSelfImpreg.tw       |   3 +-
 .../interaction/fSlaveSlaveVagConsummate.tw   |   3 +-
 src/npc/interaction/fVagina.tw                |   3 +-
 src/npc/interaction/fillUpButt.tw             |   3 +-
 src/npc/interaction/fillUpFace.tw             |   3 +-
 src/npc/interaction/fondleBoobs.tw            |   3 +-
 src/npc/interaction/fondleButt.tw             |   3 +-
 src/npc/interaction/fondleDick.tw             |   3 +-
 src/npc/interaction/fondleVagina.tw           |   3 +-
 src/npc/interaction/forceFeeding.tw           |   3 +-
 src/npc/interaction/passage/fAnimalImpreg.tw  |   7 +-
 src/npc/interaction/passage/fMarry.tw         |   3 +-
 src/npc/interaction/passage/fSlaveImpreg.tw   |   1 -
 .../passage/fSlaveSlaveDickConsummate.tw      |   3 +-
 src/npc/interaction/passage/matchmaking.tw    |   1 -
 src/npc/slaveStats.tw                         |   2 +-
 src/npc/startingGirls/startingGirls.tw        |   2 +-
 src/personalAssistant/assistantEvents.tw      |   2 +-
 .../JobFulfillmentCenterDelivery.tw           |   2 +-
 src/pregmod/beastFuck.tw                      |   2 +-
 src/pregmod/beastFucked.tw                    |   2 +-
 src/pregmod/newChildIntro.tw                  |   2 +-
 src/pregmod/reLegendaryWomb.tw                |   2 +-
 src/pregmod/rePregInventor.tw                 |   2 +-
 src/uncategorized/PESS.tw                     |   2 +-
 src/uncategorized/PETS.tw                     |   2 +-
 src/uncategorized/REFI.tw                     |   2 +-
 src/uncategorized/REFS.tw                     |   2 +-
 src/uncategorized/RESS.tw                     |   2 +-
 src/uncategorized/RETS.tw                     |   2 +-
 src/uncategorized/arcadeReport.tw             |   2 +-
 .../freeRangeDairyAssignmentScene.tw          |   2 +-
 src/uncategorized/genericPlotEvents.tw        |  10 +-
 .../industrialDairyAssignmentScene.tw         |   2 +-
 src/uncategorized/jeSlaveDispute.tw           |   2 +-
 src/uncategorized/officeDescription.tw        |   4 +-
 src/uncategorized/pHostageAcquisition.tw      |   2 +-
 src/uncategorized/pRivalInitiation.tw         |   2 +-
 src/uncategorized/pRivalryHostage.tw          |   2 +-
 src/uncategorized/pSlaveMedic.tw              |   2 +-
 src/uncategorized/pUndergroundRailroad.tw     |   2 +-
 src/uncategorized/peCombatTraining.tw         |   2 +-
 src/uncategorized/peConcubineInterview.tw     |   2 +-
 src/uncategorized/peLonelyBodyguard.tw        |   2 +-
 src/uncategorized/pePitFight.tw               |   2 +-
 src/uncategorized/personalAttentionSelect.tw  |   2 +-
 src/uncategorized/reAWOL.tw                   |   2 +-
 src/uncategorized/reAnalPunishment.tw         |   2 +-
 src/uncategorized/reBoomerang.tw              |   2 +-
 src/uncategorized/reBusyArcade.tw             |   2 +-
 src/uncategorized/reFSAcquisition.tw          |   2 +-
 src/uncategorized/reFormerAbolitionist.tw     |   2 +-
 src/uncategorized/reHGReplacement.tw          |   2 +-
 src/uncategorized/reLegendaryBalls.tw         |   2 +-
 src/uncategorized/reLegendaryCow.tw           |   2 +-
 src/uncategorized/reLegendaryEntertainer.tw   |   2 +-
 src/uncategorized/reLegendaryWhore.tw         |   2 +-
 src/uncategorized/reMalefactor.tw             |   2 +-
 src/uncategorized/reNickname.tw               |   2 +-
 src/uncategorized/reNoEvent.tw                |   2 +-
 src/uncategorized/rePokerNight.tw             |   2 +-
 src/uncategorized/reRecruit.tw                |   2 +-
 src/uncategorized/reRelationshipAdvice.tw     |   2 +-
 src/uncategorized/reShowerPunishment.tw       |   2 +-
 src/uncategorized/reStandardPunishment.tw     |   2 +-
 src/uncategorized/resFailure.tw               |   2 +-
 src/uncategorized/resSale.tw                  |   2 +-
 src/uncategorized/seExpiration.tw             |   2 +-
 src/uncategorized/seRaiding.tw                |   2 +-
 src/uncategorized/seRaidingAssault.tw         |   2 +-
 src/uncategorized/seRecruiterSuccess.tw       |   2 +-
 src/uncategorized/subordinateTargeting.tw     |   2 +-
 109 files changed, 236 insertions(+), 214 deletions(-)

diff --git a/src/Mods/DinnerParty/dinnerPartyExecution.tw b/src/Mods/DinnerParty/dinnerPartyExecution.tw
index a1c9d6b4cc8..00de09aa3a7 100644
--- a/src/Mods/DinnerParty/dinnerPartyExecution.tw
+++ b/src/Mods/DinnerParty/dinnerPartyExecution.tw
@@ -22,7 +22,7 @@
 	<</if>>
 	/* 000-250-006 */
 
-	<<setLocalPronouns $activeSlave>>
+	<<run App.Utils.setLocalPronouns($activeSlave)>>
 
 	/%Event description%/
 	$activeSlave.slaveName is carried out by four slaves on a huge platter and placed on the dining table.
diff --git a/src/Mods/SpecialForce/TrickShotNight.tw b/src/Mods/SpecialForce/TrickShotNight.tw
index 8b46e074d64..841d72f93fc 100644
--- a/src/Mods/SpecialForce/TrickShotNight.tw
+++ b/src/Mods/SpecialForce/TrickShotNight.tw
@@ -100,7 +100,7 @@ Despite your direct elevator, interaction with the majority of your security for
 						<<set $activeSlave.hLength = 1>>
 						<<set $activeSlave.hStyle = "buzzcut">>
 						<<set $activeSlave.clothes = "a military uniform">>
-						<<setLocalPronouns $activeSlave>>
+						<<run App.Utils.setLocalPronouns($activeSlave)>>
 						<span id="art-frame">
 						/* 000-250-006 */
 						<<if $seeImages == 1>>
diff --git a/src/facilities/brothel/brothelAssignmentScene.tw b/src/facilities/brothel/brothelAssignmentScene.tw
index e465beb4f74..1fdd0768e31 100644
--- a/src/facilities/brothel/brothelAssignmentScene.tw
+++ b/src/facilities/brothel/brothelAssignmentScene.tw
@@ -2,7 +2,7 @@
 
 <<set $nextButton = "Continue", $nextLink = $returnTo>>
 <<run Enunciate($activeSlave)>>
-<<setLocalPronouns $activeSlave>>
+<<run App.Utils.setLocalPronouns($activeSlave)>>
 
 <span id="art-frame">
 	/* 000-250-006 */
diff --git a/src/interaction/main/walkPast.js b/src/interaction/main/walkPast.js
index 53da677da63..e4e00b9f4dc 100644
--- a/src/interaction/main/walkPast.js
+++ b/src/interaction/main/walkPast.js
@@ -109,7 +109,7 @@ globalThis.walkPast = (function() {
 
 		let links = [];
 		const executeWalkpast = (passage) => {
-			V.activeSlave = activeSlave; // TODO: remove me once all the F* passages don't need activeSlave anymore
+			V.AS = activeSlave.ID; // TODO: remove me once all the F* passages don't need activeSlave anymore
 			$(`#walkpast-${activeSlave.ID}`).empty().append(App.UI.DOM.renderPassage(passage));
 		};
 		if (activeSlave.fuckdoll === 0) {
diff --git a/src/js/main.js b/src/js/main.js
index af842e9b7c0..c5c79eaa41e 100644
--- a/src/js/main.js
+++ b/src/js/main.js
@@ -100,10 +100,9 @@ App.MainView.useFucktoy = function(slave) {
 	const fragment = document.createDocumentFragment();
 
 	function setEnvironment() {
-		V.activeSlave = slave;
+		V.AS = slave.ID;
 		V.nextButton = "Back";
-		V.nextLink = "AS Dump";
-		V.returnTo = passage();
+		V.nextLink = passage();
 	}
 
 	const {him, his} = getPronouns(slave);
@@ -173,10 +172,9 @@ App.MainView.useGuard = function() {
 	App.UI.DOM.appendNewElement("span", outerDiv, App.Interact.guardPose(guard), "scene-intro");
 
 	function setEnvironment() {
-		V.activeSlave = guard;
+		V.AS = guard.ID;
 		V.nextButton = "Back";
-		V.nextLink = "AS Dump";
-		V.returnTo = passage();
+		V.nextLink = passage();
 	}
 
 	const {him, his} = getPronouns(guard);
diff --git a/src/npc/acquisition.tw b/src/npc/acquisition.tw
index 1d47a144b18..fabaf5aec58 100644
--- a/src/npc/acquisition.tw
+++ b/src/npc/acquisition.tw
@@ -713,7 +713,7 @@ The previous owner seems to have left in something of a hurry.
 		<</if>>
 		<<run newSlave($activeSlave)>>
 	<</for>>
-	<<setLocalPronouns $activeSlave>>
+	<<run App.Utils.setLocalPronouns($activeSlave)>>
 	<<switch $targetArcology.fs>>
 	<<case "Supremacist">>
 		They kept a personal stable of fearful $arcologies[0].FSSupremacistRace sex slaves, but their sexual training is incomplete. Several of them are still here.
@@ -792,7 +792,7 @@ The previous owner seems to have left in something of a hurry.
 			<<set $activeSlave.health.tired = 0>>
 			<<set _valueGiven += _slaveCost>>
 			<<run newSlave($activeSlave)>>
-			<<setLocalPronouns $activeSlave>>
+			<<run App.Utils.setLocalPronouns($activeSlave)>>
 			<<if $activeSlave.fetish == "mindbroken">>
 				$activeSlave.slaveName is, sadly, not mentally competent, and is wandering through the penthouse at the moment.
 			<<elseif isAmputee($activeSlave)>>
diff --git a/src/npc/exportSlave.tw b/src/npc/exportSlave.tw
index ec71866dcd8..eca49ed8bd8 100644
--- a/src/npc/exportSlave.tw
+++ b/src/npc/exportSlave.tw
@@ -1,6 +1,6 @@
 :: Export Slave [nobr]
 
-<<set $nextButton = "Continue", $nextLink = "Slave Interact", $AS = $activeSLave.ID>>
+<<set $nextButton = "Continue", $nextLink = "Slave Interact">>
 
 //Copy the following block of code for importing//
 
diff --git a/src/npc/interaction/FFuckdollAnal.tw b/src/npc/interaction/FFuckdollAnal.tw
index f06e4b2967a..cc24e223d71 100644
--- a/src/npc/interaction/FFuckdollAnal.tw
+++ b/src/npc/interaction/FFuckdollAnal.tw
@@ -1,7 +1,6 @@
 :: FFuckdollAnal [nobr no-history]
 
-<<set $AS = $activeSlave.ID>>
-<<setLocalPronouns $activeSlave>>
+<<run App.Utils.setLocalPronouns(getSlave($AS))>>
 
 <<set getSlave($AS).counter.anal++, $analTotal++>>
 You decide to use the Fuckdoll's <<if getSlave($AS).anus > 3>>gaping<<elseif getSlave($AS).anus == 3>>loose<<elseif getSlave($AS).anus == 2>>relaxed<<elseif getSlave($AS).anus == 1>>tight<</if>> rear hole.
diff --git a/src/npc/interaction/FFuckdollImpreg.tw b/src/npc/interaction/FFuckdollImpreg.tw
index 64745f102e4..6eed066fe64 100644
--- a/src/npc/interaction/FFuckdollImpreg.tw
+++ b/src/npc/interaction/FFuckdollImpreg.tw
@@ -1,7 +1,6 @@
 :: FFuckdollImpreg [nobr no-history]
 
-<<set $AS = $activeSlave.ID>>
-<<setLocalPronouns $activeSlave>>
+<<run App.Utils.setLocalPronouns(getSlave($AS))>>
 <<set _bonus = random(6,20)>>
 
 <<if getSlave($AS).mpreg == 1>>
diff --git a/src/npc/interaction/FFuckdollOral.tw b/src/npc/interaction/FFuckdollOral.tw
index b1f425c1a1d..20ca393f4fc 100644
--- a/src/npc/interaction/FFuckdollOral.tw
+++ b/src/npc/interaction/FFuckdollOral.tw
@@ -1,7 +1,6 @@
 :: FFuckdollOral [nobr no-history]
 
-<<set $AS = $activeSlave.ID>>
-<<setLocalPronouns $activeSlave>>
+<<run App.Utils.setLocalPronouns(getSlave($AS))>>
 
 <<set getSlave($AS).counter.oral++, $oralTotal++>>
 You decide to use the Fuckdoll's <<if getSlave($AS).lips > 95>>facepussy<<else>>face hole<</if>>.
diff --git a/src/npc/interaction/FFuckdollVaginal.tw b/src/npc/interaction/FFuckdollVaginal.tw
index 1daa848d979..22836db27c7 100644
--- a/src/npc/interaction/FFuckdollVaginal.tw
+++ b/src/npc/interaction/FFuckdollVaginal.tw
@@ -1,7 +1,6 @@
 :: FFuckdollVaginal [nobr no-history]
 
-<<set $AS = $activeSlave.ID>>
-<<setLocalPronouns $activeSlave>>
+<<run App.Utils.setLocalPronouns(getSlave($AS))>>
 
 <<set getSlave($AS).counter.vaginal++, $vaginalTotal++>>
 You decide to use the Fuckdoll's <<if getSlave($AS).vagina > 3>>cavernous<<elseif getSlave($AS).vagina == 3>>soft<<elseif getSlave($AS).vagina == 2>>inviting<<elseif getSlave($AS).vagina == 1>>tight<</if>> front hole.
diff --git a/src/npc/interaction/FSuckle.tw b/src/npc/interaction/FSuckle.tw
index 03e72a2ba0e..47c6550c822 100644
--- a/src/npc/interaction/FSuckle.tw
+++ b/src/npc/interaction/FSuckle.tw
@@ -1,8 +1,7 @@
 :: FSuckle [nobr no-history]
 
-<<set $AS = $activeSlave.ID>>
-<<run Enunciate($activeSlave)>>
-<<setLocalPronouns $activeSlave>>
+<<run Enunciate(getSlave($AS))>>
+<<run App.Utils.setLocalPronouns(getSlave($AS))>>
 
 <<set getSlave($AS).counter.mammary++>>
 <<set $mammaryTotal++>>
diff --git a/src/npc/interaction/fAbuse.tw b/src/npc/interaction/fAbuse.tw
index 2b729b74e0e..5cb7471b4fc 100644
--- a/src/npc/interaction/fAbuse.tw
+++ b/src/npc/interaction/fAbuse.tw
@@ -1,7 +1,6 @@
 :: FAbuse [nobr no-history]
 
-<<set $AS = $activeSlave.ID>>
-<<setLocalPronouns $activeSlave>>
+<<run App.Utils.setLocalPronouns($activeSlave)>>
 
 <<if (getSlave($AS).ID == $BodyguardID)>>
 	<<if (getSlave($AS).fetish == "masochist") && (getSlave($AS).fetishKnown == 1) && (getSlave($AS).fetishStrength > 95)>>
diff --git a/src/npc/interaction/fAnus.tw b/src/npc/interaction/fAnus.tw
index 96c3755421d..424a4ad360e 100644
--- a/src/npc/interaction/fAnus.tw
+++ b/src/npc/interaction/fAnus.tw
@@ -1,7 +1,6 @@
 :: FAnus [nobr no-history]
 
-<<set $AS = $activeSlave.ID>>
-<<setLocalPronouns $activeSlave>>
+<<run App.Utils.setLocalPronouns($activeSlave)>>
 <<set getSlave($AS).counter.anal++, $analTotal++>>
 
 You call $him over so you can
diff --git a/src/npc/interaction/fAssistedSex.tw b/src/npc/interaction/fAssistedSex.tw
index ab58e753bc4..a30024940b0 100644
--- a/src/npc/interaction/fAssistedSex.tw
+++ b/src/npc/interaction/fAssistedSex.tw
@@ -1,7 +1,6 @@
 :: FAssistedSex [nobr no-history]
 
-<<set $AS = $activeSlave.ID>>
-<<setLocalPronouns $activeSlave>>
+<<run App.Utils.setLocalPronouns(getSlave($AS))>>
 
 You order $his servants forward so that $he can tease you with $his enormously swollen body.
 <<if getSlave($AS).devotion > 95>>
diff --git a/src/npc/interaction/fBeg.tw b/src/npc/interaction/fBeg.tw
index 2c257cebba0..6ffe453d8cf 100644
--- a/src/npc/interaction/fBeg.tw
+++ b/src/npc/interaction/fBeg.tw
@@ -3,11 +3,11 @@
 /* things I need: checks for canWalk() to see how easily she can move, blindness checks, replacement for BoobsDesc, maybe devotion catches for certain flaws */
 /* priority! femPC support! */
 
-<<set $AS = $activeSlave.ID>>
 <<setPlayerPronouns>>
-<<setLocalPronouns $activeSlave>>
-<<run Enunciate($activeSlave)>>
-<<setSpokenLocalPronouns $activeSlave $activeSlave>>
+<<run App.Utils.setLocalPronouns(getSlave($AS))>>
+<<run Enunciate(getSlave($AS))>>
+<<set _temp = getSlave($AS)>>
+<<setSpokenLocalPronouns _temp _temp>>
 
 You call $him over to you for inspection.
 <<print App.Desc.boobs(getSlave($AS))>> /* this part needs expansion */
diff --git a/src/npc/interaction/fBellyFuck.tw b/src/npc/interaction/fBellyFuck.tw
index 526ea543125..8e101255f79 100644
--- a/src/npc/interaction/fBellyFuck.tw
+++ b/src/npc/interaction/fBellyFuck.tw
@@ -1,7 +1,6 @@
 :: FBellyFuck [nobr no-history]
 
-<<set $AS = $activeSlave.ID>>
-<<setLocalPronouns $activeSlave>>
+<<run App.Utils.setLocalPronouns($activeSlave)>>
 
 You have $him brought to you so that you can fuck $his hyperpregnant body.
 <<if tooBigBelly(getSlave($AS))>>
diff --git a/src/npc/interaction/fBoobs.tw b/src/npc/interaction/fBoobs.tw
index d3f40d00c25..373bd98bac2 100644
--- a/src/npc/interaction/fBoobs.tw
+++ b/src/npc/interaction/fBoobs.tw
@@ -1,7 +1,6 @@
 :: FBoobs [nobr no-history]
 
-<<set $AS = $activeSlave.ID>>
-<<setLocalPronouns $activeSlave>>
+<<run App.Utils.setLocalPronouns($activeSlave)>>
 <<set getSlave($AS).counter.mammary++, $mammaryTotal++>>
 
 You call $him over so you can play with $his
diff --git a/src/npc/interaction/fButt.tw b/src/npc/interaction/fButt.tw
index 47b108a6ea9..91063afc10d 100644
--- a/src/npc/interaction/fButt.tw
+++ b/src/npc/interaction/fButt.tw
@@ -1,7 +1,6 @@
 :: FButt [nobr no-history]
 
-<<set $AS = $activeSlave.ID>>
-<<setLocalPronouns $activeSlave>>
+<<run App.Utils.setLocalPronouns(getSlave($AS))>>
 
 You call $him over so you can
 <<if !canDoVaginal(getSlave($AS))>>
diff --git a/src/npc/interaction/fCaress.tw b/src/npc/interaction/fCaress.tw
index 125fffbe2bc..27da29bfb74 100644
--- a/src/npc/interaction/fCaress.tw
+++ b/src/npc/interaction/fCaress.tw
@@ -1,8 +1,7 @@
 :: FCaress [nobr no-history]
 
 <<setPlayerPronouns>>
-<<set $AS = $activeSlave.ID>>
-<<setLocalPronouns $activeSlave>>
+<<run App.Utils.setLocalPronouns(getSlave($AS))>>
 
 You tell <<= getSlave($AS).slaveName>> to
 <<if !hasAnyLegs(getSlave($AS))>>
diff --git a/src/npc/interaction/fDance.tw b/src/npc/interaction/fDance.tw
index 7cbca6bd5cd..42e952c2aa2 100644
--- a/src/npc/interaction/fDance.tw
+++ b/src/npc/interaction/fDance.tw
@@ -1,7 +1,6 @@
 :: FDance [nobr no-history]
 
-<<set $AS = $activeSlave.ID>>
-<<setLocalPronouns $activeSlave>>
+<<run App.Utils.setLocalPronouns(getSlave($AS))>>
 <<setPlayerPronouns>>
 
 You tell $assistant.name to summon <<= getSlave($AS).slaveName>> and set some erotic music. When your slave arrives, $he finds the lights in your office flashing club colors. You gesture towards the platform in the center of your office and tell $him to dance for you.
diff --git a/src/npc/interaction/fDick.tw b/src/npc/interaction/fDick.tw
index d9743cc0a36..5da6ec580e5 100644
--- a/src/npc/interaction/fDick.tw
+++ b/src/npc/interaction/fDick.tw
@@ -1,8 +1,7 @@
 :: FDick [nobr no-history]
 /* TODO: .pregMood and more amp variants */
 
-<<set $AS = $activeSlave.ID>>
-<<setLocalPronouns $activeSlave>>
+<<run App.Utils.setLocalPronouns(getSlave($AS))>>
 
 <<set _belly = bellyAdjective(getSlave($AS))>>
 /*CHECK*/
diff --git a/src/npc/interaction/fEmbrace.tw b/src/npc/interaction/fEmbrace.tw
index b7a98a617c9..d5a0fe65f13 100644
--- a/src/npc/interaction/fEmbrace.tw
+++ b/src/npc/interaction/fEmbrace.tw
@@ -1,9 +1,8 @@
 :: FEmbrace [nobr no-history]
 
 <<setPlayerPronouns>>
-<<set $AS = $activeSlave.ID>>
-<<run Enunciate($activeSlave)>>
-<<setLocalPronouns $activeSlave>>
+<<run Enunciate(getSlave($AS))>>
+<<run App.Utils.setLocalPronouns(getSlave($AS)e)>>
 
 You tell <<= getSlave($AS).slaveName>> to
 <<if (hasAnyLegs(getSlave($AS)))>>
diff --git a/src/npc/interaction/fFeelings.tw b/src/npc/interaction/fFeelings.tw
index 2dd8439aca7..e21ab8e427e 100644
--- a/src/npc/interaction/fFeelings.tw
+++ b/src/npc/interaction/fFeelings.tw
@@ -1,14 +1,12 @@
 :: FFeelings [nobr no-history]
 
-<<set $AS = $activeSlave.ID>>
-
 /* Slaves are expected to be either able to talk or to sign when entering this passage. */
 <<if !canTalk(getSlave($AS)) && !hasAnyArms(getSlave($AS))>>
 	<<= getSlave($AS).slaveName>> is unable to communicate and thus this place should have been unreachable. Please report this.
 <</if>>
 
 <<run Enunciate($activeSlave)>>
-<<setLocalPronouns $activeSlave>>
+<<run App.Utils.setLocalPronouns($activeSlave)>>
 <<set _lisping = 0>>
 <<if canTalk(getSlave($AS)) && SlaveStatsChecker.checkForLisp(getSlave($AS))>>
 	<<set _lisping = 1>>
diff --git a/src/npc/interaction/fFeet.tw b/src/npc/interaction/fFeet.tw
index cfe3d5d539e..5af88b2d4d6 100644
--- a/src/npc/interaction/fFeet.tw
+++ b/src/npc/interaction/fFeet.tw
@@ -1,7 +1,6 @@
 :: FFeet [nobr no-history]
 
-<<set $AS = $activeSlave.ID>>
-<<setLocalPronouns $activeSlave>>
+<<run App.Utils.setLocalPronouns(getSlave($AS))>>
 
 <<set _footSeed = random(1,100)>>
 
diff --git a/src/npc/interaction/fKiss.tw b/src/npc/interaction/fKiss.tw
index e64f26b34e7..d58c6643497 100644
--- a/src/npc/interaction/fKiss.tw
+++ b/src/npc/interaction/fKiss.tw
@@ -1,7 +1,6 @@
 :: FKiss [nobr no-history]
 
-<<set $AS = $activeSlave.ID>>
-<<setLocalPronouns $activeSlave>>
+<<run App.Utils.setLocalPronouns(getSlave($AS))>>
 <<setPlayerPronouns>>
 
 You tell <<= getSlave($AS).slaveName>> to
diff --git a/src/npc/interaction/fLickPussy.tw b/src/npc/interaction/fLickPussy.tw
index 9ee44b4427e..53a00363cd4 100644
--- a/src/npc/interaction/fLickPussy.tw
+++ b/src/npc/interaction/fLickPussy.tw
@@ -1,7 +1,6 @@
 :: FLickPussy [nobr no-history]
 
-<<set $AS = $activeSlave.ID>>
-<<setLocalPronouns $activeSlave>>
+<<run App.Utils.setLocalPronouns(getSlave($AS))>>
 <<setPlayerPronouns>>
 
 <<set _devotion = getSlave($AS).devotion>> /*for brevity*/
diff --git a/src/npc/interaction/fLips.tw b/src/npc/interaction/fLips.tw
index 36b55dd9ecc..3a6dd8f36fa 100644
--- a/src/npc/interaction/fLips.tw
+++ b/src/npc/interaction/fLips.tw
@@ -1,7 +1,6 @@
 :: FLips [nobr no-history]
 
-<<set $AS = $activeSlave.ID>>
-<<setLocalPronouns $activeSlave>>
+<<run App.Utils.setLocalPronouns(getSlave($AS))>>
 <<set getSlave($AS).counter.oral++, $oralTotal++>>
 
 You tell <<= getSlave($AS).slaveName>> to
diff --git a/src/npc/interaction/fMaternitySwing.tw b/src/npc/interaction/fMaternitySwing.tw
index 602e1b3390b..171ae2d1abf 100644
--- a/src/npc/interaction/fMaternitySwing.tw
+++ b/src/npc/interaction/fMaternitySwing.tw
@@ -1,7 +1,6 @@
 :: FMaternitySwing [nobr no-history]
 
-<<set $AS = $activeSlave.ID>>
-<<setLocalPronouns $activeSlave>>
+<<run App.Utils.setLocalPronouns(getSlave($AS))>>
 
 You call $him over and hook $him into the reinforced silk maternity swing built into your office, then lift $him into the air so that you can toy with $his hyperfecund body. Once you have $him properly situated with $his
 <<if getSlave($AS).boobs >= 20000>>
diff --git a/src/npc/interaction/fNippleFuck.tw b/src/npc/interaction/fNippleFuck.tw
index 33b2065de50..32f3f4a92f1 100644
--- a/src/npc/interaction/fNippleFuck.tw
+++ b/src/npc/interaction/fNippleFuck.tw
@@ -1,8 +1,7 @@
 :: FNippleFuck [nobr no-history]
 
-<<set $AS = $activeSlave.ID>>
-<<run Enunciate($activeSlave)>>
-<<setLocalPronouns $activeSlave>>
+<<run Enunciate(getSlave($AS))>>
+<<run App.Utils.setLocalPronouns(getSlave($AS))>>
 
 <<set getSlave($AS).counter.mammary += 2>>
 <<set $mammaryTotal += 2>>
diff --git a/src/npc/interaction/fPCImpreg.tw b/src/npc/interaction/fPCImpreg.tw
index 574cc125ad2..dc1ca14ff11 100644
--- a/src/npc/interaction/fPCImpreg.tw
+++ b/src/npc/interaction/fPCImpreg.tw
@@ -2,8 +2,7 @@
 
 /* TODO: add reactions for incest */
 
-<<set $AS = $activeSlave.ID>>
-<<setLocalPronouns $activeSlave>>
+<<run App.Utils.setLocalPronouns(getSlave($AS))>>
 <<set _bonus = random(6,20)>>
 <<set _belly = bellyAdjective(getSlave($AS))>>
 <<set _superfetation = (getSlave($AS).geneticQuirks.superfetation == 2 && getSlave($AS).pregKnown == 1) ? 1 : 0>>
diff --git a/src/npc/interaction/fPat.tw b/src/npc/interaction/fPat.tw
index 2cd1b22d723..20baa39edec 100644
--- a/src/npc/interaction/fPat.tw
+++ b/src/npc/interaction/fPat.tw
@@ -1,8 +1,7 @@
 :: FPat [nobr no-history]
 
-<<set $AS = $activeSlave.ID>>
-<<run Enunciate($activeSlave)>>
-<<setLocalPronouns $activeSlave>>
+<<run Enunciate(getSlave($AS))>>
+<<run App.Utils.setLocalPronouns(getSlave($AS))>>
 <<setPlayerPronouns>>
 
 You tell <<= getSlave($AS).slaveName>> to
diff --git a/src/npc/interaction/fPoolSex.tw b/src/npc/interaction/fPoolSex.tw
index b60aab513a8..fa113d61637 100644
--- a/src/npc/interaction/fPoolSex.tw
+++ b/src/npc/interaction/fPoolSex.tw
@@ -1,7 +1,6 @@
 :: FPoolSex [nobr no-history]
 
-<<set $AS = $activeSlave.ID>>
-<<setLocalPronouns $activeSlave>>
+<<run App.Utils.setLocalPronouns(getSlave($AS))>>
 
 You order $him to meet you in the spa for some quality time in the penthouse's rejuvenating gelatin pool. When you get there, $he's already in $his bathing attire, reclined at the side of the pool farthest from you with $his massive <<= getSlave($AS).skin>> stomach hanging over the edge and half sunk in the thick, steaming ooze, flushed and sweaty.
 <<if getSlave($AS).devotion > 95>>
diff --git a/src/npc/interaction/fRelation.tw b/src/npc/interaction/fRelation.tw
index fec587ad63d..f237d21f0fe 100644
--- a/src/npc/interaction/fRelation.tw
+++ b/src/npc/interaction/fRelation.tw
@@ -1,7 +1,5 @@
 :: FRelation [nobr no-history]
 
-<<set $AS = $activeSlave.ID>>
-
 <<if ($partner == "mother")>>
 	<<set $partner = $slaveIndices[getSlave($AS).mother]>>
 	<<set _activeSlaveRel = relativeTerm($slaves[$partner], getSlave($AS)), _partnerRel = relativeTerm(getSlave($AS), $slaves[$partner])>>
@@ -32,8 +30,8 @@
 		<<set _activeSlaveRel = "slave wife", _partnerRel = "slave wife">>
 	<</switch>>
 <</if>>
-<<run Enunciate($activeSlave)>>
-<<setLocalPronouns $activeSlave>>
+<<run Enunciate(getSlave($AS))>>
+<<run App.Utils.setLocalPronouns(getSlave($AS))>>
 
 <<setLocalPronouns $slaves[$partner] 2>>
 
diff --git a/src/npc/interaction/fRival.tw b/src/npc/interaction/fRival.tw
index 19ea7feae34..ee15778f27a 100644
--- a/src/npc/interaction/fRival.tw
+++ b/src/npc/interaction/fRival.tw
@@ -1,54 +1,123 @@
 :: FRival [nobr no-history]
 
-<<set $AS = $activeSlave.ID>>
-<<set $partner = $slaveIndices[$activeSlave.rivalryTarget]>>
-<<setLocalPronouns $activeSlave>>
-<<setLocalPronouns $slaves[$partner] 2>>
+<<set _partnerID = getSlave($AS).rivalryTarget>>
+<<run App.Utils.setLocalPronouns($activeSlave)>>
+<<setLocalPronouns getSlave(_partnerID) 2>>
 
-You call <<= getSlave($AS).slaveName>> to your office and let $him know you'll be abusing $slaves[$partner].slaveName together.
+You call <<= getSlave($AS).slaveName>> to your office and let $him know you'll be abusing <<= getSlave(_partnerID).slaveName>> together.
 
 <<if (getSlave($AS).fetish == "sadist") && (getSlave($AS).fetishStrength > 60) && (getSlave($AS).fetishKnown == 1)>>
 	$He looks overjoyed at the prospect of getting to hurt someone.
 <</if>>
 
-$slaves[$partner].slaveName <<if canSee($slaves[$partner])>>sees<<else>>senses<</if>> <<= getSlave($AS).slaveName>> as _he2 enters and looks worried.
+<<= getSlave(_partnerID).slaveName>> <<if canSee(getSlave(_partnerID))>>sees<<else>>senses<</if>> <<= getSlave($AS).slaveName>> as _he2 enters and looks worried.
 
-<<if ($slaves[$partner].anus == 0) && ($slaves[$partner].vagina < 0)>>
-	Since _he2's a sissy bitch and an anal virgin, you tell _him2 to bend over and <<if ($PC.dick == 0)>>give you head<<else>>suck your dick<</if>>. _He2 does, and once _he2's working away, you tell <<= getSlave($AS).slaveName>> to come over and start spanking. $slaves[$partner].slaveName begins to lift _his2 head as though to protest, so you shove _him2 back down onto your <<if ($PC.dick == 0)>>pussy<<else>>cock<</if>>, gagging and struggling. <<= getSlave($AS).slaveName>> administers a series of cruel slaps to the quivering <<if $seeRace == 1>>$slaves[$partner].race <</if>>buttocks in front of $him, making your victim yell delightfully into your <<if ($PC.dick == 0)>>womanhood<<else>>member<</if>>. After a short time <<= getSlave($AS).slaveName>> decides to be even crueler, and begins to 'miss' frequently, hitting $slaves[$partner].slaveName's limp dick instead of _his2 ass.
-	<<set $slaves[$partner].counter.oral++, $oralTotal++>>
-<<elseif ($slaves[$partner].anus == 0) && ($slaves[$partner].vagina == 0) && (hasAnyArms(getSlave($AS)))>>
-	Since _he2's a virgin, you tell _him2 to bend over and <<if ($PC.dick == 0)>>give you head<<else>>suck your dick<</if>>. _He2 does, and once _he2's working away, you tell <<= getSlave($AS).slaveName>> to come over and start spanking. $slaves[$partner].slaveName begins to lift _his2 head as though to protest, so you shove _him2 back down onto your <<if ($PC.dick == 0)>>pussy<<else>>cock<</if>>, gagging and struggling. <<= getSlave($AS).slaveName>> administers a series of cruel slaps to the quivering <<if $seeRace == 1>>$slaves[$partner].race <</if>>buttocks in front of $him, making your victim yell delightfully into your <<if ($PC.dick == 0)>>womanhood<<else>>member<</if>>. After a short time <<= getSlave($AS).slaveName>> decides to be even crueler, and begins to 'miss' frequently, hitting $slaves[$partner].slaveName's poor pussy instead of _his2 ass.
-	<<set $slaves[$partner].counter.oral++, $oralTotal++>>
-<<elseif ($slaves[$partner].anus == 0) && ($slaves[$partner].vagina > 0) && canPenetrate(getSlave($AS)) && (hasAnyArms(getSlave($AS)))>>
-	You tell _him2 to bend over and <<if ($PC.dick == 0)>>give you head<<else>>suck your dick<</if>>. _He2 does, and once _he2's working away, you tell <<= getSlave($AS).slaveName>> to use the bitch. $slaves[$partner].slaveName begins to lift _his2 head as though to protest, so you shove _him2 back down onto your <<if ($PC.dick == 0)>>pussy<<else>>cock<</if>>, gagging and struggling. <<= getSlave($AS).slaveName>> lands a slap on the <<if $seeRace == 1>>$slaves[$partner].race <</if>>butt in front of $him as $he lines $his turgid dick up with $slaves[$partner].slaveName's pussy. $He sinks in with a sigh and begins to enjoy $himself, using slaps and pinches to ensure that of the two slaves, the fun is entirely on $his side.
-	<<set $slaves[$partner].counter.vaginal++, $slaves[$partner].counter.oral++, getSlave($AS).counter.penetrative++, $vaginalTotal++, $oralTotal++, $penetrativeTotal++>>
-<<elseif ($slaves[$partner].anus == 0) && ($slaves[$partner].vagina > 0) && (getSlave($AS).dick > 0)>>
-	You <<if ($PC.dick == 0)>>step into a strap-on and tell _him2 to ride it<<else>>tell _him2 to ride your dick<</if>>, facing away from you. _He2 does, not without trepidation, which increases when you hold _him2 securely in place. Once _he2's humping away, you tell <<= getSlave($AS).slaveName>> to use _his2 face. <<= getSlave($AS).slaveName>> comes over slowly, unsure what to do with the offer since $his dick is so useless. $He forces $slaves[$partner].slaveName's face against $his useless member anyway. After a bit of this, <<= getSlave($AS).slaveName>>, clearly unsatisfied, turns around and rides $slaves[$partner].slaveName with $his ass instead. $slaves[$partner].slaveName tries to avoid orally servicing _his2 rival's asshole, but you hold _him2 in place and <<= getSlave($AS).slaveName>> sighs in contentment.
-	<<set $slaves[$partner].counter.oral++, $slaves[$partner].counter.vaginal++, getSlave($AS).counter.oral++, $vaginalTotal++, $oralTotal += 2>>
-<<elseif ($slaves[$partner].anus == 0) && ($slaves[$partner].vagina > 0)>>
-	You <<if ($PC.dick == 0)>>step into a strap-on and tell _him2 to ride it<<else>>tell _him2 to ride your dick<</if>>, facing away from you. $He does, not without trepidation, which increases when you hold $him securely in place. Once _he2's humping away, you tell <<= getSlave($AS).slaveName>> to ride _his2 face. <<= getSlave($AS).slaveName>> comes over, gently rubbing $his pussy. $He forces $slaves[$partner].slaveName's face against $his slick cunt, ignoring _his2 reluctance. $slaves[$partner].slaveName eventually realizes that _he2's better off getting it over with, and applies _his2 tongue as best _he2 can.
-	<<set $slaves[$partner].counter.oral++, $slaves[$partner].counter.vaginal++, getSlave($AS).counter.oral++, $vaginalTotal++, $oralTotal += 2>>
-<<elseif ($slaves[$partner].anus > 0) && ($slaves[$partner].vagina < 0) && canPenetrate(getSlave($AS))>>
-	You <<if ($PC.dick == 0)>>step into a strap-on and tell _him2 to ride it<<else>>tell _him2 to ride your dick<</if>>, facing you. _He2 lowers _his2 butthole down onto your cock, not without trepidation, which increases when you reach behind _him2 and spread _his2 buttocks as wide as they'll go. With _him2 pinned, you tell <<= getSlave($AS).slaveName>> to come over and join you. <<= getSlave($AS).slaveName>> comes over, stroking $himself hard, not certain what you mean. To make it clear, you hook a single finger up into poor $slaves[$partner].slaveName's rectum alongside <<if ($PC.dick == 0)>>the fake phallus<<else>>your dick<</if>>. It takes <<= getSlave($AS).slaveName>> a while to jam $his cock up the struggling and sobbing $slaves[$partner].slaveName's anus. Of the three phalli present, $slaves[$partner].slaveName's is the only one that's soft as _he2 cries _his2 way through a brutal double anal rape.
-	<<set $slaves[$partner].counter.anal++, getSlave($AS).counter.penetrative++, $analTotal++, $penetrativeTotal++>>
-<<elseif ($slaves[$partner].anus > 0) && ($slaves[$partner].vagina == 0) && canPenetrate(getSlave($AS))>>
-	You <<if ($PC.dick == 0)>>step into a strap-on and tell _him2 to ride it<<else>>tell _him2 to ride your dick<</if>> anally, facing you. _He2 lowers _his2 butthole down onto your cock, not without trepidation, which increases when you reach behind _him2 and spread _his2 buttocks as wide as they'll go. With _him2 pinned, you tell <<= getSlave($AS).slaveName>> to come over and join you. <<= getSlave($AS).slaveName>> comes over, stroking $himself hard, not certain what you mean. To make it clear, you hook a single finger up into poor $slaves[$partner].slaveName's rectum alongside <<if ($PC.dick == 0)>>the fake phallus<<else>>your dick<</if>>. It takes <<= getSlave($AS).slaveName>> a while to jam $his cock up the struggling and sobbing $slaves[$partner].slaveName's anus. $slaves[$partner].slaveName buys continued vaginal virginity by taking a brutal double anal rape.
-	<<set $slaves[$partner].counter.anal++, getSlave($AS).counter.penetrative++, $analTotal++, $penetrativeTotal++>>
-<<elseif ($slaves[$partner].anus > 0) && ($slaves[$partner].vagina < 1) && (getSlave($AS).dick > 0)>>
-	You <<if ($PC.dick == 0)>>step into a strap-on and tell _him2 to ride it<<else>>tell _him2 to ride your dick<</if>> anally, facing away from you. _He2 does, not without trepidation, which increases when you hold _him2 securely in place as you pump yourself in and out of _his2 asshole. You tell <<= getSlave($AS).slaveName>> to ride _his2 face. <<= getSlave($AS).slaveName>> comes over slowly, unsure what to do with the offer since $his dick is so useless. $He forces $slaves[$partner].slaveName's face against $his useless member anyway. After a bit of this, <<= getSlave($AS).slaveName>>, clearly unsatisfied, turns around and rides $slaves[$partner].slaveName with $his ass instead. $slaves[$partner].slaveName tries to avoid orally servicing _his2 rival's asshole, but you hold _him2 in place and <<= getSlave($AS).slaveName>> sighs in contentment.
-	<<set $slaves[$partner].counter.anal++, $slaves[$partner].counter.oral++, getSlave($AS).counter.oral++, $analTotal++, $oralTotal += 2>>
-<<elseif ($slaves[$partner].anus > 0) && ($slaves[$partner].vagina < 1)>>
-	You <<if ($PC.dick == 0)>>step into a strap-on and tell _him2 to ride it<<else>>tell _him2 to ride your dick<</if>> anally, facing away from you. _He2 does, not without trepidation, which increases when you hold _him2 securely in place as you pump yourself in and out of _his2 asshole. You tell <<= getSlave($AS).slaveName>> to ride _his2 face. <<= getSlave($AS).slaveName>> comes over, gently rubbing $his pussy. $He forces $slaves[$partner].slaveName's face against $his slick cunt, ignoring _his2 reluctance. $slaves[$partner].slaveName eventually realizes that _he2's better off getting it over with, and applies _his2 tongue as best _he2 can.
-	<<set $slaves[$partner].counter.oral++, $slaves[$partner].counter.anal++, getSlave($AS).counter.oral++, $analTotal++, $oralTotal += 2>>
-<<elseif ($slaves[$partner].anus > 0) && ($slaves[$partner].vagina > 0) && canPenetrate(getSlave($AS))>>
-	You <<if ($PC.dick == 0)>>step into a strap-on and tell _him2 to ride it<<else>>tell _him2 to ride your dick<</if>>, facing you. _He2 does, with some trepidation, which increases when you reach behind _him2 and spread _his2 buttocks as wide as they'll go. With _him2 pinned, you tell <<= getSlave($AS).slaveName>> to come over and join you. <<= getSlave($AS).slaveName>> comes over, stroking $himself hard. You squeeze $slaves[$partner].slaveName's buttocks together and then spread them again, forcing _his2 anus to wink invitingly. You stop $slaves[$partner].slaveName's abortive humping and hold _his2 hips in place while <<= getSlave($AS).slaveName>> gets $his cock up $his ass. Once $he's set, off the two of you go, with poor $slaves[$partner].slaveName gasping and grimacing as _he2 gets it rough in both holes.
-	<<set $slaves[$partner].counter.vaginal++, $slaves[$partner].counter.anal++, getSlave($AS).counter.penetrative++, $vaginalTotal++, $analTotal++, $penetrativeTotal++>>
-<<elseif ($slaves[$partner].anus > 0) && ($slaves[$partner].vagina > 0) && (getSlave($AS).dick > 0) && (hasAnyArms(getSlave($AS)))>>
-	You <<if ($PC.dick == 0)>>step into a strap-on and tell _him2 to ride it<<else>>tell _him2 to ride your dick<</if>>, facing you. _He2 does, with some trepidation, which increases when you reach behind _him2 and spread _his2 buttocks as wide as they'll go. With _him2 pinned, you tell <<= getSlave($AS).slaveName>> to come over and join you. <<= getSlave($AS).slaveName>> comes over, stroking $himself hard, not certain what you mean, since $his cock is useless. To make it clear, you push two fingers into $slaves[$partner].slaveName's butt, finger fucking _his2 asshole until <<= getSlave($AS).slaveName>> takes over. Once $he's set, off the two of you go, with poor $slaves[$partner].slaveName gasping and grimacing as _he2 gets it rough in both holes. <<= getSlave($AS).slaveName>> uses as many fingers as $he can, always at least one more than $slaves[$partner].slaveName would like.
-	<<set $slaves[$partner].counter.vaginal++, $slaves[$partner].counter.anal++, getSlave($AS).counter.penetrative++, $vaginalTotal++, $analTotal++, $penetrativeTotal++>>
-<<elseif ($slaves[$partner].anus > 0) && ($slaves[$partner].vagina > 0)>>
-	You <<if ($PC.dick == 0)>>step into a strap-on and tell _him2 to ride it<<else>>tell _him2 to ride your dick<</if>>, facing you. _He2 does, with some trepidation, which increases when you reach behind _him2 and spread _his2 buttocks as wide as they'll go. With _him2 pinned, you tell <<= getSlave($AS).slaveName>> to come over and join you, indicating a strap-on for slave use, on a side shelf. <<= getSlave($AS).slaveName>> hurries into it and comes over. You stop $slaves[$partner].slaveName's abortive humping and hold _his2 hips in place while <<= getSlave($AS).slaveName>> gets $his fake cock up _his2 ass. Once $he's set, off the two of you go, with poor $slaves[$partner].slaveName gasping and grimacing as _he2 gets it rough in both holes. <<= getSlave($AS).slaveName>> murmurs calumnies in $slaves[$partner].slaveName's ear, pinches _his2 nipples, and generally adds humiliation above and beyond being double penetrated by _his2 owner and _his2 rival.
-	<<set $slaves[$partner].counter.vaginal++, $slaves[$partner].counter.anal++, getSlave($AS).counter.penetrative++, $vaginalTotal++, $analTotal++, $penetrativeTotal++>>
+<<if (getSlave(_partnerID).anus == 0) && (getSlave(_partnerID).vagina < 0)>>
+	Since _he2's a sissy bitch and an anal virgin, you tell _him2 to bend over and
+	<<if ($PC.dick == 0)>>
+		give you head.
+	<<else>>
+		suck your dick.
+	<</if>>
+	_He2 does, and once _he2's working away, you tell <<= getSlave($AS).slaveName>> to come over and start spanking. <<= getSlave(_partnerID).slaveName>> begins to lift _his2 head as though to protest, so you shove _him2 back down onto your
+	<<if ($PC.dick == 0)>>
+		pussy,
+	<<else>>
+		cock,
+	<</if>>gagging and struggling. <<= getSlave($AS).slaveName>> administers a series of cruel slaps to the quivering
+	<<if $seeRace == 1>>
+		<<= getSlave(_partnerID).race>>
+	<</if>>
+	buttocks in front of $him, making your victim yell delightfully into your
+	<<if ($PC.dick == 0)>>
+		womanhood.
+	<<else>>
+		member.
+	<</if>>
+	After a short time <<= getSlave($AS).slaveName>> decides to be even crueler, and begins to 'miss' frequently, hitting <<= getSlave(_partnerID).slaveName>>'s limp dick instead of _his2 ass.
+	<<set getSlave(_partnerID).counter.oral++, $oralTotal++>>
+<<elseif (getSlave(_partnerID).anus == 0) && (getSlave(_partnerID).vagina == 0) && (hasAnyArms(getSlave($AS)))>>
+	Since _he2's a virgin, you tell _him2 to bend over and
+	<<if ($PC.dick == 0)>>
+		give you head.
+	<<else>>
+		suck your dick.
+	<</if>>
+	_He2 does, and once _he2's working away, you tell <<= getSlave($AS).slaveName>> to come over and start spanking. <<= getSlave(_partnerID).slaveName>> begins to lift _his2 head as though to protest, so you shove _him2 back down onto your
+	<<if ($PC.dick == 0)>>
+		pussy,
+	<<else>>
+		cock,
+	<</if>>
+	gagging and struggling. <<= getSlave($AS).slaveName>> administers a series of cruel slaps to the quivering
+	<<if $seeRace == 1>>
+		<<= getSlave(_partnerID).race>>
+	<</if>>
+	buttocks in front of $him, making your victim yell delightfully into your
+	<<if ($PC.dick == 0)>>
+		womanhood.
+	<<else>>
+		member.
+	<</if>>
+	After a short time <<= getSlave($AS).slaveName>> decides to be even crueler, and begins to 'miss' frequently, hitting <<= getSlave(_partnerID).slaveName>>'s poor pussy instead of _his2 ass.
+	<<set getSlave(_partnerID).counter.oral++, $oralTotal++>>
+<<elseif (getSlave(_partnerID).anus == 0) && (getSlave(_partnerID).vagina > 0) && canPenetrate(getSlave($AS)) && (hasAnyArms(getSlave($AS)))>>
+	You tell _him2 to bend over and
+	<<if ($PC.dick == 0)>>
+		give you head.
+	<<else>>
+		suck your dick.
+	<</if>>
+	_He2 does, and once _he2's working away, you tell <<= getSlave($AS).slaveName>> to use the bitch. <<= getSlave(_partnerID).slaveName>> begins to lift _his2 head as though to protest, so you shove _him2 back down onto your 
+	<<if ($PC.dick == 0)>>
+		pussy,
+	<<else>>
+		cock,
+	<</if>>gagging and struggling. <<= getSlave($AS).slaveName>> lands a slap on the
+	<<if $seeRace == 1>>
+		getSlave(_partnerID).race
+	<</if>>
+	butt in front of $him as $he lines $his turgid dick up with <<= getSlave(_partnerID).slaveName>>'s pussy. $He sinks in with a sigh and begins to enjoy $himself, using slaps and pinches to ensure that of the two slaves, the fun is entirely on $his side.
+	<<set getSlave(_partnerID).counter.vaginal++, getSlave(_partnerID).counter.oral++, getSlave($AS).counter.penetrative++, $vaginalTotal++, $oralTotal++, $penetrativeTotal++>>
+<<elseif (getSlave(_partnerID).anus == 0) && (getSlave(_partnerID).vagina > 0) && (getSlave($AS).dick > 0)>>
+	You
+	<<if ($PC.dick == 0)>>
+		step into a strap-on and tell _him2 to ride it,
+	<<else>>
+		tell _him2 to ride your dick,
+	<</if>>
+	facing away from you. _He2 does, not without trepidation, which increases when you hold _him2 securely in place. Once _he2's humping away, you tell <<= getSlave($AS).slaveName>> to use _his2 face. <<= getSlave($AS).slaveName>> comes over slowly, unsure what to do with the offer since $his dick is so useless. $He forces <<= getSlave(_partnerID).slaveName>>'s face against $his useless member anyway. After a bit of this, <<= getSlave($AS).slaveName>>, clearly unsatisfied, turns around and rides <<= getSlave(_partnerID).slaveName>> with $his ass instead. <<= getSlave(_partnerID).slaveName>> tries to avoid orally servicing _his2 rival's asshole, but you hold _him2 in place and <<= getSlave($AS).slaveName>> sighs in contentment.
+	<<set getSlave(_partnerID).counter.oral++, getSlave(_partnerID).counter.vaginal++, getSlave($AS).counter.oral++, $vaginalTotal++, $oralTotal += 2>>
+<<elseif (getSlave(_partnerID).anus == 0) && (getSlave(_partnerID).vagina > 0)>>
+	You
+	<<if ($PC.dick == 0)>>
+		step into a strap-on and tell _him2 to ride it,
+	<<else>>
+		tell _him2 to ride your dick,
+	<</if>>
+	facing away from you. $He does, not without trepidation, which increases when you hold $him securely in place. Once _he2's humping away, you tell <<= getSlave($AS).slaveName>> to ride _his2 face. <<= getSlave($AS).slaveName>> comes over, gently rubbing $his pussy. $He forces <<= getSlave(_partnerID).slaveName>>'s face against $his slick cunt, ignoring _his2 reluctance. <<= getSlave(_partnerID).slaveName>> eventually realizes that _he2's better off getting it over with, and applies _his2 tongue as best _he2 can.
+	<<set getSlave(_partnerID).counter.oral++, getSlave(_partnerID).counter.vaginal++, getSlave($AS).counter.oral++, $vaginalTotal++, $oralTotal += 2>>
+<<elseif (getSlave(_partnerID).anus > 0) && (getSlave(_partnerID).vagina < 0) && canPenetrate(getSlave($AS))>>
+	You <<if ($PC.dick == 0)>>step into a strap-on and tell _him2 to ride it<<else>>tell _him2 to ride your dick<</if>>, facing you. _He2 lowers _his2 butthole down onto your cock, not without trepidation, which increases when you reach behind _him2 and spread _his2 buttocks as wide as they'll go. With _him2 pinned, you tell <<= getSlave($AS).slaveName>> to come over and join you. <<= getSlave($AS).slaveName>> comes over, stroking $himself hard, not certain what you mean. To make it clear, you hook a single finger up into poor <<= getSlave(_partnerID).slaveName>>'s rectum alongside <<if ($PC.dick == 0)>>the fake phallus<<else>>your dick<</if>>. It takes <<= getSlave($AS).slaveName>> a while to jam $his cock up the struggling and sobbing <<= getSlave(_partnerID).slaveName>>'s anus. Of the three phalli present, <<= getSlave(_partnerID).slaveName>>'s is the only one that's soft as _he2 cries _his2 way through a brutal double anal rape.
+	<<set getSlave(_partnerID).counter.anal++, getSlave($AS).counter.penetrative++, $analTotal++, $penetrativeTotal++>>
+<<elseif (getSlave(_partnerID).anus > 0) && (getSlave(_partnerID).vagina == 0) && canPenetrate(getSlave($AS))>>
+	You <<if ($PC.dick == 0)>>step into a strap-on and tell _him2 to ride it<<else>>tell _him2 to ride your dick<</if>> anally, facing you. _He2 lowers _his2 butthole down onto your cock, not without trepidation, which increases when you reach behind _him2 and spread _his2 buttocks as wide as they'll go. With _him2 pinned, you tell <<= getSlave($AS).slaveName>> to come over and join you. <<= getSlave($AS).slaveName>> comes over, stroking $himself hard, not certain what you mean. To make it clear, you hook a single finger up into poor <<= getSlave(_partnerID).slaveName>>'s rectum alongside <<if ($PC.dick == 0)>>the fake phallus<<else>>your dick<</if>>. It takes <<= getSlave($AS).slaveName>> a while to jam $his cock up the struggling and sobbing <<= getSlave(_partnerID).slaveName>>'s anus. <<= getSlave(_partnerID).slaveName>> buys continued vaginal virginity by taking a brutal double anal rape.
+	<<set getSlave(_partnerID).counter.anal++, getSlave($AS).counter.penetrative++, $analTotal++, $penetrativeTotal++>>
+<<elseif (getSlave(_partnerID).anus > 0) && (getSlave(_partnerID).vagina < 1) && (getSlave($AS).dick > 0)>>
+	You <<if ($PC.dick == 0)>>step into a strap-on and tell _him2 to ride it<<else>>tell _him2 to ride your dick<</if>> anally, facing away from you. _He2 does, not without trepidation, which increases when you hold _him2 securely in place as you pump yourself in and out of _his2 asshole. You tell <<= getSlave($AS).slaveName>> to ride _his2 face. <<= getSlave($AS).slaveName>> comes over slowly, unsure what to do with the offer since $his dick is so useless. $He forces <<= getSlave(_partnerID).slaveName>>'s face against $his useless member anyway. After a bit of this, <<= getSlave($AS).slaveName>>, clearly unsatisfied, turns around and rides <<= getSlave(_partnerID).slaveName>> with $his ass instead. <<= getSlave(_partnerID).slaveName>> tries to avoid orally servicing _his2 rival's asshole, but you hold _him2 in place and <<= getSlave($AS).slaveName>> sighs in contentment.
+	<<set getSlave(_partnerID).counter.anal++, getSlave(_partnerID).counter.oral++, getSlave($AS).counter.oral++, $analTotal++, $oralTotal += 2>>
+<<elseif (getSlave(_partnerID).anus > 0) && (getSlave(_partnerID).vagina < 1)>>
+	You <<if ($PC.dick == 0)>>step into a strap-on and tell _him2 to ride it<<else>>tell _him2 to ride your dick<</if>> anally, facing away from you. _He2 does, not without trepidation, which increases when you hold _him2 securely in place as you pump yourself in and out of _his2 asshole. You tell <<= getSlave($AS).slaveName>> to ride _his2 face. <<= getSlave($AS).slaveName>> comes over, gently rubbing $his pussy. $He forces <<= getSlave(_partnerID).slaveName>>'s face against $his slick cunt, ignoring _his2 reluctance. <<= getSlave(_partnerID).slaveName>> eventually realizes that _he2's better off getting it over with, and applies _his2 tongue as best _he2 can.
+	<<set getSlave(_partnerID).counter.oral++, getSlave(_partnerID).counter.anal++, getSlave($AS).counter.oral++, $analTotal++, $oralTotal += 2>>
+<<elseif (getSlave(_partnerID).anus > 0) && (getSlave(_partnerID).vagina > 0) && canPenetrate(getSlave($AS))>>
+	You <<if ($PC.dick == 0)>>step into a strap-on and tell _him2 to ride it<<else>>tell _him2 to ride your dick<</if>>, facing you. _He2 does, with some trepidation, which increases when you reach behind _him2 and spread _his2 buttocks as wide as they'll go. With _him2 pinned, you tell <<= getSlave($AS).slaveName>> to come over and join you. <<= getSlave($AS).slaveName>> comes over, stroking $himself hard. You squeeze <<= getSlave(_partnerID).slaveName>>'s buttocks together and then spread them again, forcing _his2 anus to wink invitingly. You stop <<= getSlave(_partnerID).slaveName>>'s abortive humping and hold _his2 hips in place while <<= getSlave($AS).slaveName>> gets $his cock up $his ass. Once $he's set, off the two of you go, with poor <<= getSlave(_partnerID).slaveName>> gasping and grimacing as _he2 gets it rough in both holes.
+	<<set getSlave(_partnerID).counter.vaginal++, getSlave(_partnerID).counter.anal++, getSlave($AS).counter.penetrative++, $vaginalTotal++, $analTotal++, $penetrativeTotal++>>
+<<elseif (getSlave(_partnerID).anus > 0) && (getSlave(_partnerID).vagina > 0) && (getSlave($AS).dick > 0) && (hasAnyArms(getSlave($AS)))>>
+	You <<if ($PC.dick == 0)>>step into a strap-on and tell _him2 to ride it<<else>>tell _him2 to ride your dick<</if>>, facing you. _He2 does, with some trepidation, which increases when you reach behind _him2 and spread _his2 buttocks as wide as they'll go. With _him2 pinned, you tell <<= getSlave($AS).slaveName>> to come over and join you. <<= getSlave($AS).slaveName>> comes over, stroking $himself hard, not certain what you mean, since $his cock is useless. To make it clear, you push two fingers into <<= getSlave(_partnerID).slaveName>>'s butt, finger fucking _his2 asshole until <<= getSlave($AS).slaveName>> takes over. Once $he's set, off the two of you go, with poor <<= getSlave(_partnerID).slaveName>> gasping and grimacing as _he2 gets it rough in both holes. <<= getSlave($AS).slaveName>> uses as many fingers as $he can, always at least one more than <<= getSlave(_partnerID).slaveName>> would like.
+	<<set getSlave(_partnerID).counter.vaginal++, getSlave(_partnerID).counter.anal++, getSlave($AS).counter.penetrative++, $vaginalTotal++, $analTotal++, $penetrativeTotal++>>
+<<elseif (getSlave(_partnerID).anus > 0) && (getSlave(_partnerID).vagina > 0)>>
+	You <<if ($PC.dick == 0)>>step into a strap-on and tell _him2 to ride it<<else>>tell _him2 to ride your dick<</if>>, facing you. _He2 does, with some trepidation, which increases when you reach behind _him2 and spread _his2 buttocks as wide as they'll go. With _him2 pinned, you tell <<= getSlave($AS).slaveName>> to come over and join you, indicating a strap-on for slave use, on a side shelf. <<= getSlave($AS).slaveName>> hurries into it and comes over. You stop <<= getSlave(_partnerID).slaveName>>'s abortive humping and hold _his2 hips in place while <<= getSlave($AS).slaveName>> gets $his fake cock up _his2 ass. Once $he's set, off the two of you go, with poor <<= getSlave(_partnerID).slaveName>> gasping and grimacing as _he2 gets it rough in both holes. <<= getSlave($AS).slaveName>> murmurs calumnies in <<= getSlave(_partnerID).slaveName>>'s ear, pinches _his2 nipples, and generally adds humiliation above and beyond being double penetrated by _his2 owner and _his2 rival.
+	<<set getSlave(_partnerID).counter.vaginal++, getSlave(_partnerID).counter.anal++, getSlave($AS).counter.penetrative++, $vaginalTotal++, $analTotal++, $penetrativeTotal++>>
 <<else>>
 	Unforeseen combination of rival stats; yell at FC Dev to write a scene for these slaves.
 <</if>>
diff --git a/src/npc/interaction/fSlaveFeed.tw b/src/npc/interaction/fSlaveFeed.tw
index 541a18147ed..adbb312613d 100644
--- a/src/npc/interaction/fSlaveFeed.tw
+++ b/src/npc/interaction/fSlaveFeed.tw
@@ -1,8 +1,7 @@
 :: FSlaveFeed [nobr no-history]
 
 <<set _pregDiscovery = 0>>
-<<set $AS = $activeSlave.ID>>
-<<setLocalPronouns $activeSlave>>
+<<run App.Utils.setLocalPronouns(getSlave($AS))>>
 <<setLocalPronouns $milkTap 2>>
 
 <span id="art-frame">
diff --git a/src/npc/interaction/fSlaveImpregConsummate.tw b/src/npc/interaction/fSlaveImpregConsummate.tw
index e0f8ab562d3..33fc5baa07c 100644
--- a/src/npc/interaction/fSlaveImpregConsummate.tw
+++ b/src/npc/interaction/fSlaveImpregConsummate.tw
@@ -1,8 +1,7 @@
 :: FSlaveImpreg Consummate [nobr no-history]
 
 The first necessary step is to prepare the donatrix.
-<<set $AS = $activeSlave.ID>>
-<<setLocalPronouns $activeSlave>>
+<<run App.Utils.setLocalPronouns(getSlave($AS))>>
 <<set _belly = bellyAdjective(getSlave($AS))>>
 <<set _superfetation = (getSlave($AS).geneticQuirks.superfetation == 2 && getSlave($AS).pregKnown == 1) ? 1 : 0>>
 <<set _penCountBonus = random(6,20), _analCountBonus = _penCountBonus, _vagCountBonus = _penCountBonus>>
diff --git a/src/npc/interaction/fSlaveSelfImpreg.tw b/src/npc/interaction/fSlaveSelfImpreg.tw
index aa21bdccf15..67eabd3045d 100644
--- a/src/npc/interaction/fSlaveSelfImpreg.tw
+++ b/src/npc/interaction/fSlaveSelfImpreg.tw
@@ -1,7 +1,6 @@
 :: FSlaveSelfImpreg [nobr no-history]
 
-<<set $AS = $activeSlave.ID>>
-<<setLocalPronouns $activeSlave>>
+<<run App.Utils.setLocalPronouns(getSlave($AS))>>
 
 <<set _pfh = (getSlave($AS).fetish == "pregnancy" && getSlave($AS).fetishStrength > 50)>>
 <<set _pfk = (_pfh && getSlave($AS).fetishKnown == 1) || getSlave($AS).sexualFlaw == "breeder">>
diff --git a/src/npc/interaction/fSlaveSlaveVagConsummate.tw b/src/npc/interaction/fSlaveSlaveVagConsummate.tw
index a3b47122078..7ddd7b1e9b6 100644
--- a/src/npc/interaction/fSlaveSlaveVagConsummate.tw
+++ b/src/npc/interaction/fSlaveSlaveVagConsummate.tw
@@ -1,7 +1,6 @@
 :: FSlaveSlaveVag Consummate [nobr no-history]
 
-<<set $AS = $activeSlave.ID>>
-<<setLocalPronouns $activeSlave>>
+<<run App.Utils.setLocalPronouns(getSlave($AS))>>
 <<setLocalPronouns $slaverapistx 2>>
 
 <<set getSlave($AS).counter.vaginal += 1>>
diff --git a/src/npc/interaction/fVagina.tw b/src/npc/interaction/fVagina.tw
index 2352226850c..d37926e1326 100644
--- a/src/npc/interaction/fVagina.tw
+++ b/src/npc/interaction/fVagina.tw
@@ -1,7 +1,6 @@
 :: FVagina [nobr no-history]
 
-<<set $AS = $activeSlave.ID>>
-<<setLocalPronouns $activeSlave>>
+<<run App.Utils.setLocalPronouns(getSlave($AS))>>
 
 You call $him over so you can
 <<if (getSlave($AS).vagina >= 10)>>
diff --git a/src/npc/interaction/fillUpButt.tw b/src/npc/interaction/fillUpButt.tw
index ea27556981a..9a5247d26fb 100644
--- a/src/npc/interaction/fillUpButt.tw
+++ b/src/npc/interaction/fillUpButt.tw
@@ -1,7 +1,6 @@
 :: FillUpButt [nobr no-history]
 
-<<set $AS = $activeSlave.ID>>
-<<setLocalPronouns $activeSlave>>
+<<run App.Utils.setLocalPronouns(getSlave($AS))>>
 <<set getSlave($AS).bellyAccessory = "none">>
 <<set _pregDiscovery = 0>>
 You
diff --git a/src/npc/interaction/fillUpFace.tw b/src/npc/interaction/fillUpFace.tw
index 0dceca83318..6858746d4e7 100644
--- a/src/npc/interaction/fillUpFace.tw
+++ b/src/npc/interaction/fillUpFace.tw
@@ -1,7 +1,6 @@
 :: FillUpFace [nobr no-history]
 
-<<set $AS = $activeSlave.ID>>
-<<setLocalPronouns $activeSlave>>
+<<run App.Utils.setLocalPronouns(getSlave($AS))>>
 <<set getSlave($AS).bellyAccessory = "none">>
 <<set _pregDiscovery = 0>>
 <<set _belly = bellyAdjective(getSlave($AS))>>
diff --git a/src/npc/interaction/fondleBoobs.tw b/src/npc/interaction/fondleBoobs.tw
index fbc258757e1..88af31ef046 100644
--- a/src/npc/interaction/fondleBoobs.tw
+++ b/src/npc/interaction/fondleBoobs.tw
@@ -1,7 +1,6 @@
 :: FondleBoobs [nobr no-history]
 
-<<set $AS = $activeSlave.ID>>
-<<setLocalPronouns $activeSlave>>
+<<run App.Utils.setLocalPronouns(getSlave($AS))>>
 
 You call $him over so you can fondle $his
 <<if (getSlave($AS).boobs >= 20000)>>
diff --git a/src/npc/interaction/fondleButt.tw b/src/npc/interaction/fondleButt.tw
index 7a0700f3904..32089424763 100644
--- a/src/npc/interaction/fondleButt.tw
+++ b/src/npc/interaction/fondleButt.tw
@@ -1,7 +1,6 @@
 :: FondleButt [nobr no-history]
 
-<<set $AS = $activeSlave.ID>>
-<<setLocalPronouns $activeSlave>>
+<<run App.Utils.setLocalPronouns(getSlave($AS))>>
 
 You call $him over so you can fondle $his
 <<if getSlave($AS).butt < 2>>
diff --git a/src/npc/interaction/fondleDick.tw b/src/npc/interaction/fondleDick.tw
index be287a36854..1a2bce20b08 100644
--- a/src/npc/interaction/fondleDick.tw
+++ b/src/npc/interaction/fondleDick.tw
@@ -1,7 +1,6 @@
 :: FondleDick [nobr no-history]
 
-<<set $AS = $activeSlave.ID>>
-<<setLocalPronouns $activeSlave>>
+<<run App.Utils.setLocalPronouns(getSlave($AS))>>
 
 You call $him over so you can fondle $his
 <<if getSlave($AS).dick == 1>>
diff --git a/src/npc/interaction/fondleVagina.tw b/src/npc/interaction/fondleVagina.tw
index e8a4358665c..212b808f98e 100644
--- a/src/npc/interaction/fondleVagina.tw
+++ b/src/npc/interaction/fondleVagina.tw
@@ -1,7 +1,6 @@
 :: FondleVagina [nobr no-history]
 
-<<set $AS = $activeSlave.ID>>
-<<setLocalPronouns $activeSlave>>
+<<run App.Utils.setLocalPronouns(getSlave($AS))>>
 
 You call $him over so you can fondle $his
 <<if (getSlave($AS).vagina > 3)>>
diff --git a/src/npc/interaction/forceFeeding.tw b/src/npc/interaction/forceFeeding.tw
index f58ae279da5..cc8ff4412b8 100644
--- a/src/npc/interaction/forceFeeding.tw
+++ b/src/npc/interaction/forceFeeding.tw
@@ -1,7 +1,6 @@
 :: forceFeeding [nobr no-history]
 
-<<set $AS = $activeSlave.ID>>
-<<setLocalPronouns $activeSlave>>
+<<run App.Utils.setLocalPronouns(getSlave($AS))>>
 <<set $desc = SlaveTitle(getSlave($AS))>>
 
 <<set _belly = bellyAdjective(getSlave($AS))>>
diff --git a/src/npc/interaction/passage/fAnimalImpreg.tw b/src/npc/interaction/passage/fAnimalImpreg.tw
index 6b9b83da62b..a1eb7a8b4b6 100644
--- a/src/npc/interaction/passage/fAnimalImpreg.tw
+++ b/src/npc/interaction/passage/fAnimalImpreg.tw
@@ -1,7 +1,6 @@
 :: FAnimalImpreg [nobr]
 
 <<set $nextButton = "Back", $nextLink = "Slave Interact", $impregnatrix = 0, $eligibility = 0>>
-<<set $AS = $activeSlave.ID>>
 
 <<set _CL = $canines.length, _HL = $hooved.length, _FL = $felines.length>>
 
@@ -14,7 +13,7 @@ __Select an eligible animal to knock $him up:__
 /* FIXME: this might not work */
 
 <<for _c = 0; _c < _CL; _c++>>
-	<<if canBreed($activeSlave, $canines[_c])>>
+	<<if canBreed(getSlave($AS), $canines[_c])>>
 		<<if $canines[_c].species != "dog">>
 			<<set _canine = $canines[_c].species>>
 		<<else>>
@@ -25,14 +24,14 @@ __Select an eligible animal to knock $him up:__
 	<</if>>
 <</for>>
 <<for _h = 0; _h < _HL; _h++>>
-	<<if canBreed($activeSlave, $hooved[_h])>>
+	<<if canBreed(getSlave($AS), $hooved[_h])>>
 		<<set _hooved = $hooved[_h].species>>
 		<br><<link "Have a _hooved knock $him up" "FAnimalImpreg Consummate">><<set $impregnatrix = $hooved[_h]>><</link>>
 		<<set $eligibility = 1>>
 	<</if>>
 <</for>>
 <<for _f = 0; _f < _fL; _f++>>
-	<<if canBreed($activeSlave, $felines[_f])>>
+	<<if canBreed(getSlave($AS), $felines[_f])>>
 		<<if $felines[_f].species != "cat">>
 			<<set _feline = $felines[_f].species>>
 		<<else>>
diff --git a/src/npc/interaction/passage/fMarry.tw b/src/npc/interaction/passage/fMarry.tw
index 35c817587cc..fdeaa42dd9a 100644
--- a/src/npc/interaction/passage/fMarry.tw
+++ b/src/npc/interaction/passage/fMarry.tw
@@ -1,8 +1,7 @@
 :: FMarry [nobr]
 
 <<set $nextButton = "Back", $nextLink = "Slave Interact">>
-<<set $AS = $activeSlave.ID>>
-<<run App.Utils.setLocalPronouns(getSlave($activeSlave.ID))>>
+<<run App.Utils.setLocalPronouns(getSlave($AS))>>
 <<run Enunciate(getSlave($AS))>>
 <<set _belly = bellyAdjective(getSlave($AS))>>
 
diff --git a/src/npc/interaction/passage/fSlaveImpreg.tw b/src/npc/interaction/passage/fSlaveImpreg.tw
index 526587a0cf1..7b22053148c 100644
--- a/src/npc/interaction/passage/fSlaveImpreg.tw
+++ b/src/npc/interaction/passage/fSlaveImpreg.tw
@@ -1,7 +1,6 @@
 :: FSlaveImpreg [nobr]
 
 <<set $impregnatrix = 0>>
-<<set $AS = $activeSlave.ID>>
 
 <p class="scene-intro">
 	<<= getSlave($AS).slaveName>> is fertile; now you must select a slave with both a penis and potent testicles.
diff --git a/src/npc/interaction/passage/fSlaveSlaveDickConsummate.tw b/src/npc/interaction/passage/fSlaveSlaveDickConsummate.tw
index a21aa74eeca..d58771b0940 100644
--- a/src/npc/interaction/passage/fSlaveSlaveDickConsummate.tw
+++ b/src/npc/interaction/passage/fSlaveSlaveDickConsummate.tw
@@ -1,8 +1,7 @@
 :: FSlaveSlaveDick Consummate [nobr]
 
 <<set $nextButton = "Continue", $returnTo = $nextLink, $nextLink = "AS Dump">>
-<<set $AS = $activeSlave.ID>>
-<<setLocalPronouns $activeSlave>>
+<<run App.Utils.setLocalPronouns(getSlave($AS))>>
 <<setLocalPronouns $slaverapistx 2>>
 
 <<if getSlave($AS).dick>>
diff --git a/src/npc/interaction/passage/matchmaking.tw b/src/npc/interaction/passage/matchmaking.tw
index d8aa42e569f..9ed13bcb75c 100644
--- a/src/npc/interaction/passage/matchmaking.tw
+++ b/src/npc/interaction/passage/matchmaking.tw
@@ -6,7 +6,6 @@
 	<<set $nextLink = "Slave Interact">>
 <</if>>
 <<set $nextButton = "Continue">>
-<<set $AS = $activeSlave.ID>>
 
 <<if $subSlave == 0>>
 
diff --git a/src/npc/slaveStats.tw b/src/npc/slaveStats.tw
index 40240ea24d7..1f0ef3769b8 100644
--- a/src/npc/slaveStats.tw
+++ b/src/npc/slaveStats.tw
@@ -7,7 +7,7 @@
 }
 </style>
 
-<<setLocalPronouns $activeSlave>>
+<<run App.Utils.setLocalPronouns($activeSlave)>>
 
 <br>Name: $activeSlave.slaveName,
 Surname: $activeSlave.slaveSurname
diff --git a/src/npc/startingGirls/startingGirls.tw b/src/npc/startingGirls/startingGirls.tw
index 0a576fede0a..fe1b351cbfc 100644
--- a/src/npc/startingGirls/startingGirls.tw
+++ b/src/npc/startingGirls/startingGirls.tw
@@ -378,7 +378,7 @@
 	<</if>>
 </div>
 
-<<setLocalPronouns $activeSlave>>
+<<run App.Utils.setLocalPronouns($activeSlave)>>
 
 <div id="Overview" class="tab-content">
 	<div class="content">
diff --git a/src/personalAssistant/assistantEvents.tw b/src/personalAssistant/assistantEvents.tw
index 0683fcd23f1..68efd7efca0 100644
--- a/src/personalAssistant/assistantEvents.tw
+++ b/src/personalAssistant/assistantEvents.tw
@@ -44,7 +44,7 @@
 				<<break>>
 			<</if>>
 		<</for>>
-		<<setLocalPronouns $activeSlave>>
+		<<run App.Utils.setLocalPronouns($activeSlave)>>
 		One night, after a long day of sex and business, you're starting to think about bed when the abstract glowing shape that symbolizes your smoky-voiced personal assistant pops up on the nearest screen. _HeA's become very helpful monitoring, training, and disciplining slaves. Tonight, _heA's added an unmistakable tone of sexual satiation in _hisA voice. "<<= properTitle()>>, I enjoyed my duties today," _heA purrs. "Did you see how $activeSlave.slaveName's muscles spasmed when I fucked $him earlier?" That's how _heA refers to a slave having one of the penthouse's advanced sex toys used on $him, since $assistant.name controls them.
 		<br><br>
 		_HeA continues more seriously,
diff --git a/src/pregmod/JobFulfillmentCenter/JobFulfillmentCenterDelivery.tw b/src/pregmod/JobFulfillmentCenter/JobFulfillmentCenterDelivery.tw
index 3473318cfa5..e405a2d5521 100644
--- a/src/pregmod/JobFulfillmentCenter/JobFulfillmentCenterDelivery.tw
+++ b/src/pregmod/JobFulfillmentCenter/JobFulfillmentCenterDelivery.tw
@@ -5,7 +5,7 @@
 <<JFCSlave>>
 <<set _slaveCost = slaveCost($activeSlave)>>
 <<set _slaveCost = _slaveCost*6>>
-<<setLocalPronouns $activeSlave>>
+<<run App.Utils.setLocalPronouns($activeSlave)>>
 
 A slave dealer has submitted a slave to satisfy your ''$JFC.role'' order.
 
diff --git a/src/pregmod/beastFuck.tw b/src/pregmod/beastFuck.tw
index ce003770d95..6eebc83fe48 100644
--- a/src/pregmod/beastFuck.tw
+++ b/src/pregmod/beastFuck.tw
@@ -1,6 +1,6 @@
 :: BeastFuck [nobr]
 
-<<setLocalPronouns $activeSlave>>
+<<run App.Utils.setLocalPronouns($activeSlave)>>
 
 /*THIS WILL ALL NEED TO BE COMPLETELY REWORKED*/
 
diff --git a/src/pregmod/beastFucked.tw b/src/pregmod/beastFucked.tw
index af83307bed7..28026360578 100644
--- a/src/pregmod/beastFucked.tw
+++ b/src/pregmod/beastFucked.tw
@@ -1,6 +1,6 @@
 :: BeastFucked [nobr]
 
-<<setLocalPronouns $activeSlave>>
+<<run App.Utils.setLocalPronouns($activeSlave)>>
 
 <<if $animalType == "canine">>
 	<<set _animal = $activeCanine>>
diff --git a/src/pregmod/newChildIntro.tw b/src/pregmod/newChildIntro.tw
index a0f203624e7..ae9f3573705 100644
--- a/src/pregmod/newChildIntro.tw
+++ b/src/pregmod/newChildIntro.tw
@@ -3,7 +3,7 @@
 <<set _tempMom = 0, _tempDad = 0>>
 
 <<set $desc = SlaveTitle($activeSlave)>>
-<<setLocalPronouns $activeSlave>>
+<<run App.Utils.setLocalPronouns($activeSlave)>>
 <<setPlayerPronouns>> /* exactly one player pronoun is used */
 
 /* use the secondary location if the primary brand target won't work for this slave */
diff --git a/src/pregmod/reLegendaryWomb.tw b/src/pregmod/reLegendaryWomb.tw
index 05bc078f522..b96de8ce5eb 100644
--- a/src/pregmod/reLegendaryWomb.tw
+++ b/src/pregmod/reLegendaryWomb.tw
@@ -7,7 +7,7 @@
 	<<goto "RIE Eligibility Check">>
 <<else>>
 
-<<setLocalPronouns $activeSlave>>
+<<run App.Utils.setLocalPronouns($activeSlave)>>
 <<set $activeSlave.devotion += 4>>
 
 <<= App.UI.slaveDescriptionDialog($activeSlave)>> is an incredible mother. $He's given birth to numbers that would have been considered absurd in the days when drug treatments were limited by consent. A nascent organization will be holding a pageant for pregnant slaves tomorrow, and since they're aware you keep breeders, they've sent you an invitation to enter a heavily pregnant slave to be judged.
diff --git a/src/pregmod/rePregInventor.tw b/src/pregmod/rePregInventor.tw
index 301a46522eb..09557a61660 100644
--- a/src/pregmod/rePregInventor.tw
+++ b/src/pregmod/rePregInventor.tw
@@ -4,7 +4,7 @@
 
 <<set $activeSlave = $eventSlave>>
 <<setAssistantPronouns>>
-<<setLocalPronouns $activeSlave>>
+<<run App.Utils.setLocalPronouns($activeSlave)>>
 <<run Enunciate($activeSlave)>>
 <span id="art-frame">
 /* 000-250-006 */
diff --git a/src/uncategorized/PESS.tw b/src/uncategorized/PESS.tw
index dea77eebf99..581f494082a 100644
--- a/src/uncategorized/PESS.tw
+++ b/src/uncategorized/PESS.tw
@@ -94,7 +94,7 @@
 
 <<set $desc = SlaveTitle($activeSlave)>>
 <<run Enunciate($activeSlave)>>
-<<setLocalPronouns $activeSlave>>
+<<run App.Utils.setLocalPronouns($activeSlave)>>
 <<if (def $slaves[$j]) && $slaves[$j] != 0>>
 	<<setLocalPronouns $slaves[$j] 2>>
 <</if>>
diff --git a/src/uncategorized/PETS.tw b/src/uncategorized/PETS.tw
index 0359ceb1d90..28fb4d5df2b 100644
--- a/src/uncategorized/PETS.tw
+++ b/src/uncategorized/PETS.tw
@@ -84,7 +84,7 @@
 <<set $activeSlave.clothes = _clothesTemp>>
 <<set $subSlave.clothes = _clothesTemp2>>
 
-<<setLocalPronouns $activeSlave>>
+<<run App.Utils.setLocalPronouns($activeSlave)>>
 <<setLocalPronouns $subSlave 2>>
 <<run Enunciate($activeSlave)>>
 <<setSpokenLocalPronouns $activeSlave $subSlave>>
diff --git a/src/uncategorized/REFI.tw b/src/uncategorized/REFI.tw
index 0fe94836f25..faa66635bbb 100644
--- a/src/uncategorized/REFI.tw
+++ b/src/uncategorized/REFI.tw
@@ -122,7 +122,7 @@
 <<set _belly = bellyAdjective($activeSlave)>>
 <<set $subSlave = $slaves[_refi]>>
 <<set _subBelly = bellyAdjective($subSlave)>>
-<<setLocalPronouns $activeSlave>>
+<<run App.Utils.setLocalPronouns($activeSlave)>>
 <<setLocalPronouns $subSlave 2>>
 <<setNonlocalPronouns $seeDicks>>
 
diff --git a/src/uncategorized/REFS.tw b/src/uncategorized/REFS.tw
index 1b8b6fdd0ed..3e00bb5eab7 100644
--- a/src/uncategorized/REFS.tw
+++ b/src/uncategorized/REFS.tw
@@ -318,7 +318,7 @@
 
 	<<set $desc = SlaveTitle($activeSlave)>>
 	<<run Enunciate($activeSlave)>>
-	<<setLocalPronouns $activeSlave>>
+	<<run App.Utils.setLocalPronouns($activeSlave)>>
 <</if>>
 
 <<switch $REFSevent>>
diff --git a/src/uncategorized/RESS.tw b/src/uncategorized/RESS.tw
index 243d93c7964..21f500ac730 100644
--- a/src/uncategorized/RESS.tw
+++ b/src/uncategorized/RESS.tw
@@ -146,7 +146,7 @@
 <<set $desc = SlaveTitle($activeSlave)>>
 <<run Enunciate($activeSlave)>>
 <<set _belly = bellyAdjective($activeSlave)>>
-<<setLocalPronouns $activeSlave>>
+<<run App.Utils.setLocalPronouns($activeSlave)>>
 <<setPlayerPronouns>>
 <<setAssistantPronouns>>
 
diff --git a/src/uncategorized/RETS.tw b/src/uncategorized/RETS.tw
index f4a1ef61d7e..36725399f7a 100644
--- a/src/uncategorized/RETS.tw
+++ b/src/uncategorized/RETS.tw
@@ -183,7 +183,7 @@
 
 <<setPlayerPronouns>>
 <<setAssistantPronouns>>
-<<setLocalPronouns $activeSlave>>
+<<run App.Utils.setLocalPronouns($activeSlave)>>
 <<setLocalPronouns $subSlave 2>>
 <<setSpokenLocalPronouns $activeSlave $subSlave>>
 
diff --git a/src/uncategorized/arcadeReport.tw b/src/uncategorized/arcadeReport.tw
index d8cd8080b89..63d8a79b5c9 100644
--- a/src/uncategorized/arcadeReport.tw
+++ b/src/uncategorized/arcadeReport.tw
@@ -260,7 +260,7 @@
 		<<set $activeSlave = $slaves[_Age]>>
 	<</if>>
 	<<if $activeSlave != 0>>
-		<<setLocalPronouns $activeSlave>>
+		<<run App.Utils.setLocalPronouns($activeSlave)>>
 		<br>&nbsp;&nbsp;&nbsp;&nbsp;$activeSlave.slaveName is low-quality merchandise, so $he has been converted into a Fuckdoll.
 		<<= removeSlave($activeSlave)>>
 		<<if $activeSlave == 0>> /% if not zero then technically there was an error INVALID SLAVE %/
diff --git a/src/uncategorized/freeRangeDairyAssignmentScene.tw b/src/uncategorized/freeRangeDairyAssignmentScene.tw
index 72c2d54f29e..1b2278fb32a 100644
--- a/src/uncategorized/freeRangeDairyAssignmentScene.tw
+++ b/src/uncategorized/freeRangeDairyAssignmentScene.tw
@@ -3,7 +3,7 @@
 /* This scene wants $dairyRestraintsSetting == 0 && $activeSlave.devotion > 0 && $activeSlave.fetish != "mindbroken" */
 
 <<set $nextButton = "Continue", $nextLink = $returnTo>>
-<<setLocalPronouns $activeSlave>>
+<<run App.Utils.setLocalPronouns($activeSlave)>>
 
 <<if $seeImages == 1>>
 	<div class="imageRef medImg">
diff --git a/src/uncategorized/genericPlotEvents.tw b/src/uncategorized/genericPlotEvents.tw
index 09fcb3ff01b..45608163004 100644
--- a/src/uncategorized/genericPlotEvents.tw
+++ b/src/uncategorized/genericPlotEvents.tw
@@ -110,7 +110,7 @@ As you step off the elevator, you hear several <<if $seeDicks != 100>>female <</
 	<<set $activeSlave.hStyle = "strip">>
 	<<set _slaveCost = slaveCost($activeSlave)>>
 <</if>>
-<<setLocalPronouns $activeSlave>>
+<<run App.Utils.setLocalPronouns($activeSlave)>>
 <<run Enunciate($activeSlave)>>
 <<if $eventResults.strip == 1>>
 	One day, you walk by the commercial space where the strip club that closed was located. It's now advertised as a massage parlor, but the real merchandise on offer is obvious. You can see a bored-looking, half-dressed masseuse rubbing a client, but the sounds of someone having hard sex are filtering out from the back room, and the pricing sheet lists more orifices than massage options.
@@ -1162,7 +1162,7 @@ A screen opposite your desk springs to life, <<if $assistant.personality == 0>>s
 	<<set $activeSlave.fetish = "none">>
 	<<set $activeSlave.behavioralFlaw = "arrogant">>
 	<<set $activeSlave.sexualFlaw = "idealistic">>
-	<<setLocalPronouns $activeSlave>>
+	<<run App.Utils.setLocalPronouns($activeSlave)>>
 	<span id="art-frame">
 		/* 000-250-006 */
 		<<if $seeImages == 1>>
@@ -1220,7 +1220,7 @@ A screen opposite your desk springs to life, <<if $assistant.personality == 0>>s
 		<<set $activeSlave.fetishStrength = 60>>
 		<<set $activeSlave.behavioralFlaw = "anorexic">>
 		<<set $activeSlave.sexualFlaw = "idealistic">>
-		<<setLocalPronouns $activeSlave>>
+		<<run App.Utils.setLocalPronouns($activeSlave)>>
 		<span id="art-frame">
 			/* 000-250-006 */
 			<<if $seeImages == 1>>
@@ -1271,7 +1271,7 @@ A screen opposite your desk springs to life, <<if $assistant.personality == 0>>s
 	<<set $activeSlave.fetish = "none">>
 	<<set $activeSlave.behavioralFlaw = "bitchy">>
 	<<set $activeSlave.sexualFlaw = "hates anal">>
-	<<setLocalPronouns $activeSlave>>
+	<<run App.Utils.setLocalPronouns($activeSlave)>>
 	<span id="art-frame">
 		/* 000-250-006 */
 		<<if $seeImages == 1>>
@@ -1329,7 +1329,7 @@ A screen opposite your desk springs to life, <<if $assistant.personality == 0>>s
 		<<set $activeSlave.fetish = "none">>
 		<<set $activeSlave.sexualFlaw = "none">>
 		<<set $activeSlave.behavioralFlaw = "odd">>
-		<<setLocalPronouns $activeSlave>>
+		<<run App.Utils.setLocalPronouns($activeSlave)>>
 		<span id="art-frame">
 			/* 000-250-006 */
 			<<if $seeImages == 1>>
diff --git a/src/uncategorized/industrialDairyAssignmentScene.tw b/src/uncategorized/industrialDairyAssignmentScene.tw
index 22e07ab7453..55de2718310 100644
--- a/src/uncategorized/industrialDairyAssignmentScene.tw
+++ b/src/uncategorized/industrialDairyAssignmentScene.tw
@@ -2,7 +2,7 @@
 
 <<set $nextButton = "Continue", $nextLink = $returnTo>>
 
-<<setLocalPronouns $activeSlave>>
+<<run App.Utils.setLocalPronouns($activeSlave)>>
 
 <span id="art-frame">
 	/* 000-250-006 */
diff --git a/src/uncategorized/jeSlaveDispute.tw b/src/uncategorized/jeSlaveDispute.tw
index 8625f7185d0..1c17bf64e4b 100644
--- a/src/uncategorized/jeSlaveDispute.tw
+++ b/src/uncategorized/jeSlaveDispute.tw
@@ -171,7 +171,7 @@
 <</if>>
 /* 000-250-006 */
 
-<<setLocalPronouns $activeSlave>>
+<<run App.Utils.setLocalPronouns($activeSlave)>>
 
 <<= capFirstChar($assistant.name)>> breaks in on your sleep with an urgent message. You push a slave off you and sit up to take it. As the owner of the arcology, you perform some functions that would traditionally be the province of a government. In this anarcho-liberal polity, it's still necessary for people making deals to have someone to appeal to when disputes arise. Part of your agreement with your tenants is that you will perform this duty on deals between two tenants. The message is about just such a disagreement; they always seem to happen in the middle of the night, and they're always urgent.
 
diff --git a/src/uncategorized/officeDescription.tw b/src/uncategorized/officeDescription.tw
index bf708d0d35f..391ec090ac6 100644
--- a/src/uncategorized/officeDescription.tw
+++ b/src/uncategorized/officeDescription.tw
@@ -9,7 +9,7 @@
 	<<set _eventSlaves = $slaves.filter(function(s) { return s.assignment == "serve in the club"; })>>
 	<<if _eventSlaves.length > 0>>
 		<<set $activeSlave = _eventSlaves.random()>>
-		<<setLocalPronouns $activeSlave>>
+		<<run App.Utils.setLocalPronouns($activeSlave)>>
 		<<if random(1,2) == 1 || !canStand($activeSlave)>>
 			This includes a sex toy based on $activeSlave.slaveName's
 			<<if (random(1,3) == 1) && ($activeSlave.skill.vaginal >= 100)>>
@@ -40,7 +40,7 @@
 	<<set _eventSlaves = $slaves.filter(function(s) { return s.assignment == "work in the brothel"; })>>
 	<<if _eventSlaves.length > 0>>
 		<<set $activeSlave = _eventSlaves.random()>>
-		<<setLocalPronouns $activeSlave>>
+		<<run App.Utils.setLocalPronouns($activeSlave)>>
 		<<if random(1,2) == 1 || !canStand($activeSlave)>>
 			This includes a sex toy based on $activeSlave.slaveName's
 			<<if (random(1,3) == 1) && ($activeSlave.skill.vaginal >= 100)>>
diff --git a/src/uncategorized/pHostageAcquisition.tw b/src/uncategorized/pHostageAcquisition.tw
index 7e82a33f98e..3df4c0495ed 100644
--- a/src/uncategorized/pHostageAcquisition.tw
+++ b/src/uncategorized/pHostageAcquisition.tw
@@ -7,7 +7,7 @@
 <<set $activeSlave.ID += 55555>>
 <<set $activeSlave.weekAcquired = $week>>
 <<run Enunciate($activeSlave)>>
-<<setLocalPronouns $activeSlave>>
+<<run App.Utils.setLocalPronouns($activeSlave)>>
 <<setNonlocalPronouns $seeDicks>>
 
 <<if $hostageWife != 0>>
diff --git a/src/uncategorized/pRivalInitiation.tw b/src/uncategorized/pRivalInitiation.tw
index c5a5a71f5c4..0bbe0dc7dbb 100644
--- a/src/uncategorized/pRivalInitiation.tw
+++ b/src/uncategorized/pRivalInitiation.tw
@@ -11,7 +11,7 @@
 
 <<else>>
 
-<<setLocalPronouns $activeSlave>>
+<<run App.Utils.setLocalPronouns($activeSlave)>>
 
 This is a special week, the week of your victory. <<= App.UI.slaveDescriptionDialog($activeSlave)>> awaits your pleasure. You could certainly do to $him anything and everything you usually do to your chattel. You could also do something special to mark the occasion.
 
diff --git a/src/uncategorized/pRivalryHostage.tw b/src/uncategorized/pRivalryHostage.tw
index 24534cc2a56..c42cf76b713 100644
--- a/src/uncategorized/pRivalryHostage.tw
+++ b/src/uncategorized/pRivalryHostage.tw
@@ -249,7 +249,7 @@
 	<<set _heR = "she">>
 <</if>>
 <<setNonlocalPronouns $seeDicks>>
-<<setLocalPronouns $activeSlave>>
+<<run App.Utils.setLocalPronouns($activeSlave)>>
 <<setPlayerPronouns>>
 
 Only a few days into your inter-arcology war, you receive a video message from your rival. Once $assistant.name is satisfied that the file is clean, you clear your office and pull it up. To your surprise, there are two faces on your desk, not one. One of them is your rival, and after a moment, you remember who the other is. You recognize $him from your
diff --git a/src/uncategorized/pSlaveMedic.tw b/src/uncategorized/pSlaveMedic.tw
index 0db3c2a3ec0..4e597f7658a 100644
--- a/src/uncategorized/pSlaveMedic.tw
+++ b/src/uncategorized/pSlaveMedic.tw
@@ -90,7 +90,7 @@
 	/* 000-250-006 */
 </span>
 
-<<setLocalPronouns $activeSlave>>
+<<run App.Utils.setLocalPronouns($activeSlave)>>
 <<run Enunciate($activeSlave)>>
 
 <<if $pedo_mode == 1 && $seeDicks < 100>>
diff --git a/src/uncategorized/pUndergroundRailroad.tw b/src/uncategorized/pUndergroundRailroad.tw
index 3e19292d87c..b6d0a8f13f5 100644
--- a/src/uncategorized/pUndergroundRailroad.tw
+++ b/src/uncategorized/pUndergroundRailroad.tw
@@ -103,7 +103,7 @@ This is disturbing, to say the least. After close investigation, it appears some
 
 <br><br>
 <<run Enunciate($activeSlave)>>
-<<setLocalPronouns $activeSlave>>
+<<run App.Utils.setLocalPronouns($activeSlave)>>
 
 <<if $traitorType == "agent">>
 
diff --git a/src/uncategorized/peCombatTraining.tw b/src/uncategorized/peCombatTraining.tw
index 47c7790ec93..ac6e057acb8 100644
--- a/src/uncategorized/peCombatTraining.tw
+++ b/src/uncategorized/peCombatTraining.tw
@@ -3,7 +3,7 @@
 <<set $nextButton = "Continue", $nextLink = "AS Dump", $returnTo = "RIE Eligibility Check">>
 
 <<set $activeSlave = _S.Bodyguard>>
-<<setLocalPronouns $activeSlave>>
+<<run App.Utils.setLocalPronouns($activeSlave)>>
 
 <span id="art-frame">
 /* 000-250-006 */
diff --git a/src/uncategorized/peConcubineInterview.tw b/src/uncategorized/peConcubineInterview.tw
index a875ba714b8..7fdeee631db 100644
--- a/src/uncategorized/peConcubineInterview.tw
+++ b/src/uncategorized/peConcubineInterview.tw
@@ -2,7 +2,7 @@
 
 <<set $nextButton = "Continue", $nextLink = "AS Dump", $returnTo = "RIE Eligibility Check", $activeSlave = _S.Concubine, _oldRep = $rep>>
 <<run Enunciate($activeSlave)>>
-<<setLocalPronouns $activeSlave>>
+<<run App.Utils.setLocalPronouns($activeSlave)>>
 <<set _belly = bellyAdjective($activeSlave)>>
 <<if SlaveStatsChecker.checkForLisp($activeSlave)>>
 	<<set _lisps = 1>>
diff --git a/src/uncategorized/peLonelyBodyguard.tw b/src/uncategorized/peLonelyBodyguard.tw
index 4be9c570c5c..92afd9290ed 100644
--- a/src/uncategorized/peLonelyBodyguard.tw
+++ b/src/uncategorized/peLonelyBodyguard.tw
@@ -10,7 +10,7 @@
 <</for>>
 <<set $j = _targetSlaveIndex.random()>>
 <<run Enunciate($activeSlave)>>
-<<setLocalPronouns $activeSlave>>
+<<run App.Utils.setLocalPronouns($activeSlave)>>
 <<setLocalPronouns $slaves[$j] 2>>
 
 <span id="art-frame">
diff --git a/src/uncategorized/pePitFight.tw b/src/uncategorized/pePitFight.tw
index a937036864f..96a96f4989f 100644
--- a/src/uncategorized/pePitFight.tw
+++ b/src/uncategorized/pePitFight.tw
@@ -3,7 +3,7 @@
 <<set $nextButton = "Continue", $nextLink = "AS Dump", $returnTo = "Random Nonindividual Event">>
 
 <<set $activeSlave = _S.Bodyguard>>
-<<setLocalPronouns $activeSlave>>
+<<run App.Utils.setLocalPronouns($activeSlave)>>
 
 <<set _deadliness = Deadliness($activeSlave)>>
 
diff --git a/src/uncategorized/personalAttentionSelect.tw b/src/uncategorized/personalAttentionSelect.tw
index b8479a7f725..f8a3d2dc23a 100644
--- a/src/uncategorized/personalAttentionSelect.tw
+++ b/src/uncategorized/personalAttentionSelect.tw
@@ -195,7 +195,7 @@
 
 		<<if _i > 0>><br><br><</if>>
 
-		<<setLocalPronouns $activeSlave>>
+		<<run App.Utils.setLocalPronouns($activeSlave)>>
 
 		You will give <span class='slave-name'><<= SlaveFullName($activeSlave)>></span> your personal attention this week.
 
diff --git a/src/uncategorized/reAWOL.tw b/src/uncategorized/reAWOL.tw
index d54a7a02ba8..c3085a20c11 100644
--- a/src/uncategorized/reAWOL.tw
+++ b/src/uncategorized/reAWOL.tw
@@ -39,7 +39,7 @@
 <<set $activeSlave.custom.tattoo = "$He has a number of tattoos from a variety of mercenary companies.">>
 <<set $activeSlave.clothes = "a military uniform">>
 
-<<setLocalPronouns $activeSlave>>
+<<run App.Utils.setLocalPronouns($activeSlave)>>
 <<setAssistantPronouns>>
 <span id="art-frame">
 	/* 000-250-006 */
diff --git a/src/uncategorized/reAnalPunishment.tw b/src/uncategorized/reAnalPunishment.tw
index 1a5900b5e0f..d18b360d29a 100644
--- a/src/uncategorized/reAnalPunishment.tw
+++ b/src/uncategorized/reAnalPunishment.tw
@@ -3,7 +3,7 @@
 <<set $nextButton = "Continue", $nextLink = "AS Dump", $returnTo = "Next Week">>
 
 <<set $activeSlave = $eventSlave>>
-<<setLocalPronouns $activeSlave>>
+<<run App.Utils.setLocalPronouns($activeSlave)>>
 <<setLocalPronouns _S.HeadGirl 2>>
 
 <<run Enunciate($activeSlave)>>
diff --git a/src/uncategorized/reBoomerang.tw b/src/uncategorized/reBoomerang.tw
index a48a85a150a..57d8b6a53b8 100644
--- a/src/uncategorized/reBoomerang.tw
+++ b/src/uncategorized/reBoomerang.tw
@@ -6,7 +6,7 @@
 
 <<run Enunciate($activeSlave)>>
 <<run SetBellySize($activeSlave)>>
-<<setLocalPronouns $activeSlave>>
+<<run App.Utils.setLocalPronouns($activeSlave)>>
 <<setAssistantPronouns>>
 
 Your work is interrupted by $assistant.name with an alert from the entrance to the penthouse.
diff --git a/src/uncategorized/reBusyArcade.tw b/src/uncategorized/reBusyArcade.tw
index dbfb67e9cea..c0af6619728 100644
--- a/src/uncategorized/reBusyArcade.tw
+++ b/src/uncategorized/reBusyArcade.tw
@@ -7,7 +7,7 @@
 <<else>>
 
 <<set $nextButton = "Continue", $nextLink = "AS Dump", $returnTo = "RIE Eligibility Check">>
-<<setLocalPronouns $activeSlave>>
+<<run App.Utils.setLocalPronouns($activeSlave)>>
 <<run Enunciate($activeSlave)>>
 
 Slaves in your arcade are not immured in the facility permanently, since holding them in one position at all times would negatively impact their health. They are released to exercise, eat, bathe, and sleep, but for nothing else. You occasionally inspect them when they do so, to see that their harsh lives are not inappropriately difficult for them. One day when you are doing so, <<= App.UI.slaveDescriptionDialog($activeSlave)>> flings $himself on the ground in front of you the instant $he sees you.
diff --git a/src/uncategorized/reFSAcquisition.tw b/src/uncategorized/reFSAcquisition.tw
index add1453a8e4..1f9abef4f47 100644
--- a/src/uncategorized/reFSAcquisition.tw
+++ b/src/uncategorized/reFSAcquisition.tw
@@ -1276,7 +1276,7 @@
 
 <</switch>>
 
-<<setLocalPronouns $activeSlave>>
+<<run App.Utils.setLocalPronouns($activeSlave)>>
 <<run Enunciate($activeSlave)>>
 <<setPlayerPronouns>>
 <<setAssistantPronouns>>
diff --git a/src/uncategorized/reFormerAbolitionist.tw b/src/uncategorized/reFormerAbolitionist.tw
index 6656e3d33db..e242f0504b5 100644
--- a/src/uncategorized/reFormerAbolitionist.tw
+++ b/src/uncategorized/reFormerAbolitionist.tw
@@ -9,7 +9,7 @@
 <<else>>
 	<<set $activeSlave = $eventSlave>>
 <</if>>
-<<setLocalPronouns $activeSlave>>
+<<run App.Utils.setLocalPronouns($activeSlave)>>
 
 Crime is extremely rare in $arcologies[0].name, and some would say justice rarer still, but if there's one thing that unites the citizens of $arcologies[0].name, it's a mutual outrage towards attempted abolitionists. Slaveownership is the cornerstone of the society that protects and enriches them, and they see those who would attempt to unlawfully free slaves not just as thieves of property but as anarchists trying to bring down everything they have worked to build.
 
diff --git a/src/uncategorized/reHGReplacement.tw b/src/uncategorized/reHGReplacement.tw
index 99744aca87e..6a49bd635b4 100644
--- a/src/uncategorized/reHGReplacement.tw
+++ b/src/uncategorized/reHGReplacement.tw
@@ -2,7 +2,7 @@
 
 <<set $nextButton = "Continue", $nextLink = "AS Dump", $returnTo = "Next Week", $activeSlave = $eventSlave>>
 <<run Enunciate($activeSlave)>>
-<<setLocalPronouns $activeSlave>>
+<<run App.Utils.setLocalPronouns($activeSlave)>>
 <<setLocalPronouns _S.HeadGirl 2>>
 <<setSpokenLocalPronouns $activeSlave _S.HeadGirl>>
 
diff --git a/src/uncategorized/reLegendaryBalls.tw b/src/uncategorized/reLegendaryBalls.tw
index 4338c32638c..48b12fe1115 100644
--- a/src/uncategorized/reLegendaryBalls.tw
+++ b/src/uncategorized/reLegendaryBalls.tw
@@ -7,7 +7,7 @@
 	<<goto "RIE Eligibility Check">>
 <<else>>
 
-<<setLocalPronouns $activeSlave>>
+<<run App.Utils.setLocalPronouns($activeSlave)>>
 <<set $activeSlave.devotion += 4>>
 
 <span id="art-frame">
diff --git a/src/uncategorized/reLegendaryCow.tw b/src/uncategorized/reLegendaryCow.tw
index a5377b545cc..3db4974aa3c 100644
--- a/src/uncategorized/reLegendaryCow.tw
+++ b/src/uncategorized/reLegendaryCow.tw
@@ -7,7 +7,7 @@
 	<<goto "RIE Eligibility Check">>
 <<else>>
 
-<<setLocalPronouns $activeSlave>>
+<<run App.Utils.setLocalPronouns($activeSlave)>>
 <<set $activeSlave.devotion += 4>>
 
 <span id="art-frame">
diff --git a/src/uncategorized/reLegendaryEntertainer.tw b/src/uncategorized/reLegendaryEntertainer.tw
index 1430e9cd1cf..f0f9859c7fa 100644
--- a/src/uncategorized/reLegendaryEntertainer.tw
+++ b/src/uncategorized/reLegendaryEntertainer.tw
@@ -7,7 +7,7 @@
 	<<goto "RIE Eligibility Check">>
 <<else>>
 
-<<setLocalPronouns $activeSlave>>
+<<run App.Utils.setLocalPronouns($activeSlave)>>
 <<set $activeSlave.devotion += 4>>
 
 <span id="art-frame">
diff --git a/src/uncategorized/reLegendaryWhore.tw b/src/uncategorized/reLegendaryWhore.tw
index 792e9ad19fd..a8ad86f7de7 100644
--- a/src/uncategorized/reLegendaryWhore.tw
+++ b/src/uncategorized/reLegendaryWhore.tw
@@ -7,7 +7,7 @@
 	<<goto "RIE Eligibility Check">>
 <<else>>
 
-<<setLocalPronouns $activeSlave>>
+<<run App.Utils.setLocalPronouns($activeSlave)>>
 <<set $activeSlave.devotion += 4>>
 
 <span id="art-frame">
diff --git a/src/uncategorized/reMalefactor.tw b/src/uncategorized/reMalefactor.tw
index f95774dad92..86f47476fa7 100644
--- a/src/uncategorized/reMalefactor.tw
+++ b/src/uncategorized/reMalefactor.tw
@@ -325,7 +325,7 @@
 
 <</switch>>
 
-<<setLocalPronouns $activeSlave>>
+<<run App.Utils.setLocalPronouns($activeSlave)>>
 
 <<switch $malefactor>>
 
diff --git a/src/uncategorized/reNickname.tw b/src/uncategorized/reNickname.tw
index 1628fe2ac40..ab75b53f588 100644
--- a/src/uncategorized/reNickname.tw
+++ b/src/uncategorized/reNickname.tw
@@ -8,7 +8,7 @@
 <</if>>
 
 <<set $activeSlave = $eventSlave>>
-<<setLocalPronouns $activeSlave>>
+<<run App.Utils.setLocalPronouns($activeSlave)>>
 
 /* NICKNAME QUALIFICATION CHECKS */
 
diff --git a/src/uncategorized/reNoEvent.tw b/src/uncategorized/reNoEvent.tw
index cff6a1ce366..796e9ff0fcf 100644
--- a/src/uncategorized/reNoEvent.tw
+++ b/src/uncategorized/reNoEvent.tw
@@ -3,7 +3,7 @@
 <<set $nextButton = "Continue", $nextLink = "AS Dump", $returnTo = "Next Week">>
 
 <<set $activeSlave = $eventSlave>>
-<<setLocalPronouns $activeSlave>>
+<<run App.Utils.setLocalPronouns($activeSlave)>>
 
 <<set $activeSlave.devotion += 3>>
 <<set $activeSlave.trust += 3>>
diff --git a/src/uncategorized/rePokerNight.tw b/src/uncategorized/rePokerNight.tw
index 2a623902464..738584edce6 100644
--- a/src/uncategorized/rePokerNight.tw
+++ b/src/uncategorized/rePokerNight.tw
@@ -88,7 +88,7 @@ On a particularly lackadaisical evening, you find yourself alerted to a message
 					<<set $activeSlave.hStyle = "shaved into a mohawk">>
 					<<set $activeSlave.custom.tattoo = "$He has a number of tattoos from a variety of mercenary companies.">>
 					<<set $activeSlave.clothes = "a military uniform">>
-					<<setLocalPronouns $activeSlave>>
+					<<run App.Utils.setLocalPronouns($activeSlave)>>
 					<<replace "#art-frame">>
 					/* 000-250-006 */
 					<<if $seeImages == 1>>
diff --git a/src/uncategorized/reRecruit.tw b/src/uncategorized/reRecruit.tw
index e5d1f08f11a..f8e933502ba 100644
--- a/src/uncategorized/reRecruit.tw
+++ b/src/uncategorized/reRecruit.tw
@@ -2060,7 +2060,7 @@
 <<default>>
 <</switch>>
 
-<<setLocalPronouns $activeSlave>>
+<<run App.Utils.setLocalPronouns($activeSlave)>>
 <<run Enunciate($activeSlave)>>
 <<setAssistantPronouns>>
 
diff --git a/src/uncategorized/reRelationshipAdvice.tw b/src/uncategorized/reRelationshipAdvice.tw
index a4b19f995d3..34089881622 100644
--- a/src/uncategorized/reRelationshipAdvice.tw
+++ b/src/uncategorized/reRelationshipAdvice.tw
@@ -2,7 +2,7 @@
 
 <<set $nextButton = "Continue", $nextLink = "AS Dump", $returnTo = "Next Week", $activeSlave = $eventSlave>>
 <<run Enunciate($activeSlave)>>
-<<setLocalPronouns $activeSlave>>
+<<run App.Utils.setLocalPronouns($activeSlave)>>
 
 <<set _i = $slaveIndices[$activeSlave.relationshipTarget]>>
 <<set $subSlave = $slaves[_i]>>
diff --git a/src/uncategorized/reShowerPunishment.tw b/src/uncategorized/reShowerPunishment.tw
index a52d759f5af..83d138312a6 100644
--- a/src/uncategorized/reShowerPunishment.tw
+++ b/src/uncategorized/reShowerPunishment.tw
@@ -3,7 +3,7 @@
 <<set $nextButton = "Continue", $nextLink = "AS Dump", $returnTo = "Next Week">>
 
 <<set $activeSlave = $eventSlave>>
-<<setLocalPronouns $activeSlave>>
+<<run App.Utils.setLocalPronouns($activeSlave)>>
 <<setLocalPronouns _S.HeadGirl 2>>
 <<setPlayerPronouns>>
 <<run Enunciate(_S.HeadGirl)>>
diff --git a/src/uncategorized/reStandardPunishment.tw b/src/uncategorized/reStandardPunishment.tw
index 75353920377..1feee7e3d8c 100644
--- a/src/uncategorized/reStandardPunishment.tw
+++ b/src/uncategorized/reStandardPunishment.tw
@@ -20,7 +20,7 @@
 /* 000-250-006 */
 
 <<set $desc = SlaveTitle($activeSlave)>>
-<<setLocalPronouns $activeSlave>>
+<<run App.Utils.setLocalPronouns($activeSlave)>>
 
 <<set _sins = []>>
 
diff --git a/src/uncategorized/resFailure.tw b/src/uncategorized/resFailure.tw
index 5f9cc91b276..d62ab45ba02 100644
--- a/src/uncategorized/resFailure.tw
+++ b/src/uncategorized/resFailure.tw
@@ -871,7 +871,7 @@
 	<<run newSlave($activeSlave)>> /* skip New Slave Intro */
 <</if>>
 
-<<setLocalPronouns $activeSlave>>
+<<run App.Utils.setLocalPronouns($activeSlave)>>
 
 <<if $RESFailure == "TSS">>
 	You receive a personal call from a senior representative of the Slavegirl School, as you've been expecting since their second missed rent payment. "I apologize," he says with some embarrassment, "but it seems our expansion into your arcology was a mistake. It's strange — the business climate seemed excellent, and other corporations are doing well." He sighs. "Nevertheless, nothing ever seemed to go as planned. We'll be shutting our branch campus down immediately. In fact, it should be shut down within the hour. I regret to add," he says nervously, "that we're experiencing continued difficulty finding the liquidity to pay what we owe you. The branch campus we're closing has five recent graduates. We'd like to transfer them to you in lieu of payment." He hurriedly ends the call.
diff --git a/src/uncategorized/resSale.tw b/src/uncategorized/resSale.tw
index 2b7c76a01de..c8b2189f391 100644
--- a/src/uncategorized/resSale.tw
+++ b/src/uncategorized/resSale.tw
@@ -61,7 +61,7 @@
 	<<set $activeSlave = _marketResult.slave>>
 	<<print _marketResult.text>>
 <</if>>
-<<setLocalPronouns $activeSlave>>
+<<run App.Utils.setLocalPronouns($activeSlave)>>
 
 <span id="art-frame">
 	/* 000-250-006 */
diff --git a/src/uncategorized/seExpiration.tw b/src/uncategorized/seExpiration.tw
index 39e7e7e9b19..95ae7fa00cc 100644
--- a/src/uncategorized/seExpiration.tw
+++ b/src/uncategorized/seExpiration.tw
@@ -7,7 +7,7 @@
 <<set $activeSlave = getSlave($expiree)>>
 
 <<run Enunciate($activeSlave)>>
-<<setLocalPronouns $activeSlave>>
+<<run App.Utils.setLocalPronouns($activeSlave)>>
 
 <span id="art-frame">
 /* 000-250-006 */
diff --git a/src/uncategorized/seRaiding.tw b/src/uncategorized/seRaiding.tw
index b5d2a80cb02..1f142f4e4af 100644
--- a/src/uncategorized/seRaiding.tw
+++ b/src/uncategorized/seRaiding.tw
@@ -575,7 +575,7 @@ target
 		<<set $activeSlave.preg = -1>>
 	<</if>>
 <</switch>>
-<<setLocalPronouns $activeSlave>>
+<<run App.Utils.setLocalPronouns($activeSlave)>>
 <<switch $origin>>
 <<case "housewife">>
 	is an idyllic mansion in the countryside of an old world nation. Its owner is a businessman of some notoriety, but is often away from his expansive estate. A number of servants and maids are in residence, but the primary resident of the mansion is his $wife. From the sound of things, $he is not a young $woman but attractive enough in a fake sort of way.
diff --git a/src/uncategorized/seRaidingAssault.tw b/src/uncategorized/seRaidingAssault.tw
index 0d97ddc4793..813269e5cbf 100644
--- a/src/uncategorized/seRaidingAssault.tw
+++ b/src/uncategorized/seRaidingAssault.tw
@@ -17,7 +17,7 @@ You make your selection and direct your $mercenariesTitle to attack the target.
 <</if>>
 <<set _MercCapture = random(_MercCaptureL,_MercCaptureU)>>
 <<set _raidEscape = random(_raidEscapeL,_raidEscapeU)>>
-<<setLocalPronouns $activeSlave>>
+<<run App.Utils.setLocalPronouns($activeSlave)>>
 
 <<switch $origin>>
 <<case "housewife">>
diff --git a/src/uncategorized/seRecruiterSuccess.tw b/src/uncategorized/seRecruiterSuccess.tw
index 8852bfc7e93..1b5930ceb4a 100644
--- a/src/uncategorized/seRecruiterSuccess.tw
+++ b/src/uncategorized/seRecruiterSuccess.tw
@@ -168,7 +168,7 @@
 <<set _ContractCost = 1000>>
 <<set _slaveCost = slaveCost($activeSlave)>>
 <<set _slaveCost -= _ContractCost>>
-<<setLocalPronouns $activeSlave>>
+<<run App.Utils.setLocalPronouns($activeSlave)>>
 <<setLocalPronouns _S.Recruiter 2>>
 
 <<if $recruiterTarget == "young migrants">>
diff --git a/src/uncategorized/subordinateTargeting.tw b/src/uncategorized/subordinateTargeting.tw
index 6ddfde0a201..8927368a229 100644
--- a/src/uncategorized/subordinateTargeting.tw
+++ b/src/uncategorized/subordinateTargeting.tw
@@ -2,7 +2,7 @@
 
 <<set $nextButton = "Back", $nextLink = "AS Dump">>
 
-<<setLocalPronouns $activeSlave>>
+<<run App.Utils.setLocalPronouns($activeSlave)>>
 
 <<if $activeSlave.subTarget == $activeSlave.ID>>
 	<<set $activeSlave.subTarget = 0>>
-- 
GitLab