From d390def22c324ae754eedabe2d13e2a0019ae5e6 Mon Sep 17 00:00:00 2001
From: Pregmodder <pregmodder@gmail.com>
Date: Mon, 24 Jul 2017 16:44:20 -0400
Subject: [PATCH] Vanilla stuff.

---
 src/player/actions/fCaress.tw               |   2 +-
 src/uncategorized/RESS.tw                   |   8 +-
 src/uncategorized/rulesAssistant.tw         |   4 +-
 src/uncategorized/saChoosesOwnClothes.tw    |   2 +-
 src/uncategorized/slaveGenerationWidgets.tw |   5 +-
 src/uncategorized/slaveInteract.tw          |   4 +-
 src/uncategorized/summaryOptions.tw         | 224 +-----
 src/uncategorized/walkPast.tw               |   4 +-
 src/utility/optionsWidgets.tw               | 775 ++++++++++++++++++++
 src/utility/raWidgets.tw                    |   2 -
 10 files changed, 811 insertions(+), 219 deletions(-)
 create mode 100644 src/utility/optionsWidgets.tw

diff --git a/src/player/actions/fCaress.tw b/src/player/actions/fCaress.tw
index a0588d94fc8..6e2161653ad 100644
--- a/src/player/actions/fCaress.tw
+++ b/src/player/actions/fCaress.tw
@@ -51,7 +51,7 @@ You tell $activeSlave.slaveName to
 	She pauses, obviously considering whether to resist, but eventually decides to save her strength to fight more onerous orders, and gives in. Once she's close, you hold her face in your palms and look into her $activeSlave.eyeColor eyes. She stares back, but after a few moments she loses the contest of wills and looks down.
 <</if>>
 
-You delicately lift her head and touch your fingertips to her chin, tenderly brushing along the line of her mouth with the your <<if $PC.title == 1>>manly<<else>>feminine<</if>> thumb.
+You delicately lift her head and touch your fingertips to her chin, tenderly brushing along the line of her mouth with your <<if $PC.title == 1>>manly<<else>>feminine<</if>> thumb.
 <<if ($activeSlave.lipsTat != 0)>>
 	Your fingers trace her facial tattoos, slowly picking out the patterns against her $activeSlave.skin skin.
 <</if>>
diff --git a/src/uncategorized/RESS.tw b/src/uncategorized/RESS.tw
index bbab8ec4cb7..4b6e6e14013 100644
--- a/src/uncategorized/RESS.tw
+++ b/src/uncategorized/RESS.tw
@@ -1251,7 +1251,7 @@ Heading back towards your office after seeing to a minor matter, you encounter <
 
 <<case "refreshment delivery">>
 
-When it's time for refreshments, $assistantName directs the closest unoccupied slave to bring them in. This has the added advantage of bringing an enjoyably unpredictable variety of slaves under your eyes. This time, <<EventNameLink $activeSlave>> comes through the door of your office, carrying <<if $PC.refreshmentType == 0>>a selection of $PC.refreshment and the necessary implements<<elseif $PC.refreshmentType == 1>>a bottle of $PC.refreshment with a glass in your favorite style<<elseif $PC.refreshmentType == 2>>a selection of $PC.refreshment on a plate of your favored style<<elseif $PC.refreshmentType == 3>>a line of $PC.refreshment and the necessary implements<<elseif $PC.refreshmentType == 4>>a syringe of $PC.refreshment and the necessary implements<<elseif $PC.refreshmentType == 5>>a bottle of $PC.refreshment<<elseif $PC.refreshmentType == 4>>several sheets of $PC.refreshment<</if>> on a tray<<if $activeSlave.preg > 30>> carefully held against her pregnant belly, doing her best to will her child<<if $activeSlave.pregType > 1>>ren<</if>> to not kick the tray off balance<<elseif $activeSlave.preg > 20>> carefully held against her pregnant belly<</if>>.
+When it's time for refreshments, $assistantName directs the closest unoccupied slave to bring them in. This has the added advantage of bringing an enjoyably unpredictable variety of slaves under your eyes. This time, <<EventNameLink $activeSlave>> comes through the door of your office, carrying <<if $PC.refreshmentType == 0>>a selection of $PC.refreshment brands and the necessary implements<<elseif $PC.refreshmentType == 1>>a bottle of $PC.refreshment with a glass in your favorite style<<elseif $PC.refreshmentType == 2>>a selection of $PC.refreshment on a plate of your favored style<<elseif $PC.refreshmentType == 3>>a line of $PC.refreshment and the necessary implements<<elseif $PC.refreshmentType == 4>>a syringe of $PC.refreshment and the necessary implements<<elseif $PC.refreshmentType == 5>>a bottle of $PC.refreshment<<elseif $PC.refreshmentType == 4>>several sheets of $PC.refreshment<</if>> on a tray<<if $activeSlave.preg > 30>> carefully held against her pregnant belly, doing her best to will her child<<if $activeSlave.pregType > 1>>ren<</if>> to not kick the tray off balance<<elseif $activeSlave.preg > 20>> carefully held against her pregnant belly<</if>>.
 
 <br><br>
 
@@ -1259,11 +1259,11 @@ She comes to a stop right beside your elbow, waiting for further direction, just
 <<if $activeSlave.amp < 0>>
 	As she maintains her posture obediently, her P-Limbs produce minute machine noises. They allow her good coordination, but their gyros and servomotors are constantly working to maintain it, which means that when she stands still, they're not perfectly quiet.
 <<elseif $activeSlave.boobs > 4000>>
-	Her breasts are so massive that she's got the tray more or less balanced on top of them. As she breathes, her tits rise and fall slightly, <<if $PC.refreshmentType == 0>>causing the $PC.refreshment to roll from side to side<<elseif $PC.refreshmentType == 1>>causing ripples in the bottle of $PC.refreshment<<elseif $PC.refreshmentType == 2>>threatening to knock the $PC.refreshment from it's plate<<elseif $PC.refreshmentType == 3>>disturbing the lines of $PC.refreshment<<elseif $PC.refreshmentType == 4>>causing the syringes of $PC.refreshment to roll from side to side<<elseif $PC.refreshmentType == 5>>rattling the $PC.refreshment in its bottle<<elseif $PC.refreshmentType == 6>>threatening to knock the sheets of $PC.refreshment off the tray<</if>>.
+	Her breasts are so massive that she's got the tray more or less balanced on top of them. As she breathes, her tits rise and fall slightly, <<if $PC.refreshmentType == 0>>causing the $PC.refreshment collection to roll from side to side<<elseif $PC.refreshmentType == 1>>causing ripples in the bottle of $PC.refreshment<<elseif $PC.refreshmentType == 2>>threatening to knock the $PC.refreshment from it's plate<<elseif $PC.refreshmentType == 3>>disturbing the lines of $PC.refreshment<<elseif $PC.refreshmentType == 4>>causing the syringes of $PC.refreshment to roll from side to side<<elseif $PC.refreshmentType == 5>>rattling the $PC.refreshment in its bottle<<elseif $PC.refreshmentType == 6>>threatening to knock the sheets of $PC.refreshment off the tray<</if>>.
 <<elseif $activeSlave.preg > 30>>
-	She keeps the tray balanced atop her pregnancy, though the weight encourages her child<<if $activeSlave.pregType > 1>>ren<</if>> to begin kicking. As you glance over at her, she lets out a minute, tired sigh, as kicks from her child<<if $activeSlave.pregType > 1>>ren<</if>> <<if $PC.refreshmentType == 0>>cause the $PC.refreshment to roll from side to side<<elseif $PC.refreshmentType == 1>>cause ripples in the bottle of $PC.refreshment<<elseif $PC.refreshmentType == 2>>threaten to knock the $PC.refreshment from it's plate<<elseif $PC.refreshmentType == 3>>disturb the lines of $PC.refreshment<<elseif $PC.refreshmentType == 4>>cause the syringes of $PC.refreshment to roll from side to side<<elseif $PC.refreshmentType == 5>>rattle the $PC.refreshment in its bottle<<elseif $PC.refreshmentType == 6>>threaten to knock the sheets of $PC.refreshment off the tray<</if>>.
+	She keeps the tray balanced atop her pregnancy, though the weight encourages her child<<if $activeSlave.pregType > 1>>ren<</if>> to begin kicking. As you glance over at her, she lets out a minute, tired sigh, as kicks from her child<<if $activeSlave.pregType > 1>>ren<</if>> <<if $PC.refreshmentType == 0>>cause the $PC.refreshment collection to roll from side to side<<elseif $PC.refreshmentType == 1>>cause ripples in the bottle of $PC.refreshment<<elseif $PC.refreshmentType == 2>>threaten to knock the $PC.refreshment from it's plate<<elseif $PC.refreshmentType == 3>>disturb the lines of $PC.refreshment<<elseif $PC.refreshmentType == 4>>cause the syringes of $PC.refreshment to roll from side to side<<elseif $PC.refreshmentType == 5>>rattle the $PC.refreshment in its bottle<<elseif $PC.refreshmentType == 6>>threaten to knock the sheets of $PC.refreshment off the tray<</if>>.
 <<elseif $activeSlave.preg > 20>>
