From 740c9ca6ffe9acf3fcf3cd787f712b59e9b9d04a Mon Sep 17 00:00:00 2001
From: Pregmodder <pregmodder@gmail.com>
Date: Tue, 19 Dec 2017 21:12:33 -0500
Subject: [PATCH] sarules to the schoolroom

---
 devNotes/VersionChangeLog-Premod+LoliMod.txt |   5 +
 devNotes/twine JS                            |  84 ++++
 src/SecExp/widgets/unitsWidgets.tw           |   4 +-
 src/js/economyJS.tw                          |   4 +
 src/uncategorized/RESS.tw                    |   2 +-
 src/uncategorized/costs.tw                   |   4 +
 src/uncategorized/costsReport.tw             |   8 +-
 src/uncategorized/saRules.tw                 | 474 +++++++++++++++++++
 src/uncategorized/schoolroomReport.tw        |  10 +
 src/utility/assignWidgets.tw                 |   1 +
 10 files changed, 592 insertions(+), 4 deletions(-)

diff --git a/devNotes/VersionChangeLog-Premod+LoliMod.txt b/devNotes/VersionChangeLog-Premod+LoliMod.txt
index a8dd2d623f3..9038352fad4 100644
--- a/devNotes/VersionChangeLog-Premod+LoliMod.txt
+++ b/devNotes/VersionChangeLog-Premod+LoliMod.txt
@@ -1,7 +1,12 @@
 Pregmod 
 
 	0.10.7.0/1
+
+12/19/17
 	
+	216
+	-saRules now applies to the schoolroom
+
 12/18/17 
 
 	215
diff --git a/devNotes/twine JS b/devNotes/twine JS
index 15e834a71c4..b486c4e3750 100644
--- a/devNotes/twine JS	
+++ b/devNotes/twine JS	
@@ -1083,6 +1083,86 @@ window.cumAmount = function(slave) {
 	}
 };
 
