diff --git a/CHANGELOG.md b/CHANGELOG.md
index 715bcd2c68a489277524bf2777124b109f7c0521..267d1308c0e89142d28646d32a7932383399d482 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -7,6 +7,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
 ## Unreleased
 
 * Arcade DOM conversion
+* Farmyard DOM conversion
 
 ## 0.10.7.1-4.0.0-alpha.4 - 2021-06-26
 
diff --git a/src/endWeek/nextWeek/resetGlobals.js b/src/endWeek/nextWeek/resetGlobals.js
index e3dac2a4ce278c4cbbca0dc48b4bf33f503adca9..183ec6d4a276d3683134c081fe34191162536b14 100644
--- a/src/endWeek/nextWeek/resetGlobals.js
+++ b/src/endWeek/nextWeek/resetGlobals.js
@@ -19,6 +19,7 @@ App.EndWeek.resetGlobals = function() {
 	V.PETSevent = [];
 	V.FSNonconformistEvents = [];
 	V.REButtholeCheckinIDs = [];
+	V.eligibleSlaves = [];
 
 	// Slave Objects using 0 instead of null. Second most memory eaten up.
 	V.activeSlave = 0;
diff --git a/src/events/RE/reBusyServantsQuarters.js b/src/events/RE/reBusyServantsQuarters.js
index efe6fb52312f6766d66fc9eb4629a225c9224cc8..fd47a24e6688e70f51e8f0615d7afdab705a75c5 100644
--- a/src/events/RE/reBusyServantsQuarters.js
+++ b/src/events/RE/reBusyServantsQuarters.js
@@ -21,7 +21,19 @@ App.Events.REBusyServantsQuarters = class REBusyServantsQuarters extends App.Eve
 			for (const slave of V.slaves) {
 				if (slave.assignment !== Job.QUARTER) {
 					slave.devotion += 4;
-					actX(slave, "oral", 3);
+					if (canPenetrate(slave)) {
+						actX(slave, "penetrative", 2);
+						if (canDoVaginal(slave)) {
+							actX(slave, "vaginal", 1);
+						} else {
+							actX(slave, "penetrative", 1);
+						}
+					} else if (canDoVaginal(slave)) {
+						actX(slave, "vaginal", 2);
+						actX(slave, "penetrative", 1);
+					} else {
+						actX(slave, "penetrative", 3);
+					}
 				} else {
 					slave.devotion -= 5;
 					if (canDoVaginal(slave) && slave.vagina > 0) {
diff --git a/src/js/utilsSlaves.js b/src/js/utilsSlaves.js
index 49338f9dfd6ec1506c6b94baa421952b63fc19b8..86b3b0590ed39c12ea680637bb598ecff511a78d 100644
--- a/src/js/utilsSlaves.js
+++ b/src/js/utilsSlaves.js
@@ -1,13 +1,9 @@
 globalThis.cumSlaves = function() {
 	return V.slaves.filter(s => (s.assignment === Job.MILKED || s.assignment === Job.DAIRY) && s.balls > 0 && s.ballType === "human");
-};
+}
 globalThis.fuckSlavesLength = function() {
 	return V.slaves.filter(s => [Job.FUCKTOY, Job.MASTERSUITE, Job.CONCUBINE].includes(s.assignment)).length;
-};
-
-globalThis.getRieEligibleSlaves = function() {
-	return V.slaves.filter(s => assignmentVisible(s) || [Job.MASTERSUITE, Job.CONCUBINE, Job.HOUSE].includes(s.assignment) && s.fuckdoll === 0);
-};
+}
 
 globalThis.SlaveSort = function() {
 	const effectivePreg = (slave) => {
diff --git a/src/uncategorized/randomIndividualEvent.tw b/src/uncategorized/randomIndividualEvent.tw
index c0aa662f7e22f1b3eca95cb6aa26cc5054685042..30c5424c9e4f1751959225506830d6759e377273 100644
--- a/src/uncategorized/randomIndividualEvent.tw
+++ b/src/uncategorized/randomIndividualEvent.tw
@@ -1,7 +1,6 @@
 :: Random Individual Event [nobr]
 
 <<if $eventSlave == 0>>
-	<<set _eligibleSlaves = getRieEligibleSlaves()>>
 	<<if ($debugMode > 0 && $debugModeEventSelection > 0)>>
 		<<set $nextButton = "Refresh", $nextLink = "Random Individual Event", $returnTo = "Random Individual Event", $encyclopedia = "Random Events">>
 
@@ -10,25 +9,32 @@
 
 		''One of the following eligible slaves would have been selected for an individual random event:''
 		<br>
-		<<for _slave range _eligibleSlaves>>
-			<<set _slaveName = SlaveFullName(_slave)>>
-			<br><<print "[[_slaveName|Random Individual Event][$eventSlave = getSlave(_slave)]]">>
+		<<for $i = 0; $i < $eligibleSlaves.length; $i++>>
+			<<capture $i>>
+			<<set $eventSlave = getSlave($eligibleSlaves[$i])>>
+			<<set _slaveName = SlaveFullName($eventSlave)>>
+			<br><<print "[[_slaveName|Random Individual Event][$eventSlave = getSlave($eligibleSlaves[$i])]]">>
+			<</capture>>
 		<</for>>
 		<br><br>[[Switch to Random Nonindividual Event|Random Nonindividual Event][$activeSlave = 0, $eventSlave = 0]]
 	<<else>>
-		<<set $eventSlave = getSlave(_eligibleSlaves.random())>>
+		<<set $eventSlave = getSlave($eligibleSlaves.random())>>
 		<<goto "Random Individual Event">>
 	<</if>>
 <<else>>
+
 	/* initialize event lists as arrays [], not objects {} */
 	<<set $events = [], $RESSevent = [], $RESSTRevent = [], $RETSevent = [], $RECIevent = [], $activeSlave = 0, $legendaryFacility = 0>>
 
 	<<run generateRandomEventPool($eventSlave)>>
+
 	/* EVENT RANDOMIZATION */
 	<<set $events = populateEventArray().concat(App.Events.getIndividualEventsPassageList($eventSlave))>>
+
 	<<if ($debugMode > 0 && $debugModeEventSelection > 0)>>
 		<<goto "random event select">>
 	<<else>>
 		<<goto "random event roll">>
 	<</if>>
+
 <</if>> /* CLOSES SLAVE SELECT */
diff --git a/src/uncategorized/rieEligibilityCheck.tw b/src/uncategorized/rieEligibilityCheck.tw
index da8ad9786309e34c79b01e6733de59729629d42d..21e47a71f33576a6a8660d4bdc4209bd90179b56 100644
--- a/src/uncategorized/rieEligibilityCheck.tw
+++ b/src/uncategorized/rieEligibilityCheck.tw
@@ -1,12 +1,23 @@
 :: RIE Eligibility Check
 
 <<silently>>
-<<set $eventSlave = 0>>
+
+<<set $eventSlave = 0, $eligibleSlaves = []>>
+
+<<for $i = 0; $i < $slaves.length; $i++>>
+	<<if assignmentVisible($slaves[$i]) || $slaves[$i].assignment == "serve in the master suite" || $slaves[$i].assignment == "be your Concubine" || $slaves[$i].assignment == "work as a servant">>
+		<<if $slaves[$i].fuckdoll == 0>>
+			<<set $eligibleSlaves.push($slaves[$i].ID)>>
+		<</if>>
+	<</if>>
+<</for>>
+
 <<if $hostageRescued == 1>>
 	<<goto "P hostage acquisition">>
-<<elseif getRieEligibleSlaves().length === 0>>
+<<elseif $eligibleSlaves.length == 0>>
 	<<goto "Next Week">>
 <<else>>
 	<<goto "Random Individual Event">>
 <</if>>
+
 <</silently>>