diff --git a/src/js/assayJS.js b/src/js/assayJS.js index af8c87f0631931b64a25289dbda8ba45f4a4015e..6cdae706ccfb32626250c04d86082d5e2d2e807d 100644 --- a/src/js/assayJS.js +++ b/src/js/assayJS.js @@ -27,42 +27,6 @@ window.isSlim = /** @param {App.Entity.SlaveState} slave */ function(slave) { return slim; }; -window.isStacked = /** @param {App.Entity.SlaveState} slave */ function(slave) { - return (slave.butt > 4) && (slave.boobs > 800); -}; - -window.isModded = /** @param {App.Entity.SlaveState} slave */ function(slave) { - const tatScore = SlaveStatsChecker.tatScore(slave); - const piercingScore = SlaveStatsChecker.piercingScore(slave); - const modScore = piercingScore+tatScore; - - return ((modScore > 15) || (piercingScore > 8 && tatScore > 5)); -}; - -window.isUnmodded = /** @param {App.Entity.SlaveState} slave */ function(slave) { - return (!isModded(slave) && (slave.corsetPiercing === 0) && (SlaveStatsChecker.piercingScore(slave) < 3) && (SlaveStatsChecker.tatScore(slave) < 2)); -}; - -window.isXY = /** @param {App.Entity.SlaveState} slave */ function(slave) { - return (slave.dick > 0); -}; - -window.isYoung = /** @param {App.Entity.SlaveState} slave */ function(slave) { - return (slave.visualAge < 30); -}; - -window.isPreg = /** @param {App.Entity.SlaveState} slave */ function(slave) { - return ((slave.bellyPreg >= 5000) || (slave.bellyImplant >= 5000)); -}; - -window.isNotPreg = /** @param {App.Entity.SlaveState} slave */ function(slave) { - return (!isPreg(slave) && (slave.belly < 100) && (slave.weight < 30) && !setup.fakeBellies.includes(slave.bellyAccessory)); -}; - -window.isPure = /** @param {App.Entity.SlaveState} slave */ function(slave) { - return ((slave.boobsImplant === 0) && (slave.buttImplant === 0) && (slave.waist >= -95) && (slave.lipsImplant === 0) && (slave.faceImplant < 30) && (slave.bellyImplant === -1) && (Math.abs(slave.shouldersImplant) < 2) && (Math.abs(slave.hipsImplant) < 2)); -}; - window.slimPass = /** @param {App.Entity.SlaveState} slave */ function(slave) { let slimPass = 0; const ArcologyZero = State.variables.arcologies[0]; diff --git a/src/js/slaveStatsChecker.js b/src/js/slaveStatsChecker.js index 87ba3f18033a475d023a16a3a2c1a762dba89bf6..e1cdfe727f2462491e57f8f9c57b5c04eedbf6ef 100644 --- a/src/js/slaveStatsChecker.js +++ b/src/js/slaveStatsChecker.js @@ -108,3 +108,328 @@ window.SlaveStatsChecker = (function() { return score; } }()); + +window.isStacked = /** @param {App.Entity.SlaveState} slave */ function(slave) { + return (slave.butt > 4) && (slave.boobs > 800); +}; + +window.isModded = /** @param {App.Entity.SlaveState} slave */ function(slave) { + const tatScore = SlaveStatsChecker.tatScore(slave); + const piercingScore = SlaveStatsChecker.piercingScore(slave); + const modScore = piercingScore+tatScore; + + return ((modScore > 15) || (piercingScore > 8 && tatScore > 5)); +}; + +window.isUnmodded = /** @param {App.Entity.SlaveState} slave */ function(slave) { + return (!isModded(slave) && (slave.corsetPiercing === 0) && (SlaveStatsChecker.piercingScore(slave) < 3) && (SlaveStatsChecker.tatScore(slave) < 2)); +}; + +window.isXY = /** @param {App.Entity.SlaveState} slave */ function(slave) { + return (slave.dick > 0); +}; + +window.isYoung = /** @param {App.Entity.SlaveState} slave */ function(slave) { + return (slave.visualAge < 30); +}; + +window.isPreg = /** @param {App.Entity.SlaveState} slave */ function(slave) { + return ((slave.bellyPreg >= 5000) || (slave.bellyImplant >= 5000)); +}; + +window.isNotPreg = /** @param {App.Entity.SlaveState} slave */ function(slave) { + return (!isPreg(slave) && (slave.belly < 100) && (slave.weight < 30) && !setup.fakeBellies.includes(slave.bellyAccessory)); +}; + +window.isPure = /** @param {App.Entity.SlaveState} slave */ function(slave) { + return ((slave.boobsImplant === 0) && (slave.buttImplant === 0) && (slave.waist >= -95) && (slave.lipsImplant === 0) && (slave.faceImplant < 30) && (slave.bellyImplant === -1) && (Math.abs(slave.shouldersImplant) < 2) && (Math.abs(slave.hipsImplant) < 2)); +}; + +window.isFullyPotent = /** @param {App.Entity.SlaveState} slave */ function(slave) { + if (!slave) { + return null; + } else if (slave.dick > 0 && slave.balls > 0 && slave.ballType !== 'sterile' && slave.hormoneBalance < 100 && slave.drugs !== 'hormone blockers') { + return true; + } else { + return false; + } +}; + +window.canGetPregnant = /** @param {App.Entity.SlaveState} slave */ function(slave) { + if (!slave) { + return null; + } else if (slave.preg === -1) { /* contraceptives check */ + return false; + } else if (!isFertile(slave)) { /* check other fertility factors */ + return false; + } else if ((slave.ovaries === 1) && (canDoVaginal(slave))) { + return true; + } else if ((slave.mpreg === 1) && (canDoAnal(slave))) { /* pregmod */ + return true; + } else { + return false; + } +}; + +/** contraceptives (.preg == -1) do not negate this function + * @param {App.Entity.SlaveState} slave */ +window.isFertile = function(slave) { + if (!slave) { + return null; + } + + if (slave.womb.length > 0 && slave.geneticQuirks.superfetation < 2) { /* currently pregnant without superfetation */ + return false; + } else if (slave.womb.length > 0) { /* temp failure condition to prevent current double preg bug */ + return false; + } else if (slave.broodmother > 0) { /* currently broodmother */ + return false; + } else if (slave.preg < -1) { /* sterile */ + return false; + } else if (slave.pregWeek < 0) { /* postpartum */ + return false; + } else if (slave.pubertyXX === 0) { /* pregmod start */ + return false; + } else if (slave.ovaryAge >= 47) { + return false; + } else if (slave.inflation > 2) { + return false; + } else if (slave.bellyImplant !== -1) { + return false; + } else if (slave.mpreg === 1) { + return true; /* pregmod end */ + } else if (slave.ovaries === 1) { + return true; + } else { + return false; + } +}; + +window.canAchieveErection = /** @param {App.Entity.SlaveState} slave */ function(slave) { + if (!slave) { + return null; + } else if (slave.dick < 7 && slave.dick > 0 && slave.drugs !== 'hormone blockers' && (slave.balls > 0 ? slave.hormoneBalance < 100 : slave.hormoneBalance <= -100) && slave.ballType !== 'sterile') { + return true; + } else { + return false; + } +}; + +window.canPenetrate = /** @param {App.Entity.SlaveState} slave */ function(slave) { + if (!slave) { + return null; + } else if (!canAchieveErection(slave)) { + return false; + } else if (slave.chastityPenis === 1) { + return false; + } else if (slave.dick > 7) { + return false; + } + return true; +}; + +window.canSee = /** @param {App.Entity.SlaveState} slave */ function(slave) { + if (!slave) { + return null; + } else if (slave.eyes > -2) { + return true; + } else { + return false; + } +}; + +window.canHear = /** @param {App.Entity.SlaveState} slave */ function(slave) { + if (!slave) { + return null; + } else if ((slave.hears > -2) && (slave.earwear !== "deafening ear plugs")) { + return true; + } else { + return false; + } +}; + +window.canSmell = /** @param {App.Entity.SlaveState} slave */ function(slave) { + if (!slave) { + return null; + } else if (slave.smells > -1) { + return true; + } else { + return false; + } +}; + +window.canTaste = /** @param {App.Entity.SlaveState} slave */ function(slave) { + if (!slave) { + return null; + } else if (slave.tastes > -1) { + return true; + } else { + return false; + } +}; + +window.canWalk = /** @param {App.Entity.SlaveState} slave */ function(slave) { + if (!slave) { + return null; + } else if (slave.amp === 1) { + return false; + } else if (tooFatSlave(slave)) { + return false; + } else if (tooBigBreasts(slave)) { + return false; + } else if (tooBigDick(slave)) { + return false; + } else if (tooBigBalls(slave)) { + return false; + } else if (tooBigButt(slave)) { + return false; + } else if (tooBigBelly(slave)) { + return false; + } else if (slave.heels === 0) { + return true; + } else if (slave.shoes === "heels") { + return true; + } else if (slave.shoes === "extreme heels") { + return true; + } else if (slave.shoes === "boots") { + return true; + } else { + return false; + } +}; + +window.canTalk = /** @param {App.Entity.SlaveState} slave */ function(slave) { + if (!slave) { + return null; + } else if (slave.accent > 2) { + return false; + } else if (slave.voice === 0) { + return false; + } else if (slave.lips > 95) { + return false; + } else if (slave.collar === "dildo gag") { + return false; + } else if (slave.collar === "massive dildo gag") { + return false; + } else if (slave.collar === "ball gag") { + return false; + } else if (slave.collar === "bit gag") { + return false; + } else { + return true; + } +}; + +window.canDoAnal = /** @param {App.Entity.SlaveState} slave */ function(slave) { + if (!slave) { + return null; + } else if (slave.chastityAnus === 1) { + return false; + } + return true; +}; + +window.canDoVaginal = /** @param {App.Entity.SlaveState} slave */ function(slave) { + if (!slave) { + return null; + } else if (slave.vagina < 0) { + return false; + } else if (slave.chastityVagina === 1) { + return false; + } + return true; +}; + +window.tooFatSlave = /** @param {App.Entity.SlaveState} slave */ function(slave) { + if (!slave) { + return null; + } else if (slave.weight > 190+(slave.muscles/5) && slave.physicalAge >= 18) { + return true; + } else if (slave.weight > 130+(slave.muscles/20) && slave.physicalAge <= 3) { + return true; + } else if (slave.weight > 160+(slave.muscles/15) && slave.physicalAge <= 12) { + return true; + } else if (slave.weight > 185+(slave.muscles/10) && slave.physicalAge < 18) { + return true; + } else { + return false; + } +}; + +window.tooBigBreasts = /** @param {App.Entity.SlaveState} slave */ function(slave) { + if (!slave) { + return null; + } else if (slave.boobs > 30000+(slave.muscles*100) && slave.physicalAge >= 18) { + return true; + } else if (slave.boobs > 5000+(slave.muscles*10) && slave.physicalAge <= 3) { + return true; + } else if (slave.boobs > 10000+(slave.muscles*20) && slave.physicalAge <= 12) { + return true; + } else if (slave.boobs > 20000+(slave.muscles*50) && slave.physicalAge < 18) { + return true; + } else { + return false; + } +}; + +window.tooBigBelly = /** @param {App.Entity.SlaveState} slave */ function(slave) { + if (!slave) { + return null; + } else if (slave.belly >= 450000+(slave.muscles*2000) && slave.physicalAge >= 18) { + return true; + } else if (slave.belly >= 350000+(slave.muscles*1000) && slave.physicalAge >= 13) { + return true; + } else if (slave.belly >= 30000+(slave.muscles*500) && slave.physicalAge <= 3) { + return true; + } else if (slave.belly >= 150000+(slave.muscles*800) && slave.physicalAge <= 12) { + return true; + } else { + return false; + } +}; + +window.tooBigBalls = /** @param {App.Entity.SlaveState} slave */ function(slave) { + if (!slave) { + return null; + } else if (slave.balls >= 30+(slave.muscles*.3) && slave.physicalAge <= 3) { + return true; + } else if (slave.balls >= 60+(slave.muscles*.5) && slave.physicalAge <= 12) { + return true; + } else if (slave.balls >= 90+(slave.muscles*.7)) { + return true; + } else { + return false; + } +}; + +window.tooBigDick = /** @param {App.Entity.SlaveState} slave */ function(slave) { + if (!slave) { + return null; + } else if (slave.dick >= 20+(slave.muscles*.1) && slave.physicalAge <= 3 && slave.dick !== 0) { + return true; + } else if (slave.dick >= 45+(slave.muscles*.3) && slave.physicalAge <= 12) { + return true; + } else if (slave.dick >= 68+(slave.muscles*.4)) { + return true; + } else { + return false; + } +}; + +window.tooBigButt = /** @param {App.Entity.SlaveState} slave */ function(slave) { + if (!slave) { + return null; + } else if (slave.butt > 10 && slave.physicalAge <= 3) { + return true; + } else if (slave.butt > 14 && slave.physicalAge <= 12) { + return true; + } else { + return false; + } +}; + +window.isVegetable = /** @param {App.Entity.SlaveState} slave */ function(slave) { + slave = slave || State.variables.activeSlave; + if(!slave) { return false; } + return (slave.fetish === 'mindbroken'); +}; diff --git a/src/js/storyJS.js b/src/js/storyJS.js index 67101c00926a46acb0769f864892593c465c45ff..70d61c5e630cdecb7fcb0a7a817c5784a35a1777 100644 --- a/src/js/storyJS.js +++ b/src/js/storyJS.js @@ -37,16 +37,6 @@ if (typeof interpolate === "undefined") { window.interpolate = interpolate; } -window.isFullyPotent = /** @param {App.Entity.SlaveState} slave */ function (slave) { - if (!slave) { - return null; - } else if (slave.dick > 0 && slave.balls > 0 && slave.ballType !== 'sterile' && slave.hormoneBalance < 100 && slave.drugs !== 'hormone blockers') { - return true; - } else { - return false; - } -}; - window.removeFromArray = function(arr, val) { for (var i = 0; i < arr.length; i++) { if (val === arr[i]) @@ -67,22 +57,6 @@ window.filterInPlace = function(arr, callback, thisArg) { return arr; }; -window.canGetPregnant = /** @param {App.Entity.SlaveState} slave */ function (slave) { - if (!slave) { - return null; - } else if (slave.preg === -1) { /* contraceptives check */ - return false; - } else if (!isFertile(slave)) { /* check other fertility factors */ - return false; - } else if ((slave.ovaries === 1) && (canDoVaginal(slave))) { - return true; - } else if ((slave.mpreg === 1) && (canDoAnal(slave))) { /* pregmod */ - return true; - } else { - return false; - } -}; - /** pregmod: are slave2's sperm compatible with slave1's eggs? * @param {App.Entity.SlaveState} slave1 * @param {App.Entity.SlaveState} slave2 @@ -141,40 +115,6 @@ window.canImpreg = function(slave1, slave2) { } }; -/** contraceptives (.preg == -1) do not negate this function - * @param {App.Entity.SlaveState} slave */ -window.isFertile = function(slave) { - if (!slave) { - return null; - } - - if (slave.womb.length > 0 && slave.geneticQuirks.superfetation < 2) { /* currently pregnant without superfetation */ - return false; - } else if (slave.womb.length > 0) { /* temp failure condition to prevent current double preg bug */ - return false; - } else if (slave.broodmother > 0) { /* currently broodmother */ - return false; - } else if (slave.preg < -1) { /* sterile */ - return false; - } else if (slave.pregWeek < 0) { /* postpartum */ - return false; - } else if (slave.pubertyXX === 0) { /* pregmod start */ - return false; - } else if (slave.ovaryAge >= 47) { - return false; - } else if (slave.inflation > 2) { - return false; - } else if (slave.bellyImplant !== -1) { - return false; - } else if (slave.mpreg === 1) { - return true; /* pregmod end */ - } else if (slave.ovaries === 1) { - return true; - } else { - return false; - } -}; - window.isPlayerFertile = function(PC) { if (!PC) { return null; @@ -189,229 +129,6 @@ window.isPlayerFertile = function(PC) { } }; -window.canAchieveErection = /** @param {App.Entity.SlaveState} slave */ function (slave) { - if (!slave) { - return null; - } else if (slave.dick < 7 && slave.dick > 0 && slave.drugs !== 'hormone blockers' && (slave.balls > 0 ? slave.hormoneBalance < 100 : slave.hormoneBalance <= -100) && slave.ballType !== 'sterile') { - return true; - } else { - return false; - } -}; - -window.canPenetrate = /** @param {App.Entity.SlaveState} slave */ function (slave) { - if (!slave) { - return null; - } else if (!canAchieveErection(slave)) { - return false; - } else if (slave.chastityPenis === 1) { - return false; - } else if (slave.dick > 7) { - return false; - } - return true; -}; - -window.canSee = /** @param {App.Entity.SlaveState} slave */ function (slave) { - if (!slave) { - return null; - } else if (slave.eyes > -2) { - return true; - } else { - return false; - } -}; - -window.canHear = /** @param {App.Entity.SlaveState} slave */ function (slave) { - if (!slave) { - return null; - } else if ((slave.hears > -2) && (slave.earwear !== "deafening ear plugs")) { - return true; - } else { - return false; - } -}; - -window.canSmell = /** @param {App.Entity.SlaveState} slave */ function (slave) { - if (!slave) { - return null; - } else if (slave.smells > -1) { - return true; - } else { - return false; - } -}; - -window.canTaste = /** @param {App.Entity.SlaveState} slave */ function (slave) { - if (!slave) { - return null; - } else if (slave.tastes > -1) { - return true; - } else { - return false; - } -}; - -window.canWalk = /** @param {App.Entity.SlaveState} slave */ function (slave) { - if (!slave) { - return null; - } else if (slave.amp === 1) { - return false; - } else if (tooFatSlave(slave)) { - return false; - } else if (tooBigBreasts(slave)) { - return false; - } else if (tooBigDick(slave)) { - return false; - } else if (tooBigBalls(slave)) { - return false; - } else if (tooBigButt(slave)) { - return false; - } else if (tooBigBelly(slave)) { - return false; - } else if (slave.heels === 0) { - return true; - } else if (slave.shoes === "heels") { - return true; - } else if (slave.shoes === "extreme heels") { - return true; - } else if (slave.shoes === "boots") { - return true; - } else { - return false; - } -}; - -window.canTalk = /** @param {App.Entity.SlaveState} slave */ function (slave) { - if (!slave) { - return null; - } else if (slave.accent > 2) { - return false; - } else if (slave.voice === 0) { - return false; - } else if (slave.lips > 95) { - return false; - } else if (slave.collar === "dildo gag") { - return false; - } else if (slave.collar === "massive dildo gag") { - return false; - } else if (slave.collar === "ball gag") { - return false; - } else if (slave.collar === "bit gag") { - return false; - } else { - return true; - } -}; - -window.canDoAnal = /** @param {App.Entity.SlaveState} slave */ function (slave) { - if (!slave) { - return null; - } else if (slave.chastityAnus === 1) { - return false; - } - return true; -}; - -window.canDoVaginal = /** @param {App.Entity.SlaveState} slave */ function (slave) { - if (!slave) { - return null; - } else if (slave.vagina < 0) { - return false; - } else if (slave.chastityVagina === 1) { - return false; - } - return true; -}; - -window.tooFatSlave = /** @param {App.Entity.SlaveState} slave */ function (slave) { - if (!slave) { - return null; - } else if (slave.weight > 190+(slave.muscles/5) && slave.physicalAge >= 18) { - return true; - } else if (slave.weight > 130+(slave.muscles/20) && slave.physicalAge <= 3) { - return true; - } else if (slave.weight > 160+(slave.muscles/15) && slave.physicalAge <= 12) { - return true; - } else if (slave.weight > 185+(slave.muscles/10) && slave.physicalAge < 18) { - return true; - } else { - return false; - } -}; - -window.tooBigBreasts = /** @param {App.Entity.SlaveState} slave */ function (slave) { - if (!slave) { - return null; - } else if (slave.boobs > 30000+(slave.muscles*100) && slave.physicalAge >= 18) { - return true; - } else if (slave.boobs > 5000+(slave.muscles*10) && slave.physicalAge <= 3) { - return true; - } else if (slave.boobs > 10000+(slave.muscles*20) && slave.physicalAge <= 12) { - return true; - } else if (slave.boobs > 20000+(slave.muscles*50) && slave.physicalAge < 18) { - return true; - } else { - return false; - } -}; - -window.tooBigBelly = /** @param {App.Entity.SlaveState} slave */ function (slave) { - if (!slave) { - return null; - } else if (slave.belly >= 450000+(slave.muscles*2000) && slave.physicalAge >= 18) { - return true; - } else if (slave.belly >= 350000+(slave.muscles*1000) && slave.physicalAge >= 13) { - return true; - } else if (slave.belly >= 30000+(slave.muscles*500) && slave.physicalAge <= 3) { - return true; - } else if (slave.belly >= 150000+(slave.muscles*800) && slave.physicalAge <= 12) { - return true; - } else { - return false; - } -}; - -window.tooBigBalls = /** @param {App.Entity.SlaveState} slave */ function (slave) { - if (!slave) { - return null; - } else if (slave.balls >= 30+(slave.muscles*.3) && slave.physicalAge <= 3) { - return true; - } else if (slave.balls >= 60+(slave.muscles*.5) && slave.physicalAge <= 12) { - return true; - } else if (slave.balls >= 90+(slave.muscles*.7)) { - return true; - } else { - return false; - } -}; - -window.tooBigDick = /** @param {App.Entity.SlaveState} slave */ function (slave) { - if (!slave) { - return null; - } else if (slave.dick >= 20+(slave.muscles*.1) && slave.physicalAge <= 3 && slave.dick !== 0) { - return true; - } else if (slave.dick >= 45+(slave.muscles*.3) && slave.physicalAge <= 12) { - return true; - } else if (slave.dick >= 68+(slave.muscles*.4)) { - return true; - } else { - return false; - } -}; - -window.tooBigButt = /** @param {App.Entity.SlaveState} slave */ function (slave) { - if (!slave) { - return null; - } else if (slave.butt > 10 && slave.physicalAge <= 3) { - return true; - } else if (slave.butt > 14 && slave.physicalAge <= 12) { - return true; - } else { - return false; - } -}; - window.relationTargetWord = /** @param {App.Entity.SlaveState} slave */ function (slave) { if (!slave) { return null; @@ -602,12 +319,6 @@ window.lispReplace = function (text) { return text; }; -window.isVegetable = /** @param {App.Entity.SlaveState} slave */ function (slave) { - slave = slave || State.variables.activeSlave; - if(!slave) { return false; } - return (slave.fetish === 'mindbroken'); -}; - window.repGainSacrifice = /** @param {App.Entity.SlaveState} slave */ function (slave, arcology) { slave = slave || State.variables.activeSlave; arcology = arcology || State.variables.arcologies[0];