From 84a1e2ce4262f53a157df916f15093c29bcfd1b1 Mon Sep 17 00:00:00 2001
From: lowercasedonkey <lowercasedonkey@gmail.com>
Date: Mon, 12 Apr 2021 18:10:43 -0400
Subject: [PATCH] finish map work

---
 src/js/slaveCostJS.js | 245 +++++++++++++++++++++---------------------
 1 file changed, 125 insertions(+), 120 deletions(-)

diff --git a/src/js/slaveCostJS.js b/src/js/slaveCostJS.js
index 00e1f1fce8d..80e788b57e5 100644
--- a/src/js/slaveCostJS.js
+++ b/src/js/slaveCostJS.js
@@ -2275,7 +2275,7 @@ globalThis.FResultTooltip = function(slave, forSale = 0) {
  */
 globalThis.slaveCost = function(slave, isStartingSlave = false, followLaws = false, isSpecial = false) {
 	const milked = App.SlaveAssignment.getMilked(slave, 1.0, true);
-	const beauty = slaveCostBeauty(slave, isStartingSlave, followLaws, isSpecial);
+	const beauty = slaveCostBeauty(slave, isStartingSlave, followLaws, isSpecial).cost;
 	if ((milked.cash * 52) > beauty && !isStartingSlave) { // Arbitrarily, let's say their milk worth is what they would make in a year. Blocking starting slave for now because milk makes so much money, the estimation makes game start impossible.
 		return milked.cash * 52;
 	} else {
@@ -2296,7 +2296,7 @@ globalThis.slaveCostBeauty = (function() {
 	 * @param {boolean} isStartingSlave is the slave a "starting slave"
 	 * @param {boolean} followLaws Apply cost variations from enacted Slave Market Regulations
 	 * @param {boolean} isSpecial is this slave a special/hero slave
-	 * @returns {number}
+	 * @returns {Object}
 	 */
 	function slaveCost(slave, isStartingSlave, followLaws, isSpecial) {
 		arcology = V.arcologies[0];
@@ -2322,7 +2322,7 @@ globalThis.slaveCostBeauty = (function() {
 		if (isStartingSlave) {
 			calcStartingSlaveCost(slave);
 		}
-		return cost;
+		return {cost: cost, map: map};
 	}
 
 	/**
@@ -2330,32 +2330,32 @@ globalThis.slaveCostBeauty = (function() {
 	 */
 	function calcGenitalsCost(slave) {
 		if (slave.vagina === 0 && slave.counter.vaginal === 0) {
-			map.set(`virgin`, 0.2);
+			updateMultiplyer(`virgin`, 0.2);
 		}
 		if (slave.anus === 0 && slave.counter.anal === 0) {
-			map.set(`anal virgin`, 0.2);
+			updateMultiplyer(`anal virgin`, 0.2);
 		}
 		// Boosted these to 20% to account for the fact that it limits the skill that can be attained
 		if (slave.vagina > -1 && arcology.FSRestartSMR === 1) {
 			if (slave.dick > 0) {
 				if (slave.ovaries === 0 && slave.balls === 0) {
-					map.set(`castrated`, 0.8);
+					updateMultiplyer(`castrated`, 0.8);
 				}
 			}
 		} else if (slave.vagina > -1) {
 			if (slave.dick > 0) {
 				if (V.ui !== "start" || V.PC.dick === 0 || V.PC.vagina === -1) {
-					map.set(`dick`, 0.2);
+					updateMultiplyer(`dick`, 0.2);
 					if (slave.ovaries > 0) {
 						if (slave.balls > 0) {
-							map.set(`futa`, 0.8);
+							updateMultiplyer(`futa`, 0.8);
 						}
 					}
 				} else {
-					map.set(`dick`, 0.1);
+					updateMultiplyer(`dick`, 0.1);
 					if (slave.ovaries > 0) {
 						if (slave.balls > 0) {
-							map.set(`futa`, 0.2);
+							updateMultiplyer(`futa`, 0.2);
 						}
 					}
 				}
@@ -2370,20 +2370,20 @@ globalThis.slaveCostBeauty = (function() {
 	function calcDevotionTrustCost(slave, isSpecial) {
 		if (isSpecial === true) {
 			if (slave.devotion > 50) {
-				map.set(`special devotion`, slave.devotion / 200);
+				updateMultiplyer(`special devotion`, slave.devotion / 200);
 			}
 			if (slave.trust > 50) {
-				map.set(`special trust`, slave.trust / 200);
+				updateMultiplyer(`special trust`, slave.trust / 200);
 			}
 		} else {
-			map.set(`devotion`, slave.devotion / 200);
+			updateMultiplyer(`devotion`, slave.devotion / 200);
 			if (slave.devotion < -20) {
 				if (slave.trust > 0) {
-					map.set(`low devotion`, -slave.trust / 200);
+					updateMultiplyer(`low devotion`, -slave.trust / 200);
 				}
 			} else {
 				if (slave.trust > 0) {
-					map.set(`trusting devotion`, slave.trust / 200);
+					updateMultiplyer(`trusting devotion`, slave.trust / 200);
 				}
 			}
 		}
@@ -2394,31 +2394,31 @@ globalThis.slaveCostBeauty = (function() {
 	 */
 	function calcPreferencesCost(slave) {
 		if (slave.behavioralFlaw !== "none") {
-			map.set(`behavioral flaw`, -0.1);
+			updateMultiplyer(`behavioral flaw`, -0.1);
 		}
 		if (slave.behavioralQuirk !== "none") {
-			map.set(`behavioral quirk`, 0.1);
+			updateMultiplyer(`behavioral quirk`, 0.1);
 		}
 		if (slave.sexualFlaw === "breeder" && arcology.FSRepopulationFocus !== "unset") {
-			map.set(`sexual flaw, but a breeder`, 0.3);
+			updateMultiplyer(`sexual flaw, but a breeder`, 0.3);
 		} else if (slave.sexualFlaw !== "none") {
-			map.set(`sexual flaw`, -0.1);
+			updateMultiplyer(`sexual flaw`, -0.1);
 		}
 		if (slave.sexualQuirk !== "none") {
-			map.set(`sexual quirk`, 0.1);
+			updateMultiplyer(`sexual quirk`, 0.1);
 		}
 		if (slave.fetishKnown === 1) {
 			if (slave.fetish === "mindbroken") {
-				map.set(`mindbroken`, -0.3);
+				updateMultiplyer(`mindbroken`, -0.3);
 			} else if (slave.fetish !== "none") {
-				map.set(`fetish`, slave.fetishStrength / 1000);
+				updateMultiplyer(`fetish`, slave.fetishStrength / 1000);
 			}
 		} else {
-			map.set(`unknown fetish`, -0.1);
+			updateMultiplyer(`unknown fetish`, -0.1);
 		}
 		if (slave.attrKnown === 1) {
 			if (slave.energy > 95) {
-				map.set(`high attraction`, 0.2);
+				updateMultiplyer(`high attraction`, 0.2);
 			}
 		}
 	}
@@ -2428,37 +2428,37 @@ globalThis.slaveCostBeauty = (function() {
 	 */
 	function calcPregCost(slave) {
 		if (slave.mpreg === 1) {
-			map.set(`mpreg`, 0.2);
+			updateMultiplyer(`mpreg`, 0.2);
 		}
 		if (arcology.FSRepopulationFocusSMR === 1) {
 			if (slave.preg < -1) {
-				map.set(`repop sterile`, -0.5);
+				updateMultiplyer(`repop sterile`, -0.5);
 			} else if (slave.bellyPreg >= 300000) {
-				map.set(`repop mega preg`, 1);
+				updateMultiplyer(`repop mega preg`, 1);
 			} else if (slave.bellyPreg >= 120000) {
-				map.set(`repop very preg`, 0.5);
+				updateMultiplyer(`repop very preg`, 0.5);
 			} else if (slave.preg > slave.pregData.normalBirth / 4) {
-				map.set(`repop showing`, 0.1);
+				updateMultiplyer(`repop showing`, 0.1);
 			}
 		} else if (arcology.FSRestartSMR === 1) {
 			if (slave.preg < -1) {
-				map.set(`restart  sterile`, 0.5);
+				updateMultiplyer(`restart  sterile`, 0.5);
 			} else if (slave.bellyPreg >= 300000) {
-				map.set(`restart mega preg`, -2.5);
+				updateMultiplyer(`restart mega preg`, -2.5);
 			} else if (slave.bellyPreg >= 30000) {
-				map.set(`restart very preg`, -1.5);
+				updateMultiplyer(`restart very preg`, -1.5);
 			} else if (slave.preg > slave.pregData.normalBirth / 4) {
-				map.set(`restart showing`, -1.0);
+				updateMultiplyer(`restart showing`, -1.0);
 			}
 		} else {
 			if (slave.preg < -1) {
-				map.set(`sterile`, -0.1);
+				updateMultiplyer(`sterile`, -0.1);
 			} else if (slave.bellyPreg >= 300000) {
-				map.set(`mega preg`, -1.5);
+				updateMultiplyer(`mega preg`, -1.5);
 			} else if (slave.bellyPreg >= 120000) {
-				map.set(`very preg`, -0.5);
+				updateMultiplyer(`very preg`, -0.5);
 			} else if (slave.bellyPreg >= 500 || slave.pregKnown === 1) {
-				map.set(`restart showing`, -0.1);
+				updateMultiplyer(`restart showing`, -0.1);
 			}
 		}
 	}
@@ -2468,14 +2468,14 @@ globalThis.slaveCostBeauty = (function() {
 	 */
 	function calcPrestigeCost(slave) {
 		if (slave.prestige > 0) {
-			map.set(`prestige`, 0.7 * slave.prestige);
+			updateMultiplyer(`prestige`, 0.7 * slave.prestige);
 		}
 		if (slave.porn.prestige === 3) {
-			map.set(`porn prestige`, 1.5);
+			updateMultiplyer(`porn prestige`, 1.5);
 		} else if (slave.porn.prestige === 2) {
-			map.set(`porn prestige`, 0.7);
+			updateMultiplyer(`porn prestige`, 0.7);
 		} else if (slave.porn.prestige === 1) {
-			map.set(`porn prestige`, 0.2);
+			updateMultiplyer(`porn prestige`, 0.2);
 		}
 	}
 
@@ -2485,86 +2485,86 @@ globalThis.slaveCostBeauty = (function() {
 	function calcFSCost(slave) {
 		if (arcology.FSSupremacistLawME !== 0) {
 			if (slave.race !== arcology.FSSupremacistRace) {
-				map.set(`supremacist race`, -0.1);
+				updateMultiplyer(`supremacist race`, -0.1);
 			}
 		}
 		if (arcology.FSSubjugationistLawME !== 0) {
 			if (slave.race === arcology.FSSubjugationistRace) {
-				map.set(`subjugationist race`, -0.2);
+				updateMultiplyer(`subjugationist race`, -0.2);
 			}
 		}
 		if (V.seeCats === 1 && slave.race === "catgirl") {
 			if (arcology.FSBodyPurist === "unset" && V.projectN.techReleased === 1) {
-				map.set(`catgirl`, 0.5);
+				updateMultiplyer(`catgirl`, 0.5);
 			} else if (arcology.FSBodyPurist === "unset" && V.projectN.techReleased === 0) {
-				map.set(`catgirl`, 0.9);
+				updateMultiplyer(`catgirl`, 0.9);
 			} else if (arcology.FSBodyPurist !== "unset" && arcology.FSBodyPuristCatLaw === 0) {
-				map.set(`catgirl`, -0.5);
+				updateMultiplyer(`catgirl`, -0.5);
 			} else if (arcology.FSBodyPurist !== "unset" && arcology.FSBodyPuristCatLaw === 1 && V.projectN.techreleased === 1) {
-				map.set(`catgirl`, 0.5);
+				updateMultiplyer(`catgirl`, 0.5);
 			} else if (arcology.FSBodyPurist !== "unset" && arcology.FSBodyPuristCatLaw === 1 && V.projectN.techreleased === 0) {
-				map.set(`catgirl`, 0.9);
+				updateMultiplyer(`catgirl`, 0.9);
 			}
 			if (arcology.FSEgyptianRevivalist !== "unset") {
-				map.set(`egyptian catgirl`, 0.2);
+				updateMultiplyer(`egyptian catgirl`, 0.2);
 			}
 			if (arcology.FSTransformationFetishist !== "unset") {
-				map.set(`transformation catgirl`, 0.2);
+				updateMultiplyer(`transformation catgirl`, 0.2);
 			}
 		}
 		if (arcology.FSRepopulationFocusSMR !== 0) {
 			if (slave.preg > 0) {
-				map.set(`repopulation preg`, 0.1);
+				updateMultiplyer(`repopulation preg`, 0.1);
 			}
 		} else if (arcology.FSRestartSMR !== 0) {
 			if (slave.dick > 0) {
-				map.set(`restart smr dick`, -0.1);
+				updateMultiplyer(`restart smr dick`, -0.1);
 			}
 			if (slave.balls > 0) {
-				map.set(`restart smr balls`, -0.2);
+				updateMultiplyer(`restart smr balls`, -0.2);
 			}
 			if (slave.vagina > 0) {
-				map.set(`restart smr vagina`, -0.1);
+				updateMultiplyer(`restart smr vagina`, -0.1);
 			}
 			if (slave.ovaries > 0) {
-				map.set(`restart smr ovaries`, -0.5);
+				updateMultiplyer(`restart smr ovaries`, -0.5);
 			}
 		}
 		if (arcology.FSGenderFundamentalistSMR !== 0) {
 			if (slave.dick > 0) {
-				map.set(`gender fundamentalist smr dick`, -0.1);
+				updateMultiplyer(`gender fundamentalist smr dick`, -0.1);
 			}
 			if (slave.balls > 0) {
-				map.set(`gender fundamentalist smr balls`, -0.1);
+				updateMultiplyer(`gender fundamentalist smr balls`, -0.1);
 			}
 		} else if (arcology.FSGenderRadicalist !== "unset") {
 			if (slave.dick > 0) {
-				map.set(`gender radicalist dick`, 0.1);
+				updateMultiplyer(`gender radicalist dick`, 0.1);
 			}
 			if (slave.balls > 0 && arcology.FSGenderRadicalistLawFuta !== 2 && arcology.FSGenderRadicalistLawFuta !== 4) {
-				map.set(`gender radicalist balls`, -0.1);
+				updateMultiplyer(`gender radicalist balls`, -0.1);
 			}
 		}
 		if (arcology.FSPetiteAdmirationSMR !== 0 || arcology.FSStatuesqueGlorificationSMR !== 0) {
 			if (heightPass(slave)) {
-				map.set(`petite admiration smr`, 0.1);
+				updateMultiplyer(`petite admiration smr`, 0.1);
 			} else {
-				map.set(`petite admiration smr`, -0.1);
+				updateMultiplyer(`petite admiration smr`, -0.1);
 			}
 		}
 		if (arcology.FSSlaveProfessionalism !== "unset") {
-			map.set(`slave professionalism`, 0.1 * (slave.intelligence / 20));
+			updateMultiplyer(`slave professionalism`, 0.1 * (slave.intelligence / 20));
 		}
 		if (arcology.FSHedonisticDecadenceSMR !== 0) {
 			if (slave.weight > 60 && slave.muscles < 5) {
-				map.set(`hedonistic decadence smr`, 0.1);
+				updateMultiplyer(`hedonistic decadence smr`, 0.1);
 			}
 		}
 		if (arcology.FSArabianRevivalist > 50) {
-			map.set(`arabian revivalist`, 0.1);
+			updateMultiplyer(`arabian revivalist`, 0.1);
 		}
 		if (arcology.FSNeoImperialist > 40) {
-			map.set(`neo imperialist`, 0.1);
+			updateMultiplyer(`neo imperialist`, 0.1);
 		}
 	}
 
@@ -2574,21 +2574,21 @@ globalThis.slaveCostBeauty = (function() {
 	function calcAgeCost(slave) {
 		if (slave.physicalAge === V.minimumSlaveAge && slave.physicalAge === V.fertilityAge && canGetPregnant(slave) && (arcology.FSRepopulationFocus !== "unset" || arcology.FSGenderFundamentalist !== "unset")) {
 			if (slave.birthWeek === 0) {
-				map.set(`birthWeek`, 0.4);
+				updateMultiplyer(`birthWeek`, 0.4);
 			} else if (slave.birthWeek < 4) {
-				map.set(`birthWeek`, 0.1);
+				updateMultiplyer(`birthWeek`, 0.1);
 			}
 		} else if (slave.physicalAge === V.minimumSlaveAge) {
 			if (slave.birthWeek === 0) {
-				map.set(`birthWeek`, 0.2);
+				updateMultiplyer(`birthWeek`, 0.2);
 			} else if (slave.birthWeek < 4) {
-				map.set(`birthWeek`, 0.05);
+				updateMultiplyer(`birthWeek`, 0.05);
 			}
 		} else if (slave.physicalAge === V.fertilityAge && canGetPregnant(slave) && (arcology.FSRepopulationFocus !== "unset" || arcology.FSGenderFundamentalist !== "unset")) {
 			if (slave.birthWeek === 0) {
-				map.set(`birthWeek`, 0.2);
+				updateMultiplyer(`birthWeek`, 0.2);
 			} else if (slave.birthWeek < 4) {
-				map.set(`birthWeek`, 0.05);
+				updateMultiplyer(`birthWeek`, 0.05);
 			}
 		}
 	}
@@ -2599,102 +2599,102 @@ globalThis.slaveCostBeauty = (function() {
 	function calcCareersCost(slave) {
 		if (slave.career !== 0) {
 			if (slave.career === "a slave") {
-				map.set(`career`, 0.1);
+				updateMultiplyer(`career`, 0.1);
 			} else if (App.Data.Careers.Leader.bodyguard.includes(slave.career)) {
-				map.set(`career`, 0.1);
+				updateMultiplyer(`career`, 0.1);
 			} else if (App.Data.Careers.Leader.wardeness.includes(slave.career)) {
-				map.set(`career`, 0.1);
+				updateMultiplyer(`career`, 0.1);
 			} else if (App.Data.Careers.Leader.attendant.includes(slave.career)) {
-				map.set(`career`, 0.1);
+				updateMultiplyer(`career`, 0.1);
 			} else if (App.Data.Careers.Leader.nurse.includes(slave.career)) {
-				map.set(`career`, 0.1);
+				updateMultiplyer(`career`, 0.1);
 			} else if (App.Data.Careers.Leader.matron.includes(slave.career)) {
-				map.set(`career`, 0.1);
+				updateMultiplyer(`career`, 0.1);
 			} else if (App.Data.Careers.Leader.schoolteacher.includes(slave.career)) {
-				map.set(`career`, 0.1);
+				updateMultiplyer(`career`, 0.1);
 			} else if (App.Data.Careers.Leader.stewardess.includes(slave.career)) {
-				map.set(`career`, 0.1);
+				updateMultiplyer(`career`, 0.1);
 			} else if (App.Data.Careers.Leader.milkmaid.includes(slave.career)) {
-				map.set(`career`, 0.1);
+				updateMultiplyer(`career`, 0.1);
 			} else if (App.Data.Careers.Leader.farmer.includes(slave.career)) {
-				map.set(`career`, 0.1);
+				updateMultiplyer(`career`, 0.1);
 			} else if (App.Data.Careers.Leader.madam.includes(slave.career)) {
-				map.set(`career`, 0.1);
+				updateMultiplyer(`career`, 0.1);
 			} else if (App.Data.Careers.Leader.DJ.includes(slave.career)) {
-				map.set(`career`, 0.1);
+				updateMultiplyer(`career`, 0.1);
 			} else if (App.Data.Careers.Leader.HG.includes(slave.career)) {
-				map.set(`career`, 0.1);
+				updateMultiplyer(`career`, 0.1);
 			} else if (App.Data.Careers.Leader.recruiter.includes(slave.career)) {
-				map.set(`career`, 0.1);
+				updateMultiplyer(`career`, 0.1);
 			} else if (App.Data.Careers.General.entertainment.includes(slave.career)) {
-				map.set(`career`, 0.05);
+				updateMultiplyer(`career`, 0.05);
 			} else if (App.Data.Careers.General.whore.includes(slave.career)) {
-				map.set(`career`, 0.05);
+				updateMultiplyer(`career`, 0.05);
 			} else if (App.Data.Careers.General.grateful.includes(slave.career)) {
-				map.set(`career`, 0.05);
+				updateMultiplyer(`career`, 0.05);
 			} else if (App.Data.Careers.General.menial.includes(slave.career)) {
-				map.set(`career`, 0.05);
+				updateMultiplyer(`career`, 0.05);
 			} else if (App.Data.Careers.General.servant.includes(slave.career)) {
-				map.set(`career`, 0.05);
+				updateMultiplyer(`career`, 0.05);
 			}
 		}
 		if (V.week - slave.weekAcquired >= 20 && slave.skill.entertainment >= 100) {
 			if (!App.Data.Careers.General.entertainment.includes(slave.career)) {
-				map.set(`entertainment career`, 0.05);
+				updateMultiplyer(`entertainment career`, 0.05);
 			}
 		}
 		if (slave.counter.oral + slave.counter.anal + slave.counter.vaginal + slave.counter.mammary + slave.counter.penetrative > 1000) {
 			if (!App.Data.Careers.General.whore.includes(slave.career)) {
-				map.set(`whore career`, 0.05);
+				updateMultiplyer(`whore career`, 0.05);
 			}
 		}
 		if (!App.Data.Careers.Leader.bodyguard.includes(slave.career) && slave.skill.bodyguard >= V.masteredXP) {
-			map.set(`good bodyguard`, 0.1);
+			updateMultiplyer(`good bodyguard`, 0.1);
 		}
 		if (!App.Data.Careers.Leader.wardeness.includes(slave.career) && slave.skill.wardeness >= V.masteredXP) {
-			map.set(`good wardeness`, 0.1);
+			updateMultiplyer(`good wardeness`, 0.1);
 		}
 		if (!App.Data.Careers.Leader.attendant.includes(slave.career) && slave.skill.attendant >= V.masteredXP) {
-			map.set(`good attendant`, 0.1);
+			updateMultiplyer(`good attendant`, 0.1);
 		}
 		if (!App.Data.Careers.Leader.nurse.includes(slave.career) && slave.skill.nurse >= V.masteredXP) {
-			map.set(`good nurse`, 0.1);
+			updateMultiplyer(`good nurse`, 0.1);
 		}
 		if (!App.Data.Careers.Leader.matron.includes(slave.career) && slave.skill.matron >= V.masteredXP) {
-			map.set(`good matron`, 0.1);
+			updateMultiplyer(`good matron`, 0.1);
 		}
 		if (!App.Data.Careers.Leader.schoolteacher.includes(slave.career) && slave.skill.teacher >= V.masteredXP) {
-			map.set(`good teacher`, 0.1);
+			updateMultiplyer(`good teacher`, 0.1);
 		}
 		if (!App.Data.Careers.Leader.stewardess.includes(slave.career) && slave.skill.stewardess >= V.masteredXP) {
-			map.set(`good stewardess`, 0.1);
+			updateMultiplyer(`good stewardess`, 0.1);
 		}
 		if (!App.Data.Careers.Leader.milkmaid.includes(slave.career) && slave.skill.milkmaid >= V.masteredXP) {
-			map.set(`good milkmaid`, 0.1);
+			updateMultiplyer(`good milkmaid`, 0.1);
 		}
 		if (!App.Data.Careers.Leader.farmer.includes(slave.career) && slave.skill.farmer >= V.masteredXP) {
-			map.set(`good farmer`, 0.1);
+			updateMultiplyer(`good farmer`, 0.1);
 		}
 		if (!App.Data.Careers.Leader.madam.includes(slave.career) && slave.skill.madam >= V.masteredXP) {
-			map.set(`good madam`, 0.1);
+			updateMultiplyer(`good madam`, 0.1);
 		}
 		if (!App.Data.Careers.Leader.DJ.includes(slave.career) && slave.skill.DJ >= V.masteredXP) {
-			map.set(`good DJ`, 0.1);
+			updateMultiplyer(`good DJ`, 0.1);
 		}
 		if (!App.Data.Careers.Leader.HG.includes(slave.career) && slave.skill.headGirl >= V.masteredXP) {
-			map.set(`good headGirl`, 0.1);
+			updateMultiplyer(`good headGirl`, 0.1);
 		}
 		if (!App.Data.Careers.Leader.recruiter.includes(slave.career) && slave.skill.recruiter >= V.masteredXP) {
-			map.set(`good recruiter`, 0.1);
+			updateMultiplyer(`good recruiter`, 0.1);
 		}
 		if (!App.Data.Careers.General.servant.includes(slave.career) && slave.skill.servant >= V.masteredXP) {
-			map.set(`good servant`, 0.05);
+			updateMultiplyer(`good servant`, 0.05);
 		}
 		if (!App.Data.Careers.General.entertainment.includes(slave.career) && slave.skill.entertainer >= V.masteredXP) {
-			map.set(`good entertainer`, 0.05);
+			updateMultiplyer(`good entertainer`, 0.05);
 		}
 		if (!App.Data.Careers.General.whore.includes(slave.career) && slave.skill.whore >= V.masteredXP) {
-			map.set(`good whore`, 0.05);
+			updateMultiplyer(`good whore`, 0.05);
 		}
 	}
 
@@ -2705,24 +2705,24 @@ globalThis.slaveCostBeauty = (function() {
 		const totalInt = Math.clamp(slave.intelligence + slave.intelligenceImplant, -130, 130);
 		/* make absolutely certain we do not use +-131 in the next line
 		 */
-		multiplier += Math.floor((Math.asin(totalInt / 131)) * 50) / 50;
+		updateMultiplyer(`fix`, Math.floor((Math.asin(totalInt / 131)) * 50) / 50);
 		if (slave.pubertyXY === 0 && slave.physicalAge >= V.potencyAge && slave.genes === "XY" && arcology.FSGenderRadicalist === "unset") {
-			map.set(`child`, 0.5);
+			updateMultiplyer(`child`, 0.5);
 		}
 		if (slave.geneticQuirks.albinism === 2) {
-			map.set(`albanism`, 0.2);
+			updateMultiplyer(`albanism`, 0.2);
 		}
 		if (V.rep > 10000) {
-			map.set(`high rep brand`, 0.1 * (Object.getOwnPropertyNames(slave.brand).length));
+			updateMultiplyer(`high rep brand`, 0.1 * (Object.getOwnPropertyNames(slave.brand).length));
 		} else if (V.rep < 5000) {
-			map.set(`low rep brand`, -0.1 * (Object.getOwnPropertyNames(slave.brand).length));
+			updateMultiplyer(`low rep brand`, -0.1 * (Object.getOwnPropertyNames(slave.brand).length));
 		}
-		map.set(`limbs`, -getLimbCount(slave, 0) * 0.05);
+		updateMultiplyer(`limbs`, -getLimbCount(slave, 0) * 0.05);
 		if (!canSee(slave)) {
-			map.set(`vision`, -0.2);
+			updateMultiplyer(`vision`, -0.2);
 		}
 		if (slave.hears === -2) {
-			map.set(`hearing`, -0.1);
+			updateMultiplyer(`hearing`, -0.1);
 		}
 	}
 
@@ -2731,13 +2731,13 @@ globalThis.slaveCostBeauty = (function() {
 	 */
 	function calcIndentureCost(slave) {
 		if (slave.indenture > -1) {
-			map.set(`indenture level`, -0.1 * slave.indentureRestrictions);
-			map.set(`indenture time`, -(260 - slave.indenture) / 260);
+			updateMultiplyer(`indenture level`, -0.1 * slave.indentureRestrictions);
+			updateMultiplyer(`indenture time`, -(260 - slave.indenture) / 260);
 		} else if (V.seeAge === 1 && slave.actualAge >= (V.retirementAge - 5)) {
 			if (V.policies.retirement.physicalAgePolicy === 0) {
-				multiplier *= (V.retirementAge - slave.actualAge) / 5;
+				updateMultiplyer(`retire`, ((V.retirementAge - slave.actualAge) / 5) - multiplier);
 			} else {
-				multiplier *= (V.retirementAge - slave.physicalAge) / 5;
+				updateMultiplyer(`retire`, ((V.retirementAge - slave.physicalAge) / 5) - multiplier);
 			}
 		}
 	}
@@ -2813,6 +2813,11 @@ globalThis.slaveCostBeauty = (function() {
 		}
 	}
 
+	function updateMultiplyer(string, value) {
+		map.set(string, value);
+		multiplier += value;
+	}
+
 	return slaveCost;
 })();
 
-- 
GitLab