-	Her pregnant belly is big enough that she's got the tray more or less balanced on top of it. As you glance over at her, she lets out a minute, tired sigh, <<if $PC.refreshmentType == 0>>causing the $PC.refreshment to roll from side to side<<elseif $PC.refreshmentType == 1>>causing ripples in the bottle of $PC.refreshment<<elseif $PC.refreshmentType == 2>>nearly rocking the $PC.refreshment from it's plate<<elseif $PC.refreshmentType == 3>>disturbing the lines of $PC.refreshment<<elseif $PC.refreshmentType == 4>>causing the syringes of $PC.refreshment to roll from side to side<<elseif $PC.refreshmentType == 5>>nearly tipping the bottle of $PC.refreshment<<elseif $PC.refreshmentType == 6>>threatening to blow the sheets of $PC.refreshment off the tray<</if>>.
+	Her pregnant belly is big enough that she's got the tray more or less balanced on top of it. As you glance over at her, she lets out a minute, tired sigh, <<if $PC.refreshmentType == 0>>causing the $PC.refreshment collection to roll from side to side<<elseif $PC.refreshmentType == 1>>causing ripples in the bottle of $PC.refreshment<<elseif $PC.refreshmentType == 2>>nearly rocking the $PC.refreshment from it's plate<<elseif $PC.refreshmentType == 3>>disturbing the lines of $PC.refreshment<<elseif $PC.refreshmentType == 4>>causing the syringes of $PC.refreshment to roll from side to side<<elseif $PC.refreshmentType == 5>>nearly tipping the bottle of $PC.refreshment<<elseif $PC.refreshmentType == 6>>threatening to blow the sheets of $PC.refreshment off the tray<</if>>.
 <<elseif $activeSlave.muscles > 30>>
 	With her incredible musculature, she's able to maintain utter stillness in the perfect posture of an obedient slave. A naturally standing human makes some small movements, but her strength allows her to suppress them by setting muscle groups against each other. This has the ancillary benefit of making them stand out nicely.
 <<elseif $activeSlave.energy > 95>>
diff --git a/src/uncategorized/rulesAssistant.tw b/src/uncategorized/rulesAssistant.tw
index e8d34de6f45..c6aff799ed3 100644
--- a/src/uncategorized/rulesAssistant.tw
+++ b/src/uncategorized/rulesAssistant.tw
@@ -2373,7 +2373,7 @@ Relationship rules: ''$currentRule.relationshipRules.''
 			<<if ($currentRule.ID == 1)>>
 
 				<<set $currentRule.name = "Obedient Slaves">>
-				<<set $currentRule.condition = {id: ">=", first: {id: "(name)", name: "devotion"}, second: {id: "(number)", value: 20}}>>
+				<<set $currentRule.condition = {id: ">", first: {id: "(name)", name: "devotion"}, second: {id: "(number)", value: 20}}>>
 				<<set $currentRule.clothes = "slutty jewelry">>
 				<<set $currentRule.collar = "pretty jewelry">>
 				<<set $currentRule.shoes = "heels">>
@@ -2454,7 +2454,7 @@ Relationship rules: ''$currentRule.relationshipRules.''
 
 			<<elseif ($currentRule.ID == 2)>>
 				<<set $currentRule.name = "Disobedient Slaves">>
-				<<set $currentRule.condition = {id: "<", first: {id: "(name)", name: "devotion"}, second: {id: "(number)", value: 20}}>>
+				<<set $currentRule.condition = {id: "<=", first: {id: "(name)", name: "devotion"}, second: {id: "(number)", value: 20}}>>
 				<<set $currentRule.clothes = "uncomfortable straps">>
 				<<set $currentRule.collar = "uncomfortable leather">>
 				<<set $currentRule.shoes = "heels">>
diff --git a/src/uncategorized/saChoosesOwnClothes.tw b/src/uncategorized/saChoosesOwnClothes.tw
index 4882ba1bcef..6778f16bc9d 100644
--- a/src/uncategorized/saChoosesOwnClothes.tw
+++ b/src/uncategorized/saChoosesOwnClothes.tw
@@ -271,7 +271,7 @@
 	<<set $slaves[$i].clothes = "no clothing">>
 <<elseif ($slaves[$i].assignment == "rest")>>
 	and wears a comfortable t-shirt and cutoffs to relax.
-	<<set $slaves[$i].clothes = "no clothing">>
+	<<set $slaves[$i].clothes = "cutoffs and a t-shirt">>
 <<elseif ($slaves[$i].assignment == "be a subordinate slave")>>
 	but gives up and goes naked after the other slaves constantly tear whatever $pronoun's wearing off $object.
 	<<set $slaves[$i].clothes = "no clothing">>
diff --git a/src/uncategorized/slaveGenerationWidgets.tw b/src/uncategorized/slaveGenerationWidgets.tw
index 93851054114..7d2866d4357 100644
--- a/src/uncategorized/slaveGenerationWidgets.tw
+++ b/src/uncategorized/slaveGenerationWidgets.tw
@@ -15,6 +15,7 @@
 		|| setup.surnamePoolSelector[$args[0].nationality]
 		|| setup.whiteAmericanSlaveSurnames).random()>>
 <<set $args[0].slaveName = $args[0].birthName>>
+<<set $args[0].slaveName = $args[0].birthName, $args[0].slaveSurname = $args[0].birthSurname>>
 <<if $useFSNames == 1>>
 <<if $arcologies[0].FSChattelReligionist > 20>>
 	<<set $args[0].slaveName = setup.chattelReligionistSlaveNames.random(), $args[0].slaveSurname = 0>>
@@ -28,11 +29,7 @@
 	<<set $args[0].slaveName = setup.edoSlaveNames.random(), $args[0].slaveSurname = setup.edoSlaveSurnames.random()>>
 <<elseif $arcologies[0].FSDegradationist != "unset">>
 	<<DegradingName $args[0]>>
-<<else>>
-	<<set $args[0].slaveName = $args[0].birthName, $args[0].slaveSurname = $args[0].birthSurname>>
 <</if>>
-<<else>>
-	<<set $args[0].slaveName = $args[0].birthName, $args[0].slaveSurname = $args[0].birthSurname>>
 <</if>>
 
 <</widget>>
diff --git a/src/uncategorized/slaveInteract.tw b/src/uncategorized/slaveInteract.tw
index 773970cdd0f..497715d667f 100644
--- a/src/uncategorized/slaveInteract.tw
+++ b/src/uncategorized/slaveInteract.tw
@@ -1204,13 +1204,13 @@ Hormones: <strong><span id="hormones">
 	<br>Typical punishment: ''<span id="standardPunishment">$activeSlave.standardPunishment</span>.''
 	<<link "Confinement">><<set $activeSlave.standardPunishment = "confinement">><<replace "#standardPunishment">>$activeSlave.standardPunishment<</replace>><</link>> |
 	<<link "Whipping">><<set $activeSlave.standardPunishment = "whipping">><<replace "#standardPunishment">>$activeSlave.standardPunishment<</replace>><</link>> |
