From b0d8d9ba8247da835bd8705e951b9c4be2e7fb1c Mon Sep 17 00:00:00 2001 From: Skriv <skrivelese@gmail.com> Date: Tue, 25 May 2021 01:45:27 +0000 Subject: [PATCH] RESS forbidden masturbation to js --- src/events/RESS/arcadeSadist.js | 2 +- src/events/RESS/forbiddenMasturbation.js | 501 +++++++++++++++++++++++ src/events/randomEvent.js | 1 + src/js/eventSelectionJS.js | 7 - src/uncategorized/RESS.tw | 281 ------------- 5 files changed, 503 insertions(+), 289 deletions(-) create mode 100644 src/events/RESS/forbiddenMasturbation.js diff --git a/src/events/RESS/arcadeSadist.js b/src/events/RESS/arcadeSadist.js index 61f9962cc1e..d7682055679 100644 --- a/src/events/RESS/arcadeSadist.js +++ b/src/events/RESS/arcadeSadist.js @@ -169,7 +169,7 @@ App.Events.RESSArcadeSadist = class RESSArcadeSadist extends App.Events.BaseEven if (canDoVaginal(eventSlave)) { r.push(`pussy,`); seX(eventSlave, "vaginal", V.PC, "penetrative"); - } else if (eventSlave.dick > 0 && eventSlave.chstityPenis === 0) { + } else if (eventSlave.dick > 0 && eventSlave.chastityPenis === 0) { r.push(`dick,`); } else { r.push(`body,`); diff --git a/src/events/RESS/forbiddenMasturbation.js b/src/events/RESS/forbiddenMasturbation.js new file mode 100644 index 00000000000..15b78462256 --- /dev/null +++ b/src/events/RESS/forbiddenMasturbation.js @@ -0,0 +1,501 @@ +App.Events.RESSForbiddenMasturbation = class RESSForbiddenMasturbation extends App.Events.BaseEvent { + eventPrerequisites() { + return []; // always valid if sufficient actors can be cast successfully + } + + actorPrerequisites() { + return [ + [ // single event slave + s => s.fetish !== "mindbroken", + s => s.rules.release.masturbation === 0, + s => !App.Utils.hasNonassignmentSex(s), + s => s.need > 0, + s => s.devotion <= 95, + s => s.trust >= -20, + s => (s.chastityPenis !== 1 || s.dick === 0), + hasAnyArms, + hasAnyLegs + ] + ]; + } + + execute(node) { + /** @type {Array<App.Entity.SlaveState>} */ + let [eventSlave] = this.actors.map(a => getSlave(a)); + const { + He, he, His, his, him, himself + } = getPronouns(eventSlave); + const {title: Master} = getEnunciation(eventSlave); + const {hisA, himselfA, HisA} = getPronouns(assistant.pronouns().main).appendSuffix('A'); + const bellyAdj = bellyAdjective(eventSlave); + + V.nextLink = "Next Week"; + + App.Events.drawEventArt(node, eventSlave); + + let r = []; + if (V.assistant.personality > 0) { + r.push(`There is an alert from ${V.assistant.name}, in ${hisA} deliciously feminine voice: "${properMaster()},`, contextualIntro(V.PC, eventSlave, "DOM"), `is masturbating. Ooh, ${he}'s breaking the rules, ${properMaster()}!" ${HisA} avatar`); + switch (V.assistant.appearance) { + case "monstergirl": + r.push(`strokes ${hisA} dicks suggestively.`); + break; + case "shemale": + r.push(`shifts uncomfortably, ${hisA} cock rock hard.`); + break; + case "amazon": + r.push(`struts back and forth indignantly, ${hisA} bone bangles rattling.`); + break; + case "businesswoman": + r.push(`licks ${hisA} cherry-red lips suggestively.`); + break; + case "fairy": + case "pregnant fairy": + r.push(`giggles uncontrollably.`); + break; + case "hypergoddess": + case "goddess": + r.push(`tutting disapprovingly, despite ${hisA} blushing.`); + break; + case "loli": + r.push(`stares innocently at the scene.`); + break; + case "preggololi": + r.push(`stares at the scene, blushing, while a hand caresses ${hisA} large belly.`); + break; + case "angel": + r.push(`is covering ${hisA} face, occasionally peeping through _hisA fingers.`); + break; + case "cherub": + r.push(`is trying ${hisA} hardest to look away, but keeps glancing back at the scene.`); + break; + case "incubus": + r.push(`is openly jacking off to the sight.`); + break; + case "succubus": + r.push(`is groping ${himselfA} to the sight.`); + break; + case "imp": + r.push(`is hovering while viciously fingering ${hisA} cunt.`); + break; + case "witch": + r.push(`is pretending to read from ${hisA} spell book, but is obviously watching over the top of it.`); + break; + case "ERROR_1606_APPEARANCE_FILE_CORRUPT": + r.push(`is mimicking ${hisA} actions nearly perfectly.`); + break; + case "schoolgirl": + r.push(`giggles nervously.`); + break; + default: + r.push(`spins accusingly.`); + } + } else { + r.push(`There is a gentle alert from ${V.assistant.name}: "${properMaster()},`, contextualIntro(V.PC, eventSlave, "DOM"), `is masturbating in violation of the rules."`); + } + r.push(`A video feed appears.`); + if (eventSlave.chastityVagina) { + r.push(`In ${his} chastity belt, all ${he} can manage is furious nipple-${eventSlave.nipples !== "fuckable" ? "rubbing" : "fisting"} and some furtive fingering of ${his} asshole.`); + } else if ((eventSlave.chastityPenis === 1)) { + r.push(`In ${his} chastity cage, all ${he} can manage is furious nipple-${eventSlave.nipples !== "fuckable" ? "rubbing" : "fisting"} and some furtive fingering of ${his} asshole.`); + } else if ((eventSlave.dick > 0) && (eventSlave.hormoneBalance >= 100)) { + r.push(`Since ${he}'s impotent from hormone treatment, all ${he} can manage is rubbing ${his} soft dick and some furtive fingering of ${his} asshole.`); + } else if ((eventSlave.dick > 0) && (eventSlave.balls > 0) && (eventSlave.ballType === "sterile")) { + r.push(`Since ${he}'s impotent due to ${his} useless balls, all ${he} can manage is rubbing ${his} soft dick and some furtive fingering of ${his} asshole.`); + } else if ((eventSlave.dick > 0) && (eventSlave.balls === 0)) { + r.push(`Since ${he}'s impotent due to ${his} lack of balls, all ${he} can manage is rubbing ${his} soft dick and some furtive fingering of ${his} asshole.`); + } else if (!canAchieveErection(eventSlave) && (eventSlave.dick > 6)) { + r.push(`Since ${his} dick requires far too much blood to get erect, ${he}'s furiously massaging the semi-engorged monster.`); + } else if (!canAchieveErection(eventSlave) && (eventSlave.dick > 0)) { + r.push(`Since ${he}'s can't get it up, all ${he} can manage is rubbing ${his} soft dick and some furtive fingering of ${his} asshole.`); + } else if ((eventSlave.vagina === -1) && (eventSlave.dick === 0)) { + r.push(`${He}'s rubbing ${his} perineum desperately with one hand, and ${his} anus with the other, since ${he} lacks external genitalia.`); + } else if (eventSlave.vagina === -1) { + r.push(`${He}'s furiously jacking off.`); + } else if (eventSlave.clit >= 3) { + r.push(`${He}'s furiously jacking off ${his} clitdick.`); + } else { + r.push(`${He}'s furiously polishing ${his} pearl.`); + } + r.push(`${He}'s chosen to do it in a dark corner and looks like ${he}'s hurrying; ${he} clearly knows this is forbidden.`); + App.Events.addParagraph(node, r); + r = []; + + r.push(`${eventSlave.slaveName} does not hear your`); + if (canHear(eventSlave)) { + r.push(`approach until you're very close.`); + } else { + r.push(`approach, but soon realizes your presence.`); + } + r.push(`${He} starts and tries to look normal.`); + if (!canTalk(eventSlave)) { + r.push(`${He} nervously gestures that ${he} wasn't doing anything.`); + } else { + r.push(Spoken(eventSlave, `"I wasn't doing anything, ${(eventSlave.rudeTitle === 1) ? PoliteRudeTitle(eventSlave) : Master}!"`), `${he} lies.`); + } + + App.Events.addParagraph(node, r); + const unknownOradvanceableFetish = eventSlave.fetishKnown !== 1 || eventSlave.fetishStrength <= 95; + const responses = [new App.Events.Result(`Let ${him} earn relief`, relief)]; + if (eventSlave.fetish !== "cumslut" || unknownOradvanceableFetish) { + responses.push(new App.Events.Result(`when ${he} sucks`, sucks)); + } + if (eventSlave.fetish !== "boobs" || unknownOradvanceableFetish) { + responses.push(new App.Events.Result(`during nipple play`, nipple)); + } + if ((eventSlave.fetish !== "pregnancy" || unknownOradvanceableFetish) && eventSlave.belly >= 5000) { + responses.push(new App.Events.Result(`while fondling ${his} belly`, belly)); + } + if (canDoAnal(eventSlave) && eventSlave.fetish !== "buttslut" || unknownOradvanceableFetish) { + responses.push(new App.Events.Result(`when ${he} takes it up the ass`, ass, (eventSlave.anus === 0 ? `This option will take ${his} anal virginity` : null))); + } + if (eventSlave.fetish !== "humiliation" || unknownOradvanceableFetish) { + responses.push(new App.Events.Result(`in public`, inPublic)); + } + if (eventSlave.fetish !== "submissive" || unknownOradvanceableFetish) { + responses.push(new App.Events.Result(`while submitting to a spanking`, spanking)); + } + if (eventSlave.fetish !== "masochist" || unknownOradvanceableFetish) { + responses.push(new App.Events.Result(`while in pain`, pain)); + } + + if (responses.length > 1) { + responses.splice(1, 0, new App.Events.Result(null, null, `Punish ${him}, but then let ${him} get off:`)); // Hack for providing a headline to certain responses + } + App.Events.addResponses(node, responses); + + function relief() { + r = []; + + r.push(`${He}'s extremely relieved that you're not going to punish ${him} for the rulebreaking when you tell ${him} that ${he} can touch ${himself} if ${he}`); + if (eventSlave.belly >= 300000) { + r.push(`leans over ${his} ${bellyAdj} belly`); + } else { + r.push(`gets on ${his} knees`); + } + r.push(`and sucks you off. ${He} does a decent job, playing with ${himself} all the while. ${He}'s learned that ${he} can get away with infractions if ${he}'s willing to suck dick afterward. ${His} resistance to your will <span class="devotion dec">has increased.</span>`); + eventSlave.devotion -= 5; + seX(eventSlave, "oral", V.PC, "penetrative"); + return r; + } + + function sucks() { + r = []; + if (V.PC.belly >= 10000) { + if (eventSlave.belly >= 300000) { + r.push(`You tip ${him} over ${his} ${bellyAdj}`); + if (eventSlave.bellyPreg >= 3000) { + r.push(`pregnancy,`); + } else { + r.push(`middle,`); + } + r.push(`do your best to get close beside ${him},`); + } else if (eventSlave.belly >= 5000) { + r.push(`You order ${him} to bend over beside you so your pregnancy doesn't obstruct you as badly`); + } else { + r.push(`You lean back, pull ${him} over your knee and under your gravid dome of a middle`); + } + } else { + if (eventSlave.belly >= 300000) { + r.push(`You tip ${him} over ${his} ${bellyAdj}`); + if (eventSlave.bellyPreg >= 3000) { + r.push(`pregnancy`); + } else { + r.push(`middle`); + } + } else if (eventSlave.belly >= 5000) { + r.push(`You spread your legs to give ${his}`); + if (eventSlave.bellyPreg >= 3000) { + r.push(`pregnancy`); + } else { + r.push(`bloated middle`); + } + r.push(`room as you pull ${him} onto your lap`); + } else { + r.push(`You pull ${him} down over your knee`); + } + } + r.push(`and spank ${his} ${eventSlave.skin} buttocks until they're warm to the touch. It's not a sexual punishment, it's too painful for that; by the end, ${eventSlave.slaveName} has cried ${himself} out and is limp in your hands. You pull ${him} up to face you and give ${him} your instructions: from now on, ${he} can come to you and ask to`); + if (V.PC.dick !== 0 && V.PC.vagina !== -1) { + r.push(`blow you and perform cunnilingus on you,`); + } else if (V.PC.dick !== 0) { + r.push(`blow you,`); + } else if (V.PC.vagina !== -1) { + r.push(`and perform cunnilingus on you,`); + } + r.push(`and masturbate while ${he} does. ${He} nods through ${his} tears and flees. In an hour or so, though, ${he} finds you and asks to`); + if (V.PC.vagina !== -1) { + r.push(`give you oral.`); + } else { + r.push(`suck your cock.`); + } + r.push(`When you pretend indifference, ${he} abjectly begs. Soon, ${he}'s down on ${his} knees, crying a little with shame as ${he} masturbates furiously.`); + seX(eventSlave, "oral", V.PC, "penetrative", 5); + if (eventSlave.fetish === "cumslut" && eventSlave.fetishKnown === 1) { + eventSlave.fetishStrength += 4; + r.push(`<span class="fetish inc">${His} enjoyment of`); + if (V.PC.dick === 0) { + r.push(`giving head`); + } else { + r.push(`sucking cock`); + } + r.push(`has increased.</span>`); + } else if (random(1, 100) > 50) { + eventSlave.fetish = "cumslut"; + eventSlave.fetishKnown = 1; + eventSlave.fetishStrength = 65; + r.push(`Before ${he} realizes what's happening, <span class="fetish gain">${he}'s getting aroused at the thought of`); + if (V.PC.dick === 0) { + r.push(`giving head.</span>`); + } else { + r.push(`sucking cock.</span>`); + } + } + return r; + } + + function nipple() { + r = []; + if (V.PC.belly >= 10000) { + if (eventSlave.belly >= 300000) { + r.push(`You tip ${him} over ${his} ${bellyAdj}`); + if (eventSlave.bellyPreg >= 3000) { + r.push(`pregnancy,`); + } else { + r.push(`middle,`); + } + r.push(`do your best to get close beside ${him}, and grope ${him} thoroughly, bringing ${him} to the painful edge of orgasm. Just when ${he}'s about to tip over the edge, the stimulation stops and you flip ${him} onto ${his} back, lower your gravid body down to ${his} level and start playing with ${his} nipples.`); + } else if (eventSlave.belly >= 5000) { + r.push(`You order ${him} to bend over beside you so your pregnancy doesn't obstruct you as badly and grope ${him} thoroughly, bringing ${him} to the painful edge of orgasm. Just when ${he}'s about to tip over the edge, the stimulation stops and you haul ${him} upright and start playing with ${his} nipples.`); + } else { + r.push(`You lean back, pull ${him} over your knee and under your gravid dome of a middle and grope ${him} thoroughly, bringing ${him} to the painful edge of orgasm. Just when ${he}'s about to tip over the edge, the stimulation stops and you haul ${him} upright and start playing with ${his} nipples.`); + } + } else { + if (eventSlave.belly >= 300000) { + r.push(`You tip ${him} over ${his} ${bellyAdj}`); + if (eventSlave.bellyPreg >= 3000) { + r.push(`pregnancy`); + } else { + r.push(`middle`); + } + r.push(`and grope ${him} thoroughly, bringing ${him} to the painful edge of orgasm. Just when ${he}'s about to tip over the edge, the stimulation stops and you haul ${him} up into your lap, ${his} stomach spreading your legs, and start playing with ${his} nipples.`); + } else if (eventSlave.belly >= 5000) { + r.push(`You spread your legs to give ${his}`); + if (eventSlave.bellyPreg >= 3000) { + r.push(`pregnancy`); + } else { + r.push(`bloated middle`); + } + r.push(`room as you pull ${him} onto your lap and grope ${him} thoroughly, bringing ${him} to the painful edge of orgasm. Just when ${he}'s about to tip over the edge, the stimulation stops and you haul ${him} up into your lap and start playing with ${his} nipples.`); + } else { + r.push(`You pull ${him} down over your knee and grope ${him} thoroughly, bringing ${him} to the painful edge of orgasm. Just when ${he}'s about to tip over the edge, the stimulation stops and you haul ${him} up into your lap and start playing with ${his} nipples.`); + } + } + r.push(`${He} writhes and sobs at the orgasm denial, since the nipple play is just barely enough to keep ${him} at a high level of arousal without giving relief. You switch back and forth until ${he} finally goes over into muscle-spasming climax during nipple stimulation alone.`); + seX(eventSlave, "mammary", V.PC, "penetrative"); + if ((eventSlave.fetish === "boobs") && (eventSlave.fetishKnown === 1)) { + eventSlave.fetishStrength += 4; + r.push(`<span class="fetish inc">${His} enjoyment of breast play has increased.</span>`); + } else if (random(1, 100) > 50) { + eventSlave.fetish = "boobs"; + eventSlave.fetishKnown = 1; + eventSlave.fetishStrength = 65; + r.push(`Before ${he} realizes what's happening, <span class="fetish gain">${he}'s getting aroused at every brush against ${his} breasts.</span>`); + } + return r; + } + + function belly() { + r= []; + r.push(`You`); + if (eventSlave.belly >= 300000) { + r.push(`roll ${him} onto ${his} back`); + } else { + r.push(`pull ${him} into a sitting position on your lap`); + } + r.push(`and grope ${his} ${bellyAdj}`); + if (eventSlave.bellyPreg >= 3000) { + r.push(`pregnancy`); + } else { + r.push(`stomach`); + } + r.push(`thoroughly, allowing ${him} to reach the painful edge of orgasm. You feel ${his} belly shudder as ${he} reaches climax under your ministrations. You tease ${his}`); + if (eventSlave.belly >= 10001) { + r.push(`popped`); + } + r.push(`navel as ${he} comes down from ${his} masturbation session.`); + if ((eventSlave.fetish === "pregnancy") && (eventSlave.fetishKnown === 1)) { + eventSlave.fetishStrength += 4; + r.push(`<span class="lightcoral">${His} enjoyment of pregnancy has increased.</span>`); + } else if (random(1, 100) > 50) { + eventSlave.fetish = "pregnancy"; + eventSlave.fetishKnown = 1; + eventSlave.fetishStrength = 65; + r.push(`Before ${he} realizes what's happening, <span class="fetish gain">${he}'s getting aroused at`); + if (eventSlave.pregKnown === 1) { + r.push(`every thought about ${his} pregnancy`); + } else { + r.push(`the very thought of being pregnant`); + } + r.push(`.</span>`); + } + return r; + } + + function ass() { + r= []; + r.push(`You`); + if (V.PC.belly >= 10000) { + if (eventSlave.belly >= 300000) { + r.push(`tip ${him} over ${his} ${bellyAdj}`); + if (eventSlave.bellyPreg >= 3000) { + r.push(`pregnancy,`); + } else { + r.push(`middle,`); + } + r.push(`do your best to get close beside ${him},`); + } else if (eventSlave.belly >= 5000) { + r.push(`order ${him} to bend over beside you so your pregnancy doesn't obstruct you as badly`); + } else { + r.push(`lean back, pull ${him} over your knee and under your gravid dome of a middle`); + } + } else { + if (eventSlave.belly >= 300000) { + r.push(`tip ${him} over ${his} ${bellyAdj}`); + if (eventSlave.bellyPreg >= 3000) { + r.push(`pregnancy`); + } else { + r.push(`middle`); + } + } else if (eventSlave.belly >= 5000) { + r.push(`spread your legs to give ${his}`); + if (eventSlave.bellyPreg >= 3000) { + r.push(`pregnancy`); + } else { + r.push(`bloated middle`); + } + r.push(`room as you pull ${him} onto your lap`); + } else { + r.push(`pull ${him} down over your knee`); + } + } + r.push(`and spank ${his} ${eventSlave.skin} buttocks until they're warm to the touch. It's not a sexual punishment, it's too painful for that; by the end, ${eventSlave.slaveName} has cried ${himself} out and is limp in your hands. You pull ${him} up to face you and give ${him} your instructions: from now on, ${he} can come to you and ask you to assrape ${him}, and masturbate while ${he} takes`); + if (V.PC.dick === 0) { + r.push(`anal penetration.`); + } else { + r.push(`cock.`); + } + r.push(`${He} nods through ${his} tears and flees. In an hour or so, though, ${he} finds you and haltingly asks you to buttfuck ${him}. When you pretend indifference, ${he} offers you ${his} anus and abjectly begs you to stick`); + if (V.PC.dick === 0) { + r.push(`a strap-on`); + } else { + r.push(`your cock`); + } + r.push(`up ${his} butt. Soon, ${he}'s down on all fours, crying a little with mixed shame and anal pain as ${he} masturbates furiously.`); + r.push(VCheck.Anal(eventSlave, 5)); + if ((eventSlave.fetish === "buttslut") && (eventSlave.fetishKnown === 1)) { + eventSlave.fetishStrength += 4; + r.push(`<span class="fetish inc">${His} enjoyment of anal has increased.</span>`); + } else if (random(1, 100) > 50) { + eventSlave.fetish = "buttslut"; + eventSlave.fetishKnown = 1; + eventSlave.fetishStrength = 65; + r.push(`Before ${he} realizes what's happening, <span class="fetish gain">${he}'s getting aroused at the thought of anal sex.</span>`); + } + return r; + } + + function inPublic() { + r= []; + r.push(`You bring ${him} out`); + if (App.Entity.facilities.club.established) { + r.push(`to ${App.Entity.facilities.club.nameCaps}`); + } else { + r.push(`onto the street`); + } + r.push(`and secure ${him} upright with a set of vibrators attached to all of ${his} erogenous zones. There's a lot of them, and they're extremely powerful; when you test the setup, ${he} wriggles with the intensity of the stimulation, and is about to climax when you shut it down. Without telling ${him}, you slave the vibrators to a program originally designed for VIP security details. It uses the cameras scattered through the area to detect when passersby are looking at ${him}. The more eyes on ${him}, the stronger the vibrations.`); + if ((eventSlave.fetish === "humiliation") && (eventSlave.fetishKnown === 1)) { + eventSlave.fetishStrength += 4; + r.push(`<span class="fetish inc">${His} enjoyment of humiliation has increased.</span>`); + } else if (random(1, 100) > 50) { + eventSlave.fetish = "humiliation"; + eventSlave.fetishKnown = 1; + eventSlave.fetishStrength = 65; + r.push(`Before ${he} realizes what's happening, <span class="fetish gain">${he}'s starting to long for humiliation.</span>`); + } + return r; + } + + function spanking() { + r= []; + r.push(`You tell ${him} that ${he} can get ${himself} off while ${he}'s being spanked, and that's it: you don't tell ${him} to offer ${his} bottom, much less start spanking ${him}. ${He} doesn't understand for a long moment, but before long ${he}'s begging abjectly for a spanking, and has ${his} buttocks presented, quivering with simultaneous arousal and fear of pain. The pain comes soon enough, with a delicious crack of palm on flesh`); + if (eventSlave.voice === 0) { + r.push(`and a hoarse grunt, the most noise ${he} can make.`); + } else { + r.push(`and a shriek of agony.`); + } + r.push(`${He} masturbates furiously, but you're an accomplished spanker, and you repeatedly cause ${him} just enough pain to prevent climax. Eventually ${he} gets off in part because of, rather than in spite of, the lengthy beating.`); + if ((eventSlave.fetish === "submissive") && (eventSlave.fetishKnown === 1)) { + eventSlave.fetishStrength += 4; + r.push(`<span class="fetish inc">${His} enjoyment of submission has increased.</span>`); + } else if (random(1, 100) > 50) { + eventSlave.fetish = "submissive"; + eventSlave.fetishKnown = 1; + eventSlave.fetishStrength = 65; + r.push(`Before ${he} realizes what's happening, <span class="fetish gain">${he} starts to associate submitting to you with getting off.</span>`); + } + return r; + } + + function pain() { + r = []; + r.push(`You order ${him} to`); + if ((eventSlave.heels === 1) && shoeHeelCategory(eventSlave) === 0) { + r.push(`kneel`); + } else if (shoeHeelCategory(eventSlave) > 1) { + r.push(`teeter`); + } else { + r.push(`stand`); + } + if (hasBothArms(eventSlave)) { + r.push(`with ${his} arms`); + } else { + r.push(`with ${his} arm`); + } + if (hasBothLegs(eventSlave)) { + r.push(`over ${his} head and ${his} legs splayed,`); + } else { + r.push(`over ${his} head and ${his} leg bent,`); + } + r.push(`and tell ${him} that if ${he} moves or resists, ${his} punishment will begin again from the start.`); + if ((eventSlave.chastityVagina) || (eventSlave.chastityPenis === 1)) { + r.push(`${He} was touching ${his} nipples and ass, so you flick and torture ${his} nipples and give ${him} a severe spanking.`); + } else if (!canAchieveErection(eventSlave) && (eventSlave.dick > 6)) { + r.push(`${He} was playing with ${his} oversized cock, so you kick and swat at the swollen monster, enjoying the way it spasms.`); + } else if ((eventSlave.dick > 0) && !canAchieveErection(eventSlave)) { + r.push(`${He} was touching ${his} limp dick and ass, so you slap and torture ${his} offending dick and give ${him} a severe spanking.`); + } else if ((eventSlave.vagina === -1) && (eventSlave.dick === 0)) { + r.push(`${He} was desperately rubbing ${his} perineum and anus, the most sensitive parts ${he} has left, so you slap that part of ${him} repeatedly, enjoying the way it spasms.`); + } else if (eventSlave.vagina === -1 || eventSlave.clit >= 3) { + r.push(`${He} was jacking it, so you force ${him} to get ${himself} hard for punishment and then deliver a series of agonizing slaps and flicks to ${his} offending member.`); + } else if (eventSlave.labia > 1) { + r.push(`${His} generous pussylips bear a sheen of incriminating moisture, so you slap and flick them, causing ${him} intense agony.`); + } else { + r.push(`You deliver a series of agonizing slaps to ${his} mons.`); + } + r.push(`You have to start over twice. By the end, ${he}'s managed to orgasm to all the stimulation, but ${he}'s crying and desperately promising never to touch ${himself} again without your permission. ${His} submission to you <span class="hotpink">has increased.</span>`); + eventSlave.devotion += 4; + if ((eventSlave.fetish === "masochist") && (eventSlave.fetishKnown === 1)) { + eventSlave.fetishStrength += 4; + r.push(`<span class="fetish inc">${His} enjoyment of pain has increased.</span>`); + } else if (random(1, 100) > 50) { + eventSlave.fetish = "masochist"; + eventSlave.fetishKnown = 1; + eventSlave.fetishStrength = 65; + r.push(`Before ${he} realizes what's happening, <span class="fetish gain">${he}'s getting aroused at the thought of ${his} ${getWrittenTitle(eventSlave)} beating ${him}.</span>`); + } + return r; + } + } +}; + diff --git a/src/events/randomEvent.js b/src/events/randomEvent.js index 072492877bc..4c91f07f2cc 100644 --- a/src/events/randomEvent.js +++ b/src/events/randomEvent.js @@ -23,6 +23,7 @@ App.Events.getIndividualEvents = function() { new App.Events.RESSDevotedVirgin(), new App.Events.RESSDevotedWaist(), new App.Events.RESSEscapee(), + new App.Events.RESSForbiddenMasturbation(), new App.Events.RESSFrighteningDick(), new App.Events.RESSHotPC(), new App.Events.RESSImScared(), diff --git a/src/js/eventSelectionJS.js b/src/js/eventSelectionJS.js index c4242bccc77..1764bb4a104 100644 --- a/src/js/eventSelectionJS.js +++ b/src/js/eventSelectionJS.js @@ -785,13 +785,6 @@ if(eventSlave.drugs === "breast injections") { if (eventSlave.rules.release.masturbation === 0 && !App.Utils.hasNonassignmentSex(eventSlave)) { if (eventSlave.need) { - if (eventSlave.devotion <= 95) { - if (eventSlave.trust >= -20) { - if ((eventSlave.chastityPenis !== 1) || (eventSlave.dick === 0)) { - V.RESSevent.push("forbidden masturbation"); - } - } - } if (eventSlave.devotion >= -20) { if (eventSlave.trust >= -50) { V.RESSevent.push("desperately horny"); diff --git a/src/uncategorized/RESS.tw b/src/uncategorized/RESS.tw index db0b8d9ab0c..faf009268dd 100644 --- a/src/uncategorized/RESS.tw +++ b/src/uncategorized/RESS.tw @@ -2305,82 +2305,6 @@ To go by $his behavior, the likelihood that $he's actually eager to <<if $PC.dic $desc has run through the prescribed motions of a normal inspection, and you've reached the part of the routine where you usually ask the slave a few questions, give $him a few orders, or fuck $him. $His <<if canSee($activeSlave)>><<= App.Desc.eyesColor($activeSlave)>> are watching you closely<<else>>face is centered on you<</if>>, and $he's <<if canHear($activeSlave)>>listening carefully<<else>>waiting patiently<</if>> for direction. This is probably due to linguistic anxiety: $he can understand the most straightforward commands, but giving $him orders is often an exercise in <<if canSee($activeSlave)>>pointing and gesturing, or when that fails, simply<<else>>frustration, ending with you simply<</if>> pushing and pulling $his usually-compliant body into the proper place. -<<case "forbidden masturbation">> - -<<if $assistant.personality > 0>> - There is an alert from $assistant.name, in _hisA deliciously feminine voice: "$activeSlave.slaveName is masturbating, <<= properMaster()>>. Ooh, $he's breaking the rules, <<= properMaster()>>!" _HisA avatar - <<switch $assistant.appearance>> - <<case "monstergirl">> - strokes _hisA dicks suggestively. - <<case "shemale">> - shifts uncomfortably, _hisA cock rock hard. - <<case "amazon">> - struts back and forth indignantly, _hisA bone bangles rattling. - <<case "businesswoman">> - licks _hisA cherry-red lips suggestively. - <<case "fairy" "pregnant fairy">> - giggles uncontrollably. - <<case "hypergoddess" "goddess">> - tutting disapprovingly, despite _hisA blushing. - <<case "loli">> - stares innocently at the scene. - <<case "preggololi">> - stares at the scene, blushing, while a hand caresses _hisA large belly. - <<case "angel">> - is covering _hisA face, occasionally peeping through _hisA fingers. - <<case "cherub">> - is trying _hisA hardest to look away, but keeps glancing back at the scene. - <<case "incubus">> - is openly jacking off to the sight. - <<case "succubus">> - is groping _himselfA to the sight. - <<case "imp">> - is hovering while viciously fingering _hisA cunt. - <<case "witch">> - is pretending to read from _hisA spell book, but is obviously watching over the top of it. - <<case "ERROR_1606_APPEARANCE_FILE_CORRUPT">> - is mimicking _hisA actions nearly perfectly. - <<case "schoolgirl">> - giggles nervously. - <<default>> - spins accusingly. - <</switch>> -<<else>> - There is a gentle alert from $assistant.name: "$activeSlave.slaveName is masturbating in violation of the rules, <<= properMaster()>>." -<</if>> -A video feed appears. -<<if ($activeSlave.chastityVagina)>> - In $his chastity belt, all $he can manage is furious nipple-<<if $activeSlave.nipples != "fuckable">>rubbing<<else>>fisting<</if>> and some furtive fingering of $his asshole. -<<elseif ($activeSlave.chastityPenis == 1)>> - In $his chastity cage, all $he can manage is furious nipple-<<if $activeSlave.nipples != "fuckable">>rubbing<<else>>fisting<</if>> and some furtive fingering of $his asshole. -<<elseif ($activeSlave.dick > 0) && ($activeSlave.hormoneBalance >= 100)>> - Since $he's impotent from hormone treatment, all $he can manage is rubbing $his soft dick and some furtive fingering of $his asshole. -<<elseif ($activeSlave.dick > 0) && ($activeSlave.balls > 0) && ($activeSlave.ballType == "sterile")>> - Since $he's impotent due to $his useless balls, all $he can manage is rubbing $his soft dick and some furtive fingering of $his asshole. -<<elseif ($activeSlave.dick > 0) && ($activeSlave.balls == 0)>> - Since $he's impotent due to $his lack of balls, all $he can manage is rubbing $his soft dick and some furtive fingering of $his asshole. -<<elseif !canAchieveErection($activeSlave) && ($activeSlave.dick > 6)>> - Since $his dick requires far too much blood to get erect, $he's furiously massaging the semi-engorged monster. -<<elseif !canAchieveErection($activeSlave) && ($activeSlave.dick > 0)>> - Since $he's can't get it up, all $he can manage is rubbing $his soft dick and some furtive fingering of $his asshole. -<<elseif ($activeSlave.vagina == -1) && ($activeSlave.dick == 0)>> - $He's rubbing $his perineum desperately with one hand, and $his anus with the other, since $he lacks external genitalia. -<<elseif $activeSlave.vagina == -1>> - $He's furiously jacking off. -<<elseif $activeSlave.clit >= 3>> - $He's furiously jacking off $his clitdick. -<<else>> - $He's furiously polishing $his pearl. -<</if>> -$He's chosen to do it in a dark corner and looks like $he's hurrying; $he clearly knows this is forbidden. -<br><br> -<<= App.UI.slaveDescriptionDialog($activeSlave)>> does not hear your approach <<if canHear($activeSlave)>>until you're very close.<<else>>but soon realizes your presence.<</if>> $He starts and tries to look normal. -<<if !canTalk($activeSlave)>> - $He nervously gestures that $he wasn't doing anything. -<<else>> - "I wa<<s>>n't doing anything, <<if $activeSlave.rudeTitle == 1>><<= PoliteRudeTitle($activeSlave)>><<else>><<Master>><</if>>!" $he lies. -<</if>> - <<case "hates oral">> <<= App.UI.slaveDescriptionDialog($activeSlave)>> has been in your service long enough to know that oral sex is a daily fact of life for most slaves, and that most slaves are not only required to put up with cum, but to love it, too — or at least be able to fake enjoyment convincingly. $He's <<if canSee($activeSlave)>>seen cum spattered on other slaves' faces, pooling in their mouths, and dripping from their asses only to be licked up by other slaves<<elseif canHear($activeSlave)>>heard cum spattering across other slaves' faces, the sound of it in their mouths, dripping from their asses, and more<<else>>felt seminal fluid on $his skin and on $his lips, always coercively or accidentally<</if>>. It's clear from $activeSlave.slaveName's recent reactions to these acts that $he's quite disgusted by oral sex in general and cum in particular. Depending on your point of view, this could be a flaw for $him to overcome or a weakness you can exploit. @@ -12286,211 +12210,6 @@ $He cranes $his neck, glancing over $his shoulder to give you a pleading look. <</replace>> <</link>> -<<case "forbidden masturbation">> - -<<link "Let $him earn relief">> - <<replace "#result">> - $He's extremely relieved that you're not going to punish $him for the rulebreaking when you tell $him that $he can touch $himself if $he - <<if $activeSlave.belly >= 300000>> - leans over $his _belly belly - <<else>> - gets on $his knees - <</if>> - and sucks you off. $He does a decent job, playing with $himself all the while. $He's learned that $he can get away with infractions if $he's willing to suck dick afterward. $His resistance to your will @@.mediumorchid;has increased.@@ - <<set $activeSlave.devotion -= 5>> - <<run seX($activeSlave, "oral", $PC, "penetrative")>> - <</replace>> -<</link>> -<br>Punish $him, but then let $him get off: -<<if ($activeSlave.fetish != "cumslut") || ($activeSlave.fetishKnown != 1) || ($activeSlave.fetishStrength <= 95)>> - <br> <<link "when $he sucks">> - <<replace "#result">> - You - <<if $PC.belly >= 10000>> - <<if $activeSlave.belly >= 300000>> - tip $him over $his _belly <<if $activeSlave.bellyPreg >= 3000>>pregnancy<<else>>middle<</if>>, do your best to get close beside $him, - <<elseif $activeSlave.belly >= 5000>> - order $him to bend over beside you so your pregnancy doesn't obstruct you as badly - <<else>> - lean back, pull $him over your knee and under your gravid dome of a middle - <</if>> - <<else>> - <<if $activeSlave.belly >= 300000>> - tip $him over $his _belly <<if $activeSlave.bellyPreg >= 3000>>pregnancy<<else>>middle<</if>> - <<elseif $activeSlave.belly >= 5000>> - spread your legs to give $his <<if $activeSlave.bellyPreg >= 3000>>pregnancy<<else>>bloated middle<</if>> room as you pull $him onto your lap - <<else>> - pull $him down over your knee - <</if>> - <</if>> - and spank $his $activeSlave.skin buttocks until they're warm to the touch. It's not a sexual punishment, it's too painful for that; by the end, $activeSlave.slaveName has cried $himself out and is limp in your hands. You pull $him up to face you and give $him your instructions: from now on, $he can come to you and ask to <<if $PC.dick != 0>>blow you<<if $PC.vagina != -1>> and <</if>><</if>><<if $PC.vagina != -1>>perform cunnilingus on you<</if>>, and masturbate while $he does. $He nods through $his tears and flees. In an hour or so, though, $he finds you and asks to <<if $PC.vagina != -1>>give you oral<<else>>suck your cock<</if>>. When you pretend indifference, $he abjectly begs. Soon, $he's down on $his knees, crying a little with shame as $he masturbates furiously. - <<run seX($activeSlave, "oral", $PC, "penetrative", 5)>> - <<if ($activeSlave.fetish == "cumslut") && ($activeSlave.fetishKnown == 1)>> - <<set $activeSlave.fetishStrength += 4>> - @@.lightcoral;$His enjoyment of <<if $PC.dick == 0>>giving head<<else>>sucking cock<</if>> has increased.@@ - <<elseif random(1,100) > 50>> - <<set $activeSlave.fetish = "cumslut", $activeSlave.fetishKnown = 1, $activeSlave.fetishStrength = 65>> - Before $he realizes what's happening, @@.lightcoral;$he's getting aroused at the thought of <<if $PC.dick == 0>>giving head<<else>>sucking cock<</if>>.@@ - <</if>> - <</replace>> - <</link>> -<</if>> -<<if ($activeSlave.fetish != "boobs") || ($activeSlave.fetishKnown != 1) || ($activeSlave.fetishStrength <= 95)>> - <br> <<link "during nipple play">> - <<replace "#result">> - You - <<if $PC.belly >= 10000>> - <<if $activeSlave.belly >= 300000>> - tip $him over $his _belly <<if $activeSlave.bellyPreg >= 3000>>pregnancy<<else>>middle<</if>>, do your best to get close beside $him, and grope $him thoroughly, bringing $him to the painful edge of orgasm. Just when $he's about to tip over the edge, the stimulation stops and you flip $him onto $his back, lower your gravid body down to $his level and start playing with $his nipples. - <<elseif $activeSlave.belly >= 5000>> - order $him to bend over beside you so your pregnancy doesn't obstruct you as badly and grope $him thoroughly, bringing $him to the painful edge of orgasm. Just when $he's about to tip over the edge, the stimulation stops and you haul $him upright and start playing with $his nipples. - <<else>> - lean back, pull $him over your knee and under your gravid dome of a middle and grope $him thoroughly, bringing $him to the painful edge of orgasm. Just when $he's about to tip over the edge, the stimulation stops and you haul $him upright and start playing with $his nipples. - <</if>> - <<else>> - <<if $activeSlave.belly >= 300000>> - tip $him over $his _belly <<if $activeSlave.bellyPreg >= 3000>>pregnancy<<else>>middle<</if>> and grope $him thoroughly, bringing $him to the painful edge of orgasm. Just when $he's about to tip over the edge, the stimulation stops and you haul $him up into your lap, $his stomach spreading your legs, and start playing with $his nipples. - <<elseif $activeSlave.belly >= 5000>> - spread your legs to give $his <<if $activeSlave.bellyPreg >= 3000>>pregnancy<<else>>bloated middle<</if>> room as you pull $him onto your lap and grope $him thoroughly, bringing $him to the painful edge of orgasm. Just when $he's about to tip over the edge, the stimulation stops and you haul $him up into your lap and start playing with $his nipples. - <<else>> - pull $him down over your knee and grope $him thoroughly, bringing $him to the painful edge of orgasm. Just when $he's about to tip over the edge, the stimulation stops and you haul $him up into your lap and start playing with $his nipples. - <</if>> - <</if>> - $He writhes and sobs at the orgasm denial, since the nipple play is just barely enough to keep $him at a high level of arousal without giving relief. You switch back and forth until $he finally goes over into muscle-spasming climax during nipple stimulation alone. - <<run seX($activeSlave, "mammary", $PC, "penetrative")>> - <<if ($activeSlave.fetish == "boobs") && ($activeSlave.fetishKnown == 1)>> - <<set $activeSlave.fetishStrength += 4>> - @@.lightcoral;$His enjoyment of breast play has increased.@@ - <<elseif random(1,100) > 50>> - <<set $activeSlave.fetish = "boobs", $activeSlave.fetishKnown = 1, $activeSlave.fetishStrength = 65>> - Before $he realizes what's happening, @@.lightcoral;$he's getting aroused at every brush against $his breasts.@@ - <</if>> - <</replace>> - <</link>> -<</if>> -<<if (($activeSlave.fetish != "pregnancy") || ($activeSlave.fetishKnown != 1) || ($activeSlave.fetishStrength <= 95)) && $activeSlave.belly >= 5000>> - <br> <<link "while fondling $his belly">> - <<replace "#result">> - You - <<if $activeSlave.belly >= 300000>> - roll $him onto $his back - <<else>> - pull $him into a sitting position on your lap - <</if>> - and grope $his _belly <<if $activeSlave.bellyPreg >= 3000>>pregnancy<<else>>stomach<</if>>thoroughly, allowing $him to reach the painful edge of orgasm. You feel $his belly shudder as $he reaches climax under your ministrations. You tease $his <<if $activeSlave.belly >= 10001>>popped <</if>>navel as $he comes down from $his masturbation session. - <<if ($activeSlave.fetish == "pregnancy") && ($activeSlave.fetishKnown == 1)>> - <<set $activeSlave.fetishStrength += 4>> - @@.lightcoral;$His enjoyment of pregnancy has increased.@@ - <<elseif random(1,100) > 50>> - <<set $activeSlave.fetish = "pregnancy", $activeSlave.fetishKnown = 1, $activeSlave.fetishStrength = 65>> - Before $he realizes what's happening, @@.lightcoral;$he's getting aroused at <<if $activeSlave.pregKnown == 1>>every thought about $his pregnancy<<else>>the very thought of being pregnant<</if>>.@@ - <</if>> - <</replace>> - <</link>> -<</if>> -<<if canDoAnal($activeSlave)>> - <<if ($activeSlave.fetish != "buttslut") || ($activeSlave.fetishKnown != 1) || ($activeSlave.fetishStrength <= 95)>> - <br> <<link "when $he takes it up the ass">> - <<replace "#result">> - You - <<if $PC.belly >= 10000>> - <<if $activeSlave.belly >= 300000>> - tip $him over $his _belly <<if $activeSlave.bellyPreg >= 3000>>pregnancy<<else>>middle<</if>>, do your best to get close beside $him, - <<elseif $activeSlave.belly >= 5000>> - order $him to bend over beside you so your pregnancy doesn't obstruct you as badly - <<else>> - lean back, pull $him over your knee and under your gravid dome of a middle - <</if>> - <<else>> - <<if $activeSlave.belly >= 300000>> - tip $him over $his _belly <<if $activeSlave.bellyPreg >= 3000>>pregnancy<<else>>middle<</if>> - <<elseif $activeSlave.belly >= 5000>> - spread your legs to give $his <<if $activeSlave.bellyPreg >= 3000>>pregnancy<<else>>bloated middle<</if>> room as you pull $him onto your lap - <<else>> - pull $him down over your knee - <</if>> - <</if>> - and spank $his $activeSlave.skin buttocks until they're warm to the touch. It's not a sexual punishment, it's too painful for that; by the end, $activeSlave.slaveName has cried $himself out and is limp in your hands. You pull $him up to face you and give $him your instructions: from now on, $he can come to you and ask you to assrape $him, and masturbate while $he takes <<if $PC.dick == 0>>anal penetration<<else>>cock<</if>>. $He nods through $his tears and flees. In an hour or so, though, $he finds you and haltingly asks you to buttfuck $him. When you pretend indifference, $he offers you $his anus and abjectly begs you to stick <<if $PC.dick == 0>>a strap-on<<else>>your cock<</if>> up $his butt. Soon, $he's down on all fours, crying a little with mixed shame and anal pain as $he masturbates furiously. - <<= VCheck.Anal($activeSlave, 5)>> - <<if ($activeSlave.fetish == "buttslut") && ($activeSlave.fetishKnown == 1)>> - <<set $activeSlave.fetishStrength += 4>> - @@.lightcoral;$His enjoyment of anal has increased.@@ - <<elseif random(1,100) > 50>> - <<set $activeSlave.fetish = "buttslut", $activeSlave.fetishKnown = 1, $activeSlave.fetishStrength = 65>> - Before $he realizes what's happening, @@.lightcoral;$he's getting aroused at the thought of anal sex.@@ - <</if>> - <</replace>> - <</link>><<if ($activeSlave.anus == 0)>> //This option will take $his anal virginity//<</if>> - <</if>> -<</if>> -<<if ($activeSlave.fetish != "humiliation") || ($activeSlave.fetishKnown != 1) || ($activeSlave.fetishStrength <= 95)>> - <br> <<link "in public">> - <<replace "#result">> - You bring $him out <<if $club > 0>>to $clubName<<else>>onto the street<</if>> and secure $him upright with a set of vibrators attached to all of $his erogenous zones. There's a lot of them, and they're extremely powerful; when you test the setup, $he wriggles with the intensity of the stimulation, and is about to climax when you shut it down. Without telling $him, you slave the vibrators to a program originally designed for VIP security details. It uses the cameras scattered through the area to detect when passersby are looking at $him. The more eyes on $him, the stronger the vibrations. - <<if ($activeSlave.fetish == "humiliation") && ($activeSlave.fetishKnown == 1)>> - <<set $activeSlave.fetishStrength += 4>> - @@.lightcoral;$His enjoyment of humiliation has increased.@@ - <<elseif random(1,100) > 50>> - <<set $activeSlave.fetish = "humiliation", $activeSlave.fetishKnown = 1, $activeSlave.fetishStrength = 65>> - Before $he realizes what's happening, @@.lightcoral;$he's starting to long for humiliation.@@ - <</if>> - <</replace>> - <</link>> -<</if>> -<<if ($activeSlave.fetish != "submissive") || ($activeSlave.fetishKnown != 1) || ($activeSlave.fetishStrength <= 95)>> - <br> <<link "while submitting to a spanking">> - <<replace "#result">> - You tell $him that $he can get $himself off while $he's being spanked, and that's it: you don't tell $him to offer $his bottom, much less start spanking $him. $He doesn't understand for a long moment, but before long $he's begging abjectly for a spanking, and has $his buttocks presented, quivering with simultaneous arousal and fear of pain. The pain comes soon enough, with a delicious crack of palm on flesh <<if $activeSlave.voice == 0>>and a hoarse grunt, the most noise $he can make.<<else>>and a shriek of agony.<</if>> $He masturbates furiously, but you're an accomplished spanker, and you repeatedly cause $him just enough pain to prevent climax. Eventually $he gets off in part because of, rather than in spite of, the lengthy beating. - <<if ($activeSlave.fetish == "submissive") && ($activeSlave.fetishKnown == 1)>> - <<set $activeSlave.fetishStrength += 4>> - @@.lightcoral;$His enjoyment of submission has increased.@@ - <<elseif random(1,100) > 50>> - <<set $activeSlave.fetish = "submissive", $activeSlave.fetishKnown = 1, $activeSlave.fetishStrength = 65>> - Before $he realizes what's happening, @@.lightcoral;$he starts to associate submitting to you with getting off.@@ - <</if>> - <</replace>> - <</link>> -<</if>> -<<if ($activeSlave.fetish != "masochist") || ($activeSlave.fetishKnown != 1) || ($activeSlave.fetishStrength <= 95)>> - <br> <<link "while in pain">> - <<replace "#result">> - You order $him to - <<if ($activeSlave.heels == 1) && shoeHeelCategory($activeSlave) == 0>> - kneel - <<elseif shoeHeelCategory($activeSlave) > 1>> - teeter - <<else>> - stand - <</if>> - with $his arm<<if hasBothArms($activeSlave)>>s<</if>> over $his head and $his arm<<if hasBothLegs($activeSlave)>>s<</if>> splayed, and tell $him that if $he moves or resists $his punishment will begin again from the start. - <<if ($activeSlave.chastityVagina) || ($activeSlave.chastityPenis == 1)>> - $He was touching $his nipples and ass, so you flick and torture $his nipples and give $him a severe spanking. - <<elseif !canAchieveErection($activeSlave) && ($activeSlave.dick > 6)>> - $He was playing with $his oversized cock, so you kick and swat at the swollen monster, enjoying the way it spasms. - <<elseif ($activeSlave.dick > 0) && !canAchieveErection($activeSlave)>> - $He was touching $his limp dick and ass, so you slap and torture $his offending dick and give $him a severe spanking. - <<elseif ($activeSlave.vagina == -1) && ($activeSlave.dick == 0)>> - $He was desperately rubbing $his perineum and anus, the most sensitive parts $he has left, so you slap that part of $him repeatedly, enjoying the way it spasms. - <<elseif $activeSlave.vagina == -1 || $activeSlave.clit >= 3>> - $He was jacking it, so you force $him to get $himself hard for punishment and then deliver a series of agonizing slaps and flicks to $his offending member. - <<elseif $activeSlave.labia > 1>> - $His generous pussylips bear a sheen of incriminating moisture, so you slap and flick them, causing $him intense agony. - <<else>> - You deliver a series of agonizing slaps to $his mons. - <</if>> - You have to start over twice. By the end, $he's managed to orgasm to all the stimulation, but $he's crying and desperately promising never to touch $himself again without your permission. $His submission to you @@.hotpink;has increased.@@ - <<set $activeSlave.devotion += 4>> - <<if ($activeSlave.fetish == "masochist") && ($activeSlave.fetishKnown == 1)>> - <<set $activeSlave.fetishStrength += 4>> - @@.lightcoral;$His enjoyment of pain has increased.@@ - <<elseif random(1,100) > 50>> - <<set $activeSlave.fetish = "masochist", $activeSlave.fetishKnown = 1, $activeSlave.fetishStrength = 65>> - Before $he realizes what's happening, @@.lightcoral;$he's getting aroused at the thought of <<= getWrittenTitle($activeSlave)>> beating $him.@@ - <</if>> - <</replace>> - <</link>> -<</if>> - <<case "hates oral">> <<link "Let $him earn a break for $his throat">> -- GitLab