From 58cba4bc8e6b45f32ccfee1c05053fad0a4eb9fd Mon Sep 17 00:00:00 2001
From: Pregmodder <pregmodder@gmail.com>
Date: Thu, 27 Apr 2017 03:56:08 -0400
Subject: [PATCH] More family tree stuff, especially player parent tracking.

---
 src/gui/css/familyTree.tw                     |   1 +
 src/init/storyInit.tw                         |   2 +-
 src/js/familyTree.tw                          |  31 +-
 src/pregmod/widgets/extendedFamilyWidgets.tw  | 135 ++++++---
 .../personalAssistantAppearance.tw            |  87 +++++-
 src/uncategorized/personalAssistantOptions.tw | 275 +++++++++++++++++-
 6 files changed, 473 insertions(+), 58 deletions(-)

diff --git a/src/gui/css/familyTree.tw b/src/gui/css/familyTree.tw
index 74c3850623e..7e638741571 100644
--- a/src/gui/css/familyTree.tw
+++ b/src/gui/css/familyTree.tw
@@ -65,6 +65,7 @@
 #editFamily {
     display: flex;
     flex-wrap: wrap;
+    align-items: center;
 }
 
 #editFamily #familyTable {
diff --git a/src/init/storyInit.tw b/src/init/storyInit.tw
index 0ae751f3ee8..988f0f070c6 100644
--- a/src/init/storyInit.tw
+++ b/src/init/storyInit.tw
@@ -887,7 +887,7 @@ DairyRestraintsSetting($dairyRestraintsSetting)
 
 <<set $schoolteacherCareers = ["a principal", "a teaching assistant", "a teacher", "a scientist", "a professor", "a private instructor", "a librarian", "a scholar"]>>
 
-<<set $whiteNationalities = ["American", "Argentinian", "Australian", "Austrian", "Belarusian", "Belgian", "Brazilian", "British", "Canadian", "Chilean", "Czech", "Danish", "Dutch", "Estonian", "Finnish", "French", "German", "Hungarian", "Icelandic", "Irish", "Israeli", "Italian", "Lithuanian", "Norwegian", "Polish", "Portuguese", "Romanian", "Russian", "Scottish", "Serbian", "Slovak", "South African", "Swiss", "Ukrainian", "a New Zealander"]>>
+<<set $whiteNationalities = ["American", "Argentinian", "Australian", "Austrian", "Belarusian", "Belgian", "Brazilian", "British", "Canadian", "Chilean", "Czech", "Danish", "Dutch", "Estonian", "Finnish", "French", "German", "Hungarian", "Icelandic", "Irish", "Israeli", "Italian", "Lithuanian", "Norwegian", "Polish", "Portuguese", "Romanian", "Russian", "Scottish", "Serbian", "Slovak", "South African", "Swedish", "Swiss", "Ukrainian", "a New Zealander"]>>
 
 <<set $asianNationalities = ["American", "Australian", "Burmese", "Chinese", "Filipina", "Indonesian", "Japanese", "Kazakh", "Korean", "Malaysian", "Nepalese", "Saudi", "Thai", "Uzbek", "Vietnamese"]>>
 
