From 89d193482bcb41f8e409af256e53f3029478e74c Mon Sep 17 00:00:00 2001
From: Svornost <11434-svornost@users.noreply.gitgud.io>
Date: Sun, 12 Jan 2020 21:16:15 -0800
Subject: [PATCH] Fix logic for education of very dumb slaves and deeducation
 of very smart ones.  Now, the smarter they are, the faster they learn and the
 slower they unlearn, and the bonus always improves their chance of learning
 or unlearning depending on the goal of the schoolroom.  Added comments to
 make it clearer what's going on.

---
 src/endWeek/saTakeClasses.js | 30 +++++++++++++++---------------
 1 file changed, 15 insertions(+), 15 deletions(-)

diff --git a/src/endWeek/saTakeClasses.js b/src/endWeek/saTakeClasses.js
index dd2fc6c1e5f..4c49806a640 100644
--- a/src/endWeek/saTakeClasses.js
+++ b/src/endWeek/saTakeClasses.js
@@ -142,46 +142,46 @@ window.saTakeClasses = (function saServeThePublic() {
 	 */
 	function learningProgress(slave) {
 		if (V.schoolroomRemodelBimbo !== 1 || slave.assignment !== "learn in the schoolroom") {
-			if (slave.intelligence > 95) {
+			if (slave.intelligence > 95) { /* 200% education for brilliant */
 				learning += 2;
-			} else if (slave.intelligence > 50) {
+			} else if (slave.intelligence > 50) { /* normal for very smart */
 				learning++;
-			} else if (slave.intelligence > 15) {
+			} else if (slave.intelligence > 15) { /* 70% for smart */
 				if (jsRandom(1, 100) < 70) {
 					learning++;
 				}
-			} else if (slave.intelligence >= -15) {
+			} else if (slave.intelligence >= -15) { /* 50% for average */
 				if (jsRandom(1, 100) < 50) {
 					learning++;
 				}
-			} else {
+			} else { /* slow, very slow, and retards */
 				let slaveDensity = (50 + slave.intelligence);
-				if (V.schoolroomUpgradeRemedial === 1 && jsRandom(1, 100) < 50) {
+				if (V.schoolroomUpgradeRemedial === 1 && jsRandom(1, 100) < 50) { /* 50% chance to benefit from upgrade */
 					slaveDensity = 55;
 				}
-				if (jsRandom(1, 100) > slaveDensity) {
+				if (jsRandom(1, 100) < slaveDensity) { /* 55% with upgrade, [-50 to 34]% without, mapped from [-100 to -16] intelligence */
 					learning++;
 				}
 			}
 		} else {
-			if (slave.intelligence < -95) {
+			if (slave.intelligence < -95) { /* 200% de-education for retards */
 				learning += 2;
-			} else if (slave.intelligence < -50) {
+			} else if (slave.intelligence < -50) { /* normal for very slow */
 				learning++;
-			} else if (slave.intelligence < -15) {
+			} else if (slave.intelligence < -15) { /* 70% for slow */
 				if (jsRandom(1, 100) < 70) {
 					learning++;
 				}
-			} else if (slave.intelligence > 15) {
+			} else if (slave.intelligence <= 15) { /* 50% for average */
 				if (jsRandom(1, 100) < 50) {
 					learning++;
 				}
-			} else {
-				let slaveDensity = (-10 + slave.intelligence);
-				if (V.schoolroomUpgradeRemedial === 1 && jsRandom(1, 100) < 50) {
+			} else { /* smart, very smart, and brilliant */
+				let slaveDensity = (50 - slave.intelligence);
+				if (V.schoolroomUpgradeRemedial === 1 && jsRandom(1, 100) < 50) { /* 50% chance to benefit from upgrade */
 					slaveDensity = 55;
 				}
-				if (jsRandom(1, 100) < slaveDensity) {
+				if (jsRandom(1, 100) < slaveDensity) { /* 55% with upgrade, [-50 to 34]% without, mapped from [16 to 100] intelligence */
 					learning++;
 				}
 			}
-- 
GitLab