diff --git a/.gitignore b/.gitignore index 0ea52ffc09be35e3a67aa3da71d84cf88658c5d2..9ca9221b11eb6d8b3aa5092a332181bd8e1dc33e 100644 --- a/.gitignore +++ b/.gitignore @@ -74,3 +74,4 @@ src/002-config/fc-version.js.commitHash.js # legacy devNotes/legacy files/* +/.vs diff --git a/CHANGELOG.md b/CHANGELOG.md index 1be145f973e5bc1abde4af7d8e432ecc3c6b285c..76d661582734b1cff67b5060985db2dc0fb492a0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) ## Unreleased +*slave's maximum possible erection can now be modified by slave's height and health (toggleable in options) + ## 0.10.7.1-4.0.0-alpha.26 - 2023-06-17 * overhauled incubator tank controls diff --git a/js/003-data/gameVariableData.js b/js/003-data/gameVariableData.js index 42f05255f653cc801abf427e3aba014a528378bd..2af8946315172c7404380f51ebb30d5164898c57 100644 --- a/js/003-data/gameVariableData.js +++ b/js/003-data/gameVariableData.js @@ -229,6 +229,7 @@ App.Data.defaultGameStateVariables = { verticalizeArcologyLinks: 0, weightAffectsAssets: 1, oversizedBoobShrinkage: 0, + maxErectionSizeOption: 0, curativeSideEffects: 1, disableLongDamage: 1, // Last-used strings in Locate Slave diff --git a/src/002-config/fc-version.js b/src/002-config/fc-version.js index 259cab165c4a33c90f2c92e55e7c760820843f73..135927e677a4b936c6c1d4553d6b3c5caedc18d7 100644 --- a/src/002-config/fc-version.js +++ b/src/002-config/fc-version.js @@ -2,5 +2,5 @@ App.Version = { base: "0.10.7.1", // The vanilla version the mod is based off of, this should never be changed. pmod: "4.0.0-alpha.26", commitHash: null, - release: 1196, // When getting close to 2000, please remove the check located within the onLoad() function defined at line five of src/js/eventHandlers.js. + release: 1197, // When getting close to 2000, please remove the check located within the onLoad() function defined at line five of src/js/eventHandlers.js. }; diff --git a/src/endWeek/player/prDrugs.js b/src/endWeek/player/prDrugs.js index 587a11fa1b740e60df127987d7a500aeb82c0fd1..347dd5de9fdbd385dd1e7198cca129d719f6e3be 100644 --- a/src/endWeek/player/prDrugs.js +++ b/src/endWeek/player/prDrugs.js @@ -70,13 +70,13 @@ App.EndWeek.Player.drugs = function(PC = V.PC) { if (PC.dick === 0) { r.push(`You have no dick, so priapism agents are useless to you. <span class="noteworthy">You stop taking them.</span>`); PC.drugs = "no drugs"; - } else if (PC.dick > 10) { + } else if (PC.dick > maxErectionSize(PC)) { r.push(`Taking priapism agents started to get your enormous dick erect, but you never find out if they succeeded as the amount of blood it took to get that hard caused you to black out. <span class="noteworthy">You hastily stop taking them.</span>`); PC.drugs = "no drugs"; } else { r.push(`Taking priapism agents keeps you hard at all times. Taking them too often leaves your dick <span class="health dec">painfully sensitive,</span> though.`); healthDamage(PC, 5); - if (PC.dick >= 7) { + if (PC.dick >= maxErectionSize(PC) + 1) { r.push(`Your oversized cock also requires a proportionally large amount of blood to achieve erection <span class="health dec">leaving you lightheaded and suffering from low blood pressure.</span>`); healthDamage(PC, PC.dick * 5); } diff --git a/src/endWeek/saServeYourOtherSlaves.js b/src/endWeek/saServeYourOtherSlaves.js index 8d27e5c4c0b58323c886d239460751564ba0f9d2..59cfb5015b0c0de95c3fa2d664ce26f4273ddce7 100644 --- a/src/endWeek/saServeYourOtherSlaves.js +++ b/src/endWeek/saServeYourOtherSlaves.js @@ -1218,7 +1218,7 @@ App.SlaveAssignment.serveYourOtherSlaves = function saServeYourOtherSlaves(slave } else { r.push(`Since ${domName} loves hard cocks, ${subName} finds ${himself} asked to get hard and fuck constantly. ${He} spends the week doing ${his} best to satisfy ${domName}'s constant demands. <span class="hotpink">${domName} enjoys having a nice dick right at hand,</span> and won't leave it alone.`); } - } else if (slave.dick > 6 && slave.balls > 0) { + } else if (slave.dick > maxErectionSize(slave) && slave.balls > 0) { if (slave.devotion < -20) { r.push(`Since ${domName} loves cocks, even big soft ones, ${subName} finds ${himself} being sucked, groped, and cruelly taunted for ${his} inability to get hard. ${He} spends the week trying to avoid ${domName}'s abuse of ${his} poor oversized penis. <span class="hotpink">${domName} enjoys having a nice dick right at hand,</span> even if it's only good for taunting and torture.`); } else if (slave.devotion <= 50) { diff --git a/src/events/RESS/PAFlirting.js b/src/events/RESS/PAFlirting.js index 6c87b9b3aa69e16dd48e82bf359ddcd393fd52e8..74e0343fbd6f453101c4f1ed23a66ede0c0a4de0 100644 --- a/src/events/RESS/PAFlirting.js +++ b/src/events/RESS/PAFlirting.js @@ -62,7 +62,7 @@ App.Events.RESSPAFlirting = class RESSPAFlirting extends App.Events.BaseEvent { } if (canAchieveErection(eventSlave)) { r.push(Spoken(eventSlave, `"I'd love to be that big."`)); - } else if (eventSlave.dick > 6) { + } else if (eventSlave.dick > maxErectionSize(eventSlave)) { r.push(Spoken(eventSlave, `"I wish mine could get that hard."`)); } else { r.push(Spoken(eventSlave, `"I can't look away."`)); diff --git a/src/events/RESS/devotedNympho.js b/src/events/RESS/devotedNympho.js index 12d3443d043a192e7d28ee046abed8b6c6266a1a..3386e6b5b961d0b1672875ef92c9e61de7e141e8 100644 --- a/src/events/RESS/devotedNympho.js +++ b/src/events/RESS/devotedNympho.js @@ -68,7 +68,7 @@ App.Events.RESSDevotedNympho = class RESSDevotedNympho extends App.Events.BaseEv r.push(`${His} erection waves around in front of ${him} as ${he} moves, its head bobbing lewdly up and down with each step.`); } else if (canAchieveErection(eventSlave)) { r.push(`${His} erection is so pathetically small that it stands out straight and stiff as ${he} moves.`); - } else if (eventSlave.dick > 6) { + } else if (eventSlave.dick > maxErectionSize(eventSlave)) { r.push(`${His} oversized dick is as engorged as ${his} body can manage.`); } else if (eventSlave.dick > 0) { r.push(`${He}'s actually partway erect despite ${his} impotence, a remarkable testament to ${his} need.`); diff --git a/src/events/RESS/forbiddenMasturbation.js b/src/events/RESS/forbiddenMasturbation.js index 955d35a905fbf9e23aaf88d279b42c80a0224feb..646f02f48a0cd5ee1d3860b13f4f6a57ad05b277 100644 --- a/src/events/RESS/forbiddenMasturbation.js +++ b/src/events/RESS/forbiddenMasturbation.js @@ -138,7 +138,7 @@ App.Events.RESSForbiddenMasturbation = class RESSForbiddenMasturbation extends A } } r.push(r.pop() + `.`); - } else if (!canAchieveErection(eventSlave) && eventSlave.dick > 6) { + } else if (!canAchieveErection(eventSlave) && eventSlave.dick > maxErectionSize(eventSlave)) { r.push(`Since ${his} dick requires far too much blood to get erect, ${he}'s furiously massaging the semi-engorged monster.`); } else if (!canAchieveErection(eventSlave) && eventSlave.dick > 0) { r.push(`Since ${he}'s can't get it up, all ${he} can manage is rubbing ${his} soft dick`); diff --git a/src/events/RESS/nightVisit.js b/src/events/RESS/nightVisit.js index f79f215aa323e1c0045a78e281eb5ec59491834c..6ebe99b176208c5b8d96944cd46d52f8578e3178 100644 --- a/src/events/RESS/nightVisit.js +++ b/src/events/RESS/nightVisit.js @@ -199,7 +199,7 @@ App.Events.RESSNightVisit = class RESSNightVisit extends App.Events.BaseEvent { r.push(`${his} impotent dick already streaming watery precum.`); } else if (eventSlave.dick > 0 && eventSlave.balls === 0) { r.push(`${his} dick pathetically soft despite ${his} obvious arousal.`); - } else if (eventSlave.dick > 6 && !canAchieveErection(eventSlave)) { + } else if (eventSlave.dick > maxErectionSize(eventSlave) && !canAchieveErection(eventSlave)) { r.push(`${his} dick swollen with arousal yet too large to become erect.`); } else if (eventSlave.dick > 0 && !canAchieveErection(eventSlave)) { r.push(`${his} dick tipped with precum yet enable to get hard.`); diff --git a/src/events/RESS/obedientAddict.js b/src/events/RESS/obedientAddict.js index de62f5f05925078f050b309550202aaddbdcee0d..5748d53dab33fbfadd9039bde200a0ceb874d5e3 100644 --- a/src/events/RESS/obedientAddict.js +++ b/src/events/RESS/obedientAddict.js @@ -61,7 +61,7 @@ App.Events.RESSObedientAddict = class RESSObedientAddict extends App.Events.Base } else if (canAchieveErection(eventSlave)) { if (eventSlave.dick > 9) { t.push(`${His} inhuman cock is as engorged as physically possible given its size, threatens to knock ${him} unconscious from the sheer amount of blood diverted into it, and doesn't shrink at all when cum weakly splurts from its tip.`); - } else if (eventSlave.dick > 6) { + } else if (eventSlave.dick > maxErectionSize(eventSlave)) { t.push(`${His} monstrous cock is agonizingly erect, threatens to knock ${him} unconscious from the sheer amount of blood is takes ${him} to get hard, and doesn't soften at all when ${he} spatters ${his} own chest with cum.`); } else if (eventSlave.dick > 4) { t.push(`${His} huge cock is agonizingly erect and doesn't soften at all when ${he} spatters ${his} own chest with cum.`); diff --git a/src/events/RESS/review/bondedLove.js b/src/events/RESS/review/bondedLove.js index 64c85313302a6eecbae623f1094172b96581a04e..2043374088e66f8f6be38c61307d9ed0bf731e87 100644 --- a/src/events/RESS/review/bondedLove.js +++ b/src/events/RESS/review/bondedLove.js @@ -128,7 +128,7 @@ App.Events.RESSBondedLove = class RESSBondedLove extends App.Events.BaseEvent { if (eventSlave.dick > 0) { if (canAchieveErection(eventSlave)) { r.push(`${his} cock is soft for once, probably from the shower; it`); - } else if (eventSlave.dick > 6) { + } else if (eventSlave.dick > maxErectionSize(eventSlave)) { r.push(`${his} soft python of a cock`); } else { r.push(`${his} soft bitchclit`); diff --git a/src/events/RESS/review/dickgirlPC.js b/src/events/RESS/review/dickgirlPC.js index 79e3e579f15479b312131cfd99827a095c979819..6a78eaca8ab3feb3cc5ae77370feb93825621a45 100644 --- a/src/events/RESS/review/dickgirlPC.js +++ b/src/events/RESS/review/dickgirlPC.js @@ -336,7 +336,7 @@ App.Events.RESSDickgirlPC = class RESSDickgirlPC extends App.Events.BaseEvent { r.push(`pussy moistening`); } else if (canAchieveErection(eventSlave) && !(eventSlave.chastityPenis)) { r.push(`dick hardening`); - } else if (eventSlave.dick > 6 && !canAchieveErection(eventSlave) && !(eventSlave.chastityPenis)) { + } else if (eventSlave.dick > maxErectionSize(eventSlave) && !canAchieveErection(eventSlave) && !(eventSlave.chastityPenis)) { r.push(`dick struggling to engorge`); } else if (eventSlave.dick > 0 && !canAchieveErection(eventSlave) && !(eventSlave.chastityPenis)) { r.push(`girldick starting to ooze precum`); diff --git a/src/events/RESS/review/happyDance.js b/src/events/RESS/review/happyDance.js index 51fe598789edc47f09cffa9161cb58392dade722..0975533e26c2d04c2b1cb584c9371921e14981e7 100644 --- a/src/events/RESS/review/happyDance.js +++ b/src/events/RESS/review/happyDance.js @@ -169,7 +169,7 @@ App.Events.RESSHappyDance = class RESSHappyDance extends App.Events.BaseEvent { r.push(`chastity cage sways`); } else if (canAchieveErection(eventSlave)) { r.push(`erection waves back and forth`); - } else if (eventSlave.dick > 6) { + } else if (eventSlave.dick > maxErectionSize(eventSlave)) { r.push(`soft python of a cock swings lewdly`); } else { r.push(`bitchclit bounces`); diff --git a/src/events/RESS/review/showerSlip.js b/src/events/RESS/review/showerSlip.js index 46455d095cf398655af67639b5653e3c1c51ba1f..ea9d5d14d8f014bf16b19ad73a4325977a3078e9 100644 --- a/src/events/RESS/review/showerSlip.js +++ b/src/events/RESS/review/showerSlip.js @@ -382,7 +382,7 @@ App.Events.RESSShowerSlip = class RESSShowerSlip extends App.Events.BaseEvent { r.push(`a dribble of cum flowing from the tip of ${his} chastity cage.`); } else if (canAchieveErection(eventSlave)) { r.push(`${his} stiffly waving cock jetting cum onto the floor.`); - } else if (eventSlave.dick > 6) { + } else if (eventSlave.dick > maxErectionSize(eventSlave)) { r.push(`${his} absurd cock twitching lazily as ${his} ejaculate makes it down its length.`); } else if (eventSlave.balls === 0) { r.push(`${his} bitchclit dribbling weakly.`); diff --git a/src/events/RETS/reCockmilkInterception.js b/src/events/RETS/reCockmilkInterception.js index 81b7daac0298b85efdacad379c874a21db2808f5..97c577da6f33287b32389c1adf9ccf87b914a524 100644 --- a/src/events/RETS/reCockmilkInterception.js +++ b/src/events/RETS/reCockmilkInterception.js @@ -131,7 +131,7 @@ App.Events.RETSCockmilkInterception = class RETSCockmilkInterception extends App t.push(`rather modest cock,`); } t.push(`so ${slave.slaveName} has ${his} head buried between ${subSlave.slaveName}'s quivering thighs. ${He} isn't sucking ${subSlave.slaveName}'s dick so much as ${he}'s nursing at it, keeping it entirely within ${his} mouth and applying powerful suction.`); - } else if (subSlave.dick > 8) { + } else if (subSlave.dick > maxErectionSize(slave) + 2) { t.push(`has an inhumanly monstrous penis that the poor slave's cardiovascular system couldn't possibly bring`); if (slave.drugs === "priapism agents") { t.push(`erect without outside aid; aid like the priapism agents ${he2} is currently on. ${slave.slaveName} has forced as much of its head into ${his} mouth as ${he} can, and is sucking lustily while trying not to choke.`); diff --git a/src/facilities/dairy/freeRangeDairyAssignmentScene.js b/src/facilities/dairy/freeRangeDairyAssignmentScene.js index b6ee3b96847280c50b324904b6cb9f84418d0c61..b9c1d7f3da08898b7514957a64fc1f56aa693682 100644 --- a/src/facilities/dairy/freeRangeDairyAssignmentScene.js +++ b/src/facilities/dairy/freeRangeDairyAssignmentScene.js @@ -365,9 +365,9 @@ App.Facilities.Dairy.freeRangeAssignmentScene = function(slave) { r.push(`The milking machine uses suction to draw ${his} dick into the receptacle.`); if (slave.dick > 10) { r.push(`${His} dick is too large to even consider getting hard again, so it just attaches firmly to the tip.`); - } else if (slave.dick > 8) { + } else if (slave.dick > maxErectionSize(slave) + 2) { r.push(`${He} is on the verge of passing out as most of ${his} blood volume rushes into ${his} dick. ${He} cannot possibly reach a full erection without the machine's help. ${He} fights to stay awake so ${he} can enjoy ${his} inhuman cock at throbbing hardness.`); - } else if (slave.dick > 6) { + } else if (slave.dick > maxErectionSize(slave)) { r.push(`${He} feels dizzy as most of ${his} blood volume rushes into ${his} dick. It is not easy for ${his} body to maintain an erection. But with the machine's help, ${he} can produce a full throbbing hard-on.`); } else { r.push(`It brings ${him} to a full, throbbing erection within seconds.`); diff --git a/src/facilities/dairy/industrialDairyAssignmentScene.js b/src/facilities/dairy/industrialDairyAssignmentScene.js index c82dbdd9e0226d41cf84f2982fd4f4f613f1f207..570e52d5b8ed16e9a1a8584ab40234bb2c184683 100644 --- a/src/facilities/dairy/industrialDairyAssignmentScene.js +++ b/src/facilities/dairy/industrialDairyAssignmentScene.js @@ -444,9 +444,9 @@ App.Facilities.Dairy.industrialAssignmentScene = function(slave) { if (slave.balls > 0) { if (slave.dick > 0) { r.push(`The first drugs hiss into ${him},`); - if (slave.dick > 8) { + if (slave.dick > maxErectionSize(slave) + 2) { r.push(`and ${his} eyes roll back as much of ${his} blood volume rushes into ${his} dick, though it remains soft.`); - } else if (slave.dick > 6) { + } else if (slave.dick > maxErectionSize(slave)) { r.push(`and ${he} goes limp as much of ${his} blood volume rushes to bring ${him} to half mast.`); } else { r.push(`bringing ${him} to a full erection.`); diff --git a/src/gui/options/options.js b/src/gui/options/options.js index e1157975319a9989e70ee4e658c5faa48340ccff..ee30f25109765503a78f02baee60583473f35433 100644 --- a/src/gui/options/options.js +++ b/src/gui/options/options.js @@ -1068,6 +1068,14 @@ App.Intro.contentAndFlavor = function(isIntro) { .addValue("Enabled", 1).on().addValue("Disabled", 0).off() .addComment("If enabled, many drugs will cause harmful, though curable, carcinogen buildup and genomic damage over time."); + options.addOption("Size of the slaves maximum possilbe erection is influenced by", "maxErectionSizeOption") + .addValueList([ + ["nothing", 0], + ["slave's height", 1], + ["slave's height and health", 2] + ]) + .addComment("Changes if a slaves height (and health) influences their ability to maintain an erection or if it is static."); + el.append(options.render()); App.UI.DOM.appendNewElement("h2", el, `Flavour`); diff --git a/src/js/statsChecker/statsChecker.js b/src/js/statsChecker/statsChecker.js index 2e9cbb7df129c67cbeb0279d33aeb50f73ade739..3bd63d47ec8bc70637a13c1ae2f84257be836128 100644 --- a/src/js/statsChecker/statsChecker.js +++ b/src/js/statsChecker/statsChecker.js @@ -637,18 +637,44 @@ globalThis.isFertile = function(slave) { return false; }; +/** + * returns the maximum dick size the slave can maintain erect + * @param {FC.HumanState} slave + * @returns {number} + */ +globalThis.maxErectionSize = function(slave) { + // solved dickBodyRatio formula of canArchieveErection() for slave.dick; "2" is the ratio checked for in canArchieveErection() + if (V.maxErectionSizeOption == 1) { //only height + return Math.floor(2 * ((slave.height / 165) * 3)); + } else if (V.maxErectionSizeOption == 2) { //height and health + return Math.floor((2 * ((slave.height / 165) * 3)) * (1 + (slave.muscles / 400)) * (1 + (slave.weight / 2000)) * (1 + (slave.health.health / 400))); + } + return 6; +}; + /** * @param {FC.HumanState} slave * @returns {boolean} */ globalThis.canAchieveErection = function(slave) { + + let dickBodyRatio; + + if (V.maxErectionSizeOption == 1) { //only height + dickBodyRatio = slave.dick / ((slave.height / 165) * 3);//dick to body ratio normalized to an average height of 165 and an average dick size of 3 ==> with height 165 a dick size of 3 is 1.0 and a size of 6 is 2.0 + } else if (V.maxErectionSizeOption == 2) { //height and health + dickBodyRatio = (slave.dick / ((slave.height / 165) * 3)) * (1 + (slave.muscles / 400)) * (1 + (slave.weight / 2000)) * (1 + (slave.health.health / 400)); //muscles modify [-25%, 25%], weight modify [-5%, 5%], health modify [-25%, 25%] + } else { + dickBodyRatio = slave.dick / 3; //don't normalize if not toggled + } + if (!slave) { return null; - } else if (slave.dick <= 0) { + } else if (slave.dick <= 0) {//needs dick to be erect return false; - } else if (slave.dick < 11 && slave.drugs === "priapism agents") { + } else if (dickBodyRatio <= 4 / 3 && slave.drugs === "priapism agents") {//dick size 11 has a dickBodyRatio of 3.3333.... return true; - } else if (slave.dick > 6) { + } else if (dickBodyRatio > 2.0) {//checked for 6 before and dicksize 6 results in normalized dickBodyRatio of 2.0 return false; } else if (slave.aphrodisiacs > 1 || (slave.inflationType === "aphrodisiac" && slave.inflation >= 2)) { return true; diff --git a/src/npc/descriptions/crotch/dick.js b/src/npc/descriptions/crotch/dick.js index b5a761464e8b08c3bd28eb8439bc1639571111d5..b983a10345f3e7ac163c87ec58b81929fc4b1043 100644 --- a/src/npc/descriptions/crotch/dick.js +++ b/src/npc/descriptions/crotch/dick.js @@ -498,9 +498,9 @@ App.Desc.dick = function(slave, descType = DescType.NORMAL) { if (slave.mpreg === 1 && canAchieveErection(slave) && slave.bellyPreg >= 10000 && slave.prostate > 0) { r.push(`${His} huge pregnancy puts pressure on ${his} prostate at all times, leaving ${him} fully erect and trailing cum.`); } else if ((slave.assignment === Job.DAIRY) && (V.dairyStimulatorsSetting > 1) && canAchieveErection(slave)) { - if (slave.dick > 8) { + if (slave.dick > maxErectionSize(slave) + 2) { r.push(`${He}'s soft despite the drugs ejaculated by the dildo up ${his} asshole, since ${his} cock is too huge to ever become hard. The soft monstrosity simply exists to gush cum into a catch basin.`); - } else if (slave.dick > 6) { + } else if (slave.dick > maxErectionSize(slave)) { r.push(`${He}'s only half hard despite the drugs ejaculated by the dildo up ${his} asshole, and ${he} must feel very faint, since even that requires much of ${his} blood volume.`); } else { r.push(`The drugs ejaculated by the dildo up ${his} asshole keep ${his} almost permanently hard, only letting ${him} go soft right after ejaculation.`); @@ -509,14 +509,14 @@ App.Desc.dick = function(slave, descType = DescType.NORMAL) { } else if (slave.chastityPenis === 1) { r.push(App.Desc.dickAccessory(slave)); } else if (slave.drugs === "priapism agents") { - if (slave.dick > 8) { + if (slave.dick > maxErectionSize(slave) + 2) { r.push(`${He}'s painfully hard, despite the size of ${his} cock, and on the brink of losing consciousness, since a dangerous amount of ${his} blood volume is required to even get it to this point.`); - } else if (slave.dick > 6) { + } else if (slave.dick > maxErectionSize(slave)) { r.push(`${He}'s painfully erect, or as erect that a cock of that size could be, and ${he} must feel very faint, since even that requires much of ${his} blood volume.`); } else { r.push(`${He}'s painfully erect.`); } - } else if (slave.dick > 8) { + } else if (slave.dick > maxErectionSize(slave) + 2) { r.push(`${He}'s too huge for ${his} cardiovascular system to create even the beginnings of an erection. ${His} cock is a soft, sensitive monolith`); if (slave.dick * 6 > slave.height) { r.push(`bigger than ${his} body,`); @@ -602,7 +602,7 @@ App.Desc.dick = function(slave, descType = DescType.NORMAL) { } else if ((slave.drugs === "testicle enhancement") || (slave.drugs === "hyper testicle enhancement")) { r.push(`Unfortunately for the poor slave, ${he}'s also on drugs that cause overproduction of cum. Since ${his} soft dick makes it difficult for ${him} to ejaculate properly, ${he}'s almost frantic with discomfort, and ${his} dickhead is dribbling excessive precum.`); } - } else if (slave.dick > 6) { + } else if (slave.dick > maxErectionSize(slave)) { r.push(`${His} cock is flirting with the limit of what the human cardiovascular system can bring erect: the best ${he} can manage is a half-hardness that's too soft to meaningfully fuck anything. If ${he} could somehow get fully erect, there are few holes ${he} could safely penetrate, anyway.`); if (slave.prostate > 2) { r.push(`The area above ${his} crotch has a slight swell to it from ${his} prostate implant. A constant dribble of precum drips from the tip of ${his} cock; ${his} artificially hyperactive prostate keeps ${him} that way.`); diff --git a/src/npc/descriptions/drugs.js b/src/npc/descriptions/drugs.js index 81bf52aafef89e2703f75e51cdb35dbaef71b0a3..9b13f023c495b63bfae933e1b26f8a5dce59f943 100644 --- a/src/npc/descriptions/drugs.js +++ b/src/npc/descriptions/drugs.js @@ -23,9 +23,9 @@ App.Desc.drugs = function(slave) { if (slave.chastityPenis === 1) { r.push(`${He} can do nothing but writhe in agony at the pain of ${his} priapismic erection trapped in ${his} chastity cage.`); } else { - if (slave.dick > 8) { + if (slave.dick > maxErectionSize(slave) + 2) { r.push(`${His} oversized dick is painfully engorged to a state of semi-hardness due to the priapism agents.`); - } else if (slave.dick > 6) { + } else if (slave.dick > maxErectionSize(slave)) { r.push(`${He} sports a painful, oversized erection due to the priapism agents.`); } else { r.push(`${He} sports a throbbing, painful erection due to the priapism agents.`); diff --git a/src/npc/interaction/fSlaveSelfImpreg.js b/src/npc/interaction/fSlaveSelfImpreg.js index 76f5b55a10411474f90ccbc051d028e5c6d4a251..20e9616ff24f7a829abbbaf0f045d0a0c131e9f9 100644 --- a/src/npc/interaction/fSlaveSelfImpreg.js +++ b/src/npc/interaction/fSlaveSelfImpreg.js @@ -138,7 +138,7 @@ App.Interact.fSlaveSelfImpreg = function(slave) { } } else if (coop) { if (enjoy) { - if (slave.dick > 6 && slave.balls <= 4) { + if (slave.dick > maxErectionSize(slave) && slave.balls <= 4) { r.push(`Although ${he} is aroused by the idea of impregnating ${himself}, ${slave.slaveName}'s cock is simply too large to easily become erect. A quick injection of vasodilators later, and ${he}'s ready to go. Because ${he}'s so eager, you simply stand back and let the magic happen.`); if ( (slave.vagina === 0 && slave.mpreg !== 1) || @@ -263,13 +263,13 @@ App.Interact.fSlaveSelfImpreg = function(slave) { } } else { if (slave.devotion > 50) { - if (slave.dick > 6) { + if (slave.dick > maxErectionSize(slave)) { r.push(`No matter how hard ${he} tries, ${slave.slaveName}'s dick is simply too large for ${him} to achieve erection on ${his} own. You're about to inject ${him} with a vasodilator to remedy the problem, when ${he} tries to take the syringe from your hand. Normally such impudence would be a grave violation, but it's obvious that ${his} actions are only motivated by loyalty — ${he} wants to fix this problem ${himself} so ${he} can feel like ${he} isn't failing you because of a physical inadequacy that is, admittedly, not ${his} fault. You relinquish the syringe and watch as ${he} injects ${himself} with the drugs necessary to achieve a full erection.`); } else { r.push(`Despite a complete lack of sexual interest in the procedure, ${slave.slaveName} is able to quickly bring ${himself} to full erectness without any help.`); } } else { - if (slave.dick > 6) { + if (slave.dick > maxErectionSize(slave)) { r.push(`${slave.slaveName}`); r.push(`doesn't try all that hard to achieve erection, but it's obvious that the sheer size of ${his} cock would make it impossible anyway. ${He} silently cooperates as you inject ${him} with vasodilators to forcibly make ${him} erect.`); } else { @@ -311,7 +311,7 @@ App.Interact.fSlaveSelfImpreg = function(slave) { } else { if (enjoy) { r.push(`Although ${slave.slaveName} is anything but eager to cooperate, you don't have to drag ${him}. It's obvious that ${his} resistance is conflicting with the raw desire to fill ${himself} with ${his} own seed.`); - if (slave.dick > 6 && slave.balls <= 4) { + if (slave.dick > maxErectionSize(slave) && slave.balls <= 4) { r.push(`While the size of ${his} cock makes it necessary for you to inject ${him} with vasodilators for ${him} to become properly erect, ${his} resistance is minimal.`); if (slave.vagina === 0) { r.push(`You instruct ${him} to fuck ${himself}; by this point, ${he}'s too far gone to object, even though obeying will rob ${him} of ${his} virginity. ${His}`); @@ -342,7 +342,7 @@ App.Interact.fSlaveSelfImpreg = function(slave) { } r.push(`Without another partner to thrust against, ${slave.slaveName} has to use ${his} remarkable shaft like a dildo, sliding it in and out of ${his} increasingly dripping sex. The potent mix of shame and arousal drives ${him} to orgasm quickly, and only a couple of minutes pass before you see ${his} shaft throbbing as ${he} fucks a baby into ${his} own belly.`); } else { - if (slave.dick > 6) { + if (slave.dick > maxErectionSize(slave)) { r.push(`${slave.slaveName}'s balls are too large to make any other options possible, but ${he} is still too large to achieve erection easily. You can't tell if ${he} is disappointed, or relieved, by this fact, but a quick injection of vasodilators makes the question moot either way.`); } else { r.push(`${His} cock is rigidly erect almost immediately, a fact which brings a confusing mixture of shame and arousal to ${his} face.`);