diff --git a/src/js/slaveCostJS.js b/src/js/slaveCostJS.js index 0e0e865f9cc642be91c9f204895dc5a033595f8a..54d5bdc5cb646567a29e9fc87a294631bd842a48 100644 --- a/src/js/slaveCostJS.js +++ b/src/js/slaveCostJS.js @@ -17,6 +17,7 @@ window.Beauty = (function() { calcInitBeauty(slave); if (slave.fuckdoll === 0) { beauty += 30; + calcIntelligenceBeauty(slave); calcFaceBeauty(slave); calcTeethBeauty(slave); calcModBeauty(); @@ -24,6 +25,7 @@ window.Beauty = (function() { calcFSNotFuckdollBeauty(slave); calcMiscNotFuckdollBeauty(slave); } + calcHeightBeauty(slave); if (slave.dick > 0) { calcDickBeauty(slave); } @@ -79,7 +81,6 @@ window.Beauty = (function() { beauty -= slave.muscles / 30; beauty += slave.lips / 10; beauty += slave.clit; - beauty += (slave.height - 160) / 10; beauty += 2 * slave.hips; if (slave.anus > 3) { beauty -= 10 + (slave.anus * 2); /* -20 */ @@ -89,6 +90,28 @@ window.Beauty = (function() { } } + /** + * @param {App.Entity.SlaveState} slave + */ + function calcIntelligenceBeauty(slave) { + if (arcology.FSSlaveProfessionalism !== "unset") { + beauty += (arcology.FSSlaveProfessionalism / 10) * (slave.intelligence / 10); /* 100 */ + } else if (arcology.FSIntellectualDependency !== "unset") { + beauty -= (arcology.FSIntellectualDependency / 10) * ((slave.intelligence + slave.intelligenceImplant) / 20); /* 65 */ + } else if (arcology.FSDegradationist !== "unset") { + beauty -= (arcology.FSDegradationist / 10) * ((slave.intelligence + slave.intelligenceImplant) / 50); /* 20 */ + } else { + beauty += (slave.intelligence + slave.intelligenceImplant) / 10; /* -10 to 13 */ + } + } + + /** + * @param {App.Entity.SlaveState} slave + */ + function calcHeightBeauty(slave) { + beauty += (slave.height - 160) / 10; + } + /** * @param {App.Entity.SlaveState} slave */ @@ -253,9 +276,6 @@ window.Beauty = (function() { beauty -= (arcology.FSSubjugationist / 2) - (arcology.FSSubjugationistLawME * 10); } } - if (arcology.FSDegradationist !== "unset") { - beauty -= (arcology.FSDegradationist / 10) * ((slave.intelligence + slave.intelligenceImplant) / 20); - } if (arcology.FSGenderFundamentalistLawBimbo === 1) { if (slave.intelligenceImplant === 0) { beauty += 30; @@ -264,6 +284,21 @@ window.Beauty = (function() { } else { beauty -= (slave.intelligenceImplant * 1.5); } + } else if (arcology.FSSlaveProfessionalism !== "unset") { + if (slave.intelligenceImplant == 30) { + beauty += 5 + (arcology.FSSlaveProfessionalism / 10); /* 15 */ + } else if (slave.intelligenceImplant >= 15) { + beauty += (arcology.FSSlaveProfessionalism / 20); /* 5 */ + } else { + beauty -= ((arcology.FSSlaveProfessionalism / 10) * 3) - (slave.intelligenceImplant); /* -30 */ + } + } else if (arcology.FSIntellectualDependency !== "unset") { + if (slave.intelligenceImplant > 15) { + beauty -= (arcology.FSIntellectualDependency / 10) * (slave.intelligenceImplant / 10); /* -30 */ + } + } + if (arcology.FSSlaveProfessionalism !== "unset") { + beauty += (arcology.FSSlaveProfessionalism / 50) * ((slave.skill.entertainment + slave.skill.whoring + slave.skill.oral + slave.skill.anal + slave.skill.vaginal) / 100); /* 10 */ } if (arcology.FSYouthPreferentialist !== "unset") { beauty += (30 - slave.visualAge) / (30 - V.minimumSlaveAge) * ((arcology.FSYouthPreferentialist / 2) + (arcology.FSYouthPreferentialistLaw * 10)); /* max 60 */ @@ -324,7 +359,6 @@ window.Beauty = (function() { function calcMiscNotFuckdollBeauty(slave) { beauty += Math.min(slave.health, 100) / 5; beauty += slave.voice; - beauty += (slave.intelligence + slave.intelligenceImplant) / 10; /* -10 to 13 */ beauty += slave.skill.entertainment / 10; beauty += slave.skill.whoring / 10; beauty -= 3 * slave.visualAge; @@ -1086,14 +1120,24 @@ window.Beauty = (function() { * @param {App.Entity.SlaveState} slave */ function calcVoiceBeauty(slave) { - if (canTalk(slave)) { - if (slave.accent >= 3) { - beauty -= 1; - } else if (slave.accent === 1) { - beauty += 1; + if (arcology.FSSlaveProfessionalism !== "unset") { + if (canTalk(slave)) { + if (slave.accent > 1) { + beauty -= 20; + } else if (slave.accent === 0) { + beauty += 4; + } } } else { - beauty -= 2; + if (canTalk(slave)) { + if (slave.accent >= 3) { + beauty -= 1; + } else if (slave.accent === 1) { + beauty += 1; + } + } else { + beauty -= 2; + } } } @@ -1156,6 +1200,27 @@ window.Beauty = (function() { beauty -= 15 + (arcology.FSHedonisticDecadence / 20); /* -20 */ } } + if (arcology.FSSlaveProfessionalism !== "unset") { + if (slave.energy > 80) { + beauty -= slave.energy; + } else if (slave.energy <= 40 && slave.devotion > 50) { + beauty += slave.energy / 4; + } + } else if (arcology.FSIntellectualDependency !== "unset") { + if (arcology.FSIntellectualDependencyLawBeauty === 1) { + let bimboDegree = bimboScore(slave); + if (bimboDegree > 0) { + beauty += Math.pow(2, bimboDegree); /* 64 */ + } else { + beauty -= arcology.FSIntellectualDependency; /* -100 */ + } + } + if (slave.energy > 80) { + beauty += (arcology.FSIntellectualDependency / 50) * (8 + (slave.energy / 10)); /* 20 */ + } else if (slave.energy <= 60) { + beauty -= (arcology.FSIntellectualDependency / 50) * (60 - slave.energy); /* -120 */ + } + } if (arcology.FSChattelReligionistCreed === 1) { if (V.nicaeaAssignment === slave.assignment) { beauty += 2 * V.nicaeaPower; @@ -1765,6 +1830,19 @@ window.FResult = (function() { } // looks and acts mature, but has a body that just won't quit } + /** + * @param {App.Entity.SlaveState} slave + */ + function calcSlaveProfessionalismBonus(slave) { + if (slave.devotion > 50) { + if (slave.energy <= 40) { + result += 4; + } else { + result += 2; + } + } // Professional slaves try harder + } + /** * @param {App.Entity.SlaveState} slave */ @@ -1802,6 +1880,9 @@ window.FResult = (function() { } else if (V.arcologies[0].FSMaturityPreferentialist !== "unset") { calcMatureBonus(slave); } + if (V.arcologies[0].FSSlaveProfessionalism !== "unset") { + calcSlaveProfessionalismBonus(slave); + } } /** @@ -2096,6 +2177,16 @@ window.slaveCost = (function() { multiplier -= 0.1; } } + if (arcology.FSPetiteAdmirationSMR !== 0 || arcology.FSStatuesqueGlorificationSMR !== 0) { + if (heightPass(slave)) { + multiplier += 0.1; + } else { + multiplier -= 0.1; + } + } + if (arcology.FSSlaveProfessionalism !== "unset") { + multiplier += 0.1 * (slave.intelligence / 20); + } if (arcology.FSHedonisticDecadenceSMR !== 0) { if (slave.weight > 60 && slave.muscles < 5) { multiplier += 0.1;