diff --git a/src/js/utilsMisc.js b/src/js/utilsMisc.js index 44f25d926327af791496ea566b1f5bbe0e1708b5..5fc36bc66be823e4daa59c019ce2cebf5d57b8a4 100644 --- a/src/js/utilsMisc.js +++ b/src/js/utilsMisc.js @@ -400,7 +400,7 @@ globalThis.weightedRandom = function(values) { * @returns {number} */ globalThis.penetrativeSocialUse = function(slave = null) { - let total = 0; + let total = 10; if (V.policies.sexualOpenness) { total += 40 + 20 * (Math.clamp(V.rep - 5000, 0, 12000) / 12000); // penetrative campaign, related to reputation, (40 to 60) } @@ -408,6 +408,8 @@ globalThis.penetrativeSocialUse = function(slave = null) { total += FutureSocieties.isActive("FSGenderRadicalist") ? 25 : 0; total += [0, 15, 20, 0, 5][V.arcologies[0].FSGenderRadicalistLawFuta]; // 15 futas, 20 big dicks & balls, 5 small dicks total += FutureSocieties.isActive("FSNull") ? 15 : 0; + total += FutureSocieties.isActive("FSHedonisticDecadence") ? 15 : 0; + total += FutureSocieties.isActive("FSRepopulationFocus") ? 5 : 0; total += V.arcologies[0].FSRepopulationFocusLaw * 10; total -= FutureSocieties.isActive("FSGenderFundamentalist") ? 25 : 0; @@ -415,7 +417,6 @@ globalThis.penetrativeSocialUse = function(slave = null) { total -= FutureSocieties.isActive("FSEdoRevivalist") ? 10 : 0; total -= FutureSocieties.isActive("FSArabianRevivalist") ? 10 : 0; total -= FutureSocieties.isActive("FSChineseRevivalist") ? 10 : 0; - total -= FutureSocieties.isActive("FSRestart") ? 25 : 0; total -= V.arcologies[0].FSRestartSMR ? 30 : 0; total -= FutureSocieties.isActive("FSAztecRevivalist") ? 10 : 0; total -= FutureSocieties.isActive("FSNeoImperialist") ? 10 : 0; @@ -432,26 +433,35 @@ globalThis.penetrativeSocialUse = function(slave = null) { if (FutureSocieties.isActive("FSSubjugationist")) { total += V.arcologies[0].FSSubjugationistRace === slave.race ? 20 : 0; } + if (FutureSocieties.isActive("FSRestart")) { + total -= isVirile(slave) ? 40 : 0; + } + total += slave.prestige * 5; + total += Math.pow(slave.porn.prestige, 3); + // in the future, consider some sort of penetrative pornstar bonus here } - let haveDick =V.slaves.filter(s => s.dick > 0).length; - if (haveDick) { - let withDick = (haveDick / V.slaves.length); // percentage of slaves with dicks - total += withDick > .2 ? 15 * withDick : 0; - let toyHole = V.slaves.filter(s => s.toyHole === "dick").length; - total += 10 * (toyHole / haveDick); - /* let penetrativeAverage = 0; - V.slaves.filter(s => s.dick > 0).forEach(s1 => { - penetrativeAverage += s1.skill.penetrative; - }); - total += (penetrativeAverage / haveDick) * .1; */ - } if (V.seeDicks === 0 && total > 0) { total *= .6; } else if (V.seeDicks > 25) { total += V.seeDicks < 75 ? V.seeDicks * .10 : V.seeDicks * .08; } + if (total >= 40) { // Once dicks are trendy, availability starts to increase interest + let haveDick =V.slaves.filter(s => s.dick > 0).length; + if (haveDick) { + let withDick = (haveDick / V.slaves.length); // percentage of slaves with dicks + total += withDick > .2 ? 15 * withDick : 0; + let toyHole = V.slaves.filter(s => s.toyHole === "dick").length; + total += 10 * (toyHole / haveDick); + /* let penetrativeAverage = 0; + V.slaves.filter(s => s.dick > 0).forEach(s1 => { + penetrativeAverage += s1.skill.penetrative; + }); + total += (penetrativeAverage / haveDick) * .1; */ + } + } + total = Math.clamp(Math.floor(total), 0, 100); return total; }