From 8b9d0cacf1459e501fa24253c1dfbf8e3c109419 Mon Sep 17 00:00:00 2001
From: Pregmodder <pregmodder@gmail.com>
Date: Wed, 12 Dec 2018 05:35:00 -0500
Subject: [PATCH] lactation fixes and lactation management rules for facility
 heads.

---
 devNotes/VersionChangeLog-Premod+LoliMod.txt |   6 +
 devNotes/twine JS.txt                        |   1 +
 slave variables documentation - Pregmod.txt  |   6 +
 src/init/setupVars.tw                        |   3 +-
 src/js/slaveGenerationJS.tw                  |   1 +
 src/pregmod/widgets/pregmodWidgets.tw        |   4 +-
 src/uncategorized/clinicReport.tw            |  23 ++-
 src/uncategorized/nextWeek.tw                |   9 +
 src/uncategorized/saLongTermEffects.tw       |   7 -
 src/uncategorized/saRules.tw                 | 187 ++++++++++++++++++-
 src/uncategorized/slaveAssignmentsReport.tw  |   6 +-
 src/uncategorized/slaveInteract.tw           |  13 ++
 src/uncategorized/spaReport.tw               |   6 +-
 13 files changed, 250 insertions(+), 22 deletions(-)

diff --git a/devNotes/VersionChangeLog-Premod+LoliMod.txt b/devNotes/VersionChangeLog-Premod+LoliMod.txt
index c6e65c66f62..1ef563e4bc0 100644
--- a/devNotes/VersionChangeLog-Premod+LoliMod.txt
+++ b/devNotes/VersionChangeLog-Premod+LoliMod.txt
@@ -2,8 +2,14 @@
 
 0.10.7.1-1.3.x
 
+12/11/2018
+
+	1
+	-fixes
+
 12/10/2018
 
+	0
 	-pregnancy size/progress tracking overhauled
 	-natural lactation overhauled
 	-natural lactation can be induced from excessive breast play and will dry up if unsed
