diff --git a/src/js/slaveCostJS.js b/src/js/slaveCostJS.js index 68d08bae4099c357f9d14a5d806d6f2f1e5dd0c0..00e1f1fce8da29efe099e1465d3aea9ec7c9b0ba 100644 --- a/src/js/slaveCostJS.js +++ b/src/js/slaveCostJS.js @@ -2289,6 +2289,7 @@ globalThis.slaveCostBeauty = (function() { let arcology; let multiplier; let cost; + const map = new Map([]); /** * @param {App.Entity.SlaveState} slave @@ -2329,32 +2330,32 @@ globalThis.slaveCostBeauty = (function() { */ function calcGenitalsCost(slave) { if (slave.vagina === 0 && slave.counter.vaginal === 0) { - multiplier += 0.2; + map.set(`virgin`, 0.2); } if (slave.anus === 0 && slave.counter.anal === 0) { - multiplier += 0.2; + map.set(`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) { - multiplier += 0.8; + map.set(`castrated`, 0.8); } } } else if (slave.vagina > -1) { if (slave.dick > 0) { if (V.ui !== "start" || V.PC.dick === 0 || V.PC.vagina === -1) { - multiplier += 0.2; + map.set(`dick`, 0.2); if (slave.ovaries > 0) { if (slave.balls > 0) { - multiplier += 0.8; + map.set(`futa`, 0.8); } } } else { - multiplier += 0.1; + map.set(`dick`, 0.1); if (slave.ovaries > 0) { if (slave.balls > 0) { - multiplier += 0.2; + map.set(`futa`, 0.2); } } } @@ -2369,20 +2370,20 @@ globalThis.slaveCostBeauty = (function() { function calcDevotionTrustCost(slave, isSpecial) { if (isSpecial === true) { if (slave.devotion > 50) { - multiplier += slave.devotion / 200; + map.set(`special devotion`, slave.devotion / 200); } if (slave.trust > 50) { - multiplier += slave.trust / 200; + map.set(`special trust`, slave.trust / 200); } } else { - multiplier += slave.devotion / 200; + map.set(`devotion`, slave.devotion / 200); if (slave.devotion < -20) { if (slave.trust > 0) { - multiplier -= slave.trust / 200; + map.set(`low devotion`, -slave.trust / 200); } } else { if (slave.trust > 0) { - multiplier += slave.trust / 200; + map.set(`trusting devotion`, slave.trust / 200); } } } @@ -2393,31 +2394,31 @@ globalThis.slaveCostBeauty = (function() { */ function calcPreferencesCost(slave) { if (slave.behavioralFlaw !== "none") { - multiplier -= 0.1; + map.set(`behavioral flaw`, -0.1); } if (slave.behavioralQuirk !== "none") { - multiplier += 0.1; + map.set(`behavioral quirk`, 0.1); } if (slave.sexualFlaw === "breeder" && arcology.FSRepopulationFocus !== "unset") { - multiplier += 0.3; + map.set(`sexual flaw, but a breeder`, 0.3); } else if (slave.sexualFlaw !== "none") { - multiplier -= 0.1; + map.set(`sexual flaw`, -0.1); } if (slave.sexualQuirk !== "none") { - multiplier += 0.1; + map.set(`sexual quirk`, 0.1); } if (slave.fetishKnown === 1) { if (slave.fetish === "mindbroken") { - multiplier -= 0.3; + map.set(`mindbroken`, -0.3); } else if (slave.fetish !== "none") { - multiplier += slave.fetishStrength / 1000; + map.set(`fetish`, slave.fetishStrength / 1000); } } else { - multiplier -= 0.1; + map.set(`unknown fetish`, -0.1); } if (slave.attrKnown === 1) { if (slave.energy > 95) { - multiplier += 0.2; + map.set(`high attraction`, 0.2); } } } @@ -2427,37 +2428,37 @@ globalThis.slaveCostBeauty = (function() { */ function calcPregCost(slave) { if (slave.mpreg === 1) { - multiplier += 0.2; + map.set(`mpreg`, 0.2); } if (arcology.FSRepopulationFocusSMR === 1) { if (slave.preg < -1) { - multiplier -= 0.5; + map.set(`repop sterile`, -0.5); } else if (slave.bellyPreg >= 300000) { - multiplier += 1; + map.set(`repop mega preg`, 1); } else if (slave.bellyPreg >= 120000) { - multiplier += 0.5; + map.set(`repop very preg`, 0.5); } else if (slave.preg > slave.pregData.normalBirth / 4) { - multiplier += 0.1; + map.set(`repop showing`, 0.1); } } else if (arcology.FSRestartSMR === 1) { if (slave.preg < -1) { - multiplier += 0.5; + map.set(`restart sterile`, 0.5); } else if (slave.bellyPreg >= 300000) { - multiplier -= 2.5; + map.set(`restart mega preg`, -2.5); } else if (slave.bellyPreg >= 30000) { - multiplier -= 1.5; + map.set(`restart very preg`, -1.5); } else if (slave.preg > slave.pregData.normalBirth / 4) { - multiplier -= 1.0; + map.set(`restart showing`, -1.0); } } else { if (slave.preg < -1) { - multiplier -= 0.1; + map.set(`sterile`, -0.1); } else if (slave.bellyPreg >= 300000) { - multiplier -= 1.5; + map.set(`mega preg`, -1.5); } else if (slave.bellyPreg >= 120000) { - multiplier -= 0.5; + map.set(`very preg`, -0.5); } else if (slave.bellyPreg >= 500 || slave.pregKnown === 1) { - multiplier -= 0.1; + map.set(`restart showing`, -0.1); } } } @@ -2467,14 +2468,14 @@ globalThis.slaveCostBeauty = (function() { */ function calcPrestigeCost(slave) { if (slave.prestige > 0) { - multiplier += 0.7 * slave.prestige; + map.set(`prestige`, 0.7 * slave.prestige); } if (slave.porn.prestige === 3) { - multiplier += 1.5; + map.set(`porn prestige`, 1.5); } else if (slave.porn.prestige === 2) { - multiplier += 0.7; + map.set(`porn prestige`, 0.7); } else if (slave.porn.prestige === 1) { - multiplier += 0.2; + map.set(`porn prestige`, 0.2); } } @@ -2484,86 +2485,86 @@ globalThis.slaveCostBeauty = (function() { function calcFSCost(slave) { if (arcology.FSSupremacistLawME !== 0) { if (slave.race !== arcology.FSSupremacistRace) { - multiplier -= 0.1; + map.set(`supremacist race`, -0.1); } } if (arcology.FSSubjugationistLawME !== 0) { if (slave.race === arcology.FSSubjugationistRace) { - multiplier -= 0.2; + map.set(`subjugationist race`, -0.2); } } if (V.seeCats === 1 && slave.race === "catgirl") { if (arcology.FSBodyPurist === "unset" && V.projectN.techReleased === 1) { - multiplier += 0.5; + map.set(`catgirl`, 0.5); } else if (arcology.FSBodyPurist === "unset" && V.projectN.techReleased === 0) { - multiplier += 0.9; + map.set(`catgirl`, 0.9); } else if (arcology.FSBodyPurist !== "unset" && arcology.FSBodyPuristCatLaw === 0) { - multiplier -= 0.5; + map.set(`catgirl`, -0.5); } else if (arcology.FSBodyPurist !== "unset" && arcology.FSBodyPuristCatLaw === 1 && V.projectN.techreleased === 1) { - multiplier += 0.5; + map.set(`catgirl`, 0.5); } else if (arcology.FSBodyPurist !== "unset" && arcology.FSBodyPuristCatLaw === 1 && V.projectN.techreleased === 0) { - multiplier += 0.9; + map.set(`catgirl`, 0.9); } if (arcology.FSEgyptianRevivalist !== "unset") { - multiplier += 0.2; + map.set(`egyptian catgirl`, 0.2); } if (arcology.FSTransformationFetishist !== "unset") { - multiplier += 0.2; + map.set(`transformation catgirl`, 0.2); } } if (arcology.FSRepopulationFocusSMR !== 0) { if (slave.preg > 0) { - multiplier += 0.1; + map.set(`repopulation preg`, 0.1); } } else if (arcology.FSRestartSMR !== 0) { if (slave.dick > 0) { - multiplier -= 0.1; + map.set(`restart smr dick`, -0.1); } if (slave.balls > 0) { - multiplier -= 0.2; + map.set(`restart smr balls`, -0.2); } if (slave.vagina > 0) { - multiplier -= 0.1; + map.set(`restart smr vagina`, -0.1); } if (slave.ovaries > 0) { - multiplier -= 0.5; + map.set(`restart smr ovaries`, -0.5); } } if (arcology.FSGenderFundamentalistSMR !== 0) { if (slave.dick > 0) { - multiplier -= 0.1; + map.set(`gender fundamentalist smr dick`, -0.1); } if (slave.balls > 0) { - multiplier -= 0.1; + map.set(`gender fundamentalist smr balls`, -0.1); } } else if (arcology.FSGenderRadicalist !== "unset") { if (slave.dick > 0) { - multiplier += 0.1; + map.set(`gender radicalist dick`, 0.1); } if (slave.balls > 0 && arcology.FSGenderRadicalistLawFuta !== 2 && arcology.FSGenderRadicalistLawFuta !== 4) { - multiplier -= 0.1; + map.set(`gender radicalist balls`, -0.1); } } if (arcology.FSPetiteAdmirationSMR !== 0 || arcology.FSStatuesqueGlorificationSMR !== 0) { if (heightPass(slave)) { - multiplier += 0.1; + map.set(`petite admiration smr`, 0.1); } else { - multiplier -= 0.1; + map.set(`petite admiration smr`, -0.1); } } if (arcology.FSSlaveProfessionalism !== "unset") { - multiplier += 0.1 * (slave.intelligence / 20); + map.set(`slave professionalism`, 0.1 * (slave.intelligence / 20)); } if (arcology.FSHedonisticDecadenceSMR !== 0) { if (slave.weight > 60 && slave.muscles < 5) { - multiplier += 0.1; + map.set(`hedonistic decadence smr`, 0.1); } } if (arcology.FSArabianRevivalist > 50) { - multiplier += 0.1; + map.set(`arabian revivalist`, 0.1); } if (arcology.FSNeoImperialist > 40) { - multiplier += 0.1; + map.set(`neo imperialist`, 0.1); } } @@ -2573,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) { - multiplier += 0.4; + map.set(`birthWeek`, 0.4); } else if (slave.birthWeek < 4) { - multiplier += 0.1; + map.set(`birthWeek`, 0.1); } } else if (slave.physicalAge === V.minimumSlaveAge) { if (slave.birthWeek === 0) { - multiplier += 0.2; + map.set(`birthWeek`, 0.2); } else if (slave.birthWeek < 4) { - multiplier += 0.05; + map.set(`birthWeek`, 0.05); } } else if (slave.physicalAge === V.fertilityAge && canGetPregnant(slave) && (arcology.FSRepopulationFocus !== "unset" || arcology.FSGenderFundamentalist !== "unset")) { if (slave.birthWeek === 0) { - multiplier += 0.2; + map.set(`birthWeek`, 0.2); } else if (slave.birthWeek < 4) { - multiplier += 0.05; + map.set(`birthWeek`, 0.05); } } } @@ -2598,102 +2599,102 @@ globalThis.slaveCostBeauty = (function() { function calcCareersCost(slave) { if (slave.career !== 0) { if (slave.career === "a slave") { - multiplier += 0.1; + map.set(`career`, 0.1); } else if (App.Data.Careers.Leader.bodyguard.includes(slave.career)) { - multiplier += 0.1; + map.set(`career`, 0.1); } else if (App.Data.Careers.Leader.wardeness.includes(slave.career)) { - multiplier += 0.1; + map.set(`career`, 0.1); } else if (App.Data.Careers.Leader.attendant.includes(slave.career)) { - multiplier += 0.1; + map.set(`career`, 0.1); } else if (App.Data.Careers.Leader.nurse.includes(slave.career)) { - multiplier += 0.1; + map.set(`career`, 0.1); } else if (App.Data.Careers.Leader.matron.includes(slave.career)) { - multiplier += 0.1; + map.set(`career`, 0.1); } else if (App.Data.Careers.Leader.schoolteacher.includes(slave.career)) { - multiplier += 0.1; + map.set(`career`, 0.1); } else if (App.Data.Careers.Leader.stewardess.includes(slave.career)) { - multiplier += 0.1; + map.set(`career`, 0.1); } else if (App.Data.Careers.Leader.milkmaid.includes(slave.career)) { - multiplier += 0.1; + map.set(`career`, 0.1); } else if (App.Data.Careers.Leader.farmer.includes(slave.career)) { - multiplier += 0.1; + map.set(`career`, 0.1); } else if (App.Data.Careers.Leader.madam.includes(slave.career)) { - multiplier += 0.1; + map.set(`career`, 0.1); } else if (App.Data.Careers.Leader.DJ.includes(slave.career)) { - multiplier += 0.1; + map.set(`career`, 0.1); } else if (App.Data.Careers.Leader.HG.includes(slave.career)) { - multiplier += 0.1; + map.set(`career`, 0.1); } else if (App.Data.Careers.Leader.recruiter.includes(slave.career)) { - multiplier += 0.1; + map.set(`career`, 0.1); } else if (App.Data.Careers.General.entertainment.includes(slave.career)) { - multiplier += 0.05; + map.set(`career`, 0.05); } else if (App.Data.Careers.General.whore.includes(slave.career)) { - multiplier += 0.05; + map.set(`career`, 0.05); } else if (App.Data.Careers.General.grateful.includes(slave.career)) { - multiplier += 0.05; + map.set(`career`, 0.05); } else if (App.Data.Careers.General.menial.includes(slave.career)) { - multiplier += 0.05; + map.set(`career`, 0.05); } else if (App.Data.Careers.General.servant.includes(slave.career)) { - multiplier += 0.05; + map.set(`career`, 0.05); } } if (V.week - slave.weekAcquired >= 20 && slave.skill.entertainment >= 100) { if (!App.Data.Careers.General.entertainment.includes(slave.career)) { - multiplier += 0.05; + map.set(`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)) { - multiplier += 0.05; + map.set(`whore career`, 0.05); } } if (!App.Data.Careers.Leader.bodyguard.includes(slave.career) && slave.skill.bodyguard >= V.masteredXP) { - multiplier += 0.1; + map.set(`good bodyguard`, 0.1); } if (!App.Data.Careers.Leader.wardeness.includes(slave.career) && slave.skill.wardeness >= V.masteredXP) { - multiplier += 0.1; + map.set(`good wardeness`, 0.1); } if (!App.Data.Careers.Leader.attendant.includes(slave.career) && slave.skill.attendant >= V.masteredXP) { - multiplier += 0.1; + map.set(`good attendant`, 0.1); } if (!App.Data.Careers.Leader.nurse.includes(slave.career) && slave.skill.nurse >= V.masteredXP) { - multiplier += 0.1; + map.set(`good nurse`, 0.1); } if (!App.Data.Careers.Leader.matron.includes(slave.career) && slave.skill.matron >= V.masteredXP) { - multiplier += 0.1; + map.set(`good matron`, 0.1); } if (!App.Data.Careers.Leader.schoolteacher.includes(slave.career) && slave.skill.teacher >= V.masteredXP) { - multiplier += 0.1; + map.set(`good teacher`, 0.1); } if (!App.Data.Careers.Leader.stewardess.includes(slave.career) && slave.skill.stewardess >= V.masteredXP) { - multiplier += 0.1; + map.set(`good stewardess`, 0.1); } if (!App.Data.Careers.Leader.milkmaid.includes(slave.career) && slave.skill.milkmaid >= V.masteredXP) { - multiplier += 0.1; + map.set(`good milkmaid`, 0.1); } if (!App.Data.Careers.Leader.farmer.includes(slave.career) && slave.skill.farmer >= V.masteredXP) { - multiplier += 0.1; + map.set(`good farmer`, 0.1); } if (!App.Data.Careers.Leader.madam.includes(slave.career) && slave.skill.madam >= V.masteredXP) { - multiplier += 0.1; + map.set(`good madam`, 0.1); } if (!App.Data.Careers.Leader.DJ.includes(slave.career) && slave.skill.DJ >= V.masteredXP) { - multiplier += 0.1; + map.set(`good DJ`, 0.1); } if (!App.Data.Careers.Leader.HG.includes(slave.career) && slave.skill.headGirl >= V.masteredXP) { - multiplier += 0.1; + map.set(`good headGirl`, 0.1); } if (!App.Data.Careers.Leader.recruiter.includes(slave.career) && slave.skill.recruiter >= V.masteredXP) { - multiplier += 0.1; + map.set(`good recruiter`, 0.1); } if (!App.Data.Careers.General.servant.includes(slave.career) && slave.skill.servant >= V.masteredXP) { - multiplier += 0.05; + map.set(`good servant`, 0.05); } if (!App.Data.Careers.General.entertainment.includes(slave.career) && slave.skill.entertainer >= V.masteredXP) { - multiplier += 0.05; + map.set(`good entertainer`, 0.05); } if (!App.Data.Careers.General.whore.includes(slave.career) && slave.skill.whore >= V.masteredXP) { - multiplier += 0.05; + map.set(`good whore`, 0.05); } } @@ -2706,22 +2707,22 @@ globalThis.slaveCostBeauty = (function() { */ multiplier += Math.floor((Math.asin(totalInt / 131)) * 50) / 50; if (slave.pubertyXY === 0 && slave.physicalAge >= V.potencyAge && slave.genes === "XY" && arcology.FSGenderRadicalist === "unset") { - multiplier += 0.5; + map.set(`child`, 0.5); } if (slave.geneticQuirks.albinism === 2) { - multiplier += 0.2; + map.set(`albanism`, 0.2); } if (V.rep > 10000) { - multiplier += 0.1 * (Object.getOwnPropertyNames(slave.brand).length); + map.set(`high rep brand`, 0.1 * (Object.getOwnPropertyNames(slave.brand).length)); } else if (V.rep < 5000) { - multiplier -= 0.1 * (Object.getOwnPropertyNames(slave.brand).length); + map.set(`low rep brand`, -0.1 * (Object.getOwnPropertyNames(slave.brand).length)); } - multiplier -= getLimbCount(slave, 0) * 0.05; + map.set(`limbs`, -getLimbCount(slave, 0) * 0.05); if (!canSee(slave)) { - multiplier -= 0.2; + map.set(`vision`, -0.2); } if (slave.hears === -2) { - multiplier -= 0.1; + map.set(`hearing`, -0.1); } } @@ -2730,8 +2731,8 @@ globalThis.slaveCostBeauty = (function() { */ function calcIndentureCost(slave) { if (slave.indenture > -1) { - multiplier -= 0.1 * slave.indentureRestrictions; - multiplier -= (260 - slave.indenture) / 260; + map.set(`indenture level`, -0.1 * slave.indentureRestrictions); + map.set(`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;