diff --git a/src/events/intro/initNationalities.tw b/src/events/intro/initNationalities.tw
index a2fe23ea81affe557f87d44b292822a54de414ac..141c012fcc0a71e9bd04007d7e6194c3398e7457 100644
--- a/src/events/intro/initNationalities.tw
+++ b/src/events/intro/initNationalities.tw
@@ -60,7 +60,7 @@
 /* SET HEROES */
 
 <<set $heroSlaves = []>>
-<<set $activeSlave to {slaveName: "blank", birthName: "blank", weekAcquired: 1, origin: 0, career: 0, ID: 0, prestige: 0, pornFame: 0, pornFameSpending: 0, prestigeDesc: 0, recruiter: 0, relation: 0, relationTarget: 0, relationship: 0, relationshipTarget: 0, rivalry: 0, rivalryTarget: 0, subTarget: 0, choosesOwnAssignment: 0, assignment: "rest", assignmentVisible: 1, sentence: 0, training: 0, toyHole: "all her holes", indenture: -1, indentureRestrictions: 0, birthWeek: random(0,51), actualAge: 18, visualAge: 18, physicalAge: 18, ageImplant: 0, health: 0, minorInjury: 0, trust: 0, oldTrust: 0, devotion: 0, oldDevotion: 0, weight: 0, muscles: 0, height: 170, heightImplant: 0, nationality: "slave", race: "white", markings: "none", eyes: 1, eyeColor: "brown", eyewear: "none", hColor: "brown", pubicHColor: "brown", skin: "light", hLength: 60, hStyle: "short", pubicHStyle: "neat", waist: 0, corsetPiercing: 0, amp: 0, heels:0, voice: 2, voiceImplant: 0, accent: 0, shoulders: 0, shouldersImplant: 0, boobs: 0, boobsImplant: 0, boobsImplantType: 0, boobShape: "normal", nipples: "cute",  nipplesPiercing: 0, areolae: 0, areolaePiercing: 0, boobsTat: 0, lactation: 0, lactationAdaptation: 0, milk: 0, cum: 0, hips: 0, hipsImplant: 0, butt: 0, buttImplant: 0, buttImplantType: 0, buttTat: 0, face: 0, faceImplant: 0, faceShape: "normal", lips: 15, lipsImplant: 0, lipsPiercing: 0, lipsTat: 0, teeth: "normal", tonguePiercing: 0, vagina: 0, vaginaLube: 0, vaginaPiercing: 0, vaginaTat: 0, preg: -1, pregSource: 0, pregType: 0, labor: 0, births: 0, cSec: 0, bellyAccessory: "none", labia: 0, clit: 0, clitPiercing: 0, clitSetting: "vanilla", foreskin: 0, anus: 0, dick: 0, analArea: 1, dickPiercing: 0, dickTat: 0, balls: 0, scrotum: 0, ovaries: 0, anusPiercing: 0, anusTat: 0, makeup: 0, nails: 0, brand: 0, brandLocation: 0, earPiercing: 0, nosePiercing: 0, eyebrowPiercing: 0, navelPiercing: 0, shouldersTat: 0, armsTat: 0, legsTat: 0, backTat: 0, stampTat: 0, vaginalSkill: 0, oralSkill: 0, analSkill: 0, whoreSkill: 0, entertainSkill: 0, combatSkill: 0, livingRules: "spare", speechRules: "restrictive", releaseRules:"restrictive", relationshipRules: "restrictive", standardPunishment: "situational", standardReward: "situational", useRulesAssistant: 1, diet: "healthy", dietCum: 0, dietMilk: 0, tired: 0, hormones: 0, drugs: "no drugs", curatives: 0, chem: 0, aphrodisiacs: 0, addict: 0, fuckdoll: 0, choosesOwnClothes: 0, clothes: "no clothing", collar: "none", shoes: "none", vaginalAccessory: "none", dickAccessory: "none", buttplug: "none", intelligence: 0,  intelligenceImplant: 0, energy: 50, attrXX: 0, attrXY: 0, attrKnown: 0, fetish: "none", fetishStrength: 70, fetishKnown: 0, behavioralFlaw: "none", behavioralQuirk: "none", sexualFlaw: "none", sexualQuirk: "none", oralCount: 0, vaginalCount: 0, analCount: 0, mammaryCount: 0, penetrativeCount: 0, publicCount: 0, pitKills: 0, customTat: "", customLabel: "", customDesc: "", currentRules: [], bellyTat: 0, induce: 0, mpreg: 0, inflation: 0, inflationType: 0, inflationMethod: 0, milkSource: 0, cumSource: 0, burst: 0, bellyImplant: 0, bellySag: 0, birthsTotal: 0, pubertyAgeXX: 13, pubertyAgeXY: 13, father: 0, mother: 0, daughters: 0, sisters: 0, canRecruit: 0, HGExclude: 0, ballType: "human", eggType: "human"}>>
+<<set $activeSlave to {slaveName: "blank", birthName: "blank", weekAcquired: 1, origin: 0, career: 0, ID: 0, prestige: 0, pornFame: 0, pornFameSpending: 0, prestigeDesc: 0, recruiter: 0, relation: 0, relationTarget: 0, relationship: 0, relationshipTarget: 0, rivalry: 0, rivalryTarget: 0, subTarget: 0, choosesOwnAssignment: 0, assignment: "rest", assignmentVisible: 1, sentence: 0, training: 0, toyHole: "all her holes", indenture: -1, indentureRestrictions: 0, birthWeek: random(0,51), actualAge: 18, visualAge: 18, physicalAge: 18, ageImplant: 0, health: 0, minorInjury: 0, trust: 0, oldTrust: 0, devotion: 0, oldDevotion: 0, weight: 0, muscles: 0, height: 170, heightImplant: 0, nationality: "slave", race: "white", markings: "none", eyes: 1, eyeColor: "brown", eyewear: "none", hColor: "brown", pubicHColor: "brown", skin: "light", hLength: 60, hStyle: "short", pubicHStyle: "neat", waist: 0, corsetPiercing: 0, amp: 0, heels:0, voice: 2, voiceImplant: 0, accent: 0, shoulders: 0, shouldersImplant: 0, boobs: 0, boobsImplant: 0, boobsImplantType: 0, boobShape: "normal", nipples: "cute",  nipplesPiercing: 0, areolae: 0, areolaePiercing: 0, boobsTat: 0, lactation: 0, lactationAdaptation: 0, milk: 0, cum: 0, hips: 0, hipsImplant: 0, butt: 0, buttImplant: 0, buttImplantType: 0, buttTat: 0, face: 0, faceImplant: 0, faceShape: "normal", lips: 15, lipsImplant: 0, lipsPiercing: 0, lipsTat: 0, teeth: "normal", tonguePiercing: 0, vagina: 0, vaginaLube: 0, vaginaPiercing: 0, vaginaTat: 0, preg: -1, pregSource: 0, pregType: 0, labor: 0, births: 0, cSec: 0, bellyAccessory: "none", labia: 0, clit: 0, clitPiercing: 0, clitSetting: "vanilla", foreskin: 0, anus: 0, dick: 0, analArea: 1, dickPiercing: 0, dickTat: 0, balls: 0, scrotum: 0, ovaries: 0, anusPiercing: 0, anusTat: 0, makeup: 0, nails: 0, brand: 0, brandLocation: 0, earPiercing: 0, nosePiercing: 0, eyebrowPiercing: 0, navelPiercing: 0, shouldersTat: 0, armsTat: 0, legsTat: 0, backTat: 0, stampTat: 0, vaginalSkill: 0, oralSkill: 0, analSkill: 0, whoreSkill: 0, entertainSkill: 0, combatSkill: 0, livingRules: "spare", speechRules: "restrictive", releaseRules:"restrictive", relationshipRules: "restrictive", standardPunishment: "situational", standardReward: "situational", useRulesAssistant: 1, diet: "healthy", dietCum: 0, dietMilk: 0, tired: 0, hormones: 0, drugs: "no drugs", curatives: 0, chem: 0, aphrodisiacs: 0, addict: 0, fuckdoll: 0, choosesOwnClothes: 0, clothes: "no clothing", collar: "none", shoes: "none", vaginalAccessory: "none", dickAccessory: "none", buttplug: "none", intelligence: 0,  intelligenceImplant: 0, energy: 50, attrXX: 0, attrXY: 0, attrKnown: 0, fetish: "none", fetishStrength: 70, fetishKnown: 0, behavioralFlaw: "none", behavioralQuirk: "none", sexualFlaw: "none", sexualQuirk: "none", oralCount: 0, vaginalCount: 0, analCount: 0, mammaryCount: 0, penetrativeCount: 0, publicCount: 0, pitKills: 0, customTat: "", customLabel: "", customDesc: "", customImage: 0, currentRules: [], bellyTat: 0, induce: 0, mpreg: 0, inflation: 0, inflationType: 0, inflationMethod: 0, milkSource: 0, cumSource: 0, burst: 0, bellyImplant: 0, bellySag: 0, birthsTotal: 0, pubertyAgeXX: 13, pubertyAgeXY: 13, father: 0, mother: 0, daughters: 0, sisters: 0, canRecruit: 0, HGExclude: 0, ballType: "human", eggType: "human"}>>
 <<if ($seeDicks > 0) && ($seeDicks < 100)>>
 	<<display "D Slaves Database">>
 	<<display "DD Slaves Database">>
diff --git a/src/gui/Encyclopedia/encyclopedia.tw b/src/gui/Encyclopedia/encyclopedia.tw
index 7896615d8d266a3bf1d0ce080ad49effb272529d..03645963bcdbb55977c294a893ba656bcc33441c 100644
--- a/src/gui/Encyclopedia/encyclopedia.tw
+++ b/src/gui/Encyclopedia/encyclopedia.tw
@@ -927,6 +927,7 @@ __I do not give credit without explicit permission to do so.__ If you have contr
 ''anon'' for player getting fucked work.
 ''anon'' for additional bodyguard weapons.
 ''anon'' for HGExclusion and animal pregnancy work.
+''anon'' for putting up with my javascript incompetence.
 ''Bane70'' optimized huge swaths of code with notable professionalism.
 ''Circle Tritagonist'' provided several new collars and outfits.
 ''Qotsafan'' submitted bugfixes.
diff --git a/src/init/storyInit.tw b/src/init/storyInit.tw
index 0975fd5200530080f910d7e0775ebb4e2e820990..a3035bac27e7c2bede7b2878c9e158103d7bace5 100644
--- a/src/init/storyInit.tw
+++ b/src/init/storyInit.tw
@@ -22,6 +22,7 @@
 		<</if>>
 		<<set $slaves[$i].daughters = 0>>
 		<<set $slaves[$i].sisters = 0>>
+		<<set $slaves[$i].breedingMark = 0>>
 		<<if $arcologies[0].FSRomanRevivalist > 90>>
 			<<set $slaves[$i].nationality to "Roman Revivalist">>
 		<<elseif $arcologies[0].FSEgyptianRevivalist > 90>>
@@ -216,6 +217,9 @@
 	<<if ndef $slaves[$i].fuckdoll>>
 		<<set $slaves[$i].fuckdoll to 0>>
 	<</if>>
+	<<if ndef $slaves[$i].customImage>>
+		<<set $slaves[$i].customImage to 0>>
+	<</if>>
 	<<set $activeSlave to $slaves[$i]>>
 	<<display "Checkin Checks">>
 	<</for>>
@@ -709,6 +713,7 @@ DairyRestraintsSetting($dairyRestraintsSetting)
 <<set $missingParentID to -10000>>
 <<set $startingSlaveRelative to 0>>
 <<set $relationID = 0>>
+<<set $mom = 0>>
 <<set $animalParts = 0>>
 <<set $showBestiality = 0>>
 
@@ -1262,7 +1267,7 @@ DairyRestraintsSetting($dairyRestraintsSetting)
 <<set $nextLink to "EW Slaves">>
 
 <<set $customSlaveOrdered to 0>>
-<<set $customSlave to {slaveName: "custom", birthName: "custom", weekAcquired: 1, origin: 0, career: 0, ID: 0, prestige: 0, pornFame: 0, pornFameSpending: 0, prestigeDesc: 0, recruiter: 0, relation: 0, relationTarget: 0, relationship: 0, relationshipTarget: 0, rivalry: 0, rivalryTarget: 0, subTarget: 0, choosesOwnAssignment: 0, assignment: "rest", assignmentVisible: 1, sentence: 0, training: 0, toyHole: "all her holes", indenture: -1, indentureRestrictions: 0, birthWeek: random(0,51), age: 18, ageImplant: 0, health: 0, minorInjury: 0, trust: 0, oldTrust: 0, devotion: 0, oldDevotion: 0, weight: 0, muscles: 0, height: 170, heightImplant: 0, nationality: "slave", race:"white", markings: "none", eyes: 1, eyeColor: "brown", hColor: "brown", pubicHColor: "brown", skin: 0, hLength: 60, hStyle: 0, pubicHStyle: "neat", waist: 0, corsetPiercing: 0, amp: 0, heels:0, voice: 2, voiceImplant: 0, accent: 0, shoulders: 0, shouldersImplant: 0, boobs: 500, boobsImplant: 0, boobsImplantType: 0, boobShape: "normal", nipples: "cute",  nipplesPiercing: 0, areolae: 0, areolaePiercing: 0, boobsTat: 0, lactation: 0, lactationAdaptation: 0, milk: 0, cum: 0, hips: 0, hipsImplant: 0, butt: 2, buttImplant: 0, buttImplantType: 0, buttTat: 0, face: 0, faceImplant: 0, faceShape: "normal", lips: 15, lipsImplant: 0, lipsPiercing: 0, lipsTat: 0, teeth: "no default setting", tonguePiercing: 0, vagina: 1, vaginaLube: 0, vaginaPiercing: 0, vaginaTat: 0, preg: -1, pregType: 0, labor: 0, births: 0, cSec: 0, bellyAccessory: "none", labia: 0, clit: 0, clitPiercing: 0, clitSetting: "vanilla", foreskin: 0, anus: 1, dick: 0, analArea: 1, dickPiercing: 0, dickTat: 0, balls: 0, scrotum: 0, ovaries: 1, anusPiercing: 0, anusTat: 0, makeup: 0, nails: 0, brand: 0, brandLocation: 0, earPiercing: 0, nosePiercing: 0, eyebrowPiercing: 0, navelPiercing: 0, shouldersTat: 0, armsTat: 0, legsTat: 0, backTat: 0, stampTat: 0, vaginalSkill: 0, oralSkill: 0, analSkill: 0, whoreSkill: 0, entertainSkill: 0, combatSkill: 0, livingRules: "spare", speechRules: "restrictive", releaseRules:"restrictive", relationshipRules: "restrictive", standardPunishment: "situational", standardReward: "situational", useRulesAssistant: 1, diet: "healthy", dietCum: 0, dietMilk: 0, tired: 0, hormones: 0, drugs: "no drugs", curatives: 0, chem: 0, aphrodisiacs: 0, addict: 0, fuckdoll: 0, choosesOwnClothes: 0, clothes: "no clothing", collar: "none", shoes: "none", vaginalAccessory: "none", dickAccessory: "none", buttplug: "none", intelligence: 0,  intelligenceImplant: 0, energy: 50, attrXX: 0, attrXY: 0, attrKnown: 0, fetish: "none", fetishStrength: 70, fetishKnown: 0, behavioralFlaw: "none", behavioralQuirk: "none", sexualFlaw: "none", sexualQuirk: "none", oralCount: 0, vaginalCount: 0, analCount: 0, mammaryCount: 0, penetrativeCount: 0, pitKills: 0, customTat: "", customLabel: "", customDesc: "", currentRules: [], bellyTat: 0, induce: 0, mpreg: 0, inflation: 0, inflationType: "none", inflationMethod: 0, milkSource: 0, cumSource: 0, burst: 0, bellyImplant: 0, bellySag: 0, birthsTotal: 0, pubertyAgeXX: 13, pubertyAgeXY: 13, actualAge: 18, visualAge: 18, physicalAge: 18, mother: 0, father: 0, sisters: 0, daughters: 0, HGExclude: 0, ballType: "human", eggType: "human"}>>
+<<set $customSlave to {slaveName: "custom", birthName: "custom", weekAcquired: 1, origin: 0, career: 0, ID: 0, prestige: 0, pornFame: 0, pornFameSpending: 0, prestigeDesc: 0, recruiter: 0, relation: 0, relationTarget: 0, relationship: 0, relationshipTarget: 0, rivalry: 0, rivalryTarget: 0, subTarget: 0, choosesOwnAssignment: 0, assignment: "rest", assignmentVisible: 1, sentence: 0, training: 0, toyHole: "all her holes", indenture: -1, indentureRestrictions: 0, birthWeek: random(0,51), age: 18, ageImplant: 0, health: 0, minorInjury: 0, trust: 0, oldTrust: 0, devotion: 0, oldDevotion: 0, weight: 0, muscles: 0, height: 170, heightImplant: 0, nationality: "slave", race:"white", markings: "none", eyes: 1, eyeColor: "brown", hColor: "brown", pubicHColor: "brown", skin: 0, hLength: 60, hStyle: 0, pubicHStyle: "neat", waist: 0, corsetPiercing: 0, amp: 0, heels:0, voice: 2, voiceImplant: 0, accent: 0, shoulders: 0, shouldersImplant: 0, boobs: 500, boobsImplant: 0, boobsImplantType: 0, boobShape: "normal", nipples: "cute",  nipplesPiercing: 0, areolae: 0, areolaePiercing: 0, boobsTat: 0, lactation: 0, lactationAdaptation: 0, milk: 0, cum: 0, hips: 0, hipsImplant: 0, butt: 2, buttImplant: 0, buttImplantType: 0, buttTat: 0, face: 0, faceImplant: 0, faceShape: "normal", lips: 15, lipsImplant: 0, lipsPiercing: 0, lipsTat: 0, teeth: "no default setting", tonguePiercing: 0, vagina: 1, vaginaLube: 0, vaginaPiercing: 0, vaginaTat: 0, preg: -1, pregType: 0, labor: 0, births: 0, cSec: 0, bellyAccessory: "none", labia: 0, clit: 0, clitPiercing: 0, clitSetting: "vanilla", foreskin: 0, anus: 1, dick: 0, analArea: 1, dickPiercing: 0, dickTat: 0, balls: 0, scrotum: 0, ovaries: 1, anusPiercing: 0, anusTat: 0, makeup: 0, nails: 0, brand: 0, brandLocation: 0, earPiercing: 0, nosePiercing: 0, eyebrowPiercing: 0, navelPiercing: 0, shouldersTat: 0, armsTat: 0, legsTat: 0, backTat: 0, stampTat: 0, vaginalSkill: 0, oralSkill: 0, analSkill: 0, whoreSkill: 0, entertainSkill: 0, combatSkill: 0, livingRules: "spare", speechRules: "restrictive", releaseRules:"restrictive", relationshipRules: "restrictive", standardPunishment: "situational", standardReward: "situational", useRulesAssistant: 1, diet: "healthy", dietCum: 0, dietMilk: 0, tired: 0, hormones: 0, drugs: "no drugs", curatives: 0, chem: 0, aphrodisiacs: 0, addict: 0, fuckdoll: 0, choosesOwnClothes: 0, clothes: "no clothing", collar: "none", shoes: "none", vaginalAccessory: "none", dickAccessory: "none", buttplug: "none", intelligence: 0,  intelligenceImplant: 0, energy: 50, attrXX: 0, attrXY: 0, attrKnown: 0, fetish: "none", fetishStrength: 70, fetishKnown: 0, behavioralFlaw: "none", behavioralQuirk: "none", sexualFlaw: "none", sexualQuirk: "none", oralCount: 0, vaginalCount: 0, analCount: 0, mammaryCount: 0, penetrativeCount: 0, pitKills: 0, customTat: "", customLabel: "", customDesc: "", customImage: 0, currentRules: [], bellyTat: 0, induce: 0, mpreg: 0, inflation: 0, inflationType: "none", inflationMethod: 0, milkSource: 0, cumSource: 0, burst: 0, bellyImplant: 0, bellySag: 0, birthsTotal: 0, pubertyAgeXX: 13, pubertyAgeXY: 13, actualAge: 18, visualAge: 18, physicalAge: 18, mother: 0, father: 0, sisters: 0, daughters: 0, HGExclude: 0, ballType: "human", eggType: "human"}>>
 
 <<set $huskSlaveOrdered to 0>>
 <<set $huskSlave to {age: 18, nationality: "slave", race: "white", sex: 1, virgin: 0}>>