diff --git a/devNotes/twine JS.txt b/devNotes/twine JS.txt
index 8355436b303..04ba4bc747b 100644
--- a/devNotes/twine JS.txt	
+++ b/devNotes/twine JS.txt	
@@ -33184,6 +33184,7 @@ window.BaseSlave = function BaseSlave() {
 		speechRules: "restrictive",
 		releaseRules: "restrictive",
 		relationshipRules: "restrictive",
+		lactationRules: "none",
 		standardPunishment: "situational",
 		standardReward: "situational",
 		useRulesAssistant: 1,
diff --git a/slave variables documentation - Pregmod.txt b/slave variables documentation - Pregmod.txt
index 575341f8042..c5ba2cdad3f 100644
--- a/slave variables documentation - Pregmod.txt	
+++ b/slave variables documentation - Pregmod.txt	
@@ -2253,6 +2253,12 @@ relationshipRules:
 "just friends"
 "permissive"
 
+lactationRules:
+
+"none"
+"induce"
+"maintain"
+
 standardPunishment:
 
 "Confinement"
diff --git a/src/init/setupVars.tw b/src/init/setupVars.tw
index 885a8694d36..a61a58e0d85 100644
--- a/src/init/setupVars.tw
+++ b/src/init/setupVars.tw
@@ -343,7 +343,6 @@ equine: {type: "equine", normalOvaMin:1, normalOvaMax: 1, normalBirth: 48, minLi
 
 /* <<set setup.otherCareers = ["a producer", "being homeschooled by her parents", "from a middle class family", "from an upper class family"]>> */
 
-
 <<set setup.baseNationalities = ["Afghan", "Albanian", "Algerian", "American", "Andorran", "Angolan", "Antiguan", "Argentinian", "Armenian", "Aruban", "Australian", "Austrian", "Azerbaijani", "Bahamian", "Bahraini", "Bangladeshi", "Barbadian", "Belarusian", "Belgian", "Belizean", "Beninese", "Bermudian", "Bhutanese", "Bissau-Guinean", "Bolivian", "Bosnian", "Brazilian", "British", "Bruneian", "Bulgarian", "Burkinabé", "Burmese", "Burundian", "Cambodian", "Cameroonian", "Canadian", "Cape Verdean", "Catalan", "Central African", "Chadian", "Chilean", "Chinese", "Colombian", "Comorian", "Congolese", "a Cook Islander", "Costa Rican", "Croatian", "Cuban", "Curaçaoan", "Cypriot", "Czech", "Danish", "Djiboutian", "Dominican", "Dominiquais", "Dutch", "East Timorese", "Ecuadorian", "Egyptian", "Emirati", "Equatoguinean", "Eritrean", "Estonian", "Ethiopian", "Fijian", "Filipina", "Finnish", "French", "French Guianan", "French Polynesian", "Gabonese", "Gambian", "Georgian", "German", "Ghanan", "Greek", "Greenlandic", "Grenadian", "Guamanian", "Guatemalan", "Guinean", "Guyanese", "Haitian", "Honduran", "Hungarian", "I-Kiribati", "Icelandic", "Indian", "Indonesian", "Iranian", "Iraqi", "Irish", "Israeli", "Italian", "Ivorian", "Jamaican", "Japanese", "Jordanian", "Kazakh", "Kenyan", "Kittitian", "Korean", "Kosovan", "Kurdish", "Kuwaiti", "Kyrgyz", "Laotian", "Latvian", "Lebanese", "Liberian", "Libyan", "a Liechtensteiner", "Lithuanian", "Luxembourgian", "Macedonian", "Malagasy", "Malawian", "Malaysian", "Maldivian", "Malian", "Maltese", "Marshallese", "Mauritanian", "Mauritian", "Mexican", "Micronesian", "Moldovan", "Monégasque", "Mongolian", "Montenegrin", "Moroccan", "Mosotho", "Motswana", "Mozambican", "Namibian", "Nauruan", "Nepalese", "New Caledonian", "a New Zealander", "Ni-Vanuatu", "Nicaraguan", "Nigerian", "Nigerien", "Niuean", "Norwegian", "Omani", "Pakistani", "Palauan", "Palestinian", "Panamanian", "Papua New Guinean", "Paraguayan", "Peruvian", "Polish", "Portuguese", "Puerto Rican", "Qatari", "Romanian", "Russian", "Rwandan", "Sahrawi", "Saint Lucian", "Salvadoran", "Sammarinese", "Samoan", "São Toméan", "Saudi", "Scottish", "Senegalese", "Serbian", "Seychellois", "Sierra Leonean", "Singaporean", "Slovak", "Slovene", "a Solomon Islander", "Somali", "South African", "South Sudanese", "Spanish", "Sri Lankan", "Sudanese", "Surinamese", "Swazi", "Swedish", "Swiss", "Syrian", "Taiwanese", "Tajik", "Tanzanian", "Thai", "Tibetan", "Togolese", "Tongan", "Trinidadian", "Tunisian", "Turkish", "Turkmen", "Tuvaluan", "Ugandan", "Ukrainian", "Uruguayan", "Uzbek", "Vatican", "Venezuelan", "Vietnamese", "Vincentian", "Yemeni", "Zairian", "Zambian", "Zimbabwean"]>>
 
 
@@ -2102,6 +2101,8 @@ Then pick _namePool.random(), or display those names as possible choices, or do
 
 <<set setup.facilityCareers = ["be confined in the arcade", "be confined in the cellblock", "be the Attendant", "be the DJ", "be the Farmer", "be the Madam", "be the Matron", "be the Milkmaid", "be the Nurse", "be the Schoolteacher", "be the Stewardess", "be the Wardeness", "be your Concubine", "get treatment in the clinic", "learn in the schoolroom", "live with your Head Girl", "rest in the spa", "serve in the club", "serve in the master suite", "work as a farmhand", "work as a nanny", "work as a servant", "work in the brothel", "work in the dairy"]>>
 
+<<set setup.facilityHeads = ["be the Attendant", "be the DJ", "be the Farmer", "be the Madam", "be the Matron", "be the Milkmaid", "be the Nurse", "be the Schoolteacher", "be the Stewardess", "be the Wardeness", "be your Concubine"]>>
+
 <<set setup.lightColorMap = {
 "rgb(0, 0, 0)":"rgb(255, 255, 255)",
 "rgb(255, 255, 0)":"rgb(255, 255, 0)",
diff --git a/src/js/slaveGenerationJS.tw b/src/js/slaveGenerationJS.tw
index 94a529a73aa..8075ca5de64 100644
--- a/src/js/slaveGenerationJS.tw
+++ b/src/js/slaveGenerationJS.tw
@@ -1602,6 +1602,7 @@ window.BaseSlave = function BaseSlave() {
 		speechRules: "restrictive",
 		releaseRules: "restrictive",
 		relationshipRules: "restrictive",
+		lactationRules: "none",
 		standardPunishment: "situational",
 		standardReward: "situational",
 		useRulesAssistant: 1,
diff --git a/src/pregmod/widgets/pregmodWidgets.tw b/src/pregmod/widgets/pregmodWidgets.tw
index 24f97045e76..07f0ceacc78 100644
--- a/src/pregmod/widgets/pregmodWidgets.tw
+++ b/src/pregmod/widgets/pregmodWidgets.tw
@@ -120,8 +120,8 @@
 <<if ndef $args[0].induceLactation>>
 	<<set $args[0].induceLactation = 0>>
 <</if>>
-<<if ndef $args[0].wombImplant>>
-	<<set $args[0].wombImplant = "none">>
+<<if ndef $args[0].lactationRules>>
+	<<set $args[0].lactationRules = "none">>
 <</if>>
 
 <</widget>>
diff --git a/src/uncategorized/clinicReport.tw b/src/uncategorized/clinicReport.tw
index ef8e9c3bf31..4d3bbc020dc 100644
--- a/src/uncategorized/clinicReport.tw
+++ b/src/uncategorized/clinicReport.tw
@@ -124,7 +124,7 @@
 			<<setLocalPronouns $slaves[$i] 2>>
 			<<if ($slaves[$i].lactation > 0) && (($slaves[$i].boobs-$slaves[$i].boobsImplant) > 6000)>>
 				$He does $his best to aid the leaking $slaves[$i].slaveName, paying special attention to _his2 huge breasts as well as making sure to milk _him2 hourly.
-				<<set $slaves[$i].health += 4>>
+				<<set $slaves[$i].health += 4, $slaves[$i].lactationDuration = 2, $slaves[$i].boobs -= $slaves[$i].boobsMilk, $slaves[$i].boobsMilk = 0>>
 				<<if (random(1,100) > 65) && (($Nurse.fetish == "none") || ($Nurse.fetish == "boobs"))>>
 					<<if $Nurse.fetish == "none">>
 						<<set $Nurse.fetish = "boobs", $slaves[_FLs].fetish = "boobs">>
@@ -252,15 +252,20 @@
 		<<set $slaves[$i].livingRules = "spare">>
 	<</switch>>
 
-	<<if ($Nurse != 0) && ($clinicSpeedGestation == 1) && ($slaves[$i].pregKnown == 1)>>
-		<<set $slaves[$i].pregControl = "speed up">>
-	<</if>>
-	<<if ($Nurse != 0) && ($slaves[$i].chem > 10) && ($clinicUpgradeFilters == 1)>>
-		<<set $slaves[$i].chem -= 5 + (50 * $clinicUpgradePurge)>>
-		<<if $clinicUpgradePurge == 1 && $slaves[$i].health > -50>>
-			<<set $slaves[$i].health = -50>>
+	<<if ($Nurse != 0)
+		<<if ($clinicSpeedGestation == 1) && ($slaves[$i].pregKnown == 1)>>
+			<<set $slaves[$i].pregControl = "speed up">>
+		<</if>>
+		<<if ($slaves[$i].chem > 10) && ($clinicUpgradeFilters == 1)>>
+			<<set $slaves[$i].chem -= 5 + (50 * $clinicUpgradePurge)>>
+			<<if $clinicUpgradePurge == 1 && $slaves[$i].health > -50>>
+				<<set $slaves[$i].health = -50>>
+			<</if>>
+			<<set $slaves[$i].chem = Math.max($slaves[$i].chem, 0)>>
+		<</if>>
+		<<if $slaves[$i].lactation == 1>>
+			<<set $slaves[$i].boobsMilk = 0>>
 		<</if>>
-		<<set $slaves[$i].chem = Math.max($slaves[$i].chem, 0)>>
 	<</if>>
 	<<if ($slaves[$i].health <= 40)>>
 	<<elseif ($Nurse != 0) && ($slaves[$i].chem > 15) && ($clinicUpgradeFilters == 1)>>
diff --git a/src/uncategorized/nextWeek.tw b/src/uncategorized/nextWeek.tw
index 81d50f4a969..fb90fef5e07 100644
--- a/src/uncategorized/nextWeek.tw
+++ b/src/uncategorized/nextWeek.tw
@@ -117,6 +117,15 @@
 	<<if $slaves[_i].indenture > 0>>
 		<<set $slaves[_i].indenture -= 1>>
 	<</if>>
+	<<if $slaves[$i].induceLactation > 0>>
+		<<set $slaves[$i].induceLactation-->>
+	<</if>>
+	<<if ($slaves[$i].lactation == 1)>>
+		<<if $slaves[$i].lactationDuration == 1>>
+			<<set $slaves[$i].boobsMilk = 10*$slaves[$i].lactationAdaptation>>
+			<<set $slaves[$i].boobs += $slaves[$i].boobsMilk>>
+		<</if>>
+	<</if>>
 	<<set $slaves[_i].trust = Number($slaves[_i].trust.toFixed(1)), $slaves[_i].devotion = Number($slaves[_i].devotion.toFixed(1))>>
 	<<set $slaves[_i].oldDevotion = $slaves[_i].devotion, $slaves[_i].oldTrust = $slaves[_i].trust, $slaves[_i].tired = 0, $slaves[_i].minorInjury = 0>>
 	<<if $slaves[_i].sentence > 1>>
diff --git a/src/uncategorized/saLongTermEffects.tw b/src/uncategorized/saLongTermEffects.tw
index 3445174494d..577c8c53d58 100644
--- a/src/uncategorized/saLongTermEffects.tw
+++ b/src/uncategorized/saLongTermEffects.tw
@@ -6601,7 +6601,6 @@
 		<<set $slaves[$i].boobsMilk = 0, $slaves[$i].lactation = 0>>
 	<<elseif $slaves[$i].lactationDuration == 1>>
 		Without release, $his breasts have become @@.lime;<<if $slaves[$i].lactationAdaptation > 50>>massively <</if>>engorged@@ with pent-up milk.
-		<<set $slaves[$i].boobsMilk = 10*$slaves[$i].lactationAdaptation>>
 		<<if $slaves[$i].boobs+$slaves[$i].boobsMilk > $slaves[$i].boobs*2>>
 			Being bloated to the point of bursting is @@.red;incredibly painful.@@
 			<<set $slaves[$i].health -= 20>>
@@ -6609,14 +6608,8 @@
 			Being so swollen is @@.red;very uncomfortable.@@
 			<<set $slaves[$i].health -= 5>>
 		<</if>>
-		<<set $slaves[$i].boobs += $slaves[$i].boobsMilk>>
-	<<else>>
-		<<set $slaves[$i].lactationDuration-->>
 	<</if>>
 <</if>>
-<<if $slaves[$i].induceLactation > 0>>
-	<<set $slaves[$i].induceLactation-->>
-<</if>>
 
 <<if ($slaves[$i].boobs - ($slaves[$i].muscles*30) > 5000) && ($slaves[$i].boobs <= 8000) && ($slaves[$i].boobsImplant < 500) && ($slaves[$i].breastMesh != 1)>>
 	<<if $slaves[$i].physicalAge < random(10,200)>>
diff --git a/src/uncategorized/saRules.tw b/src/uncategorized/saRules.tw
index 4b20a4157d3..1d76d4429cf 100644
--- a/src/uncategorized/saRules.tw
+++ b/src/uncategorized/saRules.tw
@@ -131,6 +131,24 @@
 				<</if>>
 			<</if>>
 
+			<<if $slaves[$i].lactationRules == "induce">>
+				Whenever $he finds a free moment from $his duties, $he spends that time massaging $his breasts and working $his nipples.
+				<<set $slaves[$i].induceLactation += 2>>
+				<<= induceLactation($slaves[$i])>>
+				<<if $slaves[$i].lactation == 1>><<set $slaves[$i].lactationRules = "maintain">><</if>>
+			<<elseif $slaves[$i].lactationRules == "maintain">>
+				<<if $servantMilkers == 1>>
+					$His duties keep $him busy, but $he <<if $slaves[$i].fetish == "boobs">>eagerly <</if>>uses the penthouse milkers whenever $he can,
+					<<set $servantMilkersMultiplier = 0.25>>
+					<<silently>><<include "SA get milked">><</silently>>
+					<<set $servantMilkersMultiplier = 1>>
+					giving $milk liters of milk over the week, which is sold for @@.yellowgreen;<<print cashFormat($milkSale)>>.@@
+				<<else>>
+					Whenever $he finds a free moment from $his duties, $he takes the time to thoroughly milk $his breasts to keep $his lactation strong for you.
+					<<set $slaves[$i].lactationDuration = 2, $slaves[$i].boobs -= $slaves[$i].boobsMilk, $slaves[$i].boobsMilk = 0>>
+				<</if>>
+			<</if>>
+			
 			$He does $his best for you, so $he frequently deserves a reward and never needs to be punished.
 			<<set _punishments = 0>>
 			<<set _rewards = 3>>
@@ -598,6 +616,24 @@
 				<</if>>
 			<</if>>
 
+			<<if $slaves[$i].lactationRules == "induce">>
+				Whenever $he finds a free moment between $his sets, $he spends that time massaging $his breasts and working $his nipples.
+				<<set $slaves[$i].induceLactation += 2>>
+				<<= induceLactation($slaves[$i])>>
+				<<if $slaves[$i].lactation == 1>><<set $slaves[$i].lactationRules = "maintain">><</if>>
+			<<elseif $slaves[$i].lactationRules == "maintain">>
+				<<if $servantMilkers == 1>>
+					$His duties keep $him busy, but $he <<if $slaves[$i].fetish == "boobs">>eagerly <</if>>uses the penthouse milkers whenever $he can,
+					<<set $servantMilkersMultiplier = 0.25>>
+					<<silently>><<include "SA get milked">><</silently>>
+					<<set $servantMilkersMultiplier = 1>>
+					giving $milk liters of milk over the week, which is sold for @@.yellowgreen;<<print cashFormat($milkSale)>>.@@
+				<<else>>
+					$He has worked milking $himself into $his dance routines, both entertaining the crowd and keeping $his lactation strong for you.
+					<<set $slaves[$i].lactationDuration = 2, $slaves[$i].boobs -= $slaves[$i].boobsMilk, $slaves[$i].boobsMilk = 0>>
+				<</if>>
+			<</if>>
+
 			$He does $his best for you, so $he frequently deserves a reward and never needs to be punished.
 			<<set _punishments = 0>>
 			<<set _rewards = 3>>
@@ -1046,6 +1082,24 @@
 				<</if>>
 			<</if>>
 
+			<<if $slaves[$i].lactationRules == "induce">>
+				$He spends much of $his time with a pair of automatic breast pumps attached to $his chest. The constant stimulation will have $him milky soon enough.
+				<<set $slaves[$i].induceLactation += 8>>
+				<<= induceLactation($slaves[$i])>>
+				<<if $slaves[$i].lactation == 1>><<set $slaves[$i].lactationRules = "maintain">><</if>>
+			<<elseif $slaves[$i].lactationRules == "maintain">>
+				<<if $servantMilkers == 1>>
+					$His duties keep $him busy, but $he <<if $slaves[$i].fetish == "boobs">>eagerly <</if>>uses the penthouse milkers whenever $he can,
+					<<set $servantMilkersMultiplier = 0.25>>
+					<<silently>><<include "SA get milked">><</silently>>
+					<<set $servantMilkersMultiplier = 1>>
+					giving $milk liters of milk over the week, which is sold for @@.yellowgreen;<<print cashFormat($milkSale)>>.@@
+				<<else>>
+					It's not unusual to see $him tending to $his patients with a pair of breast pumps sucking away at $his breasts.
+					<<set $slaves[$i].lactationDuration = 2, $slaves[$i].boobs -= $slaves[$i].boobsMilk, $slaves[$i].boobsMilk = 0>>
+				<</if>>
+			<</if>>
+
 			$He does $his best for you, so $he frequently deserves a reward and never needs to be punished.
 			<<set _punishments = 0>>
 			<<set _rewards = 3>>
@@ -1391,6 +1445,24 @@
 				<</if>>
 			<</if>>
 
+			<<if $slaves[$i].lactationRules == "induce">>
+				Whenever $he finds a free moment from $his duties, $he spends that time massaging $his breasts and working $his nipples.
+				<<set $slaves[$i].induceLactation += 3>>
+				<<= induceLactation($slaves[$i])>>
+				<<if $slaves[$i].lactation == 1>><<set $slaves[$i].lactationRules = "maintain">><</if>>
+			<<elseif $slaves[$i].lactationRules == "maintain">>
+				<<if $servantMilkers == 1>>
+					$His duties keep $him busy, but $he <<if $slaves[$i].fetish == "boobs">>eagerly <</if>>uses the penthouse milkers whenever $he can,
+					<<set $servantMilkersMultiplier = 0.25>>
+					<<silently>><<include "SA get milked">><</silently>>
+					<<set $servantMilkersMultiplier = 1>>
+					giving $milk liters of milk over the week, which is sold for @@.yellowgreen;<<print cashFormat($milkSale)>>.@@
+				<<else>>
+					$He works maintaining $his lactation into $his duties; when $he feels $his chest has grown too heavy, the nearest prisoner had better have an appetite or there will be punishment.
+					<<set $slaves[$i].lactationDuration = 2, $slaves[$i].boobs -= $slaves[$i].boobsMilk, $slaves[$i].boobsMilk = 0>>
+				<</if>>
+			<</if>>
+
 			$He does $his best for you, so $he frequently deserves a reward and never needs to be punished.
 			<<set _punishments = 0>>
 			<<set _rewards = 3>>
@@ -1480,7 +1552,7 @@
 					<</if>>
 				<</if>>
 				<<if ($slaves[$i].devotion <= 20)>>
-					gets off at work despite $his reluctance, @@.hotpink;habituating $him to sexual slavery.@@
+					gets off despite $his reluctance, @@.hotpink;habituating $him to sexual slavery.@@
 					<<set $slaves[$i].devotion += 1>>
 					<<if ($slaves[$i].trust >= -20) && ($slaves[$i].devotion <= 20)>>
 						$He hates $himself for climaxing, and knows the mild aphrodisiacs in the food are forcing $his arousal, @@.gold;frightening $him.@@
@@ -1675,6 +1747,24 @@
 				<</if>>
 			<</if>>
 
+			<<if $slaves[$i].lactationRules == "induce">>
+				Whenever $he finds a free moment from $his duties, $he spends that time massaging $his breasts and working $his nipples.
+				<<set $slaves[$i].induceLactation += 4>>
+				<<= induceLactation($slaves[$i])>>
+				<<if $slaves[$i].lactation == 1>><<set $slaves[$i].lactationRules = "maintain">><</if>>
+			<<elseif $slaves[$i].lactationRules == "maintain">>
+				<<if $servantMilkers == 1>>
+					$His duties keep $him busy, but $he <<if $slaves[$i].fetish == "boobs">>eagerly <</if>>uses the penthouse milkers whenever $he can,
+					<<set $servantMilkersMultiplier = 0.25>>
+					<<silently>><<include "SA get milked">><</silently>>
+					<<set $servantMilkersMultiplier = 1>>
+					giving $milk liters of milk over the week, which is sold for @@.yellowgreen;<<print cashFormat($milkSale)>>.@@
+				<<else>>
+					Whenever $he finds a free moment from $his duties, $he takes the time to thoroughly milk $his breasts to keep $his lactation strong for you.
+					<<set $slaves[$i].lactationDuration = 2, $slaves[$i].boobs -= $slaves[$i].boobsMilk, $slaves[$i].boobsMilk = 0>>
+				<</if>>
+			<</if>>
+
 			$He does $his best for you, so $he frequently deserves a reward and never needs to be punished.
 			<<set _punishments = 0>>
 			<<set _rewards = 3>>
@@ -2154,6 +2244,24 @@
 				<</if>>
 			<</if>>
 
+			<<if $slaves[$i].lactationRules == "induce">>
+				Whenever $he finds a free moment from $his duties, $he spends that time massaging $his breasts and working $his nipples.
+				<<set $slaves[$i].induceLactation += 4>>
+				<<= induceLactation($slaves[$i])>>
+				<<if $slaves[$i].lactation == 1>><<set $slaves[$i].lactationRules = "maintain">><</if>>
+			<<elseif $slaves[$i].lactationRules == "maintain">>
+				<<if $servantMilkers == 1>>
+					$His duties keep $him busy, but $he <<if $slaves[$i].fetish == "boobs">>eagerly <</if>>uses the penthouse milkers whenever $he can,
+					<<set $servantMilkersMultiplier = 0.25>>
+					<<silently>><<include "SA get milked">><</silently>>
+					<<set $servantMilkersMultiplier = 1>>
+					giving $milk liters of milk over the week, which is sold for @@.yellowgreen;<<print cashFormat($milkSale)>>.@@
+				<<else>>
+					Whenever $he finds a free moment from $his duties, $he takes the time to thoroughly milk $his breasts to keep $his lactation strong for you.
+					<<set $slaves[$i].lactationDuration = 2, $slaves[$i].boobs -= $slaves[$i].boobsMilk, $slaves[$i].boobsMilk = 0>>
+				<</if>>
+			<</if>>
+
 			$He does $his best for you, so $he frequently deserves a reward and never needs to be punished.
 			<<set _punishments = 0>>
 			<<set _rewards = 3>>
@@ -2649,6 +2757,24 @@
 				<</if>>
 			<</if>>
 
+			<<if $slaves[$i].lactationRules == "induce">>
+				$His lectures frequently include demonstrations on the proper way to induce lactation.
+				<<set $slaves[$i].induceLactation += 5>>
+				<<= induceLactation($slaves[$i])>>
+				<<if $slaves[$i].lactation == 1>><<set $slaves[$i].lactationRules = "maintain">><</if>>
+			<<elseif $slaves[$i].lactationRules == "maintain">>
+				<<if $servantMilkers == 1>>
+					$His duties keep $him busy, but $he <<if $slaves[$i].fetish == "boobs">>eagerly <</if>>uses the penthouse milkers whenever $he can,
+					<<set $servantMilkersMultiplier = 0.25>>
+					<<silently>><<include "SA get milked">><</silently>>
+					<<set $servantMilkersMultiplier = 1>>
+					giving $milk liters of milk over the week, which is sold for @@.yellowgreen;<<print cashFormat($milkSale)>>.@@
+				<<else>>
+					$He makes sure to give a special lecture whenever $his breasts start to feel full on the proper methods to milk a $girl.
+					<<set $slaves[$i].lactationDuration = 2, $slaves[$i].boobs -= $slaves[$i].boobsMilk, $slaves[$i].boobsMilk = 0>>
+				<</if>>
+			<</if>>
+
 			$He does $his best for you, so $he frequently deserves a reward and never needs to be punished.
 			<<set _punishments = 0>>
 			<<set _rewards = 3>>
@@ -3120,6 +3246,24 @@
 				<</if>>
 			<</if>>
 
+			<<if $slaves[$i].lactationRules == "induce">>
+				Whenever $he finds a free moment from $his duties, $he spends that time massaging $his breasts and working $his nipples.
+				<<set $slaves[$i].induceLactation += 2>>
+				<<= induceLactation($slaves[$i])>>
+				<<if $slaves[$i].lactation == 1>><<set $slaves[$i].lactationRules = "maintain">><</if>>
+			<<elseif $slaves[$i].lactationRules == "maintain">>
+				<<if $servantMilkers == 1>>
+					$His duties keep $him busy, but $he <<if $slaves[$i].fetish == "boobs">>eagerly <</if>>uses the penthouse milkers whenever $he can,
+					<<set $servantMilkersMultiplier = 0.25>>
+					<<silently>><<include "SA get milked">><</silently>>
+					<<set $servantMilkersMultiplier = 1>>
+					giving $milk liters of milk over the week, which is sold for @@.yellowgreen;<<print cashFormat($milkSale)>>.@@
+				<<else>>
+					Whenever $he finds a free moment from $his duties, $he takes the time to thoroughly milk $his breasts to keep $his lactation strong for you.
+					<<set $slaves[$i].lactationDuration = 2, $slaves[$i].boobs -= $slaves[$i].boobsMilk, $slaves[$i].boobsMilk = 0>>
+				<</if>>
+			<</if>>
+
 			$He does $his best for you, so $he frequently deserves a reward and never needs to be punished.
 			<<set _punishments = 0>>
 			<<set _rewards = 3>>
@@ -3593,6 +3737,19 @@
 				<</if>>
 			<</if>>
 
+			<<if $slaves[$i].lactationRules == "induce">>
+				Whenever $he finds a free moment from $his duties, $he spends that time hooked up to a milker to hasten $his milk production.
+				<<set $slaves[$i].induceLactation += 10>>
+				<<= induceLactation($slaves[$i])>>
+				<<if $slaves[$i].lactation == 1>><<set $slaves[$i].lactationRules = "maintain">><</if>>
+			<<elseif $slaves[$i].lactationRules == "maintain">>
+				$His duties keep $him busy, but $he <<if $slaves[$i].fetish == "boobs">>eagerly <</if>>uses milkers whenever $he can,
+				<<set $servantMilkersMultiplier = 0.75>>
+				<<silently>><<include "SA get milked">><</silently>>
+				<<set $servantMilkersMultiplier = 1>>
+				giving $milk liters of milk over the week, which is sold for @@.yellowgreen;<<print cashFormat($milkSale)>>.@@
+			<</if>>
+
 			$He does $his best for you, so $he frequently deserves a reward and never needs to be punished.
 			<<set _punishments = 0>>
 			<<set _rewards = 3>>
@@ -4126,6 +4283,24 @@
 				<</if>>
 			<</if>>
 
+			<<if $slaves[$i].lactationRules == "induce">>
+				Whenever $he finds a free moment from $his duties, $he spends that time massaging $his breasts and working $his nipples.
+				<<set $slaves[$i].induceLactation += 2>>
+				<<= induceLactation($slaves[$i])>>
+				<<if $slaves[$i].lactation == 1>><<set $slaves[$i].lactationRules = "maintain">><</if>>
+			<<elseif $slaves[$i].lactationRules == "maintain">>
+				<<if $servantMilkers == 1>>
+					$His duties keep $him busy, but $he <<if $slaves[$i].fetish == "boobs">>eagerly <</if>>uses the penthouse milkers whenever $he can,
+					<<set $servantMilkersMultiplier = 0.25>>
+					<<silently>><<include "SA get milked">><</silently>>
+					<<set $servantMilkersMultiplier = 1>>
+					giving $milk liters of milk over the week, which is sold for @@.yellowgreen;<<print cashFormat($milkSale)>>.@@
+				<<else>>
+					Whenever $he finds a free moment from $his duties, $he takes the time to thoroughly milk $his breasts to keep $his lactation strong for you.
+					<<set $slaves[$i].lactationDuration = 2, $slaves[$i].boobs -= $slaves[$i].boobsMilk, $slaves[$i].boobsMilk = 0>>
+				<</if>>
+			<</if>>
+
 			$He does $his best for you, so $he frequently deserves a reward and never needs to be punished.
 			<<set _punishments = 0>>
 			<<set _rewards = 3>>
@@ -4560,6 +4735,16 @@
 				<</if>>
 			<</if>>
 
+			<<if $slaves[$i].lactationRules == "induce">>
+				$He spends $his time away from you fervently working to induce lactation, eager to enjoy it with you.
+				<<set $slaves[$i].induceLactation += 9>>
+				<<= induceLactation($slaves[$i])>>
+				<<if $slaves[$i].lactation == 1>><<set $slaves[$i].lactationRules = "maintain">><</if>>
+			<<elseif $slaves[$i].lactationRules == "maintain">>
+				$He doesn't need to do anything to maintain $his lactation as you personally see to it each night.
+				<<set $slaves[$i].lactationDuration = 2, $slaves[$i].boobs -= $slaves[$i].boobsMilk, $slaves[$i].boobsMilk = 0>>
+			<</if>>
+
 			$He does $his best for you, so $he frequently deserves a reward and never needs to be punished.
 			<<set _punishments = 0>>
 			<<set _rewards = 3>>
diff --git a/src/uncategorized/slaveAssignmentsReport.tw b/src/uncategorized/slaveAssignmentsReport.tw
index ec39a886a71..baf7ca323c4 100644
--- a/src/uncategorized/slaveAssignmentsReport.tw
+++ b/src/uncategorized/slaveAssignmentsReport.tw
@@ -31,6 +31,10 @@
 	<<set $averageDick += $slaves[$i].dick, $slavesWithWorkingDicks++>>
 <</if>>
 
+<<if ($slaves[$i].lactation == 1)>>
+	<<set $slaves[$i].lactationDuration-->>
+<</if>>
+
 <<switch $slaves[$i].assignment>>
 <<case "be your Head Girl">>
 	<<set $HeadGirl = $slaves[$i]>>
@@ -409,7 +413,7 @@
 	<<set $slaves[$i].pregWeek++>>
 <</if>>
 <<if $slaves[$i].pregWeek < 0 >> /*postpartum state*/
-		<<set $slaves[$i].pregWeek++>>
+	<<set $slaves[$i].pregWeek++>>
 <</if>>
 
 <<run SetBellySize($slaves[$i])>> /* here will be also set through WombGetVolume .bellyPreg, .pregType, to current values. */
diff --git a/src/uncategorized/slaveInteract.tw b/src/uncategorized/slaveInteract.tw
index 202be62462b..7080524bb61 100644
--- a/src/uncategorized/slaveInteract.tw
+++ b/src/uncategorized/slaveInteract.tw
@@ -1601,6 +1601,7 @@ Hormones: <strong><span id="hormones">
 	<<link "Drugs">><<set $activeSlave.standardReward = "drugs">><<replace "#standardReward">>$activeSlave.standardReward<</replace>><</link>> |
 	<<link "Orgasm">><<set $activeSlave.standardReward = "orgasm">><<replace "#standardReward">>$activeSlave.standardReward<</replace>><</link>> |
 	<<link "Situational">><<set $activeSlave.standardReward = "situational">><<replace "#standardReward">>$activeSlave.standardReward<</replace>><</link>>
+
 	<br>Non-assignment orgasm rules: ''<span id="releaseRules">$activeSlave.releaseRules</span>.''
 	<<link "Permit masturbation and interslave sex">><<set $activeSlave.releaseRules = "permissive">><<replace "#releaseRules">>$activeSlave.releaseRules<</replace>><</link>> |
 	<<link "Let $him get off with other slaves">><<set $activeSlave.releaseRules = "sapphic">><<replace "#releaseRules">>$activeSlave.releaseRules<</replace>><</link>> |
@@ -1609,6 +1610,18 @@ Hormones: <strong><span id="hormones">
 	<</if>>
 	<<link "Only with you">><<set $activeSlave.releaseRules = "restrictive">><<replace "#releaseRules">>$activeSlave.releaseRules<</replace>><</link>> |
 	<<link "Have $him remain chaste">><<set $activeSlave.releaseRules = "chastity">><<replace "#releaseRules">>$activeSlave.releaseRules<</replace>><</link>>
+	
+	<<if setup.facilityHeads.includes($activeSlave.assignment)>>
+		<<if $activeSlave.lactation != 2>>
+			<br>Lactation maintenance for facility heads: ''<span id="releaseRules">$activeSlave.lactationRules</span>.''
+			<<link "Left alone">><<set $activeSlave.lactationRules = "none">><<replace "#lactationRules">>$activeSlave.lactationRules<</replace>><</link>> |
+			<<if $activeSlave.lactation == 0>>
+				<<link "Induce lactation">><<set $activeSlave.lactationRules = "induce">><<replace "#lactationRules">>$activeSlave.lactationRules<</replace>><</link>>
+			<<else>>
+				<<link "Maintain lactation">><<set $activeSlave.lactationRules = "maintain">><<replace "#lactationRules">>$activeSlave.lactationRules<</replace>><</link>>
+			<</if>>
+		<</if>>
+	<</if>>
 <</if>>
 
 <<if $activeSlave.clitPiercing == 3>>
diff --git a/src/uncategorized/spaReport.tw b/src/uncategorized/spaReport.tw
index c9d32029974..c566bcaa904 100644
--- a/src/uncategorized/spaReport.tw
+++ b/src/uncategorized/spaReport.tw
@@ -156,7 +156,7 @@
 						<<set $Attendant.fetish = "boobs", $slaves[_FLs].fetish = "boobs">>
 					<</if>>
 				<</if>>
-				<<set $slaves[$i].devotion += 3, $slaves[$i].trust += 3>>
+				<<set $slaves[$i].devotion += 3, $slaves[$i].trust += 3, $slaves[$i].lactationDuration = 2, $slaves[$i].boobs -= $slaves[$i].boobsMilk, $slaves[$i].boobsMilk = 0>>
 			<</if>>
 		<<case "She is remembered for winning best in show as a breeder.">>
 			<<if $slaves[$i].bellyPreg >= 5000>>
@@ -192,6 +192,10 @@
 				<br>&nbsp;&nbsp;&nbsp;&nbsp;$Attendant.slaveName works carefully with $slaves[$i].slaveName, and successfully @@.green;softens her sexual flaw@@ into an appealing quirk.
 			<</if>>
 		<</if>>
+		<<if $slaves[$i].lactation > 0>>
+			$Attendant.slaveName takes care to keep $slaves[$i].slaveName's breasts comfortably drained.
+			<<set $slaves[$i].lactationDuration = 2, $slaves[$i].boobs -= $slaves[$i].boobsMilk, $slaves[$i].boobsMilk = 0>>
+		<</if>>
 	<</for>>
 	<<if (_DL < $spa)>>
 		<<set _seed = random(1,10)+(($spa-_DL)*(random(150,170)+(_idleBonus*10)))>>
-- 
GitLab