diff --git a/devNotes/legacy files/walkPast.txt b/devNotes/legacy files/walkPast.txt index 980228396c221288568ec1cacdf080af8b872279..2ed9627191f56779c216d03eeb219946307471fe 100644 --- a/devNotes/legacy files/walkPast.txt +++ b/devNotes/legacy files/walkPast.txt @@ -1948,7 +1948,7 @@ <</if>> <<= App.Desc.crotch($activeSlave)>> <<= App.Desc.dick($activeSlave)>> - <<vaginaDescription>> + <<= App.Desc.vagina($activeSlave)>> <<switch $activeSlave.clothes>> <<case "a Fuckdoll suit">> Its suit is expressly designed to encourage use of its holes. diff --git a/src/interaction/main/walkPast.js b/src/interaction/main/walkPast.js index 229046952e313dbad08589d26bb7d2bfe22ef5e1..526a02da6d47a6b50d4e658be551a0e1acad1d78 100644 --- a/src/interaction/main/walkPast.js +++ b/src/interaction/main/walkPast.js @@ -7686,7 +7686,8 @@ globalThis.walkPast = (function() { // Desc dick and vag t += App.Desc.crotch(slave); t += ` `; - t += `<<vaginaDescription>>`; + t += App.Desc.vagina(slave); + t += ` `; switch (slave.clothes) { case "a Fuckdoll suit": t += `${His} suit is expressly designed to encourage use of ${his} holes.`; diff --git a/src/npc/descriptions/crotch/vagina.js b/src/npc/descriptions/crotch/vagina.js new file mode 100644 index 0000000000000000000000000000000000000000..0e88c771aa8292232c43e5d358183e728c91e88d --- /dev/null +++ b/src/npc/descriptions/crotch/vagina.js @@ -0,0 +1,710 @@ +App.Desc.vagina = function(slave) { + const r = []; + const { + he, him, his, hers, himself, boy, He, His + } = getPronouns(slave); + + if (slave.dick > 0) { + if (slave.vagina > -1) { + r.push(`${His}`); + if (slave.genes === "XX") { + r.push(`beautifully natural`); + } else if (slave.ovaries === 1) { + r.push(`finely crafted`); + } else { + r.push(`artificial`); + } + r.push(`vagina is located beneath the base of ${his} penis,`); + if (slave.fuckdoll > 0) { + r.push(`just after the suit's material stops to bare ${his} front hole.`); + } else if ((slave.scrotum > 3) && (slave.balls <= slave.scrotum)) { + r.push(`though it is almost completely hidden by ${his} hanging ballsack.`); + } else if ((slave.scrotum > 1) && (slave.balls > 0)) { + r.push(`its upper part concealed by ${his} balls.`); + } else if (canAchieveErection(slave)) { + r.push(`and merges seamlessly into ${his} shaft.`); + } else { + if (slave.dick > 3) { + r.push(`though it is almost completely hidden by ${his} soft cockmeat.`); + } else { + r.push(`which acts as a soft little dickclit for it.`); + } + } + if (slave.clit === 0) { + r.push(`The base of ${his} cock is located where the clitoris would be on a normal woman.`); + } + } + } + + if (slave.vagina > -1) { + if (slave.vagina === 0) { + r.push(`${He} is a <span class="lime">virgin.</span> ${His} pussy is fresh,`); + } else if (slave.vagina === 1) { + r.push(`${His} pussy is tight and appealing,`); + } else if (slave.vagina === 2) { + r.push(`${His} pussy is reasonably tight,`); + } else if (slave.vagina === 3) { + r.push(`${His} pussy is loose,`); + } else if (slave.vagina >= 10) { + r.push(`${His} pussy has been completely ruined from hundreds of births. One could fit their arm into it with minimal effort and ${he} can barely get off from vaginal sex now. ${His} pussy is abyssal,`); + } else if (slave.vagina > 3) { + r.push(`${His} pussy is utterly cavernous,`); + } + + if (slave.labia === 0) { + r.push(`with minimal`); + } else if (slave.labia === 1) { + r.push(`with big puffy`); + } else if (slave.labia === 2) { + r.push(`with huge`); + } else { + r.push(`with huge dangling`); + } + + if (V.seeRace === 1) { + if (slave.race === "white") { + r.push(`pink pussylips.`); + } else if (slave.race === "asian") { + r.push(`dark ${slave.race} pussylips.`); + } else if (slave.race === "middle eastern") { + r.push(`dark ${slave.race} pussylips.`); + } else if (slave.race === "latina") { + r.push(`dark ${slave.race} pussylips.`); + } else if (slave.race === "black") { + r.push(`dark ${slave.race} pussylips.`); + } else { + r.push(`${slave.skin} pussylips.`); + } + } else { + r.push(`${slave.skin} pussylips.`); + } + + if (slave.vagina > -1) { + if (slave.vaginaLube === 0) { + if (slave.vagina > 0 && !(slave.chastityVagina)) { + r.push(`${He} produces very little natural wetness, so ${he} is`); + if (slave.fuckdoll === 0) { + r.push(`required to keep ${him}self`); + } else { + r.push(`is kept`); + } + r.push(`artificially lubricated for anyone who wishes to use ${his} cunt.`); + } else { + r.push(`${He} produces very little natural wetness.`); + } + if (slave.prostate !== 0) { + if (slave.dick === 0) { + r.push(`In stark contrast, however, ${he}'s been given a functional prostate gland. It's attached to ${his} urethra, of course, so despite ${his} dryness, ${he} squirts`); + if (slave.balls > 0) { + r.push(`semen`); + } else { + r.push(`fluid`); + } + r.push(`when ${he} orgasms.`); + if (slave.prostate > 2) { + r.push(`With the implant embedded in it, that squirt is more like a blast; ${he} will soak ${him}self and anyone near ${him}.`); + } + } + } + } else if ((slave.vaginaLube < 2)) { + if (slave.assignment === "work in the dairy" && V.dairyPregSetting > 1) { + r.push(`The dildo's ejaculate includes a drug that causes copious, constant vaginal lubrication, allowing it to fuck ${him} despite its giant size. The excess female fluid drips off ${him} and into a catch basin.`); + } else if ((slave.aphrodisiacs > 0) || (slave.inflationType === "aphrodisiac")) { + r.push(`The aphrodisiacs have them`); + if (slave.aphrodisiacs > 1 || (slave.inflationType === "aphrodisiac" && slave.inflation >= 2)) { + r.push(`sopping`); + } + r.push(`wet.`); + } else if ((slave.energy > 95)) { + r.push(`As a nympho, ${he}'s almost constantly wet.`); + } else if ((slave.fetishStrength > 60) && (slave.fetishKnown === 1)) { + r.push(`Judging by how wet ${he} is, ${he}'s probably fantasizing about`); + switch (slave.fetish) { + case "buttslut": + r.push(`being buttfucked.`); + break; + case "cumslut": + r.push(`being facefucked.`); + break; + case "humiliation": + r.push(`being humiliated.`); + break; + case "submissive": + r.push(`submission.`); + break; + case "dom": + r.push(`dominating someone.`); + break; + case "sadist": + r.push(`hurting someone.`); + break; + case "masochist": + r.push(`pain.`); + break; + case "pregnancy": + if (slave.pregKnown) { + r.push(`having another`); + if (slave.pregType > 1) { + r.push(`brood`); + } else { + r.push(`child`); + } + r.push(`after this one.`); + } else { + r.push(`getting pregnant.`); + } + break; + case "boobs": + r.push(`boobs.`); + break; + default: + r.push(`getting fucked.`); + break; + } + } else if ((slave.devotion > 50)) { + r.push(`As a devoted sex slave, ${he} has no trouble keeping ${him}self wet for ${his} ${WrittenMaster(slave)}.`); + } else if ((slave.devotion > 20)) { + r.push(`As an obedient sex slave, ${he} does ${his} best to keep ${him}self wet for ${his} ${WrittenMaster(slave)}.`); + } + if (slave.prostate !== 0) { + if (slave.dick === 0) { + r.push(`Bizarrely, ${he}'s been given a functional prostate gland. It's attached to ${his} urethra, of course,`); + if (slave.balls > 0) { + r.push(`which in combination with ${his} testicles make ${his} squirt copious amounts of fluids and semen with each orgasm.`); + } else { + r.push(`so ${he} squirts copiously when ${he} orgasms.`); + } + if (slave.prostate > 2) { + r.push(`With the implant embedded in it; that gush is more like a flood. Changes of clothes are a must with ${him}, as ${he} can and will soak both you, ${him}self and what ${he} is getting fucked over.`); + } + } + } + } else { + if (slave.assignment === "work in the dairy" && V.dairyPregSetting > 1) { + r.push(`The dildo's ejaculate includes a drug that encourages vaginal lubrication, which is having a drastic effect on ${him}, since ${he}'s already very gifted in that regard. The dildo makes a wet noise every time it thrusts into ${him}, and femcum streams into a catch basin beneath ${him}. The smell of pussy is overwhelming.`); + } else if ((slave.aphrodisiacs > 0) || (V.saleDescription === 1 && V.gingering === "vasodilator") || (slave.inflationType === "aphrodisiac")) { + r.push(`The combination of the aphrodisiacs and ${his} natural tendency to produce a lot of female lubricant is having a drastic effect. ${His} cunt is absolutely beribboned with femcum, and ${he} smells strongly of wet, clean pussy.`); + } else if ((slave.energy > 95)) { + r.push(`${He} has a naturally wet cunt, and in combination with ${his} nymphomania, it's soaking. ${He} smells of good clean female arousal.`); + } else if ((slave.fetishStrength > 60) && (slave.fetishKnown === 1)) { + r.push(`${His} naturally wet cunt is almost dripping female lubricant, and ${he} smells of good clean female arousal. ${He}'s probably fantasizing about`); + switch (slave.fetish) { + case "buttslut": + r.push(`being buttfucked.`); + break; + case "cumslut": + r.push(`being facefucked.`); + break; + case "humiliation": + r.push(`being humiliated.`); + break; + case "submissive": + r.push(`submission.`); + break; + case "dom": + r.push(`dominating someone.`); + break; + case "sadist": + r.push(`hurting someone.`); + break; + case "masochist": + r.push(`pain.`); + break; + case "pregnancy": + if (slave.pregKnown === 1) { + r.push(`growing rounder.`); + } else { + r.push(`getting pregnant.`); + } + break; + case "boobs": + r.push(`boobs.`); + break; + default: + r.push(`getting fucked.`); + } + } else if ((slave.devotion > 50)) { + r.push(`${His} cunt is almost always soaking wet, but being near you has ${his} almost dripping.`); + } else if ((slave.devotion > 20)) { + r.push(`${His} cunt is almost always soaking wet, and being near you isn't affecting that.`); + } else { + r.push(`${His} cunt is almost always soaking wet, regardless of ${his} feelings.`); + } + if (slave.prostate !== 0) { + if (slave.dick === 0) { + r.push(`Bizarrely, ${he}'s been given a functional prostate gland. It's attached to ${his} urethra, of course,`); + if (slave.balls > 0) { + r.push(`which in combination with ${his} testicles make ${his} squirt unreasonable volume of fluids and semen with each orgasm.`); + } else { + r.push(`meaning that when ${he} orgasms, ${he} squirts an unreasonable volume of fluid.`); + } + if (slave.prostate > 2) { + r.push(`With the implant embedded in it, that gush is insane. Everything around ${him} is at risk of being splashed. Changes of clothes are a must with ${him}, as are supplies to mop up afterwards.`); + } + } + } + } + } + r.push(App.Desc.vaginalAccessory(slave)); + } + + if (slave.ovaImplant !== 0) { + switch (slave.ovaImplant) { + case "fertility": + r.push(`${His} ovaries have a pair of implants attached to them to encourage`); + if (slave.preg < -1) { + r.push(`ovulation, not that it does ${him} any good`); + } else { + r.push(`ovulation.`); + } + break; + case "sympathy": + r.push(`${His} ovaries have a pair of linked implants attached to them so that when one releases an egg the other does so as well.`); + break; + case "asexual": + r.push(`One of ${his} ovaries has been replaced with a fabricated sperm sack designed to fertilize any eggs ${he} makes.`); + break; + } + } + + if (slave.dick === 0 && slave.balls === 0 && slave.vagina < 0 && V.arcologies[0].FSRestart > 60) { + r.push(`Society looks fondly on ${his} complete inability to reproduce.`); + } + + + if (slave.dick === 0) { + if (slave.clit > 0) { + if (slave.foreskin === 0) { + if (slave.clit === 1) { + if (slave.devotion > 50) { + r.push(`${His} clit is quite large and visibly hard.`); + } else { + r.push(`${His} clit is quite large.`); + } + r.push(`${His} lack of hood makes it even more prominent.`); + } else if ((slave.clit === 2)) { + if (slave.devotion > 50) { + r.push(`${His} clit is huge and visibly erect.`); + } else { + r.push(`${His} clit is huge.`); + } + r.push(`Lack of hood combined with its size means ${he} can't wear any clothes without being constantly stimulated.`); + } else if ((slave.clit === 3)) { + if (slave.devotion > 50) { + r.push(`${His} clit is enormous, and since it's erect with arousal, it juts out proudly.`); + } else { + r.push(`${His} clit is enormous, almost a pseudophallus.`); + } + } else if ((slave.clit === 4)) { + if (slave.devotion > 50) { + r.push(`${His} clit has reached the size of an average penis, it stands at attention but due to lack of erectile tissues it can't reach the same hardness a penis would.`); + } else { + r.push(`${His} clit has reached the size of an average penis.`); + } + } else { + if (slave.devotion > 50) { + r.push(`${His} clit is massive, having reached the size of a large penis. It is semi-erect since lack of erectile tissues means it can never become fully erect.`); + } else { + r.push(`${His} clit is massive, having reached the size of a large penis.`); + } + } + } else if ((slave.foreskin === 1)) { + if (slave.clit === 1) { + if (slave.devotion > 50) { + r.push(`${His} clit is quite large and visibly hard.`); + } else { + r.push(`${His} clit is quite large.`); + } + r.push(`${His} clitoral hood is stretched thin trying to cover it.`); + } else if ((slave.clit === 2)) { + if (slave.devotion > 50) { + r.push(`${His} clit is huge and visibly erect.`); + } else { + r.push(`${His} clit is huge.`); + } + r.push(`${His} small hood is no longer able to cover it completely and large part of ${his} clitoris is always exposed.`); + } else if ((slave.clit === 3)) { + if (slave.devotion > 50) { + r.push(`${His} clit is enormous, and since it's erect with arousal, it juts out proudly.`); + } else { + r.push(`${His} clit is enormous, almost a pseudophallus.`); + } + r.push(`${His} hood can no longer contain it and has slid back causing ${his} clitoris to be always exposed.`); + } else if ((slave.clit === 4)) { + if (slave.devotion > 50) { + r.push(`${His} clit has reached the size of an average penis, it stands at attention but due to lack of erectile tissues it can't reach the same hardness a penis would.`); + } else { + r.push(`${His} clit has reached the size of an average penis.`); + } + r.push(`${His} hood can no longer contain it and has slid back causing ${his} clitoris to be always exposed.`); + } else { + if (slave.devotion > 50) { + r.push(`${His} clit is massive, having reached the size of a large penis. It is semi-erect since lack of erectile tissues means it can never become fully erect.`); + } else { + r.push(`${His} clit is massive, having reached the size of a large penis.`); + } + r.push(`${His} hood can no longer contain it and has slid back causing ${his} clitoris to be always exposed.`); + } + } else if ((slave.foreskin === 2)) { + if (slave.clit === 1) { + if (slave.devotion > 50) { + r.push(`${His} clit is quite large and visibly hard.`); + } else { + r.push(`${His} clit is quite large.`); + } + r.push(`It is completely covered by its hood.`); + } else if ((slave.clit === 2)) { + if (slave.devotion > 50) { + r.push(`${His} clit is huge and visibly erect.`); + } else { + r.push(`${His} clit is huge.`); + } + r.push(`Its hood is stretched thin trying to cover it.`); + } else if ((slave.clit === 3)) { + if (slave.devotion > 50) { + r.push(`${His} clit is enormous, and since it's erect with arousal, it juts out proudly.`); + } else { + r.push(`${His} clit is enormous, almost a pseudophallus.`); + } + r.push(`It's large enough that the hood can cover only half of it.`); + } else if ((slave.clit === 4)) { + if (slave.devotion > 50) { + r.push(`${His} clit has reached the size of an average penis, it stands at attention but due to lack of erectile tissues it can't reach the same hardness a penis would.`); + } else { + r.push(`${His} clit has reached the size of an average penis.`); + } + r.push(`${His} hood can no longer contain it and has slid back causing ${his} clitoris to be always exposed.`); + } else { + if (slave.devotion > 50) { + r.push(`${His} clit is massive, having reached the size of a large penis. It is semi-erect since lack of erectile tissues means it can never become fully erect.`); + } else { + r.push(`${His} clit is massive, having reached the size of a large penis.`); + } + r.push(`${His} hood can no longer contain it and has slid back causing ${his} clitoris to be always exposed.`); + } + } else if ((slave.foreskin === 3)) { + if (slave.clit === 1) { + if (slave.devotion > 50) { + r.push(`${His} clit is quite large and visibly hard.`); + } else { + r.push(`${His} clit is quite large.`); + } + r.push(`The hood covering it is quite large making stimulation difficult.`); + } else if ((slave.clit === 2)) { + if (slave.devotion > 50) { + r.push(`${His} clit is huge and visibly erect.`); + } else { + r.push(`${His} clit is huge.`); + } + r.push(`${His} large hood completely covers it.`); + } else if ((slave.clit === 3)) { + if (slave.devotion > 50) { + r.push(`${His} clit is enormous, and since it's erect with arousal, it juts out proudly.`); + } else { + r.push(`${His} clit is enormous, almost a pseudophallus.`); + } + r.push(`${His} large hood covers all but the tip of ${his} clit even when aroused.`); + } else if ((slave.clit === 4)) { + if (slave.devotion > 50) { + r.push(`${His} clit has reached the size of an average penis, it stands at attention but due to lack of erectile tissues it can't reach the same hardness a penis would.`); + } else { + r.push(`${His} clit has reached the size of an average penis.`); + } + r.push(`Even ${his} large hood can't cover it, leaving over half of the clit exposed.`); + } else { + if (slave.devotion > 50) { + r.push(`${His} clit is massive, having reached the size of a large penis. It is semi-erect since lack of erectile tissues means it can never become fully erect.`); + } else { + r.push(`${His} clit is massive, having reached the size of a large penis.`); + } + r.push(`${His} hood can no longer contain it and has slid back causing ${his} clitoris to be always exposed.`); + } + } else { + if (slave.clit === 1) { + if (slave.devotion > 50) { + r.push(`${His} clit is quite large and visibly hard.`); + } else { + r.push(`${His} clit is quite large.`); + } + r.push(`${His} large thick hood covering it makes any stimulation difficult.`); + } else if ((slave.clit === 2)) { + if (slave.devotion > 50) { + r.push(`${His} clit is huge and visibly erect.`); + } else { + r.push(`${His} clit is huge.`); + } + r.push(`${His} large thick hood covering it makes any stimulation difficult.`); + } else if ((slave.clit === 3)) { + if (slave.devotion > 50) { + r.push(`${His} clit is enormous, and since it's erect with arousal, it juts out proudly.`); + } else { + r.push(`${His} clit is enormous, almost a pseudophallus.`); + } + r.push(`Matching its size is the thick hood covering it.`); + } else if ((slave.clit === 4)) { + if (slave.devotion > 50) { + r.push(`${His} clit has reached the size of an average penis, it stands at attention but due to lack of erectile tissues it can't reach the same hardness a penis would.`); + } else { + r.push(`${His} clit has reached the size of an average penis.`); + } + r.push(`${His} large hood covering over half of it adds to its penis-like appearance.`); + } else { + if (slave.devotion > 50) { + r.push(`${His} clit is massive, having reached the size of a large penis. It is semi-erect, since lack of erectile tissues means it can never reach full erection.`); + } else { + r.push(`${His} clit is massive, having reached the size of a large penis.`); + } + r.push(`Not even its large hood can contain it, leaving over half of it exposed.`); + } + } + } + } + + r.push(App.Desc.mods(slave, "vagina")); + r.push(App.Desc.mods(slave, "clit")); + + if (slave.fuckdoll === 0) { + if (slave.rules.release.masturbation === 1) { + if ((slave.aphrodisiacs > 0 || slave.inflationType === "aphrodisiac") && slave.drugs !== "priapism agents") { + if ((slave.aphrodisiacs > 1) || (slave.inflationType === "aphrodisiac" && slave.inflation > 1)) { + if (slave.dick !== 0 && slave.hormoneBalance >= 100 && (!hasAnyArms(slave))) { + r.push(`The extreme dose of aphrodisiacs combined with the hormones that keep ${him} flaccid have ${him} in a state of extreme sexual frustration; ${he}'s`); + if ((slave.fetish === "buttslut") || ((slave.sexualFlaw !== "hates anal") && (slave.counter.anal > 9))) { + r.push(`unconsciously humping ${his} ass against whatever's next to ${him} for anal stimulation and`); + } + r.push(`humping ${his} dick against whatever ${he} can manage to mount without limbs.`); + if (slave.inflationType === "aphrodisiac") { + r.push(`${His} efforts force ${his} distended middle to jiggle around, stirring up the aphrodisiacs contained in ${his} gut and strengthening their effects even more.`); + } + } else if ((slave.dick !== 0) && (slave.balls > 0) && slave.ballType === "sterile" && (!hasAnyArms(slave))) { + r.push(`The extreme dose of aphrodisiacs combined with the chemical castration that keeps ${him} flaccid have ${him} in a state of extreme sexual frustration; ${he}'s`); + if ((slave.fetish === "buttslut") || ((slave.sexualFlaw !== "hates anal") && (slave.counter.anal > 9))) { + r.push(`unconsciously humping ${his} ass against whatever's next to ${him} for anal stimulation and`); + } + r.push(`humping ${his} limp dick against whatever ${he} can manage to mount without limbs.`); + if (slave.inflationType === "aphrodisiac") { + r.push(`${His} efforts force ${his} distended middle to jiggle around, stirring up the aphrodisiacs contained in ${his} gut and strengthening their effects even more.`); + } + } else if ((slave.dick !== 0) && (slave.balls === 0) && (!hasAnyArms(slave))) { + r.push(`The extreme dose of aphrodisiacs combined with the lack of balls that keeps ${him} flaccid have ${him} in a state of extreme sexual frustration; ${he}'s`); + if ((slave.fetish === "buttslut") || ((slave.sexualFlaw !== "hates anal") && (slave.counter.anal > 9))) { + r.push(`unconsciously humping ${his} ass against whatever's next to ${him} for anal stimulation and`); + } + r.push(`humping ${his} limp dick against whatever ${he} can manage to mount without limbs.`); + if (slave.inflationType === "aphrodisiac") { + r.push(`${His} efforts force ${his} distended middle to jiggle around, stirring up the aphrodisiacs contained in ${his} gut and strengthening their effects even more.`); + } + } else if ((slave.dick !== 0) && (slave.hormoneBalance >= 100)) { + r.push(`The extreme dose of aphrodisiacs combined with the hormones that keep ${him} flaccid have ${him} in a state of extreme sexual frustration; ${he}'s rubbing ${his} limp dick`); + if ((slave.fetish === "buttslut") || ((slave.sexualFlaw !== "hates anal") && (slave.counter.anal > 9))) { + r.push(`distractedly and unconsciously humping ${his} ass against whatever's next to ${him} for anal stimulation.`); + } else { + r.push(`distractedly.`); + } + if (slave.inflationType === "aphrodisiac") { + r.push(`${His} efforts force ${his} distended middle to jiggle around, stirring up the aphrodisiacs contained in ${his} gut and strengthening their effects even more.`); + } + } else if ((slave.dick !== 0) && (slave.balls === 0)) { + r.push(`The extreme dose of aphrodisiacs combined with the lack of balls that keeps ${him} flaccid have ${him} in a state of extreme sexual frustration; ${he}'s rubbing ${his} limp dick distractedly`); + if ((slave.fetish === "buttslut") || ((slave.sexualFlaw !== "hates anal") && (slave.counter.anal > 9))) { + r.push(`distractedly and unconsciously humping ${his} ass against whatever's next to ${him} for anal stimulation.`); + } else { + r.push(`distractedly.`); + } + if (slave.inflationType === "aphrodisiac") { + r.push(`${His} efforts force ${his} distended middle to jiggle around, stirring up the aphrodisiacs contained in ${his} gut and strengthening their effects even more.`); + } + } else if ((slave.dick !== 0) && !canAchieveErection(slave)) { + r.push(`The extreme dose of aphrodisiacs combined with ${his} inability to become erect have ${him} in a state of extreme sexual frustration; ${he}'s rubbing ${his} limp dick distractedly`); + if ((slave.fetish === "buttslut") || ((slave.sexualFlaw !== "hates anal") && (slave.counter.anal > 9))) { + r.push(`distractedly and unconsciously humping ${his} ass against whatever's next to ${him} for anal stimulation.`); + } else { + r.push(`distractedly.`); + } + if (slave.inflationType === "aphrodisiac") { + r.push(`${His} efforts force ${his} distended middle to jiggle around, stirring up the aphrodisiacs contained in ${his} gut and strengthening their effects even more.`); + } + } else if ((slave.dick !== 0)) { + r.push(`The extreme dose of aphrodisiacs has ${his} cock painfully erect and leaves precum dripping from its head.`); + } + } else { + if (slave.dick !== 0 && slave.hormoneBalance >= 100 && (!hasAnyArms(slave))) { + r.push(`The aphrodisiacs combined with the hormones that keep ${him} flaccid have ${him} sexually frustrated; ${he}'s`); + if ((slave.fetish === "buttslut") || ((slave.sexualFlaw !== "hates anal") && (slave.counter.anal > 9))) { + r.push(`unconsciously rubbing ${his} ass against whatever's next to ${him}, and`); + } + r.push(`humping ${his} dick against whatever ${he} can manage to mount without limbs.`); + if (slave.inflationType === "aphrodisiac") { + r.push(`${His} efforts force ${his} distended middle to jiggle around, stirring up the aphrodisiacs contained in ${his} gut and strengthening their effects even more.`); + } + } else if ((slave.dick !== 0) && (slave.balls > 0) && slave.ballType === "sterile" && (!hasAnyArms(slave))) { + r.push(`The aphrodisiacs combined with the chemical castration that keeps ${him} flaccid have ${him} sexually frustrated; ${he}'s`); + if ((slave.fetish === "buttslut") || ((slave.sexualFlaw !== "hates anal") && (slave.counter.anal > 9))) { + r.push(`unconsciously rubbing ${his} ass against whatever's next to ${him}, and`); + } + r.push(`humping ${his} dick against whatever ${he} can manage to mount without limbs.`); + if (slave.inflationType === "aphrodisiac") { + r.push(`${His} efforts force ${his} distended middle to jiggle around, stirring up the aphrodisiacs contained in ${his} gut and strengthening their effects even more.`); + } + } else if ((slave.dick !== 0) && (slave.balls === 0) && (!hasAnyArms(slave))) { + r.push(`The aphrodisiacs combined with the lack of balls that keeps ${him} flaccid have ${him} sexually frustrated; ${he}'s`); + if ((slave.fetish === "buttslut") || ((slave.sexualFlaw !== "hates anal") && (slave.counter.anal > 9))) { + r.push(`unconsciously rubbing ${his} ass against whatever's next to ${him}, and`); + } + r.push(`humping ${his} dick against whatever ${he} can manage to mount without limbs.`); + if (slave.inflationType === "aphrodisiac") { + r.push(`${His} efforts force ${his} distended middle to jiggle around, stirring up the aphrodisiacs contained in ${his} gut and strengthening their effects even more.`); + } + } else if ((slave.dick !== 0) && (slave.hormoneBalance >= 100)) { + r.push(`The aphrodisiacs combined with the hormones that keep ${him} flaccid have ${him} sexually frustrated; ${he}'s touching ${his} limp dick distractedly`); + if ((slave.fetish === "buttslut") || ((slave.sexualFlaw !== "hates anal") && (slave.counter.anal > 9))) { + r.push(`distractedly and unconsciously rubbing ${his} ass against whatever's next to ${him}.`); + } else { + r.push(`distractedly.`); + } + if (slave.inflationType === "aphrodisiac") { + r.push(`${His} efforts force ${his} distended middle to jiggle around, stirring up the aphrodisiacs contained in ${his} gut and strengthening their effects even more.`); + } + } else if ((slave.dick !== 0) && (slave.balls === 0)) { + r.push(`The aphrodisiacs combined with the lack of balls that keeps ${him} flaccid have ${him} sexually frustrated; ${he}'s touching ${his} limp dick distractedly`); + if ((slave.fetish === "buttslut") || ((slave.sexualFlaw !== "hates anal") && (slave.counter.anal > 9))) { + r.push(`distractedly and unconsciously rubbing ${his} ass against whatever's next to ${him}.`); + } else { + r.push(`distractedly.`); + } + if (slave.inflationType === "aphrodisiac") { + r.push(`${His} efforts force ${his} distended middle to jiggle around, stirring up the aphrodisiacs contained in ${his} gut and strengthening their effects even more.`); + } + } + } + } + } + } + + if (slave.fuckdoll > 0) { + if (slave.vagina > 0) { + r.push(`${His} front hole`); + if (slave.fuckdoll <= 45) { + r.push(`is mostly useful when ${he}'s restrained for rape.`); + } else { + r.push(`will massage`); + if (V.PC.dick !== 0) { + r.push(`cocks`); + } else { + r.push(`anything`); + } + r.push(`placed inside it on command.`); + if (slave.fuckdoll <= 85) { + r.push(`${He} is even capable of riding`); + if (V.PC.dick !== 0) { + r.push(`dick.`); + } else { + r.push(`a strap-on.`); + } + } + } + } + } else { + if (slave.vagina === -1) { + if (V.seeDicks >= 100) { + } else if (slave.anus === 0) { + } else { + r.push(`Since ${he} lacks a vagina, ${he} takes it up`); + if (V.seeRace === 1) { + r.push(`${his} ${slave.race}`); + } else { + r.push(`the`); + } + r.push(`ass instead.`); + } + } else if (slave.skill.vaginal >= 100) { + r.push(`${He} is a <span class="aquamarine">vanilla sex master.</span>`); + } else if (slave.skill.vaginal > 60) { + r.push(`${He} is a <span class="aquamarine">vanilla sex expert.</span>`); + } else if (slave.skill.vaginal > 30) { + r.push(`${He} is <span class="aquamarine">skilled at vanilla sex.</span>`); + } else if (slave.skill.vaginal > 10) { + r.push(`${He} has <span class="aquamarine">basic knowledge about vanilla sex.</span>`); + } else { + r.push(`${He} is unskilled at vaginal sex.`); + } + } + + r.push(App.Desc.mods(slave, "pubic mound")); + + let _pubertyAge = Math.min(slave.pubertyAgeXX, slave.pubertyAgeXY); + if (slave.physicalAge < _pubertyAge - 2) { + r.push(`${He} is too sexually immature to have pubic hair.`); + } else if ((slave.pubicHStyle === "hairless")) { + r.push(`${He}'s naturally smooth and hairless.`); + } else if ((slave.pubicHStyle === "bald")) { + r.push(`${He} is no longer able to grow pubic hair leaving ${him} hairless and smooth.`); + } else if ((slave.pubicHStyle === "waxed")) { + if (slave.fuckdoll > 0) { + r.push(`${His} pubic hair has been removed to prevent chafing.`); + } else if ((slave.assignment === "work in the dairy") && (V.dairyRestraintsSetting > 1)) { + r.push(`${His} pubic hair has been removed to prevent chafing.`); + } else { + r.push(`${He}'s waxed and smooth.`); + } + } else if ((slave.physicalAge < _pubertyAge - 1)) { + r.push(`${He} has a few wisps of pubic hair.`); + } else if ((slave.physicalAge < _pubertyAge)) { + r.push(`${He} is on the verge of puberty and has a small patch of ${slave.pubicHColor} pubic hair above ${his}`); + if (slave.dick > 0) { + r.push(`cock.`); + } else if (slave.vagina === -1) { + r.push(`smoothness.`); + } else { + r.push(`pussy.`); + } + } else if ((slave.pubicHStyle === "in a strip")) { + r.push(`${His} ${slave.pubicHColor} pubic hair is waxed into a narrow strip above ${his}`); + if (slave.dick > 0) { + r.push(`cock.`); + } else if (slave.vagina === -1) { + r.push(`smoothness.`); + } else { + r.push(`pussy.`); + } + } else if ((slave.pubicHStyle === "neat")) { + r.push(`${His} ${slave.pubicHColor} pubic hair is waxed into a neat patch above ${his}`); + if (slave.dick > 0) { + r.push(`cock.`); + } else if (slave.vagina === -1) { + r.push(`smoothness.`); + } else { + r.push(`pussy.`); + } + } else if ((slave.pubicHStyle === "bushy in the front and neat in the rear")) { + r.push(`${His} ${slave.pubicHColor} pubic hair forms a natural bush above ${his}`); + if (slave.dick > 0) { + r.push(`cock.`); + } else if (slave.vagina === -1) { + r.push(`smoothness.`); + } else { + r.push(`pussy.`); + } + } else if ((slave.pubicHStyle === "bushy")) { + r.push(`${His} ${slave.pubicHColor} pubic hair forms a natural bush above ${his}`); + if (slave.dick > 0) { + r.push(`cock.`); + } else if (slave.vagina === -1) { + r.push(`smoothness.`); + } else { + r.push(`pussy.`); + } + } else if ((slave.pubicHStyle === "very bushy")) { + r.push(`${His} ${slave.pubicHColor} pubic hair forms a dense bush above ${his}`); + if (slave.dick > 0) { + r.push(`cock`); + } else if (slave.vagina === -1) { + r.push(`smoothness`); + } else { + r.push(`pussy`); + } + r.push(`that trails up to ${his} navel.`); + } + + return r.join(" "); +}; diff --git a/src/npc/descriptions/crotch/vaginalAccessory.js b/src/npc/descriptions/crotch/vaginalAccessory.js new file mode 100644 index 0000000000000000000000000000000000000000..5be5abd97965dacd106f5cf3c6c53194016162e3 --- /dev/null +++ b/src/npc/descriptions/crotch/vaginalAccessory.js @@ -0,0 +1,94 @@ +App.Desc.vaginalAccessory = function(slave) { + const r = []; + const { + he, him, his, hers, himself, boy, He, His + } = getPronouns(slave); + let held; + if (slave.chastityVagina) { + held = "held in place by a chastity belt"; + } else if (slave.vaginalAccessory === "bullet vibrator" || slave.vaginalAccessory === "smart bullet vibrator") { + held = "held in place by a strap"; + } else { + held = "held in place by a strap, which ${he} can remove for vaginal intercourse"; + } + switch (slave.vaginalAccessory) { + case "bullet vibrator": + case "smart bullet vibrator": // FIXME: two different descriptions? + r.push(`A bullet vibrator is attached on ${his} clit, ${held}.`); // FIXME: not super happy with this + break; + case "dildo": + /* TODO: these may need to be updated for slaves with gaping+ vaginas */ + r.push(`${His} pussy is filled by a dildo ${held}.`); + break; + case "long dildo": + r.push(`${His} pussy is filled by a very long dildo ${held}. It noticeably bulges ${his} stomach.`); + break; + case "large dildo": + r.push(`${His} pussy is `); + if (slave.vagina < 2) { + r.push(`painfully stretched`); + } else if (slave.vagina < 3) { + r.push(`uncomfortably filled`); + } else { + r.push(`comfortably filled`); + } + r.push(`by a large dildo ${held}.`); + break; + case "long, large dildo": + r.push(`${His} pussy is `); + if (slave.vagina < 2) { + r.push(`painfully stretched`); + } else if (slave.vagina < 3) { + r.push(`uncomfortably filled`); + } else { + r.push(`comfortably filled`); + } + r.push(`by a very long and large dildo ${held}. It noticeably bulges ${his} stomach.`); + break; + case "huge dildo": + if (slave.vagina < 4) { + r.push(`${His} pussy is filled to the breaking point by an enormous dildo.`); + if (slave.fetish === "masochist" && slave.fetishKnown === 1 && slave.fetishStrength > 60) { + r.push(`${He} can barely move with the discomfort, but ${he} frequently climaxes with agony.`); + } else { + r.push(`${He} can barely move with the discomfort, and ${he} sometimes breaks down in tears at having ${his} cunt permanently stretched.`); + } + } else { + r.push(`${His} cavernous pussy is comfortably filled by a huge dildo.`); + } + if (slave.chastityVagina) { + r.push(`A chastity belt locks it securely in place.`); + } + break; + case "long, huge dildo": + if (slave.vagina < 4) { + r.push(`${His} pussy is filled to the breaking point by an enormously wide and long dildo. It noticeably bulges ${his} stomach.`); + if (slave.fetish === "masochist" && slave.fetishKnown === 1 && slave.fetishStrength > 60) { + r.push(`${He} can barely move with the discomfort, but ${he} frequently climaxes with agony.`); + } else { + r.push(`${He} can barely move with the discomfort, and ${he} sometimes breaks down in tears at having ${his} cunt permanently stretched.`); + } + } else { + r.push(`${His} cavernous pussy is comfortably filled by an enormously wide and long dildo. It noticeably bulges ${his} stomach.`); + } + if (slave.chastityVagina) { + r.push(`A chastity belt locks it securely in place.`); + } + break; + default: + if (slave.chastityVagina) { + r.push(`${His} pussy is protected by a chastity `); + if (slave.clothes !== "no clothing") { + r.push(`belt worn under ${his} clothing.`); + } else { + r.push(`belt.`); + } + } + break; + } + if (slave.chastityVagina && V.arcologies[0].FSRestart !== "unset") { + r.push(`This pleases the Societal Elite.`); + } + + return r.join(" "); +}; diff --git a/src/uncategorized/longSlaveDescription.tw b/src/uncategorized/longSlaveDescription.tw index 27570d209740806ce8787a079815512b3ad00985..b4cbdeca7c542f8dedd7f9409f31e8328b9afabc 100644 --- a/src/uncategorized/longSlaveDescription.tw +++ b/src/uncategorized/longSlaveDescription.tw @@ -2004,7 +2004,7 @@ $He is <<= App.Desc.crotch($activeSlave)>> <<= App.Desc.dick($activeSlave)>> -<<vaginaDescription>> +<<= App.Desc.vagina($activeSlave)>> <<= App.Desc.anus($activeSlave)>> diff --git a/src/utility/descriptionWidgetsFlesh.tw b/src/utility/descriptionWidgetsFlesh.tw index 1d4b246d904175454f4fc7eb76a19bf0dd5bc1f8..81789b0abbc563785a1caa94c8446bb89b2cf907 100644 --- a/src/utility/descriptionWidgetsFlesh.tw +++ b/src/utility/descriptionWidgetsFlesh.tw @@ -1,504 +1,5 @@ :: flesh description widgets [widget nobr] -<<widget "vaginaDescription">> - -<<if $activeSlave.dick > 0>> - <<if $activeSlave.vagina > -1>> - $His - <<if $activeSlave.genes == "XX">> - beautifully natural - <<elseif $activeSlave.ovaries == 1>> - finely crafted - <<else>> - artificial - <</if>> - vagina is located beneath the base of $his penis, - <<if $activeSlave.fuckdoll > 0>> - just after the suit's material stops to bare $his front hole. - <<elseif ($activeSlave.scrotum > 3) && ($activeSlave.balls <= $activeSlave.scrotum)>> - though it is almost completely hidden by $his hanging ballsack. - <<elseif ($activeSlave.scrotum > 1) && ($activeSlave.balls > 0)>> - its upper part concealed by $his balls. - <<elseif canAchieveErection($activeSlave)>> - and merges seamlessly into $his shaft. - <<else>> - <<if ($activeSlave.dick > 3)>> - though it is almost completely hidden by $his soft cockmeat. - <<else>> - which acts as a soft little dickclit for it. - <</if>> - <</if>> - <<if $activeSlave.clit == 0>> - The base of $his cock is located where the clitoris would be on a normal woman. - <</if>> - <</if>> -<</if>> - -<<if ($activeSlave.vagina > -1)>> - - <<if $activeSlave.vagina == 0>> - $He is a @@.lime;virgin.@@ $His pussy is fresh, - <<elseif $activeSlave.vagina == 1>> - $His pussy is tight and appealing, - <<elseif $activeSlave.vagina == 2>> - $His pussy is reasonably tight, - <<elseif $activeSlave.vagina == 3>> - $His pussy is loose, - <<elseif $activeSlave.vagina >= 10>> - $His pussy has been completely ruined from hundreds of births. One could fit their arm into it with minimal effort and $he can barely get off from vaginal sex now. $His pussy is abyssal, - <<elseif $activeSlave.vagina > 3>> - $His pussy is utterly cavernous, - <</if>> - - <<if $activeSlave.labia == 0>> - with minimal - <<elseif $activeSlave.labia == 1>> - with big puffy - <<elseif $activeSlave.labia == 2>> - with huge - <<else>> - with huge dangling - <</if>> - - <<if ($seeRace == 1)>> - <<if $activeSlave.race == "white">> - pink pussylips. - <<elseif $activeSlave.race == "asian">> - dark $activeSlave.race pussylips. - <<elseif $activeSlave.race == "middle eastern">> - dark $activeSlave.race pussylips. - <<elseif $activeSlave.race == "latina">> - dark $activeSlave.race pussylips. - <<elseif $activeSlave.race == "black">> - dark $activeSlave.race pussylips. - <<else>> - $activeSlave.skin pussylips. - <</if>> - <<else>> - $activeSlave.skin pussylips. - <</if>> - - <<if ($activeSlave.vagina > -1)>> - <<if ($activeSlave.vaginaLube == 0)>> - <<if ($activeSlave.vagina > 0) && !($activeSlave.chastityVagina)>> - $He produces very little natural wetness, so $he is <<if $activeSlave.fuckdoll == 0>>required to keep $himself<<else>>is kept<</if>> artificially lubricated for anyone who wishes to use $his cunt. - <<else>> - $He produces very little natural wetness. - <</if>> - <<if $activeSlave.prostate != 0>> - <<if $activeSlave.dick == 0>> - In stark contrast, however, $he's been given a functional prostate gland. It's attached to $his urethra, of course, so despite $his dryness, $he squirts <<if $activeSlave.balls > 0>>semen<<else>>fluid<</if>> when $he orgasms. - <<if $activeSlave.prostate > 2>> - With the implant embedded in it, that squirt is more like a blast; $he will soak $himself and anyone near $him. - <</if>> - <</if>> - <</if>> - <<elseif ($activeSlave.vaginaLube < 2)>> - <<if ($activeSlave.assignment == "work in the dairy") && ($dairyPregSetting > 1)>> - The dildo's ejaculate includes a drug that causes copious, constant vaginal lubrication, allowing it to fuck $him despite its giant size. The excess female fluid drips off $him and into a catch basin. - <<elseif ($activeSlave.aphrodisiacs > 0) || ($activeSlave.inflationType == "aphrodisiac")>> - The aphrodisiacs have them <<if ($activeSlave.aphrodisiacs > 1) || ($activeSlave.inflationType == "aphrodisiac" && $activeSlave.inflation >= 2)>>sopping <</if>>wet. - <<elseif ($activeSlave.energy > 95)>> - As a nympho, $he's almost constantly wet. - <<elseif ($activeSlave.fetishStrength > 60) && ($activeSlave.fetishKnown == 1)>> - Judging by how wet $he is, $he's probably fantasizing about - <<switch $activeSlave.fetish>> - <<case "buttslut">> - being buttfucked. - <<case "cumslut">> - being facefucked. - <<case "humiliation">> - being humiliated. - <<case "submissive">> - submission. - <<case "dom">> - dominating someone. - <<case "sadist">> - hurting someone. - <<case "masochist">> - pain. - <<case "pregnancy">> - <<if $activeSlave.pregKnown>> - having another <<if $activeSlave.pregType > 1>>brood<<else>>child<</if>> after this one. - <<else>> - getting pregnant. - <</if>> - <<case "boobs">> - boobs. - <<default>> - getting fucked. - <</switch>> - <<elseif ($activeSlave.devotion > 50)>> - As a devoted sex slave, $he has no trouble keeping $himself wet for $his <<= WrittenMaster($activeSlave)>>. - <<elseif ($activeSlave.devotion > 20)>> - As an obedient sex slave, $he does $his best to keep $himself wet for $his <<= WrittenMaster($activeSlave)>>. - <</if>> - <<if $activeSlave.prostate != 0>> - <<if $activeSlave.dick == 0>> - Bizarrely, $he's been given a functional prostate gland. It's attached to $his urethra, of course, <<if $activeSlave.balls > 0>>which in combination with $his testicles make $his squirt copious amounts of fluids and semen with each orgasm<<else>>so $he squirts copiously when $he orgasms<</if>>. - <<if $activeSlave.prostate > 2>> - With the implant embedded in it; that gush is more like a flood. Changes of clothes are a must with $him, as $he can and will soak both you, $himself and what $he is getting fucked over. - <</if>> - <</if>> - <</if>> - <<else>> - <<if ($activeSlave.assignment == "work in the dairy") && ($dairyPregSetting > 1)>> - The dildo's ejaculate includes a drug that encourages vaginal lubrication, which is having a drastic effect on $him, since $he's already very gifted in that regard. The dildo makes a wet noise every time it thrusts into $him, and femcum streams into a catch basin beneath $him. The smell of pussy is overwhelming. - <<elseif ($activeSlave.aphrodisiacs > 0) || ($saleDescription == 1 && $gingering == "vasodilator") || ($activeSlave.inflationType == "aphrodisiac")>> - The combination of the aphrodisiacs and $his natural tendency to produce a lot of female lubricant is having a drastic effect. $His cunt is absolutely beribboned with femcum, and $he smells strongly of wet, clean pussy. - <<elseif ($activeSlave.energy > 95)>> - $He has a naturally wet cunt, and in combination with $his nymphomania, it's soaking. $He smells of good clean female arousal. - <<elseif ($activeSlave.fetishStrength > 60) && ($activeSlave.fetishKnown == 1)>> - $His naturally wet cunt is almost dripping female lubricant, and $he smells of good clean female arousal. $He's probably fantasizing about - <<switch $activeSlave.fetish>> - <<case "buttslut">> - being buttfucked. - <<case "cumslut">> - being facefucked. - <<case "humiliation">> - being humiliated. - <<case "submissive">> - submission. - <<case "dom">> - dominating someone. - <<case "sadist">> - hurting someone. - <<case "masochist">> - pain. - <<case "pregnancy">> - <<if $activeSlave.pregKnown == 1>> - growing rounder. - <<else>> - getting pregnant. - <</if>> - <<case "boobs">> - boobs. - <<default>> - getting fucked. - <</switch>> - <<elseif ($activeSlave.devotion > 50)>> - $His cunt is almost always soaking wet, but being near you has $his almost dripping. - <<elseif ($activeSlave.devotion > 20)>> - $His cunt is almost always soaking wet, and being near you isn't affecting that. - <<else>> - $His cunt is almost always soaking wet, regardless of $his feelings. - <</if>> - <<if $activeSlave.prostate != 0>> - <<if $activeSlave.dick == 0>> - Bizarrely, $he's been given a functional prostate gland. It's attached to $his urethra, of course, <<if $activeSlave.balls > 0>>which in combination with $his testicles make $his squirt unreasonable volume of fluids and semen with each orgasm<<else>>meaning that when $he orgasms, $he squirts an unreasonable volume of fluid<</if>>. - <<if $activeSlave.prostate > 2>> - With the implant embedded in it, that gush is insane. Everything around $him is at risk of being splashed. Changes of clothes are a must with $him, as are supplies to mop up afterwards. - <</if>> - <</if>> - <</if>> - <</if>> - <</if>> - - <<vaginalAccessoryDescription>> - -<</if>> - -<<if $activeSlave.ovaImplant != 0>> - <<switch $activeSlave.ovaImplant>> - <<case "fertility">> - $His ovaries have a pair of implants attached to them to encourage ovulation<<if $activeSlave.preg < -1>>, not that it does $him any good<</if>>. - <<case "sympathy">> - $His ovaries have a pair of linked implants attached to them so that when one releases an egg the other does so as well. - <<case "asexual">> - One of $his ovaries has been replaced with a fabricated sperm sack designed to fertilize any eggs $he makes. - <</switch>> -<</if>> - -<<if $activeSlave.dick == 0 && $activeSlave.balls == 0 && $activeSlave.vagina < 0 && $arcologies[0].FSRestart > 60>> - Society looks fondly on $his complete inability to reproduce. -<</if>> - - -<<if ($activeSlave.dick == 0)>> - <<if ($activeSlave.clit > 0)>> - <<if ($activeSlave.foreskin == 0)>> - <<if ($activeSlave.clit == 1)>> - <<if ($activeSlave.devotion > 50)>> - $His clit is quite large and visibly hard. - <<else>> - $His clit is quite large. - <</if>> - $His lack of hood makes it even more prominent. - <<elseif ($activeSlave.clit == 2)>> - <<if ($activeSlave.devotion > 50)>> - $His clit is huge and visibly erect. - <<else>> - $His clit is huge. - <</if>> - Lack of hood combined with its size means $he can't wear any clothes without being constantly stimulated. - <<elseif ($activeSlave.clit == 3)>> - <<if ($activeSlave.devotion > 50)>> - $His clit is enormous, and since it's erect with arousal, it juts out proudly. - <<else>> - $His clit is enormous, almost a pseudophallus. - <</if>> - <<elseif ($activeSlave.clit == 4)>> - <<if ($activeSlave.devotion > 50)>> - $His clit has reached the size of an average penis, it stands at attention but due to lack of erectile tissues it can't reach the same hardness a penis would. - <<else>> - $His clit has reached the size of an average penis. - <</if>> - <<else>> - <<if ($activeSlave.devotion > 50)>> - $His clit is massive, having reached the size of a large penis. It is semi-erect since lack of erectile tissues means it can never become fully erect. - <<else>> - $His clit is massive, having reached the size of a large penis. - <</if>> - <</if>> - <<elseif ($activeSlave.foreskin == 1)>> - <<if ($activeSlave.clit == 1)>> - <<if ($activeSlave.devotion > 50)>> - $His clit is quite large and visibly hard. - <<else>> - $His clit is quite large. - <</if>> - $His clitoral hood is stretched thin trying to cover it. - <<elseif ($activeSlave.clit == 2)>> - <<if ($activeSlave.devotion > 50)>> - $His clit is huge and visibly erect. - <<else>> - $His clit is huge. - <</if>> - $His small hood is no longer able to cover it completely and large part of $his clitoris is always exposed. - <<elseif ($activeSlave.clit == 3)>> - <<if ($activeSlave.devotion > 50)>> - $His clit is enormous, and since it's erect with arousal, it juts out proudly. - <<else>> - $His clit is enormous, almost a pseudophallus. - <</if>> - $His hood can no longer contain it and has slid back causing $his clitoris to be always exposed. - <<elseif ($activeSlave.clit == 4)>> - <<if ($activeSlave.devotion > 50)>> - $His clit has reached the size of an average penis, it stands at attention but due to lack of erectile tissues it can't reach the same hardness a penis would. - <<else>> - $His clit has reached the size of an average penis. - <</if>> - $His hood can no longer contain it and has slid back causing $his clitoris to be always exposed. - <<else>> - <<if ($activeSlave.devotion > 50)>> - $His clit is massive, having reached the size of a large penis. It is semi-erect since lack of erectile tissues means it can never become fully erect. - <<else>> - $His clit is massive, having reached the size of a large penis. - <</if>> - $His hood can no longer contain it and has slid back causing $his clitoris to be always exposed. - <</if>> - <<elseif ($activeSlave.foreskin == 2)>> - <<if ($activeSlave.clit == 1)>> - <<if ($activeSlave.devotion > 50)>> - $His clit is quite large and visibly hard. - <<else>> - $His clit is quite large. - <</if>> - It is completely covered by its hood. - <<elseif ($activeSlave.clit == 2)>> - <<if ($activeSlave.devotion > 50)>> - $His clit is huge and visibly erect. - <<else>> - $His clit is huge. - <</if>> - Its hood is stretched thin trying to cover it. - <<elseif ($activeSlave.clit == 3)>> - <<if ($activeSlave.devotion > 50)>> - $His clit is enormous, and since it's erect with arousal, it juts out proudly. - <<else>> - $His clit is enormous, almost a pseudophallus. - <</if>> - It's large enough that the hood can cover only half of it. - <<elseif ($activeSlave.clit == 4)>> - <<if ($activeSlave.devotion > 50)>> - $His clit has reached the size of an average penis, it stands at attention but due to lack of erectile tissues it can't reach the same hardness a penis would. - <<else>> - $His clit has reached the size of an average penis. - <</if>> - $His hood can no longer contain it and has slid back causing $his clitoris to be always exposed. - <<else>> - <<if ($activeSlave.devotion > 50)>> - $His clit is massive, having reached the size of a large penis. It is semi-erect since lack of erectile tissues means it can never become fully erect. - <<else>> - $His clit is massive, having reached the size of a large penis. - <</if>> - $His hood can no longer contain it and has slid back causing $his clitoris to be always exposed. - <</if>> - <<elseif ($activeSlave.foreskin == 3)>> - <<if ($activeSlave.clit == 1)>> - <<if ($activeSlave.devotion > 50)>> - $His clit is quite large and visibly hard. - <<else>> - $His clit is quite large. - <</if>> - The hood covering it is quite large making stimulation difficult. - <<elseif ($activeSlave.clit == 2)>> - <<if ($activeSlave.devotion > 50)>> - $His clit is huge and visibly erect. - <<else>> - $His clit is huge. - <</if>> - $His large hood completely covers it. - <<elseif ($activeSlave.clit == 3)>> - <<if ($activeSlave.devotion > 50)>> - $His clit is enormous, and since it's erect with arousal, it juts out proudly. - <<else>> - $His clit is enormous, almost a pseudophallus. - <</if>> - $His large hood covers all but the tip of $his clit even when aroused. - <<elseif ($activeSlave.clit == 4)>> - <<if ($activeSlave.devotion > 50)>> - $His clit has reached the size of an average penis, it stands at attention but due to lack of erectile tissues it can't reach the same hardness a penis would. - <<else>> - $His clit has reached the size of an average penis. - <</if>> - Even $his large hood can't cover it, leaving over half of the clit exposed. - <<else>> - <<if ($activeSlave.devotion > 50)>> - $His clit is massive, having reached the size of a large penis. It is semi-erect since lack of erectile tissues means it can never become fully erect. - <<else>> - $His clit is massive, having reached the size of a large penis. - <</if>> - $His hood can no longer contain it and has slid back causing $his clitoris to be always exposed. - <</if>> - <<else>> - <<if ($activeSlave.clit == 1)>> - <<if ($activeSlave.devotion > 50)>> - $His clit is quite large and visibly hard. - <<else>> - $His clit is quite large. - <</if>> - $His large thick hood covering it makes any stimulation difficult. - <<elseif ($activeSlave.clit == 2)>> - <<if ($activeSlave.devotion > 50)>> - $His clit is huge and visibly erect. - <<else>> - $His clit is huge. - <</if>> - $His large thick hood covering it makes any stimulation difficult. - <<elseif ($activeSlave.clit == 3)>> - <<if ($activeSlave.devotion > 50)>> - $His clit is enormous, and since it's erect with arousal, it juts out proudly. - <<else>> - $His clit is enormous, almost a pseudophallus. - <</if>> - Matching its size is the thick hood covering it. - <<elseif ($activeSlave.clit == 4)>> - <<if ($activeSlave.devotion > 50)>> - $His clit has reached the size of an average penis, it stands at attention but due to lack of erectile tissues it can't reach the same hardness a penis would. - <<else>> - $His clit has reached the size of an average penis. - <</if>> - $His large hood covering over half of it adds to its penis-like appearance. - <<else>> - <<if ($activeSlave.devotion > 50)>> - $His clit is massive, having reached the size of a large penis. It is semi-erect, since lack of erectile tissues means it can never reach full erection. - <<else>> - $His clit is massive, having reached the size of a large penis. - <</if>> - Not even its large hood can contain it, leaving over half of it exposed. - <</if>> - <</if>> - <</if>> -<</if>> - -<<= App.Desc.mods($activeSlave, "vagina")>> -<<= App.Desc.mods($activeSlave, "clit")>> - -<<if $activeSlave.fuckdoll == 0>> - <<if $activeSlave.rules.release.masturbation == 1>> - <<if (($activeSlave.aphrodisiacs > 0) || ($activeSlave.inflationType == "aphrodisiac")) && $activeSlave.drugs != "priapism agents">> - <<if ($activeSlave.aphrodisiacs > 1) || ($activeSlave.inflationType == "aphrodisiac" && $activeSlave.inflation > 1)>> - <<if ($activeSlave.dick != 0) && ($activeSlave.hormoneBalance >= 100) && (!hasAnyArms($activeSlave))>> - The extreme dose of aphrodisiacs combined with the hormones that keep $him flaccid have $him in a state of extreme sexual frustration; $he's <<if (($activeSlave.fetish == "buttslut") || (($activeSlave.sexualFlaw != "hates anal") && ($activeSlave.counter.anal > 9)))>>unconsciously humping $his ass against whatever's next to $him for anal stimulation and<</if>>humping $his dick against whatever $he can manage to mount without limbs.<<if $activeSlave.inflationType == "aphrodisiac">> $His efforts force $his distended middle to jiggle around, stirring up the aphrodisiacs contained in $his gut and strengthening their effects even more.<</if>> - <<elseif ($activeSlave.dick != 0) && ($activeSlave.balls > 0) && $activeSlave.ballType == "sterile" && (!hasAnyArms($activeSlave))>> - The extreme dose of aphrodisiacs combined with the chemical castration that keeps $him flaccid have $him in a state of extreme sexual frustration; $he's <<if (($activeSlave.fetish == "buttslut") || (($activeSlave.sexualFlaw != "hates anal") && ($activeSlave.counter.anal > 9)))>>unconsciously humping $his ass against whatever's next to $him for anal stimulation and <</if>>humping $his limp dick against whatever $he can manage to mount without limbs.<<if $activeSlave.inflationType == "aphrodisiac">> $His efforts force $his distended middle to jiggle around, stirring up the aphrodisiacs contained in $his gut and strengthening their effects even more.<</if>> - <<elseif ($activeSlave.dick != 0) && ($activeSlave.balls == 0) && (!hasAnyArms($activeSlave))>> - The extreme dose of aphrodisiacs combined with the lack of balls that keeps $him flaccid have $him in a state of extreme sexual frustration; $he's <<if (($activeSlave.fetish == "buttslut") || (($activeSlave.sexualFlaw != "hates anal") && ($activeSlave.counter.anal > 9)))>>unconsciously humping $his ass against whatever's next to $him for anal stimulation and <</if>>humping $his limp dick against whatever $he can manage to mount without limbs.<<if $activeSlave.inflationType == "aphrodisiac">> $His efforts force $his distended middle to jiggle around, stirring up the aphrodisiacs contained in $his gut and strengthening their effects even more.<</if>> - <<elseif ($activeSlave.dick != 0) && ($activeSlave.hormoneBalance >= 100)>> - The extreme dose of aphrodisiacs combined with the hormones that keep $him flaccid have $him in a state of extreme sexual frustration; $he's rubbing $his limp dick distractedly<<if (($activeSlave.fetish == "buttslut") || (($activeSlave.sexualFlaw != "hates anal") && ($activeSlave.counter.anal > 9)))>> and unconsciously humping $his ass against whatever's next to $him for anal stimulation<</if>>.<<if $activeSlave.inflationType == "aphrodisiac">> $His efforts force $his distended middle to jiggle around, stirring up the aphrodisiacs contained in $his gut and strengthening their effects even more.<</if>> - <<elseif ($activeSlave.dick != 0) && ($activeSlave.balls == 0)>> - The extreme dose of aphrodisiacs combined with the lack of balls that keeps $him flaccid have $him in a state of extreme sexual frustration; $he's rubbing $his limp dick distractedly<<if (($activeSlave.fetish == "buttslut") || (($activeSlave.sexualFlaw != "hates anal") && ($activeSlave.counter.anal > 9)))>> and unconsciously humping $his ass against whatever's next to $him for anal stimulation<</if>>.<<if $activeSlave.inflationType == "aphrodisiac">> $His efforts force $his distended middle to jiggle around, stirring up the aphrodisiacs contained in $his gut and strengthening their effects even more.<</if>> - <<elseif ($activeSlave.dick != 0) && !canAchieveErection($activeSlave)>> - The extreme dose of aphrodisiacs combined with $his inability to become erect have $him in a state of extreme sexual frustration; $he's rubbing $his limp dick distractedly<<if (($activeSlave.fetish == "buttslut") || (($activeSlave.sexualFlaw != "hates anal") && ($activeSlave.counter.anal > 9)))>> and unconsciously humping $his ass against whatever's next to $him for anal stimulation<</if>>.<<if $activeSlave.inflationType == "aphrodisiac">> $His efforts force $his distended middle to jiggle around, stirring up the aphrodisiacs contained in $his gut and strengthening their effects even more.<</if>> - <<elseif ($activeSlave.dick != 0)>> - The extreme dose of aphrodisiacs has $his cock painfully erect and leaves precum dripping from its head. - <</if>> - <<else>> - <<if ($activeSlave.dick != 0) && ($activeSlave.hormoneBalance >= 100) && (!hasAnyArms($activeSlave))>> - The aphrodisiacs combined with the hormones that keep $him flaccid have $him sexually frustrated; $he's <<if (($activeSlave.fetish == "buttslut") || (($activeSlave.sexualFlaw != "hates anal") && ($activeSlave.counter.anal > 9)))>>unconsciously rubbing $his ass against whatever's next to $him, and <</if>>humping $his dick against whatever $he can manage to mount without limbs.<<if $activeSlave.inflationType == "aphrodisiac">> $His efforts force $his distended middle to jiggle around, stirring up the aphrodisiacs contained in $his gut and strengthening their effects even more.<</if>> - <<elseif ($activeSlave.dick != 0) && ($activeSlave.balls > 0) && $activeSlave.ballType == "sterile" && (!hasAnyArms($activeSlave))>> - The aphrodisiacs combined with the chemical castration that keeps $him flaccid have $him sexually frustrated; $he's <<if (($activeSlave.fetish == "buttslut") || (($activeSlave.sexualFlaw != "hates anal") && ($activeSlave.counter.anal > 9)))>>unconsciously rubbing $his ass against whatever's next to $him, and <</if>>humping $his dick against whatever $he can manage to mount without limbs.<<if $activeSlave.inflationType == "aphrodisiac">> $His efforts force $his distended middle to jiggle around, stirring up the aphrodisiacs contained in $his gut and strengthening their effects even more.<</if>> - <<elseif ($activeSlave.dick != 0) && ($activeSlave.balls == 0) && (!hasAnyArms($activeSlave))>> - The aphrodisiacs combined with the lack of balls that keeps $him flaccid have $him sexually frustrated; $he's <<if (($activeSlave.fetish == "buttslut") || (($activeSlave.sexualFlaw != "hates anal") && ($activeSlave.counter.anal > 9)))>>unconsciously rubbing $his ass against whatever's next to $him, and <</if>>humping $his dick against whatever $he can manage to mount without limbs.<<if $activeSlave.inflationType == "aphrodisiac">> $His efforts force $his distended middle to jiggle around, stirring up the aphrodisiacs contained in $his gut and strengthening their effects even more.<</if>> - <<elseif ($activeSlave.dick != 0) && ($activeSlave.hormoneBalance >= 100)>> - The aphrodisiacs combined with the hormones that keep $him flaccid have $him sexually frustrated; $he's touching $his limp dick distractedly<<if (($activeSlave.fetish == "buttslut") || (($activeSlave.sexualFlaw != "hates anal") && ($activeSlave.counter.anal > 9)))>> and unconsciously rubbing $his ass against whatever's next to $him<</if>>.<<if $activeSlave.inflationType == "aphrodisiac">> $His efforts force $his distended middle to jiggle around, stirring up the aphrodisiacs contained in $his gut and strengthening their effects even more.<</if>> - <<elseif ($activeSlave.dick != 0) && ($activeSlave.balls == 0)>> - The aphrodisiacs combined with the lack of balls that keeps $him flaccid have $him sexually frustrated; $he's touching $his limp dick distractedly<<if (($activeSlave.fetish == "buttslut") || (($activeSlave.sexualFlaw != "hates anal") && ($activeSlave.counter.anal > 9)))>> and unconsciously rubbing $his ass against whatever's next to $him<</if>>.<<if $activeSlave.inflationType == "aphrodisiac">> $His efforts force $his distended middle to jiggle around, stirring up the aphrodisiacs contained in $his gut and strengthening their effects even more.<</if>> - <</if>> - <</if>> - <</if>> - <</if>> -<</if>> - -<<if $activeSlave.fuckdoll > 0>> - <<if $activeSlave.vagina > 0>> - $His front hole - <<if $activeSlave.fuckdoll <= 45>> - is mostly useful when $he's restrained for rape. - <<else>> - will massage <<if $PC.dick != 0>>cocks<<else>>anything<</if>> placed inside it on command. - <<if $activeSlave.fuckdoll <= 85>> - $He is even capable of riding <<if $PC.dick != 0>>dick<<else>>a strap-on<</if>>. - <</if>> - <</if>> - <</if>> -<<else>> - <<if $activeSlave.vagina == -1>> - <<if $seeDicks >= 100>><<elseif $activeSlave.anus == 0>><<else>>Since $he lacks a vagina, $he takes it up <<if $seeRace == 1>>$his $activeSlave.race<<else>>the<</if>> ass instead.<</if>> - <<elseif $activeSlave.skill.vaginal >= 100>>$He is a @@.aquamarine;vanilla sex master.@@ - <<elseif $activeSlave.skill.vaginal > 60>>$He is a @@.aquamarine;vanilla sex expert.@@ - <<elseif $activeSlave.skill.vaginal > 30>>$He is @@.aquamarine;skilled at vanilla sex.@@ - <<elseif $activeSlave.skill.vaginal > 10>>$He has @@.aquamarine;basic knowledge about vanilla sex.@@ - <<else>>$He is unskilled at vaginal sex. - <</if>> -<</if>> - -<<= App.Desc.mods($activeSlave, "pubic mound")>> - -<<set _pubertyAge = Math.min($activeSlave.pubertyAgeXX, $activeSlave.pubertyAgeXY)>> -<<if ($activeSlave.physicalAge < _pubertyAge-2)>> - $He is too sexually immature to have pubic hair. -<<elseif ($activeSlave.pubicHStyle == "hairless")>> - $He's naturally smooth and hairless. -<<elseif ($activeSlave.pubicHStyle == "bald")>> - $He is no longer able to grow pubic hair leaving $him hairless and smooth. -<<elseif ($activeSlave.pubicHStyle == "waxed")>> - <<if $activeSlave.fuckdoll > 0>> - $His pubic hair has been removed to prevent chafing. - <<elseif ($activeSlave.assignment == "work in the dairy") && ($dairyRestraintsSetting > 1)>> - $His pubic hair has been removed to prevent chafing. - <<else>> - $He's waxed and smooth. - <</if>> -<<elseif ($activeSlave.physicalAge < _pubertyAge-1)>> - $He has a few wisps of pubic hair. -<<elseif ($activeSlave.physicalAge < _pubertyAge)>> - $He is on the verge of puberty and has a small patch of $activeSlave.pubicHColor pubic hair above $his <<if $activeSlave.dick > 0>>cock<<elseif $activeSlave.vagina == -1>>smoothness<<else>>pussy<</if>>. -<<elseif ($activeSlave.pubicHStyle == "in a strip")>> - $His $activeSlave.pubicHColor pubic hair is waxed into a narrow strip above $his <<if $activeSlave.dick > 0>>cock<<elseif $activeSlave.vagina == -1>>smoothness<<else>>pussy<</if>>. -<<elseif ($activeSlave.pubicHStyle == "neat")>> - $His $activeSlave.pubicHColor pubic hair is waxed into a neat patch above $his <<if $activeSlave.dick > 0>>cock<<elseif $activeSlave.vagina == -1>>smoothness<<else>>pussy<</if>>. -<<elseif ($activeSlave.pubicHStyle == "bushy in the front and neat in the rear")>> - $His $activeSlave.pubicHColor pubic hair forms a natural bush above $his <<if $activeSlave.dick > 0>>cock<<elseif $activeSlave.vagina == -1>>smoothness<<else>>pussy<</if>>. -<<elseif ($activeSlave.pubicHStyle == "bushy")>> - $His $activeSlave.pubicHColor pubic hair forms a natural bush above $his <<if $activeSlave.dick > 0>>cock<<elseif $activeSlave.vagina == -1>>smoothness<<else>>pussy<</if>>. -<<elseif ($activeSlave.pubicHStyle == "very bushy")>> - $His $activeSlave.pubicHColor pubic hair forms a dense bush above $his <<if $activeSlave.dick > 0>>cock<<elseif $activeSlave.vagina == -1>>smoothness<<else>>pussy<</if>> that trails up to $his navel. -<</if>> - -<</widget>> - <<widget "earDescription">> /* ear shape description here */ <<if $activeSlave.earShape == "none">> diff --git a/src/utility/descriptionWidgetsStyle.tw b/src/utility/descriptionWidgetsStyle.tw index 4df3fda723a122185b9fbd35e6b3ac7f2d3b101c..32635c94d94cf38a05dd64ebe0c8405025c978ec 100644 --- a/src/utility/descriptionWidgetsStyle.tw +++ b/src/utility/descriptionWidgetsStyle.tw @@ -6027,61 +6027,6 @@ $His <</widget>> <<widget "vaginalAccessoryDescription">> -<<if $activeSlave.chastityVagina>> - <<set _held = "held in place by a chastity belt">> -<<elseif $activeSlave.vaginalAccessory == "bullet vibrator" || $activeSlave.vaginalAccessory == "smart bullet vibrator">> - <<set _held = "held in place by a strap">> -<<else>> - <<set _held = "held in place by a strap, which $he can remove for vaginal intercourse">> -<</if>> -<<switch $activeSlave.vaginalAccessory>> -<<case "bullet vibrator" "smart bullet vibrator">> /* FIXME: two different descriptions? */ - A bullet vibrator is attached on $his clit, _held. /* FIXME: not super happy with this */ -<<case "dildo">> - /* TODO: these may need to be updated for slaves with gaping+ vaginas */ - $His pussy is filled by a dildo _held. -<<case "long dildo">> - $His pussy is filled by a very long dildo _held. It noticeably bulges $his stomach. -<<case "large dildo">> - $His pussy is <<if $activeSlave.vagina < 2>>painfully stretched<<elseif $activeSlave.vagina < 3>>uncomfortably filled<<else>>comfortably filled<</if>> by a large dildo _held. -<<case "long, large dildo">> - $His pussy is <<if $activeSlave.vagina < 2>>painfully stretched<<elseif $activeSlave.vagina < 3>>uncomfortably filled<<else>>comfortably filled<</if>> by a very long and large dildo _held. It noticeably bulges $his stomach. -<<case "huge dildo">> - <<if $activeSlave.vagina < 4>> - $His pussy is filled to the breaking point by an enormous dildo. - <<if ($activeSlave.fetish == "masochist") && ($activeSlave.fetishKnown == 1) && ($activeSlave.fetishStrength > 60)>> - $He can barely move with the discomfort, but $he frequently climaxes with agony. - <<else>> - $He can barely move with the discomfort, and $he sometimes breaks down in tears at having $his cunt permanently stretched. - <</if>> - <<else>> - $His cavernous pussy is comfortably filled by a huge dildo. - <</if>> - <<if $activeSlave.chastityVagina>> - A chastity belt locks it securely in place. - <</if>> -<<case "long, huge dildo">> - <<if $activeSlave.vagina < 4>> - $His pussy is filled to the breaking point by an enormously wide and long dildo. It noticeably bulges $his stomach. - <<if ($activeSlave.fetish == "masochist") && ($activeSlave.fetishKnown == 1) && ($activeSlave.fetishStrength > 60)>> - $He can barely move with the discomfort, but $he frequently climaxes with agony. - <<else>> - $He can barely move with the discomfort, and $he sometimes breaks down in tears at having $his cunt permanently stretched. - <</if>> - <<else>> - $His cavernous pussy is comfortably filled by an enormously wide and long dildo. It noticeably bulges $his stomach. - <</if>> - <<if $activeSlave.chastityVagina>> - A chastity belt locks it securely in place. - <</if>> -<<default>> - <<if $activeSlave.chastityVagina>> - $His pussy is protected by a chastity belt<<if $activeSlave.clothes != "no clothing">> worn under $his clothing<</if>>. - <</if>> -<</switch>> -<<if $activeSlave.chastityVagina && $arcologies[0].FSRestart != "unset">> - This pleases the Societal Elite. -<</if>> <</widget>> <<widget "vaginalAttachmentDescription">>