diff --git a/devNotes/usefulJSFunctionDocumentation.md b/devNotes/usefulJSFunctionDocumentation.md index 54fd65dad61acfd9ad0cb4fe1eb5319641ee934c..e8a9181daa3bab7b22f465b7de7b2face8cd12c6 100644 --- a/devNotes/usefulJSFunctionDocumentation.md +++ b/devNotes/usefulJSFunctionDocumentation.md @@ -181,6 +181,26 @@ SlaveTitle(slave) // Returns the slave's descriptive title. relativeTerm(slave1, slave2) // Returns the term for slave2's relation to slave1. (daughter, mother, etc.) +vaginaDesc(slave) // Returns the description of the slave's vagina. + +dickDesc(slave) // Returns the description of the slave's penis. + +ballsDesc(slave) // Returns the description of the slave's testicles. + +clitDesc(slave) // Returns the description of the slave's clitoris. + +anusDesc(slave) // Returns the description of the slave's anus. + +boobsDesc(slave) // Returns the size descriptor of the slave's breasts. + +boobsDescLong(slave) // Returns the full description of the slave's breasts. + +buttDesc(slave) // Returns the description of the slave's bottom. + +lipsDesc(slave) // Returns the description of the slave's lips. + +bellyDesc(slave, withNoun, pregReference) // Returns the description of the slave's belly. + relationshipChecks [script] All work as expected with <<if X.rivalryTarget == $slaves[$i].ID>> preceding them. rivalryTerm(id) // Returns the rivalry term for the input. e.g. lines 99-100 of brothelReport. //<<if $Madam.rivalryTarget == $slaves[$i].ID>> diff --git a/src/facilities/farmyard/animals/animals.js b/src/facilities/farmyard/animals/animals.js index 2bddac7cad0caa4371b019bc0f92c07fa44c6dd8..a5a91a263be076cf17847af2cef432ec72081575 100644 --- a/src/facilities/farmyard/animals/animals.js +++ b/src/facilities/farmyard/animals/animals.js @@ -470,7 +470,7 @@ App.Facilities.Farmyard.animals = function() { } function dick() { - dickDiv.append(dickSize(), dickDesc()); + dickDiv.append(dickSize(), phallusDesc()); return dickDiv; @@ -490,7 +490,7 @@ App.Facilities.Farmyard.animals = function() { return dickSizeDiv; } - function dickDesc() { + function phallusDesc() { const dickDescDiv = document.createElement("div"); dickDescDiv.append( diff --git a/src/js/pregJS.js b/src/js/pregJS.js index 71195f1e2475e784d8660ec7dae35ccebb92d5c5..5e65439bfd51c70466b48f9378d607bb74ab08a0 100644 --- a/src/js/pregJS.js +++ b/src/js/pregJS.js @@ -16,51 +16,6 @@ globalThis.getPregBellySize = function(s) { return ((4 / 3) * (Math.PI) * (phi / 2) * (Math.pow((targetLen / 2), 3)) * fetuses); }; -/** - * @param {FC.HumanState} slave - * @returns {string} - */ -globalThis.bellyAdjective = function(slave) { - if (slave.belly >= 1500) { - if (slave.belly >= 1000000) { - if (slave.preg > slave.pregData.normalBirth / 4) { - return 'unfathomably distended, brimming with life'; - } else { - return `unfathomable`; - } - } else if (slave.belly >= 750000) { - if (slave.preg > slave.pregData.normalBirth / 4) { - return 'monolithic bulging'; - } else { - return `monolithic`; - } - } else if (slave.belly >= 600000) { - if (slave.preg > slave.pregData.normalBirth / 4) { - return 'titanic bulging'; - } else { - return `titanic`; - } - } else if (slave.belly >= 450000) { - if (slave.preg > slave.pregData.normalBirth / 4) { - return 'gigantic bulgy'; - } else { - return `gigantic`; - } - } else if (slave.belly >= 300000) { - return 'massive'; - } else if (slave.belly >= 100000) { - return 'giant'; - } else if (slave.belly >= 15000) { - return 'huge'; - } else if (slave.belly >= 10000) { - return 'big'; - } else { - return `swollen`; - } - } - return ""; -}; - /** calculates and returns expected ovum count during conception * @param {FC.HumanState} actor */ diff --git a/src/npc/descriptions/genericDescriptions.js b/src/npc/descriptions/genericDescriptions.js index a77951663f201e853eca308852d59706bc5ddd26..45c4fb43537991f6855630ceac0147daf4bea0e6 100644 --- a/src/npc/descriptions/genericDescriptions.js +++ b/src/npc/descriptions/genericDescriptions.js @@ -21,3 +21,521 @@ globalThis.beautiful = function(slave) { globalThis.pretty = function(slave) { return slave.genes === "XX" ? `pretty` : `good-looking`; }; + +/** Returns the description of the slave's vagina. + * @param {FC.HumanState} slave // admits V.PC as argument. + * @param {boolean} withNoun + * @returns {string} + */ +globalThis.vaginaDesc = function(slave, withNoun = true) { + if (!slave) {return "ERROR"} + let adj = []; + let noun = ["vagina", "pussy", "cunt", "pussy", "cunt"]; + if (slave.newVag && slave.vagina > 0) { + return `${jsEither(["hyperelastic", "highly adaptable"])}${withNoun ? " " + jsEither(noun) : ""}`; + } + if (slave.vagina < 0) { + return `non-existent${withNoun ? " front hole": ""}`; + } + switch (slave.vagina) { + case 0: + adj.push(`virgin${slave.counter.reHymen ? "-again" : ""}`, "virgin"); + noun.push("little slit", "flower"); + break; + case 1: + adj.push("tight", "narrow"); + break; + case 2: + adj.push("", "welcoming"); + break; + case 3: + adj.push("veteran"); + break; + case 4: + adj.push("baggy", "loose"); + break; + case 5: + case 6: + adj.push("gaping"); + break; + case 7: + case 8: + case 9: + adj.push("cavernous"); + break; + default: + adj.push("ruined"); + } + if (withNoun) { + if (slave.vagina > 2) { + noun.push("twat"); + } + return `${jsEither(adj)} ${jsEither(noun)}`; + } + return `${jsEither(adj)}`; +} + +/** + * Returns the description of the slave's penis + * @param {FC.HumanState} slave // admits V.PC as argument. + * @param {boolean} withNoun + * @returns {string} + */ +globalThis.dickDesc = function(slave, withNoun = true) { + if (!slave) {return "ERROR"} + let adj =[]; + let noun = ["dick", "dick", "cock", "cock", "penis", "prick", "phallus"] + if (slave.dick === 0) { + return `non-existent${withNoun ? " penis" : ""}`; + } + switch (slave.dick) { + case 1: + if (withNoun) { + return `${jsEither(["micropenis", "tiny prick", "tiny weenie"])}`; + } + return "tiny"; + break; + case 2: + adj.push("cute", "small"); + noun.push("weenie", "weenie"); + break; + case 3: + adj.push("", "average"); + break; + case 4: + adj.push("big"); + break; + case 5: + adj.push("huge"); + break; + case 6: + adj.push("gigantic"); + break; + case 7: + adj.push("massive"); + break; + case 8: + adj.push("titanic", "truly imposing"); + break; + case 9: + adj.push("monstrous", "absurd"); + break; + case 10: + adj.push("inhuman"); + break; + default: + adj.push("hypertrophied"); + } + if (withNoun) { + if (slave.dick > 5) { + noun.push("dong"); + } + return `${jsEither(adj)} ${jsEither(noun)}`; + } + return `${jsEither(adj)}`; +} + +/** + * Returns the description of the slave's anus + * @param {FC.HumanState} slave // admits V.PC as argument. + * @param {boolean} withNoun + * @returns {string} + */globalThis.anusDesc = function(slave, withNoun = true) { + if (!slave) {return "ERROR"} + let adj = []; + let noun = ["anus", "butthole", "asshole", "bumhole", "anus"]; + switch (slave.anus) { + case 0: + adj.push("virgin"); + noun =["sphincter", "anus", "anus"]; + break; + case 1: + adj.push("tight", "narrow", "welcoming", "puckered"); + break; + case 2: + adj.push("loose", "veteran"); + break; + case 3: + adj.push("very loose", "lax"); + break; + default: + adj.push("gaping", "gaped"); + } + if (withNoun) { + if (slave.anus > 1) { + noun.push("backdoor"); + if (slave.anus > 2) { + noun.push("asspussy"); + } + } + return `${jsEither(adj)} ${jsEither(noun)}`; + } + return `${jsEither(adj)}`; +} + +/** + * Returns the description of the slave's testicles + * @param {FC.HumanState} slave // admits V.PC as argument. + * @param {boolean} withNoun + * @returns {string} + */ +globalThis.ballsDesc = function(slave, withNoun = true) { + if (!slave) {return "ERROR"} + let adj =[]; + let noun = ["balls", "balls", "balls", "testicles"] + if (slave.balls === 0) { + return `non-existent${withNoun ? " testes" : ""}`; + } + switch (slave.balls) { + case 1: + return `vestigial${withNoun ? " " + jsEither(["testes", "testicles"]) : ""}`; + break; + case 2: + adj.push("small"); + noun.push("testes"); + break; + case 3: + adj.push("", "average", "standard"); + break; + case 4: + adj.push("large"); + break; + case 5: + adj.push("massive"); + break; + case 6: + adj.push("huge"); + break; + case 7: + adj.push("giant"); + break; + case 8: + adj.push("enormous"); + break; + case 9: + adj.push("monstrous"); + break; + default: + adj.push("overly massive"); + } + if (withNoun) { + if (slave.balls < 6) { + noun.push("nuts"); + } + return `${jsEither(adj)} ${jsEither(noun)}`; + } + return `${jsEither(adj)}`; +} + +/** + * Returns the size descriptor of the slave's breasts + * @param {FC.HumanState} slave // admits V.PC as argument. + * @param {boolean} withNoun + * @returns {string} + */ +globalThis.boobsDesc = function(slave, withNoun = true) { + if (!slave) {return "ERROR"} + if (slave.boobs < 300 && slave.hormoneBalance < -20) { + return `masculine${withNoun ? " chest" : ""}`; + } + if (withNoun) { + return App.Desc.boobBits.noun(slave.boobs, false, true); + } + return App.Desc.boobBits.adjective(slave.boobs); +} + +/** + * Returns the full description of the slave's breasts + * @param {FC.HumanState} slave // admits V.PC as argument. + * @param {boolean} withNoun + * @param {boolean} withShape + * @param {boolean} withCup + * @param {boolean} withSurgery + * @param {boolean} withLactation + * @returns {string} + */ +globalThis.boobsDescLong = function(slave, withNoun = true, withShape = true, withCup = true, withSurgery = true, withLactation = true) { + if (!slave) {return "ERROR"} + if (slave.boobs < 300 && slave.hormoneBalance < -20) { + return `masculine${withNoun ? " chest" : ""}`; + } + let surgery = (slave.boobsImplant && withSurgery) ? "surgery improved " : (withSurgery ? "natural " : ""); + let milk = (slave.lactation && withLactation) ? "milk laden " : ""; + let shape = (slave.boobShape && withShape) ? slave.boobShape + " " : ""; + if (withNoun) { + return `${milk}${surgery}${shape}${App.Desc.boobBits.noun(slave.boobs, withCup, true)}`; + } + return `${milk}${surgery}${shape}${withCup ? App.Desc.boobBits.cup(slave.boobs) + " " : ""}${App.Desc.boobBits.adjective(slave.boobs)}`; +} + +/** + * Returns the description of the slave's butt + * @param {FC.HumanState} slave // admits V.PC as argument. + * @param {boolean} withNoun + * @returns {string} + */ +globalThis.buttDesc = function(slave, withNoun = true) { + if (!slave) {return "ERROR"} + let adj =[]; + let noun = ["butt", "butt", "butt", "ass", "rear"] + switch (slave.butt) { + case 0: + return `flat${withNoun ? " " + jsEither(["bottom"]) : ""}`; + break; + case 1: + adj.push("small"); + break; + case 2: + adj.push("plump", "curved"); + break; + case 3: + adj.push("round", "curvy", "big bubble", "big bubble"); + break; + case 4: + adj.push("huge", "massive"); + break; + case 5: + adj.push("enormous", "cushion-like"); + break; + case 6: + adj.push("gigantic", "titanic"); + break; + case 7: + adj.push("ridiculous"); + break; + case 8: + case 9: + case 10: + adj.push("immense"); + break; + default: + adj.push("inhuman"); + } + if (withNoun) { + if (slave.butt < 2) { + noun.push("bottom"); + } + return `${jsEither(adj)} ${jsEither(noun)}`; + } + return `${jsEither(adj)}`; +} + +/** + * Returns the description of the slave's lips + * @param {FC.HumanState} slave // admits V.PC as argument. + * @param {boolean} withNoun + * @param {boolean} withSurgery + * @returns {string} + */ +globalThis.lipsDesc = function(slave, withNoun = true, withSurgery = false) { + if (!slave) {return "ERROR"} + let adj = []; + let noun =["lips"]; + let surgery = (slave.lipsImplant && withSurgery) ? "siliconed " : (withSurgery ? "natural " : ""); + if (slave.lips < 11) { + adj.push("thin", "unattractive"); + } else if (slave.lips < 21) { + adj.push("regular", ""); + } else if (slave.lips < 41) { + adj.push("pretty", "attractive"); + } else if (slave.lips < 71) { + adj.push("plump", "plush"); + } else if (slave.lips < 96) { + adj.push("huge", "beestung"); + } else { + adj.push("pussy-like", "fuckhole"); + } + if (withNoun) { + return `${jsEither(adj)} ${surgery}${jsEither(noun)}`; + } + return `${surgery}${jsEither(adj)}`; +} + +/** + * Returns the description of the slave's belly + * @param {FC.HumanState} slave // admits V.PC as argument. + * @param {boolean} withNoun + * @param {boolean} pregReference // mentions pregnancy if slave is pregnant + * @returns {string} + */ +globalThis.bellyDesc = function(slave, withNoun = true, pregReference = true) { + if (!slave) {return "ERROR"} + let adj = []; + let noun =["belly"]; + if (pregReference && !!V.seePreg && slave.preg > 0) { + if (slave.belly > 750000) { + adj.push("inhumanly overexpanded pregnant"); + } else if (slave.belly > 600000) { + adj.push("immensely overexpanded pregnant"); + } else if (slave.belly > 450000) { + adj.push("enormously overexpanded pregnant"); + } else if (slave.belly > 300000) { + adj.push("overexpanded pregnant"); + } else if (slave.belly > 150000) { + adj.push("grotesquely oversized pregnant"); + } else if (slave.belly > 120000) { + adj.push("absurd pregnant"); + } else if (slave.belly > 105000) { + adj.push("monstrous pregnant"); + } else if (slave.belly > 90000) { + adj.push("titanic pregnant"); + } else if (slave.belly > 75000) { + adj.push("massive pregnant"); + } else if (slave.belly > 60000) { + adj.push("gigantic pregnant"); + } else if (slave.belly > 45000) { + adj.push("huge pregnant"); + } else if (slave.belly > 30000) { + adj.push("big pregnant"); + } else if (slave.belly > 15000) { + adj.push("full term looking"); + } else if (slave.belly > 10000) { + adj.push("very pregnant"); + } else if (slave.belly > 5000) { + adj.push("obviously pregnant"); + } else if (slave.belly > 1500) { + adj.push("plump"); + } else if (slave.belly > 100) { + adj.push("bloated"); + } else { + adj.push("flat"); + noun = ["stomach", "tummy"]; + } + } else { + if (slave.belly > 750000) { + adj.push("inhumanly overexpanded"); + } else if (slave.belly > 600000) { + adj.push("immensely overexpanded"); + } else if (slave.belly > 450000) { + adj.push("enormously overexpanded"); + } else if (slave.belly > 300000) { + adj.push("overexpanded"); + } else if (slave.belly > 150000) { + adj.push("grotesquely oversized"); + } else if (slave.belly > 120000) { + adj.push("absurd"); + } else if (slave.belly > 105000) { + adj.push("monstrous"); + } else if (slave.belly > 90000) { + adj.push("titanic"); + } else if (slave.belly > 75000) { + adj.push("massive"); + } else if (slave.belly > 60000) { + adj.push("gigantic"); + } else if (slave.belly > 45000) { + adj.push("huge"); + } else if (slave.belly > 30000) { + adj.push("obese"); + } else if (slave.belly > 15000) { + adj.push("beefy"); + } else if (slave.belly > 10000) { + adj.push("porky"); + } else if (slave.belly > 5000) { + adj.push("chubby"); + } else if (slave.belly > 1500) { + adj.push("plump"); + } else if (slave.belly > 100) { + adj.push("bloated"); + noun.push("tummy"); + } else { + adj.push("flat"); + noun = ["tummy"]; + } + noun.push("stomach"); + if (slave.belly > 5000) { + noun.push("paunch", "belly"); + } + } + if (withNoun) { + return `${jsEither(adj)} ${jsEither(noun)}`; + } + return `${jsEither(adj)}`; +} + +/** + * Returns the description of the slave's clit + * @param {FC.HumanState} slave // admits V.PC as argument. + * @param {boolean} withNoun + * @returns {string} + */ +globalThis.clitDesc = function(slave, withNoun = true) { + if (!slave) {return "ERROR"} + if (slave.dick > 0) { // slaves with dicks don't have clits + return dickDesc(slave, withNoun); + } + if (slave.vagina < 0) { // no vagina, no vulva, no clit + return `lack of${withNoun ? " clitoris" : ""}`; + } + let adj = []; + let noun = ["clit"]; + switch (slave.clit) { + case 0: + adj.push("", "cute", "average"); + noun.push("clit", "clitoris", "button", "bud"); + break; + case 1: + adj.push("large", "big"); + break; + case 2: + adj.push("huge", "huge", "noticeable"); + break; + case 3: + adj.push("enormous", "prominent", "protruding") + break; + case 4: + adj.push("penis-like", "dick-like", "phallus-like", "hypertrophied"); + break; + default: + adj.push("massive penis-like", "elephantine phallic", "gigantic dick-like", "immense penis-like"); + noun.push("megaclit", "clit", "vulva appendage"); + } + if (withNoun) { + return `${jsEither(adj)} ${jsEither(noun)}`; + } + return `${jsEither(adj)}`; +} + +/** + * @param {FC.HumanState} slave + * @returns {string} + */ +globalThis.bellyAdjective = function(slave) { + if (slave.belly >= 1500) { + if (slave.belly >= 1000000) { + if (slave.preg > slave.pregData.normalBirth / 4) { + return 'unfathomably distended, brimming with life'; + } else { + return `unfathomable`; + } + } else if (slave.belly >= 750000) { + if (slave.preg > slave.pregData.normalBirth / 4) { + return 'monolithic bulging'; + } else { + return `monolithic`; + } + } else if (slave.belly >= 600000) { + if (slave.preg > slave.pregData.normalBirth / 4) { + return 'titanic bulging'; + } else { + return `titanic`; + } + } else if (slave.belly >= 450000) { + if (slave.preg > slave.pregData.normalBirth / 4) { + return 'gigantic bulgy'; + } else { + return `gigantic`; + } + } else if (slave.belly >= 300000) { + return 'massive'; + } else if (slave.belly >= 100000) { + return 'giant'; + } else if (slave.belly >= 15000) { + return 'huge'; + } else if (slave.belly >= 10000) { + return 'big'; + } else { + return `swollen`; + } + } + return ""; +}; diff --git a/src/npc/interaction/fondleDick.js b/src/npc/interaction/fondleDick.js index 8f9723da8bd6ed4653505afbbc1e65dd0b0b9059..3b62e446fd05ba7ce23c9c01304b4415a39d7670 100644 --- a/src/npc/interaction/fondleDick.js +++ b/src/npc/interaction/fondleDick.js @@ -73,7 +73,7 @@ App.Interact.fondleDick = function(slave) { } if (slave.fetish === Fetish.MINDBROKEN) { - r.push(`Like a doll, ${he} dumbly remains still, watching your hands move towards ${him} without any real interest. You gently trace your fingers along ${his} ${dickDesc()} before taking it gently in one hand and tenderly stroking your hand along its`); + r.push(`Like a doll, ${he} dumbly remains still, watching your hands move towards ${him} without any real interest. You gently trace your fingers along ${his} ${dickDesc(slave)} before taking it gently in one hand and tenderly stroking your hand along its`); strokeAndSqueeze(); if (!canAchieveErection(slave)) { r.push(`${His} dick remains flaccid as it cannot get stiff and you continue tenderly stroking ${his} soft dick but, ${he} does not respond.`); @@ -82,7 +82,7 @@ App.Interact.fondleDick = function(slave) { } r.push(`Since ${he} is mindbroken, ${his} responses to you are purely physiological and your actions have no affect on ${him} mentally. You leave your toy for one of your other slaves to clean and maintain.`); } else if (isAmputee(slave)) { - r.push(`Since ${he}'s a quadruple amputee, ${he}'s yours to use as a human finger toy. While ${he}'s lying there helpless, you move your hands towards ${him}. You gently trace your fingers along ${his} ${dickDesc()} before taking it gently in one hand and tenderly stroking your hand along its`); + r.push(`Since ${he}'s a quadruple amputee, ${he}'s yours to use as a human finger toy. While ${he}'s lying there helpless, you move your hands towards ${him}. You gently trace your fingers along ${his} ${dickDesc(slave)} before taking it gently in one hand and tenderly stroking your hand along its`); strokeAndSqueeze(); if (!canAchieveErection(slave)) { r.push(`${His} dick remains flaccid as it cannot get stiff and you continue tenderly stroking ${his} soft dick but, except for the cockmilk leaking out of ${his} dick, ${he} does not respond.`); @@ -97,12 +97,12 @@ App.Interact.fondleDick = function(slave) { } r.push(`you as you stop moving your hands. You leave your toy for one of your other slaves to clean and maintain.`); } else if (slave.fetish === Fetish.SUBMISSIVE && slave.fetishStrength > 60 && slave.fetishKnown === 1) { - r.push(`${He} comes submissively over, smiling a little submissive smile, and points ${his} dick towards you. You gently trace your fingers along ${his} ${dickDesc()} before taking it gently in one hand and tenderly stroking your hand along its`); + r.push(`${He} comes submissively over, smiling a little submissive smile, and points ${his} dick towards you. You gently trace your fingers along ${his} ${dickDesc(slave)} before taking it gently in one hand and tenderly stroking your hand along its`); strokeAndSqueeze(); standardStiffy(); r.push(`Soon, ${his} movements indicate that ${he} is orgasming. ${He} shudders and leaks ${his} cockmilk as ${he} orgasms in your hands before submissively avoiding your gaze as you get cleaned up.`); } else if (slave.devotion < -20) { - r.push(`${He} clearly dislikes the thought of getting ${his} dick fondled by you. ${His} lower lip quivers with trepidation as ${he} watches your hands move towards ${him}. ${He} has no choice but to obey if ${he} wants to avoid punishment. ${He} gasps and shakes as you gently trace along ${his} ${dickDesc()} before taking it gently in one hand and tenderly stroking your hand along its`); + r.push(`${He} clearly dislikes the thought of getting ${his} dick fondled by you. ${His} lower lip quivers with trepidation as ${he} watches your hands move towards ${him}. ${He} has no choice but to obey if ${he} wants to avoid punishment. ${He} gasps and shakes as you gently trace along ${his} ${dickDesc(slave)} before taking it gently in one hand and tenderly stroking your hand along its`); strokeAndSqueeze(); standardStiffy(); r.push(`${He}`); @@ -113,7 +113,7 @@ App.Interact.fondleDick = function(slave) { } r.push(`and tries to stop it from moving but is unable to and despite ${his} resistant pulling against you. ${He} bites ${his} lip but ${he} cannot help but moan. Soon ${he} shudders and leaks ${his} cockmilk as ${he} orgasms in your hands. ${He} looks at you shamefully as you stop moving your hands and get cleaned up.`); } else if (slave.fetish === "masochist" && slave.fetishStrength > 60 && slave.fetishKnown === 1) { - r.push(`${He} hurriedly comes over to you, to stand between you and your desk. You lean over while ${he} lies down upon it, face-up, with ${his} dick pointed towards you. ${He} gasps when you slap ${his} ${dickDesc()} with your hand. You firmly grab it and tightly squeeze it with your fingers, stroking your hand along its shaft.`); + r.push(`${He} hurriedly comes over to you, to stand between you and your desk. You lean over while ${he} lies down upon it, face-up, with ${his} dick pointed towards you. ${He} gasps when you slap ${his} ${dickDesc(slave)} with your hand. You firmly grab it and tightly squeeze it with your fingers, stroking your hand along its shaft.`); if (slave.balls > 0) { r.push(`Simultaneously, you slap ${his} ${ballDesc()} with your other hand.`); } @@ -121,7 +121,7 @@ App.Interact.fondleDick = function(slave) { standardStiffy(); r.push(`Your rough play leaves red marks on ${his} breasts and nipples and ${he} becomes even more aroused. Soon, ${his} movements indicate that ${he} is orgasming. ${He} shudders and leaks ${his} cockmilk as ${he} orgasms in your hands. ${He} rubs the marks on ${his} dick and balls with ${his} hands, an ecstatic look on ${his} ${slave.skin} face. ${He} looks at you longingly as you get cleaned up, hungry for more.`); } else if (slave.devotion <= 20) { - r.push(`${He} obeys silently, standing in front of you as you move your hands towards ${him}. You gently trace your fingers along ${his} ${dickDesc()} before taking it gently in one hand and tenderly stroking your hand along its`); + r.push(`${He} obeys silently, standing in front of you as you move your hands towards ${him}. You gently trace your fingers along ${his} ${dickDesc(slave)} before taking it gently in one hand and tenderly stroking your hand along its`); strokeAndSqueeze(); standardStiffy(); r.push(`${He}`); @@ -138,7 +138,7 @@ App.Interact.fondleDick = function(slave) { } r.push(`moving to match your hand movements. ${He} moans and shudders, leaking ${his} cockmilk as ${he} orgasms in your hands. ${He} dutifully looks at you as you stop moving your hands and get cleaned up.`); } else { - r.push(`${He} devotedly comes over and gives you an impassioned kiss. ${He} smiles and points ${his} dick towards you. You gently trace your fingers along ${his} ${dickDesc()} before taking it gently in one hand and tenderly stroking your hand along its`); + r.push(`${He} devotedly comes over and gives you an impassioned kiss. ${He} smiles and points ${his} dick towards you. You gently trace your fingers along ${his} ${dickDesc(slave)} before taking it gently in one hand and tenderly stroking your hand along its`); strokeAndSqueeze(); standardStiffy(); r.push(`${He} begs you not to stop. Soon, ${he} moans and ${his} movements indicate that ${he} is about to orgasm. ${He} shudders and leaks ${his} cockmilk as ${he} orgasms in your hands. ${He} looks at you passionately as you stop moving your hands and get cleaned up.`); @@ -166,32 +166,6 @@ App.Interact.fondleDick = function(slave) { } } - function dickDesc() { - if (slave.dick === 1) { - return `tiny dick`; - } else if (slave.dick === 2) { - return `cute dick`; - } else if (slave.dick === 3) { - return `dick`; - } else if (slave.dick === 4) { - return `big dick`; - } else if (slave.dick === 5) { - return `impressive dick`; - } else if (slave.dick === 6) { - return `huge dick`; - } else if (slave.dick === 7) { - return `gigantic dick`; - } else if (slave.dick === 8) { - return `titanic dick`; - } else if (slave.dick === 9) { - return `absurd dick`; - } else if (slave.dick === 10) { - return `inhuman dick`; - } else { - return `hypertrophied dick`; - } - } - function strokeAndSqueeze() { if (slave.balls > 0) { r.push(`shaft, while simultaneously cupping ${his} ${ballDesc()} with your other hand.`); diff --git a/src/pregmod/editGenetics.js b/src/pregmod/editGenetics.js index 3687cb665e01cbec4a2899a194e5ce25b6cbbb75..dd638361d4df679d0830c82070ae74431d9862fa 100644 --- a/src/pregmod/editGenetics.js +++ b/src/pregmod/editGenetics.js @@ -246,7 +246,7 @@ App.UI.editGenetics = function() { cell.setAttribute("data-max", "3"); makeHeader(`Rear`); - cell = App.UI.DOM.appendNewElement("td", row, buttDesc(s.butt), ["editor", "number-editor"]); + cell = App.UI.DOM.appendNewElement("td", row, rearDesc(s.butt), ["editor", "number-editor"]); cell.setAttribute("data-param", "butt"); cell.setAttribute("data-min", "0"); cell.setAttribute("data-max", "20"); @@ -313,7 +313,7 @@ App.UI.editGenetics = function() { cell.setAttribute("data-max", "3"); makeHeader(`Clitoris`); - cell = App.UI.DOM.appendNewElement("td", row, clitDesc(s.clit), ["editor", "number-editor"]); + cell = App.UI.DOM.appendNewElement("td", row, clitorisDesc(s.clit), ["editor", "number-editor"]); cell.setAttribute("data-param", "clit"); cell.setAttribute("data-min", "0"); cell.setAttribute("data-max", "5"); @@ -446,7 +446,7 @@ App.UI.editGenetics = function() { '3': 'inhumanly wide' }[s] || 'unknown') + ' (' + Number(s) + ')'; } - function buttDesc(s) { + function rearDesc(s) { return ({ '0': 'flat', '1': 'small', @@ -497,7 +497,7 @@ App.UI.editGenetics = function() { '3': 'huge dangling' }[s] || 'unknown') + ' (' + Number(s) + ')'; } - function clitDesc(s) { + function clitorisDesc(s) { return ({ '0': 'normal', '1': 'large',