-	<<link "Chastity">><<set $activeSlave.standardPunishment = "chastity">><<replace "#standardPunishment">>$activeSlave.standardPunishment<</replace>><</link>><<if $activeSlave.standardPunishment !== "situational">> |<</if>>
+	<<link "Chastity">><<set $activeSlave.standardPunishment = "chastity">><<replace "#standardPunishment">>$activeSlave.standardPunishment<</replace>><</link>> |
 	<<link "Situational">><<set $activeSlave.standardPunishment = "situational">><<replace "#standardPunishment">>$activeSlave.standardPunishment<</replace>><</link>>
 	&nbsp;&nbsp;&nbsp;&nbsp;
 	Typical reward: ''<span id="standardReward">$activeSlave.standardReward</span>.''
 	<<link "Relaxation">><<set $activeSlave.standardReward = "relaxation">><<replace "#standardReward">>$activeSlave.standardReward<</replace>><</link>> |
 	<<link "Drugs">><<set $activeSlave.standardReward = "drugs">><<replace "#standardReward">>$activeSlave.standardReward<</replace>><</link>> |
-	<<link "Orgasm">><<set $activeSlave.standardReward = "orgasm">><<replace "#standardReward">>$activeSlave.standardReward<</replace>><</link>><<if $activeSlave.standardReward !== "situational">> |<</if>>
+	<<link "Orgasm">><<set $activeSlave.standardReward = "orgasm">><<replace "#standardReward">>$activeSlave.standardReward<</replace>><</link>> |
 	<<link "Situational">><<set $activeSlave.standardReward = "situational">><<replace "#standardReward">>$activeSlave.standardReward<</replace>><</link>>
 	<br>Non-assignment orgasm rules: ''<span id="releaseRules">$activeSlave.releaseRules</span>.''
 	<<link "Permit masturbation and interslave sex">><<set $activeSlave.releaseRules = "permissive">><<replace "#releaseRules">>$activeSlave.releaseRules<</replace>><</link>> |
diff --git a/src/uncategorized/summaryOptions.tw b/src/uncategorized/summaryOptions.tw
index 45f6ed094e8..eff5878f7a4 100644
--- a/src/uncategorized/summaryOptions.tw
+++ b/src/uncategorized/summaryOptions.tw
@@ -6,248 +6,72 @@
 //These options will affect the short slave summaries that appear on the main menu and the facility management screens.//
 
 <br><br>
-<<if $lineSeparations == 0>>
-	Line separations are @@.red;HIDDEN.@@
-	//[[Show|Summary Options][$lineSeparations = 1]]//
-<<else>>
-	Line separations are @@.cyan;SHOWN.@@
-	//[[Hide|Summary Options][$lineSeparations = 0]]//
-<</if>>
-
-<br><br>
-
-<<if $sortSlavesBy is "name">>
-	Slaves are sorted on the main menu by @@.yellow;NAME.@@
-<<elseif $sortSlavesBy == "seniority">>
-	Slaves are sorted on the main menu by @@.yellow;SENIORITY.@@
-<<elseif $sortSlavesBy == "actualAge">>
-	Slaves are sorted on the main menu by @@.yellow;TRUE AGE.@@
-<<elseif $sortSlavesBy == "visualAge">>
-	Slaves are sorted on the main menu by @@.yellow;APPARENT AGE.@@
-<<elseif $sortSlavesBy == "physicalAge">>
-	Slaves are sorted on the main menu by @@.yellow;BODILY AGE.@@
-<<elseif $sortSlavesBy == "assignment">>
-	Slaves are sorted on the main menu by @@.yellow;ASSIGNMENT.@@
-<<else>>
-	Slaves are sorted on the main menu by @@.yellow;DEVOTION.@@
-<</if>>
-
-//[[Devotion|Summary Options][$sortSlavesBy = "devotion"]] | [[Name|Summary Options][$sortSlavesBy = "name"]] | [[Assignment|Summary Options][$sortSlavesBy = "assignment"]] | [[Date purchased|Summary Options][$sortSlavesBy = "seniority"]] | [[Age|Summary Options][$sortSlavesBy = "actualAge"]] | [[How old they look|Summary Options][$sortSlavesBy = "visualAge"]] | [[Age of their body|Summary Options][$sortSlavesBy = "physicalAge"]]//
+<span id="OptionAbbreviateSidebar"><<OptionAbbreviateSidebar>></span>
 
 <br>
-
-<<if $sortSlavesOrder == "ascending">>
-	Slaves are sorted in @@.cyan;ASCENDING@@ order.
-	//[[Sort descending|Summary Options][$sortSlavesOrder = "descending"]]//
-<<else>>
-	Slaves are sorted in @@.red;DESCENDING@@ order.
-	//[[Sort ascending|Summary Options][$sortSlavesOrder = "ascending"]]//
-<</if>>
+<span id="OptionSortMain"><<OptionSortMain>></span>
 
 <br>
-
-<<if $sortSlavesMain == 0>>
-	Sort options are @@.red;HIDDEN@@ on the main menu.
-	//[[Show|Summary Options][$sortSlavesMain = 1]]//
-<<else>>
-	Sort options are @@.cyan;SHOWN@@ on the main menu.
-	//[[Hide|Summary Options][$sortSlavesMain = 0]]//
-<</if>>
+<span id="OptionSortBy"><<OptionSortBy>></span>
 
 <br>
+<span id="OptionSortOrder"><<OptionSortOrder>></span>
 
-<<if $rulesAssistantMain == 0>>
-	The rules assistant is @@.red;HIDDEN.@@
-	//[[Show|Summary Options][$rulesAssistantMain = 1]]//
-<<else>>
-	The rules assistant is @@.cyan;SHOWN.@@
-	//[[Hide|Summary Options][$rulesAssistantMain = 0]]//
-<</if>>
+<br>
+<span id="OptionRulesAssistantMain"><<OptionRulesAssistantMain>></span>
 
-<br><br>
 
-Main menu assignment shortcuts are
-<<if $displayAssignments == 1>>
-	@@.cyan;SHOWN.@@ //[[Hide|Summary Options][$displayAssignments = 0]]//
-<<else>>
-	@@.red;HIDDEN.@@ //[[Show|Summary Options][$displayAssignments = 1]]//
-<</if>>
 
 <br><br>
-
-Granular slave stat numbers are
-<<if $summaryStats == 1>>
-	@@.cyan;DISPLAYED.@@ //[[Hide|Summary Options][$summaryStats = 0]]//
-<<else>>
-	@@.red;HIDDEN.@@ //[[Display|Summary Options][$summaryStats = 1]]//
-<</if>>
+<span id="OptionDisplayAssignments"><<OptionDisplayAssignments>></span>
 
 <br>
-
-<<if $assignFilter == 0>>
-	Assignment filter controls are @@.red;HIDDEN.@@
-	//[[Show|Summary Options][$assignFilter = 1]]//
-<<else>>
-	Assignment filter controls are @@.cyan;SHOWN.@@
-	//[[Hide|Summary Options][$assignFilter = 0]]//
-<</if>>
+<span id="OptionSummaryStats"><<OptionSummaryStats>></span>
 
 <br>
+<span id="OptionLineSeparations"><<OptionLineSeparations>></span>
 
-Mental stats are
-<<if $abbreviateDevotion == 2>>
-	@@.cyan;SUMMARIZED.@@ //[[Hide|Summary Options][$abbreviateDevotion = 0]] | [[Abbreviate|Summary Options][$abbreviateDevotion = 1]]//
-<<elseif $abbreviateDevotion == 1>>
-	@@.yellow;ABBREVIATED.@@ //[[Hide|Summary Options][$abbreviateDevotion = 0]] | [[Summarize|Summary Options][$abbreviateDevotion = 2]]//
-<<else>>
-	@@.red;HIDDEN.@@ //[[Abbreviate|Summary Options][$abbreviateDevotion = 1]] | [[Summarize|Summary Options][$abbreviateDevotion = 2]]//
-<</if>>
+<br><br>
+<span id="OptionAbbreviateDevotion"><<OptionAbbreviateDevotion>></span>
 
 <br>
-
-Rules are
-<<if $abbreviateRules == 2>>
-	@@.cyan;SUMMARIZED.@@ //[[Hide|Summary Options][$abbreviateRules = 0]] | [[Abbreviate|Summary Options][$abbreviateRules = 1]]//
-<<elseif $abbreviateRules == 1>>
-	@@.yellow;ABBREVIATED.@@ //[[Hide|Summary Options][$abbreviateRules = 0]] | [[Summarize|Summary Options][$abbreviateRules = 2]]//
-<<else>>
-	@@.red;HIDDEN.@@ //[[Abbreviate|Summary Options][$abbreviateRules = 1]] | [[Summarize|Summary Options][$abbreviateRules = 2]]//
-<</if>>
+<span id="OptionAbbreviateRules"><<OptionAbbreviateRules>></span>
 
 <br>
