From 79072442c098f4bd66614378e037a62f30d599f7 Mon Sep 17 00:00:00 2001
From: Jones <Jones>
Date: Thu, 28 Nov 2019 12:32:53 +0100
Subject: [PATCH] balance and visitors

---
 src/init/storyInit.tw                       |  2 +-
 src/js/datatypeCleanupJS.js                 |  6 +++---
 src/js/economyJS.js                         | 12 ++++++------
 src/uncategorized/slaveAssignmentsReport.tw | 10 ++++++----
 4 files changed, 16 insertions(+), 14 deletions(-)

diff --git a/src/init/storyInit.tw b/src/init/storyInit.tw
index cf04ec7c44e..36c1c8c582f 100644
--- a/src/init/storyInit.tw
+++ b/src/init/storyInit.tw
@@ -827,7 +827,7 @@ You should have received a copy of the GNU General Public License along with thi
 /* Slave sexual services and goods variables */
 <<set $publicFuckdolls = 0>>
 <<set $classSatisfied = {lowerClass: 0, middleClass: 0, upperClass: 0, topClass: 0}>>
-<<set $whoreBudget = {lowerClass: 10, middleClass: 50, upperClass: 250, topClass: 1500}>>
+<<set $whoreBudget = {lowerClass: 7, middleClass: 40, upperClass: 200, topClass: 1500}>>
 <<set $arcadePrice = 2>>
 <<set $clubSlaveSexAmount = 0>>
 