+window.nameReplace = function(name)
+{
+	name = name.replace("Sh", "Th");
+	name = name.replace("SS", "Th");
+	name = name.replace("Ss", "Th");
+	name = name.replace("sS", "Th");
+	name = name.replace("S", "Th");
+	name = name.replace("aX", "aKTH");
+	name = name.replace("eX", "eKTH");
+	name = name.replace("iX", "iKTH");
+	name = name.replace("oX", "oKTH");
+	name = name.replace("uX", "uKTH");
+	name = name.replace("yX", "yKTH");
+	name = name.replace("AX", "AKTH");
+	name = name.replace("EX", "EKTH");
+	name = name.replace("IX", "IKTH");
+	name = name.replace("OX", "OKTH");
+	name = name.replace("UX", "UKTH");
+	name = name.replace("YX", "YKTH");
+	name = name.replace("Xa", "Tha");
+	name = name.replace("Xe", "The");
+	name = name.replace("Xi", "Thi");
+	name = name.replace("Xo", "Tho");
+	name = name.replace("Xu", "Thu");
+	name = name.replace("Xy", "Thy");
+	name = name.replace("XA", "THA");
+	name = name.replace("XE", "THE");
+	name = name.replace("XI", "THI");
+	name = name.replace("XO", "THO");
+	name = name.replace("XU", "THU");
+	name = name.replace("XY", "THY");
+	name = name.replace("X", "EKTH");
+	name = name.replace("zZ", "Th");
+	name = name.replace("Zz", "Th");
+	name = name.replace("ZZ", "TH");
+	name = name.replace("Z", "Th");
+	name = name.replace("Ci", "Thi");
+	name = name.replace("Ce", "The");
+	name = name.replace("Cy", "Thy");
+	name = name.replace("CI", "THI");
+	name = name.replace("CE", "THE");
+	name = name.replace("CY", "THY");
+	name = name.replace("ss", "th");
+	name = name.replace("sh", "th");
+	name = name.replace("s", "th");
+	name = name.replace("zz", "th");
+	name = name.replace("z", "th");
+	name = name.replace("ax", "akth");
+	name = name.replace("ex", "ekth");
+	name = name.replace("ix", "ikth");
+	name = name.replace("ox", "okth");
+	name = name.replace("ux", "ukth");
+	name = name.replace("yx", "ykth");
+	name = name.replace("Ax", "Akth");
+	name = name.replace("Ex", "Ekth");
+	name = name.replace("Ix", "Ikth");
+	name = name.replace("Ox", "Okth");
+	name = name.replace("Ux", "Ukth");
+	name = name.replace("Yx", "Ykth");
+	name = name.replace("xa", "tha");
+	name = name.replace("xe", "the");
+	name = name.replace("xi", "thi");
+	name = name.replace("xo", "tho");
+	name = name.replace("xu", "thu");
+	name = name.replace("xy", "thy");
+	name = name.replace("xA", "thA");
+	name = name.replace("xE", "thE");
+	name = name.replace("xI", "thI");
+	name = name.replace("xO", "thO");
+	name = name.replace("xU", "thU");
+	name = name.replace("xY", "thY");
+	name = name.replace("x", "ekth");
+	name = name.replace("ci", "thi");
+	name = name.replace("ce", "the");
+	name = name.replace("cy", "thy");
+	name = name.replace("cI", "thI");
+	name = name.replace("cE", "thE");
+	name = name.replace("cY", "thY");
+	return name;
+}
 
 window.mergeRules = function(rules) {
     var combinedRule = {};
@@ -2178,6 +2258,10 @@ window.getSlaveCost = function(s) {
 		} else {
 			cost += rulesCost;
 		}
+	} else if(s.assignment === Job.TEACHER) {
+		cost += rulesCost * 2;
+	} else if(s.assignment === Job.SCHOOL) {
+		cost += rulesCost * 1.5;
 	} else {	
 		if(s.livingRules === LivingRule.LUXURIOUS) {
 			cost += rulesCost * (s.relationship >= 4 ? 3 : 4);
diff --git a/src/SecExp/widgets/unitsWidgets.tw b/src/SecExp/widgets/unitsWidgets.tw
index 46293097f2f..deb3a61134f 100644
--- a/src/SecExp/widgets/unitsWidgets.tw
+++ b/src/SecExp/widgets/unitsWidgets.tw
@@ -10,7 +10,7 @@
 		<<elseif $args[0].equip == 1>>
 			They are issued with good, modern equipment: firearms, explosives and a few specialized weapons like sniper rifles and machine guns. They also carry simple body armor.
 		<<elseif $args[0].equip == 2>>
-			They are issued with excellent, high tech equipment: modern firearms, explosives, specialized weaponry and modern body armor. They are also issued with modern instruments like might visions and portable radars.
+			They are issued with excellent, high tech equipment: modern firearms, explosives, specialized weaponry and modern body armor. They are also issued with modern instruments like night vision and portable radars.
 		<<else>>
 			They are equipped with the best the modern world has to offer: modern firearms, explosives, specialized weaponry, experimental railguns, adaptive body armor and high tech recon equipment.
 		<</if>>
@@ -102,7 +102,7 @@
 		<<elseif $args[0].equip == 1>>
 			They are issued with good, modern equipment: firearms, explosives and a few specialized weapons like sniper rifles and machine guns. They also carry simple body armor.
 		<<elseif $args[0].equip == 2>>
-			They are issued with excellent, high tech equipment: modern firearms, explosives, specialized weaponry and modern body armor. They are also issued with modern instruments like might visions and portable radars.
+			They are issued with excellent, high tech equipment: modern firearms, explosives, specialized weaponry and modern body armor. They are also issued with modern instruments like night vision and portable radars.
 		<<else>>
 			They are equipped with the best the modern world has to offer: modern firearms, explosives, specialized weaponry, experimental railguns, adaptive body armor and high tech recon equipment.
 		<</if>>
diff --git a/src/js/economyJS.tw b/src/js/economyJS.tw
index 922283b1bdd..ff0f6e145c1 100644
--- a/src/js/economyJS.tw
+++ b/src/js/economyJS.tw
@@ -364,6 +364,10 @@ window.getSlaveCost = function(s) {
 		} else {
 			cost += rulesCost;
 		}
+	} else if(s.assignment === Job.TEACHER) {
+		cost += rulesCost * 2;
+	} else if(s.assignment === Job.SCHOOL) {
+		cost += rulesCost * 1.5;
 	} else {	
 		if(s.livingRules === LivingRule.LUXURIOUS) {
 			cost += rulesCost * (s.relationship >= 4 ? 3 : 4);
diff --git a/src/uncategorized/RESS.tw b/src/uncategorized/RESS.tw
index 21bddb2aa49..65d68ee0af3 100644
--- a/src/uncategorized/RESS.tw
+++ b/src/uncategorized/RESS.tw
@@ -746,7 +746,7 @@ An escape attempt occurs and is stopped almost before you are informed of it. <<
 
 <<if SlaveStatsChecker.checkForLisp($activeSlave)>>
 	<<set _name = $activeSlave.birthName>>
-	<set _name = nameReplace(_name)>>
+	<<set _name = nameReplace(_name)>>
 	<<set _slavename = $activeSlave.slaveName>>
 	<<set _slavename = nameReplace(_slavename)>>
 <<else>>
diff --git a/src/uncategorized/costs.tw b/src/uncategorized/costs.tw
index 8b636e43a4b..9da62276ea7 100644
--- a/src/uncategorized/costs.tw
+++ b/src/uncategorized/costs.tw
@@ -136,6 +136,10 @@
 	<<else>>
 		<<set $costs += $rulesCost>>
 	<</if>>
+<<elseif ($slaves[$i].assignment == "be the Schoolteacher")>>
+	<<set $costs += ($rulesCost*2)>>
+<<elseif ($slaves[$i].assignment == "learn in the schoolroom")>>
+	<<set $costs += ($rulesCost*1.5)>>
 <<else>>
 	<<if $slaves[$i].livingRules == "luxurious">>
 		<<if $slaves[$i].relationship >= 4>>
diff --git a/src/uncategorized/costsReport.tw b/src/uncategorized/costsReport.tw
index 04b06fa8be3..b8bd08e7bb4 100644
--- a/src/uncategorized/costsReport.tw
+++ b/src/uncategorized/costsReport.tw
@@ -241,9 +241,12 @@
 	<<elseif ($slaves[$i].assignment == "be the Attendant")>>
 		<br>&nbsp;&nbsp;&nbsp;&nbsp;Living expenses: ¤<<print ($rulesCost*2)>>
 		<<set $individualCosts += ($rulesCost*2)>>
+	<<elseif ($slaves[$i].assignment == "be the Schoolteacher")>>
+		<br>&nbsp;&nbsp;&nbsp;&nbsp;Living expenses: ¤<<print ($rulesCost*2)>>
+		<<set $individualCosts += ($rulesCost*2)>>
 	<<elseif ($slaves[$i].assignment == "serve in the club")>>
 		<br>&nbsp;&nbsp;&nbsp;&nbsp;Living expenses: <<print cashFormat(($rulesCost*1.5))>>
-		<<set $individualCosts += ($rulesCost*2)>>
+		<<set $individualCosts += ($rulesCost*1.5)>>
 	<<elseif ($slaves[$i].assignment == "work in the brothel")>>
 		<<if $slaves[$i].livingRules == "normal">>
 			<br>&nbsp;&nbsp;&nbsp;&nbsp;Living expenses: <<print cashFormat(($rulesCost*1.5))>>
@@ -282,6 +285,9 @@
 			<br>&nbsp;&nbsp;&nbsp;&nbsp;Living expenses: ¤<<print $rulesCost>>
 			<<set $individualCosts += $rulesCost>>
 		<</if>>
+	<<elseif ($slaves[$i].assignment == "learn in the schoolroom")>>
+		<br>&nbsp;&nbsp;&nbsp;&nbsp;Living expenses: <<print cashFormat(($rulesCost*1.5))>>
+		<<set $individualCosts += ($rulesCost*1.5)>>
 	<<else>>
 		<<if $slaves[$i].livingRules == "luxurious">>
 			<<if $slaves[$i].relationship >= 4>>
diff --git a/src/uncategorized/saRules.tw b/src/uncategorized/saRules.tw
index 1eba1062ed4..8ae5d551d03 100644
--- a/src/uncategorized/saRules.tw
+++ b/src/uncategorized/saRules.tw
@@ -2050,6 +2050,480 @@
 					<<set $slaves[$i].trust -= _punishments>>
 				<</switch>>
 			<</if>>
+		<<case "be the Schoolteacher">>
+			<<set $slaves[$i].need -= $schoolRoom.length*10>>
+			<<set _sexLessons = $schoolRoom*2>>
+			<<if canDoVaginal($slaves[$i])>>
+				<<set $slaves[$i].vaginalCount += _sexLessons, $vaginalTotal += _sexLessons>>
+			<</if>>
+			<<if canDoAnal($slaves[$i])>>
+				<<set $slaves[$i].analCount += _sexLessons, $analTotal += _sexLessons>>
+			<</if>>
+			<<if canPenetrate($slaves[$i])>>
+				<<set $slaves[$i].penetrativeCount += _sexLessons, $penetrativeTotal += _sexLessons>>
+			<</if>>
+			<<set $slaves[$i].oralCount += _sexLessons, $oralTotal += _sexLessons>>
+			<<if $slaves[$i].energy <= 20>>
+				is frigid and has little interest in getting off<<if ($slaves[$i].releaseRules != "permissive")>>, making the rule restricting her sexual outlets superfluous<</if>>.	
+				<<set $slaves[$i].need = 0>>
+			<<elseif $slaves[$i].need < $slaves[$i].energy*0.5>>
+				<<if ($slaves[$i].releaseRules != "permissive") && ($slaves[$i].releaseRules != "masturbation")>>
+					gets off with her students, so being forbidden from masturbation doesn't really bother her.
+					<<set $slaves[$i].need -= 20>>
+				<<else>>
+					gets off with her students, so she doesn't feel the need for release that often.
+					<<set $slaves[$i].need -= 20>>
+				<</if>>
+			<<else>>
+				<<if ($slaves[$i].releaseRules == "restrictive")>>
+					willingly begs you to
+					<<saRulesPlayerFetishPlay>>
+					in front of her class when ever she crosses paths with you.
+					<<saRulesPlayerEnergy>>
+					<<saRulesPlayerDiscoversFetish>>
+					<<saRulesPlayerDrugEffects>>
+				<<elseif ($slaves[$i].releaseRules == "masturbation")>>
+					<<if ($slaves[$i].devotion < 80)>>
+						is a little disappointed that she's limited to her hands and toys outside of class, but @@.mediumaquamarine;trusts you know what's best for her.@@ 
+						<<set $slaves[$i].trust += 1, $slaves[$i].need = 0>>
+					<<else>>
+						@@.mediumaquamarine;trusts your judgement@@ that only she really knows how to pleasure herself, though she @@.mediumorchid;often wonders why you won't make an example out of her.@@
+						<<set $slaves[$i].trust += 1, $slaves[$i].devotion -= 2, $slaves[$i].need = 0>>
+					<</if>>
+					<<if $slaves[$i].devotion > 20>>
+						When she does play with herself, she
+						<<saRulesMasturbationFetishPlay>>
+						<<saRulesMasturbationDiscoversFetish>>
+					<</if>>
+					<<saRulesMasturbationDrugEffects>>
+				<<else>> /* releaseRules not restrictive */
+					<<if ($universalRulesConsent == 0)>>
+						happily @@.mediumaquamarine;takes advantage@@ of your permission to demand that other slaves have sex with her for her lesson plan.
+						<<set $slaves[$i].trust += 1, $slaves[$i].need = 0>>
+						<<saRulesRapeFetish>>
+						<<saRulesRapeDiscoversFetish>>
+					<<else>> /* universalRulesConsent is not zero */
+						@@.mediumaquamarine;relies@@ on your other slaves for mutual satisfaction,
+						<<set $slaves[$i].trust += 1, $slaves[$i].need = 0>>
+						<<saRulesConsentFetish>>
+						<<saRulesConsentDiscoversFetish>>
+					<</if>> /* closes universalRulesConsent */
+					<<saRulesPermissiveDrugEffects>>
+				<</if>> /* closes releaseRules not restrictive */
+			<</if>>
+
+			She is @@.hotpink;very happy@@ with her private room in the back of $schoolroomName and @@.mediumaquamarine;trusts@@ you a bit more for placing the future education of your slaves in her hands.
+			<<set $slaves[$i].devotion += 1, $slaves[$i].trust += 1>>
+
+			<<if ($universalRulesConsent == 0)>>
+				<<if ($slaves[$i].releaseRules != "restrictive")>>
+					<<if ($slaves[$i].energy > 95)>>
+						<<if $SchlRiIDs.length > 2>>
+							Under the rules, she's allowed to demand that other slaves to get her off, and she @@.hotpink;adores@@ you for giving her plentiful teacher's assistants for her nymphomania.
+						<<else>>
+							Under the rules, she's allowed to demand that other slaves to get her off, and she @@.hotpink;eagerly awaits@@ the day more of your slaves enroll in $schoolroomName.
+						<</if>>
+						<<set $slaves[$i].devotion += 1>>
+					<<elseif ($slaves[$i].fetishKnown == 1) && ($slaves[$i].fetishStrength > 60)>>
+						<<if ($slaves[$i].fetish == "sadist")>>
+							<<if $SchlRiIDs.length > 2>>
+								Under the rules, she's allowed to sexually abuse other slaves, and she @@.hotpink;adores@@ you for providing a whole class of girls for her to rape lessons into.
+							<<else>>
+								Under the rules, she's allowed to sexually abuse other slaves, and she @@.hotpink;eagerly awaits@@ the day more of your slaves enroll in $schoolroomName.
+							<</if>>
+							<<set $slaves[$i].devotion += 1>>
+						<<elseif ($slaves[$i].fetish == "dom")>>
+							<<if $SchlRiIDs.length > 2>>
+								Under the rules, she's allowed to force other slaves to have sex with her, and she @@.hotpink;adores@@ you for providing a whole class of girls to demonstrate proper submission with.
+							<<else>>
+								Under the rules, she's allowed to force other slaves to have sex with her, and she @@.hotpink;eagerly awaits@@ the day more of your slaves enroll in $schoolroomName.
+							<</if>>
+							<<set $slaves[$i].devotion += 1>>
+						<</if>>
+					<</if>>
+				<</if>>
+			<</if>>
+
+			<<if ($slaves[$i].attrKnown == 0)>>
+				<<if ($week-$slaves[$i].weekAcquired > 4) && $slaves[$i].energy > 20>>
+					<<set $slaves[$i].attrKnown = 1>>
+					<<if $assistantName == "your personal assistant">>Your personal assistant<<else>>$assistantName<</if>> has been monitoring her as she teaches students, analyzing her preferences. It seems she is
+					<<saRulesAttractionDiscovery>>
+				<</if>>
+			<</if>>
+
+			She does her best for you, so she frequently deserves a reward and never needs to be punished.
+			<<set _punishments = 0>>
+			<<set _rewards = 3>>
+			
+			<<if _rewards > 0>>
+				<<switch $slaves[$i].standardReward>>
+				<<case "relaxation">>
+					She's given free time, which she
+					<<if $spa != 0>>
+						usually spends in $spaName<<if $Attendant != 0>> enjoying $Attendant.slaveName's care<</if>>.
+					<<else>>
+						usually spends relaxing in her room<<if $SchlRiIDs.length > 1>> giving private lessons to a student<</if>>.
+					<</if>>
+					<<if $slaves[$i].relationship > 0>>
+						She often asks to save these breaks so she can spend them with her <<if $slaves[$i].relationship == 1>>friend<<elseif $slaves[$i].relationship == 2>>best friend<<elseif $slaves[$i].relationship == 3>>friend with benefits<<elseif $slaves[$i].relationship == 4>>sweetheart<<else>>wife<</if>>.
+					<</if>>
+					These breaks are @@.green;good for her.@@
+					<<set $slaves[$i].health += _rewards>>
+				<<case "drugs">>
+					She's @@.hotpink;rewarded@@ with hits of mild recreational drugs, which @@.red;isn't healthy,@@ but helps bind her to you strongly.
+					<<set $slaves[$i].health -= _rewards>>
+					<<set $slaves[$i].devotion += _rewards*2>>
+				<<case "orgasm">>
+					She's @@.hotpink;rewarded@@ with
+					<<if $slaves[$i].clitPiercing >= 3>>
+						sustained orgasm from her <<if $slaves[$i].dick == 0>>clit<<else>>dick<</if>> piercing,
+					<<elseif $activeSlave.releaseRules == "sapphic">>
+						immediate sex with any nearby slave,
+					<<else>>
+						a quick climax from a vibrator,
+					<</if>>
+					@@.green;boosting her libido.@@
+					<<if $slaves[$i].energy < 98>><<set $slaves[$i].energy += _rewards>><</if>>
+					<<set $slaves[$i].devotion += _rewards>>
+				<<default>>
+					She's @@.hotpink;rewarded@@
+					<<if (_punishments > 0) && ($slaves[$i].standardReward == "situational")>>
+						and @@.gold;punished@@
+					<</if>>
+					situationally, letting her develop normally.
+					<<set $slaves[$i].devotion += _rewards>>
+				<</switch>>
+			<</if>>
+		<<case "learn in the schoolroom">>
+			<<if $Schoolteacher != 0>>
+				<<set $slaves[$i].need -= 30>>
+				<<set $slaves[$i].oralCount += 7, $slaves[$i].mammaryCount += 7, $oralTotal += 7, $mammaryTotal += 7>>
+				<<if canDoVaginal($slaves[$i])>>
+					<<set $slaves[$i].vaginalCount += 7, $vaginalTotal += 7>>
+					<<set $slaves[$i].need -= 10>>
+					<<if canImpreg($slaves[$i], $Schoolteacher) && $slaves[$i].breedingMark == 0 && $slaves[$i].vagina != 0>>
+						<<KnockMeUp $slaves[$i] 5 0 $Schoolteacher.ID 1>>
+					<</if>>
+				<</if>>
+				<<if canDoAnal($slaves[$i])>>
+					<<set $slaves[$i].analCount += 7, $analTotal += 7>>
+					<<set $slaves[$i].need -= 10>>
+					<<if canImpreg($slaves[$i], $Schoolteacher) && $slaves[$i].breedingMark == 0 && $slaves[$i].anus != 0>>
+						<<KnockMeUp $slaves[$i] 5 1 $Schoolteacher.ID 1>>
+					<</if>>
+				<</if>>
+				<<if canPenetrate($slaves[$i])>>
+					<<set $slaves[$i].penetrativeCount += 7, $penetrativeTotal += 7>>
+					<<set $slaves[$i].need -= 10>>
+					<<if canImpreg($Schoolteacher, $slaves[$i]) && $Schoolteacher.breedingMark == 0 && $Schoolteacher.vagina != 0 && $Schoolteacher.auns != 0>>
+						<<KnockMeUp $slaves[_FLs] 5 0 $slaves[$i].ID 1>>
+					<</if>>
+				<</if>>
+			<</if>>
+			<<if $slaves[$i].devotion < -50>>
+				is so unhappy that she has little interest in getting off, making the rule restricting her sexual outlets superfluous.
+				<<set $slaves[$i].need = 0>>
+			<<elseif $slaves[$i].energy <= 20>>
+				is frigid and has little interest in getting off, making the rule restricting her sexual outlets superfluous.
+				<<set $slaves[$i].need = 0>>
+			<<elseif $slaves[$i].need < $slaves[$i].energy*0.5>>
+				<<if ($slaves[$i].devotion <= 20)>>
+					gets off during class despite her reluctance, @@.hotpink;habituating her to sexual slavery.@@
+					<<set $slaves[$i].devotion += 1>>
+					<<if ($slaves[$i].trust > -20) && ($slaves[$i].devotion <= 20)>>
+						She hates herself for climaxing, and knows the mild aphrodisiacs in the food are forcing her arousal, @@.gold;frightening her.@@
+						<<set $slaves[$i].trust -= 1>>
+					<</if>>
+					<<set $slaves[$i].need -= 20>>
+				<<elseif ($slaves[$i].releaseRules != "permissive") && ($slaves[$i].releaseRules != "masturbation")>>
+					gets off during class, so being forbidden to masturbate doesn't affect her seriously.
+					<<set $slaves[$i].need -= 20>>
+				<<else>>
+					gets off during class, so she doesn't feel the need to masturbate frequently.
+					<<set $slaves[$i].need -= 20>>
+				<</if>>
+			<<else>>
+				<<if ($slaves[$i].releaseRules == "restrictive")>>
+					<<if ($slaves[$i].devotion <= 20) && ($slaves[$i].trust > -20)>>
+						refuses to come to you for sexual release, and is @@.gold;severely punished@@ for illicit masturbation.
+						<<set $slaves[$i].trust -= 2>>
+					<<elseif ($slaves[$i].devotion < 50)>>
+						<<if $slaves[$i].devotion <= 20>>
+							occasionally comes to you to beg for sexual release.
+						<<else>>
+							doesn't mind having to come to you to beg for sexual release.
+						<</if>>
+						<<saRulesPlayerEnergy>>
+					<<else>> /* $slaves[$i].devotion >= 50 */
+						willingly begs you to
+						<<saRulesPlayerFetishPlay>>
+						every chance she gets.
+						<<saRulesPlayerEnergy>>
+					<</if>> /* closes $slaves[$i].devotion >= 50 */
+					<<saRulesPlayerDiscoversFetish>>
+					<<saRulesPlayerDrugEffects>>
+				<<elseif ($slaves[$i].releaseRules == "masturbation")>>
+					<<if ($slaves[$i].devotion <= 20) && ($slaves[$i].trust > -20)>>
+						takes solace in her permission to masturbate rather than being forced to beg for sex, @@.mediumaquamarine;reducing her fear@@ of you.
+						<<set $slaves[$i].trust += 2, $slaves[$i].need = 0>>
+					<<elseif ($slaves[$i].devotion <= 20)>>
+						enjoys being allowed to masturbate rather than trading sex with other slaves, @@.mediumaquamarine;slightly reducing her fear@@ of you but @@.mediumorchid;allowing her to remain in control of her sexuality.@@
+						<<set $slaves[$i].trust += 1, $slaves[$i].devotion -= 1, $slaves[$i].need = 0>>
+					<<elseif ($slaves[$i].devotion < 50)>>
+						accepts having to relieve herself solely through masturbation.
+						<<set $slaves[$i].need = 0>>
+					<<elseif ($slaves[$i].devotion < 80)>>
+						is a little disappointed that she's limited to her hands and toys, but @@.mediumaquamarine;trusts you know what's best for her.@@ 
+						<<set $slaves[$i].trust += 1, $slaves[$i].need = 0>>
+					<<else>>
+						@@.mediumaquamarine;trusts your judgement@@ that only she really knows how to pleasure herself, though she @@.mediumorchid;often wonders why you don't use her.@@
+						<<set $slaves[$i].trust += 1, $slaves[$i].devotion -= 2, $slaves[$i].need = 0>>
+					<</if>>
+					<<if $slaves[$i].devotion > 20>>
+						When she does play with herself, she
+						<<saRulesMasturbationFetishPlay>>
+						<<saRulesMasturbationDiscoversFetish>>
+					<</if>>
+					<<saRulesMasturbationDrugEffects>>
+				<<else>> /* releaseRules not restrictive */
+					<<if ($universalRulesConsent == 0)>>
+						<<if ($slaves[$i].devotion <= 20) && ($slaves[$i].trust > -20)>>
+							<<if ($slaves[$i].releaseRules == "permissive")>>
+								masturbates whenever she can find a private moment to take care of the urges induced by the food, @@.mediumaquamarine;slightly reducing her fear@@ of you.
+								<<set $slaves[$i].trust += 1, $slaves[$i].need = 0>>
+							<<else>>
+								refuses to use other slaves to get off, and is @@.gold;severely punished@@ for illicit masturbation.
+								<<set $slaves[$i].trust -= 2, $slaves[$i].need -= 10>>
+							<</if>>
+						<<elseif ($slaves[$i].devotion <= 20)>>
+							<<if ($slaves[$i].releaseRules == "permissive")>>
+								prefers to masturbate rather than demanding sex from other slaves, @@.mediumaquamarine;slightly reducing her fear@@ of you.
+								<<set $slaves[$i].trust += 1, $slaves[$i].need = 0>>
+							<<else>>
+								is forced to demand sex from other slaves by the urges induced by the food, and @@.hotpink;hates herself@@ for it.
+								<<set $slaves[$i].devotion += 1, $slaves[$i].need *= 0.5>>
+							<</if>>
+						<<elseif ($slaves[$i].devotion < 50)>>
+							@@.hotpink;accepts the need@@ to
+							<<set $slaves[$i].devotion += 1, $slaves[$i].need = 0>>
+						<<else>>
+							happily @@.mediumaquamarine;avails herself@@ of your permission to
+							<<set $slaves[$i].trust += 1, $slaves[$i].need = 0>>
+						<</if>>
+						<<if $slaves[$i].devotion > 20>>
+							<<saRulesRapeFetish>>
+							<<saRulesRapeDiscoversFetish>>
+						<</if>>
+					<<else>> /* universalRulesConsent is not zero */
+						<<if ($slaves[$i].devotion <= 20) && ($slaves[$i].trust > -20)>>
+							<<if ($slaves[$i].releaseRules == "permissive")>>
+								prefers to masturbate rather than asking other slaves for sex, @@.mediumaquamarine;slightly reducing her fear@@ of you.
+								<<set $slaves[$i].trust += 1, $slaves[$i].need = 0>>
+							<<else>>
+								refuses to ask other slaves for sex, and is @@.gold;severely punished@@ for illicit masturbation.
+								<<set $slaves[$i].trust -= 2, $slaves[$i].need -= 10>>
+							<</if>>
+						<<elseif ($slaves[$i].devotion <= 20)>>
+							<<if ($slaves[$i].releaseRules == "permissive")>>
+								prefers to masturbate rather than trading sex with other slaves, @@.mediumaquamarine;slightly reducing her fear@@ of you.
+								<<set $slaves[$i].trust += 1, $slaves[$i].need = 0>>
+							<<else>>
+								is forced to swap sex with other slaves by the urges induced by the food, and @@.hotpink;hates herself@@ for it.
+								<<set $slaves[$i].devotion += 1, $slaves[$i].need *= 0.5>>
+							<</if>>
+						<<elseif ($slaves[$i].devotion < 50)>>
+							@@.hotpink;accepts having to ask@@ other slaves for sex,
+							<<set $slaves[$i].devotion += 1, $slaves[$i].need = 0>>
+						<<else>>
+							@@.mediumaquamarine;relies@@ on your other slaves for mutual satisfaction,
+							<<set $slaves[$i].trust += 1, $slaves[$i].need = 0>>
+						<</if>>
+						<<if $slaves[$i].devotion > 20>>
+							<<saRulesConsentFetish>>
+							<<saRulesConsentDiscoversFetish>>
+						<</if>>
+					<</if>> /* closes universalRulesConsent */
+					<<saRulesPermissiveDrugEffects>>
+				<</if>> /* closes releaseRules not restrictive */
+			<</if>>
+
+			<<if ($slaves[$i].devotion <= 20)>>
+				<<if $slaves[$i].voice == 0>>
+					Living as a mute @@.hotpink;molds her@@ to your will.
+					<<set $slaves[$i].devotion += 1>>
+				<<elseif $slaves[$i].lips > 95>>
+					Being unable to speak through her facepussy @@.hotpink;molds her@@ to your will.
+					<<set $slaves[$i].devotion += 1>>
+				<<elseif $slaves[$i].speechRules == "restrictive">>
+					Living under enforced silence @@.hotpink;molds her@@ to your will.
+					<<set $slaves[$i].devotion += 1>>
+				<</if>>
+			<</if>>
+
+			<<if ($slaves[$i].devotion <= 20)>>
+				The reasonable living conditions allow her to @@.mediumaquamarine;feel self-reliant.@@
+				<<set $slaves[$i].trust += 1>>
+			<<else>>
+				She likes her personal space in the dormitory even if the other students sometimes bother her.
+			<</if>>
+
+			<<if ($universalRulesConsent == 0)>>
+				<<if ($slaves[$i].devotion <= 20)>>
+					<<if ($slaves[$i].trust > -10)>>
+						<<if $SchlRiIDs.length > 2 || $Schoolteacher != 0>>
+							Under the rules, she finds herself constantly molested by other slaves, and lives her life constantly @@.gold;afraid.@@
+						<<else>>
+							Under the rules, she is free game for other slaves to molest, and lives her life constantly @@.gold;afraid@@ of the day more girls enroll in $schoolroomName.
+						<</if>>
+						<<set $slaves[$i].trust -= 2>>
+					<<else>>
+						<<if $SchlRiIDs.length > 2 || $Schoolteacher != 0>>
+							Under the rules, she finds herself constantly molested by other slaves, but she's already in such constant terror it doesn't seriously affect her.
+						<<else>>
+							Under the rules, she will someday find herself constantly molested by other slaves, but she's already in such constant terror it that it doesn't cross her mind.
+						<</if>>
+					<</if>>
+				<<elseif ($slaves[$i].releaseRules != "restrictive")>>
+					<<if ($slaves[$i].energy > 95)>>
+						<<if $SchlRiIDs.length > 2>>
+							Under the rules, she's allowed to demand that other slaves to get her off, and she @@.hotpink;adores@@ you for providing plentiful outlets for her nymphomania.
+						<<else>>
+							Under the rules, she's allowed to demand that other slaves to get her off, and she @@.hotpink;eagerly awaits@@ the day more girls enroll in $schoolroomName to get her off.
+						<</if>>
+						<<set $slaves[$i].devotion += 1>>
+					<<elseif ($slaves[$i].fetishKnown == 1) && ($slaves[$i].fetishStrength > 60)>>
+						<<if ($slaves[$i].fetish == "sadist")>>
+							<<if $SchlRiIDs.length > 2>>
+								Under the rules, she's allowed to sexually abuse other slaves, and she @@.hotpink;adores@@ you for providing a whole class of girls for her to rape.
+							<<else>>
+								Under the rules, she's allowed to sexually abuse other slaves, and she @@.hotpink;eagerly awaits@@ the day more girls enroll in $schoolroomName for her to rape.
+							<</if>>
+							<<set $slaves[$i].devotion += 1>>
+						<<elseif ($slaves[$i].fetish == "dom")>>
+							<<if $SchlRiIDs.length > 2>>
+								Under the rules, she's allowed to force other slaves to have sex with her, and she @@.hotpink;adores@@ you for providing a whole class of girls for her to dominate.
+							<<else>>
+								Under the rules, she's allowed to force other slaves to have sex with her, and she @@.hotpink;eagerly awaits@@ the day more girls enroll in $schoolroomName for her to dominate.
+							<</if>>
+							<<set $slaves[$i].devotion += 1>>
+						<</if>>
+					<</if>>
+				<</if>>
+			<<else>>
+				<<if ($slaves[$i].devotion <= 20) && ($slaves[$i].devotion >= -20)>>
+					<<if $SchlRiIDs.length > 2 || $Schoolteacher != 0>>
+						Since she's low in the slave hierarchy, @@.mediumaquamarine;she knows@@ that the rule that slaves must get consent before having sex with her are all that protect her from abuse.
+					<<else>>
+						Since she's low in the slave hierarchy, @@.mediumaquamarine;she knows@@ that the rule that slaves must get consent before having sex with her are all that protect her from abuse. Well, that and the fact $schoolroomName is rather empty.
+					<</if>>
+					<<set $slaves[$i].trust += 1>>
+				<</if>>
+			<</if>>
+
+			<<if ($slaves[$i].attrKnown == 0)>>
+				<<if ($week-$slaves[$i].weekAcquired > 4) && $slaves[$i].energy > 20>>
+					<<set $slaves[$i].attrKnown = 1>>
+					<<if $assistantName == "your personal assistant">>Your personal assistant<<else>>$assistantName<</if>> has been monitoring her as she services customers, analyzing her sexuality. It seems she is
+					<<saRulesAttractionDiscovery>>
+				<</if>>
+			<</if>>
+
+			<<if $slaves[$i].devotion > 50>>
+				She does her best for you, so she frequently deserves a reward and never needs to be punished.
+				<<set _punishments = 0>>
+				<<set _rewards = 3>>
+			<<elseif $slaves[$i].devotion > 20>>
+				She's obedient out of acceptance of her place, so she often deserves a reward and rarely needs to be punished.
+				<<set _punishments = 1>>
+				<<set _rewards = 2>>
+			<<elseif $slaves[$i].devotion >= -20>>
+				<<if $slaves[$i].trust < -20>>
+					She's obedient out of fear, so she only rarely deserves a reward and sometimes needs to be punished.
+					<<set _punishments = 1>>
+					<<set _rewards = 1>>
+				<<else>>
+					She's too trusting for obedience and often needs to be punished.
+					<<set _punishments = 2>>
+					<<set _rewards = 0>>
+				<</if>>
+			<<else>>
+				<<if $slaves[$i].trust < -50>>
+					She's only obedient out of terror, so she sometimes needs to be punished.
+					<<set _punishments = 1>>
+					<<set _rewards = 0>>
+				<<else>>
+					She hates you too much to obey, so she needs constant punishment.
+					<<set _punishments = 3>>
+					<<set _rewards = 0>>
+				<</if>>
+			<</if>>
+
+			<<if _rewards > 0>>
+				<<switch $slaves[$i].standardReward>>
+				<<case "relaxation">>
+					She's given free time, which she
+					<<if $spa != 0>>
+						usually spends in $spaName<<if $Attendant != 0>> enjoying $Attendant.slaveName's care<</if>>.
+					<<else>>
+						usually spends relaxing in her dorm room.
+					<</if>>
+					<<if $slaves[$i].relationship > 0>>
+						She often asks to save these breaks so she can spend them with her <<if $slaves[$i].relationship == 1>>friend<<elseif $slaves[$i].relationship == 2>>best friend<<elseif $slaves[$i].relationship == 3>>friend with benefits<<elseif $slaves[$i].relationship == 4>>sweetheart<<else>>wife<</if>>.
+					<</if>>
+					These breaks are @@.green;good for her.@@
+					<<set $slaves[$i].health += _rewards>>
+				<<case "drugs">>
+					She's @@.hotpink;rewarded@@ with hits of mild recreational drugs, which @@.red;isn't healthy,@@ but helps bind her to you strongly.
+					<<set $slaves[$i].health -= _rewards>>
+					<<set $slaves[$i].devotion += _rewards*2>>
+				<<case "orgasm">>
+					She's @@.hotpink;rewarded@@ with
+					<<if $slaves[$i].clitPiercing >= 3>>
+						sustained orgasm from her <<if $slaves[$i].dick == 0>>clit<<else>>dick<</if>> piercing,
+					<<elseif $activeSlave.releaseRules == "sapphic">>
+						immediate sex with any nearby slave,
+					<<else>>
+						a quick climax from a vibrator,
+					<</if>>
+					@@.green;boosting her libido.@@
+					<<if $slaves[$i].energy < 98>><<set $slaves[$i].energy += _rewards>><</if>>
+					<<set $slaves[$i].devotion += _rewards>>
+				<<default>>
+					She's @@.hotpink;rewarded@@
+					<<if (_punishments > 0) && ($slaves[$i].standardReward == "situational")>>
+						and @@.gold;punished@@
+					<</if>>
+					situationally, letting her develop normally.
+					<<set $slaves[$i].devotion += _rewards>>
+				<</switch>>
+			<</if>>
+			<<if _punishments > 0>>
+				<<switch $slaves[$i].standardPunishment>>
+				<<case "confinement">>
+					When she disobeys, she
+					<<if $cellblock != 0>>
+						@@.gold;spends after class in $cellblockName@@<<if $Wardeness != 0>>, where she can experience $Wardeness.slaveName's method of teaching<</if>>.
+					<<else>>
+						spends her off hours @@.gold;shut up in a box@@ until she behaves.
+					<</if>>
+					<<set $slaves[$i].trust -= _punishments>>
+				<<case "whipping">>
+					When she disobeys, she's @@.gold;whipped,@@ not hard enough to mark her, but hard enough to @@.red;hurt,@@ breaking her quickly.
+					<<set $slaves[$i].health -= _punishments>>
+					<<set $slaves[$i].trust -= 2*_punishments>>
+				<<case "chastity">>
+					When she disobeys, she finds her next client is into @@.gold;orgasm denial,@@ @@.red;reducing her libido@@ but breaking her to @@.hotpink;sexual obedience.@@
+					<<if $slaves[$i].energy > 2>><<set $slaves[$i].energy -= 2*_punishments>><</if>>
+					<<set $slaves[$i].devotion += _punishments>>
+					<<set $slaves[$i].trust -= _punishments>>
+				<<default>>
+					<<if (_rewards == 0) || ($slaves[$i].standardReward != "situational")>>
+						When she disobeys, she's @@.gold;punished@@ situationally, letting her develop normally.
+					<</if>>
+					<<set $slaves[$i].trust -= _punishments>>
+				<</switch>>
+			<</if>>
 		<<default>>
 			<<if $slaves[$i].devotion < -50>>
 				is so unhappy that she has little interest in getting off<<if ($slaves[$i].releaseRules != "permissive")>>, making the rule restricting her sexual outlets superfluous<</if>>.
diff --git a/src/uncategorized/schoolroomReport.tw b/src/uncategorized/schoolroomReport.tw
index 05c801dc552..515eb1a1791 100644
--- a/src/uncategorized/schoolroomReport.tw
+++ b/src/uncategorized/schoolroomReport.tw
@@ -28,6 +28,9 @@
 		<<set $slaves[_FLs].trust++>>
 	<</if>>
 	<<set $slaves[_FLs].devotion += _devBonus>>
+	<<if $slaves[_FLs].livingRules != "luxurious">>
+		<<set $slaves[_FLs].livingRules = "luxurious">>
+	<</if>>
 	<<if $slaves[_FLs].fetishStrength <= 95>>
 		<<if $slaves[_FLs].fetish != "dom">>
 			<<fetishChangeChance $slaves[_FLs]>>
@@ -134,6 +137,7 @@
 		''__@@.pink;$slaves[_FLs].slaveName@@__'' is serving as your Schoolteacher.
 		<br>&nbsp;&nbsp;&nbsp;
 		<<include "SA chooses own clothes">>
+		<<include "SA rules">>
 		<<include "SA diet">>
 		<<include "SA long term effects">>
 		<<include "SA drugs">>
@@ -143,6 +147,7 @@
 	<<else>>
 		<<silently>>
 		<<include "SA chooses own clothes">>
+		<<include "SA rules">>
 		<<include "SA diet">>
 		<<include "SA long term effects">>
 		<<include "SA drugs">>
@@ -167,6 +172,9 @@
 	<<elseif ($slaves[$i].health < 90)>>
 		<<set $slaves[$i].health += 3>>
 	<</if>>
+	<<if $slaves[$i].livingRules != "normal">>
+		<<set $slaves[$i].livingRules = "normal">>
+	<</if>>
 	/% Education done? Has to be here before we run the SA's or there will be double entries for slave %/
 	<<if ($slaves[$i].intelligenceImplant == 1)>>
 	<<if ($slaves[$i].voice == 0) || ($slaves[$i].accent <= 1) || (($schoolroomUpgradeLanguage == 0) && ($slaves[$i].accent <= 2))>>
@@ -204,6 +212,7 @@
 		<br>&nbsp;&nbsp;&nbsp;&nbsp;She <<include "SA take classes">>
 		<br>&nbsp;&nbsp;&nbsp;
 		<<include "SA chooses own clothes">>
+		<<include "SA rules">>
 		<<include "SA diet">>
 		<<include "SA long term effects">>
 		<<include "SA drugs">>
@@ -215,6 +224,7 @@
 		<<include "SA chooses own job">>
 		<<include "SA take classes">>
 		<<include "SA chooses own clothes">>
+		<<include "SA rules">>
 		<<include "SA diet">>
 		<<include "SA long term effects">>
 		<<include "SA drugs">>
diff --git a/src/utility/assignWidgets.tw b/src/utility/assignWidgets.tw
index af0d519412f..6ee3f988fc7 100644
--- a/src/utility/assignWidgets.tw
+++ b/src/utility/assignWidgets.tw
@@ -54,6 +54,7 @@
 			<<set $args[0].assignment = "serve in the master suite",    $args[0].assignmentVisible = 0, $masterSuiteSlaves++, $MastSiIDs.push(_wID)>>
 		<<case "learn in the schoolroom" "schoolroom">>
 			<<set $args[0].assignment = "learn in the schoolroom",      $args[0].assignmentVisible = 0, $schoolroomSlaves++, $SchlRiIDs.push(_wID)>>
+			<<set $args[0].livingRules = "normal">>
 		<<case "work as a servant" "servants' quarters" "servantsquarters">>
 			<<set $args[0].assignment = "work as a servant",            $args[0].assignmentVisible = 0, $servantsQuartersSlaves++, $ServQiIDs.push(_wID)>>
 		<<case "rest in the spa" "spa">>
-- 
GitLab