-
-Health is
-<<if $abbreviateHealth == 2>>
-	@@.cyan;SUMMARIZED.@@ //[[Hide|Summary Options][$abbreviateHealth = 0]] | [[Abbreviate|Summary Options][$abbreviateHealth = 1]]//
-<<elseif $abbreviateHealth == 1>>
-	@@.yellow;ABBREVIATED.@@ //[[Hide|Summary Options][$abbreviateHealth = 0]] | [[Summarize|Summary Options][$abbreviateHealth = 2]]//
-<<else>>
-	@@.red;HIDDEN.@@ //[[Abbreviate|Summary Options][$abbreviateHealth = 1]] | [[Summarize|Summary Options][$abbreviateHealth = 2]]//
-<</if>>
+<span id="OptionAbbreviateDiet"><<OptionAbbreviateDiet>></span>
 
 <br>
-
-Diet and weight are
-<<if $abbreviateDiet == 2>>
-	@@.cyan;SUMMARIZED.@@ //[[Hide|Summary Options][$abbreviateDiet = 0]] | [[Abbreviate|Summary Options][$abbreviateDiet = 1]]//
-<<elseif $abbreviateDiet == 1>>
-	@@.yellow;ABBREVIATED.@@ //[[Hide|Summary Options][$abbreviateDiet = 0]] | [[Summarize|Summary Options][$abbreviateDiet = 2]]//
-<<else>>
-	@@.red;HIDDEN.@@ //[[Abbreviate|Summary Options][$abbreviateDiet = 1]] | [[Summarize|Summary Options][$abbreviateDiet = 2]]//
-<</if>>
+<span id="OptionAbbreviateHealth"><<OptionAbbreviateHealth>></span>
 
 <br>
-
-Drugs and addiction are
-<<if $abbreviateDrugs == 2>>
-	@@.cyan;SUMMARIZED.@@ //[[Hide|Summary Options][$abbreviateDrugs = 0]] | [[Abbreviate|Summary Options][$abbreviateDrugs = 1]]//
-<<elseif $abbreviateDrugs == 1>>
-	@@.yellow;ABBREVIATED.@@ //[[Hide|Summary Options][$abbreviateDrugs = 0]] | [[Summarize|Summary Options][$abbreviateDrugs = 2]]//
-<<else>>
-	@@.red;HIDDEN.@@ //[[Abbreviate|Summary Options][$abbreviateDrugs = 1]] | [[Summarize|Summary Options][$abbreviateDrugs = 2]]//
-<</if>>
+<span id="OptionAbbreviateDrugs"><<OptionAbbreviateDrugs>></span>
 
 <br>
-
-Genitalia are
-<<if $abbreviateGenitalia == 2>>
-	@@.cyan;SUMMARIZED.@@ //[[Hide|Summary Options][$abbreviateGenitalia = 0]] | [[Abbreviate|Summary Options][$abbreviateGenitalia = 1]]//
-<<elseif $abbreviateGenitalia == 1>>
-	@@.yellow;ABBREVIATED.@@ //[[Hide|Summary Options][$abbreviateGenitalia = 0]] | [[Summarize|Summary Options][$abbreviateGenitalia = 2]]//
-<<else>>
-	@@.red;HIDDEN.@@ //[[Abbreviate|Summary Options][$abbreviateGenitalia = 1]] | [[Summarize|Summary Options][$abbreviateGenitalia = 2]]//
-<</if>>
+<span id="OptionAbbreviateRace"><<OptionAbbreviateRace>></span>
 
 <br>
-
-Physical traits are
-<<if $abbreviatePhysicals == 2>>
-	@@.cyan;SUMMARIZED.@@ //[[Hide|Summary Options][$abbreviatePhysicals = 0]] | [[Abbreviate|Summary Options][$abbreviatePhysicals = 1]]//
-<<elseif $abbreviatePhysicals == 1>>
-	@@.yellow;ABBREVIATED.@@ //[[Hide|Summary Options][$abbreviatePhysicals = 0]] | [[Summarize|Summary Options][$abbreviatePhysicals = 2]]//
-<<else>>
-	@@.red;HIDDEN.@@ //[[Abbreviate|Summary Options][$abbreviatePhysicals = 1]] | [[Summarize|Summary Options][$abbreviatePhysicals = 2]]//
-<</if>>
+<span id="OptionAbbreviateNationality"><<OptionAbbreviateNationality>></span>
 
 <br>
-
-Skills are
-<<if $abbreviateSkills == 2>>
-	@@.cyan;SUMMARIZED.@@ //[[Hide|Summary Options][$abbreviateSkills = 0]] | [[Abbreviate|Summary Options][$abbreviateSkills = 1]]//
-<<elseif $abbreviateSkills == 1>>
-	@@.yellow;ABBREVIATED.@@ //[[Hide|Summary Options][$abbreviateSkills = 0]] | [[Summarize|Summary Options][$abbreviateSkills = 2]]//
-<<else>>
-	@@.red;HIDDEN.@@ //[[Abbreviate|Summary Options][$abbreviateSkills = 1]] | [[Summarize|Summary Options][$abbreviateSkills = 2]]//
-<</if>>
+<span id="OptionAbbreviateGenitalia"><<OptionAbbreviateGenitalia>></span>
 
 <br>
-
-Mental attributes are
-<<if $abbreviateMental == 2>>
-	@@.cyan;SUMMARIZED.@@ //[[Hide|Summary Options][$abbreviateMental = 0]] | [[Abbreviate|Summary Options][$abbreviateMental = 1]]//
-<<elseif $abbreviateMental == 1>>
-	@@.yellow;ABBREVIATED.@@ //[[Hide|Summary Options][$abbreviateMental = 0]] | [[Summarize|Summary Options][$abbreviateMental = 2]]//
-<<else>>
-	@@.red;HIDDEN.@@ //[[Abbreviate|Summary Options][$abbreviateMental = 1]] | [[Summarize|Summary Options][$abbreviateMental = 2]]//
-<</if>>
+<span id="OptionAbbreviatePhysicals"><<OptionAbbreviatePhysicals>></span>
 
 <br>
-
-Nationality is
-<<if $abbreviateNationality == 2>>
-	@@.cyan;SUMMARIZED.@@ //[[Hide|Summary Options][$abbreviateNationality = 0]] | [[Abbreviate|Summary Options][$abbreviateNationality = 1]] //
-<<elseif $abbreviateNationality == 1>>
-	@@.yellow;ABBREVIATED.@@ //[[Hide|Summary Options][$abbreviateNationality = 0]] | [[Summarize|Summary Options][$abbreviateNationality = 2]]//
-<<else>>
-	@@.red;HIDDEN.@@ //[[Abbreviate|Summary Options][$abbreviateNationality = 1]] | [[Summarize|Summary Options][$abbreviateNationality = 2]]//
-<</if>>
+<span id="OptionAbbreviateSkills"><<OptionAbbreviateSkills>></span>
 
 <br>
-
-Race is
-<<if $abbreviateRace == 2>>
-	@@.cyan;SUMMARIZED.@@ //[[Hide|Summary Options][$abbreviateRace = 0]] | [[Abbreviate|Summary Options][$abbreviateRace = 1]]//
-<<elseif $abbreviateRace == 1>>
-	@@.yellow;ABBREVIATED.@@ //[[Hide|Summary Options][$abbreviateRace = 0]] | [[Summarize|Summary Options][$abbreviateRace = 2]]//
-<<else>>
-	@@.red;HIDDEN.@@ //[[Abbreviate|Summary Options][$abbreviateRace = 1]] | [[Summarize|Summary Options][$abbreviateRace = 2]]//
-<</if>>
+<span id="OptionAbbreviateMental"><<OptionAbbreviateMental>></span>
 
 <br>