diff --git a/src/js/datatypeCleanupJS.js b/src/js/datatypeCleanupJS.js
index 0ae81158ca9..314942b1a0c 100644
--- a/src/js/datatypeCleanupJS.js
+++ b/src/js/datatypeCleanupJS.js
@@ -1665,17 +1665,17 @@ window.EconomyDatatypeCleanup = function EconomyDatatypeCleanup() {
 	if (V.whoreBudget.lowerClass) {
 		V.whoreBudget.lowerClass = Math.max(+V.whoreBudget.lowerClass, 8) || 10;
 	} else {
-		V.whoreBudget.lowerClass = (0.8 + (V.rent.lowerClass / V.rentDefaults.lowerClass) / 5) * 10;
+		V.whoreBudget.lowerClass = (0.8 + (V.rent.lowerClass / V.rentDefaults.lowerClass) / 5) * 7;
 	}
 	if (V.whoreBudget.middleClass) {
 		V.whoreBudget.middleClass = Math.max(+V.whoreBudget.middleClass, 40) || 50;
 	} else {
-		V.whoreBudget.middleClass = (0.8 + (V.rent.middleClass / V.rentDefaults.middleClass) / 5) * 50;
+		V.whoreBudget.middleClass = (0.8 + (V.rent.middleClass / V.rentDefaults.middleClass) / 5) * 40;
 	}
 	if (V.whoreBudget.upperClass) {
 		V.whoreBudget.upperClass = Math.max(+V.whoreBudget.upperClass, 200) || 250;
 	} else {
-		V.whoreBudget.upperClass = (0.8 + (V.rent.upperClass / V.rentDefaults.upperClass) / 5) * 250;
+		V.whoreBudget.upperClass = (0.8 + (V.rent.upperClass / V.rentDefaults.upperClass) / 5) * 200;
 	}
 	if (V.whoreBudget.topClass) {
 		V.whoreBudget.topClass = Math.max(+V.whoreBudget.topClass, 1200) || 1500;
diff --git a/src/js/economyJS.js b/src/js/economyJS.js
index 1925fa87130..29c91f52313 100644
--- a/src/js/economyJS.js
+++ b/src/js/economyJS.js
@@ -1598,16 +1598,16 @@ window.slaveJobValues = function() {
 				slaveJobValues.brothel.topClass += Math.min(s.sexAmount * s.sexQuality, s.sexAmount * V.whoreBudget.topClass * 0.2); // Registering the job value in the right slot
 			} else if (s.effectiveWhoreClass === 3) {
 				s.sexAmount = normalRandInt(60, 5);
-				s.sexQuality = Math.min(Math.trunc((income * 1.05) / s.sexAmount), V.whoreBudget.upperClass * 0.5); // The upper class will pay a maximum of 0.5 times their weekly budget per service
-				slaveJobValues.brothel.upperClass += Math.min(s.sexAmount * s.sexQuality, s.sexAmount * V.whoreBudget.upperClass * 0.5);
+				s.sexQuality = Math.min(Math.trunc((income * 1.05) / s.sexAmount), V.whoreBudget.upperClass * 0.5); // The upper class will pay a maximum of 60% of their weekly budget per service
+				slaveJobValues.brothel.upperClass += Math.min(s.sexAmount * s.sexQuality, s.sexAmount * V.whoreBudget.upperClass * 0.6);
 			} else if (s.effectiveWhoreClass === 2) {
 				s.sexAmount = normalRandInt(70, 6);
-				s.sexQuality = Math.min(Math.trunc((income * 0.9) / s.sexAmount), V.whoreBudget.middleClass); // The middle class will pay a maximum of their weekly budget per service
-				slaveJobValues.brothel.middleClass += Math.min(s.sexAmount * s.sexQuality, s.sexAmount * V.whoreBudget.middleClass);
+				s.sexQuality = Math.min(Math.trunc((income * 0.9) / s.sexAmount), V.whoreBudget.middleClass); // The middle class will pay a maximum of 125% of their weekly budget per service
+				slaveJobValues.brothel.middleClass += Math.min(s.sexAmount * s.sexQuality, s.sexAmount * V.whoreBudget.middleClass * 1.25);
 			} else {
 				s.sexAmount = normalRandInt(80, 7);
-				s.sexQuality = Math.clamp((income * 0.75) / s.sexAmount, 2, V.whoreBudget.lowerClass * 2); // The lower class will pay a maximum of 2 times their weekly budget per service and a minimum of 3
-				slaveJobValues.brothel.lowerClass += Math.min(s.sexAmount * s.sexQuality, s.sexAmount * V.whoreBudget.lowerClass * 2);
+				s.sexQuality = Math.clamp((income * 0.75) / s.sexAmount, 2, V.whoreBudget.lowerClass * 2); // The lower class will pay a maximum of 300% of their weekly budget per service and a minimum of 3
+				slaveJobValues.brothel.lowerClass += Math.min(s.sexAmount * s.sexQuality, s.sexAmount * V.whoreBudget.lowerClass * 3);
 			}
 		}
 
diff --git a/src/uncategorized/slaveAssignmentsReport.tw b/src/uncategorized/slaveAssignmentsReport.tw
index c2bd05da4c4..81392e2f521 100644
--- a/src/uncategorized/slaveAssignmentsReport.tw
+++ b/src/uncategorized/slaveAssignmentsReport.tw
@@ -19,13 +19,13 @@
 Depending on the conditions they may derive more or less 'utility' out of their credits spent
 i.e. a highly paternalist arcology with little choice for its lower class but Fuckdolls may still put money into them but not get the same satisfaction out of it*/
 /*Low rent increases demand/available money for sexual services, high rent decreases it*/
-<<set _lowerClassSexDemand = $lowerClass * $whoreBudget.lowerClass,
+<<set _lowerClassSexDemand = Math.trunc($lowerClass * $whoreBudget.lowerClass),
 _lowerClassSexDemandRef = Math.max(_lowerClassSexDemand, 1),
-_middleClassSexDemand = $middleClass * $whoreBudget.middleClass,
+_middleClassSexDemand = Math.trunc($middleClass * $whoreBudget.middleClass),
 _middleClassSexDemandRef = Math.max(_middleClassSexDemand, 1),
-_upperClassSexDemand = $upperClass * $whoreBudget.upperClass,
+_upperClassSexDemand = Math.trunc($upperClass * $whoreBudget.upperClass),
 _upperClassSexDemandRef = Math.max(_upperClassSexDemand, 1),
-_topClassSexDemand = $topClass * $whoreBudget.topClass,
+_topClassSexDemand = Math.trunc($topClass * $whoreBudget.topClass),
 _topClassSexDemandRef = Math.max(_topClassSexDemand, 1),
 _visitorsSexDemand = Math.trunc($visitors) * 40,
 $whorePriceAdjustment = {lowerClass: 0, middleClass: 0, upperClass: 0, topClass: 0},
@@ -96,6 +96,8 @@ _middleClassClubRatio = (_middleClassSexDemand + _visitorsSexDemand) / _clubDema
 	<<set _lowerClassSexDemand -= Math.trunc($slaveJobValues.club * $slaveJobValues.clubSP * (_lowerClassSexDemand / _clubDemand)),
 	_middleClassSexDemand -= Math.trunc($slaveJobValues.club * $slaveJobValues.clubSP * (_middleClassSexDemand / _clubDemand)),
 	_visitorsSexDemand -= Math.trunc($slaveJobValues.club * $slaveJobValues.clubSP * (_visitorsSexDemand / _clubDemand))>>
+	<<set _middleClassSexDemand += Math.trunc(0.5 * _visitorsSexDemand),
+	_upperClassSexDemand += Math.trunc(0.5* _visitorsSexDemand)>> /*Let's not forget about leftover visitor sex demand and add it to middle and upper class*/
 <<else>>
 	<<set _lowerClassSexDemand = 0,
 	_middleClassSexDemand = 0,
-- 
GitLab