From dc8b23122e229ce7b388055742f54f00399f1b94 Mon Sep 17 00:00:00 2001 From: Skriv <skrivelese@gmail.com> Date: Sat, 10 Jul 2021 22:39:07 +0000 Subject: [PATCH] Misc text cleaning and compression --- src/js/statsChecker/limbChecker.js | 28 +++--- src/npc/interaction/fAbuse.js | 1 + src/npc/interaction/fAnus.js | 33 +++--- src/npc/interaction/fAssistedSex.js | 4 +- src/npc/interaction/fBeg.js | 35 ++++--- src/npc/interaction/fButt.js | 2 +- src/npc/interaction/fCaress.js | 25 +---- src/npc/interaction/fDick.js | 150 +++++++--------------------- src/npc/interaction/fEmbrace.js | 56 ++--------- src/npc/interaction/fFeelings.js | 27 +++-- src/npc/interaction/fFeet.js | 39 ++++---- 11 files changed, 132 insertions(+), 268 deletions(-) diff --git a/src/js/statsChecker/limbChecker.js b/src/js/statsChecker/limbChecker.js index f13e66a1f3b..5ba437f68db 100644 --- a/src/js/statsChecker/limbChecker.js +++ b/src/js/statsChecker/limbChecker.js @@ -305,27 +305,25 @@ globalThis.idToDescription = function(id) { /** * Returns count of specified limb type. Uses new limb IDs: - * 0: no limb - * 1: natural - * 2: basic - * 3: sex - * 4: beauty - * 5: combat - * 6: cybernetic + * * 0: no limb + * * 1: natural + * * 2: basic + * * 3: sex + * * 4: beauty + * * 5: combat + * * 6: cybernetic * * Can also be used to check for groups: - * 101: any limbs, that are not amputated - * 102: prosthetic limbs off all kind - * 103: sex-prosthetic - * 104: beauty-prosthetic - * 105: combat-prosthetic + * * 101: any limbs, that are not amputated + * * 102: prosthetic limbs off all kind + * * 103: sex-prosthetic + * * 104: beauty-prosthetic + * * 105: combat-prosthetic * * 103-105 mean the sum of 3-5 and 6 respectfully. * - * No ID means all limbs = 101 - * * @param {FC.LimbsState} slave - * @param {number} [id] + * @param {number} [id] Defaults to all limb types if unspecified (id = 101) * @returns {number} */ globalThis.getLimbCount = function(slave, id = 101) { diff --git a/src/npc/interaction/fAbuse.js b/src/npc/interaction/fAbuse.js index 0fed52f19ef..b93824aef30 100644 --- a/src/npc/interaction/fAbuse.js +++ b/src/npc/interaction/fAbuse.js @@ -621,6 +621,7 @@ App.Interact.fAbuse = function(slave) { } r.push(`into ${his} sissy butt without lubricant. As ${he} flinches you announce that ${he}'ll be taking part in giving ${himself} anal pain. ${He} humps into you lamely, so you administer a truly agonizing slap to ${his} balls`); if (V.PC.dick === 0) { + r.push(r.pop() + "."); } else { r.push(`that makes ${his} anal ring stiffen deliciously around your dick.`); } diff --git a/src/npc/interaction/fAnus.js b/src/npc/interaction/fAnus.js index 97c3d14f97b..dabd798e43c 100644 --- a/src/npc/interaction/fAnus.js +++ b/src/npc/interaction/fAnus.js @@ -104,27 +104,20 @@ App.Interact.fAnus = function(slave) { } else { r.push(`bends over`); } - r.push(`and spreads ${his} buttocks${V.PC.dick === 0 ? `as you don a strap-on` : ``}. You spit on ${his} hole and ram`); - if (V.PC.dick === 0) { - r.push(`it`); - } else { - r.push(`your cock`); - } - r.push(`up ${his} butt.`); + r.push(`and spreads ${his} buttocks${V.PC.dick === 0 ? ` as you don a strap-on` : ``}. You spit on ${his} hole and ram`); } else { r.push(`Talking to a broken mind is pointless, so you simply set ${him} on the couch, spread ${his} buttocks with one hand, spit on ${his} hole, and ram`); - if (V.PC.dick === 0) { - r.push(`it`); - } else { - r.push(`your cock`); - } - r.push(`up ${his}`); - if (V.seeRace === 1) { - r.push(slave.race); - } - r.push(`butt.`); } - r.push(`${His} butthole spasms as you assrape ${him},`); + if (V.PC.dick === 0) { + r.push(`it`); + } else { + r.push(`your cock`); + } + r.push(`up ${his}`); + if (V.seeRace === 1) { + r.push(slave.race); + } + r.push(`butt. ${His} butthole spasms as you assrape ${him},`); if (V.PC.dick === 0) { r.push(`an amusing sight.`); } else { @@ -262,9 +255,9 @@ App.Interact.fAnus = function(slave) { } else { r.push(`${His} asspussy is so loose you can pound it as hard as you like`); } - if (slave.dick !== 0) { + if (slave.dick !== 0 && !canAchieveErection(slave)) { r.push(`as ${his} limp dick flops around.`); - } else if (slave.dick !== 0) { + } else if (slave.dick !== 0 && canAchieveErection(slave)) { r.push(`as ${his} erect dick waves in the air.`); } else if (slave.vagina === -1) { r.push(`as it does its duty as ${his} sole fuckhole.`); diff --git a/src/npc/interaction/fAssistedSex.js b/src/npc/interaction/fAssistedSex.js index ac12ad4d45b..f80db4b197d 100644 --- a/src/npc/interaction/fAssistedSex.js +++ b/src/npc/interaction/fAssistedSex.js @@ -112,11 +112,11 @@ App.Interact.fAssistedSex = function(slave) { r.push(`level with your erection. Two of ${his} servants reach around ${his} inflated profile and push ${his} cheeks together, wrapping your dick in a firm layer of butt cleavage. ${He} lifts ${his} ass, then drops it, again and again, smacking your chest on the downswing as ${his} servants manipulate ${his} hotdogging to maximize your pleasure.`); if (canDoVaginal(slave)) { r.push(`When you feel the tension within you reaching its apex, you signal to ${his} servants to hold ${him} in place. With ${his} silent menials, still as statues, anchoring ${his} bloated body at the perfect angle for fucking while contorting their anonymous bodies to frame ${him} in a manner that maximizes ${his} visual attractiveness, you grab hold of ${his} flanks and ram into ${his} pregnant pussy, driving ${him} to the first of many orgasms in just a few casual thrusts.`); - r.push(`${VCheck.Vaginal(slave, 1)}`); + r.push(VCheck.Vaginal(slave, 1)); r.push(`When you feel your own orgasm approaching, you pull out, ejaculating`); } else if (canDoAnal(slave)) { r.push(`When you feel the tension within you reaching its apex, you signal to ${his} servants to hold ${him} in place. With ${his} silent menials, still as statues, anchoring ${his} bloated body at the perfect angle for fucking while contorting their anonymous bodies to frame ${him} in a manner that maximizes ${his} visual attractiveness, you grab hold of ${his} flanks and ram into ${his} asshole, driving ${him} to the first of many orgasms with just a few casual thrusts.`); - r.push(`${VCheck.Anal(slave, 1)}`); + r.push(VCheck.Anal(slave, 1)); r.push(`When you feel your own orgasm approaching, you pull out, ejaculating`); } else { r.push(`When you feel the tension with your reaching its apex, you signal to ${his} servants and they pull ${him} forward. You ejaculate`); diff --git a/src/npc/interaction/fBeg.js b/src/npc/interaction/fBeg.js index b61f3732d80..ef815f9e505 100644 --- a/src/npc/interaction/fBeg.js +++ b/src/npc/interaction/fBeg.js @@ -19,6 +19,8 @@ App.Interact.fBeg = function(slave) { } = getPronouns(V.PC).appendSuffix("P"); const {womenU} = getNonlocalPronouns(V.seeDicks).appendSuffix("U"); + const hands = hasBothArms(slave) ? "hands" : "hand"; + const knees = hasBothLegs(slave) ? "knees" : "knee"; /* things I need: checks for canWalk() to see how easily she can move, blindness checks, replacement for BoobsDesc, maybe devotion catches for certain flaws */ /* priority! femPC support! */ @@ -30,7 +32,7 @@ App.Interact.fBeg = function(slave) { } else if (slave.sexualQuirk === "tease") { r.push(`${He} blushes with arousal. ${He} has kept ${his} innate embarrassment at the thought of being naked, but you have infused this with overwhelming arousal. ${His} cheeks are red as ${he} removes ${his} clothes, giving quite a strip tease as ${he} does.`); } else if (slave.sexualFlaw === "repressed") { - r.push(`${He} subconsciously uses ${his} ${hasBothArms(slave) ? `hands` : `hand`} to try to cover ${his} body. ${He} is still repressing ${his} own sexuality. That type of behavior may have been allowed in the old world, but it has no place in a Free City.`); + r.push(`${He} subconsciously uses ${his} ${hands} to try to cover ${his} body. ${He} is still repressing ${his} own sexuality. That type of behavior may have been allowed in the old world, but it has no place in a Free City.`); } else if (slave.sexualFlaw === "idealistic") { r.push( `${He} shakes ${his} head pleadingly.`, @@ -208,12 +210,12 @@ App.Interact.fBeg = function(slave) { } r.push(`"One more chance, slut." By now, the other slaves have arrived and are standing loyally by your side. Your loyal slaves force ${him} to`); if (hasAnyLegs(slave)) { - r.push(`${his} ${hasBothLegs(slave) ? `knees` : `knee`}.`); + r.push(`${his} ${knees}.`); } else { r.push(`the ground.`); } } - r.push(`"Head at crotch level," you clarify. "Remember your purpose."`); + r.push(`"Head at crotch level," you clarify. "Remember your purpose."`); // Rewrite to remove player voice? } else if (slave.devotion < 20) { r.push(`is not enthusiastic, but is obedient enough to go down without much threat of discipline.`); } else if (slave.devotion > 20) { @@ -251,7 +253,7 @@ App.Interact.fBeg = function(slave) { case "buttslut": r.push(`leans heavily forward so that ${his} ass sticks out ridiculously far as ${he}`); if (hasAnyLegs(slave)) { - r.push(`bends ${his} ${hasBothLegs(slave) ? `knees` : `knee`} and`); + r.push(`bends ${his} ${knees} and`); } r.push(`goes to the floor.`); break; @@ -347,7 +349,7 @@ App.Interact.fBeg = function(slave) { } r.push(`deep.`); } else if (slave.butt > 2) { - r.push(`${His} nice ${either("plump", "thick")} ${either("ass", "butt")} curves out noticeably, even while ${he} sits on ${his} ${hasBothLegs(slave) ? `knees` : `knee`}.`); + r.push(`${His} nice ${either("plump", "thick")} ${either("ass", "butt")} curves out noticeably, even while ${he} sits on ${his} ${knees}.`); } else { r.push(`${His} cute and tight ass rests gently on ${his} ${hasBothLegs(slave) ? `ankles` : `ankle`}.`); } @@ -368,8 +370,8 @@ App.Interact.fBeg = function(slave) { case "masochist": r.push(`${He} positions ${himself} uncomfortably, bringing visual pleasure to you and pain to ${himself}. ${He} accentuates ${his} most sensitive parts, inviting you to slap or spank them.`); break; - case "cumslut": - r.push(`${he} goes to ${his} ${hasBothLegs(slave) ? `knees` : `knee`}, all the while staring at your`); + case "cumslut": { + r.push(`${he} goes to ${his} ${knees}, all the while staring at your`); const pcCrotch = []; if (V.PC.dick !== 0) { pcCrotch.push(`manly bulge`); @@ -379,6 +381,7 @@ App.Interact.fBeg = function(slave) { } r.push(`${toSentence(pcCrotch)}.`); break; + } case "humiliation": r.push(`${He} eagerly takes to this humiliating position, hoping to demonstrate ${his} willingness to be degraded by ${his} ${getWrittenTitle(slave)}.`); break; @@ -407,7 +410,7 @@ App.Interact.fBeg = function(slave) { r.push(`This is, of course, how all slaves are supposed to kneel, but ${he} takes the pose with added dedication.`); break; default: - r.push(`${He} positions ${himself} with ${his} ${hasBothLegs(slave) ? `knees` : `knee`} spread wide, hoping that you will turn your attention to`); + r.push(`${He} positions ${himself} with ${his} ${knees} spread wide, hoping that you will turn your attention to`); if (canDoVaginal(slave)) { r.push(`${his} wet pussy.`); } else if (canAchieveErection(slave)) { @@ -426,20 +429,20 @@ App.Interact.fBeg = function(slave) { case "confinement": r.push(`Your slave simply`); if (hasAnyArms(slave)) { - r.push(`presses ${his} ${hasBothArms(slave) ? `hands` : `hand`} together and`); + r.push(`presses ${his} ${hands} together and`); } r.push(`begs you not to lock ${him} up in the bad-${girl} box.`); break; case "whipping": r.push(`Your slave simply`); if (hasAnyArms(slave)) { - r.push(`presses ${his} ${hasBothArms(slave) ? `hands` : `hand`} together and`); + r.push(`presses ${his} ${hands} together and`); } r.push(`begs you not to whip ${him}.`); break; case "chastity": if (slave.energy > 60) { - r.push(`Your slave simply presses ${his} ${hasBothArms(slave) ? `hands` : `hand`} together and begs you not to take away ${his} next orgasm`); + r.push(`Your slave simply presses ${his} ${hands} together and begs you not to take away ${his} next orgasm`); } else { r.push(`Your slave simply asks that you not change ${his} punishment. ${He} fears you, but using chastity as a punishment is not an efficient way to command ${his} obedience, since ${he} has no sexual energy.`); } @@ -530,7 +533,7 @@ App.Interact.fBeg = function(slave) { } else if (slave.devotion <= 100) { r.push(`Your devoted slave takes the begging position,`); if (slave.fetish !== "submissive") { - r.push(`${he} even brings ${his} ${hasBothArms(slave) ? `hands` : `hand`} up like a dog's paws.`); + r.push(`${he} even brings ${his} ${hands} up like a dog's paws.`); } else { if (slave.fetishKnown === 1 && slave.fetishStrength > 60) { r.push(`and ${he} bows ${his} head in total submission.`); @@ -542,7 +545,7 @@ App.Interact.fBeg = function(slave) { r.push(`The armbinder thrusts ${his} tits out nicely and ${his} nipples are now red from the clamps pressing down hard on ${his} sensitive flesh. Every painful shudder makes the bells jungle ever so sweetly.`); } } else { - r.push(`${he} even brings ${his} ${hasBothArms(slave) ? `hands` : `hand`} up like a dog's paws.`); + r.push(`${he} even brings ${his} ${hands} up like a dog's paws.`); } } @@ -627,7 +630,7 @@ App.Interact.fBeg = function(slave) { if (!hasAnyArms(slave)) { r.push(`leans ${his} head back and juts out ${his} tits, raising`); } else { - r.push(`takes ${his} ${hasBothArms(slave) ? `hands` : `hand`} and presses ${his} tits together, lifting`); + r.push(`takes ${his} ${hands} and presses ${his} tits together, lifting`); } r.push(`them to display for you ${his} primary purpose in life.`); if (slave.lactation > 0) { @@ -693,14 +696,14 @@ App.Interact.fBeg = function(slave) { if (random(1, 100) > (100 + slave.devotion)) { if (slave.fetish !== "submissive" && slave.energy <= 95 && slave.behavioralFlaw !== "liberated") { - r.push(`Seeing the humiliating acts your slaves are expected to perform has made ${him} <span class="red">determined to be free.</span>`); + r.push(`Seeing the humiliating acts your slaves are expected to perform has made ${him} <span class="flaw gain">determined to be free.</span>`); slave.behavioralFlaw = "liberated"; } } else if (random(1, 100) > (110 - slave.devotion)) { if (slave.fetish === "none" && slave.behavioralFlaw !== "liberated") { r.push(`Feeling the joy of kneeling before such a powerful ${getWrittenTitle(slave)}`); - r.push(`and begging at ${hisP} feet has <span class="lightcoral">encouraged ${him} to be more submissive.</span>`); + r.push(`and begging at ${hisP} feet has <span class="fetish gain">encouraged ${him} to be more submissive.</span>`); slave.fetish = "submissive"; slave.fetishKnown = 1; } diff --git a/src/npc/interaction/fButt.js b/src/npc/interaction/fButt.js index 8a8868c6728..5b822ea9bfd 100644 --- a/src/npc/interaction/fButt.js +++ b/src/npc/interaction/fButt.js @@ -12,7 +12,7 @@ App.Interact.fButt = function(slave) { he, his, him, girl } = getPronouns(slave); - slave.partners.add(-1); + addPartner(slave, -1); r.push(`You call ${him} over so you can`); if (!canDoVaginal(slave)) { diff --git a/src/npc/interaction/fCaress.js b/src/npc/interaction/fCaress.js index dda4abb1e66..a349a6862d9 100644 --- a/src/npc/interaction/fCaress.js +++ b/src/npc/interaction/fCaress.js @@ -257,30 +257,13 @@ App.Interact.fCaress = function(slave) { r.push(`${He} looks at you as if ${he} wants more than your hands touching ${him}.`); } else if (slave.devotion > 50) { r.push(`${He} accepts your touch with devotion, leaning ${his} head back at your gentle caress along ${his} face. ${He} leans ${his} body forward, pressing ${himself} against you, and you feel the intense heat from ${his} body against your`); + const firm = V.PC.boobsImplant/V.PC.boobs >= .60 ? "firm" : "soft"; if (V.PC.boobs >= 1400) { - r.push(`expansive`); - if (V.PC.boobsImplant/V.PC.boobs >= .60) { - r.push(`firm`); - } else { - r.push(`soft`); - } - r.push(`chest.`); + r.push(`expansive ${firm} chest.`); } else if (V.PC.boobs >= 1200) { - r.push(`huge`); - if (V.PC.boobsImplant/V.PC.boobs >= .60) { - r.push(`firm`); - } else { - r.push(`soft`); - } - r.push(`breasts.`); + r.push(`huge ${firm} breasts.`); } else if (V.PC.boobs >= 1000) { - r.push(`big`); - if (V.PC.boobsImplant/V.PC.boobs >= .60) { - r.push(`firm`); - } else { - r.push(`soft`); - } - r.push(`breasts.`); + r.push(`big ${firm} breasts.`); } else if (V.PC.boobs >= 800) { r.push(`soft breasts.`); } else if (V.PC.boobs >= 500) { diff --git a/src/npc/interaction/fDick.js b/src/npc/interaction/fDick.js index fee933a5de7..ef9814f9054 100644 --- a/src/npc/interaction/fDick.js +++ b/src/npc/interaction/fDick.js @@ -16,6 +16,7 @@ App.Interact.fDick = function(slave) { addPartner(slave, -1); + const cunt = V.PC.vagina !== -1 ? "cunt" : "rectal"; const _belly = bellyAdjective(slave); const _amount = cumAmount(slave); let _load; @@ -62,6 +63,30 @@ App.Interact.fDick = function(slave) { _nutte = "overly massive"; } + let dickAdj; + if (slave.dick === 1) { + dickAdj = "tiny"; + } else if (slave.dick === 2) { + dickAdj = "cute"; + } else if (slave.dick === 3) { + dickAdj = "average"; + } else if (slave.dick === 4) { + dickAdj = "big"; + } else if (slave.dick === 5) { + dickAdj = "impressive"; + } else if (slave.dick === 6) { + dickAdj = "huge"; + } else if (slave.dick === 7) { + dickAdj = "gigantic"; + } else if (slave.dick === 8) { + dickAdj = "titanic"; + } else if (slave.dick === 9) { + dickAdj = "absurd"; + } else if (slave.dick === 10) { + dickAdj = "inhuman"; + } else { + dickAdj = "hypertrophied"; + } /* CHECK*/ @@ -96,31 +121,7 @@ App.Interact.fDick = function(slave) { } } - r.push(`You slowly lower yourself onto ${his}`); - if (slave.dick === 1) { - r.push(`tiny`); - } else if (slave.dick === 2) { - r.push(`cute`); - } else if (slave.dick === 3) { - r.push(`average`); - } else if (slave.dick === 4) { - r.push(`big`); - } else if (slave.dick === 5) { - r.push(`impressive`); - } else if (slave.dick === 6) { - r.push(`huge`); - } else if (slave.dick === 7) { - r.push(`gigantic`); - } else if (slave.dick === 8) { - r.push(`titanic`); - } else if (slave.dick === 9) { - r.push(`absurd`); - } else if (slave.dick === 10) { - r.push(`inhuman`); - } else { - r.push(`hypertrophied`); - } - r.push(`dick, savoring every`); + r.push(`You slowly lower yourself onto ${his} ${dickAdj} dick, savoring every`); if (V.showInches === 2) { r.push(`inch,`); } else { @@ -171,37 +172,19 @@ App.Interact.fDick = function(slave) { if (V.PC.belly >= 5000) { r.push(`your gravid bulk`); } - r.push(`on ${his} obedient cock. ${He} timidly warns you that ${he} is about to cum; in response you speed up your pace and clamp down hard on ${his} throbbing shaft. ${He} squeaks lewdly, overwhelmed by your orgasmic`); - if (V.PC.vagina !== -1) { - r.push(`cunt`); - } else { - r.push(`rectal`); - } - r.push(`spasms, and unloads ${_load} inside of you before apologizing submissively.`); + r.push(`on ${his} obedient cock. ${He} timidly warns you that ${he} is about to cum; in response you speed up your pace and clamp down hard on ${his} throbbing shaft. ${He} squeaks lewdly, overwhelmed by your orgasmic ${cunt} spasms, and unloads ${_load} inside of you before apologizing submissively.`); } else if (slave.trust <= 20) { r.push(`Having followed your instructions quickly and obediently, ${he} tries ${his} best to please you while you bounce`); if (V.PC.belly >= 5000) { r.push(`your gravid bulk`); } - r.push(`on ${his} eager cock. ${He} grabs your hips and warns you ${he} is about to cum; in response you speed up your pace, encouraging ${him} to impale you on ${his} throbbing shaft. ${He} squeals lewdly, overwhelmed by your orgasmic`); - if (V.PC.vagina !== -1) { - r.push(`cunt`); - } else { - r.push(`rectal`); - } - r.push(`spasms, and unloads ${_load} into you before helping you up.`); + r.push(`on ${his} eager cock. ${He} grabs your hips and warns you ${he} is about to cum; in response you speed up your pace, encouraging ${him} to impale you on ${his} throbbing shaft. ${He} squeals lewdly, overwhelmed by your orgasmic ${cunt} spasms, and unloads ${_load} into you before helping you up.`); } else { r.push(`Having followed your instructions with gusto, ${he} energetically pounds you while you bounce`); if (V.PC.belly >= 5000) { r.push(`your gravid bulk`); } - r.push(`on ${his} eager cock. ${He} grabs your hips and desperately warns you ${he} can't hold out any longer; in response you speed up your pace, tipping ${him} over the edge and forcing ${him} to impale you on ${his} twitching shaft. ${He} moans loudly, overwhelmed by your orgasmic`); - if (V.PC.vagina !== -1) { - r.push(`cunt`); - } else { - r.push(`rectal`); - } - r.push(`spasms, and unloads ${_load} into you before pulling you into a post coitus embrace.`); + r.push(`on ${his} eager cock. ${He} grabs your hips and desperately warns you ${he} can't hold out any longer; in response you speed up your pace, tipping ${him} over the edge and forcing ${him} to impale you on ${his} twitching shaft. ${He} moans loudly, overwhelmed by your orgasmic ${cunt} spasms, and unloads ${_load} into you before pulling you into a post coitus embrace.`); } } else if (slave.devotion >= -20) { if (slave.trust < -20) { @@ -209,37 +192,19 @@ App.Interact.fDick = function(slave) { if (V.PC.belly >= 5000) { r.push(`your gravid bulk`); } - r.push(`on ${his} terrified cock. While ${he} is too afraid to enjoy pleasuring you, ${he} obediently thrusts into you. ${He} timidly warns you that ${he} is about to cum; in response you speed up your pace and clamp down hard on ${his} throbbing shaft. ${He} cries out in surprise, overwhelmed by your orgasmic`); - if (V.PC.vagina !== -1) { - r.push(`cunt`); - } else { - r.push(`rectal`); - } - r.push(`spasms, and blows ${_load} in you like a good little slave.`); + r.push(`on ${his} terrified cock. While ${he} is too afraid to enjoy pleasuring you, ${he} obediently thrusts into you. ${He} timidly warns you that ${he} is about to cum; in response you speed up your pace and clamp down hard on ${his} throbbing shaft. ${He} cries out in surprise, overwhelmed by your orgasmic ${cunt} spasms, and blows ${_load} in you like a good little slave.`); } else if (slave.trust <= 20) { r.push(`Having obediently followed your instructions, ${he} lies as still as ${he} can beneath you while you bounce`); if (V.PC.belly >= 5000) { r.push(`your gravid bulk`); } - r.push(`on ${his} willing cock. While ${he} is too uncertain of ${his} position in the hierarchy to really enjoy ${himself}, ${he} hesitatingly thrusts into you. When ${he} feels ${he} is nearing ${his} limit, ${he} gives you proper warning that ${he} is about to cum; in response you speed up your pace and clamp down hard on ${his} throbbing shaft. ${He} cries out in surprise, overwhelmed by your orgasmic`); - if (V.PC.vagina !== -1) { - r.push(`cunt`); - } else { - r.push(`rectal`); - } - r.push(`spasms and boldness, and blows ${_load} in you during the confusion.`); + r.push(`on ${his} willing cock. While ${he} is too uncertain of ${his} position in the hierarchy to really enjoy ${himself}, ${he} hesitatingly thrusts into you. When ${he} feels ${he} is nearing ${his} limit, ${he} gives you proper warning that ${he} is about to cum; in response you speed up your pace and clamp down hard on ${his} throbbing shaft. ${He} cries out in surprise, overwhelmed by your orgasmic ${cunt} spasms and boldness, and blows ${_load} in you during the confusion.`); } else { r.push(`Having obediently followed your instructions, ${he} energetically pounds you while you bounce`); if (V.PC.belly >= 5000) { r.push(`your gravid bulk`); } - r.push(`on ${his} eager cock. ${He} grabs your hips and pounds you a little too eagerly, not even slowing down as you begin to feel ${him} tense with orgasm. Without so much as a warning to you, ${he} trembles with orgasm, pumping ${his} load deep into your`); - if (V.PC.vagina !== -1) { - r.push(`cunt`); - } else { - r.push(`rectum`); - } - r.push(`and setting off your own. You glare daggers at ${him} as ${he} profusely apologizes for ${his} lack of restraint.`); + r.push(`on ${his} eager cock. ${He} grabs your hips and pounds you a little too eagerly, not even slowing down as you begin to feel ${him} tense with orgasm. Without so much as a warning to you, ${he} trembles with orgasm, pumping ${his} load deep into your ${cunt} and setting off your own. You glare daggers at ${him} as ${he} profusely apologizes for ${his} lack of restraint.`); } } else { if (slave.trust < -20) { @@ -247,25 +212,13 @@ App.Interact.fDick = function(slave) { if (V.PC.belly >= 5000) { r.push(`your gravid bulk`); } - r.push(`on ${his} reluctant cock. While ${he} is too afraid to be an active participant in pleasuring you, you make do with what ${he}'s giving. ${He} timidly warns you that ${he} is about to cum; in response you speed up your pace and clamp down hard on ${his} throbbing shaft. ${He} cries out lewdly, overwhelmed by your orgasmic`); - if (V.PC.vagina !== -1) { - r.push(`cunt`); - } else { - r.push(`rectal`); - } - r.push(`spasms, and unloads ${_load} inside of you despite ${his} fear.`); + r.push(`on ${his} reluctant cock. While ${he} is too afraid to be an active participant in pleasuring you, you make do with what ${he}'s giving. ${He} timidly warns you that ${he} is about to cum; in response you speed up your pace and clamp down hard on ${his} throbbing shaft. ${He} cries out lewdly, overwhelmed by your orgasmic ${cunt} spasms, and unloads ${_load} inside of you despite ${his} fear.`); } else if (slave.trust <= 20) { r.push(`Having followed your instructions as quickly as ${he} could, ${he} lies as still as ${he} can beneath you while you bounce`); if (V.PC.belly >= 5000) { r.push(`your gravid bulk`); } - r.push(`on ${his} reluctant cock. While ${he} is too hateful to be an active participant in pleasuring you, you make do with what ${he}'s got. ${He} cries out lewdly, overwhelmed by your orgasmic`); - if (V.PC.vagina !== -1) { - r.push(`cunt`); - } else { - r.push(`rectal`); - } - r.push(`spasms, and unloads ${_load} deep inside you without warning. ${He} <span class="orangered">smirks a little</span> as you glare daggers at ${him}.`); + r.push(`on ${his} reluctant cock. While ${he} is too hateful to be an active participant in pleasuring you, you make do with what ${he}'s got. ${He} cries out lewdly, overwhelmed by your orgasmic ${cunt} spasms, and unloads ${_load} deep inside you without warning. ${He} <span class="orangered">smirks a little</span> as you glare daggers at ${him}.`); slave.trust++; } else if (overpowerCheck(slave, V.PC) < random(1, 100)) { r.push(`Without warning, ${he} flips you onto your side and, still hilted,`); @@ -313,13 +266,7 @@ App.Interact.fDick = function(slave) { if (V.PC.belly >= 5000) { r.push(`your gravid bulk`); } - r.push(`on ${his} traitorous cock. ${He} might not want to bend to your will, but you have ${his} body wrapped around your little finger, even though it still leaves you doing all the work. ${He} cries out lewdly, overwhelmed by your orgasmic`); - if (V.PC.vagina !== -1) { - r.push(`cunt`); - } else { - r.push(`rectal`); - } - r.push(`spasms, and unloads deep inside you without warning. ${He} <span class="orangered">smirks a little</span> as you glare daggers at ${him}.`); + r.push(`on ${his} traitorous cock. ${He} might not want to bend to your will, but you have ${his} body wrapped around your little finger, even though it still leaves you doing all the work. ${He} cries out lewdly, overwhelmed by your orgasmic ${cunt} spasms, and unloads deep inside you without warning. ${He} <span class="orangered">smirks a little</span> as you glare daggers at ${him}.`); slave.trust++; } } @@ -339,31 +286,7 @@ App.Interact.fDick = function(slave) { } else { r.push(`${his} cock`); } - r.push(`and lower yourself onto ${his}`); - - if (slave.dick === 1) { - r.push(`tiny dick`); - } else if (slave.dick === 2) { - r.push(`cute dick`); - } else if (slave.dick === 3) { - r.push(`dick`); - } else if (slave.dick === 4) { - r.push(`big dick`); - } else if (slave.dick === 5) { - r.push(`impressive dick`); - } else if (slave.dick === 6) { - r.push(`huge dick`); - } else if (slave.dick === 7) { - r.push(`gigantic dick`); - } else if (slave.dick === 8) { - r.push(`titanic dick`); - } else if (slave.dick === 9) { - r.push(`absurd dick`); - } else if (slave.dick === 10) { - r.push(`inhuman dick`); - } else { - r.push(`hypertrophied dick`); - } + r.push(`and lower yourself onto ${his} ${dickAdj} dick`); if (slave.dick <= 6) { r.push(`until you are sitting on ${his} loins.`); } else { @@ -371,7 +294,6 @@ App.Interact.fDick = function(slave) { } r.push(`You reach back`); - if (slave.scrotum > 0) { r.push(`and stroke ${his} ${_nutte} balls.`); } else if (slave.vagina > -1) { diff --git a/src/npc/interaction/fEmbrace.js b/src/npc/interaction/fEmbrace.js index b6c80d961b3..24f091ec6fa 100644 --- a/src/npc/interaction/fEmbrace.js +++ b/src/npc/interaction/fEmbrace.js @@ -15,8 +15,9 @@ App.Interact.fEmbrace = function(slave) { const {title: Master, say: say} = getEnunciation(slave); const {womanP} = getPronouns(V.PC).appendSuffix("P"); + const bosom = V.PC.boobs >= 300 ? "bosom" : "chest"; - slave.partners.add(-1); + addPartner(slave, -1); r.push(`You tell ${slave.slaveName} to`); if (hasAnyLegs(slave)) { @@ -41,12 +42,7 @@ App.Interact.fEmbrace = function(slave) { } else if (slave.devotion+slave.trust >= 175) { r.push(`${He} lovingly complies, hurrying to come close to the ${womanP} who married ${him}. Once ${he}'s close, you take your willing ${wife}'s head in your hands and gaze deeply into ${his} ${App.Desc.eyesColor(slave)}. ${He} finds the intense look from the ${womanP} ${he}'s married to affirming, and looks down with a`); if (canSee(slave)) { - r.push(`smile, running ${his} eyes over your`); - if (V.PC.boobs >= 300) { - r.push(`bosom.`); - } else { - r.push(`chest.`); - } + r.push(`smile, running ${his} eyes over your ${bosom}.`); } else { r.push(`smile.`); } @@ -67,12 +63,7 @@ App.Interact.fEmbrace = function(slave) { } else { r.push(`${He} complies obediently. Once ${he}'s close, you take your willing ${wife}'s head in your hands and gaze deeply into ${his} ${App.Desc.eyesColor(slave)}. ${He} finds the intense look from the ${womanP} ${he}'s married to reassuring, and looks down with a slight `); if (canSee(slave)) { - r.push(`smile, running ${his} eyes over your`); - if (V.PC.boobs >= 300) { - r.push(`bosom.`); - } else { - r.push(`chest.`); - } + r.push(`smile, running ${his} eyes over your ${bosom}.`); } else { r.push(`smile.`); } @@ -133,19 +124,9 @@ App.Interact.fEmbrace = function(slave) { } else { r.push(`As you move to ${his} front, with one arm still around ${him}, ${he} again tries to break away but you keep ${him} held tightly and you whisper the alternatives to ${him}, reminding ${him}.`); } - r.push(`You wrap your arms around ${his} back as you press ${his} breasts against your`); - if (V.PC.boobs >= 300) { - r.push(`bosom.`); - } else { - r.push(`chest.`); - } + r.push(`You wrap your arms around ${his} back as you press ${his} breasts against your ${bosom}.`); } else { - r.push(`${His} massive tits are too large for you to wrap your arms around so you start to wrap your arms around ${his} waist. You feel ${his} heart beat against your chest, ${he} starts to breathe faster as you press ${his} back against your`); - if (V.PC.boobs >= 300) { - r.push(`bosom.`); - } else { - r.push(`chest.`); - } + r.push(`${His} massive tits are too large for you to wrap your arms around so you start to wrap your arms around ${his} waist. You feel ${his} heart beat against your chest, ${he} starts to breathe faster as you press ${his} back against your ${bosom}.`); } if (slave.fetish === "mindbroken") { @@ -196,31 +177,14 @@ App.Interact.fEmbrace = function(slave) { if (hasAnyArms(slave)) { r.push(`${His} ${hasBothArms(slave) ? `hands` : `hand`} reach to your arms and ${he} strokes them longingly as you squeeze.`); } + const firm = V.PC.boobsImplant/V.PC.boobs >= .60 ? "firm" : "soft"; r.push(`${He} gradually closes ${his} eyes as ${he} leans ${his} body against yours, melting in your warm embrace, and you feel the intense heat from ${his} body against your`); if (V.PC.boobs >= 1400) { - r.push(`expansive`); - if (V.PC.boobsImplant/V.PC.boobs >= .60) { - r.push(`firm`); - } else { - r.push(`soft`); - } - r.push(`chest.`); + r.push(`expansive ${firm} chest.`); } else if (V.PC.boobs >= 1200) { - r.push(`huge`); - if (V.PC.boobsImplant/V.PC.boobs >= .60) { - r.push(`firm`); - } else { - r.push(`soft`); - } - r.push(`breasts.`); + r.push(`huge ${firm} breasts.`); } else if (V.PC.boobs >= 1000) { - r.push(`big`); - if (V.PC.boobsImplant/V.PC.boobs >= .60) { - r.push(`firm`); - } else { - r.push(`soft`); - } - r.push(`breasts.`); + r.push(`big ${firm} breasts.`); } else if (V.PC.boobs >= 800) { r.push(`soft breasts.`); } else if (V.PC.boobs >= 500) { diff --git a/src/npc/interaction/fFeelings.js b/src/npc/interaction/fFeelings.js index fdf1c88bbf7..dcd24a05578 100644 --- a/src/npc/interaction/fFeelings.js +++ b/src/npc/interaction/fFeelings.js @@ -15,7 +15,7 @@ App.Interact.feelings = function(slave) { if (!canTalk(slave) && !hasAnyArms(slave)) { r.push(`${slave.slaveName} is unable to communicate and thus this place should have been unreachable. Please report this.`); } - const _lisping = (canTalk(slave) && SlaveStatsChecker.checkForLisp(slave)) ? 1 :0; + const willLisp = canTalk(slave) && SlaveStatsChecker.checkForLisp(slave); /* TODO: clean up this passage - lots of repeating blocks */ if (slave.devotion < -50) { @@ -23,7 +23,7 @@ App.Interact.feelings = function(slave) { if (slave.trust >= -20) { if (!canTalk(slave)) { r.push(`gestures`); - } else if (_lisping === 1) { + } else if (willLisp) { r.push(`lisps`); } else { r.push(`declares`); @@ -32,7 +32,7 @@ App.Interact.feelings = function(slave) { } else if (slave.trust >= -50) { if (!canTalk(slave)) { r.push(`gestures`); - } else if (_lisping === 1) { + } else if (willLisp) { r.push(`lisps`); } else { r.push(`mutters`); @@ -50,7 +50,7 @@ App.Interact.feelings = function(slave) { r.push(`${He}`); if (!canTalk(slave)) { r.push(`gestures`); - } else if (_lisping === 1) { + } else if (willLisp) { r.push(`lisps`); } else { r.push(`mutters`); @@ -354,7 +354,7 @@ App.Interact.feelings = function(slave) { r.push(`Thank you for breeding us, ${Master}! Our womb is yours to impregnate.`); } r.push(`What? Oh, I'm thinking of myself and my`); - if (slave.fetus_count >= 2 || slave.broodmother >= 1) { + if (slave.fetus_count >= 2 || slave.broodmother >= 1) { // FIXME: should be slave.pregType? r.push(`babies`); } else { r.push(`baby`); @@ -366,7 +366,7 @@ App.Interact.feelings = function(slave) { r.push(`Thank you for breeding us, ${Master}! Our womb is yours to impregnate.`); } r.push(`What? Oh, I'm thinking of myself and my`); - if (slave.fetus_count >= 2 || slave.broodmother >= 1) { + if (slave.fetus_count >= 2 || slave.broodmother >= 1) { // FIXME: should be slave.pregType? r.push(`babies`); } else { r.push(`baby`); @@ -378,7 +378,7 @@ App.Interact.feelings = function(slave) { r.push(`Thank you for breeding us, ${Master}! Our womb is yours to impregnate.`); } r.push(`What? Oh, I'm thinking of myself and my`); - if (slave.fetus_count >= 2 || slave.broodmother >= 1) { + if (slave.fetus_count >= 2 || slave.broodmother >= 1) { // FIXME: should be slave.pregType? r.push(`babies`); } else { r.push(`baby`); @@ -390,7 +390,7 @@ App.Interact.feelings = function(slave) { r.push(`Thank you for breeding us, ${Master}! Our womb is yours to impregnate.`); } r.push(`What? Oh, I'm thinking of myself and my`); - if (slave.fetus_count >= 2) { + if (slave.fetus_count >= 2) { // FIXME: should be slave.pregType? r.push(`babies`); } else { r.push(`baby`); @@ -398,7 +398,7 @@ App.Interact.feelings = function(slave) { r.push(`as one person again, aren't I? I'm sorry, ${Master}. It's just so hard to remember when my womb is so much more than I am in every way.`); } else if (slave.pregKnown === 1) { r.push(`my belly, now that it has`); - if (slave.fetus_count >= 2) { + if (slave.fetus_count >= 2) { // FIXME: should be slave.pregType? r.push(`the babies`); } else { r.push(`a baby`); @@ -1701,7 +1701,7 @@ App.Interact.feelings = function(slave) { } = getPronouns(_partner).appendSuffix("2"); let _partnerName; if (_partner) { - if (_lisping === 1) { + if (willLisp) { _partnerName = lispReplace(_partner.slaveName); } else { _partnerName = _partner.slaveName; @@ -1786,7 +1786,7 @@ App.Interact.feelings = function(slave) { } else if (_beauty > 0 && _combat > 0) { r.push(Spoken(slave, `${His2} P-Limbs do look cool and I like how strong they can make ${him2} but they scare me a little, sometimes. Though of course ${he2} disables the weapons when we're together.`)); } else if (_sex > 0 && _combat > 0) { - r.push(`${His2} P-Limbs do scare me a little, sometimes. Though of course ${he2} disables the weapons when we're together."`); + r.push(Spoken(slave, `${His2} P-Limbs do scare me a little, sometimes. Though of course ${he2} disables the weapons when we're together."`)); r.push(`${He} giggles.`); r.push(Spoken(slave, `"${He2} has vibe fingers. so that's awesome.`)); } else if (_sex > 0) { @@ -1831,11 +1831,10 @@ App.Interact.feelings = function(slave) { } } else if (slave.relationship === -2) { r.push(Spoken(slave, `I'm good friends with some of the other slaves,"`)); - r.push(`${he}`); if (!canTalk(slave)) { - r.push(`gestures`); + r.push(`${he} gestures`); } else { - r.push(`mutters`); + r.push(`${he} mutters`); } r.push(`hesitantly, looking suddenly embarrassed.`); r.push(Spoken(slave, `"I really like you, though, ${Master}. Like, <span class="note">like</span> you, like you."`)); diff --git a/src/npc/interaction/fFeet.js b/src/npc/interaction/fFeet.js index e6535bd7d33..2f4d16cfeae 100644 --- a/src/npc/interaction/fFeet.js +++ b/src/npc/interaction/fFeet.js @@ -13,7 +13,7 @@ App.Interact.fFeet = function(slave) { } = getPronouns(slave); const {title: Master} = getEnunciation(slave); - slave.partners.add(-1); + addPartner(slave, -1); const _footSeed = random(1, 100); let thighsAdj; @@ -24,7 +24,7 @@ App.Interact.fFeet = function(slave) { let ballsDesc; let dickAdj; let buttAdj; - let _hips; + let hipAdj; let skin; if (slave.weight > 190) { @@ -225,17 +225,17 @@ App.Interact.fFeet = function(slave) { } if (slave.hips > 2) { - _hips = "inhumanly wide"; + hipAdj = "inhumanly wide"; } else if (slave.hips > 1) { - _hips = "very wide"; + hipAdj = "very wide"; } else if (slave.hips > 0) { - _hips = "wide"; + hipAdj = "wide"; } else if (slave.hips > -1) { - _hips = "ample"; + hipAdj = "ample"; } else if (slave.hips > -2) { - _hips = "narrow"; + hipAdj = "narrow"; } else { - _hips = "very narrow"; + hipAdj = "very narrow"; } if (slave.skin === slave.race || slave.race === "white" || slave.race === "black" || V.seeRace === 0) { @@ -246,6 +246,7 @@ App.Interact.fFeet = function(slave) { const legs = hasBothLegs(slave) ? "legs" : "leg"; const feet = hasBothLegs(slave) ? "feet" : "foot"; + const hands = hasBothArms(slave) ? "hands" : "hand"; // Part 1: Order and reaction @@ -327,7 +328,7 @@ App.Interact.fFeet = function(slave) { } else if (slave.devotion > 20 && slave.sexualFlaw === "shamefast") { r.push(`${He}`); if (hasAnyArms(slave)) { - r.push(`hides ${his} face in ${his} ${hasBothArms(slave) ? `hands` : `hand`}`); + r.push(`hides ${his} face in ${his} ${hands}`); } else { r.push(`attempts to hide ${his} face`); } @@ -500,7 +501,7 @@ App.Interact.fFeet = function(slave) { if (hasBothArms(slave)) { r.push(`one of`); } - r.push(`${his} ${hasBothArms(slave) ? `hands` : `hand`} roaming across ${his} ${_belly} belly as ${he} happily services you.`); + r.push(`${his} ${hands} roaming across ${his} ${_belly} belly as ${he} happily services you.`); } else { r.push(`${feet}.`); } @@ -541,11 +542,11 @@ App.Interact.fFeet = function(slave) { r.push(`you near your orgasm, ${he}`); if (_footSeed < 40 && hasAnyArms(slave)) { if (slave.boobs < 300) { - r.push(`presses ${his} ${hasBothArms(slave) ? `hands` : `hand`} on ${his} flat chest,`); + r.push(`presses ${his} ${hands} on ${his} flat chest,`); } else if (slave.boobs < 500) { - r.push(`puts ${his} ${hasBothArms(slave) ? `hands` : `hand`} under ${his} small chest,`); + r.push(`puts ${his} ${hands} under ${his} small chest,`); } else { - r.push(`cups ${his} ${_boobs} breasts with ${his} ${hasBothArms(slave) ? `hands` : `hand`},`); + r.push(`cups ${his} ${_boobs} breasts with ${his} ${hands},`); } r.push(`then sticks out ${his} tongue, posing like a Free Cities whore who wants a cumshot.`); } else if (_footSeed < 70 && !(slave.chastityPenis) && !(slave.chastityVagina) && (slave.dick > 0 || slave.vagina >= 0 )) { @@ -599,7 +600,7 @@ App.Interact.fFeet = function(slave) { } r.push(`with a sultry smile.`); } else { - r.push(`rolls onto ${his} side while still stroking your dick, revealing ${his} ${buttAdj} ass, ${_hips} hips and ${thighsAdj} thighs with a sultry smile.`); + r.push(`rolls onto ${his} side while still stroking your dick, revealing ${his} ${buttAdj} ass, ${hipAdj} hips and ${thighsAdj} thighs with a sultry smile.`); } } @@ -625,9 +626,9 @@ App.Interact.fFeet = function(slave) { } else if (slave.devotion < -20) { r.push(`You eventually cum all over ${his} ${skin}`); if (V.PC.balls >= 9) { - r.push(`${feet} ${legsAdj} ${legs}, and even ${his} side with your massive load`); + r.push(`${feet} ${legsAdj} ${legs}, and even ${his} side with your massive load.`); } else if (V.PC.balls >= 5) { - r.push(`${feet} and ${legsAdj} ${legs} with your large load`); + r.push(`${feet} and ${legsAdj} ${legs} with your large load.`); } else { r.push(`${feet}.`); } @@ -748,7 +749,7 @@ App.Interact.fFeet = function(slave) { } else if (slave.fetish === "buttslut" && slave.fetishKnown === 1 && slave.fetishStrength >= 60) { r.push(`When you eventually cum, ${slave.slaveName} moans as your semen lands on ${his} ${skin} ${feet},`); if (V.PC.balls >= 5) { - r.push(`but quickly turns to present ${his} ${buttAdj} ass and ${_hips} hips as a new target.`); + r.push(`but quickly turns to present ${his} ${buttAdj} ass and ${hipAdj} hips as a new target.`); if (V.PC.balls >= 9) { r.push(`Your massive load quickly covers ${his} ${thighsAdj} ass and thighs, sticky cum dripping all the way to ${his} calves.`); } else { @@ -768,7 +769,7 @@ App.Interact.fFeet = function(slave) { if (slave.boobs < 300) { r.push(`pinches both ${his} erect nipples`); } else if (slave.boobs < 500) { - r.push(`rubs ${his} ${hasBothArms(slave) ? `hands` : `hand`} across ${his} small chest`); + r.push(`rubs ${his} ${hands} across ${his} small chest`); } else { r.push(`squeezes ${his} ${_boobs} breasts tightly`); } @@ -822,7 +823,7 @@ App.Interact.fFeet = function(slave) { } r.push(`Your orgasm shoots across ${his} ${skin}`); if (V.PC.balls >= 9) { - r.push(`${feet}, ${legsAdj} ${legs}, and even ${his} ${_belly} belly is marked with your massive load. ${He} runs ${his} ${hasBothArms(slave) ? `hands` : `hand`} through the cum on ${his} belly, massaging the semen into ${his} skin.`); + r.push(`${feet}, ${legsAdj} ${legs}, and even ${his} ${_belly} belly is marked with your massive load. ${He} runs ${his} ${hands} through the cum on ${his} belly, massaging the semen into ${his} skin.`); } else if (V.PC.balls >= 5) { r.push(`${feet} and ${legsAdj} ${legs}.`); } else { -- GitLab