-
-Clothes are
-<<if $abbreviateClothes == 2>>
-	@@.cyan;SUMMARIZED.@@ //[[Hide|Summary Options][$abbreviateClothes = 0]]//
-<<else>>
-	@@.red;HIDDEN.@@ //[[Summarize|Summary Options][$abbreviateClothes = 2]]//
-<</if>>
-
-<br>
-
-Origins are
-<<if $abbreviateOrigins == 2>>
-	@@.cyan;SUMMARIZED.@@ //[[Hide|Summary Options][$abbreviateOrigins = 0]]//
-<<else>>
-	@@.red;HIDDEN.@@ //[[Summarize|Summary Options][$abbreviateOrigins = 2]]//
-<</if>>
+<span id="OptionAbbreviateClothes"><<OptionAbbreviateClothes>></span>
 
 <br>
-
-Rules Assistant rulesets are
-<<if $abbreviateRulesets == 2>>
-	@@.cyan;SUMMARIZED.@@ //[[Hide|Summary Options][$abbreviateRulesets = 0]]//
-<<else>>
-	@@.red;HIDDEN.@@ //[[Summarize|Summary Options][$abbreviateRulesets = 2]]//
-<</if>>
+<span id="OptionAbbreviateRulesets"><<OptionAbbreviateRulesets>></span>
 
 <br>
-
-Facilities in the sidebar are
-<<if $abbreviateSidebar == 2>>
-	@@.cyan;SUMMARIZED.@@ //[[Abbreviate|Summary Options][$abbreviateSidebar = 1]]//
-<<else>>
-	@@.yellow;ABBREVIATED.@@ //[[Summarize|Summary Options][$abbreviateSidebar = 2]]//
-<</if>>
+<span id="OptionAbbreviateOrigins"><<OptionAbbreviateOrigins>></span>
 
 <br><br>
 
diff --git a/src/uncategorized/walkPast.tw b/src/uncategorized/walkPast.tw
index 7219eb3d5e6..10a421e965b 100644
--- a/src/uncategorized/walkPast.tw
+++ b/src/uncategorized/walkPast.tw
@@ -258,8 +258,6 @@
 /%
 	<<case "guard you">>
 		is standing discreetly behind your left shoulder, watching for threats. She has a straight ceramic sword strapped to her back and a machine pistol at her hip.
-	<<case "be the Collectrix">>
-		is working in the collection facility, looking after your stock.
 %/
 	<<default>> /* WALKPASTS START HERE */
 
@@ -664,7 +662,7 @@
 			with $activeSlave.slaveName hungrily sucking her _activeSlaveRel's limp cock. She has a finger massaging poor impotent _partnerSlave.slaveName's perineum in the hope of stimulating her so she can cum for her.
 			<<set _partnerSlave.penetrativeCount++, $penetrativeTotal++>>
 		<<else>>
-			and $activeSlave.slaveName is sating her oral fixation for the moment by eagerly polishing _activeSlaveRel's pearl.
+			and $activeSlave.slaveName is sating her oral fixation for the moment by eagerly polishing her _activeSlaveRel's pearl.
 			<<set _partnerSlave.oralCount++, $oralTotal++>>
 		<</if>>
 		<<set $activeSlave.oralCount++, $oralTotal++>>