diff --git a/src/js/familyTree.tw b/src/js/familyTree.tw
index 1fbad74341e..5bdaf3db95c 100644
--- a/src/js/familyTree.tw
+++ b/src/js/familyTree.tw
@@ -16,7 +16,7 @@ window.updateFamilyTree = function(activeSlave = lastActiveSlave, slaves = lastS
 
   function getSlave(id, expectedGenes) {
     if(id == -1) {
-      return {"slaveName":"YOU", "ID":id, "genes":PC.genes, father:PC.father, mother:PC.mother};
+      return {"slaveName":"YOU", "ID":id, "physicalAge":PC.physicalAge, "genes":PC.genes, father:PC.father, mother:PC.mother};
     }
     if(id == 0) {
       return {"slaveName":"-", "ID":id, "genes":expectedGenes};
@@ -64,7 +64,7 @@ window.updateFamilyTree = function(activeSlave = lastActiveSlave, slaves = lastS
       slavesAdded[slave.ID] = true;
     }
     var data = {
-      "name": slave.slaveName,
+      "name": slave.slaveName + (slave.physicalAge?("&nbsp;(" + slave.physicalAge + ")"):""),
       "class" : slave.genes,
       "textClass": (activeSlaveId == slave.ID)?"emphasis":"",
       "marriages": [],
@@ -80,8 +80,7 @@ window.updateFamilyTree = function(activeSlave = lastActiveSlave, slaves = lastS
           spouseToChild[child.mother] = []
         }
         spouseToChild[child.mother].push(child);
-      }
-      if (child.mother == slave.ID) {
+      } else if (child.mother == slave.ID) {
         if(!spouseToChild[child.father]) {
           spouseToChild[child.father] = []
         }
@@ -99,9 +98,15 @@ window.updateFamilyTree = function(activeSlave = lastActiveSlave, slaves = lastS
     for(var key in spouseToChild) {
       if(spouseToChild.hasOwnProperty(key)) {
         var children = shouldAddChildren?spouseToChild[key]:[];
-        var spouse = getSlave(key, (slaves.genes=="XX")?"unknownXY":(slaves.genes=="XY")?"unknownXX":"unknown")
+        var spouse = getSlave(key, (slaves.genes=="XX")?"unknownXY":(slaves.genes=="XY")?"unknownXX":"unknown");
+        var spouseName;
+        if (spouse.ID != slave.ID){
+          spouseName = spouse.slaveName + (spouse.physicalAge?("&nbsp;(" + spouse.physicalAge + ")"):"")
+        } else {
+          spouseName = (spouse.ID==-1)?"(yourself)":"(themselves)";
+        }
         var marriage = {
-          "spouse": {"name": spouse.slaveName, "class": spouse.genes},
+          "spouse": {"name": spouseName, "class": spouse.genes},
           "children": children.map(function(x) slaveInfo_(x, activeSlaveId, slavesAdded, depth+1) ),
         };
         data.marriages.push(marriage);
@@ -111,14 +116,22 @@ window.updateFamilyTree = function(activeSlave = lastActiveSlave, slaves = lastS
   }
 
   const treeData = [slaveInfo(activeSlave, activeSlave.ID)];
-  console.log("Family tree is", treeData);
+  console.log("Family tree is", treeData, 'and has:', numTreeNodes);
+
+  var parentWidth = document.getElementById('editFamily').offsetWidth;
+
+  console.log(parentWidth, document.getElementById('passages').offsetWidth);
+  if(!parentWidth)
+    parentWidth = document.body.offsetWidth - 483;
+
+  console.log(parentWidth, Math.min(200 + 40*numTreeNodes,parentWidth-200) + 200);
 
   dTree.init(treeData, {
 	target: "#graph",
 	debug: true,
 	height: 50 + 50*treeDepth, /* very rough heuristics */
-	width: Math.max(300 + 40*numTreeNodes,
-                  document.getElementById('editFamily').offsetWidth-200) + 200,
+	width: Math.min(200 + 40*numTreeNodes,
+                  parentWidth-200) + 200,
 	callbacks: {
 		nodeClick: function(name, extra) {
 		}
diff --git a/src/pregmod/widgets/extendedFamilyWidgets.tw b/src/pregmod/widgets/extendedFamilyWidgets.tw
index 8b45b2acdc7..5b4d91e5773 100644
--- a/src/pregmod/widgets/extendedFamilyWidgets.tw
+++ b/src/pregmod/widgets/extendedFamilyWidgets.tw
@@ -893,18 +893,33 @@
 <</if>>
 <</widget>>
 
+<<widget "redisplayFamily">>
+<<replace '#fatheredNames'>><<listOfSlavesWithParent "father" $activeSlave.ID>><</replace>>
+<<replace '#motheredNames'>><<listOfSlavesWithParent "mother" $activeSlave.ID>><</replace>>
+<<replace '#familySummary'>><<Family>><</replace>>
+<<replace '#motherName'>><<parentName "mother">><</replace>>
+<<replace '#fatherName'>><<parentName "father">><</replace>>
+<<replace '#sameMotherNames'>><<listOfSlavesWithSameParent 'mother'>><</replace>>
+<<replace '#sameFatherNames'>><<listOfSlavesWithSameParent 'father'>><</replace>>
+<<run updateFamilyTree($activeSlave, $slaves, $PC)>>
+<</widget>>
+
+/* First parameter is e.g. "father" or "mother"   and second parameter is the ID to match */
+<<widget "listOfSlavesWithParent">>
+<<if $args[1] != 0>>
+<<set _printSeperator = false>>
+<<if $args[1] == $PC[$args[0]]>>You<<set _printSeperator = true>><</if>><<for _j = 0; _j < $slaves.length; _j++>><<if $slaves[_j][$args[0]] == $args[1]>><<if _printSeperator>> | <</if>><<set _printSeperator to true>><<print $slaves[_j].slaveName>><</if>><</for>>
+<</if>>
+<</widget>>
+
 <<widget "editFamily">>
 <div id="editFamily"><div id="familyTable">
 <br>''Mother:'' <span id="motherName"><<parentName "mother">></span>.
 <<link "Reset">>
 <<set $activeSlave.mother = 0>>
-<<replace '#motherName'>><</replace>>
-<<replace '#sameMotherNames'>><</replace>>
-<<replace '#familySummary'>><<Family>><</replace>>
-<<run updateFamilyTree($activeSlave, $slaves, $PC)>>
+<<redisplayFamily>>
 <</link>>
-<<if $PC.vagina == 1>> | <<link "You">><<set $activeSlave.mother = $PC.ID>><<replace '#motherName'>>You<</replace>><<replace '#familySummary'>><<Family>><</replace>>
-<<run updateFamilyTree($activeSlave, $slaves, $PC)>><</link>><</if>>
+<<if $PC.vagina == 1>> | <<link "You">><<set $activeSlave.mother = $PC.ID>><<redisplayFamily>><</link>><</if>>
 <<for _i = 0; _i < $slaves.length; _i++>>
 <<if $slaves[_i].vagina > 0>>
  |
@@ -913,10 +928,7 @@
 <<print "
 <<link _slaveName>>
 <<set $activeSlave.mother = _id>>
-<<replace '#motherName'>>_slaveName<</replace>>
-<<replace '#sameMotherNames'>><<listOfSlavesWithSameParent 'mother'>><</replace>>
-<<replace '#familySummary'>><<Family>><</replace>>
-<<run updateFamilyTree($activeSlave, $slaves, $PC)>>
+<<redisplayFamily>>
 <</link>>
 ">>
 <</if>>
@@ -924,12 +936,9 @@
 <br>''Father:'' <span id="fatherName"><<parentName "father">></span>.
 <<link "Reset">>
 <<set $activeSlave.father = 0>>
-<<replace '#fatherName'>><</replace>>
-<<replace '#sameFatherNames'>><</replace>>
-<<replace '#familySummary'>><<Family>><</replace>>
-<<run updateFamilyTree($activeSlave, $slaves, $PC)>>
+<<redisplayFamily>>
 <</link>>
-<<if ($PC.dick == 1) and (($PC.actualAge - $activeSlave.actualAge) >= $fertilityAge)>> | <<link "You">><<set $activeSlave.father = $PC.ID>><<replace '#fatherName'>>You<</replace>><<replace '#familySummary'>><<Family>><</replace>><<run updateFamilyTree($activeSlave, $slaves, $PC)>><</link>><</if>>
+<<if ($PC.dick == 1) and (($PC.actualAge - $activeSlave.actualAge) >= $fertilityAge) >> | <<link "You">><<set $activeSlave.father = $PC.ID>><<redisplayFamily>><</link>><</if>>
 <<for _i = 0; _i < $slaves.length; _i++>>
 <<if ($slaves[_i].dick > 0) and ((($slaves[_i].actualAge - $activeSlave.actualAge) >= $fertilityAge))>>
  |
@@ -938,22 +947,16 @@
 <<print "
 <<link _slaveName>>
 <<set $activeSlave.father = _id>>
-<<replace '#fatherName'>>_slaveName<</replace>>
-<<replace '#sameFatherNames'>><<listOfSlavesWithSameParent 'father'>><</replace>>
-<<replace '#familySummary'>><<Family>><</replace>>
-<<run updateFamilyTree($activeSlave, $slaves, $PC)>>
+<<redisplayFamily>>
 <</link>>
 ">>
 <</if>>
 <</for>>
 
-<br>''Same mother as:'' <span id="sameMotherNames"><<listOfSlavesWithSameParent "mother">></span>.
+<br>''Same mother as:'' <span id="sameMotherNames"><<listOfSlavesWithSameParent 'mother'>></span>.
 <<link "Reset">>
 <<set $activeSlave.mother = 0>>
-<<replace '#motherName'>><</replace>>
-<<replace '#sameMotherNames'>><</replace>>
-<<replace '#familySummary'>><<Family>><</replace>>
-<<run updateFamilyTree($activeSlave, $slaves, $PC)>>
+<<redisplayFamily>>
 <</link>>
  | <<link "You">>
 <<if $PC.mother != 0>>
@@ -964,10 +967,7 @@
 <<set $activeSlave.mother = -5 - 2*$activeSlave.ID>>
 <<set $PC.mother = $activeSlave.mother>>
 <</if>>
-<<replace '#motherName'>><<parentName "mother">><</replace>>
-<<replace '#sameMotherNames'>><<listOfSlavesWithSameParent "mother">><</replace>>
-<<replace '#familySummary'>><<Family>><</replace>>
-<<run updateFamilyTree($activeSlave, $slaves, $PC)>>
+<<redisplayFamily>>
 <</link>>
 <<for _i = 0; _i < $slaves.length; _i++>>
  |
@@ -983,21 +983,17 @@
 <<set $activeSlave.mother = -5 - 2*$activeSlave.ID>>
 <<set _slave.mother = $activeSlave.mother>>
 <</if>>
-<<replace '#motherName'>><<parentName "mother">><</replace>>
-<<replace '#sameMotherNames'>><<listOfSlavesWithSameParent 'mother'>><</replace>>
-<<replace '#familySummary'>><<Family>><</replace>>
-<<run updateFamilyTree($activeSlave, $slaves, $PC)>>
+<<redisplayFamily>>
 <</link>>
 
 <</for>>
 
-<br>''Same father as:'' <span id="sameFatherNames"><<listOfSlavesWithSameParent "father">></span>.
+<br>''Same father as:'' <span id="sameFatherNames"><<listOfSlavesWithSameParent 'father'>></span>.
 <<link "Reset">>
 <<set $activeSlave.father = 0>>
 <<replace '#fatherName'>><</replace>>
 <<replace '#sameFatherNames'>><</replace>>
-<<replace '#familySummary'>><<Family>><</replace>>
-<<run updateFamilyTree($activeSlave, $slaves, $PC)>>
+<<redisplayFamily>>
 <</link>>
 | <<link "You">>
 <<if $PC.father != 0>>
@@ -1008,10 +1004,7 @@
 <<set $activeSlave.father = -5 - 2*$activeSlave.ID -1>>
 <<set $PC.father = $activeSlave.father>>
 <</if>>
-<<replace '#fatherName'>><<parentName "father">><</replace>>
-<<replace '#sameFatherNames'>><<listOfSlavesWithSameParent "father">><</replace>>
-<<replace '#familySummary'>><<Family>><</replace>>
-<<run updateFamilyTree($activeSlave, $slaves, $PC)>>
+<<redisplayFamily>>
 <</link>>
 
 <<for _i = 0; _i < $slaves.length; _i++>>
@@ -1028,13 +1021,69 @@
 <<set $activeSlave.father = -5 - 2*$activeSlave.ID -1>>
 <<set _slave.father = $activeSlave.father>>
 <</if>>
-<<replace '#fatherName'>><<parentName "father">><</replace>>
-<<replace '#sameFatherNames'>><<listOfSlavesWithSameParent 'father'>><</replace>>
-<<replace '#familySummary'>><<Family>><</replace>>
-<<run updateFamilyTree($activeSlave, $slaves, $PC)>>
+<<redisplayFamily>>
+<</link>>
+
+<</for>>
+
+<br>''Mother of the children:'' <span id="motheredNames"><<listOfSlavesWithParent "mother" $activeSlave.ID>></span>.
+<<link "Reset">>
+<<for _i = 0; _i < $slaves.length; _i++>>
+<<if $slaves[_i].mother == $activeSlave.ID>><<set $slaves[_i].mother = 0>><</if>>
+<</for>>
+<<redisplayFamily>>
+<</link>>
+<<if $activeSlave.vagina >= 0>>
+<<if ($activeSlave.actualAge - $PC.actualAge) >= $fertilityAge>>
+| <<link "You">>
+<<set $PC.mother = $activeSlave.ID>>
+<<if $activeSlave.vagina == 0>><<set $activeSlave.vagina = 1>><</if>>
+<<redisplayFamily>>
 <</link>>
+<</if>>
 
+<<for _i = 0; _i < $slaves.length; _i++>>
+ |
+<<set _slaveName = $slaves[_i].slaveName>>
+<<set _slave = $slaves[_i]>>
+<<if ($activeSlave.actualAge - _slave.actualAge) >= $fertilityAge>>
+<<link _slaveName>>
+<<set _slave.mother = $activeSlave.ID>>
+<<if $activeSlave.vagina == 0>><<set $activeSlave.vagina = 1>><</if>>
+<<redisplayFamily>>
+<</link>>
+<</if>>
 <</for>>
+<</if>>
+
+<br>''Father of the children:'' <span id="fatheredNames"><<listOfSlavesWithParent "father" $activeSlave.ID>></span>.
+<<link "Reset">>
+<<for _i = 0; _i < $slaves.length; _i++>>
+<<if $slaves[_i].father == $activeSlave.ID>><<set $slaves[_i].father = 0>><</if>>
+<</for>>
+<<redisplayFamily>>
+<</link>>
+<<if $activeSlave.dick > 0>>
+<<if ($activeSlave.actualAge - $PC.actualAge) >= $fertilityAge>>
+| <<link "You">>
+<<set $PC.father = $activeSlave.ID>>
+<<redisplayFamily>>
+<</link>>
+<</if>>
+
+<<for _i = 0; _i < $slaves.length; _i++>>
+ |
+<<set _slaveName = $slaves[_i].slaveName>>
+<<set _slave = $slaves[_i]>>
+<<if ($activeSlave.actualAge - _slave.actualAge) >= $fertilityAge>>
+<<link _slaveName>>
+<<set _slave.father = $activeSlave.ID>>
+<<redisplayFamily>>
+<</link>>
+<</if>>
+<</for>>
+<</if>>
+
 <br>
 &nbsp;&nbsp;&nbsp;&nbsp;<span id="familySummary"><<Family>></span>
 <br>
diff --git a/src/uncategorized/personalAssistantAppearance.tw b/src/uncategorized/personalAssistantAppearance.tw
index 8d3fe4d0995..4e901120dab 100644
--- a/src/uncategorized/personalAssistantAppearance.tw
+++ b/src/uncategorized/personalAssistantAppearance.tw
@@ -494,7 +494,15 @@ She's a cute little <<if $arcologies[0].FSSupremacist != "unset">>$arcologies[0]
 	<<case "maturity preferentialist">>
 	  She's quite mature, her belly is covered in stretch marks.
 	<<case "youth preferentialist">>
-	  She's surprisingly young, she happily bounces atop her mammoth belly forcing milk out of her breasts and babies out her crotch.
+		<<if $minimumSlaveAge > 13>>
+			She's fresh into adulthood and already has had more children than most women. She leans against her mammoth belly as another child parts her youthful pussy.
+		<<elseif $minimumSlaveAge > 8>>
+			She's fresh into her teens and firmly anchored by her mammoth belly. Her attempts to try and move are frequently interrupted as another child begins forcing is way out of her tight pussy.
+		<<elseif $minimumSlaveAge > 4>>
+			She's just a young girl and already has had more children than most women will in their lives. She happily embraces her mammoth belly, the force of her hug forcing milk out of her breasts and babies out her crotch.
+		<<else>>
+			She's surprisingly young, she happily bounces atop her mammoth belly forcing milk out of her breasts and babies out her crotch.
+		<</if>>
 	<<case "slimness enthusiast">>
 	  Her massive pregnant belly completely dwarfs her otherwise lithe frame.
 	<<case "body purist">>
@@ -900,6 +908,83 @@ She's a cute little <<if $arcologies[0].FSSupremacist != "unset">>$arcologies[0]
 	She's watching you attentively from a bowl filled with her body. When she sees your glance, she reforms herself and awaits your response.
   <</if>>
 
+<<elseif $assistantAppearance == "angel">>
+	She's a gorgeous little <<if $arcologies[0].FSSupremacist != "unset">>$arcologies[0].FSSupremacistRace <</if>> angel with long blonde hair and large <<if $arcologies[0].FSGenderFundamentalist != "unset">>black<<else>>white<</if>> wings as large as her when they are folded.
+	<<if $assistantFSOptions>>
+	<<switch $assistantFSAppearance>>
+	<<case "paternalist">>
+		She is currently wearing a long, conservative skirt and a a pretty white blouse complete with gaps for her wings. She is positively radiant.
+	<<case "degradationist">>
+		She is wearing black eyeliner and lipstick while using a thin black ribbon to protect her modesty. It's pretty obvious she has a stud through her left nipple.
+	<<case "roman revivalist">>
+		She is wearing a fine stola appropriate for a respectable Roman lady, with her hair up in a complicated style.
+	<<case "egyptian revivalist">>
+		She is wearing a simple white linen dress, kohl eyeshadow, sandals, and a serene expression.
+	<<case "edo revivalist">>
+		She is wearing a fine kimono with slits for her wings, getae, tabi, and an expression of perfect serenity.
+	<<case "arabian revivalist">>
+		She is wearing a tailored suit, a silk headscarf, and aviator sunglasses, making her look ridiculous.
+	<<case "chinese revivalist">>
+		She is wearing a conservative silk qipao with special slits for her wings. Her hair is pulled back into a bun and secured by a couple of chopsticks.
+	<<case "chattel religionist">>
+		She has adjusted her outfit to consist of nothing but the symbol of your new religion carefully tailored to cover her nipples and crotch. She wears another around her neck and a blush on her cheeks.
+	<<case "physical idealist">>
+		She has swapped out her usual linen dress for one that shows off her toned arms, legs and abs.
+	<<case "repopulation focus">>
+		Her simple white linen dress is parted by her full term pregnancy; likely a lost soul being given a new chance.
+	<<case "eugenics">>
+		She has swapped out her usual linen dress for a fabulous one to match her perfect appearance. She proudly wears the symbol of high society on her arm and, judging by the slight curve to her middle, is growing a child just as beautiful as her.
+	<<case "gender radicalist">>
+		She wears simple white linen dress and has recently changed her appearance to make herself quite androgynous.
+	<<case "gender fundamentalist">>
+		She wears simple white linen dress that struggles to cover both her full breasts and child-bearing hips.
+	<<case "asset expansionist">>
+		She has recently given up on trying to cover her arm-filling breasts, resorting to just wearing a skirt; a skirt that strains against her enormous rear. She certainly won't be flying anyway.
+	<<case "transformation fetishist">>
+		She wears simple white linen dress that struggles to contain her big, perky, obviously fake breasts.
+	<<case "pastoralist">>
+		She wears simple white linen dress that struggles to cover her full breasts. She frequently tries to hide her nipples; her milk having rendered her dress transparent.
+	<<case "maturity preferentialist">>
+		She wears simple white linen dress and has recently altered appearance to be more mature. Her face is one of experience and her hair has streaks of silver.
+	<<case "youth preferentialist">>
+		She wears simple white linen dress that tastefully hugs her youthful body. She looks barely 18; a tantalizing risk.
+	<<case "slimness enthusiast">>
+		She wears simple white linen dress that tastefully hugs her thin body.
+	<<case "body purist">>
+		She has forgone covering herself to allow her radiant, pure body to be visible to all.
+	<<default>>
+		She wears simple white linen dress that, while concealing, shows off her pleasant curves.
+	<</switch>>
+	<<else>>
+		She wears simple white linen dress that, while concealing, shows off her pleasant curves.
+	<</if>>
+<<if ($cockFeeder == 1) && ($seed == 1)>>
+	A recognizable little representation of one of your slaves is locking lips with her. The slave must be down in the kitchen, getting a meal out of the food dispensers. The angel notices you watching, blushes deeply and covers herself and the slave with a wing.
+<<elseif ($suppository == 1) && ($seed == 2)>>
+	A recognizable little representation of one of your slaves is across her lap, her rear red from a recent spanking. The slave must be receiving her drugs from one of the dildo dispensers. The angel notices you watching, nods, and resumes spanking, ignoring the slave's distress.
+<<elseif ($masturbationAllowed == 1) && ($seed == 3)>>
+	She has a visible representation of one of your slaves across her lap, a vibrator partially inserted into her, which the slave is obviously enjoying. The slave must be using one of the penthouse's many vibrators. She notices you watching and blushes deeply before returning to pleasuring the slave.
+<<elseif ($seed == 4)>>
+	A recognizable little representation of one of your slaves is lying with its head in her lap. The angel is embracing her gently and silently; the slave must be getting a checkup. She looks up at you with a smile, the slave must be doing well.
+<<elseif ($seed == 5) && ($invasionVictory > 0)>>
+	She's standing next to a representation of one of your security drone, gently caressing it. When she sees you looking at her, she blushes and says, "I like this one. He did very well during the invasion. He saved so many."
+<<elseif ($seed == 6) && ($studio == 1)>>
+	She's watching a recognizable little representation of one of your slaves masturbate with one hand to cover her eyes and the other to hold a handheld camera to film the action, gonzo style. The slave must be using one of the penthouse's many vibrators, and $assistantName is clearly turning the feed of it into porn.
+<<elseif ($seed == 7) && ($marketAssistantAnnounced == 1)>>
+	She's accompanied by your market assistant's own angelic avatar.
+	<<if $marketAssistantRelationship == "cute">>
+		They're deep in prayer for your benefit and the safety of you, your arcology and your slaves.
+	<<elseif $marketAssistantRelationship == "nonconsensual">>
+		$assistantName is happily brushing the market assistant while humming happily. Upon noticing you watching, the hastily sneaks a hand down the asstants dress and pinches a nipple, eliciting a squeak from the girl.
+	<<elseif $marketAssistantRelationship == "incestuous">>
+		$assistantName is naked a kissing her equally bare sister. You watch silently as they grind their bodies against each other until one notices your gaze. They both shriek, cover themselves with their wings and hustle out of sight.
+	<<else>>
+		They're making out in a surprisingly girlish way, deeply kissing each other and pressing their chests together. They blush when they see you watching them, each quickly covering the other with a wing.
+	<</if>>
+<<else>>
+	She's deep in prayer. She glances up to check on you and sees you looking at her, and flashes you a look of serenity.
+<</if>>
+
 <<else>>
 	It's a little abstract symbol; when <<if $assistant == 0>>it<<else>>she<</if>> speaks, the symbol glows slightly.
 <</if>>
diff --git a/src/uncategorized/personalAssistantOptions.tw b/src/uncategorized/personalAssistantOptions.tw
index 7d06a55ea98..ee30f8fed14 100644
--- a/src/uncategorized/personalAssistantOptions.tw
+++ b/src/uncategorized/personalAssistantOptions.tw
@@ -138,6 +138,79 @@ She is currently using the ''$assistantAppearance'' avatar.
 		<<if $arcologies[0].FSPaternalist != "unset">> <<set _seed.push("paternalism")>> <</if>>
 		<<if $arcologies[0].FSBodyPurist != "unset">> <<set _seed.push("body purism")>> <</if>>
 		<<if $arcologies[0].FSRepopulationFocus != "unset">> <<set _seed.push("Repopulationism")>> <</if>>
+	<<case "angel">>
+		<<if $arcologies[0].FSRestart != "unset">> <<set _seed.push("Eugenics")>> <</if>>
+		<<if $arcologies[0].FSGenderFundamentalist != "unset">> <<set _seed.push("gender fundamentalism")>> <</if>>
+		<<if $arcologies[0].FSPaternalist != "unset">> <<set _seed.push("paternalism")>> <</if>>
+		<<if $arcologies[0].FSBodyPurist != "unset">> <<set _seed.push("body purism")>> <</if>>
+		<<if $arcologies[0].FSYouthPreferentialist != "unset">> <<set _seed.push("youth preferentialism")>> <</if>>
+		<<if $arcologies[0].FSMaturityPreferentialist != "unset">> <<set _seed.push("maturity preferentialism")>> <</if>>
+		<<if $arcologies[0].FSChattelReligionist != "unset">> <<set _seed.push("chattel religionism")>> <</if>>
+	<<case "cherub">>
+		<<if $arcologies[0].FSGenderFundamentalist != "unset">> <<set _seed.push("gender fundamentalism")>> <</if>>
+		<<if $arcologies[0].FSPaternalist != "unset">> <<set _seed.push("paternalism")>> <</if>>
+		<<if $arcologies[0].FSYouthPreferentialist != "unset">> <<set _seed.push("youth preferentialism")>> <</if>>
+		<<if $arcologies[0].FSSlimnessEnthusiast != "unset">> <<set _seed.push("slimness enthusiasm")>> <</if>>
+		<<if $arcologies[0].FSChattelReligionist != "unset">> <<set _seed.push("chattel religionism")>> <</if>>
+	<<case "incubus">>
+		<<if $arcologies[0].FSRestart != "unset">> <<set _seed.push("Eugenics")>> <</if>>
+		<<if $arcologies[0].FSGenderRadicalist != "unset">> <<set _seed.push("gender radicalism")>> <</if>>
+		<<if $arcologies[0].FSDegradationist != "unset">> <<set _seed.push("degradationism")>> <</if>>
+		<<if $arcologies[0].FSBodyPurist != "unset">> <<set _seed.push("body purism")>> <</if>>
+		<<if $arcologies[0].FSTransformationFetishist != "unset">> <<set _seed.push("transformation fetishism")>> <</if>>
+		<<if $arcologies[0].FSMaturityPreferentialist != "unset">> <<set _seed.push("maturity preferentialism")>> <</if>>
+		<<if $arcologies[0].FSAssetExpansionist != "unset">> <<set _seed.push("asset expansionism")>> <</if>>
+		<<if $arcologies[0].FSPastoralist != "unset">> <<set _seed.push("pastoralism")>> <</if>>
+		<<if $arcologies[0].FSPhysicalIdealist != "unset">> <<set _seed.push("physical idealism")>> <</if>>
+		<<if $arcologies[0].FSChattelReligionist != "unset">> <<set _seed.push("chattel religionism")>> <</if>>
+		<<if $arcologies[0].FSRomanRevivalist != "unset">> <<set _seed.push("Roman revivalism")>> <</if>>
+		<<if $arcologies[0].FSEgyptianRevivalist != "unset">> <<set _seed.push("Egyptian revivalism")>> <</if>>
+		<<if $arcologies[0].FSEdoRevivalist != "unset">> <<set _seed.push("Edo revivalism")>> <</if>>
+		<<if $arcologies[0].FSArabianRevivalist != "unset">> <<set _seed.push("Arabian revivalism")>> <</if>>
+		<<if $arcologies[0].FSChineseRevivalist != "unset">> <<set _seed.push("Chinese revivalism")>> <</if>>
+	<<case "succubus">>
+		<<if $arcologies[0].FSSupremacist != "unset">> <<set _seed.push($arcologies[0].FSSupremacistRace + " supremacy")>> <</if>>
+		<<if $arcologies[0].FSRepopulationFocus != "unset">> <<set _seed.push("Repopulationism")>> <</if>>
+		<<if $arcologies[0].FSRestart != "unset">> <<set _seed.push("Eugenics")>> <</if>>
+		<<if $arcologies[0].FSGenderRadicalist != "unset">> <<set _seed.push("gender radicalism")>> <</if>>
+		<<if $arcologies[0].FSGenderFundamentalist != "unset">> <<set _seed.push("gender fundamentalism")>> <</if>>
+		<<if $arcologies[0].FSDegradationist != "unset">> <<set _seed.push("degradationism")>> <</if>>
+		<<if $arcologies[0].FSBodyPurist != "unset">> <<set _seed.push("body purism")>> <</if>>
+		<<if $arcologies[0].FSTransformationFetishist != "unset">> <<set _seed.push("transformation fetishism")>> <</if>>
+		<<if $arcologies[0].FSYouthPreferentialist != "unset">> <<set _seed.push("youth preferentialism")>> <</if>>
+		<<if $arcologies[0].FSMaturityPreferentialist != "unset">> <<set _seed.push("maturity preferentialism")>> <</if>>
+		<<if $arcologies[0].FSSlimnessEnthusiast != "unset">> <<set _seed.push("slimness enthusiasm")>> <</if>>
+		<<if $arcologies[0].FSAssetExpansionist != "unset">> <<set _seed.push("asset expansionism")>> <</if>>
+		<<if $arcologies[0].FSPastoralist != "unset">> <<set _seed.push("pastoralism")>> <</if>>
+		<<if $arcologies[0].FSPhysicalIdealist != "unset">> <<set _seed.push("physical idealism")>> <</if>>
+		<<if $arcologies[0].FSChattelReligionist != "unset">> <<set _seed.push("chattel religionism")>> <</if>>
+		<<if $arcologies[0].FSRomanRevivalist != "unset">> <<set _seed.push("Roman revivalism")>> <</if>>
+		<<if $arcologies[0].FSEgyptianRevivalist != "unset">> <<set _seed.push("Egyptian revivalism")>> <</if>>
+		<<if $arcologies[0].FSEdoRevivalist != "unset">> <<set _seed.push("Edo revivalism")>> <</if>>
+		<<if $arcologies[0].FSArabianRevivalist != "unset">> <<set _seed.push("Arabian revivalism")>> <</if>>
+		<<if $arcologies[0].FSChineseRevivalist != "unset">> <<set _seed.push("Chinese revivalism")>> <</if>>
+	<<case "imp">>
+		<<if $arcologies[0].FSSubjugationist != "unset">> <<set _seed.push($arcologies[0].FSSubjugationistRace + " subjugation")>> <</if>>
+		<<if $arcologies[0].FSDegradationist != "unset">> <<set _seed.push("degradationism")>> <</if>>
+		<<if $arcologies[0].FSYouthPreferentialist != "unset">> <<set _seed.push("youth preferentialism")>> <</if>>
+		<<if $arcologies[0].FSSlimnessEnthusiast != "unset">> <<set _seed.push("slimness enthusiasm")>> <</if>>
+		<<if $arcologies[0].FSChattelReligionist != "unset">> <<set _seed.push("chattel religionism")>> <</if>>
+	<<case "witch">>
+		<<if $arcologies[0].FSRepopulationFocus != "unset">> <<set _seed.push("Repopulationism")>> <</if>>
+		<<if $arcologies[0].FSRestart != "unset">> <<set _seed.push("Eugenics")>> <</if>>
+		<<if $arcologies[0].FSGenderRadicalist != "unset">> <<set _seed.push("gender radicalism")>> <</if>>
+		<<if $arcologies[0].FSGenderFundamentalist != "unset">> <<set _seed.push("gender fundamentalism")>> <</if>>
+		<<if $arcologies[0].FSBodyPurist != "unset">> <<set _seed.push("body purism")>> <</if>>
+		<<if $arcologies[0].FSTransformationFetishist != "unset">> <<set _seed.push("transformation fetishism")>> <</if>>
+		<<if $arcologies[0].FSYouthPreferentialist != "unset">> <<set _seed.push("youth preferentialism")>> <</if>>
+		<<if $arcologies[0].FSMaturityPreferentialist != "unset">> <<set _seed.push("maturity preferentialism")>> <</if>>
+		<<if $arcologies[0].FSSlimnessEnthusiast != "unset">> <<set _seed.push("slimness enthusiasm")>> <</if>>
+		<<if $arcologies[0].FSAssetExpansionist != "unset">> <<set _seed.push("asset expansionism")>> <</if>>
+		<<if $arcologies[0].FSPastoralist != "unset">> <<set _seed.push("pastoralism")>> <</if>>
+		<<if $arcologies[0].FSPhysicalIdealist != "unset">> <<set _seed.push("physical idealism")>> <</if>>
+		<<if $arcologies[0].FSChattelReligionist != "unset">> <<set _seed.push("chattel religionism")>> <</if>>
+	<<case "ERROR_1606_APPEARANCE_FILE_CORRUPT">>
+		<<if $arcologies[0].FSTransformationFetishist != "unset">> <<set _seed.push("transformation fetishism")>> <</if>>
 <</switch>>
 <<if _seed.length > 0>>
 	<<set _desc = "">>
@@ -376,7 +449,7 @@ It has no impact on public opinion.
 	<</if>>
 	<br>
 <</if>>
-<<if $assistantAppearance isnot "fairy">> [[Fairy|Personal assistant options][$assistantAppearance = "fairy"]]
+<<if $assistantAppearance != "fairy">> [[Fairy|Personal assistant options][$assistantAppearance = "fairy"]]
 	<<if $PAPublic == 1>>
 	<<set _seed = []>>
 	<<if $arcologies[0].FSGenderFundamentalist != "unset">> <<set _seed.push("gender fundamentalism")>> <</if>>
@@ -396,7 +469,7 @@ It has no impact on public opinion.
 	<</if>>
 	<br>
 <</if>>
-<<if $assistantAppearance isnot "pregnant fairy">> [[Pregnant Fairy|Personal assistant options][$assistantAppearance = "pregnant fairy"]]
+<<if $assistantAppearance != "pregnant fairy">> [[Pregnant Fairy|Personal assistant options][$assistantAppearance = "pregnant fairy"]]
 	<<if $PAPublic == 1>>
 	<<set _seed = []>>
 	<<if $arcologies[0].FSGenderFundamentalist != "unset">> <<set _seed.push("gender fundamentalism")>> <</if>>
@@ -520,21 +593,215 @@ It has no impact on public opinion.
 	<</if>>
 	<br>
 <</if>>
+<<if $assistantAppearance != "angel">> [[Angel|Personal assistant options][$assistantAppearance = "angel"]]
+	<<if $PAPublic == 1>>
+	<<set _seed = []>>
+	<<if $arcologies[0].FSRestart != "unset">> <<set _seed.push("Eugenics")>> <</if>>
+	<<if $arcologies[0].FSGenderFundamentalist != "unset">> <<set _seed.push("gender fundamentalism")>> <</if>>
+	<<if $arcologies[0].FSPaternalist != "unset">> <<set _seed.push("paternalism")>> <</if>>
+	<<if $arcologies[0].FSBodyPurist != "unset">> <<set _seed.push("body purism")>> <</if>>
+	<<if $arcologies[0].FSYouthPreferentialist != "unset">> <<set _seed.push("youth preferentialism")>> <</if>>
+	<<if $arcologies[0].FSMaturityPreferentialist != "unset">> <<set _seed.push("maturity preferentialism")>> <</if>>
+	<<if $arcologies[0].FSChattelReligionist != "unset">> <<set _seed.push("chattel religionism")>> <</if>>
+	<<if _seed.length > 0>>
+		<<set _desc = "">>
+		<<for _i = 0; _i < _seed.length; _i++>>
+			<<set _desc = (_desc + _seed[_i])>>
+			<<if (_i < _seed.length-2)>> <<set _desc = (_desc + ", ")>>
+			<<elseif (_seed.length > 2) && (_i == _seed.length-2)>> <<set _desc = (_desc + ", and ")>>
+			<<elseif (_seed.length == 2) && (_i == 0)>> <<set _desc = (_desc + " and ")>>
+			<</if>>
+		<</for>>
+		A good emblem for _desc
+	<</if>>
+	<</if>>
+	<br>
+<</if>>
+<<if $assistantAppearance != "cherub">> [[Cherub|Personal assistant options][$assistantAppearance = "cherub"]]
+	<<if $PAPublic == 1>>
+	<<set _seed = []>>
+	<<if $arcologies[0].FSGenderFundamentalist != "unset">> <<set _seed.push("gender fundamentalism")>> <</if>>
+	<<if $arcologies[0].FSPaternalist != "unset">> <<set _seed.push("paternalism")>> <</if>>
+	<<if $arcologies[0].FSYouthPreferentialist != "unset">> <<set _seed.push("youth preferentialism")>> <</if>>
+	<<if $arcologies[0].FSSlimnessEnthusiast != "unset">> <<set _seed.push("slimness enthusiasm")>> <</if>>
+	<<if $arcologies[0].FSChattelReligionist != "unset">> <<set _seed.push("chattel religionism")>> <</if>>
+	<<if _seed.length > 0>>
+		<<set _desc = "">>
+		<<for _i = 0; _i < _seed.length; _i++>>
+			<<set _desc = (_desc + _seed[_i])>>
+			<<if (_i < _seed.length-2)>> <<set _desc = (_desc + ", ")>>
+			<<elseif (_seed.length > 2) && (_i == _seed.length-2)>> <<set _desc = (_desc + ", and ")>>
+			<<elseif (_seed.length == 2) && (_i == 0)>> <<set _desc = (_desc + " and ")>>
+			<</if>>
+		<</for>>
+		A good emblem for _desc
+	<</if>>
+	<</if>>
+	<br>
+<</if>>
+<<if $assistantAppearance != "incubus">> [[Inucbus|Personal assistant options][$assistantAppearance = "incubus"]]
+	<<if $PAPublic == 1>>
+	<<set _seed = []>>
+	<<if $arcologies[0].FSRestart != "unset">> <<set _seed.push("Eugenics")>> <</if>>
+	<<if $arcologies[0].FSGenderRadicalist != "unset">> <<set _seed.push("gender radicalism")>> <</if>>
+	<<if $arcologies[0].FSDegradationist != "unset">> <<set _seed.push("degradationism")>> <</if>>
+	<<if $arcologies[0].FSBodyPurist != "unset">> <<set _seed.push("body purism")>> <</if>>
+	<<if $arcologies[0].FSTransformationFetishist != "unset">> <<set _seed.push("transformation fetishism")>> <</if>>
+	<<if $arcologies[0].FSMaturityPreferentialist != "unset">> <<set _seed.push("maturity preferentialism")>> <</if>>
+	<<if $arcologies[0].FSAssetExpansionist != "unset">> <<set _seed.push("asset expansionism")>> <</if>>
+	<<if $arcologies[0].FSPastoralist != "unset">> <<set _seed.push("pastoralism")>> <</if>>
+	<<if $arcologies[0].FSPhysicalIdealist != "unset">> <<set _seed.push("physical idealism")>> <</if>>
+	<<if $arcologies[0].FSChattelReligionist != "unset">> <<set _seed.push("chattel religionism")>> <</if>>
+	<<if $arcologies[0].FSRomanRevivalist != "unset">> <<set _seed.push("Roman revivalism")>> <</if>>
+	<<if $arcologies[0].FSEgyptianRevivalist != "unset">> <<set _seed.push("Egyptian revivalism")>> <</if>>
+	<<if $arcologies[0].FSEdoRevivalist != "unset">> <<set _seed.push("Edo revivalism")>> <</if>>
+	<<if $arcologies[0].FSArabianRevivalist != "unset">> <<set _seed.push("Arabian revivalism")>> <</if>>
+	<<if $arcologies[0].FSChineseRevivalist != "unset">> <<set _seed.push("Chinese revivalism")>> <</if>>
+	<<if _seed.length > 0>>
+		<<set _desc = "">>
+		<<for _i = 0; _i < _seed.length; _i++>>
+			<<set _desc = (_desc + _seed[_i])>>
+			<<if (_i < _seed.length-2)>> <<set _desc = (_desc + ", ")>>
+			<<elseif (_seed.length > 2) && (_i == _seed.length-2)>> <<set _desc = (_desc + ", and ")>>
+			<<elseif (_seed.length == 2) && (_i == 0)>> <<set _desc = (_desc + " and ")>>
+			<</if>>
+		<</for>>
+		A good emblem for _desc
+	<</if>>
+	<</if>>
+	<br>
+<</if>>
+<<if $assistantAppearance != "succubus">> [[Succubus|Personal assistant options][$assistantAppearance = "succubus"]]
+	<<if $PAPublic == 1>>
+	<<set _seed = []>>
+	<<if $arcologies[0].FSSupremacist != "unset">> <<set _seed.push($arcologies[0].FSSupremacistRace + " supremacy")>> <</if>>
+	<<if $arcologies[0].FSRepopulationFocus != "unset">> <<set _seed.push("Repopulationism")>> <</if>>
+	<<if $arcologies[0].FSRestart != "unset">> <<set _seed.push("Eugenics")>> <</if>>
+	<<if $arcologies[0].FSGenderRadicalist != "unset">> <<set _seed.push("gender radicalism")>> <</if>>
+	<<if $arcologies[0].FSGenderFundamentalist != "unset">> <<set _seed.push("gender fundamentalism")>> <</if>>
+	<<if $arcologies[0].FSDegradationist != "unset">> <<set _seed.push("degradationism")>> <</if>>
+	<<if $arcologies[0].FSBodyPurist != "unset">> <<set _seed.push("body purism")>> <</if>>
+	<<if $arcologies[0].FSTransformationFetishist != "unset">> <<set _seed.push("transformation fetishism")>> <</if>>
+	<<if $arcologies[0].FSYouthPreferentialist != "unset">> <<set _seed.push("youth preferentialism")>> <</if>>
+	<<if $arcologies[0].FSMaturityPreferentialist != "unset">> <<set _seed.push("maturity preferentialism")>> <</if>>
+	<<if $arcologies[0].FSSlimnessEnthusiast != "unset">> <<set _seed.push("slimness enthusiasm")>> <</if>>
+	<<if $arcologies[0].FSAssetExpansionist != "unset">> <<set _seed.push("asset expansionism")>> <</if>>
+	<<if $arcologies[0].FSPastoralist != "unset">> <<set _seed.push("pastoralism")>> <</if>>
+	<<if $arcologies[0].FSPhysicalIdealist != "unset">> <<set _seed.push("physical idealism")>> <</if>>
+	<<if $arcologies[0].FSChattelReligionist != "unset">> <<set _seed.push("chattel religionism")>> <</if>>
+	<<if $arcologies[0].FSRomanRevivalist != "unset">> <<set _seed.push("Roman revivalism")>> <</if>>
+	<<if $arcologies[0].FSEgyptianRevivalist != "unset">> <<set _seed.push("Egyptian revivalism")>> <</if>>
+	<<if $arcologies[0].FSEdoRevivalist != "unset">> <<set _seed.push("Edo revivalism")>> <</if>>
+	<<if $arcologies[0].FSArabianRevivalist != "unset">> <<set _seed.push("Arabian revivalism")>> <</if>>
+	<<if $arcologies[0].FSChineseRevivalist != "unset">> <<set _seed.push("Chinese revivalism")>> <</if>>
+	<<if _seed.length > 0>>
+		<<set _desc = "">>
+		<<for _i = 0; _i < _seed.length; _i++>>
+			<<set _desc = (_desc + _seed[_i])>>
+			<<if (_i < _seed.length-2)>> <<set _desc = (_desc + ", ")>>
+			<<elseif (_seed.length > 2) && (_i == _seed.length-2)>> <<set _desc = (_desc + ", and ")>>
+			<<elseif (_seed.length == 2) && (_i == 0)>> <<set _desc = (_desc + " and ")>>
+			<</if>>
+		<</for>>
+		A good emblem for _desc
+	<</if>>
+	<</if>>
+	<br>
+<</if>>
+<<if $assistantAppearance != "imp">> [[Imp|Personal assistant options][$assistantAppearance = "imp"]]
+	<<if $PAPublic == 1>>
+	<<set _seed = []>>
+	<<if $arcologies[0].FSSubjugationist != "unset">> <<set _seed.push($arcologies[0].FSSubjugationistRace + " subjugation")>> <</if>>
+	<<if $arcologies[0].FSDegradationist != "unset">> <<set _seed.push("degradationism")>> <</if>>
+	<<if $arcologies[0].FSYouthPreferentialist != "unset">> <<set _seed.push("youth preferentialism")>> <</if>>
+	<<if $arcologies[0].FSSlimnessEnthusiast != "unset">> <<set _seed.push("slimness enthusiasm")>> <</if>>
+	<<if $arcologies[0].FSChattelReligionist != "unset">> <<set _seed.push("chattel religionism")>> <</if>>
+	<<if _seed.length > 0>>
+		<<set _desc = "">>
+		<<for _i = 0; _i < _seed.length; _i++>>
+			<<set _desc = (_desc + _seed[_i])>>
+			<<if (_i < _seed.length-2)>> <<set _desc = (_desc + ", ")>>
+			<<elseif (_seed.length > 2) && (_i == _seed.length-2)>> <<set _desc = (_desc + ", and ")>>
+			<<elseif (_seed.length == 2) && (_i == 0)>> <<set _desc = (_desc + " and ")>>
+			<</if>>
+		<</for>>
+		A good emblem for _desc
+	<</if>>
+	<</if>>
+	<br>
+<</if>>
+<<if $assistantAppearance != "witch">> [[Bonus: Witch|Personal assistant options][$assistantAppearance = "witch"]]
+	<<if $PAPublic == 1>>
+	<<set _seed = []>>
+	<<if $arcologies[0].FSRepopulationFocus != "unset">> <<set _seed.push("Repopulationism")>> <</if>>
+	<<if $arcologies[0].FSRestart != "unset">> <<set _seed.push("Eugenics")>> <</if>>
+	<<if $arcologies[0].FSGenderRadicalist != "unset">> <<set _seed.push("gender radicalism")>> <</if>>
+	<<if $arcologies[0].FSGenderFundamentalist != "unset">> <<set _seed.push("gender fundamentalism")>> <</if>>
+	<<if $arcologies[0].FSBodyPurist != "unset">> <<set _seed.push("body purism")>> <</if>>
+	<<if $arcologies[0].FSTransformationFetishist != "unset">> <<set _seed.push("transformation fetishism")>> <</if>>
+	<<if $arcologies[0].FSYouthPreferentialist != "unset">> <<set _seed.push("youth preferentialism")>> <</if>>
+	<<if $arcologies[0].FSMaturityPreferentialist != "unset">> <<set _seed.push("maturity preferentialism")>> <</if>>
+	<<if $arcologies[0].FSSlimnessEnthusiast != "unset">> <<set _seed.push("slimness enthusiasm")>> <</if>>
+	<<if $arcologies[0].FSAssetExpansionist != "unset">> <<set _seed.push("asset expansionism")>> <</if>>
+	<<if $arcologies[0].FSPastoralist != "unset">> <<set _seed.push("pastoralism")>> <</if>>
+	<<if $arcologies[0].FSPhysicalIdealist != "unset">> <<set _seed.push("physical idealism")>> <</if>>
+	<<if $arcologies[0].FSChattelReligionist != "unset">> <<set _seed.push("chattel religionism")>> <</if>>
+	<<if _seed.length > 0>>
+		<<set _desc = "">>
+		<<for _i = 0; _i < _seed.length; _i++>>
+			<<set _desc = (_desc + _seed[_i])>>
+			<<if (_i < _seed.length-2)>> <<set _desc = (_desc + ", ")>>
+			<<elseif (_seed.length > 2) && (_i == _seed.length-2)>> <<set _desc = (_desc + ", and ")>>
+			<<elseif (_seed.length == 2) && (_i == 0)>> <<set _desc = (_desc + " and ")>>
+			<</if>>
+		<</for>>
+		A good emblem for _desc
+	<</if>>
+	<</if>>
+	<br>
+<</if>>
+<<if $assistantAppearance != "ERROR_1606_APPEARANCE_FILE_CORRUPT">> @@.link;WARNING! File c@@[[o|Personal assistant options][$assistantAppearance = "ERROR_1606_APPEARANCE_FILE_CORRUPT"]]@@.link;rrupt!@@
+	<<if $PAPublic == 1>>
+	<<set _seed = []>>
+	<<if $arcologies[0].FSTransformationFetishist != "unset">> <<set _seed.push("transformation fetishism")>> <</if>>
+	<<if _seed.length > 0>>
+		<<set _desc = "">>
+		<<for _i = 0; _i < _seed.length; _i++>>
+			<<set _desc = (_desc + _seed[_i])>>
+			<<if (_i < _seed.length-2)>> <<set _desc = (_desc + ", ")>>
+			<<elseif (_seed.length > 2) && (_i == _seed.length-2)>> <<set _desc = (_desc + ", and ")>>
+			<<elseif (_seed.length == 2) && (_i == 0)>> <<set _desc = (_desc + " and ")>>
+			<</if>>
+		<</for>>
+		A good emblem for _desc
+	<</if>>
+	<</if>>
+	<br>
+<</if>>
 <</if>>
 <</if>>
 
-/*
+
 <<if $assistant != 0>>
 <br><br>
 __Downloadable Appearances:__
 <br>
+/*
 <<if $assistantExtra1 == 0>>
-	[[Purchase a set of monstergirl appearances|Personal assistant options][$cash -= Math.trunc(6000*$upgradeMultiplier), $assistantExtra1 = 1]]
+	[[Purchase a set of monstergirl appearances|Personal assistant options][$cash -= Math.trunc(10000*$upgradeMultiplier), $assistantExtra1 = 1]]
 	//Costs ¤<<print Math.trunc(6000*$upgradeMultiplier)>>//
 <<else>>You have downloaded a set of monstergirl appearances for your avatar.
 <</if>>
+*/
+/*
+<<if $assistantExtra2 == 0>>
+	[[Purchase a set of heaven and hell themed appearances|Personal assistant options][$cash -= Math.trunc(10000*$upgradeMultiplier), $assistantExtra2 = 1]]
+	//Costs ¤<<print Math.trunc(6000*$upgradeMultiplier)>>//
+<<else>>You have downloaded a set of heavenly and hellish appearances for your avatar.
 <</if>>
 */
+<</if>>
+
 
 /* Choose her FS appearance */
 <<if $assistantFSOptions != 0 && $assistantAppearance != "normal">>
-- 
GitLab