diff --git a/src/js/storyJS.tw b/src/js/storyJS.tw
index d6ac532e7e6553ec3301584dfa420cb216b93077..61ce156dfca2275eb2f9cd6bd47982cf515fff8f 100644
--- a/src/js/storyJS.tw
+++ b/src/js/storyJS.tw
@@ -249,11 +249,7 @@ window.isFertile = function(slave) {
 };
 
 window.canBreed = function(slave1, slave2) {
-	if (slave1 != slave) {
-		return false;
-	} else if (slave2 != slave) {
-		return false;
-	} else if (slave1.eggType == slave2.ballType) {
+	if (slave1.eggType == slave2.ballType) {
 		return true;
 	} else {
 		return false;
@@ -289,98 +285,29 @@ window.bigBelly = function(slave) {
 	}
 };
 
-window.milkAmount = function(slave) {
-	var milk;
-	var calcs;
-	if (!slave) {
-		return null;
-	} else {
-		calcs = slave.boobs-slave.boobsImplant
-		if (calcs > 20000) {
-			milk = (118+((calcs-20000)/400))
-		} else if (calcs > 10000) {
-			milk = (78+((calcs-10000)/300))
-		} else if (calcs > 5000) {
-			milk = (53+((calcs-5000)/200))
-		} else if (calcs > 2000) {
-			milk = (29+((calcs-2000)/125))
-		} else if (calcs > 800) {
-			milk = (16+((calcs-800)/80))
-		} else {
-			milk = (8+((calcs-400)/50))
-		}
-		if (slave.lactation == 2) {
-			milk *= 1.2
-		}
-		milk += (milk*((slave.devotion-50)/200))
-		if (slave.boobsImplant > 200) {
-			milk *= 0.9
-		}
-		calcs = slave.hormones
-		if (slave.balls != 0 && calcs > -2) {
-			calcs -= 1
-		} else if (slave.ovaries != 1 && calcs < 2) {
-			calcs += 1
-		}
-		milk *= (1+(calcs*0.1))
-		milk *= (1+(slave.preg/100))
-		milk *= (1+(slave.health/50))
-		milk *= (1+(slave.weight/500))
-		milk *= (1+(slave.lactationAdaptation/500))
-		milk = Math.trunc(milk)
-		milk = Math.clamp(milk,1,1000000000000000000)
-		return milk
-	}
-};
-
-window.cumAmount = function(slave) {
-	var cum = 0;
-	var calcs = 0;
+window.canAchieveErection = function(slave) {
 	if (!slave) {
 		return null;
+	} else if (slave.dick < 7 && slave.dick > 0 && (slave.balls > 0 ? slave.hormones <= 0 : slave.hormones < 0)) {
+		return true;
 	} else {
-		if (slave.drugs == "testicle enhancement") {
-			cum = ((slave.balls*3.5)+random(0,2))
-		} else if (slave.drugs == "hyper testicle enhancement") {
-			cum = ((slave.balls*5)+random(0,2))
-		} else {
-			cum = ((slave.balls*2.5)+random(0,2))
-		}
-		if (slave.prostateImplant == 1) {
-			cum *= 1.2
-		}
-		if (slave.diet == "cum production") {
-			cum *= 1.2
-		}
-		calcs = slave.hormones
-		cum *= (1-(calcs*0.1))
-		if (slave.scrotum == 0) {
-			cum *= 0.8
-		}
-		if (slave.devotion > 50) {
-			cum += (cum*(slave.devotion/100))
-		} else if (slave.devotion < -50) {
-			cum += (cum*(slave.devotion/100))
-		}
-		if (slave.health > 50) {
-			cum += (cum*(slave.health/50))
-		} else if (slave.health < -50) {
-			cum += (cum*(slave.health/50))
-		}
-		cum = Math.trunc(cum)
-		cum = Math.clamp(cum,1,1000000000000000000)
-		return cum
+		return false;
 	}
 };
 
-window.canAchieveErection = function(slave) {
+window.canPenetrate = function(slave) {
 	if (!slave) {
 		return null;
-	} else if (slave.dick < 7 && slave.dick > 0 && (slave.balls > 0 ? slave.hormones <= 0 : slave.hormones < 0)) {
-		return true;
-	} else {
+	} else if (canAchieveErection(slave) == false) {
+		return false;
+	} else if (slave.dickAccessory == "chastity") {
+		return false;
+	} else if (slave.dickAccessory == "combined chastity") {
+		return false;
+	} else if (slave.dick > 7) {
 		return false;
 	}
+	return true;
 };
 
 window.canSee = function(slave) {
@@ -476,7 +403,7 @@ window.canDoAnal = function(slave) {
 		return false;
 	} else if (slave.dickAccessory == "combined chastity") {
 		return false;
-	} 
+	}
 	return true;
 };
 
@@ -493,21 +420,6 @@ window.canDoVaginal = function(slave) {
 	return true;
 };
 
-window.canPenetrate = function(slave) {
-	if (!slave) {
-		return null;
-	} else if (canAchieveErection(slave) == false) {
-		return false;
-	} else if (slave.dickAccessory == "chastity") {
-		return false;
-	} else if (slave.dickAccessory == "combined chastity") {
-		return false;
-	} else if (slave.dick > 7) {
-		return false;
-	}
-	return true;
-};
-
 window.tooBigBreasts = function(slave){
 	if (!slave) {
 		return null;
@@ -687,7 +599,7 @@ window.relationTargetWord = function(slave) {
 		return "mother";
 	} else if (slave.relation == "mother") {
 		return "daughter";
-	} 
+	}
 	return slave.relation;
 };
 
@@ -697,7 +609,7 @@ window.ruleApplied = function(slave, ID) {
 	}else if (!slave.currentRules) {
 		return null;
 	} else {
-		for(var d=0; d < slave.currentRules.length; ++d){	
+		for(var d=0; d < slave.currentRules.length; ++d){
 			if(slave.currentRules[d] == ID){
 				return true;
 			}
@@ -706,7 +618,7 @@ window.ruleApplied = function(slave, ID) {
 };
 
 window.ruleAssignment = function(applyAssignment, assignment) {
-	for(var d=0; d < applyAssignment.length; ++d){	
+	for(var d=0; d < applyAssignment.length; ++d){
 		if(applyAssignment[d] == assignment){
 
 			return true;
@@ -715,7 +627,7 @@ window.ruleAssignment = function(applyAssignment, assignment) {
 };
 
 window.ruleFacility = function(applyFacility, facility) {
-	for(var d=0; d < applyFacility.length; ++d){	
+	for(var d=0; d < applyFacility.length; ++d){
 		if(applyFacility[d] == facility){
 			return true;
 		}
@@ -752,7 +664,7 @@ window.ruleExcludeSlaveFacility = function(rule, slave) {
 					return true;
 				}
 			}
-			else if(rule.excludeFacility[d] == "clinic"){ 
+			else if(rule.excludeFacility[d] == "clinic"){
 				if(slave.assignment == "get treatment in the clinic" ){
 					return true;
 				}
@@ -784,7 +696,7 @@ window.ruleExcludeSlaveFacility = function(rule, slave) {
 					return true;
 				}
 			}
-			else if(rule.excludeFacility[d] == "dairy"){ 
+			else if(rule.excludeFacility[d] == "dairy"){
 				if (slave.assignment == "work in the dairy"){
 					return true;
 				}
@@ -828,7 +740,7 @@ window.ruleAppliedToSlaveFacility = function(rule, slave) {
 	}else if (!rule.facility) {
 		return false;
 	} else {
-		for(var d=0; d < rule.facility.length; ++d){	
+		for(var d=0; d < rule.facility.length; ++d){
 			if(rule.facility[d] == "hgsuite"){
 				if(slave.assignment == "live with your Head Girl" ){
 					return true;
@@ -850,7 +762,7 @@ window.ruleAppliedToSlaveFacility = function(rule, slave) {
 					return true;
 				}
 			}
-			else if(rule.facility[d] == "clinic"){ 
+			else if(rule.facility[d] == "clinic"){
 				if(slave.assignment == "get treatment in the clinic" ){
 					return true;
 				}
@@ -882,7 +794,7 @@ window.ruleAppliedToSlaveFacility = function(rule, slave) {
 					return true;
 				}
 			}
-			else if(rule.facility[d] == "dairy"){ 
+			else if(rule.facility[d] == "dairy"){
 				if (slave.assignment == "work in the dairy"){
 					return true;
 				}
@@ -926,7 +838,7 @@ window.ruleSlaveSelected = function(slave, rule) {
 	}else if (!rule.selectedSlaves) {
 		return false;
 	} else {
-		for(var d=0; d < rule.selectedSlaves.length; ++d){	
+		for(var d=0; d < rule.selectedSlaves.length; ++d){
 			if(slave.ID == rule.selectedSlaves[d]){
 				return true;
 			}
@@ -942,7 +854,7 @@ window.ruleSlaveExcluded = function(slave, rule) {
 	}else if (!rule.excludedSlaves) {
 		return false;
 	} else {
-		for(var d=0; d < rule.excludedSlaves.length; ++d){	
+		for(var d=0; d < rule.excludedSlaves.length; ++d){
 			if(slave.ID == rule.excludedSlaves[d]){
 				return true;
 			}
@@ -957,8 +869,8 @@ window.hasSurgeryRule = function(slave, rules) {
 	}else if (!slave.currentRules) {
 		return false;
 	}else {
-		for(var d=rules.length-1; d >= 0; --d){	
-			for(var e=0; e < slave.currentRules.length;++e){	
+		for(var d=rules.length-1; d >= 0; --d){
+			for(var e=0; e < slave.currentRules.length;++e){
 				if(slave.currentRules[e] == rules[d].ID){
 					if (rules[d].autoSurgery > 0){
 						return true;
@@ -977,8 +889,8 @@ window.lastPregRule = function(slave, rules) {
 	}else if (!slave.currentRules) {
 		return false;
 	}else {
-		for(var d=rules.length-1; d >= 0;--d){	
-			for(var e=0; e < slave.currentRules.length;++e){	
+		for(var d=rules.length-1; d >= 0;--d){
+			for(var e=0; e < slave.currentRules.length;++e){
 				if(slave.currentRules[e] == rules[d].ID){
 					if (rules[d].preg == -1){
 						return rules[d];
@@ -997,8 +909,8 @@ window.hasHColorRule = function(slave, rules) {
 	}else if (!slave.currentRules) {
 		return false;
 	}else {
-		for(var d=rules.length-1; d >= 0;--d){	
-			for(var e=0; e < slave.currentRules.length;++e){	
+		for(var d=rules.length-1; d >= 0;--d){
+			for(var e=0; e < slave.currentRules.length;++e){
 				if(slave.currentRules[e] == rules[d].ID){
 					if (rules[d].hColor != "no default setting"){
 						return true;
@@ -1017,8 +929,8 @@ window.hasHStyleRule = function(slave, rules) {
 	}else if (!slave.currentRules) {
 		return false;
 	}else {
-		for(var d=rules.length-1; d >= 0;--d){	
-			for(var e=0; e < slave.currentRules.length;++e){	
+		for(var d=rules.length-1; d >= 0;--d){
+			for(var e=0; e < slave.currentRules.length;++e){
 				if(slave.currentRules[e] == rules[d].ID){
 					if (rules[d].hStyle != "no default setting"){
 						return true;
@@ -1037,8 +949,8 @@ window.hasEyeColorRule = function(slave, rules) {
 	}else if (!slave.currentRules) {
 		return false;
 	}else {
-		for(var d=rules.length-1; d >= 0;--d){	
-			for(var e=0; e < slave.currentRules.length;++e){	
+		for(var d=rules.length-1; d >= 0;--d){
+			for(var e=0; e < slave.currentRules.length;++e){
 				if(slave.currentRules[e] == rules[d].ID){
 					if (rules[d].hStyle != "no default setting"){
 						return true;
@@ -1057,8 +969,8 @@ window.lastEyeWearRule = function(slave, rules) {
 	}else if (!slave.currentRules) {
 		return null;
 	}else {
-		for(var d=rules.length-1; d >= 0;--d){	
-			for(var e=0; e < slave.currentRules.length;++e){	
+		for(var d=rules.length-1; d >= 0;--d){
+			for(var e=0; e < slave.currentRules.length;++e){
 				if(slave.currentRules[e] == rules[d].ID){
 					if (rules[d].eyewear != "no default setting"){
 						return rules[d];
@@ -1077,8 +989,8 @@ window.lastEyeColorRule = function(slave, rules) {
 	}else if (!slave.currentRules) {
 		return null;
 	}else {
-		for(var d=rules.length-1; d >= 0;--d){	
-			for(var e=0; e < slave.currentRules.length;++e){	
+		for(var d=rules.length-1; d >= 0;--d){
+			for(var e=0; e < slave.currentRules.length;++e){
 				if(slave.currentRules[e] == rules[d].ID){
 					if (rules[d].eyeColor != "no default setting"){
 						return rules[d];
@@ -1097,8 +1009,8 @@ window.lastMakeupRule = function(slave, rules) {
 	}else if (!slave.currentRules) {
 		return null;
 	}else {
-		for(var d=rules.length-1; d >= 0;--d){	
-			for(var e=0; e < slave.currentRules.length;++e){	
+		for(var d=rules.length-1; d >= 0;--d){
+			for(var e=0; e < slave.currentRules.length;++e){
 				if(slave.currentRules[e] == rules[d].ID){
 					if (rules[d].makeup != "no default setting"){
 						return rules[d];
@@ -1117,8 +1029,8 @@ window.lastNailsRule = function(slave, rules) {
 	}else if (!slave.currentRules) {
 		return null;
 	}else {
-		for(var d=rules.length-1; d >= 0;--d){	
-			for(var e=0; e < slave.currentRules.length;++e){	
+		for(var d=rules.length-1; d >= 0;--d){
+			for(var e=0; e < slave.currentRules.length;++e){
 				if(slave.currentRules[e] == rules[d].ID){
 					if (rules[d].nails != "no default setting"){
 						return rules[d];
@@ -1137,8 +1049,8 @@ window.lastHColorRule = function(slave, rules) {
 	}else if (!slave.currentRules) {
 		return null;
 	}else {
-		for(var d=rules.length-1; d >= 0;--d){	
-			for(var e=0; e < slave.currentRules.length;++e){	
+		for(var d=rules.length-1; d >= 0;--d){
+			for(var e=0; e < slave.currentRules.length;++e){
 				if(slave.currentRules[e] == rules[d].ID){
 					if (rules[d].hColor != "no default setting"){
 						return rules[d];
@@ -1157,8 +1069,8 @@ window.lastHStyleRule = function(slave, rules) {
 	}else if (!slave.currentRules) {
 		return null;
 	}else {
-		for(var d=rules.length-1; d >= 0;--d){	
-			for(var e=0; e < slave.currentRules.length;++e){	
+		for(var d=rules.length-1; d >= 0;--d){
+			for(var e=0; e < slave.currentRules.length;++e){
 				if(slave.currentRules[e] == rules[d].ID){
 					if (rules[d].hStyle != "no default setting"){
 						return rules[d];
@@ -1177,8 +1089,8 @@ window.lastHLengthRule = function(slave, rules) {
 	}else if (!slave.currentRules) {
 		return null;
 	}else {
-		for(var d=rules.length-1; d >= 0;--d){	
-			for(var e=0; e < slave.currentRules.length;++e){	
+		for(var d=rules.length-1; d >= 0;--d){
+			for(var e=0; e < slave.currentRules.length;++e){
 				if(slave.currentRules[e] == rules[d].ID){
 					if (rules[d].hLength != "no default setting"){
 						return rules[d];
@@ -1197,8 +1109,8 @@ window.lastPubicHColorRule = function(slave, rules) {
 	}else if (!slave.currentRules) {
 		return null;
 	}else {
-		for(var d=rules.length-1; d >= 0;--d){	
-			for(var e=0; e < slave.currentRules.length;++e){	
+		for(var d=rules.length-1; d >= 0;--d){
+			for(var e=0; e < slave.currentRules.length;++e){
 				if(slave.currentRules[e] == rules[d].ID){
 					if (rules[d].pubicHColor != "no default setting"){
 						return rules[d];
@@ -1217,8 +1129,8 @@ window.lastPubicHStyleRule = function(slave, rules) {
 	}else if (!slave.currentRules) {
 		return null;
 	}else {
-		for(var d=rules.length-1; d >= 0;--d){	
-			for(var e=0; e < slave.currentRules.length;++e){	
+		for(var d=rules.length-1; d >= 0;--d){
+			for(var e=0; e < slave.currentRules.length;++e){
 				if(slave.currentRules[e] == rules[d].ID){
 					if (rules[d].pubicHStyle != "no default setting"){
 						return rules[d];
@@ -1277,8 +1189,8 @@ window.lastNipplesPiercingRule = function(slave, rules) {
 	}else if (!slave.currentRules) {
 		return null;
 	}else {
-		for(var d=rules.length-1; d >= 0;--d){	
-			for(var e=0; e < slave.currentRules.length;++e){	
+		for(var d=rules.length-1; d >= 0;--d){
+			for(var e=0; e < slave.currentRules.length;++e){
 				if(slave.currentRules[e] == rules[d].ID){
 					if (rules[d].nipplesPiercing != "no default setting"){
 						return rules[d];
@@ -1296,8 +1208,8 @@ window.lastAreolaePiercingRule = function(slave, rules) {
 	}else if (!slave.currentRules) {
 		return null;
 	}else {
-		for(var d=rules.length-1; d >= 0;--d){	
-			for(var e=0; e < slave.currentRules.length;++e){	
+		for(var d=rules.length-1; d >= 0;--d){
+			for(var e=0; e < slave.currentRules.length;++e){
 				if(slave.currentRules[e] == rules[d].ID){
 					if (rules[d].areolaePiercing != "no default setting"){
 						return rules[d];
@@ -1315,8 +1227,8 @@ window.lastClitPiercingRule = function(slave, rules) {
 	}else if (!slave.currentRules) {
 		return null;
 	}else {
-		for(var d=rules.length-1; d >= 0;--d){	
-			for(var e=0; e < slave.currentRules.length;++e){	
+		for(var d=rules.length-1; d >= 0;--d){
+			for(var e=0; e < slave.currentRules.length;++e){
 				if(slave.currentRules[e] == rules[d].ID){
 					if (rules[d].clitPiercing != "no default setting"){
 						return rules[d];
@@ -1353,8 +1265,8 @@ window.lastVaginaPiercingRule = function(slave, rules) {
 	}else if (!slave.currentRules) {
 		return null;
 	}else {
-		for(var d=rules.length-1; d >= 0;--d){	
-			for(var e=0; e < slave.currentRules.length;++e){	
+		for(var d=rules.length-1; d >= 0;--d){
+			for(var e=0; e < slave.currentRules.length;++e){
 				if(slave.currentRules[e] == rules[d].ID){
 					if (rules[d].vaginaPiercing != "no default setting"){
 						return rules[d];
@@ -1372,8 +1284,8 @@ window.lastDickPiercingRule = function(slave, rules) {
 	}else if (!slave.currentRules) {
 		return null;
 	}else {
-		for(var d=rules.length-1; d >= 0;--d){	
-			for(var e=0; e < slave.currentRules.length;++e){	
+		for(var d=rules.length-1; d >= 0;--d){
+			for(var e=0; e < slave.currentRules.length;++e){
 				if(slave.currentRules[e] == rules[d].ID){
 					if (rules[d].dickPiercing != "no default setting"){
 						return rules[d];
@@ -1391,8 +1303,8 @@ window.lastAnusPiercingRule = function(slave, rules) {
 	}else if (!slave.currentRules) {
 		return null;
 	}else {
-		for(var d=rules.length-1; d >= 0;--d){	
-			for(var e=0; e < slave.currentRules.length;++e){	
+		for(var d=rules.length-1; d >= 0;--d){
+			for(var e=0; e < slave.currentRules.length;++e){
 				if(slave.currentRules[e] == rules[d].ID){
 					if (rules[d].anusPiercing != "no default setting"){
 						return rules[d];
@@ -1410,8 +1322,8 @@ window.lastLipsPiercingRule = function(slave, rules) {
 	}else if (!slave.currentRules) {
 		return null;
 	}else {
-		for(var d=rules.length-1; d >= 0;--d){	
-			for(var e=0; e < slave.currentRules.length;++e){	
+		for(var d=rules.length-1; d >= 0;--d){
+			for(var e=0; e < slave.currentRules.length;++e){
 				if(slave.currentRules[e] == rules[d].ID){
 					if (rules[d].lipsPiercing != "no default setting"){
 						return rules[d];
@@ -1429,8 +1341,8 @@ window.lastTonguePiercingRule = function(slave, rules) {
 	}else if (!slave.currentRules) {
 		return null;
 	}else {
-		for(var d=rules.length-1; d >= 0;--d){	
-			for(var e=0; e < slave.currentRules.length;++e){	
+		for(var d=rules.length-1; d >= 0;--d){
+			for(var e=0; e < slave.currentRules.length;++e){
 				if(slave.currentRules[e] == rules[d].ID){
 					if (rules[d].tonguePiercing != "no default setting"){
 						return rules[d];
@@ -1448,8 +1360,8 @@ window.lastEarPiercingRule = function(slave, rules) {
 	}else if (!slave.currentRules) {
 		return null;
 	}else {
-		for(var d=rules.length-1; d >= 0;--d){	
-			for(var e=0; e < slave.currentRules.length;++e){	
+		for(var d=rules.length-1; d >= 0;--d){
+			for(var e=0; e < slave.currentRules.length;++e){
 				if(slave.currentRules[e] == rules[d].ID){
 					if (rules[d].earPiercing != "no default setting"){
 						return rules[d];
@@ -1467,8 +1379,8 @@ window.lastEyebrowPiercingRule = function(slave, rules) {
 	}else if (!slave.currentRules) {
 		return null;
 	}else {
-		for(var d=rules.length-1; d >= 0;--d){	
-			for(var e=0; e < slave.currentRules.length;++e){	
+		for(var d=rules.length-1; d >= 0;--d){
+			for(var e=0; e < slave.currentRules.length;++e){
 				if(slave.currentRules[e] == rules[d].ID){
 					if (rules[d].earPiercing != "no default setting"){
 						return rules[d];
@@ -1486,8 +1398,8 @@ window.lastNosePiercingRule = function(slave, rules) {
 	}else if (!slave.currentRules) {
 		return null;
 	}else {
-		for(var d=rules.length-1; d >= 0;--d){	
-			for(var e=0; e < slave.currentRules.length;++e){	
+		for(var d=rules.length-1; d >= 0;--d){
+			for(var e=0; e < slave.currentRules.length;++e){
 				if(slave.currentRules[e] == rules[d].ID){
 					if (rules[d].nosePiercing != "no default setting"){
 						return rules[d];
@@ -1505,8 +1417,8 @@ window.lastNavelPiercingRule = function(slave, rules) {
 	}else if (!slave.currentRules) {
 		return null;
 	}else {
-		for(var d=rules.length-1; d >= 0;--d){	
-			for(var e=0; e < slave.currentRules.length;++e){	
+		for(var d=rules.length-1; d >= 0;--d){
+			for(var e=0; e < slave.currentRules.length;++e){
 				if(slave.currentRules[e] == rules[d].ID){
 					if (rules[d].navelPiercing != "no default setting"){
 						return rules[d];
@@ -1524,8 +1436,8 @@ window.lastCorsetPiercingRule = function(slave, rules) {
 	}else if (!slave.currentRules) {
 		return null;
 	}else {
-		for(var d=rules.length-1; d >= 0;--d){	
-			for(var e=0; e < slave.currentRules.length;++e){	
+		for(var d=rules.length-1; d >= 0;--d){
+			for(var e=0; e < slave.currentRules.length;++e){
 				if(slave.currentRules[e] == rules[d].ID){
 					if (rules[d].corsetPiercing != "no default setting"){
 						return rules[d];
@@ -1543,8 +1455,8 @@ window.lastBoobsTatRule = function(slave, rules) {
 	}else if (!slave.currentRules) {
 		return null;
 	}else {
-		for(var d=rules.length-1; d >= 0;--d){	
-			for(var e=0; e < slave.currentRules.length;++e){	
+		for(var d=rules.length-1; d >= 0;--d){
+			for(var e=0; e < slave.currentRules.length;++e){
 				if(slave.currentRules[e] == rules[d].ID){
 					if (rules[d].boobsTat != "no default setting"){
 						return rules[d];
@@ -1562,8 +1474,8 @@ window.lastButtTatRule = function(slave, rules) {
 	}else if (!slave.currentRules) {
 		return null;
 	}else {
-		for(var d=rules.length-1; d >= 0;--d){	
-			for(var e=0; e < slave.currentRules.length;++e){	
+		for(var d=rules.length-1; d >= 0;--d){
+			for(var e=0; e < slave.currentRules.length;++e){
 				if(slave.currentRules[e] == rules[d].ID){
 					if (rules[d].buttTat != "no default setting"){
 						return rules[d];
@@ -1581,8 +1493,8 @@ window.lastVaginaTatRule = function(slave, rules) {
 	}else if (!slave.currentRules) {
 		return null;
 	}else {
-		for(var d=rules.length-1; d >= 0;--d){	
-			for(var e=0; e < slave.currentRules.length;++e){	
+		for(var d=rules.length-1; d >= 0;--d){
+			for(var e=0; e < slave.currentRules.length;++e){
 				if(slave.currentRules[e] == rules[d].ID){
 					if (rules[d].vaginaTat != "no default setting"){
 						return rules[d];
@@ -1600,8 +1512,8 @@ window.lastDickTatRule = function(slave, rules) {
 	}else if (!slave.currentRules) {
 		return null;
 	}else {
-		for(var d=rules.length-1; d >= 0;--d){	
-			for(var e=0; e < slave.currentRules.length;++e){	
+		for(var d=rules.length-1; d >= 0;--d){
+			for(var e=0; e < slave.currentRules.length;++e){
 				if(slave.currentRules[e] == rules[d].ID){
 					if (rules[d].dickTat != "no default setting"){
 						return rules[d];
@@ -1619,8 +1531,8 @@ window.lastAnusTatRule = function(slave, rules) {
 	}else if (!slave.currentRules) {
 		return null;
 	}else {
-		for(var d=rules.length-1; d >= 0;--d){	
-			for(var e=0; e < slave.currentRules.length;++e){	
+		for(var d=rules.length-1; d >= 0;--d){
+			for(var e=0; e < slave.currentRules.length;++e){
 				if(slave.currentRules[e] == rules[d].ID){
 					if (rules[d].anusTat != "no default setting"){
 						return rules[d];
@@ -1638,8 +1550,8 @@ window.lastLipsTatRule = function(slave, rules) {
 	}else if (!slave.currentRules) {
 		return null;
 	}else {
-		for(var d=rules.length-1; d >= 0;--d){	
-			for(var e=0; e < slave.currentRules.length;++e){	
+		for(var d=rules.length-1; d >= 0;--d){
+			for(var e=0; e < slave.currentRules.length;++e){
 				if(slave.currentRules[e] == rules[d].ID){
 					if (rules[d].lipsTat != "no default setting"){
 						return rules[d];
@@ -1657,8 +1569,8 @@ window.lastShouldersTatRule = function(slave, rules) {
 	}else if (!slave.currentRules) {
 		return null;
 	}else {
-		for(var d=rules.length-1; d >= 0;--d){	
-			for(var e=0; e < slave.currentRules.length;++e){	
+		for(var d=rules.length-1; d >= 0;--d){
+			for(var e=0; e < slave.currentRules.length;++e){
 				if(slave.currentRules[e] == rules[d].ID){
 					if (rules[d].shouldersTat != "no default setting"){
 						return rules[d];
@@ -1676,8 +1588,8 @@ window.lastArmsTatRule = function(slave, rules) {
 	}else if (!slave.currentRules) {
 		return null;
 	}else {
-		for(var d=rules.length-1; d >= 0;--d){	
-			for(var e=0; e < slave.currentRules.length;++e){	
+		for(var d=rules.length-1; d >= 0;--d){
+			for(var e=0; e < slave.currentRules.length;++e){
 				if(slave.currentRules[e] == rules[d].ID){
 					if (rules[d].armsTat != "no default setting"){
 						return rules[d];
@@ -1695,8 +1607,8 @@ window.lastLegsTatRule = function(slave, rules) {
 	}else if (!slave.currentRules) {
 		return null;
 	}else {
-		for(var d=rules.length-1; d >= 0;--d){	
-			for(var e=0; e < slave.currentRules.length;++e){	
+		for(var d=rules.length-1; d >= 0;--d){
+			for(var e=0; e < slave.currentRules.length;++e){
 				if(slave.currentRules[e] == rules[d].ID){
 					if (rules[d].legsTat != "no default setting"){
 						return rules[d];
@@ -1714,8 +1626,8 @@ window.lastStampTatRule = function(slave, rules) {
 	}else if (!slave.currentRules) {
 		return null;
 	}else {
-		for(var d=rules.length-1; d >= 0;--d){	
-			for(var e=0; e < slave.currentRules.length;++e){	
+		for(var d=rules.length-1; d >= 0;--d){
+			for(var e=0; e < slave.currentRules.length;++e){
 				if(slave.currentRules[e] == rules[d].ID){
 					if (rules[d].stampTat != "no default setting"){
 						return rules[d];
@@ -1734,11 +1646,11 @@ window.lastLactationSurgeryRule = function(slave, rules) {
 	}else if (!slave.currentRules) {
 		return null;
 	}else {
-		for(var d=rules.length-1; d >= 0;--d){	
+		for(var d=rules.length-1; d >= 0;--d){
 			if (!rules[d].surgery) {
 				return null;
 			}
-			for(var e=0; e < slave.currentRules.length;++e){	
+			for(var e=0; e < slave.currentRules.length;++e){
 				if(slave.currentRules[e] == rules[d].ID){
 					if (rules[d].surgery.lactation != "no default setting"){
 						return rules[d];
@@ -1756,11 +1668,11 @@ window.lastLipSurgeryRule = function(slave, rules) {
 	}else if (!slave.currentRules) {
 		return null;
 	}else {
-		for(var d=rules.length-1; d >= 0;--d){	
+		for(var d=rules.length-1; d >= 0;--d){
 			if (!rules[d].surgery) {
 				return null;
 			}
-			for(var e=0; e < slave.currentRules.length;++e){	
+			for(var e=0; e < slave.currentRules.length;++e){
 				if(slave.currentRules[e] == rules[d].ID){
 					if (rules[d].surgery.lips != "no default setting"){
 						return rules[d];
@@ -1782,7 +1694,7 @@ window.lastBoobSurgeryRule = function(slave, rules) {
 			if (!rules[d].surgery) {
 				return null;
 			}
-			for(var e=0; e < slave.currentRules.length;++e){	
+			for(var e=0; e < slave.currentRules.length;++e){
 				if(slave.currentRules[e] == rules[d].ID){
 					if (rules[d].surgery.boobs != "no default setting"){
 						return rules[d];
@@ -1804,7 +1716,7 @@ window.lastButtSurgeryRule = function(slave, rules) {
 			if (!rules[d].surgery) {
 				return null;
 			}
-			for(var e=0; e < slave.currentRules.length;++e){	
+			for(var e=0; e < slave.currentRules.length;++e){
 				if(slave.currentRules[e] == rules[d].ID){
 					if (rules[d].surgery.butt != "no default setting"){
 						return rules[d];
@@ -1875,28 +1787,120 @@ window.removeFromArray = function(arr, val) {
 	return null;
 };
 
+window.milkAmount = function(slave) {
+	var milk;
+	var calcs;
+	if (!slave) {
+		return null;
+	} else {
+		calcs = slave.boobs-slave.boobsImplant
+		if (calcs > 20000) {
+			milk = (118+((calcs-20000)/400))
+		} else if (calcs > 10000) {
+			milk = (78+((calcs-10000)/300))
+		} else if (calcs > 5000) {
+			milk = (53+((calcs-5000)/200))
+		} else if (calcs > 2000) {
+			milk = (29+((calcs-2000)/125))
+		} else if (calcs > 800) {
+			milk = (16+((calcs-800)/80))
+		} else {
+			milk = (8+((calcs-400)/50))
+		}
+		if (slave.lactation == 2) {
+			milk *= 1.2
+		}
+		milk += (milk*((slave.devotion-50)/200))
+		if (slave.boobsImplant > 200) {
+			milk *= 0.9
+		}
+		calcs = slave.hormones
+		if (slave.balls != 0 && calcs > -2) {
+			calcs -= 1
+		} else if (slave.ovaries != 1 && calcs < 2) {
+			calcs += 1
+		}
+		milk *= (1+(calcs*0.1))
+		milk *= (1+(slave.preg/100))
+		milk *= (1+(slave.health/50))
+		milk *= (1+(slave.weight/500))
+		milk *= (1+(slave.lactationAdaptation/500))
+		milk = Math.trunc(milk)
+		milk = Math.clamp(milk,1,1000000000000000000)
+		return milk
+	}
+};
 
+window.cumAmount = function(slave) {
+	var cum = 0;
+	var calcs = 0;
+	if (!slave) {
+		return null;
+	} else {
+		if (slave.drugs == "testicle enhancement") {
+			cum = ((slave.balls*3.5)+random(0,2))
+		} else if (slave.drugs == "hyper testicle enhancement") {
+			cum = ((slave.balls*5)+random(0,2))
+		} else {
+			cum = ((slave.balls*2.5)+random(0,2))
+		}
+		if (slave.prostateImplant == 1) {
+			cum *= 1.2
+		}
+		if (slave.diet == "cum production") {
+			cum *= 1.2
+		}
+		calcs = slave.hormones
+		cum *= (1-(calcs*0.1))
+		if (slave.scrotum == 0) {
+			cum *= 0.8
+		}
+		if (slave.devotion > 50) {
+			cum += (cum*(slave.devotion/100))
+		} else if (slave.devotion < -50) {
+			cum += (cum*(slave.devotion/100))
+		}
+		if (slave.health > 50) {
+			cum += (cum*(slave.health/50))
+		} else if (slave.health < -50) {
+			cum += (cum*(slave.health/50))
+		}
+		cum = Math.trunc(cum)
+		cum = Math.clamp(cum,1,1000000000000000000)
+		return cum
+	}
+};
 
+window.randomRelatedSlave = function(slave, filterFunction) {
+  if(!slave || !SugarCube) { return undefined; }
+  if(typeof filterFunction !==  'function') { filterFunction = function(s, index, array) { return true; }; }
+  return SugarCube.State.variables.slaves.filter(filterFunction).shuffle().find(function(s, index, array) {return areSisters(slave, s) || s.mother == slave.ID || s.father == slave.ID || slave.ID == s.mother || slave.ID == father; })
+}
 
+window.randomRelatedAvailableSlave = function(slave) {
+	return randomRelatedSlave(slave, function(s, index, array) { return isSlaveAvailable(s); });
+}
 
+window.randomSister = function(slave) {
+	return randomRelatedSlave(slave, function(s, index, array) { return areSisters(slave, s); });
+}
 
+window.randomAvailableSister = function(slave) {
+	return randomRelatedSlave(slave, function(s, index, array) { return isSlaveAvailable(s) && areSisters(slave, s); });
+}
 
+window.randomDaughter = function(slave) {
+	return randomRelatedSlave(slave, function(s, index, array) { return s.mother == slave.ID || s.father == slave.ID; });
+}
 
+window.randomAvailableDaughter = function(slave) {
+	return randomRelatedSlave(slave, function(s, index, array) { return isSlaveAvailable(s) && (s.mother == slave.ID || s.father == slave.ID); });
+}
 
+window.randomParent = function(slave) {
+	return randomRelatedSlave(slave, function(s, index, array) { return s.ID == slave.mother || s.ID == slave.father; });
+}
 
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+window.randomAvailableParent = function(slave) {
+	return randomRelatedSlave(slave, function(s, index, array) { return isSlaveAvailable(s) && (s.ID == slave.mother || s.ID == slave.father); });
+}
\ No newline at end of file
diff --git a/src/npc/acquisition.tw b/src/npc/acquisition.tw
index 254d4aa3c14de0e8f48cb411db68e2871bf8bdd8..6ca1c2b1637a128f03b39e63d82a29ef4946933a 100644
--- a/src/npc/acquisition.tw
+++ b/src/npc/acquisition.tw
@@ -192,19 +192,7 @@ The previous owner seems to have left in something of a hurry. <<if $saveImporte
 				<<set $slaves[$i].daughters += 1>>
 			<</if>>
 			<<if areSisters($slaves[$j], $slaves[$i]) > 0>>
-				<<set $slaves[$i].sisters += 1>>
-			<</if>>
-		<</for>>
-	<</if>>
-	<<if $familyTesting == 1>>
-		<<set $slaves[$i].sisters = 0>>
-		<<set $slaves[$i].daughters = 0>>
-		<<for $j to 0; $j < $slaves.length; $j++>>
-			<<if $slaves[$j].mother == $slaves[$i].ID || $slaves[$j].father == $slaves[$i].ID>>
-				<<set $slaves[$i].daughters += 1>>
-			<</if>>
-			<<if areSisters($slaves[$j], $slaves[$i]) > 0>>
-				<<set $slaves[$i].sisters += 1>>
+				<<set $slaves[$i].sisters++>>
 			<</if>>
 		<</for>>
 	<</if>>
diff --git a/src/npc/databases/cheatmodeDatabase.tw b/src/npc/databases/cheatmodeDatabase.tw
index 2ddb51f40036cafc93878e81af688912c0baa2ce..9ceaafde33fdd24c5ce4236b950e28155eb5f798 100644
--- a/src/npc/databases/cheatmodeDatabase.tw
+++ b/src/npc/databases/cheatmodeDatabase.tw
@@ -1,6 +1,6 @@
 :: Cheatmode Database [nobr]
 
-<<set $activeSlave to {slaveName: "blank", birthName: "blank", weekAcquired: 1, origin: 0, career: 0, ID: 0, prestige: 0, pornFame: 0, pornFameSpending: 0, prestigeDesc: 0, recruiter: 0, relation: 0, relationTarget: 0, relationship: 0, relationshipTarget: 0, rivalry: 0, rivalryTarget: 0, subTarget: 0, choosesOwnAssignment: 0, assignment: "rest", assignmentVisible: 1, sentence: 0, training: 0, toyHole: "all her holes", indenture: -1, indentureRestrictions: 0, birthWeek: random(0,51), actualAge: 18, physicalAge: 18, visualAge: 18, ageImplant: 0, health: 0, minorInjury: 0, trust: 0, oldTrust: 0, devotion: 0, oldDevotion: 0, weight: 0, muscles: 0, height: 170, heightImplant: 0, nationality: "slave", race: "white", markings: "none", eyes: 1, eyeColor: "brown", eyewear: "none", hColor: "brown", pubicHColor: "brown", skin: "light", hLength: 60, hStyle: "short", pubicHStyle: "neat", waist: 0, corsetPiercing: 0, amp: 0, heels:0, voice: 2, voiceImplant: 0, accent: 0, shoulders: 0, shouldersImplant: 0, boobs: 0, boobsImplant: 0, boobsImplantType: 0, boobShape: "normal", nipples: "cute",  nipplesPiercing: 0, areolae: 0, areolaePiercing: 0, boobsTat: 0, lactation: 0, lactationAdaptation: 0, milk: 0, cum: 0, hips: 0, hipsImplant: 0, butt: 0, buttImplant: 0, buttImplantType: 0, buttTat: 0, face: 0, faceImplant: 0, faceShape: "normal", lips: 15, lipsImplant: 0, lipsPiercing: 0, lipsTat: 0, teeth: "normal", tonguePiercing: 0, vagina: 0, vaginaLube: 0, vaginaPiercing: 0, vaginaTat: 0, preg: -1, pregSource: 0, pregType: 0, labor: 0, births: 0, cSec: 0, bellyAccessory: "none", labia: 0, clit: 0, clitPiercing: 0, clitSetting: "vanilla", foreskin: 0, anus: 0, dick: 0, analArea: 1, dickPiercing: 0, dickTat: 0, balls: 0, scrotum: 0, ovaries: 0, anusPiercing: 0, anusTat: 0, makeup: 0, nails: 0, brand: 0, brandLocation: 0, earPiercing: 0, nosePiercing: 0, eyebrowPiercing: 0, navelPiercing: 0, shouldersTat: 0, armsTat: 0, legsTat: 0, backTat: 0, stampTat: 0, vaginalSkill: 0, oralSkill: 0, analSkill: 0, whoreSkill: 0, entertainSkill: 0, combatSkill: 0, livingRules: "spare", speechRules: "restrictive", releaseRules:"restrictive", relationshipRules: "restrictive", standardPunishment: "situational", standardReward: "situational", useRulesAssistant: 1, diet: "healthy", dietCum: 0, dietMilk: 0, tired: 0, hormones: 0, drugs: "no drugs", curatives: 0, chem: 0, aphrodisiacs: 0, addict: 0, fuckdoll: 0, choosesOwnClothes: 0, clothes: "no clothing", collar: "none", shoes: "none", vaginalAccessory: "none", dickAccessory: "none", buttplug: "none", intelligence: 0,  intelligenceImplant: 0, energy: 50, attrXX: 0, attrXY: 0, attrKnown: 0, fetish: "none", fetishStrength: 70, fetishKnown: 0, behavioralFlaw: "none", behavioralQuirk: "none", sexualFlaw: "none", sexualQuirk: "none", oralCount: 0, vaginalCount: 0, analCount: 0, mammaryCount: 0, penetrativeCount: 0, publicCount: 0, pitKills: 0, customTat: "", customLabel: "", customDesc: "", currentRules: [], father: 0, mother: 0, sisters: 0, daughters: 0, canRecruit: 0, HGExclude: 0, ballType: "human", eggType: "human"}>>
+<<set $activeSlave to {slaveName: "blank", birthName: "blank", weekAcquired: 1, origin: 0, career: 0, ID: 0, prestige: 0, pornFame: 0, pornFameSpending: 0, prestigeDesc: 0, recruiter: 0, relation: 0, relationTarget: 0, relationship: 0, relationshipTarget: 0, rivalry: 0, rivalryTarget: 0, subTarget: 0, choosesOwnAssignment: 0, assignment: "rest", assignmentVisible: 1, sentence: 0, training: 0, toyHole: "all her holes", indenture: -1, indentureRestrictions: 0, birthWeek: random(0,51), actualAge: 18, physicalAge: 18, visualAge: 18, ageImplant: 0, health: 0, minorInjury: 0, trust: 0, oldTrust: 0, devotion: 0, oldDevotion: 0, weight: 0, muscles: 0, height: 170, heightImplant: 0, nationality: "slave", race: "white", markings: "none", eyes: 1, eyeColor: "brown", eyewear: "none", hColor: "brown", pubicHColor: "brown", skin: "light", hLength: 60, hStyle: "short", pubicHStyle: "neat", waist: 0, corsetPiercing: 0, amp: 0, heels:0, voice: 2, voiceImplant: 0, accent: 0, shoulders: 0, shouldersImplant: 0, boobs: 0, boobsImplant: 0, boobsImplantType: 0, boobShape: "normal", nipples: "cute",  nipplesPiercing: 0, areolae: 0, areolaePiercing: 0, boobsTat: 0, lactation: 0, lactationAdaptation: 0, milk: 0, cum: 0, hips: 0, hipsImplant: 0, butt: 0, buttImplant: 0, buttImplantType: 0, buttTat: 0, face: 0, faceImplant: 0, faceShape: "normal", lips: 15, lipsImplant: 0, lipsPiercing: 0, lipsTat: 0, teeth: "normal", tonguePiercing: 0, vagina: 0, vaginaLube: 0, vaginaPiercing: 0, vaginaTat: 0, preg: -1, pregSource: 0, pregType: 0, labor: 0, births: 0, cSec: 0, bellyAccessory: "none", labia: 0, clit: 0, clitPiercing: 0, clitSetting: "vanilla", foreskin: 0, anus: 0, dick: 0, analArea: 1, dickPiercing: 0, dickTat: 0, balls: 0, scrotum: 0, ovaries: 0, anusPiercing: 0, anusTat: 0, makeup: 0, nails: 0, brand: 0, brandLocation: 0, earPiercing: 0, nosePiercing: 0, eyebrowPiercing: 0, navelPiercing: 0, shouldersTat: 0, armsTat: 0, legsTat: 0, backTat: 0, stampTat: 0, vaginalSkill: 0, oralSkill: 0, analSkill: 0, whoreSkill: 0, entertainSkill: 0, combatSkill: 0, livingRules: "spare", speechRules: "restrictive", releaseRules:"restrictive", relationshipRules: "restrictive", standardPunishment: "situational", standardReward: "situational", useRulesAssistant: 1, diet: "healthy", dietCum: 0, dietMilk: 0, tired: 0, hormones: 0, drugs: "no drugs", curatives: 0, chem: 0, aphrodisiacs: 0, addict: 0, fuckdoll: 0, choosesOwnClothes: 0, clothes: "no clothing", collar: "none", shoes: "none", vaginalAccessory: "none", dickAccessory: "none", buttplug: "none", intelligence: 0,  intelligenceImplant: 0, energy: 50, attrXX: 0, attrXY: 0, attrKnown: 0, fetish: "none", fetishStrength: 70, fetishKnown: 0, behavioralFlaw: "none", behavioralQuirk: "none", sexualFlaw: "none", sexualQuirk: "none", oralCount: 0, vaginalCount: 0, analCount: 0, mammaryCount: 0, penetrativeCount: 0, publicCount: 0, pitKills: 0, customTat: "", customLabel: "", customDesc: "", customImage: 0, currentRules: [], father: 0, mother: 0, sisters: 0, daughters: 0, canRecruit: 0, HGExclude: 0, ballType: "human", eggType: "human"}>>
 
 <<set _HS = clone($activeSlave)>>
 <<set _HS.slaveName = "Miss Anne", _HS.birthName = "Lindy Anne", _HS.ID = 990000, _HS.relation = "mother", _HS.relationTarget = 990004, _HS.relationship = 4, _HS.relationshipTarget = 990001, _HS.rivalry = 1, _HS.rivalryTarget = 990002, _HS.assignment = "be your Head Girl", _HS.birthWeek = random(0,51), _HS.actualAge = 42, _HS.physicalAge = 42, _HS.visualAge = 42, _HS.ageImplant = 1, _HS.health = 50, _HS.devotion = 100, _HS.height = 175, _HS.eyeColor = "green", _HS.hColor = "honey blonde", _HS.skin = "pale", _HS.hStyle = "long", _HS.waist = 1, _HS.boobs = 1000, _HS.boobsImplant = 600, _HS.areolae = 1, _HS.butt = 4, _HS.buttImplant = 2, _HS.face = 2, _HS.lips = 35, _HS.vagina = 2, _HS.anus = 1, _HS.ovaries = 1, _HS.makeup = 1, _HS.nails = 1, _HS.earPiercing = 1, _HS.vaginalSkill = 100, _HS.oralSkill = 100, _HS.analSkill = 100, _HS.whoreSkill = 100, _HS.entertainSkill = 100, _HS.clothes = "a slave gown", _HS.intelligence = 3, _HS.energy = 65, _HS.attrXY = 40, _HS.fetishKnown = 1, _HS.customTat = "'Miss Anne' is tattooed in lovely flowing script over her collarbone.", _HS.customDesc = "She speaks with the rich accent of the Old South.">>
diff --git a/src/npc/databases/dSlavesDatabase.tw b/src/npc/databases/dSlavesDatabase.tw
index d744d8ae0531748f12e314fe798c496ab6706b74..c3a0624011bb75c2f4d874d9c6d2b60378f4f3c4 100644
--- a/src/npc/databases/dSlavesDatabase.tw
+++ b/src/npc/databases/dSlavesDatabase.tw
@@ -568,7 +568,7 @@
 
 <</if>>
 
-<<if $familyTest == 1>>
+<<if $familyTesting == 1>>
 
 <<set _HS = clone($activeSlave)>>
 <<set _HS.slaveName = "Camille", _HS.birthName = "Camille", _HS.origin = "She is half of a famous musical duo, along with her twin sister. They fled to the Free Cities.", _HS.career = "an aspiring pop star", _HS.prestige = 1, _HS.prestigeDesc = "She is a famed singer; citizens would pay top prices to feel her mouth around their dicks.", _HS.birthWeek = 16, _HS.actualAge = 23, _HS.phyiscalAge = 23, _HS.visuallAge = 23, _HS.health = 40, _HS.weight = -10, _HS.muscles = 10, _HS.height = 170, _HS.nationality = "American", _HS.race = "white", _HS.eyeColor = "blue", _HS.hColor = "blonde", _HS.skin = "pale", _HS.hLength = 60, _HS.hStyle = "ass length, with thick luxurious bangs.", _HS.pubicHStyle = "waxed", _HS.waist = 1, _HS.voice = 2, _HS.boobs = 300, _HS.boobShape = "perky", _HS.butt = 2, _HS.face = 3, _HS.lips = 25, _HS.earPiercing = 1, _HS.oralSkill = 15, _HS.entertainSkill = 100, _HS.energy = 50, _HS.attrXX = 80, _HS.fetish = "boobs", _HS.fetishStrength = 70, _HS.behavioralFlaw = "arrogant", _HS.sexualFlaw = "hates men", _HS.customDesc = "She has an identical twin sister named Kennerly, from whom she hates to be parted. They're from the former United States.", _HS.mother = -100002, _HS.father = -100002>>
diff --git a/src/npc/exportSlave.tw b/src/npc/exportSlave.tw
index 04739d38148455d8406fe556ebec686331ec0e40..efe5743f27d8308284d2ee64ef1164c8e9239abd 100644
--- a/src/npc/exportSlave.tw
+++ b/src/npc/exportSlave.tw
@@ -13,4 +13,4 @@
 
 <<if (ndef $activeSlave.currentRules) || ($activeSlave.currentRules.length < 1)>><<set _currentRules to "[]">><<else>><<set _currentRules to "$activeSlave.currentRules">><</if>>
 
-slaveName: "$activeSlave.slaveName", birthName: "$activeSlave.birthName", weekAcquired: 1, origin: "$activeSlave.origin", career: "$activeSlave.career", ID: $activeSlave.ID, pornFame: $activeSlave.pornFame, pornFameSpending: $activeSlave.pornFameSpending, prestige: $activeSlave.prestige, prestigeDesc: "$activeSlave.prestigeDesc", recruiter: 0, relation: 0, relationTarget: 0, relationship: 0, relationshipTarget: 0, rivalry: 0, rivalryTarget: 0, subTarget: 0, choosesOwnAssignment: 0, assignment: "rest", assignmentVisible: 1, sentence: 0, training: 0, toyHole: "all her holes", indenture: -1, indentureRestrictions: 0, birthWeek: _birthWeek, age: $activeSlave.age, ageImplant: $activeSlave.ageImplant, health: $activeSlave.health, minorInjury: 0, trust: $activeSlave.trust, oldTrust: $activeSlave.trust, devotion: $activeSlave.devotion, oldDevotion: $activeSlave.devotion, weight: $activeSlave.weight, muscles: $activeSlave.muscles, height: $activeSlave.height, heightImplant: $activeSlave.heightImplant, nationality: "$activeSlave.nationality", race: "$activeSlave.race", markings: "none", eyes: 1, eyeColor: "$activeSlave.eyeColor", eyewear: "none", hColor: "$activeSlave.hColor", pubicHColor: "$activeSlave.pubicHColor", skin: "$activeSlave.skin", hLength: $activeSlave.hLength, hStyle: "$activeSlave.hStyle", pubicHStyle: "$activeSlave.pubicHStyle", waist: $activeSlave.waist, corsetPiercing: 0, amp: $activeSlave.amp, heels: $activeSlave.heels, voice: $activeSlave.voice, voiceImplant: $activeSlave.voiceImplant, accent: $activeSlave.accent, shoulders: $activeSlave.shoulders, shouldersImplant: $activeSlave.shouldersImplant, boobs: $activeSlave.boobs, boobsImplant: $activeSlave.boobsImplant, boobsImplantType: $activeSlave.boobsImplantType, boobShape: "normal", nipples: "$activeSlave.nipples",  nipplesPiercing: $activeSlave.nipplesPiercing, areolae: $activeSlave.areolae, areolaePiercing: $activeSlave.areolaePiercing, boobsTat: "$activeSlave.boobsTat", lactation: $activeSlave.lactation, lactationAdaptation: 0, milk: 0, cum: 0, hips: $activeSlave.hips, hipsImplant: $activeSlave.hipsImplant, butt: $activeSlave.butt, buttImplant: $activeSlave.buttImplant, buttImplantType: $activeSlave.buttImplantType, buttTat: "$activeSlave.buttTat", face: $activeSlave.face, faceImplant: $activeSlave.faceImplant, faceShape: "normal", lips: $activeSlave.lips, lipsImplant: $activeSlave.lipsImplant, lipsPiercing: $activeSlave.lipsPiercing, lipsTat: "$activeSlave.lipsTat", teeth: "$activeSlave.teeth", tonguePiercing: $activeSlave.tonguePiercing, vagina: $activeSlave.vagina, vaginaLube: $activeSlave.vaginaLube, vaginaPiercing: $activeSlave.vaginaPiercing, vaginaTat: "$activeSlave.vaginaTat", preg: $activeSlave.preg, pregSource: 0, pregType: 0, labor: 0, births: $activeSlave.births, cSec: 0, bellyAccessory: "none", labia: $activeSlave.labia, clit: $activeSlave.clit, clitPiercing: $activeSlave.clitPiercing, clitSetting: "$activeSlave.clitSetting", foreskin: 0, anus: $activeSlave.anus, dick: $activeSlave.dick, analArea: 1, dickPiercing: $activeSlave.dickPiercing, dickTat: "$activeSlave.dickTat", balls: $activeSlave.balls, scrotum: 0, ovaries: $activeSlave.ovaries, anusPiercing: $activeSlave.anusPiercing, anusTat: "$activeSlave.anusTat", makeup: $activeSlave.makeup, nails: $activeSlave.nails, brand: "$activeSlave.brand", brandLocation: "$activeSlave.brandLocation", earPiercing: $activeSlave.earPiercing, nosePiercing: $activeSlave.nosePiercing, eyebrowPiercing: $activeSlave.eyebrowPiercing, navelPiercing: $activeSlave.navelPiercing, shouldersTat: "$activeSlave.shouldersTat", armsTat: "$activeSlave.armsTat", legsTat: "$activeSlave.legsTat", backTat: "$activeSlave.backTat", stampTat: "$activeSlave.stampTat", vaginalSkill: $activeSlave.vaginalSkill, oralSkill: $activeSlave.oralSkill, analSkill: $activeSlave.analSkill, whoreSkill: $activeSlave.whoreSkill, entertainSkill: $activeSlave.entertainSkill, combatSkill: $activeSlave.combatSkill, livingRules: "$activeSlave.livingRules", speechRules: "$activeSlave.speechRules", releaseRules: "$activeSlave.releaseRules", relationshipRules: "$activeSlave.relationshipRules", standardPunishment: "situational", standardReward: "situational", useRulesAssistant: 1, diet: "$activeSlave.diet", dietCum: $activeSlave.dietCum, dietMilk: $activeSlave.dietMilk, tired: 0, hormones: 0, drugs: "$activeSlave.drugs", curatives: 0, chem: 0, aphrodisiacs: 0, addict: $activeSlave.addict, fuckdoll: $activeSlave.fuckdoll, choosesOwnClothes: 0, clothes: "$activeSlave.clothes", collar: "$activeSlave.collar", shoes: "$activeSlave.shoes", vaginalAccessory: "none", dickAccessory: "none", buttplug: "none", intelligence: $activeSlave.intelligence,  intelligenceImplant: $activeSlave.intelligenceImplant, energy: $activeSlave.energy, attrXX: $activeSlave.attrXX, attrXY: $activeSlave.attrXY, attrKnown: $activeSlave.attrKnown, fetish: "$activeSlave.fetish", fetishStrength: $activeSlave.fetishStrength, fetishKnown: $activeSlave.fetishKnown, behavioralFlaw: "$activeSlave.behavioralFlaw", behavioralQuirk: "none", sexualFlaw: "$activeSlave.sexualFlaw", sexualQuirk: "none", oralCount: 0, vaginalCount: 0, analCount: 0, mammaryCount: 0, penetrativeCount: 0, pitKills: 0, customTat: "$activeSlave.customTat", customLabel: "", customDesc: "$activeSlave.customDesc", currentRules: _currentRules
+slaveName: "$activeSlave.slaveName", birthName: "$activeSlave.birthName", weekAcquired: 1, origin: "$activeSlave.origin", career: "$activeSlave.career", ID: $activeSlave.ID, pornFame: $activeSlave.pornFame, pornFameSpending: $activeSlave.pornFameSpending, prestige: $activeSlave.prestige, prestigeDesc: "$activeSlave.prestigeDesc", recruiter: 0, relation: 0, relationTarget: 0, relationship: 0, relationshipTarget: 0, rivalry: 0, rivalryTarget: 0, subTarget: 0, choosesOwnAssignment: 0, assignment: "rest", assignmentVisible: 1, sentence: 0, training: 0, toyHole: "all her holes", indenture: -1, indentureRestrictions: 0, birthWeek: _birthWeek, age: $activeSlave.age, ageImplant: $activeSlave.ageImplant, health: $activeSlave.health, minorInjury: 0, trust: $activeSlave.trust, oldTrust: $activeSlave.trust, devotion: $activeSlave.devotion, oldDevotion: $activeSlave.devotion, weight: $activeSlave.weight, muscles: $activeSlave.muscles, height: $activeSlave.height, heightImplant: $activeSlave.heightImplant, nationality: "$activeSlave.nationality", race: "$activeSlave.race", markings: "none", eyes: 1, eyeColor: "$activeSlave.eyeColor", eyewear: "none", hColor: "$activeSlave.hColor", pubicHColor: "$activeSlave.pubicHColor", skin: "$activeSlave.skin", hLength: $activeSlave.hLength, hStyle: "$activeSlave.hStyle", pubicHStyle: "$activeSlave.pubicHStyle", waist: $activeSlave.waist, corsetPiercing: 0, amp: $activeSlave.amp, heels: $activeSlave.heels, voice: $activeSlave.voice, voiceImplant: $activeSlave.voiceImplant, accent: $activeSlave.accent, shoulders: $activeSlave.shoulders, shouldersImplant: $activeSlave.shouldersImplant, boobs: $activeSlave.boobs, boobsImplant: $activeSlave.boobsImplant, boobsImplantType: $activeSlave.boobsImplantType, boobShape: "normal", nipples: "$activeSlave.nipples",  nipplesPiercing: $activeSlave.nipplesPiercing, areolae: $activeSlave.areolae, areolaePiercing: $activeSlave.areolaePiercing, boobsTat: "$activeSlave.boobsTat", lactation: $activeSlave.lactation, lactationAdaptation: 0, milk: 0, cum: 0, hips: $activeSlave.hips, hipsImplant: $activeSlave.hipsImplant, butt: $activeSlave.butt, buttImplant: $activeSlave.buttImplant, buttImplantType: $activeSlave.buttImplantType, buttTat: "$activeSlave.buttTat", face: $activeSlave.face, faceImplant: $activeSlave.faceImplant, faceShape: "normal", lips: $activeSlave.lips, lipsImplant: $activeSlave.lipsImplant, lipsPiercing: $activeSlave.lipsPiercing, lipsTat: "$activeSlave.lipsTat", teeth: "$activeSlave.teeth", tonguePiercing: $activeSlave.tonguePiercing, vagina: $activeSlave.vagina, vaginaLube: $activeSlave.vaginaLube, vaginaPiercing: $activeSlave.vaginaPiercing, vaginaTat: "$activeSlave.vaginaTat", preg: $activeSlave.preg, pregSource: 0, pregType: 0, labor: 0, births: $activeSlave.births, cSec: 0, bellyAccessory: "none", labia: $activeSlave.labia, clit: $activeSlave.clit, clitPiercing: $activeSlave.clitPiercing, clitSetting: "$activeSlave.clitSetting", foreskin: 0, anus: $activeSlave.anus, dick: $activeSlave.dick, analArea: 1, dickPiercing: $activeSlave.dickPiercing, dickTat: "$activeSlave.dickTat", balls: $activeSlave.balls, scrotum: 0, ovaries: $activeSlave.ovaries, anusPiercing: $activeSlave.anusPiercing, anusTat: "$activeSlave.anusTat", makeup: $activeSlave.makeup, nails: $activeSlave.nails, brand: "$activeSlave.brand", brandLocation: "$activeSlave.brandLocation", earPiercing: $activeSlave.earPiercing, nosePiercing: $activeSlave.nosePiercing, eyebrowPiercing: $activeSlave.eyebrowPiercing, navelPiercing: $activeSlave.navelPiercing, shouldersTat: "$activeSlave.shouldersTat", armsTat: "$activeSlave.armsTat", legsTat: "$activeSlave.legsTat", backTat: "$activeSlave.backTat", stampTat: "$activeSlave.stampTat", vaginalSkill: $activeSlave.vaginalSkill, oralSkill: $activeSlave.oralSkill, analSkill: $activeSlave.analSkill, whoreSkill: $activeSlave.whoreSkill, entertainSkill: $activeSlave.entertainSkill, combatSkill: $activeSlave.combatSkill, livingRules: "$activeSlave.livingRules", speechRules: "$activeSlave.speechRules", releaseRules: "$activeSlave.releaseRules", relationshipRules: "$activeSlave.relationshipRules", standardPunishment: "situational", standardReward: "situational", useRulesAssistant: 1, diet: "$activeSlave.diet", dietCum: $activeSlave.dietCum, dietMilk: $activeSlave.dietMilk, tired: 0, hormones: 0, drugs: "$activeSlave.drugs", curatives: 0, chem: 0, aphrodisiacs: 0, addict: $activeSlave.addict, fuckdoll: $activeSlave.fuckdoll, choosesOwnClothes: 0, clothes: "$activeSlave.clothes", collar: "$activeSlave.collar", shoes: "$activeSlave.shoes", vaginalAccessory: "none", dickAccessory: "none", buttplug: "none", intelligence: $activeSlave.intelligence,  intelligenceImplant: $activeSlave.intelligenceImplant, energy: $activeSlave.energy, attrXX: $activeSlave.attrXX, attrXY: $activeSlave.attrXY, attrKnown: $activeSlave.attrKnown, fetish: "$activeSlave.fetish", fetishStrength: $activeSlave.fetishStrength, fetishKnown: $activeSlave.fetishKnown, behavioralFlaw: "$activeSlave.behavioralFlaw", behavioralQuirk: "none", sexualFlaw: "$activeSlave.sexualFlaw", sexualQuirk: "none", oralCount: 0, vaginalCount: 0, analCount: 0, mammaryCount: 0, penetrativeCount: 0, pitKills: 0, customTat: "$activeSlave.customTat", customLabel: "", customDesc: "$activeSlave.customDesc", customImage: 0, currentRules: _currentRules
diff --git a/src/npc/fRelation.tw b/src/npc/fRelation.tw
index da23f402972a50b55a51cbcdc95360eea6b2a966..a4f0c964f0b47299ee5243d008c03b1b1d70f924 100644
--- a/src/npc/fRelation.tw
+++ b/src/npc/fRelation.tw
@@ -16,33 +16,31 @@
 		<</if>>
 	<</for>>
 <<elseif ($partner is "daughter")>>
-	<<set $relation = $slaves>>
-	<<set $relation = $relation.shuffle()>>
-	<<for _i to 0; _i < $relation.length; _i++>>
-		<<if $activeSlave.ID == $relation[_i].father && isAvailabe($relation[_i])>>
-			<<set $partner to $relation[_i], _activeSlaveRel to "father", _partnerRel to "daughter">>
-			<<break>>
-		<<elseif $activeSlave.ID == $relation[_i].mother && isAvailabe($relation[_i])>>
-			<<set $partner to $relation[_i], _activeSlaveRel to "mother", _partnerRel to "daughter">>
+	<<for _i to 0; _i < $slaves.length; _i++>>
+		<<if $partner.ID == $slaves[_i].ID>> /*incompatability fix*/
 			<<break>>
 		<</if>>
 	<</for>>
+	<<set $partner = randomAvailableParent($activeSlave)>>
+	<<if $activeSlave.ID == $partner.father>>
+		<<set _activeSlaveRel to "father", _partnerRel to "daughter">>
+	<<elseif $activeSlave.ID == $partner.mother>>
+		<<set _activeSlaveRel to "mother", _partnerRel to "daughter">>
+	<</if>>
 <<elseif ($partner is "sister")>>
-	<<set $relation = $slaves>>
-	<<set $relation = $relation.shuffle()>>
-	<<for _i to 0; _i < $relation.length; _i++>>
-		<<if areSisters($activeSlave, $relation[_i]) > 0 && isAvailabe($relation[$i])>>
-			<<set $partner to $relation[_i]>>
-			<<if areSisters($activeSlave, $partner) == 3>>
-				<<set _activeSlaveRel to "half-sister", _partnerRel to "half-sister">>
-			<<elseif areSisters($activeSlave, $partner) == 2>>
-				<<set _activeSlaveRel to "sister", _partnerRel to "sister">>
-			<<elseif areSisters($activeSlave, $partner) == 1>>
-				<<set _activeSlaveRel to "twin", _partnerRel to "twin">>
-			<</if>>
+	<<set $partner to randomAvailableSister($activeSlave)>>
+	<<for _i to 0; _i < $slaves.length; _i++>>
+		<<if $partner.ID == $slaves[_i].ID>> /*incompatability fix*/
 			<<break>>
 		<</if>>
 	<</for>>
+	<<if areSisters($activeSlave, $partner) == 3>>
+		<<set _activeSlaveRel to "half-sister", _partnerRel to "half-sister">>
+	<<elseif areSisters($activeSlave, $partner) == 2>>
+		<<set _activeSlaveRel to "sister", _partnerRel to "sister">>
+	<<elseif areSisters($activeSlave, $partner) == 1>>
+		<<set _activeSlaveRel to "twin", _partnerRel to "twin">>
+	<</if>>
 <<elseif ($partner is "relation")>>
 	<<for _i to 0; _i lt $slaves.length; _i++>>
 	<<if $slaves[_i].ID == $activeSlave.relationTarget>>
diff --git a/src/npc/removeActiveSlave.tw b/src/npc/removeActiveSlave.tw
index b46c05acb8841ecf24e035fddc28db259919cbd4..770431f7677c42988181e0e0e1004b429b975a13 100644
--- a/src/npc/removeActiveSlave.tw
+++ b/src/npc/removeActiveSlave.tw
@@ -154,7 +154,6 @@
 	<</if>>
 
 	<<set $dump to $slaves.pluck([$x], [$x])>>
-	/*<<set $x -= 1>>*/
 	<<break>>
 <</if>>
 <</for>>
diff --git a/src/npc/uploadSlave.tw b/src/npc/uploadSlave.tw
index 7a5b7c112f7902bfa08a57a6e8b40d141648a099..df199748376c9b45e469dc61f377902197bfc50a 100644
--- a/src/npc/uploadSlave.tw
+++ b/src/npc/uploadSlave.tw
@@ -12,6 +12,6 @@
 <<nobr>>
 
 VERSION: $ver.<br>
-slaveName: "$activeSlave.slaveName", birthName: "$activeSlave.birthName", weekAcquired: 1, origin: <<if $activeSlave.origin == 0>>0<<else>>"$activeSlave.origin"<</if>>, career: <<if $activeSlave.career == 0>>0<<else>>"$activeSlave.career"<</if>>, ID: $activeSlave.ID, pornFame: $activeSlave.pornFame, pornFameSpending: $activeSlave.pornFameSpending, prestige: $activeSlave.prestige, prestigeDesc: "$activeSlave.prestigeDesc", recruiter: 0, relation: 0, relationTarget: 0, relationship: 0, relationshipTarget: 0, rivalry: 0, rivalryTarget: 0, subTarget: 0, choosesOwnAssignment: 0, assignment: "rest", assignmentVisible: 1, sentence: 0, training: 0, toyHole: "all her holes", indenture: -1, indentureRestrictions: 0, birthWeek: random(0,51), age: $activeSlave.age, ageImplant: $activeSlave.ageImplant, health: $activeSlave.health, minorInjury: 0, trust: $activeSlave.trust, oldTrust: $activeSlave.trust, devotion: $activeSlave.devotion, oldDevotion: $activeSlave.devotion, weight: $activeSlave.weight, muscles: $activeSlave.muscles, height: $activeSlave.height, heightImplant: $activeSlave.heightImplant, nationality: "$activeSlave.nationality", race: "$activeSlave.race", markings: "none", eyes: 1, eyeColor: "$activeSlave.eyeColor", eyewear: "none", hColor: "$activeSlave.hColor", pubicHColor: "$activeSlave.pubicHColor", skin: "$activeSlave.skin", hLength: $activeSlave.hLength, hStyle: "$activeSlave.hStyle", pubicHStyle: "$activeSlave.pubicHStyle", waist: $activeSlave.waist, corsetPiercing: 0, amp: $activeSlave.amp, heels: $activeSlave.heels, voice: $activeSlave.voice, voiceImplant: $activeSlave.voiceImplant, accent: $activeSlave.accent, shoulders: $activeSlave.shoulders, shouldersImplant: $activeSlave.shouldersImplant, boobs: $activeSlave.boobs, boobsImplant: $activeSlave.boobsImplant, boobsImplantType: $activeSlave.boobsImplantType, boobShape: "normal", nipples: "$activeSlave.nipples",  nipplesPiercing: $activeSlave.nipplesPiercing, areolae: $activeSlave.areolae, areolaePiercing: $activeSlave.areolaePiercing, boobsTat: "$activeSlave.boobsTat", lactation: $activeSlave.lactation, lactationAdaptation: 0, milk: 0, cum: 0, hips: $activeSlave.hips, hipsImplant: $activeSlave.hipsImplant, butt: $activeSlave.butt, buttImplant: $activeSlave.buttImplant, buttImplantType: $activeSlave.buttImplantType, buttTat: "$activeSlave.buttTat", face: $activeSlave.face, faceImplant: $activeSlave.faceImplant, faceShape: "normal", lips: $activeSlave.lips, lipsImplant: $activeSlave.lipsImplant, lipsPiercing: $activeSlave.lipsPiercing, lipsTat: "$activeSlave.lipsTat", teeth: "$activeSlave.teeth", tonguePiercing: $activeSlave.tonguePiercing, vagina: $activeSlave.vagina, vaginaLube: $activeSlave.vaginaLube, vaginaPiercing: $activeSlave.vaginaPiercing, vaginaTat: "$activeSlave.vaginaTat", preg: $activeSlave.preg, pregSource: 0, pregType: 0, labor: 0, births: $activeSlave.births, cSec: 0, bellyAccessory: "none", labia: $activeSlave.labia, clit: $activeSlave.clit, clitPiercing: $activeSlave.clitPiercing, clitSetting: "$activeSlave.clitSetting", foreskin: 0, anus: $activeSlave.anus, dick: $activeSlave.dick, analArea: 1, dickPiercing: $activeSlave.dickPiercing, dickTat: "$activeSlave.dickTat", balls: $activeSlave.balls, scrotum: 0, ovaries: $activeSlave.ovaries, anusPiercing: $activeSlave.anusPiercing, anusTat: "$activeSlave.anusTat", makeup: $activeSlave.makeup, nails: $activeSlave.nails, brand: <<if $activeSlave.brand == 0>>0<<else>>"$activeSlave.brand "<</if>>, brandLocation: <<if $activeSlave.brandLocation == 0>>0<<else>>"$activeSlave.brandLocation"<</if>>, earPiercing: $activeSlave.earPiercing, nosePiercing: $activeSlave.nosePiercing, eyebrowPiercing: $activeSlave.eyebrowPiercing, navelPiercing: $activeSlave.navelPiercing, shouldersTat: "$activeSlave.shouldersTat", armsTat: "$activeSlave.armsTat", legsTat: "$activeSlave.legsTat", backTat: "$activeSlave.backTat", stampTat: "$activeSlave.stampTat", vaginalSkill: $activeSlave.vaginalSkill, oralSkill: $activeSlave.oralSkill, analSkill: $activeSlave.analSkill, whoreSkill: $activeSlave.whoreSkill, entertainSkill: $activeSlave.entertainSkill, combatSkill: $activeSlave.combatSkill, livingRules: "$activeSlave.livingRules", speechRules: "$activeSlave.speechRules", releaseRules: "$activeSlave.releaseRules", relationshipRules: "$activeSlave.relationshipRules", standardPunishment: "situational", standardReward: "situational", useRulesAssistant: 1, diet: "$activeSlave.diet", dietCum: $activeSlave.dietCum, dietMilk: $activeSlave.dietMilk, tired: 0, hormones: 0, drugs: "$activeSlave.drugs", curatives: 0, chem: 0, aphrodisiacs: 0, addict: $activeSlave.addict, fuckdoll: 0, choosesOwnClothes: 0, clothes: "$activeSlave.clothes", collar: "$activeSlave.collar", shoes: "$activeSlave.shoes", vaginalAccessory: "none", dickAccessory: "none", buttplug: "none", intelligence: $activeSlave.intelligence,  intelligenceImplant: $activeSlave.intelligenceImplant, energy: $activeSlave.energy, attrXX: $activeSlave.attrXX, attrXY: $activeSlave.attrXY, attrKnown: $activeSlave.attrKnown, fetish: "$activeSlave.fetish", fetishStrength: $activeSlave.fetishStrength, fetishKnown: $activeSlave.fetishKnown, behavioralFlaw: "$activeSlave.behavioralFlaw", behavioralQuirk: "none", sexualFlaw: "$activeSlave.sexualFlaw", sexualQuirk: "none", oralCount: 0, vaginalCount: 0, analCount: 0, mammaryCount: 0, penetrativeCount: 0, pitKills: 0, customTat: "$activeSlave.customTat", customLabel: "", customDesc: "$activeSlave.customDesc", currentRules: $activeSlave.currentRules
+slaveName: "$activeSlave.slaveName", birthName: "$activeSlave.birthName", weekAcquired: 1, origin: <<if $activeSlave.origin == 0>>0<<else>>"$activeSlave.origin"<</if>>, career: <<if $activeSlave.career == 0>>0<<else>>"$activeSlave.career"<</if>>, ID: $activeSlave.ID, pornFame: $activeSlave.pornFame, pornFameSpending: $activeSlave.pornFameSpending, prestige: $activeSlave.prestige, prestigeDesc: "$activeSlave.prestigeDesc", recruiter: 0, relation: 0, relationTarget: 0, relationship: 0, relationshipTarget: 0, rivalry: 0, rivalryTarget: 0, subTarget: 0, choosesOwnAssignment: 0, assignment: "rest", assignmentVisible: 1, sentence: 0, training: 0, toyHole: "all her holes", indenture: -1, indentureRestrictions: 0, birthWeek: random(0,51), age: $activeSlave.age, ageImplant: $activeSlave.ageImplant, health: $activeSlave.health, minorInjury: 0, trust: $activeSlave.trust, oldTrust: $activeSlave.trust, devotion: $activeSlave.devotion, oldDevotion: $activeSlave.devotion, weight: $activeSlave.weight, muscles: $activeSlave.muscles, height: $activeSlave.height, heightImplant: $activeSlave.heightImplant, nationality: "$activeSlave.nationality", race: "$activeSlave.race", markings: "none", eyes: 1, eyeColor: "$activeSlave.eyeColor", eyewear: "none", hColor: "$activeSlave.hColor", pubicHColor: "$activeSlave.pubicHColor", skin: "$activeSlave.skin", hLength: $activeSlave.hLength, hStyle: "$activeSlave.hStyle", pubicHStyle: "$activeSlave.pubicHStyle", waist: $activeSlave.waist, corsetPiercing: 0, amp: $activeSlave.amp, heels: $activeSlave.heels, voice: $activeSlave.voice, voiceImplant: $activeSlave.voiceImplant, accent: $activeSlave.accent, shoulders: $activeSlave.shoulders, shouldersImplant: $activeSlave.shouldersImplant, boobs: $activeSlave.boobs, boobsImplant: $activeSlave.boobsImplant, boobsImplantType: $activeSlave.boobsImplantType, boobShape: "normal", nipples: "$activeSlave.nipples",  nipplesPiercing: $activeSlave.nipplesPiercing, areolae: $activeSlave.areolae, areolaePiercing: $activeSlave.areolaePiercing, boobsTat: "$activeSlave.boobsTat", lactation: $activeSlave.lactation, lactationAdaptation: 0, milk: 0, cum: 0, hips: $activeSlave.hips, hipsImplant: $activeSlave.hipsImplant, butt: $activeSlave.butt, buttImplant: $activeSlave.buttImplant, buttImplantType: $activeSlave.buttImplantType, buttTat: "$activeSlave.buttTat", face: $activeSlave.face, faceImplant: $activeSlave.faceImplant, faceShape: "normal", lips: $activeSlave.lips, lipsImplant: $activeSlave.lipsImplant, lipsPiercing: $activeSlave.lipsPiercing, lipsTat: "$activeSlave.lipsTat", teeth: "$activeSlave.teeth", tonguePiercing: $activeSlave.tonguePiercing, vagina: $activeSlave.vagina, vaginaLube: $activeSlave.vaginaLube, vaginaPiercing: $activeSlave.vaginaPiercing, vaginaTat: "$activeSlave.vaginaTat", preg: $activeSlave.preg, pregSource: 0, pregType: 0, labor: 0, births: $activeSlave.births, cSec: 0, bellyAccessory: "none", labia: $activeSlave.labia, clit: $activeSlave.clit, clitPiercing: $activeSlave.clitPiercing, clitSetting: "$activeSlave.clitSetting", foreskin: 0, anus: $activeSlave.anus, dick: $activeSlave.dick, analArea: 1, dickPiercing: $activeSlave.dickPiercing, dickTat: "$activeSlave.dickTat", balls: $activeSlave.balls, scrotum: 0, ovaries: $activeSlave.ovaries, anusPiercing: $activeSlave.anusPiercing, anusTat: "$activeSlave.anusTat", makeup: $activeSlave.makeup, nails: $activeSlave.nails, brand: <<if $activeSlave.brand == 0>>0<<else>>"$activeSlave.brand "<</if>>, brandLocation: <<if $activeSlave.brandLocation == 0>>0<<else>>"$activeSlave.brandLocation"<</if>>, earPiercing: $activeSlave.earPiercing, nosePiercing: $activeSlave.nosePiercing, eyebrowPiercing: $activeSlave.eyebrowPiercing, navelPiercing: $activeSlave.navelPiercing, shouldersTat: "$activeSlave.shouldersTat", armsTat: "$activeSlave.armsTat", legsTat: "$activeSlave.legsTat", backTat: "$activeSlave.backTat", stampTat: "$activeSlave.stampTat", vaginalSkill: $activeSlave.vaginalSkill, oralSkill: $activeSlave.oralSkill, analSkill: $activeSlave.analSkill, whoreSkill: $activeSlave.whoreSkill, entertainSkill: $activeSlave.entertainSkill, combatSkill: $activeSlave.combatSkill, livingRules: "$activeSlave.livingRules", speechRules: "$activeSlave.speechRules", releaseRules: "$activeSlave.releaseRules", relationshipRules: "$activeSlave.relationshipRules", standardPunishment: "situational", standardReward: "situational", useRulesAssistant: 1, diet: "$activeSlave.diet", dietCum: $activeSlave.dietCum, dietMilk: $activeSlave.dietMilk, tired: 0, hormones: 0, drugs: "$activeSlave.drugs", curatives: 0, chem: 0, aphrodisiacs: 0, addict: $activeSlave.addict, fuckdoll: 0, choosesOwnClothes: 0, clothes: "$activeSlave.clothes", collar: "$activeSlave.collar", shoes: "$activeSlave.shoes", vaginalAccessory: "none", dickAccessory: "none", buttplug: "none", intelligence: $activeSlave.intelligence,  intelligenceImplant: $activeSlave.intelligenceImplant, energy: $activeSlave.energy, attrXX: $activeSlave.attrXX, attrXY: $activeSlave.attrXY, attrKnown: $activeSlave.attrKnown, fetish: "$activeSlave.fetish", fetishStrength: $activeSlave.fetishStrength, fetishKnown: $activeSlave.fetishKnown, behavioralFlaw: "$activeSlave.behavioralFlaw", behavioralQuirk: "none", sexualFlaw: "$activeSlave.sexualFlaw", sexualQuirk: "none", oralCount: 0, vaginalCount: 0, analCount: 0, mammaryCount: 0, penetrativeCount: 0, pitKills: 0, customTat: "$activeSlave.customTat", customLabel: "", customDesc: "$activeSlave.customDesc", customImage: 0, currentRules: $activeSlave.currentRules
 
 <</nobr>>
\ No newline at end of file
diff --git a/src/pregmod/generateChild.tw b/src/pregmod/generateChild.tw
index b597769d47c1d88cc150458c4f990be49ef8967e..1d482ec26503214a3cd659719a4e162be14c97f2 100644
--- a/src/pregmod/generateChild.tw
+++ b/src/pregmod/generateChild.tw
@@ -1,12 +1,349 @@
-:: generateChild
+:: generateChild [nobr]
+
+<<if $mom != 0>>
+	<<set $mergeMom = 0>>
+	<<set $mergeDad = 0>>
+	<<for $m to 0; $m < $genePool.length; $m++>>
+		<<if $mom.ID == $genePool[$m].ID>>
+			<<set $mergeMom = $genePool[$m]>>
+		<</if>>
+		<<if $mom.pregSource == $genePool[$m].ID>>
+			<<set $mergeDad = $genePool[$m].ID>>
+		<</if>>
+	<</for>>
+	<<if $mom.pregSource == -1>>
+		<<set $mergeDad = $PC>>
+	<</if>>
+<</if>>
+		
+<<set $activeSlaveOneTimeMinAge to $targetAge>>
+<<set $activeSlaveOneTimeMaxAge to $targetAge>>
+<<set $one_time_age_overrides_pedo_mode to 1>>
 
 <<if $babyGender == 1>>
+	<<display "Generate XX Slave">>
 	<<if $PC.pregSource < 1>>
+		<<set $activeSlave.mother = -1>>
+		<<set $activeSlave.father = $missingParentID>>
+		<<set $missingParentID-->>
+		<<set $activeSlave.nationality = "Stateless">>
+		<<set $activeSlave.race = $PC.race>>
+		<<set $activeSlave.skin = $PC.skin>>
+		<<set $activeSlave.eyeColor = $PC.eyeColor>>
+		<<set $activeSlave.hColor = $PC.hColor>>
+		<<set $activeSlave.pubicHColor = $PC.hColor>>
+		<<set $activeSlave.underArmHColor = $PC.hColor>>
 	<<else>>
+		<<for $m to 0; $m < $genePool.length; $m++>>
+			<<if $PC.pregSource == $genePool[$m].ID>>
+				<<set $mergeDad == $genePool[$m].ID>>
+				<<break>>
+			<</if>>
+		<</for>>
+		<<set $activeSlave.mother = -1>>
+		<<set $activeSlave.father = $mergeDad.ID>>
+		<<if $PC.nationality == $mergeDad.nationality>>
+			<<set $activeSlave.nationality = $mergeDad.nationality>>
+		<<else>>
+			<<set $activeSlave.nationality = "Stateless">>
+		<</if>>
+		<<if $PC.race == $mergeDad.race>>
+			<<set $activeSlave.race = $mergeDad.race>>
+		<<elseif random(1,4) == 4>>
+			<<set $activeSlave.race = either($PC.race, $mergeDad.race)>>
+		<<else>>
+			<<set $activeSlave.race = "mixed race">>
+		<</if>>
+		<<if $PC.skin == $mergeDad.skin>>
+			<<set $activeSlave.skin = $PC.skin>>
+		<<else>>
+			<<genSkinTone $PC, $mergeDad>>
+		<</if>>
+		<<if $PC.eyeColor == $mergeDad.eyeColor>>
+			<<set $activeSlave.eyeColor = $PC.eyeColor>>
+		<<elseif $PC.eyeColor == "red" || $PC.eyeColor == "pale red" || $PC.eyeColor == "light red" || $PC.eyeColor == "pale gray">>
+			<<set $activeSlave.eyeColor = $mergeDad.eyeColor>>
+		<<elseif $mergeDad.eyeColor == "red" || $mergeDad.eyeColor == "pale red" || $mergeDad.eyeColor == "light red" || $mergeDad.eyeColor == "pale gray" || $mergeDad.eyeColor == "milky white">>
+			<<set $activeSlave.eyeColor = $PC.eyeColor>>
+		<<elseif $PC.eyeColor == "blue">>
+			<<if random(1,4) == 2>>
+				<<set $activeSlave.eyeColor = $PC.eyeColor>>
+			<<else>>
+				<<set $activeSlave.eyeColor = $mergeDad.eyeColor>>
+			<</if>>
+		<<elseif $mergeDad.eyeColor == "blue">>
+			<<if random(1,4) == 2>>
+				<<set $activeSlave.eyeColor = $mergeDad.eyeColor>>
+			<<else>>
+				<<set $activeSlave.eyeColor = $PC.eyeColor>>
+			<</if>>
+		<<else>>
+			<<set $activeSlave.eyeColor = either($PC.eyeColor, $mergeDad.eyeColor)>>
+		<</if>>
+		<<if $PC.hColor == $mergeDad.hColor>>
+			<<set $activeSlave.hColor = $PC.hColor>>
+		<<elseif $PC.hColor == "black">>
+			<<set $activeSlave.hColor = $PC.hColor>>
+		<<elseif $mergeDad.hColor == "black">>
+			<<set $activeSlave.hColor = $mergeDad.hColor>>
+		<<elseif $PC.hColor == "brown">>
+			<<set $activeSlave.hColor = $PC.hColor>>
+		<<elseif $mergeDad.hColor == "brown">>
+			<<set $activeSlave.hColor = $mergeDad.hColor>>
+		<<elseif $PC.hColor == "white">>
+			<<if random(1,100) == 69>>
+				<<set $activeSlave.hColor = $PC.hColor>>
+			<<else>>
+				<<set $activeSlave.hColor = $mergeDad.hColor>>
+			<</if>>
+		<<elseif $mergeDad.hColor == "white">>
+			<<if random(1,100) == 69>>
+				<<set $activeSlave.hColor = $PC.hColor>>
+			<<else>>
+				<<set $activeSlave.hColor = $mergeDad.hColor>>
+			<</if>>
+		<<else>>
+			<<set $activeSlave.hColor = either($PC.hColor, $mergeDad.hColor)>>
+		<</if>>
+		<<set $activeSlave.pubicHColor = $activeSlave.hColor>>
+		<<set $activeSlave.underArmHColor = $activeSlave.hColor>>
 	<</if>>
 <<elseif $babyGender == 2>>
+	<<display "Generate XY Slave">>
 	<<if $PC.pregSource < 1>>
+		<<set $activeSlave.mother = -1>>
+		<<set $activeSlave.father = $missingParentID>>
+		<<set $missingParentID-->>
+		<<set $activeSlave.nationality = "Stateless">>
+		<<set $activeSlave.race = $PC.race>>
+		<<set $activeSlave.skin = $PC.skin>>
+		<<set $activeSlave.eyeColor = $PC.eyeColor>>
+		<<set $activeSlave.hColor = $PC.hColor>>
+		<<set $activeSlave.pubicHColor = $PC.hColor>>
+		<<set $activeSlave.underArmHColor = $PC.hColor>>
 	<<else>>
+		<<for $m to 0; $m < $genePool.length; $m++>>
+			<<if $PC.pregSource == $genePool[$m].ID>>
+				<<set $mergeDad == $genePool[$m].ID>>
+				<<break>>
+			<</if>>
+		<</for>>
+		<<set $activeSlave.mother = -1>>
+		<<set $activeSlave.father = $mergeDad.ID>>
+		<<if $PC.nationality == $mergeDad.nationality>>
+			<<set $activeSlave.nationality = $mergeDad.nationality>>
+		<<else>>
+			<<set $activeSlave.nationality = "Stateless">>
+		<</if>>
+		<<if $PC.race == $mergeDad.race>>
+			<<set $activeSlave.race = $mergeDad.race>>
+		<<elseif random(1,4) == 4>>
+			<<set $activeSlave.race = either($PC.race, $mergeDad.race)>>
+		<<else>>
+			<<set $activeSlave.race = "mixed race">>
+		<</if>>
+		<<if $PC.skin == $mergeDad.skin>>
+			<<set $activeSlave.skin = $PC.skin>>
+		<<else>>
+			<<genSkinTone $PC, $mergeDad>>
+		<</if>>
+		<<if $PC.eyeColor == $mergeDad.eyeColor>>
+			<<set $activeSlave.eyeColor = $PC.eyeColor>>
+		<<elseif $PC.eyeColor == "red" || $PC.eyeColor == "pale red" || $PC.eyeColor == "light red" || $PC.eyeColor == "pale gray">>
+			<<set $activeSlave.eyeColor = $mergeDad.eyeColor>>
+		<<elseif $mergeDad.eyeColor == "red" || $mergeDad.eyeColor == "pale red" || $mergeDad.eyeColor == "light red" || $mergeDad.eyeColor == "pale gray" || $mergeDad.eyeColor == "milky white">>
+			<<set $activeSlave.eyeColor = $PC.eyeColor>>
+		<<elseif $PC.eyeColor == "blue">>
+			<<if random(1,4) == 2>>
+				<<set $activeSlave.eyeColor = $PC.eyeColor>>
+			<<else>>
+				<<set $activeSlave.eyeColor = $mergeDad.eyeColor>>
+			<</if>>
+		<<elseif $mergeDad.eyeColor == "blue">>
+			<<if random(1,4) == 2>>
+				<<set $activeSlave.eyeColor = $mergeDad.eyeColor>>
+			<<else>>
+				<<set $activeSlave.eyeColor = $PC.eyeColor>>
+			<</if>>
+		<<else>>
+			<<set $activeSlave.eyeColor = either($PC.eyeColor, $mergeDad.eyeColor)>>
+		<</if>>
+		<<if $PC.hColor == $mergeDad.hColor>>
+			<<set $activeSlave.hColor = $PC.hColor>>
+		<<elseif $PC.hColor == "black">>
+			<<set $activeSlave.hColor = $PC.hColor>>
+		<<elseif $mergeDad.hColor == "black">>
+			<<set $activeSlave.hColor = $mergeDad.hColor>>
+		<<elseif $PC.hColor == "brown">>
+			<<set $activeSlave.hColor = $PC.hColor>>
+		<<elseif $mergeDad.hColor == "brown">>
+			<<set $activeSlave.hColor = $mergeDad.hColor>>
+		<<elseif $PC.hColor == "white">>
+			<<if random(1,100) == 69>>
+				<<set $activeSlave.hColor = $PC.hColor>>
+			<<else>>
+				<<set $activeSlave.hColor = $mergeDad.hColor>>
+			<</if>>
+		<<elseif $mergeDad.hColor == "white">>
+			<<if random(1,100) == 69>>
+				<<set $activeSlave.hColor = $PC.hColor>>
+			<<else>>
+				<<set $activeSlave.hColor = $mergeDad.hColor>>
+			<</if>>
+		<<else>>
+			<<set $activeSlave.hColor = either($PC.hColor, $mergeDad.hColor)>>
+		<</if>>
+		<<set $activeSlave.pubicHColor = $activeSlave.hColor>>
+		<<set $activeSlave.underArmHColor = $activeSlave.hColor>>
 	<</if>>
 <<else>>
-<</if>>
\ No newline at end of file
+	<<if $seeDicks == 100>>
+		<<display "Generate XY Slave">>
+	<<elseif $seeDicks == 0>>
+		<<display "Generate XX Slave">>
+	<<else>>
+		<<if random(0,100) >= 40>>
+			<<display "Generate XX Slave">>
+		<<else>>
+			<<display "Generate XY Slave">>
+		<</if>>
+	<</if>>
+	<<set $activeSlave.mother = $mergeMom.ID>>
+	<<if $mergeDad != 0>>
+		<<set $activeSlave.father = $mergeDad.ID>>
+	<<elseif $mergeMom.pregSource == -1>>
+		<<set $activeSlave.father = -1>>
+	<<else>>
+		<<set $activeSlave.father = $missingParentID>>
+		<<set $missingParentID-->>
+	<</if>>
+	<<if $mergeMom.nationality == $mergeDad.nationality>>
+		<<set $activeSlave.nationality = $mergeDad.nationality>>
+	<<else>>
+		<<set $activeSlave.nationality = "Stateless">>
+	<</if>>
+	<<if $mergeMom.race == $mergeDad.race>>
+		<<set $activeSlave.race = $mergeDad.race>>
+	<<elseif random(1,4) == 4>>
+		<<set $activeSlave.race = either($mergeMom.race, $mergeDad.race)>>
+	<<else>>
+		<<set $activeSlave.race = "mixed race">>
+	<</if>>
+	<<if $mergeMom.skin == $mergeDad.skin>>
+		<<set $activeSlave.skin = $mergeMom.skin>>
+	<<else>>
+		<<genSkinTone $mergeMom, $mergeDad>>
+	<</if>>
+	<<if $mergeMom.eyeColor == $mergeDad.eyeColor>>
+		<<set $activeSlave.eyeColor = $mergeMom.eyeColor>>
+	<<elseif $mergeMom.eyeColor == "red" || $mergeMom.eyeColor == "pale red" || $mergeMom.eyeColor == "light red" || $mergeMom.eyeColor == "pale gray" || $mergeMom.eyeColor == "milky white">>
+		<<set $activeSlave.eyeColor = $mergeDad.eyeColor>>
+	<<elseif $mergeDad.eyeColor == "red" || $mergeDad.eyeColor == "pale red" || $mergeDad.eyeColor == "light red" || $mergeDad.eyeColor == "pale gray" || $mergeDad.eyeColor == "milky white">>
+		<<set $activeSlave.eyeColor = $mergeMom.eyeColor>>
+	<<elseif $mergeMom.eyeColor == "blue">>
+		<<if random(1,4) == 2>>
+			<<set $activeSlave.eyeColor = $mergeMom.eyeColor>>
+		<<else>>
+			<<set $activeSlave.eyeColor = $mergeDad.eyeColor>>
+		<</if>>
+	<<elseif $mergeDad.eyeColor == "blue">>
+		<<if random(1,4) == 2>>
+			<<set $activeSlave.eyeColor = $mergeDad.eyeColor>>
+		<<else>>
+			<<set $activeSlave.eyeColor = $mergeMom.eyeColor>>
+		<</if>>
+	<<else>>
+		<<set $activeSlave.eyeColor = either($mergeMom.eyeColor, $mergeDad.eyeColor)>>
+	<</if>>
+	<<if $mergeMom.hColor == $mergeDad.hColor>>
+		<<set $activeSlave.hColor = $mergeMom.hColor>>
+	<<elseif $mergeMom.hColor == "black">>
+		<<set $activeSlave.hColor = $mergeMom.hColor>>
+	<<elseif $mergeDad.hColor == "black">>
+		<<set $activeSlave.hColor = $mergeDad.hColor>>
+	<<elseif $mergeMom.hColor == "brown">>
+		<<set $activeSlave.hColor = $mergeMom.hColor>>
+	<<elseif $mergeDad.hColor == "brown">>
+		<<set $activeSlave.hColor = $mergeDad.hColor>>
+	<<elseif $mergeMom.hColor == "white">>
+		<<if random(1,100) == 69>>
+			<<set $activeSlave.hColor = $mergeMom.hColor>>
+		<<else>>
+			<<set $activeSlave.hColor = $mergeDad.hColor>>
+		<</if>>
+	<<elseif $mergeDad.hColor == "white">>
+		<<if random(1,100) == 69>>
+			<<set $activeSlave.hColor = $mergeDad.hColor>>
+		<<else>>
+			<<set $activeSlave.hColor = $mergeMom.hColor>>
+		<</if>>
+	<<else>>
+		<<set $activeSlave.hColor = either($mergeMom.hColor, $mergeDad.hColor)>>
+	<</if>>
+	<<set $activeSlave.pubicHColor = $activeSlave.hColor>>
+	<<set $activeSlave.underArmHColor = $activeSlave.hColor>>
+<</if>>
+
+<<if $mom.addict > 0>>
+	<<set $activeSlave.addict = Math.trunc($mom.addict/2)
+<</if>>
+
+<<set $activeSlave.actualAge = 0>>
+<<set $activeSlave.weight = -100>>
+<<set $activeSlave.muscles = -100>>
+<<set $activeSlave.boobs = 0>>
+<<set $activeSlave.butt = 0>>
+<<set $activeSlave.energy = 0>>
+<<set $activeSlave.anus = 0>>
+<<set $activeSlave.chem = 990>>
+<<if $activeSlave.vagina > -1>>
+	<<set $activeSlave.vagina = 0>>
+<</if>>
+<<if $activeSlave.dick > 0>>
+	<<set $activeSlave.foreskin = 1>>
+	<<set $activeSlave.balls = 1>>
+	<<set $activeSlave.scrotom = 1>>
+<</if>>
+
+<<set $activeSlave.corsetPiercing = 0>>
+<<set $activeSlave.boobsImplant = 0>>
+<<set $activeSlave.boobsImplantType = 0>>
+<<set $activeSlave.nipplesPiercing = 0>>
+<<set $activeSlave.areolaePiercing = 0>>
+<<set $activeSlave.lactation = 0>>
+<<set $activeSlave.hipsImplant = 0>>
+<<set $activeSlave.buttImplant = 0>>
+<<set $activeSlave.buttImplantType = 0>>
+<<set $activeSlave.lipsImplants = 0>>
+<<set $activeSlave.lipsPiercing = 0>>
+<<set $activeSlave.tonguePiercing = 0>>
+<<set $activeSlave.vaginaPiercing = 0>>
+<<set $activeSlave.preg = 0>>
+<<set $activeSlave.clitPiercing = 0>>
+<<set $activeSlave.dickPiercing = 0>>
+<<set $activeSlave.makeup = 0>>
+<<set $activeSlave.nails = 0>>
+<<set $activeSlave.earPiercing = 0>>
+<<set $activeSlave.nosePiercing = 0>>
+<<set $activeSlave.eyebrowPiercing = 0>>
+<<set $activeSlave.stampTat = 0>>
+<<set $activeSlave.bellyTat = 0>>
+<<set $activeSlave.anusPiercing = 0>>
+<<set $activeSlave.anusTat = 0>>
+<<set $activeSlave.shouldersTat = 0>>
+<<set $activeSlave.armsTat = 0>>
+<<set $activeSlave.legsTat = 0>>
+<<set $activeSlave.backTat = 0>>
+<<set $activeSlave.combatSkill = 0>>
+<<set $activeSlave.whoreSkill = 0>>
+<<set $activeSlave.entertainSkill = 0>>
+<<set $activeSlave.oralSkill = 0>>
+<<set $activeSlave.analSkill = 0>>
+<<set $activeSlave.vaginalSkill = 0>>
+<<set $activeSlave.accent = 3>>
+<<set $activeSlave.canRecruit = 0>>
+
+<<set $targetAge = 0>>
+<<set $mergeMom = 0>>
+<<set $mergeDad = 0>>
+<<set $mom = 0>>
diff --git a/src/pregmod/pregmodWidgets.tw b/src/pregmod/pregmodWidgets.tw
index f52e0f459c395e65fc1c41a3d9c62a2d9042ed06..5fcde86e88b514b6509d949329f52964728c78a7 100644
--- a/src/pregmod/pregmodWidgets.tw
+++ b/src/pregmod/pregmodWidgets.tw
@@ -778,4 +778,103 @@ $activeSlave.slaveName is up for review:
 	at her side.
 <</if>>
 	
-<</widget>>
\ No newline at end of file
+<</widget>>
+
+<<widget "GenSkinTone">>
+
+/*
+black 5
+brown 4
+dark 3
+olive 2
+light brown 1
+null 0
+light -1
+white -2
+fair -3
+pale -4
+extremely pale -5
+*/
+
+<<set _skin = 0>>
+<<set _skin0 = 0>>
+<<set _skin1 = 0>>
+
+<<switch $args[0].skin>>
+<<case "black">>
+	<<set _skin0 = 10>>
+<<case "brown">>
+	<<set _skin0 = 9>>
+<<case "dark">>
+	<<set _skin0 = 8>>
+<<case "olive">>
+	<<set _skin0 = 7>>
+<<case "light brown">>
+	<<set _skin0 = 6>>
+<<case "light">>
+	<<set _skin0 = 4>>
+<<case "white">>
+	<<set _skin0 = 3>>
+<<case "fair">>
+	<<set _skin0 = 2>>
+<<case "pale">>
+	<<set _skin0 = 1>>
+<<case "extremely pale">>
+	<<set _skin0 = 0>>
+<<default>>
+	<<set _skin0 = 5>>
+<</switch>>
+
+<<switch $args[1].skin>>
+<<case "black">>
+	<<set _skin1 = 10>>
+<<case "brown">>
+	<<set _skin1 = 9>>
+<<case "dark">>
+	<<set _skin1 = 8>>
+<<case "olive">>
+	<<set _skin1 = 7>>
+<<case "light brown">>
+	<<set _skin1 = 6>>
+<<case "light">>
+	<<set _skin1 = 4>>
+<<case "white">>
+	<<set _skin1 = 3>>
+<<case "fair">>
+	<<set _skin1 = 2>>
+<<case "pale">>
+	<<set _skin1 = 1>>
+<<case "extremely pale">>
+	<<set _skin1 = 0>>
+<<default>>
+	<<set _skin1 = 5>>
+<</switch>>
+
+<<set _skin = Math.round((_skin1+_skin0)/2)>>
+
+<<switch _skin>>
+<<case 10>>
+	<<set $activeSlave.skin = "black">>
+<<case 9>>
+	<<set $activeSlave.skin = "brown">>
+<<case 8>>
+	<<set $activeSlave.skin = "dark">>
+<<case 7>>
+	<<set $activeSlave.skin = "olive">>
+<<case 6>>
+	<<set $activeSlave.skin = "light brown">>
+<<case 4>>
+	<<set $activeSlave.skin = "light">>
+<<case 3>>
+	<<set $activeSlave.skin = "white">>
+<<case 2>>
+	<<set $activeSlave.skin = "fair">>
+<<case 1>>
+	<<set $activeSlave.skin = "pale">>
+<<case 0>>
+	<<set _skin1 = "extremely pale">>
+<<default>>
+	<<set $activeSlave.skin = either($args[0].skin, $args[1].skin)>>
+<</switch>>
+
+<</widget>>
diff --git a/src/uncategorized/RESS.tw b/src/uncategorized/RESS.tw
index af352d085434f3b36afa8b7faccad934e161468c..4367e364639b8130013f562fad57e97ec0df3d39 100644
--- a/src/uncategorized/RESS.tw
+++ b/src/uncategorized/RESS.tw
@@ -6736,7 +6736,7 @@ She's obviously @@color:mediumaquamarine;becoming more comfortable@@ playing the
 <<click "Enjoy some oral with your refreshments">>
 	<<replace "#name">>$activeSlave.slaveName<</replace>>
 	<<replace "#result">>
-	There were many things about being an arcology owner you didn't properly understand before you became one. One of the smallest and yet most enjoyable is the unlimited availability of <<if $PC.refreshmentType == 0>>a good$PC.refreshmentType<<elseif $PC.refreshmentType == 1>>a glass of $PC.refreshment<<elseif $PC.refreshmentType == 2>>a plate of $PC.refreshment<<elseif $PC.refreshmentType == 3>>$PC.refreshment<<else>>a syringe of $PC.refreshment<</if>> and <<if $PC.dick == 1>>a blowjob<<if $PC.vagina == 1>> and <</if>><</if>><<if $PC.vagina == 1>>some cunnilingus<</if>>. Turning to $activeSlave.slaveName, you <<if $PC.refreshmentType == 0>>select a $PC.refreshment<<elseif $PC.refreshmentType == 1>>pour yourself some $PC.refreshment<<elseif $PC.refreshmentType == 2>>serve yourself a plate of $PC.refreshment<<elseif $PC.refreshmentType == 3>>prepare a line of $PC.refreshment<<else>>select a syringe of $PC.refreshment<</if>>, relieve the slave of the tray, and <<if !canSee($activeSlave)>>audibly <</if>>widen your legs slightly in your chair. She <<if $activeSlave.preg > 20>>gently lowers her pregnant body to its<<else>>immediately drops to her<</if>> knees and gets to work, <<if $activeSlave.oralSkill >= 100>>using all of her mastery at giving oral pleasure<<elseif $activeSlave.oralSkill > 60>>using all of her skills at in oral pleasure<<else>>doing her best despite her mediocre oral skills<</if>>.<<if $activeSlave.teeth > 2>> You can feel the extreme care she has to take to keep her sharklike teeth clear of you.<<elseif $activeSlave.lips > 40>> Her huge lips are soft and pillowy against you.<<elseif ($activeSlave.teeth is "straightening braces") || ($activeSlave.teeth is "cosmetic braces")>>	You can feel the slight hesitations as she takes care to keep her braces off you.<</if>> You take your time, <<if $PC.refreshmentType == 0>>smoking meditatively<<elseif $PC.refreshmentType == 1>>taking meditative sips<<elseif $PC.refreshmentType == 2>>taking meditative bites<<elseif $PC.refreshmentType == 3>>enjoying your $PC.refreshment high<<else>>injecting a fix into your arm<</if>> and running a thoughtful hand <<if $activeSlave.hLength > 1>>through $activeSlave.slaveName's $activeSlave.hColor hair<<else>>across $activeSlave.slaveName's scalp<</if>> while you look at the view out your office windows. This isn't the first time you've done this, nor will it be the last, and $activeSlave.slaveName is @@color:hotpink;used to being used as a serving girl.@@
+	There were many things about being an arcology owner you didn't properly understand before you became one. One of the smallest and yet most enjoyable is the unlimited availability of <<if $PC.refreshmentType == 0>>a good $PC.refreshment<<elseif $PC.refreshmentType == 1>>a glass of $PC.refreshment<<elseif $PC.refreshmentType == 2>>a plate of $PC.refreshment<<elseif $PC.refreshmentType == 3>>$PC.refreshment<<else>>a syringe of $PC.refreshment<</if>> and <<if $PC.dick == 1>>a blowjob<<if $PC.vagina == 1>> and <</if>><</if>><<if $PC.vagina == 1>>some cunnilingus<</if>>. Turning to $activeSlave.slaveName, you <<if $PC.refreshmentType == 0>>select a $PC.refreshmentType<<elseif $PC.refreshmentType == 1>>pour yourself some $PC.refreshment<<elseif $PC.refreshmentType == 2>>serve yourself a plate of $PC.refreshment<<elseif $PC.refreshmentType == 3>>prepare a line of $PC.refreshment<<else>>select a syringe of $PC.refreshment<</if>>, relieve the slave of the tray, and <<if !canSee($activeSlave)>>audibly <</if>>widen your legs slightly in your chair. She <<if $activeSlave.preg > 20>>gently lowers her pregnant body to its<<else>>immediately drops to her<</if>> knees and gets to work, <<if $activeSlave.oralSkill >= 100>>using all of her mastery at giving oral pleasure<<elseif $activeSlave.oralSkill > 60>>using all of her skills at in oral pleasure<<else>>doing her best despite her mediocre oral skills<</if>>.<<if $activeSlave.teeth > 2>> You can feel the extreme care she has to take to keep her sharklike teeth clear of you.<<elseif $activeSlave.lips > 40>> Her huge lips are soft and pillowy against you.<<elseif ($activeSlave.teeth is "straightening braces") || ($activeSlave.teeth is "cosmetic braces")>>	You can feel the slight hesitations as she takes care to keep her braces off you.<</if>> You take your time, <<if $PC.refreshmentType == 0>>smoking meditatively<<elseif $PC.refreshmentType == 1>>taking meditative sips<<elseif $PC.refreshmentType == 2>>taking meditative bites<<elseif $PC.refreshmentType == 3>>enjoying your $PC.refreshment high<<else>>injecting a fix into your arm<</if>> and running a thoughtful hand <<if $activeSlave.hLength > 1>>through $activeSlave.slaveName's $activeSlave.hColor hair<<else>>across $activeSlave.slaveName's scalp<</if>> while you look at the view out your office windows. This isn't the first time you've done this, nor will it be the last, and $activeSlave.slaveName is @@color:hotpink;used to being used as a serving girl.@@
 	<<set $activeSlave.devotion += 4>>
 	<<set $activeSlave.oralCount += 1>>
 	<<set $oralTotal += 1>>
diff --git a/src/uncategorized/addCustomDescriptors.tw b/src/uncategorized/addCustomDescriptors.tw
index ff85c8d64b83b2c76d46d0dc02cf58dbda2dc2fc..f93f8c53ff89e19955fef6cc3ff7c9a06d059629 100644
--- a/src/uncategorized/addCustomDescriptors.tw
+++ b/src/uncategorized/addCustomDescriptors.tw
@@ -1,18 +1,10 @@
-:: Add custom descriptors
- 
-<<nobr>>
+:: Add custom descriptors [nobr]
 
-<<set $nextButton to "Continue">>
-<<set $nextLink to "AS Dump">>
-<<set $returnTo to "Main">>
+<<set $nextButton to "Continue", $nextLink to "AS Dump", $returnTo to "Main">>
 
 <<set $oldName to $activeSlave.slaveName>>
-
-<</nobr>>\
-\
 You may enter custom descriptors for your slave's hair color, hair style, tattoos, or anything else here. After typing, press enter to commit your change. These custom descriptors will appear in descriptions of your slave, but will have no gameplay effect. Changing them is free.
-
-<<nobr>>
+<br><br>
 
 <<if (($activeSlave.devotion >= -50) || ($activeSlave.trust < -20)) && ($activeSlave.birthName != $activeSlave.slaveName)>>
 	Rename her (birth name was $activeSlave.birthName): <<textbox "$activeSlave.slaveName" $activeSlave.slaveName "Rename">>
@@ -59,20 +51,34 @@ You may enter custom descriptors for your slave's hair color, hair style, tattoo
 	//You must break her will further before you can successfully force a new name on her.//
 <</if>>
 
-<</nobr>>
-
+<br><br>
 Her hair is $activeSlave.hStyle.
 Custom hair description: <<textbox "$activeSlave.hStyle" $activeSlave.hStyle "Add custom descriptors">>
-//For best results, use a short, uncapitalized and unpunctuated description; for example: 'back in a ponytail'//
+<br>&nbsp;&nbsp;&nbsp;&nbsp;//For best results, use a short, uncapitalized and unpunctuated description; for example: 'back in a ponytail'//
 
+<br><br>
 Her hair is $activeSlave.hColor in color.
 Custom hair color: <<textbox "$activeSlave.hColor" $activeSlave.hColor "Add custom descriptors">>
-//For best results, use a short, uncapitalized and unpunctuated description; for example: 'black with purple highlights'//
+<br>&nbsp;&nbsp;&nbsp;&nbsp;//For best results, use a short, uncapitalized and unpunctuated description; for example: 'black with purple highlights'//
 
-Change her custom tattoo: <<textbox "$activeSlave.customTat" $activeSlave.customTat "Add custom descriptors">> //For best results, use complete, capitalized and punctuated sentences; for example: 'She has blue stars tattooed along her cheekbones, and a blue arrow down each arm.'//
+<br><br>
+Change her custom tattoo: <<textbox "$activeSlave.customTat" $activeSlave.customTat "Add custom descriptors">> <br>&nbsp;&nbsp;&nbsp;&nbsp;//For best results, use complete sentences; for example: 'She has blue stars tattooed along her cheekbones.'//
 
+<br><br>
 Change her custom description: <<textbox "$activeSlave.customDesc" $activeSlave.customDesc "Add custom descriptors">>
-//For best results, use complete, capitalized and punctuated sentences; for example: 'She has a beauty mark above her left nipple.'//
+<br>&nbsp;&nbsp;&nbsp;&nbsp;//For best results, use complete, capitalized and punctuated sentences; for example: 'She has a beauty mark above her left nipple.'//
 
+<br><br>
 Change her custom label: <<textbox "$activeSlave.customLabel" $activeSlave.customLabel "Add custom descriptors">>
-//For best results, use a short phrase; for example: 'Breeder.'//
+<br>&nbsp;&nbsp;&nbsp;&nbsp;//For best results, use a short phrase; for example: 'Breeder.'//
+
+<br><br>
+<<if ndef $activeSlave.customImage>><<set $activeSlave.customImage = 0>><</if>>
+Assign her a custom image:
+<<if $activeSlave.customImage != 0>>
+	<<textbox "$activeSlave.customImage" $activeSlave.customImage "Add custom descriptors">>
+<<else>>
+	<<textbox "$activeSlave.customImage" "" "Add custom descriptors">>
+<</if>>
+<<click "Reset">><<set $activeSlave.customImage = 0>><<goto "Add custom descriptors">><</click>>
+<br>&nbsp;&nbsp;&nbsp;&nbsp;//File must be in .png format. Place file in the \resources folder. Enter the filename without the .png extension. For example, for a file with the path \bin\resources\headgirl.png, enter headgirl.//
\ No newline at end of file
diff --git a/src/uncategorized/bodyModification.tw b/src/uncategorized/bodyModification.tw
index c5c7f059bb31b3ce05b173f5248dbccedea2c2be..655ac9b7030a59785c9cb6f1881ff581faa06368 100644
--- a/src/uncategorized/bodyModification.tw
+++ b/src/uncategorized/bodyModification.tw
@@ -94,7 +94,7 @@ $activeSlave.slaveName is lying strapped down on the table in your body modifica
 	$possessiveCap back is unpierced.
 <</if>>
 <<if $activeSlave.corsetPiercing == 0>>
-	[[Give $possessive corset piercings|Body Modification][$activeSlave.corsetPiercing to 1,$degradation += 2,$cash -= $modCost]]
+	[["Give " + $possessive + " corset piercings"|Body Modification][$activeSlave.corsetPiercing to 1,$degradation += 2,$cash -= $modCost]]
 <<else>>
 	//[[Remove corset piercings|Body Modification][$activeSlave.corsetPiercing to 0,$cash -= $modCost]]//
 <</if>>
@@ -207,7 +207,7 @@ $activeSlave.slaveName is lying strapped down on the table in your body modifica
 	$pronounCap has a row of big rings down $possessive labia.
 <</if>>
 <<if $activeSlave.vaginaPiercing == 0>>
-	[[Pierce $possessive|Body Modification][$activeSlave.vaginaPiercing to 1,$cash -= $modCost]]
+	[["Pierce " + $possessive|Body Modification][$activeSlave.vaginaPiercing to 1,$cash -= $modCost]]
 <<elseif $activeSlave.vaginaPiercing == 1>>
 	[[Huge piercings|Body Modification][$activeSlave.vaginaPiercing to 2,$cash -= $modCost,$degradation += 1]]
 <</if>>
diff --git a/src/uncategorized/corporationDevelopments.tw b/src/uncategorized/corporationDevelopments.tw
index 7dd4d4f0fcbae1c9ccd500a139f2c5cdda16179d..a839a0555d41bbd0db45c31c5927172119dbcbaf 100644
--- a/src/uncategorized/corporationDevelopments.tw
+++ b/src/uncategorized/corporationDevelopments.tw
@@ -517,7 +517,7 @@ Slave training asset prices are
 		<</replace>>
 	<<else>>
 		<<replace "#update">>
-			You cannot sell anymore assets.
+			You cannot sell any more assets.
 		<</replace>>
 	<</if>>
 <</click>>
diff --git a/src/uncategorized/dispensary.tw b/src/uncategorized/dispensary.tw
index 209daf8e21f2795e09e9baf94ab7d01eb87aca8b..4bfb6cdb88283f0aef419d0bbdb80a7de0251538 100644
--- a/src/uncategorized/dispensary.tw
+++ b/src/uncategorized/dispensary.tw
@@ -224,7 +224,7 @@ The hormone replacement therapies
 <br><br>
 
 <<if ($healthyDrugsUpgrade == 0)>>
-	<<if (($organFarmUpgrade == 1) && ($injectionUpgrade != 0) && ($curativeUpgrade == 1) && ($aphrodisiacUpgrade == 1))>>
+	<<if (($organFarmUpgrade >= 1) && ($injectionUpgrade != 0) && ($curativeUpgrade == 1) && ($aphrodisiacUpgrade == 1))>>
 	<<if ($rep >= 15000*$upgradeMultiplierMedicine)>>
 		[[Fund research into drug formulations without negative physical side effects|Dispensary][$cash -= 500000*$upgradeMultiplierMedicine,$healthyDrugsUpgrade to 1]] //Costs ¤<<print 500000*$upgradeMultiplierMedicine>>. Will prevent the negative side effects of excessive drug usage on your slaves.//
 	<<else>>
diff --git a/src/uncategorized/freeRangeDairyAssignmentScene.tw b/src/uncategorized/freeRangeDairyAssignmentScene.tw
index 9870e05bfa6a56880b3519844ec80acc96ac2ab3..7ebde6633787f62d73f1fa0d08caf2d9e9072596 100644
--- a/src/uncategorized/freeRangeDairyAssignmentScene.tw
+++ b/src/uncategorized/freeRangeDairyAssignmentScene.tw
@@ -76,18 +76,17 @@ Eventually, $activeSlave.slaveName arrives at her designated milking stall.
 			<<if $activeSlave.father == $slaves[$i].ID && isAvailable($slaves[$i])>>
 				<<set $assayedSlave to $slaves[$i]>>
 				<<set $assayType to "father">>
+				<<set $assayedSlaveAvailable = 1>>
 				<<break>>
 			<</if>>
 		<</for>>
 	<</if>>
 	<<if $activeSlave.sisters > 0>>
-		<<set $relation = $slaves>>
-		<<set $relation.shuffle()>>
-		<<for $i to 0; $i < $relation.length; $i++>>
-			<<if areSisters($activeSlave, $relation[$i]) == 3 && isAvailable($relation[$i])>>
+		<<for $i to 0; $i < $slaves.length; $i++>>
+			<<if areSisters($activeSlave, $relation) == 3 && isAvailable($relation)>>
 				<<set $assayedSlave to $relation[$i]>>
 				<<set $assayType to "half-sister">>
-				<<set $relation = 0>>
+				<<set $assayedSlaveAvailable = 1>>
 				<<break>>
 			<</if>>
 		<</for>>
@@ -97,42 +96,37 @@ Eventually, $activeSlave.slaveName arrives at her designated milking stall.
 			<<if $activeSlave.mother == $slaves[$i].ID && isAvailable($slaves[$i])>>
 				<<set $assayedSlave to $slaves[$i]>>
 				<<set $assayType to "mother">>
+				<<set $assayedSlaveAvailable = 1>>
 				<<break>>
 			<</if>>
 		<</for>>
 	<</if>>
 	<<if $activeSlave.sisters > 0>>
-		<<set $relation = $slaves>>
-		<<set $relation.shuffle()>>
-		<<for $i to 0; $i < $relation.length; $i++>>
-			<<if areSisters($activeSlave, $relation[$i]) == 2 && isAvailable($relation[$i])>>
-				<<set $assayedSlave to $relation[$i]>>
+		<<for $i to 0; $i < $slaves.length; $i++>>
+			<<if areSisters($activeSlave, $slaves[$i]) == 2 && isAvailable($slaves[$i])>>
+				<<set $assayedSlave to $slaves[$i]>>
 				<<set $assayType to "sister">>
-				<<set $relation = 0>>
+				<<set $assayedSlaveAvailable = 1>>
 				<<break>>
 			<</if>>
 		<</for>>
 	<</if>>
 	<<if $activeSlave.daughters > 0>>
-		<<set $relation = $slaves>>
-		<<set $relation.shuffle()>>
-		<<for $i to 0; $i < $relation.length; $i++>>
-			<<if ($relation[$i].mother == $activeSlave.ID || $relation[$i].father == $activeSlave.ID) && isAvailable($relation[$i])>>
-				<<set $assayedSlave to $relation[$i]>>
+		<<for $i to 0; $i < $slaves.length; $i++>>
+			<<if ($slaves[$i].mother == $activeSlave.ID || $slaves[$i].father == $activeSlave.ID) && isAvailable($slaves[$i])>>
+				<<set $assayedSlave to $slaves[$i]>>
 				<<set $assayType to "daughter">>
-				<<set $relation = 0>>
+				<<set $assayedSlaveAvailable = 1>>
 				<<break>>
 			<</if>>
 		<</for>>
 	<</if>>
 	<<if $activeSlave.sisters > 0>>
-		<<set $relation = $slaves>>
-		<<set $relation.shuffle()>>
-		<<for $i to 0; $i < $relation.length; $i++>>
-			<<if areSisters($activeSlave, $relation[$i]) == 1 && isAvailable($relation[$i])>>
-				<<set $assayedSlave to $relation[$i]>>
+		<<for $i to 0; $i < $slaves.length; $i++>>
+			<<if areSisters($activeSlave, $slaves[$i]) == 1 && isAvailable($slaves[$i])>>
+				<<set $assayedSlave to $slaves[$i]>>
 				<<set $assayType to "twin">>
-				<<set $relation = 0>>
+				<<set $assayedSlaveAvailable = 1>>
 				<<break>>
 			<</if>>
 		<</for>>
diff --git a/src/uncategorized/generateXXSlave.tw b/src/uncategorized/generateXXSlave.tw
index f699f6248dbb66af454e475ec45dd311361da839..de649aa90984ebe54b366fac095ac7ca827909a9 100644
--- a/src/uncategorized/generateXXSlave.tw
+++ b/src/uncategorized/generateXXSlave.tw
@@ -1,6 +1,6 @@
 :: Generate XX Slave [nobr]
 
-<<set $activeSlave to {slaveName: "blank", birthName: "blank", weekAcquired: 0, origin: 0, career: 0, ID: 0, prestige: 0, pornFame: 0, pornFameSpending: 0, prestigeDesc: 0, recruiter: 0, relation: 0, relationTarget: 0, relationship: 0, relationshipTarget: 0, rivalry: 0, rivalryTarget: 0, subTarget: 0, choosesOwnAssignment: 0, assignment: "rest", assignmentVisible: 1, sentence: 0, training: 0, toyHole: "all her holes", indenture: -1, indentureRestrictions: 0, birthWeek: random(0,51), age: 18, ageImplant: 0, health: 0, minorInjury: 0, trust: 0, oldTrust: 0, devotion: 0, oldDevotion: 0, weight: 0, muscles: 0, height: 170, heightImplant: 0, nationality: "slave", race:"white", markings: "none", eyes: 1, eyeColor: "brown", eyewear: "none", hColor: "brown", pubicHColor: "brown", skin: "light", hLength: 60, hStyle: "short", pubicHStyle: "neat", waist: 0, corsetPiercing: 0, amp: 0, heels:0, voice: 2, voiceImplant: 0, accent: 0, shoulders: 0, shouldersImplant: 0, boobs: 0, boobsImplant: 0, boobsImplantType: 0, boobShape: "normal", nipples: "cute",  nipplesPiercing: 0, areolae: 0, areolaePiercing: 0, boobsTat: 0, lactation: 0, lactationAdaptation: 0, milk: 0, cum: 0, hips: 0, hipsImplant: 0, butt: 0, buttImplant: 0, buttImplantType: 0, buttTat: 0, face: 0, faceImplant: 0, faceShape: "normal", lips: 15, lipsImplant: 0, lipsPiercing: 0, lipsTat: 0, teeth: "normal", tonguePiercing: 0, vagina: 0, vaginaLube: 1, vaginaPiercing: 0, vaginaTat: 0, preg: -1, pregSource: 0, pregType: 0, labor: 0, births: 0, cSec: 0, bellyAccessory: "none", labia: 0, clit: 0, clitPiercing: 0, clitSetting: "vanilla", foreskin: 0, anus: 0, dick: 0, analArea: 1, dickPiercing: 0, dickTat: 0, balls: 0, scrotum: 0, ovaries: 1, anusPiercing: 0, anusTat: 0, makeup: 0, nails: 0, brand: 0, brandLocation: 0, earPiercing: 0, nosePiercing: 0, eyebrowPiercing: 0, navelPiercing: 0, shouldersTat: 0, armsTat: 0, legsTat: 0, backTat: 0, stampTat: 0, vaginalSkill: 0, oralSkill: 0, analSkill: 0, whoreSkill: 0, entertainSkill: 0, combatSkill: 0, livingRules: "spare", speechRules: "restrictive", releaseRules:"restrictive", relationshipRules: "restrictive", standardPunishment: "situational", standardReward: "situational", useRulesAssistant: 1, diet: "healthy", dietCum: 0, dietMilk: 0, tired: 0, hormones: 0, drugs: "no drugs", curatives: 0, chem: 0, aphrodisiacs: 0, addict: 0, fuckdoll: 0, choosesOwnClothes: 0, clothes: "no clothing", collar: "none", shoes: "none", vaginalAccessory: "none", dickAccessory: "none", buttplug: "none", intelligence: 0,  intelligenceImplant: 0, energy: 50, attrXX: 0, attrXY: 0, attrKnown: 0, fetish: "none", fetishStrength: 70, fetishKnown: 0, behavioralFlaw: "none", behavioralQuirk: "none", sexualFlaw: "none", sexualQuirk: "none", oralCount: 0, vaginalCount: 0, analCount: 0, mammaryCount: 0, penetrativeCount: 0, pitKills: 0, customTat: "", customLabel: "", customDesc: "", currentRules: [], bellyTat: 0, induce: 0, mpreg: 0, inflation: 0, inflationType: "none", inflationMethod: 0, milkSource: 0, cumSource: 0, burst: 0, bellyImplant: 0, bellySag: 0, birthsTotal: 0, pubertyAgeXX: 13, pubertyAgeXY: 13, underArmHStyle: "waxed", physicalAge: 18, actualAge: 18, visualAge: 18, father: 0, mother: 0, sisters: 0, daughters: 0, canRecruit: 1, HGExclude: 0, ballType: "human", eggType: "human"}>>
+<<set $activeSlave to {slaveName: "blank", birthName: "blank", weekAcquired: 0, origin: 0, career: 0, ID: 0, prestige: 0, pornFame: 0, pornFameSpending: 0, prestigeDesc: 0, recruiter: 0, relation: 0, relationTarget: 0, relationship: 0, relationshipTarget: 0, rivalry: 0, rivalryTarget: 0, subTarget: 0, choosesOwnAssignment: 0, assignment: "rest", assignmentVisible: 1, sentence: 0, training: 0, toyHole: "all her holes", indenture: -1, indentureRestrictions: 0, birthWeek: random(0,51), age: 18, ageImplant: 0, health: 0, minorInjury: 0, trust: 0, oldTrust: 0, devotion: 0, oldDevotion: 0, weight: 0, muscles: 0, height: 170, heightImplant: 0, nationality: "slave", race:"white", markings: "none", eyes: 1, eyeColor: "brown", eyewear: "none", hColor: "brown", pubicHColor: "brown", skin: "light", hLength: 60, hStyle: "short", pubicHStyle: "neat", waist: 0, corsetPiercing: 0, amp: 0, heels:0, voice: 2, voiceImplant: 0, accent: 0, shoulders: 0, shouldersImplant: 0, boobs: 0, boobsImplant: 0, boobsImplantType: 0, boobShape: "normal", nipples: "cute",  nipplesPiercing: 0, areolae: 0, areolaePiercing: 0, boobsTat: 0, lactation: 0, lactationAdaptation: 0, milk: 0, cum: 0, hips: 0, hipsImplant: 0, butt: 0, buttImplant: 0, buttImplantType: 0, buttTat: 0, face: 0, faceImplant: 0, faceShape: "normal", lips: 15, lipsImplant: 0, lipsPiercing: 0, lipsTat: 0, teeth: "normal", tonguePiercing: 0, vagina: 0, vaginaLube: 1, vaginaPiercing: 0, vaginaTat: 0, preg: -1, pregSource: 0, pregType: 0, labor: 0, births: 0, cSec: 0, bellyAccessory: "none", labia: 0, clit: 0, clitPiercing: 0, clitSetting: "vanilla", foreskin: 0, anus: 0, dick: 0, analArea: 1, dickPiercing: 0, dickTat: 0, balls: 0, scrotum: 0, ovaries: 1, anusPiercing: 0, anusTat: 0, makeup: 0, nails: 0, brand: 0, brandLocation: 0, earPiercing: 0, nosePiercing: 0, eyebrowPiercing: 0, navelPiercing: 0, shouldersTat: 0, armsTat: 0, legsTat: 0, backTat: 0, stampTat: 0, vaginalSkill: 0, oralSkill: 0, analSkill: 0, whoreSkill: 0, entertainSkill: 0, combatSkill: 0, livingRules: "spare", speechRules: "restrictive", releaseRules:"restrictive", relationshipRules: "restrictive", standardPunishment: "situational", standardReward: "situational", useRulesAssistant: 1, diet: "healthy", dietCum: 0, dietMilk: 0, tired: 0, hormones: 0, drugs: "no drugs", curatives: 0, chem: 0, aphrodisiacs: 0, addict: 0, fuckdoll: 0, choosesOwnClothes: 0, clothes: "no clothing", collar: "none", shoes: "none", vaginalAccessory: "none", dickAccessory: "none", buttplug: "none", intelligence: 0,  intelligenceImplant: 0, energy: 50, attrXX: 0, attrXY: 0, attrKnown: 0, fetish: "none", fetishStrength: 70, fetishKnown: 0, behavioralFlaw: "none", behavioralQuirk: "none", sexualFlaw: "none", sexualQuirk: "none", oralCount: 0, vaginalCount: 0, analCount: 0, mammaryCount: 0, penetrativeCount: 0, pitKills: 0, customTat: "", customLabel: "", customDesc: "", customImage: 0, currentRules: [], bellyTat: 0, induce: 0, mpreg: 0, inflation: 0, inflationType: "none", inflationMethod: 0, milkSource: 0, cumSource: 0, burst: 0, bellyImplant: 0, bellySag: 0, birthsTotal: 0, pubertyAgeXX: 13, pubertyAgeXY: 13, underArmHStyle: "waxed", physicalAge: 18, actualAge: 18, visualAge: 18, father: 0, mother: 0, sisters: 0, daughters: 0, canRecruit: 1, HGExclude: 0, ballType: "human", eggType: "human"}>>
 
 <<set $activeSlave.publicCount to 0>>
 <<if $activeSlaveOneTimeMaxAge > 998>>
diff --git a/src/uncategorized/generateXYSlave.tw b/src/uncategorized/generateXYSlave.tw
index c662ebf1ce86a2c7e20556534f2cef5d6a26f18a..8f1cd56ad1863aac7d1f6bc74c9a1bad56c558ef 100644
--- a/src/uncategorized/generateXYSlave.tw
+++ b/src/uncategorized/generateXYSlave.tw
@@ -1,6 +1,6 @@
 :: Generate XY Slave [nobr]
 
-<<set $activeSlave to {slaveName: "blank", birthName: "blank", weekAcquired: 0, origin: 0, career: 0, ID: 0, prestige: 0, pornFame: 0, pornFameSpending: 0, prestigeDesc: 0, recruiter: 0, relation: 0, relationTarget: 0, relationship: 0, relationshipTarget: 0, rivalry: 0, rivalryTarget: 0, subTarget: 0, choosesOwnAssignment: 0, assignment: "rest", assignmentVisible: 1, sentence: 0, training: 0, toyHole: "all her holes", indenture: -1, indentureRestrictions: 0, birthWeek: random(0,51), age: 18, ageImplant: 0, health: 0, minorInjury: 0, trust: 0, oldTrust: 0, devotion: 0, oldDevotion: 0, weight: 0, muscles: 0, height: 170, heightImplant: 0, nationality: "slave", race:"white", markings: "none", eyes: 1, eyeColor: "brown", eyewear: "none", hColor: "brown", pubicHColor: "brown", skin: "light", hLength: 10, hStyle: "short", pubicHStyle: "neat", waist: 0, corsetPiercing: 0, amp: 0, heels:0, voice: 2, voiceImplant: 0, accent: 0, shoulders: 0, shouldersImplant: 0, boobs: 0, boobsImplant: 0, boobsImplantType: 0, boobShape: "normal", nipples: "cute",  nipplesPiercing: 0, areolae: 0, areolaePiercing: 0, boobsTat: 0, lactation: 0, lactationAdaptation: 0, milk: 0, cum: 0, hips: 0, hipsImplant: 0, butt: 0, buttImplant: 0, buttImplantType: 0, buttTat: 0, face: 0, faceImplant: 0, faceShape: "normal", lips: 15, lipsImplant: 0, lipsPiercing: 0, lipsTat: 0, teeth: "normal", tonguePiercing: 0, vagina: 0, vaginaLube: 0, vaginaPiercing: 0, vaginaTat: 0, preg: -1, pregSource: 0, pregType: 0, labor: 0, births: 0, cSec: 0, bellyAccessory: "none", labia: 0, clit: 0, clitPiercing: 0, clitSetting: "vanilla", foreskin: 0, anus: 0, dick: 0, analArea: 1, dickPiercing: 0, dickTat: 0, balls: 0, scrotum: 0, ovaries: 0, anusPiercing: 0, anusTat: 0, makeup: 0, nails: 0, brand: 0, brandLocation: 0, earPiercing: 0, nosePiercing: 0, eyebrowPiercing: 0, navelPiercing: 0, shouldersTat: 0, armsTat: 0, legsTat: 0, backTat: 0, stampTat: 0, vaginalSkill: 0, oralSkill: 0, analSkill: 0, whoreSkill: 0, entertainSkill: 0, combatSkill: 0, livingRules: "spare", speechRules: "restrictive", releaseRules:"restrictive", relationshipRules: "restrictive", standardPunishment: "situational", standardReward: "situational", useRulesAssistant: 1, diet: "healthy", dietCum: 0, dietMilk: 0, tired: 0, hormones: 0, drugs: "no drugs", curatives: 0, chem: 0, aphrodisiacs: 0, addict: 0, fuckdoll: 0, choosesOwnClothes: 0, clothes: "no clothing", collar: "none", shoes: "none", vaginalAccessory: "none", dickAccessory: "none", buttplug: "none", intelligence: 0,  intelligenceImplant: 0, energy: 50, attrXX: 0, attrXY: 0, attrKnown: 0, fetish: "none", fetishStrength: 70, fetishKnown: 0, behavioralFlaw: "none", behavioralQuirk: "none", sexualFlaw: "none", sexualQuirk: "none", oralCount: 0, vaginalCount: 0, analCount: 0, mammaryCount: 0, penetrativeCount: 0, pitKills: 0, customTat: "", customLabel: "", customDesc: "", currentRules: [], bellyTat: 0, induce: 0, mpreg: 0, inflation: 0, inflationType: "none", inflationMethod: 0, milkSource: 0, cumSource: 0, burst: 0, bellyImplant: 0, bellySag: 0, birthsTotal: 0, pubertyAgeXX: 13, pubertyAgeXY: 13, underArmHStyle: "waxed", physicalAge: 18, actualAge: 18, visualAge: 18, father: 0, mother: 0, sisters: 0, daughters: 0, canRecruit: 1, HGExclude: 0, ballType: "human", eggType: "human"}>>
+<<set $activeSlave to {slaveName: "blank", birthName: "blank", weekAcquired: 0, origin: 0, career: 0, ID: 0, prestige: 0, pornFame: 0, pornFameSpending: 0, prestigeDesc: 0, recruiter: 0, relation: 0, relationTarget: 0, relationship: 0, relationshipTarget: 0, rivalry: 0, rivalryTarget: 0, subTarget: 0, choosesOwnAssignment: 0, assignment: "rest", assignmentVisible: 1, sentence: 0, training: 0, toyHole: "all her holes", indenture: -1, indentureRestrictions: 0, birthWeek: random(0,51), age: 18, ageImplant: 0, health: 0, minorInjury: 0, trust: 0, oldTrust: 0, devotion: 0, oldDevotion: 0, weight: 0, muscles: 0, height: 170, heightImplant: 0, nationality: "slave", race:"white", markings: "none", eyes: 1, eyeColor: "brown", eyewear: "none", hColor: "brown", pubicHColor: "brown", skin: "light", hLength: 10, hStyle: "short", pubicHStyle: "neat", waist: 0, corsetPiercing: 0, amp: 0, heels:0, voice: 2, voiceImplant: 0, accent: 0, shoulders: 0, shouldersImplant: 0, boobs: 0, boobsImplant: 0, boobsImplantType: 0, boobShape: "normal", nipples: "cute",  nipplesPiercing: 0, areolae: 0, areolaePiercing: 0, boobsTat: 0, lactation: 0, lactationAdaptation: 0, milk: 0, cum: 0, hips: 0, hipsImplant: 0, butt: 0, buttImplant: 0, buttImplantType: 0, buttTat: 0, face: 0, faceImplant: 0, faceShape: "normal", lips: 15, lipsImplant: 0, lipsPiercing: 0, lipsTat: 0, teeth: "normal", tonguePiercing: 0, vagina: 0, vaginaLube: 0, vaginaPiercing: 0, vaginaTat: 0, preg: -1, pregSource: 0, pregType: 0, labor: 0, births: 0, cSec: 0, bellyAccessory: "none", labia: 0, clit: 0, clitPiercing: 0, clitSetting: "vanilla", foreskin: 0, anus: 0, dick: 0, analArea: 1, dickPiercing: 0, dickTat: 0, balls: 0, scrotum: 0, ovaries: 0, anusPiercing: 0, anusTat: 0, makeup: 0, nails: 0, brand: 0, brandLocation: 0, earPiercing: 0, nosePiercing: 0, eyebrowPiercing: 0, navelPiercing: 0, shouldersTat: 0, armsTat: 0, legsTat: 0, backTat: 0, stampTat: 0, vaginalSkill: 0, oralSkill: 0, analSkill: 0, whoreSkill: 0, entertainSkill: 0, combatSkill: 0, livingRules: "spare", speechRules: "restrictive", releaseRules:"restrictive", relationshipRules: "restrictive", standardPunishment: "situational", standardReward: "situational", useRulesAssistant: 1, diet: "healthy", dietCum: 0, dietMilk: 0, tired: 0, hormones: 0, drugs: "no drugs", curatives: 0, chem: 0, aphrodisiacs: 0, addict: 0, fuckdoll: 0, choosesOwnClothes: 0, clothes: "no clothing", collar: "none", shoes: "none", vaginalAccessory: "none", dickAccessory: "none", buttplug: "none", intelligence: 0,  intelligenceImplant: 0, energy: 50, attrXX: 0, attrXY: 0, attrKnown: 0, fetish: "none", fetishStrength: 70, fetishKnown: 0, behavioralFlaw: "none", behavioralQuirk: "none", sexualFlaw: "none", sexualQuirk: "none", oralCount: 0, vaginalCount: 0, analCount: 0, mammaryCount: 0, penetrativeCount: 0, pitKills: 0, customTat: "", customLabel: "", customDesc: "", customImage: 0, currentRules: [], bellyTat: 0, induce: 0, mpreg: 0, inflation: 0, inflationType: "none", inflationMethod: 0, milkSource: 0, cumSource: 0, burst: 0, bellyImplant: 0, bellySag: 0, birthsTotal: 0, pubertyAgeXX: 13, pubertyAgeXY: 13, underArmHStyle: "waxed", physicalAge: 18, actualAge: 18, visualAge: 18, father: 0, mother: 0, sisters: 0, daughters: 0, canRecruit: 1, HGExclude: 0, ballType: "human", eggType: "human"}>>
 
 <<set $activeSlave.publicCount to 0>>
 <<if $activeSlaveOneTimeMaxAge > 998>>
diff --git a/src/uncategorized/genericPlotEvents.tw b/src/uncategorized/genericPlotEvents.tw
index 30e83f08f8e444304135e16d9c0f4ee7570ab0df..9b3250eedbd8f1cd36ed7bf83481759f5be808e6 100644
--- a/src/uncategorized/genericPlotEvents.tw
+++ b/src/uncategorized/genericPlotEvents.tw
@@ -926,31 +926,31 @@ A screen opposite your desk springs to life, <<if $assistant == 0>>showing your
 			<<if ($slaves[$i].origin is "She was an initiate in a religious community of women you enslaved.") || ($slaves[$i].origin is "She was the head of a religious community of women you enslaved.")>>
 				<<slaveCost $slaves[$i]>>
 				<<set $cash += $slaveCost>>
-				<<set $dump to $slaves.pluck([$i], [$i])>>
+				<<set $dump to $slaves.pluck([$i], [$i])>><<set $i-->>
 			<</if>>
 		<<elseif $PAidTarget is "school">>
 			<<if ($slaves[$i].origin is "She was the principal of a girls' school whose remnants you enslaved. A strap-on and a large quantity of personal lubricant was found in her possession when she was enslaved.") || ($slaves[$i].origin is "She was a student at a girls' school whose remnants you enslaved.")>>
 				<<slaveCost $slaves[$i]>>
 				<<set $cash += $slaveCost>>
-				<<set $dump to $slaves.pluck([$i], [$i])>>
+				<<set $dump to $slaves.pluck([$i], [$i])>><<set $i-->>
 			<</if>>
 		<<elseif $PAidTarget is "maternity">>
 			<<if ($slaves[$i].origin is "She was an expectant mother you enslaved when you evacuated her from a threatened old world hospital.")>>
 				<<slaveCost $slaves[$i]>>
 				<<set $cash += $slaveCost>>
-				<<set $dump to $slaves.pluck([$i], [$i])>>
+				<<set $dump to $slaves.pluck([$i], [$i])>><<set $i-->>
 			<</if>>
 		<<elseif $PAidTarget is "conversion">>
 			<<if ($slaves[$i].origin is "She was the owner of a religious orientation conversion therapy camp whose remnants you enslaved.") || ($slaves[$i].origin is "She was an inmate at a religious orientation conversion therapy camp whose remnants you enslaved.")>>
 				<<slaveCost $slaves[$i]>>
 				<<set $cash += $slaveCost>>
-				<<set $dump to $slaves.pluck([$i], [$i])>>
+				<<set $dump to $slaves.pluck([$i], [$i])>><<set $i-->>
 			<</if>>
 		<<else>>
 			<<if ($slaves[$i].origin is "She was a wealthy housewife who you enslaved as she fled societal collapse.")>>
 				<<slaveCost $slaves[$i]>>
 				<<set $cash += $slaveCost>>
-				<<set $dump to $slaves.pluck([$i], [$i])>>
+				<<set $dump to $slaves.pluck([$i], [$i])>><<set $i-->>
 			<</if>>
 		<</if>>
 	<</for>>
diff --git a/src/uncategorized/longSlaveDescription.tw b/src/uncategorized/longSlaveDescription.tw
index 9002fa95f46b2d210864809aed302d10d04e73a9..4f0e7cee5ee7bc3b4e34416310a0969cadaad300 100644
--- a/src/uncategorized/longSlaveDescription.tw
+++ b/src/uncategorized/longSlaveDescription.tw
@@ -1557,40 +1557,40 @@ when a dick is pushed inside <<if $activeSlave.vagina >= -1>>either of its lower
 	<</if>>
 	Entertainment and prostitution skills are irrelevant for a Fuckdoll.
 <<else>>
-<<if $activeSlave.whoreSkill <= 10>>
-	<<if $activeSlave.entertainSkill <= 10>>
-	<<elseif $activeSlave.entertainSkill <= 30>>
-		She is @@color:aquamarine;reasonably entertaining.@@
-	<<elseif $activeSlave.entertainSkill <= 60>>
-		She is a @@color:aquamarine;skilled entertainer.@@
-	<<elseif $activeSlave.entertainSkill < 100>>
-		She is an @@color:aquamarine;expert entertainer.@@
+	<<if $activeSlave.whoreSkill <= 10>>
+		<<if $activeSlave.entertainSkill <= 10>>
+		<<elseif $activeSlave.entertainSkill <= 30>>
+			She is @@color:aquamarine;reasonably entertaining.@@
+		<<elseif $activeSlave.entertainSkill <= 60>>
+			She is a @@color:aquamarine;skilled entertainer.@@
+		<<elseif $activeSlave.entertainSkill < 100>>
+			She is an @@color:aquamarine;expert entertainer.@@
+		<<else>>
+			She is a @@color:aquamarine;master of entertainment.@@
+		<</if>>
 	<<else>>
-		She is a @@color:aquamarine;master of entertainment.@@
+		<<if $activeSlave.entertainSkill <= 10>>
+		<<elseif $activeSlave.entertainSkill <= 30>>
+			She is @@color:aquamarine;reasonably entertaining@@ and
+		<<elseif $activeSlave.entertainSkill <= 60>>
+			She is a @@color:aquamarine;skilled entertainer@@ and
+		<<elseif $activeSlave.entertainSkill < 100>>
+			She is an @@color:aquamarine;expert entertainer@@ and
+		<<else>>
+			She is a @@color:aquamarine;master of entertainment@@ and
+		<</if>>
 	<</if>>
-<<else>>
-	<<if $activeSlave.entertainSkill <= 10>>
-	<<elseif $activeSlave.entertainSkill <= 30>>
-		She is @@color:aquamarine;reasonably entertaining@@ and
-	<<elseif $activeSlave.entertainSkill <= 60>>
-		She is a @@color:aquamarine;skilled entertainer@@ and
-	<<elseif $activeSlave.entertainSkill < 100>>
-		She is an @@color:aquamarine;expert entertainer@@ and
+	<<if $activeSlave.whoreSkill <= 10>>
+	<<elseif $activeSlave.whoreSkill <= 30>>
+		<<if $activeSlave.entertainSkill <= 10>>She <</if>>has @@color:aquamarine;basic experience as a prostitute.@@
+	<<elseif $activeSlave.whoreSkill <= 60>>
+		<<if $activeSlave.entertainSkill <= 10>>She is <</if>>a @@color:aquamarine;skilled streetwalker.@@
+	<<elseif $activeSlave.whoreSkill < 100>>
+		<<if $activeSlave.entertainSkill <= 10>>She is <</if>>a @@color:aquamarine;expert working girl.@@
 	<<else>>
-		She is a @@color:aquamarine;master of entertainment@@ and
+		<<if $activeSlave.entertainSkill <= 10>>She is <</if>>a @@color:aquamarine;masterful whore.@@
 	<</if>>
 <</if>>
-<<if $activeSlave.whoreSkill <= 10>>
-<<elseif $activeSlave.whoreSkill <= 30>>
-	has @@color:aquamarine;basic experience as a prostitute.@@
-<<elseif $activeSlave.whoreSkill <= 60>>
-	a @@color:aquamarine;skilled streetwalker.@@
-<<elseif $activeSlave.whoreSkill < 100>>
-	a @@color:aquamarine;expert working girl.@@
-<<else>>
-	a @@color:aquamarine;masterful whore.@@
-<</if>>
-<</if>>
 
 <<if ($activeSlave.customDesc != "") && (def $activeSlave.customDesc)>>
 	<<print $activeSlave.customDesc>>
diff --git a/src/uncategorized/main.tw b/src/uncategorized/main.tw
index 67049969d04e33efdc535499393e8a147478dfd9..8cb17b5226444177a7d127d2d737bfdc9e33ab4c 100644
--- a/src/uncategorized/main.tw
+++ b/src/uncategorized/main.tw
@@ -250,26 +250,34 @@ __''MAIN MENU''__&nbsp;&nbsp;&nbsp;&nbsp;//[[Summary Options]]
 <<set $j to "Back",$k to "AS Dump",$l to "Main">>
 <<for $i to 0; $i < $slaves.length; $i++>>
 <<if ($slaves[$i].assignment is "please you")>>
-	<br><<display "Toychest">> //In the coming week you plan to concentrate on <<if $slaves[$i].fuckdoll == 0>>her<<else>>its<</if>>
+	<br><<display "Toychest">> //In the coming week you plan to concentrate on
 	<<if $slaves[$i].fuckdoll == 0>>
-		$slaves[$i].toyHole, but for now://
-		<br>&nbsp;&nbsp;&nbsp;&nbsp;<<print "[[Use her mouth|FLips][$activeSlave to $slaves[" + $i + "],$nextButton to $j,$nextLink to $k,$returnTo to $l]]">> | <<print "[[Play with her tits|FBoobs][$activeSlave to $slaves[" + $i + "],$nextButton to $j,$nextLink to $k,$returnTo to $l]]">>
-		<<if canDoVaginal($slaves[$i])>>
-			| <<print "[[Fuck her|FVagina][$activeSlave to $slaves[" + $i + "],$nextButton to $j,$nextLink to $k,$returnTo to $l]]">>
+		<<if $slaves[$i].toyHole != "all her holes">>
+			her $slaves[$i].toyHole, but for now://
+			<br>&nbsp;&nbsp;&nbsp;&nbsp;<<print "[[Use her mouth|FLips][$activeSlave to $slaves[" + $i + "],$nextButton to $j,$nextLink to $k,$returnTo to $l]]">> | <<print "[[Play with her tits|FBoobs][$activeSlave to $slaves[" + $i + "],$nextButton to $j,$nextLink to $k,$returnTo to $l]]">>
+			<<if canDoVaginal($slaves[$i])>>
+				| <<print "[[Fuck her|FVagina][$activeSlave to $slaves[" + $i + "],$nextButton to $j,$nextLink to $k,$returnTo to $l]]">>
+				<<if canDoAnal($slaves[$i])>>
+				| <<print "[[Use her holes|FButt][$activeSlave to $slaves[" + $i + "],$nextButton to $j,$nextLink to $k,$returnTo to $l]]">>
+				<</if>>
+			<</if>>
 			<<if canDoAnal($slaves[$i])>>
-			| <<print "[[Use her holes|FButt][$activeSlave to $slaves[" + $i + "],$nextButton to $j,$nextLink to $k,$returnTo to $l]]">>
+			| <<print "[[Fuck her ass|FAnus][$activeSlave to $slaves[" + $i + "],$nextButton to $j,$nextLink to $k,$returnTo to $l]]">>
 			<</if>>
+			/*check*/
+			<<if canAchieveErection($slaves[$i])>>
+			| <<print "[[Ride her|FDick][$activeSlave to $slaves[" + $i + "],$nextButton to $j,$nextLink to $k,$returnTo to $l]]">>
+			<</if>>
+			| <<print "[[Abuse her|FAbuse][$activeSlave to $slaves[" + $i + "],$nextButton to $j,$nextLink to $k,$returnTo to $l]]">>
+		<<else>>
+			all of her holes equally.
 		<</if>>
-		<<if canDoAnal($slaves[$i])>>
-		| <<print "[[Fuck her ass|FAnus][$activeSlave to $slaves[" + $i + "],$nextButton to $j,$nextLink to $k,$returnTo to $l]]">>
-		<</if>>
-		/*check*/
-		<<if canAchieveErection($slaves[$i])>>
-		| <<print "[[Ride her|FDick][$activeSlave to $slaves[" + $i + "],$nextButton to $j,$nextLink to $k,$returnTo to $l]]">>
-		<</if>>
-		| <<print "[[Abuse her|FAbuse][$activeSlave to $slaves[" + $i + "],$nextButton to $j,$nextLink to $k,$returnTo to $l]]">>
 	<<else>>
-		$slaves[$i].toyHole.
+		<<if $slaves[$i].toyHole != "all her holes">>
+			its $slaves[$i].toyHole.
+		<<else>>
+			all of its holes.
+		<</if>>
 	<</if>>
 <</if>>
 <</for>>
diff --git a/src/uncategorized/pMercenaryRomeo.tw b/src/uncategorized/pMercenaryRomeo.tw
index bf7c5752ddb69638a719b79efa2996cc9e1a0380..9ba37d66d17d9bb14dbb8091a769e7dcf7e13c58 100644
--- a/src/uncategorized/pMercenaryRomeo.tw
+++ b/src/uncategorized/pMercenaryRomeo.tw
@@ -1,5 +1,5 @@
 :: P mercenary romeo
- 
+
 <<nobr>>
 
 <<set $nextButton to "Continue">>
@@ -7,34 +7,38 @@
 
 <<if $activeSlave == 0>>
 	<<for $i to 0; $i < $slaves.length; $i++>>
-		<<if ($slaves[$i].assignment is "serve the public")>>
-			<<set $activeSlave to $slaves[$i]>>
-			<<break>>
-		<</if>>
-		<<if ($slaves[$i].assignment is "serve in the club")>>
-			<<set $activeSlave to $slaves[$i]>>
-			<<break>>
+		<<if $slaves[$i].fetish != "mindbroken">>
+		<<if $slaves[$i].fuckdoll == 0>>
+			<<if ($slaves[$i].assignment is "serve the public")>>
+				<<set $activeSlave to $slaves[$i]>>
+				<<break>>
+			<</if>>
+			<<if ($slaves[$i].assignment is "serve in the club")>>
+				<<set $activeSlave to $slaves[$i]>>
+				<<break>>
+			<</if>>
+			<<if ($slaves[$i].assignment is "whore")>>
+				<<set $activeSlave to $slaves[$i]>>
+				<<break>>
+			<</if>>
+			<<if ($slaves[$i].assignment is "work in the brothel")>>
+				<<set $activeSlave to $slaves[$i]>>
+				<<break>>
+			<</if>>
 		<</if>>
-		<<if ($slaves[$i].assignment is "whore")>>
-			<<set $activeSlave to $slaves[$i]>>
-			<<break>>
 		<</if>>
-		<<if ($slaves[$i].assignment is "work in the brothel")>>
+	<</for>>
+	<<if $activeSlave == 0>>
+		<<for $i to $slaves.length - 1; $i >= 0; $i-->>
+		<<if ($slaves[$i].publicCount > 0) && (($activeSlave == 0) || (random(1,100) > 50))>>
 			<<set $activeSlave to $slaves[$i]>>
 			<<break>>
 		<</if>>
-	<</for>>
-<</if>>
-<<if $activeSlave == 0>>
-	<<for $i to $slaves.length - 1; $i >= 0; $i-->>
-	<<if ($slaves[$i].publicCount > 0) && (($activeSlave == 0) || (random(1,100) > 50))>>
-		<<set $activeSlave to $slaves[$i]>>
-		<<break>>
+		<</for>>
 	<</if>>
-	<</for>>
-<</if>>
-<<if $activeSlave == 0>>
+	<<if $activeSlave == 0>>
 		<<set $activeSlave to $slaves.random()>>
+	<</if>>
 <</if>>
 
 <<slaveCost $activeSlave>>
diff --git a/src/uncategorized/randomNonindividualEvent.tw b/src/uncategorized/randomNonindividualEvent.tw
index d43c92c453f5048e3ade8b5a316e930607c150d4..bc5bee64d22ec23350008a10401265ccb1543cff 100644
--- a/src/uncategorized/randomNonindividualEvent.tw
+++ b/src/uncategorized/randomNonindividualEvent.tw
@@ -97,15 +97,7 @@
 <<if ($slaves[$i].daughters > 0)>>
 <<if ($slaves[$i].devotion > 50)>>
 	<<set $mother to $slaves[$i]>>
-	<<set $relation = $slaves>>
-	<<set $relation = $relation.shuffle()>>
-	<<for $j to 0; $j < $relation.length; $j++>>
-	<<if $relation[$j].mother == $mother.ID>>
-		<<set $daughter to $relation[$j]>>
-		<<set $relation = 0>>
-		<<break>>
-	<</if>>
-	<</for>>
+	<<set $daughter to RandomDaughter($slaves[$i])>>
 	<<if ($daughter.devotion > 50)>>
 	<<if canWalk($daughter)>>
 		<<if canWalk($mother)>>
@@ -129,15 +121,7 @@
 <<if ($slaves[$i].sisters > 0)>>
 <<if ($slaves[$i].dick == 1)>>
 	<<set $youngerSister to $slaves[$i]>>
-	<<set $relation = $slaves>>
-	<<set $relation = $relation.shuffle()>>
-	<<for $j to 0; $j < $relation.length; $j++>>
-		<<if areSisters($youngerSister, $relation[$j]) > 1>>
-			<<set $olderSister to $relation[$j]>>
-			<<set $relation = 0>>
-			<<break>>
-		<</if>>
-	<</for>>
+	<<set $olderSister to randomSister($slaves[$i])>>
 <<if ($olderSister.anus == 0)>>
 <<if ($youngerSister.devotion > ($olderSister.devotion+20))>>
 <<set $events.push("RE sibling revenge")>>
@@ -154,15 +138,7 @@
 <<if ($used == 0)>>
 <<if ($slaves[$i].sisters > 0)>>
 	<<set $alphaTwin to $slaves[$i]>>
-	<<set $relation = $slaves>>
-	<<set $relation = $relation.shuffle()>>
-	<<for $j to 0; $j < $relation.length; $j++>>
-		<<if areSisters($relation[$i], $alphaTwin) == 1>>
-			<<set $betaTwin to $relation[$j]>>
-			<<set $relation = 0>>
-			<<break>>
-		<</if>>
-	<</for>>
+	<<set $betaTwin to randomSister($slaves[$i])>>
 <<if ($alphaTwin.anus > 0)>>
 <<if ($betaTwin.anus > 0)>>
 <<if ($alphaTwin.devotion > 50)>>
diff --git a/src/uncategorized/saDiet.tw b/src/uncategorized/saDiet.tw
index 7a68f42af89827d3306febd3ba59cb9cc94a7595..7e7ebeaf5091db60b581880a53ea735a54297ec1 100644
--- a/src/uncategorized/saDiet.tw
+++ b/src/uncategorized/saDiet.tw
@@ -699,7 +699,7 @@
 					<<set $slaves[$i].devotion -= 4>>
 				<</if>>
 			<</if>>
-		<<elseif ($slaves[$i].fetishKnown == 0) && ($slaves[$i].fetish is "cumslut")>>
+		<<elseif ($slaves[$i].fetish is "cumslut")>>
 			<<if ($slaves[$i].fetishKnown == 0)>>
 				Being forced to get her sustenance only by working the phallic food dispensers in the kitchen has revealed something: @@color:lightcoral;she's got an oral fetish!@@
 				<<set $slaves[$i].fetishKnown to 1>>
diff --git a/src/uncategorized/saRecruitGirls.tw b/src/uncategorized/saRecruitGirls.tw
index 904d987fe05772b813df5de269f314e8e410866b..326a6b7412db26e81553d87aeab5374d2197a1a6 100644
--- a/src/uncategorized/saRecruitGirls.tw
+++ b/src/uncategorized/saRecruitGirls.tw
@@ -357,28 +357,7 @@ She uses her extra time and @@color:yellowgreen;recruitment allowance@@ this wee
 <<if $familyTesting == 1>>
 	<<if $arcologies[0].FSEgyptianRevivalist != "unset">>
 		<<if totalRelatives($slaves[$i]) > 0>>
-			<<set $relation = $slaves>>
-			<<set $relation = $relation.shuffle()>>
-			<<set _recruiterRelation = 0>>
-			<<for _j = 0; _j < $relation.length; _j++>>
-				<<if areSisters($slaves[$i], $relation[_j]) > 0 && isSlaveAvailable($relation[_j])>>
-					<<set _recruiterRelation = $relation[_j]>>
-					<<break>>
-				<<elseif $relation[_j].mother == $slaves[$i].ID && isSlaveAvailable($relation[_j])>>
-					<<set _recruiterRelation = $relation[_j]>>
-					<<break>>
-				<<elseif $relation[_j].father == $slaves[$i].ID && isSlaveAvailable($relation[_j])>>
-					<<set _recruiterRelation = $relation[_j]>>
-					<<break>>
-				<<elseif $relation[_j].ID == $slaves[$i].mother && isSlaveAvailable($relation[_j])>>
-					<<set _recruiterRelation = $relation[_j]>>
-					<<break>>
-				<<elseif $relation[_j].ID == $slaves[$i].father && isSlaveAvailable($relation[_j])>>
-					<<set _recruiterRelation = $relation[_j]>>
-					<<break>>
-				<</if>>
-			<</for>>
-			<<set $relation = 0>>
+			<<set _recruiterRelation = getRandomAvailabeRelation($slaves[$i])>>
 			<<if _recruiterRelation != 0>>
 				<<if ($slaves[$i].energy > 60 || $slaves[$i].sexualQuirk == "tease" || $slaves[$i].sexualQuirk == "perverted") && (_recruiterRelation.energy > 60 || _recruiterRelation.sexualQuirk == "tease" || _recruiterRelation.sexualQuirk == "perverted")>>
 					<<set _seed += 6, _FSmatch++, $arcologies[0].FSEgyptianRevivalist += 0.02*$FSSingleSlaveRep>>
@@ -703,20 +682,7 @@ She is able to smartly <<if $arcologies[0].FSPaternalist != "unset">>answer<<els
 					The Ancient Egyptian sensibility of your arcology features slave incest, but she's too shy even to play-act with her $relationType for publicity.
 				<</if>>
 			<<else>>
-				<<if _recruiterRelation.mother == $slaves[$i].ID || _recruiterRelation.father == $slaves[$i].ID>>
-					<<set $relationType = "daughter">>
-				<<elseif $slaves[$i].mother == _recruiterRelation.ID>>
-					<<set $relationType = "mother">>
-				<<elseif $slaves[$i].father == _recruiterRelation.ID>>
-					<<set $relationType = "father">>
-				<<elseif areSisters($slaves[$i], _recruiterRelation) == 1>>
-					<<set $relationType = "twin">>
-				<<elseif areSisters($slaves[$i], _recruiterRelation) == 2>>
-					<<set $relationType = "sister">>
-				<<elseif areSisters($slaves[$i], _recruiterRelation) == 3>>
-					<<set $relationType = "half-sister">>
-				<</if>>
-				One idea that comes up while brainstorming is to act out Ancient Egyptian incest with her $relationType, but _recruiterRelation.slaveName is confined and unavailable.
+				One idea that comes up while brainstorming is to act out Ancient Egyptian incest with a family member, but all of them are confined and unavailable.
 			<</if>>
 		<<else>>
 			One of the most prominent features of your Egyptian Revival is an open, even expectant, attitude toward slave incest, but she doesn't have any close family living in your household.
diff --git a/src/uncategorized/saRelationships.tw b/src/uncategorized/saRelationships.tw
index 2a79ac7e913a72ed0cb520e58a6ccb008202bc9e..9f0d65b168ae0af68a8d1fe544730237478ba6de 100644
--- a/src/uncategorized/saRelationships.tw
+++ b/src/uncategorized/saRelationships.tw
@@ -996,7 +996,7 @@ Since she is mindbroken, she @@color:lightsalmon;can't really maintain@@ any mea
 
 <<if $familyTesting == 1>>
 
-	<<if $slaves[$i].mother > 0 || $slaves[$i].father > 0 || $slaves[$i].sisters > 0 || $slaves[$i].daughters > 0>>
+	<<if totalRelatives($slaves[$i]) > 0>>
 		<<set $relation = 0>>
 		<<set $relationType = 0>>
 		<<for $j to 0; $j < $slaves.length; $j++>>
@@ -1337,7 +1337,7 @@ Since she is mindbroken, she @@color:lightsalmon;can't really maintain@@ any mea
 
 <<if $familyTesting == 1>>
 
-<<if $slaves[$i].daughters > 0 || $slaves[$i].mother > 0 || $slaves[$i].father > 0 || $slaves[$i].sisters > 0>>
+<<if totalRelatives($slaves[$i]) > 0>>
 <<if $slaves[$i].trust <= 95>>
 <<for $j to 0; $j < $slaves.length; $j++>>
 	<<if $slaves[$i].trust < -20>>
diff --git a/src/uncategorized/slaveInteract.tw b/src/uncategorized/slaveInteract.tw
index 833fa8740c8ae52ef5624ffba729022c642a08df..8444653969e2c399adf5562e1223d107e1a729f6 100644
--- a/src/uncategorized/slaveInteract.tw
+++ b/src/uncategorized/slaveInteract.tw
@@ -152,10 +152,10 @@
 	<</if>>
 	</span>
 	| <<click "Abuse her">><<replace "#miniscene">><<display "FAbuse">><</replace>><</click>>
-	<<if $familyTest == 1>>
+	<<if $familyTesting == 1>>
 		<<for $i to 0; $i < $slaves.length; $i++>>
 			<<if $activeSlave.mother == $slaves[$i].ID>>
-				<<if isAvailabe($slaves[$i])>>
+				<<if isSlaveAvailable($slaves[$i])>>
 					| <<click "Fuck her with her mother">><<replace "#miniscene">><<set $partner to "mother">><<display "FRelation">><br>&nbsp;&nbsp;&nbsp;&nbsp;<</replace>><</click>>
 				<<else>>
 					//Her mother, $slaves[$i].slaveName, is unavailable//
@@ -163,7 +163,7 @@
 			<</if>>
 			/*
 			<<if $activeSlave.father == $slaves[$i].ID>>
-				<<if isAvailabe($slaves[$i])>>
+				<<if isSlaveAvailable($slaves[$i])>>
 					| <<click "Fuck her with her father">><<replace "#miniscene">><<set $partner to "father">><<display "FRelation">><br>&nbsp;&nbsp;&nbsp;&nbsp;<</replace>><</click>>
 				<<else>>
 					//Her father, $slaves[$i].slaveName, is unavailable//
@@ -172,24 +172,25 @@
 			*/
 		<</for>>
 		<<if $activeSlave.daughters > 0>>
-			<<set $relation = $slaves>>
-			<<set $relation = $relation.shuffle()>>
-			<<for $i to 0; $i < $relation.length; $i++>>
-				<<if ($activeSlave.ID == $relation[$i].father || $activeSlave.ID == $relation[$i].mother) && isAvailabe($relation[$i])>>
-					<<if $activeSlave.daughters == 1>>
-						| <<click "Fuck her with her daughter">><<replace "#miniscene">><<set $partner to "daughter">><<display "FRelation">><br>&nbsp;&nbsp;&nbsp;&nbsp;<</replace>><</click>>
-					<<else>>
-						| <<click "Fuck her with one of her daughters">><<replace "#miniscene">><<set $partner to "daughter">><<display "FRelation">><br>&nbsp;&nbsp;&nbsp;&nbsp;<</replace>><</click>>
-					<</if>>	
-					<<break>>
-				<<elseif $i == $relation.length - 1>>
-					<<if $activeSlave.daughters == 1>>
-						//Her daughter is unavailable//
-					<<else>>
-						//Her daughters are unavailable//
-					<</if>>
+			<<set $relation = 0>>
+			<<for $i to 0; $i < $slaves.length; $i++>>
+				<<if ($activeSlave.ID == $slaves[$i].father || $activeSlave.ID == $slaves[$i].mother) && !isSlaveAvailable($slaves[$i])>>
+					<<set $relation++>>	
 				<</if>>
 			<</for>>
+			<<if $relation == $activeSlave.daughters>>
+				<<if $activeSlave.daughters == 1>>
+					//Her daughter is unavailable//
+				<<else>>
+					//Her daughters are unavailable//
+				<</if>>
+			<<else>>
+				<<if $activeSlave.daughters == 1>>
+					| <<click "Fuck her with her daughter">><<replace "#miniscene">><<set $partner to "daughter">><<display "FRelation">><br>&nbsp;&nbsp;&nbsp;&nbsp;<</replace>><</click>>
+				<<else>>
+					| <<click "Fuck her with one of her daughters">><<replace "#miniscene">><<set $partner to "daughter">><<display "FRelation">><br>&nbsp;&nbsp;&nbsp;&nbsp;<</replace>><</click>>
+				<</if>>
+			<</if>>
 		<</if>>
 		/*
 		<<if $activeSlave.daughters > 1>>
@@ -197,24 +198,25 @@
 		<</if>>
 		*/
 		<<if $activeSlave.sisters > 0>>
-			<<set $relation = $slaves>>
-			<<set $relation = $relation.shuffle()>>
-			<<for $i to 0; $i < $relation.length; $i++>>
-				<<if areSisters($activeSlave, $relation[$i]) > 0 && isAvailabe($relation[$i])>>
-					<<if $activeSlave.sisters == 1>>
-						| <<click "Fuck her with her sister">><<replace "#miniscene">><<set $partner to "sister">><<display "FRelation">><br>&nbsp;&nbsp;&nbsp;&nbsp;<</replace>><</click>>
-					<<else>>
-						| <<click "Fuck her with one of her sisters">><<replace "#miniscene">><<set $partner to "sister">><<display "FRelation">><br>&nbsp;&nbsp;&nbsp;&nbsp;<</replace>><</click>>
-					<</if>>	
-					<<break>>
-				<<elseif $i == $relation.length - 1>>
-					<<if $activeSlave.sisters == 1>>
-						//Her sister is unavailable//
-					<<else>>
-						//Her sisters are unavailable//
-					<</if>>
+			<<set $relation = 0>>
+			<<for $i to 0; $i < $slaves.length; $i++>>
+				<<if areSisters($activeSlave, $slaves[$i]) > 0 && isSlaveAvailable($slaves[$i]) == false>>
+					<<set $relation++>>
 				<</if>>
 			<</for>>
+			<<if $relation == $activeSlave.sisters>>
+				<<if $activeSlave.sisters == 1>>
+					//Her sister is unavailable//
+				<<else>>
+					//Her sisters are unavailable//
+				<</if>>
+			<<else>>
+				<<if $activeSlave.sisters == 1>>
+					| <<click "Fuck her with her sister">><<replace "#miniscene">><<set $partner to "sister">><<display "FRelation">><br>&nbsp;&nbsp;&nbsp;&nbsp;<</replace>><</click>>
+				<<else>>
+					| <<click "Fuck her with one of her sisters">><<replace "#miniscene">><<set $partner to "sister">><<display "FRelation">><br>&nbsp;&nbsp;&nbsp;&nbsp;<</replace>><</click>>
+				<</if>>	
+			<</if>>
 		<</if>>
 		/*
 		<<if $activeSlave.sisters > 1>>
diff --git a/src/uncategorized/slaveSummary.tw b/src/uncategorized/slaveSummary.tw
index 32519ca5be0445831e7f61acbad8e5f4c31df22c..f38550fb0457dc1a66f72c8d5c1a3fd0e3e3f711 100644
--- a/src/uncategorized/slaveSummary.tw
+++ b/src/uncategorized/slaveSummary.tw
@@ -1660,6 +1660,13 @@ Release rules: _Slave.releaseRules.
 <</if>>
 @@
 @@color:pink;
+<<if (_Slave.waist > 1)>>
+	Wst++
+<<elseif (_Slave.waist == 1)>>
+	Wst+
+<</if>>
+@@
+@@color:pink;
 <<if (_Slave.boobsImplant == 0) && (_Slave.buttImplant == 0) && (_Slave.waist < 2) && (_Slave.lipsImplant == 0) && (_Slave.faceImplant < 2) && (_Slave.bellyImplant == 0)>>
 	Natr
 <<else>>
@@ -1865,6 +1872,13 @@ _Slave.faceShape face.
 <</if>>
 @@
 @@color:pink;
+<<if (_Slave.waist > 1)>>
+	Unnaturally narrow waist.
+<<elseif (_Slave.waist == 1)>>
+	Narrow waist.
+<</if>>
+@@
+@@color:pink;
 <<if (_Slave.boobsImplant != 0) || (_Slave.buttImplant != 0) || (_Slave.lipsImplant != 0) || (_Slave.bellyImplant != 0)>>
 	Implants.
 <<elseif (_Slave.faceImplant >= 2) || (_Slave.waist >= 2)>>
@@ -2981,6 +2995,7 @@ _Slave.faceShape face.
 <</if>>
 <</if>>
 
+<<if _Slave.fuckdoll == 0>>
 <<if $abbreviateClothes is 2>>
 <<if _Slave.choosesOwnClothes == 1>>
 	Dressing herself.
@@ -3180,6 +3195,7 @@ _Slave.faceShape face.
 	Enormous buttplug.
 <</switch>>
 <</if>>
+<</if>>
 
 <<if $abbreviateRulesets is 2>>
 <<if (def _Slave.currentRules) && (_Slave.currentRules.length > 0)>>
diff --git a/src/utility/assayWidgets.tw b/src/utility/assayWidgets.tw
index 445a2f108163b22ef9de417f573e6f48e3b887aa..782d4fb2472118e74c7005bc1550a4e94133e18c 100644
--- a/src/utility/assayWidgets.tw
+++ b/src/utility/assayWidgets.tw
@@ -694,7 +694,7 @@
 <<set $seed to $oralUseWeight + $vaginalUseWeight + $analUseWeight>>
 
 <<if $seed > 0>>
-<<set $FResult += 6*($oralUseWeight/$seed)*($args[0].oralSkill/30)>>
+<<set $FResult += (6+$args[0].tonguePiercing)*($oralUseWeight/$seed)*($args[0].oralSkill/30)>>
 <<if $args[0].sexualFlaw == "cum addict">>
 	<<set $FResult += ($oralUseWeight/$seed)*($args[0].oralSkill/30)>>
 <</if>>
diff --git a/src/utility/descriptionWidgets.tw b/src/utility/descriptionWidgets.tw
index 9ce668e620b25032c79ab58324b348321c1cdde7..77774d06aa2b6d0acbabd60efcab2efe65622abd 100644
--- a/src/utility/descriptionWidgets.tw
+++ b/src/utility/descriptionWidgets.tw
@@ -1696,41 +1696,41 @@ $pronounCap's got a
 
 <<if $activeSlave.hips < -1>>
 	<<if $activeSlave.butt > 2>>
-	$possessiveCap butt is disproportionately large for $possessive narrow hips<<if $arcologies[0].FSTransformationFetishist is "unset">>.<<else>>, but your transformation fetishist arcology considers this attractive.<</if>>
+	$possessiveCap butt is @@color:red;disproportionately large@@ for $possessive narrow hips<<if $arcologies[0].FSTransformationFetishist is "unset">>.<<else>>, but your transformation fetishist arcology considers this attractive.<</if>>
 	<<else>>
 	$possessiveCap hips are very narrow.
 	<</if>>
 <<elseif $activeSlave.hips < 0>>
 	<<if $activeSlave.butt > 4>>
-	$possessiveCap butt is disproportionately large for $possessive trim hips<<if $arcologies[0].FSTransformationFetishist is "unset">>.<<else>>, but your transformation fetishist arcology considers this attractive.<</if>>
+	$possessiveCap butt is @@color:red;disproportionately large@@ for $possessive trim hips<<if $arcologies[0].FSTransformationFetishist is "unset">>.<<else>>, but your transformation fetishist arcology considers this attractive.<</if>>
 	<<else>>
 	$possessiveCap butt is complemented by $possessive trim hips.
 	<</if>>
 <<elseif $activeSlave.hips > 2>>
 	<<if $activeSlave.butt <= 8>>
-	$possessiveCap butt is disproportionately small for $possessive monstrous hips.
+	$possessiveCap butt is @@color:red;disproportionately small@@ for $possessive monstrous hips.
 	<<else>>
 	$possessiveCap butt is fitting for $possessive monstrous hips.
 	<</if>>
 <<elseif $activeSlave.hips > 1>>
 	<<if $activeSlave.butt <= 3>>
-	$possessiveCap butt is disproportionately small for $possessive very wide hips.
+	$possessiveCap butt is @@color:red;disproportionately small@@ for $possessive very wide hips.
 	<<else>>
 	$possessiveCap butt is flattered by $possessive very wide hips.
 	<</if>>
 <<elseif $activeSlave.hips > 0>>
 	<<if $activeSlave.butt > 8>>
-	$possessiveCap butt is disproportionately large for $possessive broad hips<<if $arcologies[0].FSTransformationFetishist is "unset">>.<<else>>, but your transformation fetishist arcology considers this attractive.<</if>>
+	$possessiveCap butt is @@color:red;disproportionately large@@ for $possessive broad hips<<if $arcologies[0].FSTransformationFetishist is "unset">>.<<else>>, but your transformation fetishist arcology considers this attractive.<</if>>
 	<<elseif $activeSlave.butt <= 2>>
-	$possessiveCap butt is disproportionately small for $possessive broad hips.
+	$possessiveCap butt is @@color:red;disproportionately small@@ for $possessive broad hips.
 	<<else>>
 	$possessiveCap butt is complemented by $possessive broad hips.
 	<</if>>
 <<else>>
 	<<if $activeSlave.butt > 6>>
-	$possessiveCap butt is disproportionately large for $possessive womanly hips<<if $arcologies[0].FSTransformationFetishist is "unset">>.<<else>>, but your transformation fetishist arcology considers this attractive.<</if>>
+	$possessiveCap butt is @@color:red;disproportionately large@@ for $possessive womanly hips<<if $arcologies[0].FSTransformationFetishist is "unset">>.<<else>>, but your transformation fetishist arcology considers this attractive.<</if>>
 	<<elseif $activeSlave.butt <= 1>>
-	$possessiveCap butt is disproportionately small for $possessive ample hips.
+	$possessiveCap butt is @@color:red;disproportionately small@@ for $possessive ample hips.
 	<<else>>
 	$possessiveCap butt is complemented by $possessive ample hips.
 	<</if>>
@@ -2327,23 +2327,14 @@ $pronounCap's got a
 <<if $showBodyMods == 1>>
 
 <<if ($activeSlave.vagina > -1)>>
-	<<if ($activeSlave.dick == 0)>>
 	<<if ($activeSlave.anusPiercing == 1)>>
-		$pronounCap has a simple piercing between $possessive pussy and $possessive asshole<<if $activeSlave.fuckdoll > 0>> which helps keep the strip of material between its holes in place<</if>>.
+		$pronounCap has a simple piercing between $possessive pussy and $possessive asshole<<if $activeSlave.fuckdoll > 0>> which helps keep the strip of material <<if $activeSlave.vagina > -1>>between its holes<<else>>below its rear hole<</if>> in place<</if>>.
 	<<elseif ($activeSlave.anusPiercing is 2)>>
-		$pronounCap has a big ring between $possessive pussy and $possessive asshole<<if $activeSlave.fuckdoll > 0>>, which helps keep the strip of material between its holes in place,<</if>> and studs in all around $possessive anus.
-	<</if>>
-	<<else>>
-	<<if ($activeSlave.anusPiercing == 1)>>
-		$pronounCap has a simple piercing between $possessive pussy and the base of $possessive dick.
-		/* It rubs $possessive genitals and keeps $possessive sexually primed. */
-	<<elseif ($activeSlave.anusPiercing is 2)>>
-		$pronounCap has two rings between the base of $possessive dick and $possessive pussy, three more between $possessive pussy and $possessive ass, and studs in a ring around $possessive anus.
-	<</if>>
+		$pronounCap has a big ring between $possessive pussy and $possessive asshole<<if $activeSlave.fuckdoll > 0>>, which helps keep the strip of material <<if $activeSlave.vagina > -1>>between its holes<<else>>below its rear hole<</if>> in place,<</if>> and studs in all around $possessive anus.
 	<</if>>
 <<else>>
 	<<if ($activeSlave.anusPiercing == 1)>>
-		$pronounCap has a simple perianal piercing between the base of $possessive dick and $possessive girly butthole<<if $activeSlave.fuckdoll > 0>> which helps keep the strip of material between its holes in place<</if>>.
+		$pronounCap has a simple perianal piercing between the base of $possessive dick and $possessive girly butthole<<if $activeSlave.fuckdoll > 0>> which helps keep the strip of material <<if $activeSlave.vagina > -1>>between its holes<<else>>below its rear hole<</if>> in place<</if>>.
 	<<elseif ($activeSlave.anusPiercing is 2)>>
 		$pronounCap has a big ring between the base of $possessive dick and $possessive girly butthole, which has studs all around it.
 	<</if>>
@@ -2440,7 +2431,7 @@ $pronounCap's got a
 				$possessiveCap ballsack have its own uncomfortably tight pouch in the suit.
 			<</if>>
 		<<else>>
-			soft cock<<if $activeSlave.scrotum > 0>> and balls are<<else>>is<</if>> trapped up against her abdomen, under the Fuckdoll suit's protective material.
+			soft cock<<if $activeSlave.scrotum > 0>> and balls are<<else>>is<</if>> trapped up against its abdomen, under the Fuckdoll suit's protective material.
 		<</if>>
 	<</if>>
 	<<if $activeSlave.vagina > -1>>
@@ -3596,13 +3587,15 @@ $pronounCap's got a
 <</if>>
 
 <<if $activeSlave.fuckdoll > 0>>
-	$possessiveCap front hole
-	<<if $activeSlave.fuckdoll <= 45>>
-		is mostly useful when it's restrained for rape.
-	<<else>>
-		will massage <<if $PC.dick == 1>>cocks<<else>>anything<</if>> placed inside it on command.
-		<<if $activeSlave.fuckdoll <= 85>>
-			$pronounCap is even capable of riding <<if $PC.dick == 1>>dick<<else>>a strap-on<</if>>.
+	<<if $activeSlave.vagina > 0>>
+		$possessiveCap front hole
+		<<if $activeSlave.fuckdoll <= 45>>
+			is mostly useful when it's restrained for rape.
+		<<else>>
+			will massage <<if $PC.dick == 1>>cocks<<else>>anything<</if>> placed inside it on command.
+			<<if $activeSlave.fuckdoll <= 85>>
+				$pronounCap is even capable of riding <<if $PC.dick == 1>>dick<<else>>a strap-on<</if>>.
+			<</if>>
 		<</if>>
 	<</if>>
 <<else>>
diff --git a/src/utility/miscWidgets.tw b/src/utility/miscWidgets.tw
index b8c231a5f279391438b2b251a4d6f999d43ec4ad..2e1a7905d601f89b0dfaf924b0477810c860baff 100644
--- a/src/utility/miscWidgets.tw
+++ b/src/utility/miscWidgets.tw
@@ -1216,7 +1216,22 @@ $args[2]: icon UI Display for vector art, 1 for on.
 %/
 <<widget "SlaveArt">>
 
-<<if $imageChoice == 1>> /* VECTOR ART BY NOX */
+<<if ndef $args[0].customImage>><<set $args[0].customImage = 0>><</if>>
+<<if $args[0].customImage != 0>>
+
+<<set _fileName = "'resources/" + $args[0].customImage + ".png' ">>
+
+<<if $args[1] == 3>>
+	<<print "<img src=" + _fileName + "style='float:right; border:3px hidden'/>">>
+<<elseif $args[1] == 2>>
+	<<print "<img src=" + _fileName + "style='float:right; border:3px hidden' width='300' height='300'/>">>
+<<elseif $args[1] == 1>>
+	<<if $seeSummaryImages != 0>><<print "<img src=" + _fileName + "style='float:left; border:3px hidden' width='150' height='150'/>">><</if>>
+<<else>>
+	<<print "<img src=" + _fileName + "style='float:left; border:3px hidden' width='120' height='120'/>">>
+<</if>>
+
+<<elseif $imageChoice == 1>> /* VECTOR ART BY NOX */
 
 <<if $args[1] != 0>> /* IMAGE DOES NOT HAVE TO BE TINY */
 <<if ($args[1] != 1) || ($seeSummaryImages != 0)>> /* IMAGE IS NOT PART OF A LIST, OR IMAGES ARE TO BE DISPLAYED IN LISTS */