diff --git a/src/utility/optionsWidgets.tw b/src/utility/optionsWidgets.tw
new file mode 100644
index 00000000000..bcce4d87a49
--- /dev/null
+++ b/src/utility/optionsWidgets.tw
@@ -0,0 +1,775 @@
+:: Option Widgets [widget nobr]
+
+/%
+  Call as <<OptionLineSeparations>>
+    Should be placed in a <span> with id = "OptionLineSeparations"
+%/
+<<widget "OptionLineSeparations">>
+Line separations are 
+<<if $lineSeparations == 0>>
+	@@.red;HIDDEN.@@
+	//<<link 'Show'>>
+		<<set $lineSeparations = 1>>
+		<<replace '#OptionLineSeparations'>>
+			<<OptionLineSeparations>>
+		<</replace>>
+	<</link>>//
+<<else>>
+	@@.cyan;SHOWN.@@
+	//<<link 'Hide'>>
+		<<set $lineSeparations = 0>>
+		<<replace '#OptionLineSeparations'>>
+			<<OptionLineSeparations>>
+		<</replace>>
+	<</link>>//
+<</if>>
+
+<</widget>>
+
+/%
+  Call as <<OptionSortBy>>
+    Should be placed in a <span> with id = "OptionSortBy"
+%/
+<<widget "OptionSortBy">>
+<<if $sortSlavesBy == "name">>
+	Slaves are sorted on the main menu by @@.yellow;NAME.@@
+<<elseif $sortSlavesBy == "seniority">>
+	Slaves are sorted on the main menu by @@.yellow;SENIORITY.@@
+<<elseif $sortSlavesBy == "actualAge">>
+	Slaves are sorted on the main menu by @@.yellow;TRUE AGE.@@
+<<elseif $sortSlavesBy == "visualAge">>
+	Slaves are sorted on the main menu by @@.yellow;APPARENT AGE.@@
+<<elseif $sortSlavesBy == "physicalAge">>
+	Slaves are sorted on the main menu by @@.yellow;BODILY AGE.@@
+<<elseif $sortSlavesBy == "assignment">>
+	Slaves are sorted on the main menu by @@.yellow;ASSIGNMENT.@@
+<<else>>
+	Slaves are sorted on the main menu by @@.yellow;DEVOTION.@@
+<</if>>
+//
+<<link 'Devotion'>>
+	<<set $sortSlavesBy = "devotion">>
+	<<replace '#OptionSortBy'>>
+		<<OptionSortBy>>
+	<</replace>>
+<</link>>
+|
+<<link 'Name'>>
+	<<set $sortSlavesBy = "name">>
+	<<replace '#OptionSortBy'>>
+		<<OptionSortBy>>
+	<</replace>>
+<</link>>
+|
+<<link 'Assignment'>>
+	<<set $sortSlavesBy = "assignment">>
+	<<replace '#OptionSortBy'>>
+		<<OptionSortBy>>
+	<</replace>>
+<</link>>
+|
+<<link 'Date purchased'>>
+	<<set $sortSlavesBy = "seniority">>
+	<<replace '#OptionSortBy'>>
+		<<OptionSortBy>>
+	<</replace>>
+<</link>>
+| 
+<<link 'Age'>>
+	<<set $sortSlavesBy = "actualAge">>
+	<<replace '#OptionSortBy'>>
+		<<OptionSortBy>>
+	<</replace>>
+<</link>>
+| 
+<<link 'How old they look'>>
+	<<set $sortSlavesBy = "visualAge">>
+	<<replace '#OptionSortBy'>>
+		<<OptionSortBy>>
+	<</replace>>
+<</link>>
+| 
+<<link 'Age of their body'>>
+	<<set $sortSlavesBy = "physicalAge">>
+	<<replace '#OptionSortBy'>>
+		<<OptionSortBy>>
+	<</replace>>
+<</link>>
+//
+<</widget>>
+
+/%
+  Call as <<OptionSortOrder>>
+    Should be placed in a <span> with id = "OptionSortOrder"
+%/
+<<widget "OptionSortOrder">>
+<<if $sortSlavesOrder == "ascending">>
+	Slaves are sorted in @@.cyan;ASCENDING@@ order.
+	//<<link 'Sort descending'>>
+		<<set $sortSlavesOrder = "descending">>
+		<<replace '#OptionSortOrder'>>
+			<<OptionSortOrder>>
+		<</replace>>
+	<</link>>//
+<<else>>
+	Slaves are sorted in @@.red;DESCENDING@@ order.
+	//<<link 'Sort ascending'>>
+		<<set $sortSlavesOrder = "ascending">>
+		<<replace '#OptionSortOrder'>>
+			<<OptionSortOrder>>
+		<</replace>>
+	<</link>>//
+<</if>>
+<</widget>>
+
+/%
+  Call as <<OptionSortMain>>
+    Should be placed in a <span> with id = "OptionSortMain"
+%/
+<<widget "OptionSortMain">>
+<<if $sortSlavesMain == 0>>
+	Sort options are @@.red;HIDDEN@@ on the main menu.
+	//<<link 'Show'>>
+		<<set $sortSlavesMain = 1>>
+		<<replace '#OptionSortMain'>>
+			<<OptionSortMain>>
+		<</replace>>
+	<</link>>//
+<<else>>
+	Sort options are @@.cyan;SHOWN@@ on the main menu.
+	//<<link 'Hide'>>
+		<<set $sortSlavesMain = 0>>
+		<<replace '#OptionSortMain'>>
+			<<OptionSortMain>>
+		<</replace>>
+	<</link>>//
+<</if>>
+<</widget>>
+
+/%
+  Call as <<OptionRulesAssistantMain>>
+    Should be placed in a <span> with id = "OptionRulesAssistantMain"
+%/
+<<widget "OptionRulesAssistantMain">>
+<<if $rulesAssistantMain == 0>>
+	The rules assistant is @@.red;HIDDEN.@@
+	//<<link 'Show'>>
+		<<set $rulesAssistantMain = 1>>
+		<<replace '#OptionRulesAssistantMain'>>
+			<<OptionRulesAssistantMain>>
+		<</replace>>
+	<</link>>//
+<<else>>
+	The rules assistant is @@.cyan;SHOWN.@@
+	//<<link 'Hide'>>
+		<<set $rulesAssistantMain = 0>>
+		<<replace '#OptionRulesAssistantMain'>>
+			<<OptionRulesAssistantMain>>
+		<</replace>>
+	<</link>>//
+<</if>>
+
+<</widget>>
+
+/%
+  Call as <<OptionDisplayAssignments>>
+    Should be placed in a <span> with id = "OptionDisplayAssignments"
+%/
+<<widget "OptionDisplayAssignments">>
+Main menu assignment shortcuts are
+<<if $displayAssignments == 1>>
+	@@.cyan;SHOWN.@@
+	//<<link 'Hide'>>
+		<<set $displayAssignments = 0>>
+		<<replace '#OptionDisplayAssignments'>>
+			<<OptionDisplayAssignments>>
+		<</replace>>
+	<</link>>//
+<<else>>
+	@@.red;HIDDEN.@@ 
+	//<<link 'Show'>>
+		<<set $displayAssignments = 1>>
+		<<replace '#OptionDisplayAssignments'>>
+			<<OptionDisplayAssignments>>
+		<</replace>>
+	<</link>>//
+<</if>>
+
+<</widget>>
+
+/%
+  Call as <<OptionSummaryStats>>
+    Should be placed in a <span> with id = "OptionSummaryStats"
+%/
+<<widget "OptionSummaryStats">>
+Granular slave stat numbers are
+<<if $summaryStats == 1>>
+	@@.cyan;DISPLAYED.@@ 
+	//<<link 'Hide'>>
+		<<set $summaryStats = 0>>
+		<<replace '#OptionSummaryStats'>>
+			<<OptionSummaryStats>>
+		<</replace>>
+	<</link>>//
+<<else>>
+	@@.red;HIDDEN.@@ 
+	//<<link 'Display'>>
+		<<set $summaryStats = 1>>
+		<<replace '#OptionSummaryStats'>>
+			<<OptionSummaryStats>>
+		<</replace>>
+	<</link>>//
+<</if>>
+<</widget>>
+
+/%
+  Call as <<OptionAbbreviateDevotion>>
+    Should be placed in a <span> with id = "OptionAbbreviateDevotion"
+%/
+<<widget "OptionAbbreviateDevotion">>
+Mental stats are
+<<if $abbreviateDevotion == 2>>
+	@@.cyan;SUMMARIZED.@@
+<<elseif $abbreviateDevotion == 1>>
+	@@.yellow;ABBREVIATED.@@
+<<else>>
+	@@.red;HIDDEN.@@
+<</if>>
+
+<<if $abbreviateDevotion != 0>>
+	//<<link 'Hide'>>
+		<<set $abbreviateDevotion = 0>>
+		<<replace '#OptionAbbreviateDevotion'>>
+			<<OptionAbbreviateDevotion>>
+		<</replace>>
+	<</link>>// |
+<</if>>
+<<if $abbreviateDevotion != 1>>
+	//<<link 'Abbreviate'>>
+		<<set $abbreviateDevotion = 1>>
+		<<replace '#OptionAbbreviateDevotion'>>
+			<<OptionAbbreviateDevotion>>
+		<</replace>>
+	<</link>>//
+	<<if $abbreviateDevotion != 2>>|<</if>>
+<</if>>
+<<if $abbreviateDevotion != 2>>
+	//<<link 'Summarize'>>
+		<<set $abbreviateDevotion = 2>>
+		<<replace '#OptionAbbreviateDevotion'>>
+			<<OptionAbbreviateDevotion>>
+		<</replace>>
+	<</link>>//
+<</if>>
+<</widget>>
+
+/%
+  Call as <<OptionAbbreviateRules>>
+    Should be placed in a <span> with id = "OptionAbbreviateRules"
+%/
+<<widget "OptionAbbreviateRules">>
+Rules are
+<<if $abbreviateRules == 2>>
+	@@.cyan;SUMMARIZED.@@
+<<elseif $abbreviateRules == 1>>
+	@@.yellow;ABBREVIATED.@@
+<<else>>
+	@@.red;HIDDEN.@@
+<</if>>
+
+<<if $abbreviateRules != 0>>
+	//<<link 'Hide'>>
+		<<set $abbreviateRules = 0>>
+		<<replace '#OptionAbbreviateRules'>>
+			<<OptionAbbreviateRules>>
+		<</replace>>
+	<</link>>// |
+<</if>>
+<<if $abbreviateRules != 1>>
+	//<<link 'Abbreviate'>>
+		<<set $abbreviateRules = 1>>
+		<<replace '#OptionAbbreviateRules'>>
+			<<OptionAbbreviateRules>>
+		<</replace>>
+	<</link>>//
+	<<if $abbreviateRules != 2>>|<</if>>
+<</if>>
+<<if $abbreviateRules != 2>>
+	//<<link 'Summarize'>>
+		<<set $abbreviateRules = 2>>
+		<<replace '#OptionAbbreviateRules'>>
+			<<OptionAbbreviateRules>>
+		<</replace>>
+	<</link>>//
+<</if>>
+<</widget>>
+
+/%
+  Call as <<OptionAbbreviateHealth>>
+    Should be placed in a <span> with id = "OptionAbbreviateHealth"
+%/
+<<widget "OptionAbbreviateHealth">>
+Health is
+<<if $abbreviateHealth == 2>>
+	@@.cyan;SUMMARIZED.@@
+<<elseif $abbreviateHealth == 1>>
+	@@.yellow;ABBREVIATED.@@
+<<else>>
+	@@.red;HIDDEN.@@
+<</if>>
+
+<<if $abbreviateHealth != 0>>
+	//<<link 'Hide'>>
+		<<set $abbreviateHealth = 0>>
+		<<replace '#OptionAbbreviateHealth'>>
+			<<OptionAbbreviateHealth>>
+		<</replace>>
+	<</link>>// |
+<</if>>
+<<if $abbreviateHealth != 1>>
+	//<<link 'Abbreviate'>>
+		<<set $abbreviateHealth = 1>>
+		<<replace '#OptionAbbreviateHealth'>>
+			<<OptionAbbreviateHealth>>
+		<</replace>>
+	<</link>>//
+	<<if $abbreviateHealth != 2>>|<</if>>
+<</if>>
+<<if $abbreviateHealth != 2>>
+	//<<link 'Summarize'>>
+		<<set $abbreviateHealth = 2>>
+		<<replace '#OptionAbbreviateHealth'>>
+			<<OptionAbbreviateHealth>>
+		<</replace>>
+	<</link>>//
+<</if>>
+<</widget>>
+
+/%
+  Call as <<OptionAbbreviateDiet>>
+    Should be placed in a <span> with id = "OptionAbbreviateDiet"
+%/
+<<widget "OptionAbbreviateDiet">>
+Diet and weight are
+<<if $abbreviateDiet == 2>>
+	@@.cyan;SUMMARIZED.@@
+<<elseif $abbreviateDiet == 1>>
+	@@.yellow;ABBREVIATED.@@
+<<else>>
+	@@.red;HIDDEN.@@
+<</if>>
+
+<<if $abbreviateDiet != 0>>
+	//<<link 'Hide'>>
+		<<set $abbreviateDiet = 0>>
+		<<replace '#OptionAbbreviateDiet'>>
+			<<OptionAbbreviateDiet>>
+		<</replace>>
+	<</link>>// |
+<</if>>
+<<if $abbreviateDiet != 1>>
+	//<<link 'Abbreviate'>>
+		<<set $abbreviateDiet = 1>>
+		<<replace '#OptionAbbreviateDiet'>>
+			<<OptionAbbreviateDiet>>
+		<</replace>>
+	<</link>>//
+	<<if $abbreviateDiet != 2>>|<</if>>
+<</if>>
+<<if $abbreviateDiet != 2>>
+	//<<link 'Summarize'>>
+		<<set $abbreviateDiet = 2>>
+		<<replace '#OptionAbbreviateDiet'>>
+			<<OptionAbbreviateDiet>>
+		<</replace>>
+	<</link>>//
+<</if>>
+<</widget>>
+
+/%
+  Call as <<OptionAbbreviateDrugs>>
+    Should be placed in a <span> with id = "OptionAbbreviateDrugs"
+%/
+<<widget "OptionAbbreviateDrugs">>
+Drugs and addiction are
+<<if $abbreviateDrugs == 2>>
+	@@.cyan;SUMMARIZED.@@
+<<elseif $abbreviateDrugs == 1>>
+	@@.yellow;ABBREVIATED.@@
+<<else>>
+	@@.red;HIDDEN.@@
+<</if>>
+
+<<if $abbreviateDrugs != 0>>
+	//<<link 'Hide'>>
+		<<set $abbreviateDrugs = 0>>
+		<<replace '#OptionAbbreviateDrugs'>>
+			<<OptionAbbreviateDrugs>>
+		<</replace>>
+	<</link>>// |
+<</if>>
+<<if $abbreviateDrugs != 1>>
+	//<<link 'Abbreviate'>>
+		<<set $abbreviateDrugs = 1>>
+		<<replace '#OptionAbbreviateDrugs'>>
+			<<OptionAbbreviateDrugs>>
+		<</replace>>
+	<</link>>//
+	<<if $abbreviateDrugs != 2>>|<</if>>
+<</if>>
+<<if $abbreviateDrugs != 2>>
+	//<<link 'Summarize'>>
+		<<set $abbreviateDrugs = 2>>
+		<<replace '#OptionAbbreviateDrugs'>>
+			<<OptionAbbreviateDrugs>>
+		<</replace>>
+	<</link>>//
+<</if>>
+<</widget>>
+
+/%
+  Call as <<OptionAbbreviateGenitalia>>
+    Should be placed in a <span> with id = "OptionAbbreviateGenitalia"
+%/
+<<widget "OptionAbbreviateGenitalia">>
+Genitalia are
+<<if $abbreviateGenitalia == 2>>
+	@@.cyan;SUMMARIZED.@@
+<<elseif $abbreviateGenitalia == 1>>
+	@@.yellow;ABBREVIATED.@@
+<<else>>
+	@@.red;HIDDEN.@@
+<</if>>
+
+<<if $abbreviateGenitalia != 0>>
+	//<<link 'Hide'>>
+		<<set $abbreviateGenitalia = 0>>
+		<<replace '#OptionAbbreviateGenitalia'>>
+			<<OptionAbbreviateGenitalia>>
+		<</replace>>
+	<</link>>// |
+<</if>>
+<<if $abbreviateGenitalia != 1>>
+	//<<link 'Abbreviate'>>
+		<<set $abbreviateGenitalia = 1>>
+		<<replace '#OptionAbbreviateGenitalia'>>
+			<<OptionAbbreviateGenitalia>>
+		<</replace>>
+	<</link>>//
+	<<if $abbreviateGenitalia != 2>>|<</if>>
+<</if>>
+<<if $abbreviateGenitalia != 2>>
+	//<<link 'Summarize'>>
+		<<set $abbreviateGenitalia = 2>>
+		<<replace '#OptionAbbreviateGenitalia'>>
+			<<OptionAbbreviateGenitalia>>
+		<</replace>>
+	<</link>>//
+<</if>>
+<</widget>>
+
+/%
+  Call as <<OptionAbbreviatePhysicals>>
+    Should be placed in a <span> with id = "OptionAbbreviatePhysicals"
+%/
+<<widget "OptionAbbreviatePhysicals">>
+Physical traits are
+<<if $abbreviatePhysicals == 2>>
+	@@.cyan;SUMMARIZED.@@
+<<elseif $abbreviatePhysicals == 1>>
+	@@.yellow;ABBREVIATED.@@
+<<else>>
+	@@.red;HIDDEN.@@
+<</if>>
+
+<<if $abbreviatePhysicals != 0>>
+	//<<link 'Hide'>>
+		<<set $abbreviatePhysicals = 0>>
+		<<replace '#OptionAbbreviatePhysicals'>>
+			<<OptionAbbreviatePhysicals>>
+		<</replace>>
+	<</link>>// |
+<</if>>
+<<if $abbreviatePhysicals != 1>>
+	//<<link 'Abbreviate'>>
+		<<set $abbreviatePhysicals = 1>>
+		<<replace '#OptionAbbreviatePhysicals'>>
+			<<OptionAbbreviatePhysicals>>
+		<</replace>>
+	<</link>>//
+	<<if $abbreviatePhysicals != 2>>|<</if>>
+<</if>>
+<<if $abbreviatePhysicals != 2>>
+	//<<link 'Summarize'>>
+		<<set $abbreviatePhysicals = 2>>
+		<<replace '#OptionAbbreviatePhysicals'>>
+			<<OptionAbbreviatePhysicals>>
+		<</replace>>
+	<</link>>//
+<</if>>
+<</widget>>
+
+/%
+  Call as <<OptionAbbreviateSkills>>
+    Should be placed in a <span> with id = "OptionAbbreviateSkills"
+%/
+<<widget "OptionAbbreviateSkills">>
+Skills are
+<<if $abbreviateSkills == 2>>
+	@@.cyan;SUMMARIZED.@@
+<<elseif $abbreviateSkills == 1>>
+	@@.yellow;ABBREVIATED.@@
+<<else>>
+	@@.red;HIDDEN.@@
+<</if>>
+
+<<if $abbreviateSkills != 0>>
+	//<<link 'Hide'>>
+		<<set $abbreviateSkills = 0>>
+		<<replace '#OptionAbbreviateSkills'>>
+			<<OptionAbbreviateSkills>>
+		<</replace>>
+	<</link>>// |
+<</if>>
+<<if $abbreviateSkills != 1>>
+	//<<link 'Abbreviate'>>
+		<<set $abbreviateSkills = 1>>
+		<<replace '#OptionAbbreviateSkills'>>
+			<<OptionAbbreviateSkills>>
+		<</replace>>
+	<</link>>//
+	<<if $abbreviateSkills != 2>>|<</if>>
+<</if>>
+<<if $abbreviateSkills != 2>>
+	//<<link 'Summarize'>>
+		<<set $abbreviateSkills = 2>>
+		<<replace '#OptionAbbreviateSkills'>>
+			<<OptionAbbreviateSkills>>
+		<</replace>>
+	<</link>>//
+<</if>>
+<</widget>>
+
+/%
+  Call as <<OptionAbbreviateMental>>
+    Should be placed in a <span> with id = "OptionAbbreviateMental"
+%/
+<<widget "OptionAbbreviateMental">>
+Mental attributes are
+<<if $abbreviateMental == 2>>
+	@@.cyan;SUMMARIZED.@@
+<<elseif $abbreviateMental == 1>>
+	@@.yellow;ABBREVIATED.@@
+<<else>>
+	@@.red;HIDDEN.@@
+<</if>>
+
+<<if $abbreviateMental != 0>>
+	//<<link 'Hide'>>
+		<<set $abbreviateMental = 0>>
+		<<replace '#OptionAbbreviateMental'>>
+			<<OptionAbbreviateMental>>
+		<</replace>>
+	<</link>>// |
+<</if>>
+<<if $abbreviateMental != 1>>
+	//<<link 'Abbreviate'>>
+		<<set $abbreviateMental = 1>>
+		<<replace '#OptionAbbreviateMental'>>
+			<<OptionAbbreviateMental>>
+		<</replace>>
+	<</link>>//
+	<<if $abbreviateMental != 2>>|<</if>>
+<</if>>
+<<if $abbreviateMental != 2>>
+	//<<link 'Summarize'>>
+		<<set $abbreviateMental = 2>>
+		<<replace '#OptionAbbreviateMental'>>
+			<<OptionAbbreviateMental>>
+		<</replace>>
+	<</link>>//
+<</if>>
+<</widget>>
+
+/%
+  Call as <<OptionAbbreviateNationality>>
+    Should be placed in a <span> with id = "OptionAbbreviateNationality"
+%/
+<<widget "OptionAbbreviateNationality">>
+Nationality is
+<<if $abbreviateNationality == 2>>
+	@@.cyan;SUMMARIZED.@@
+<<elseif $abbreviateNationality == 1>>
+	@@.yellow;ABBREVIATED.@@
+<<else>>
+	@@.red;HIDDEN.@@
+<</if>>
+
+<<if $abbreviateNationality != 0>>
+	//<<link 'Hide'>>
+		<<set $abbreviateNationality = 0>>
+		<<replace '#OptionAbbreviateNationality'>>
+			<<OptionAbbreviateNationality>>
+		<</replace>>
+	<</link>>// |
+<</if>>
+<<if $abbreviateNationality != 1>>
+	//<<link 'Abbreviate'>>
+		<<set $abbreviateNationality = 1>>
+		<<replace '#OptionAbbreviateNationality'>>
+			<<OptionAbbreviateNationality>>
+		<</replace>>
+	<</link>>//
+	<<if $abbreviateNationality != 2>>|<</if>>
+<</if>>
+<<if $abbreviateNationality != 2>>
+	//<<link 'Summarize'>>
+		<<set $abbreviateNationality = 2>>
+		<<replace '#OptionAbbreviateNationality'>>
+			<<OptionAbbreviateNationality>>
+		<</replace>>
+	<</link>>//
+<</if>>
+<</widget>>
+
+/%
+  Call as <<OptionAbbreviateRace>>
+    Should be placed in a <span> with id = "OptionAbbreviateRace"
+%/
+<<widget "OptionAbbreviateRace">>
+Race is
+<<if $abbreviateRace == 2>>
+	@@.cyan;SUMMARIZED.@@
+<<elseif $abbreviateRace == 1>>
+	@@.yellow;ABBREVIATED.@@
+<<else>>
+	@@.red;HIDDEN.@@
+<</if>>
+
+<<if $abbreviateRace != 0>>
+	//<<link 'Hide'>>
+		<<set $abbreviateRace = 0>>
+		<<replace '#OptionAbbreviateRace'>>
+			<<OptionAbbreviateRace>>
+		<</replace>>
+	<</link>>// |
+<</if>>
+<<if $abbreviateRace != 1>>
+	//<<link 'Abbreviate'>>
+		<<set $abbreviateRace = 1>>
+		<<replace '#OptionAbbreviateRace'>>
+			<<OptionAbbreviateRace>>
+		<</replace>>
+	<</link>>//
+	<<if $abbreviateRace != 2>>|<</if>>
+<</if>>
+<<if $abbreviateRace != 2>>
+	//<<link 'Summarize'>>
+		<<set $abbreviateRace = 2>>
+		<<replace '#OptionAbbreviateRace'>>
+			<<OptionAbbreviateRace>>
+		<</replace>>
+	<</link>>//
+<</if>>
+<</widget>>
+
+/%
+  Call as <<OptionAbbreviateClothes>>
+    Should be placed in a <span> with id = "OptionAbbreviateClothes"
+%/
+<<widget "OptionAbbreviateClothes">>
+Clothes are
+<<if $abbreviateClothes == 2>>
+	@@.cyan;SUMMARIZED.@@ 
+	//<<link 'Hide'>>
+		<<set $abbreviateClothes = 0>>
+		<<replace '#OptionAbbreviateClothes'>>
+			<<OptionAbbreviateClothes>>
+		<</replace>>
+	<</link>>//
+<<else>>
+	@@.red;HIDDEN.@@ 
+	//<<link 'Summarize'>>
+		<<set $abbreviateClothes = 2>>
+		<<replace '#OptionAbbreviateClothes'>>
+			<<OptionAbbreviateClothes>>
+		<</replace>>
+	<</link>>//
+<</if>>
+<</widget>>
+
+/%
+  Call as <<OptionAbbreviateOrigins>>
+    Should be placed in a <span> with id = "OptionAbbreviateOrigins"
+%/
+<<widget "OptionAbbreviateOrigins">>
+Origins are
+<<if $abbreviateOrigins == 2>>
+	@@.cyan;SUMMARIZED.@@ 
+	//<<link 'Hide'>>
+		<<set $abbreviateOrigins = 0>>
+		<<replace '#OptionAbbreviateOrigins'>>
+			<<OptionAbbreviateOrigins>>
+		<</replace>>
+	<</link>>//
+<<else>>
+	@@.red;HIDDEN.@@ 
+	//<<link 'Summarize'>>
+		<<set $abbreviateOrigins = 2>>
+		<<replace '#OptionAbbreviateOrigins'>>
+			<<OptionAbbreviateOrigins>>
+		<</replace>>
+	<</link>>//
+<</if>>
+<</widget>>
+
+/%
+  Call as <<OptionAbbreviateRulesets>>
+    Should be placed in a <span> with id = "OptionAbbreviateRulesets"
+%/
+<<widget "OptionAbbreviateRulesets">>
+Rules Assistant rulesets are
+<<if $abbreviateRulesets == 2>>
+	@@.cyan;SUMMARIZED.@@ 
+	//<<link 'Hide'>>
+		<<set $abbreviateRulesets = 0>>
+		<<replace '#OptionAbbreviateRulesets'>>
+			<<OptionAbbreviateRulesets>>
+		<</replace>>
+	<</link>>//
+<<else>>
+	@@.red;HIDDEN.@@ 
+	//<<link 'Summarize'>>
+		<<set $abbreviateRulesets = 2>>
+		<<replace '#OptionAbbreviateRulesets'>>
+			<<OptionAbbreviateRulesets>>
+		<</replace>>
+	<</link>>//
+<</if>>
+<</widget>>
+
+/%
+  Call as <<OptionAbbreviateSidebar>>
+    Should be placed in a <span> with id = "OptionAbbreviateSidebar"
+%/
+<<widget "OptionAbbreviateSidebar">>
+Facilities in the sidebar are
+<<if $abbreviateSidebar == 2>>
+	@@.cyan;SUMMARIZED.@@ 
+	//<<link 'Abbreviate'>>
+		<<set $abbreviateSidebar = 1>>
+		<<replace '#OptionAbbreviateSidebar'>>
+			<<OptionAbbreviateSidebar>>
+		<</replace>>
+	<</link>>//
+<<else>>
+	@@.yellow;ABBREVIATED.@@ 
+	//<<link 'Summarize'>>
+		<<set $abbreviateSidebar = 2>>
+		<<replace '#OptionAbbreviateSidebar'>>
+			<<OptionAbbreviateSidebar>>
+		<</replace>>
+	<</link>>//
+<</if>>
+<</widget>>
+
diff --git a/src/utility/raWidgets.tw b/src/utility/raWidgets.tw
index b867122b9be..2f2a12fda50 100644
--- a/src/utility/raWidgets.tw
+++ b/src/utility/raWidgets.tw
@@ -4043,7 +4043,6 @@ check if a rule attribute, any one, is defined and otherwise skip everything.
 <<if ($args[0].assignment != "recruit girls")>>
 <<if ($args[0].assignment != "be the Wardeness")>>
 <<if ($args[0].assignment != "be the Madam")>>
-<<if ($args[0].assignment != "be the Collectrix")>>
 	<<set $args[0].hormones = _combinedRule.XY>>
 	<<if $args[0].indentureRestrictions >= 2>>
 		<<set $args[0].hormones = Math.clamp($args[0].hormones, -1, 1)>>
@@ -4056,7 +4055,6 @@ check if a rule attribute, any one, is defined and otherwise skip everything.
 <</if>>
 <</if>>
 <</if>>
-<</if>>
 
 <<if ($args[0].vagina > -1) && ($args[0].dick == 0) && (def _combinedRule.XX) && (_combinedRule.XX !== "no default setting")>>
 	<<if ($args[0].hormones !== _combinedRule.XX)>>
-- 
GitLab