diff --git a/devTools/types/FC/gameState.d.ts b/devTools/types/FC/gameState.d.ts index 935bf0fe3a89d90458f4803d3ac4dc76b1b12772..b74aca74cb850fbb3f14612ad92f761c2d1116b3 100644 --- a/devTools/types/FC/gameState.d.ts +++ b/devTools/types/FC/gameState.d.ts @@ -71,8 +71,6 @@ declare namespace FC { /** @deprecated */ rebelSlaves: string[]; /** @deprecated */ - RECockmilkInterceptionIDs: number[]; - /** @deprecated */ eligibleSlaves: SlaveState[]; /** @deprecated */ diff --git a/src/endWeek/nextWeek/resetGlobals.js b/src/endWeek/nextWeek/resetGlobals.js index 7fb202b2cbcc29b591712bea129b61d376dc891f..96d4fb0c8b7778fcf1a277d576832f4c1807db14 100644 --- a/src/endWeek/nextWeek/resetGlobals.js +++ b/src/endWeek/nextWeek/resetGlobals.js @@ -46,7 +46,6 @@ App.EndWeek.resetGlobals = function() { V.REButtholeCheckinIDs = []; V.recruit = []; V.rebelSlaves = []; - V.RECockmilkInterceptionIDs = []; V.eligibleSlaves = []; // Slave Objects using 0 instead of null. Second most memory eaten up. diff --git a/src/events/RETS/reCockmilkInterception.js b/src/events/RETS/reCockmilkInterception.js new file mode 100644 index 0000000000000000000000000000000000000000..4d8e4919f75fc0691001df9fad9cb68f94e69cc6 --- /dev/null +++ b/src/events/RETS/reCockmilkInterception.js @@ -0,0 +1,542 @@ +App.Events.RETSCockmilkInterception = class RETSCockmilkInterception extends App.Events.BaseEvent { + eventPrerequisites() { + return []; + } + + actorPrerequisites() { + return [ + [ // event slave /domslave + s => s.fetish !== "mindbroken", + hasAnyArms, + hasAnyLegs, + canTalk, + s => s.devotion > 20, + s => s.dietCum > 0 || (s.fetishKnown && s.fetish === "cumslut") + ], + [ // and subslave + s => s.fetish !== "mindbroken", + s => (s.assignment === Job.DAIRY || s.assignment === Job.MILKED), + s => s.dick !== 0, + s => s.balls !== 0, + s => (s.vasectomy === 0 && s.ballType === "human"), + s => (canDoAnal(s) && s.anus !== 0), + ] + ]; + } + + execute(node) { + /** @type {Array<App.Entity.SlaveState>} */ + let [slave, subSlave] = this.actors.map(a => getSlave(a)); + const { + He, he, his, him, himself, His + } = getPronouns(slave); + const {say} = getEnunciation(slave); + const {He2, he2, His2, his2, him2, girl2} = getPronouns(subSlave).appendSuffix("2"); + V.nextLink = "Next Week"; + App.Events.drawEventArt(node, [slave, subSlave], "no clothing"); + + let t = []; + + seX(subSlave, "oral", slave, "oral"); + t.push(`Early in the morning, you run across`, contextualIntro(V.PC, subSlave, "DOM"), `using one of the penthouse milking machines. This isn't surprising;`); + if (subSlave.lactation === 0) { + t.push(`${he2}'s not lactating, but ${he2}'s a good semen producer and when ${he2} wakes up, ${he2}'s usually very ready to have one of the machines drain ${his2} balls for ${him2}.`); + } else { + if (subSlave.preg > subSlave.pregData.normalBirth/1.33) { + t.push(`it's late in ${his2} pregnancy and ${he2} wakes up every day with ${his2} ${subSlave.boobShape} breasts sore, painfully swollen with rich, nutritious milk.`); + } else if (subSlave.preg > subSlave.pregData.normalBirth/2) { + t.push(`${he2}'s pregnant and ${he2} wakes up every day with ${his2} ${subSlave.boobShape} breasts sore and swollen with rich, nutritious milk.`); + } else if (subSlave.lactation > 1) { + t.push(`the tiny little slow-release implant in each of ${his2} breasts is merciless. It keeps ${his2} mammary glands in a permanent state of barely-safe hyperproduction, and ${he2} wakes up every day with ${his2} terribly sore breasts spontaneously dribbling milk.`); + } else { + t.push(`${his2} lactation is natural, but it's still enough that ${he2} wakes up most days with full, sore breasts.`); + } + t.push(`But ${his2} udders aren't the only thing producing creamy liquid. The machine is applying generous prostate stimulation to drain ${his2} balls, too.`); + subSlave.lactationDuration = 2; + subSlave.boobs -= subSlave.boobsMilk; + subSlave.boobsMilk = 0; + } + t.push(`But the cum is about to be intercepted. There's another slave lying on the floor under ${subSlave.slaveName}, intertwined with the`); + if (subSlave.lactation === 0) { + t.push(`machine; its cum receptacle lying unused.`); + } else { + t.push(`machine. The nipple milkers are attached to each of the human cow's nipples, and they're pumping away industriously, keeping the clear lines running away from each udder white with cream. On the other hand, the cum receptacle is lying unused.`); + } + App.Events.addParagraph(node, t); + t = []; + t.push(`You can't see much of the slave under ${subSlave.slaveName}, since ${he}'s intimately intertwined with the machine and with ${subSlave.slaveName}, but based on ${his}`); + if (slave.dick > 0) { + if (canAchieveErection(slave) && !(slave.chastityPenis)) { + t.push(`stiff prick,`); + } else if ((slave.chastityPenis === 1)) { + t.push(`uncomfortably filled chastity cage,`); + } else { + t.push(`pathetically soft but precum-tipped dick,`); + } + } + if (slave.vagina > 0) { + if (slave.labia > 0) { + t.push(`generous pussylips,`); + } else if (slave.clit > 0) { + t.push(`visibly stiff clit,`); + } else { + t.push(`obviously aroused womanhood,`); + } + } + if (slave.dick === 0) { + if (slave.vagina === -1) { + if (slave.scrotum > 0) { + t.push(`lonely ballsack,`); + } else { + t.push(`smoothly featureless groin,`); + } + } + } + if (slave.weight > 100) { + t.push(`fat`); + } else if (slave.muscles > 30) { + t.push(`muscular`); + } else if (slave.weight > 30) { + t.push(`chubby`); + } else if (slave.muscles > 10) { + t.push(`toned`); + } else if (slave.weight > 10) { + t.push(`nice soft`); + } else if (slave.weight >= -10) { + t.push(`slender`); + } else { + t.push(`skinny`); + } + t.push(`legs, and ${slave.skin} skin, it's`, App.UI.DOM.combineNodes(contextualIntro(subSlave, slave, "DOM"), "."), `${He}'s allowed access to cockmilk and ${he}'s getting it straight from the source. ${subSlave.slaveName}`); + if (subSlave.dick < 3) { + t.push(`has a`); + if (subSlave.dick < 2) { + t.push(`pathetically tiny penis,`); + } else { + t.push(`rather modest cock,`); + } + t.push(`so ${slave.slaveName} has ${his} head buried between ${subSlave.slaveName}'s quivering thighs. ${He} isn't sucking ${subSlave.slaveName}'s dick so much as ${he}'s nursing at it, keeping it entirely within ${his} mouth and applying powerful suction.`); + } else if (subSlave.dick > 8) { + t.push(`has an inhumanly monstrous penis that the poor slave's cardiovascular system couldn't possibly bring erect. ${slave.slaveName} has gotten its huge soft head into ${his} mouth, and is sucking lustily.`); + } else if (!canAchieveErection(subSlave)) { + t.push(`can't achieve an erection, but ${slave.slaveName} is sucking ${his2} dick anyway. ${He}'s got ${his} mouth full of it, and to go by the flexing of ${his} cheeks, is applying ${his} tongue with gusto.`); + } else { + t.push(`is rock hard, of course, and ${slave.slaveName} is giving ${him2} a lusty blowjob, stroking ${his2} head busily back and forth.`); + } + t.push(`The milking machine cum receptacle is designed to be warm, wet, and stimulating, but ${subSlave.slaveName} is getting much better attention. ${slave.slaveName} is omitting nothing that could help ${him} extract every last drop of cum. ${He}'s sucking, and the machine is applying direct stimulation to ${subSlave.slaveName}'s`); + if (subSlave.prostate) { + t.push(`prostate`); + } else { + t.push(`insides`); + } + t.push(`with`); + if (subSlave.anus > 3) { + t.push(`a big vibrating dildo that comfortably fills ${his2} experienced anus,`); + } else if (subSlave.anus > 2) { + t.push(`a vibrating dildo that ${his2} soft asshole can take comfortably,`); + } else { + t.push(`a little vibrator that fits comfortably up ${his2} tight ass,`); + } + if (subSlave.dick < 3) { + t.push(`giving ${slave.slaveName} limited options to further stimulate the poorly-endowed slave. ${He}'s using one hand to stroke the soft, precum-slick skin below ${subSlave.slaveName}'s anus.`); + } else if (subSlave.dick > 8) { + t.push(`so ${slave.slaveName} has one hand wrapped around the gigantic soft python of flesh between ${subSlave.slaveName}'s legs, and is squeezing it rhythmically from its base up to where its head enters ${his} wet lips.`); + } else if (!canAchieveErection(subSlave)) { + t.push(`so, since ${slave.slaveName} can't jack off a soft shaft, ${he}'s using one hand to stroke the soft, precum-slick skin below ${subSlave.slaveName}'s anus.`); + } else { + t.push(`so ${he} uses one hand to stroke the hard shaft outside ${his} wet lips, using ${his} saliva and ${subSlave.slaveName}'s precum to perform a messy handjob.`); + } + t.push(`${His} other hand is`); + if (subSlave.scrotum === 0) { + t.push(`massaging the place where ${subSlave.slaveName}'s scrotum used to be.`); + } else if (subSlave.scrotum < slave.balls) { + t.push(`gently massaging ${subSlave.slaveName}'s overfilled scrotum, which ${his2} balls fill to the point of discomfort.`); + } else if (subSlave.scrotum > slave.balls+1) { + t.push(`playing with ${subSlave.slaveName}'s loose scrotum.`); + } else { + t.push(`massaging ${subSlave.slaveName}'s balls.`); + } + App.Events.addParagraph(node, t); + t = []; + t.push(`${subSlave.slaveName} is getting ${his2} dick `); + if (subSlave.lactation === 0) { + t.push(`sucked and ${his2} ass fucked.`); + } else { + t.push(`sucked, ${his2} ass fucked, and ${his2} boobs milked.`); + } + t.push(`${He2}'s so overstimulated that ${he2}'s shaking; a tremendous orgasm is building within ${him2}. ${He2}`); + if (subSlave.voice !== 0) { + t.push(`groans,`); + } else { + t.push(`makes a harsh rasping noise,`); + } + t.push(`which ${slave.slaveName}`); + if (canHear(slave)) { + t.push(`hears,`); + } else { + t.push(`can feel,`); + } + t.push(`and ${subSlave.slaveName} tenses, which ${slave.slaveName} feels in ${his} mouth and hands. Smiling around the penis in ${his} mouth, pleased by the approach of a gush of delectable semen, ${slave.slaveName} hums encouragement into ${subSlave.slaveName}'s`); + if (canAchieveErection(subSlave)) { + t.push(`rock-hard`); + } else { + t.push(`soft`); + } + if (subSlave.scrotum) { + t.push(`dickhead and visibly tickles ${subSlave.slaveName}'s balls with ${his} naughty pink tongue`); + } else { + t.push(`dickhead.`); + } + + + App.Events.addParagraph(node, t); + App.Events.addResponses(node, [ + new App.Events.Result("Step in for the stimulator", stimulator), + subSlave.lactation + ? new App.Events.Result("Make sure the cumslut gets a balanced diet", balanced) + : new App.Events.Result(), + (V.PC.dick > 0 && V.PC.balls > 0) + ? new App.Events.Result("Substitute your cum", substitute) + : new App.Events.Result(), + ]); + + function stimulator() { + const frag = document.createDocumentFragment(); + t = []; + + seX(subSlave, "anal", V.PC, "penetrative"); + if (canImpreg(subSlave, V.PC)) { + t.push(knockMeUp(subSlave, 5, 1, -1, true)); + } + t.push(`You command the machine to cease`); + if (subSlave.anus < 3 || canDoVaginal(subSlave)) { + t.push(`stimulating and leave ${subSlave.slaveName}'s ass alone for now. ${He2}`); + } else { + t.push(`stimulating, but leave its dildo where it is, for now. ${subSlave.slaveName}`); + } + if (subSlave.voice !== 0) { + t.push(`moans with frustration,`); + } else { + t.push(`wriggles uncomfortably,`); + } + t.push(`incipient orgasm ruined. Below ${him2}, ${slave.slaveName} makes a whining noise past ${his} mouth full of dick, not understanding what's happened. ${He} makes to start getting out from under ${subSlave.slaveName} and the machine, to investigate, but before ${he} can even put the dick down, ${he}`); + if (canSee(slave)) { + t.push(`sees a pair of`); + if (V.PC.title) { + t.push(`strong`); + } else { + t.push(`feminine`); + } + t.push(`hands reach around either side of ${subSlave.slaveName}'s torso and seize hold of ${his2}`); + } else { + t.push(`hears a pair of hands seize hold of ${subSlave.slaveName}'s`); + } + if (subSlave.lactation === 0) { + t.push(`milkless breasts.`); + } else { + t.push(`milk-filled udders.`); + } + t.push(`${slave.slaveName} can't`); + if (canSee(slave)) { + t.push(`see who it is,`); + } else { + t.push(`see,`); + } + t.push(`but ${he} knows it's you.`, Spoken(slave, `"Mhhf, hi, ${getWrittenTitle(slave)},"`), `${he} manages, letting ${subSlave.slaveName}'s`); + if (canAchieveErection(subSlave)) { + t.push(`hard cockhead spring free of ${his} mouth with a pop.`); + } else { + t.push(`soft dick fall out of ${his} mouth with a wet noise.`); + } + t.push(Spoken(slave, `"Should I, um, get out from under here?"`)); + App.Events.addParagraph(frag, t); + t = []; + + t.push(`You order ${him} to stay where ${he} is, and go back to sucking dick.`, Spoken(slave, `"Yes, ${getWrittenTitle(slave)},"`), `${he} giggles, and then shuts up as ${his} mouth is occupied once more. ${subSlave.slaveName}, who's been obediently still under you as ${he2} waits for your pleasure, stiffens as ${he2} feels ${his2} dickhead surrounded by warm wetness once more. ${He2}'s got more coming.`); + if (canDoVaginal(subSlave)) { + t.push(`${He2}'s got a cock and two fuckholes, so you instruct the machine to go back to stimulating, and adroitly lift ${his2} hips a little so that when the machine reinserts its stimulator, it penetrates ${his2} vagina and fucks that instead. Then you insert your`); + if (V.PC.dick) { + t.push(`cock`); + } else { + t.push(`strap-on`); + } + t.push(`into ${his2} conveniently pre-fucked ass and start`); + if (V.PC.dick) { + t.push(`pounding, feeling the vibration from inside ${his2} pussy on your dick through ${his2} insides`); + } else { + t.push("pounding."); + } + } else if (subSlave.anus > 2) { + t.push(`${His2} ass is so relaxed that your`); + if (V.PC.dick) { + t.push(`cock`); + } else { + t.push(`strap-on`); + } + t.push(`slides in alongside the stimulator without much trouble. Once you're inserted, you instruct the machine to start stimulating again, and mercilessly double penetrate ${his2}`); + if (V.PC.dick) { + t.push(`ass, enjoying the vibration against your cock as it slides against the stimulator.`); + } else { + t.push(`ass.`); + } + } else { + t.push(`The stimulator is effective enough, but it can't match `); + if (V.PC.dick) { + t.push(`a real cock,`); + } else { + t.push(`a strap-on wielded by a consummate master of the art,`); + } + t.push(`which is of course what ${subSlave.slaveName} has up ${his2} ass in short order.`); + } + t.push(`${He2} was on the edge of orgasm when you stepped in, and this is just too much. ${He2} climaxes with indecent speed, involuntarily humping against the machine, shooting rope after rope of ${his2} cum into ${slave.slaveName}'s`); + if (V.PC.dick) { + t.push(`mouth and spasming against your invading penis wonderfully.`); + } else { + t.push("mouth."); + } + t.push(`You hold the quivering ${subSlave.slaveName} down and keep hammering ${him2} until you're certain ${he2}'s fed ${slave.slaveName} every drop ${he2} has. Then you let ${him2} up.`); + App.Events.addParagraph(frag, t); + t = []; + + t.push(`As ${subSlave.slaveName} stumbles off, looking <span class="hotpink">rather submissive,</span> ${slave.slaveName} scoots out from underneath the machine.`); + t.push(Spoken(slave, `"${getWrittenTitle(slave)},"`), `${he} ${say}s <span class="hotpink">devotedly,</span>`, Spoken(slave, `"that ${canTaste(slave) ? `tasted` : "was"} incredible. It ${canTaste(slave) ? `tastes` : "feels"} so much better when you fuck it out of ${him2}!"`)); + t.push(`${He} rubs ${his}`); + if (slave.belly >= 5000) { + t.push(`rounded`); + } + t.push(`tummy with exaggerated satisfaction, and then realizes that you weren't fucking for nearly long enough to have gotten off yourself.`); + if (slave.lactation || slave.balls) { + t.push(`"I need to be milked now, too," ${he} ${say}s flirtily, and turns to mount the machine in turn.`, Spoken(slave, `"Please, please do me too!"`), `The machine hasn't had a turn first, this time, so ${he}'s much`); + if (V.PC.dick) { + t.push(`tighter, and when ${he}'s done being milked, ${he}'s got a load of your cum inside ${him}.`); + } else { + t.push("tighter."); + } + seX(subSlave, "anal", V.PC, "penetrative"); + if (canImpreg(slave, V.PC)) { + t.push(knockMeUp(slave, 5, 1, -1, true)); + } + if (slave.lactation > 0) { + slave.lactationDuration = 2; + slave.boobs -= slave.boobsMilk; + slave.boobsMilk = 0; + } + } else { + t.push(Spoken(slave, `"Please, please let me drink yours, too,"`), `${he} moans, and gets down on ${his} knees, opening ${his} mouth and sticking out ${his} tongue, begging for`); + if (V.PC.dick) { + t.push(`your cock. You stick it straight down ${his} throat, and soon add a second load of cum`); + } else { + t.push(`you to mount ${his} face. You do, and soon add a generous helping of femcum`); + } + t.push(`to ${his} breakfast.`); + seX(slave, "oral", V.PC, "penetrative"); + } + slave.devotion += 3; + subSlave.devotion += 3; + App.Events.addParagraph(frag, t); + + return frag; + } + + function balanced() { + const frag = document.createDocumentFragment(); + t = []; + t.push(`You stand by and watch the arresting scene until ${subSlave.slaveName} cums. The milking stations are designed to be pleasurable, so they're calibrated to drain ${girl2}s' balls about as fast as they drain their udders, allowing them to enjoy both kinds of relief for the whole session. But ${slave.slaveName} has falsified that for once;`); + if (slave.skill.oral > 95) { + t.push(`the inside of ${his} wet, hot mouth is really a delightful place for a penis, and ${he} puts the machine's dick receptacle to shame. ${subSlave.slaveName}`); + } else if (slave.skill.oral > 60) { + t.push(`${he}'s a skilled cocksucker, and ${his} wet, hot mouth is a much more stimulating place for a penis than the machine's dick receptacle. ${subSlave.slaveName}`); + } else { + t.push(`${he}'s no oral master, but ${his} mouth is wet and hot, and ${subSlave.slaveName} clearly likes it more than machine's dick receptacle. ${He2}`); + } + t.push(`can feel that ${his2} breasts aren't nearly empty of milk yet, and of course the milkers are tugging at ${his2} teats as industriously as ever, so ${he2} relaxes luxuriantly as ${slave.slaveName} starts to climb out from under ${him2}.`); + App.Events.addParagraph(frag, t); + t = []; + + t.push(`You announce your presence by ordering ${slave.slaveName} to stay where ${he} is. Startled, ${he} sticks ${his} head out from under ${subSlave.slaveName} and chirps`, Spoken(slave, `"Yes, ${getWrittenTitle(slave)}!"`), `and scoots back under, waiting to see what you're planning. You straddle ${subSlave.slaveName}'s face; as`); + if (canSee(subSlave)) { + t.push(`${his2} vision is filled by your`); + if (V.PC.dick) { + t.push(`erect dick`); + } else { + t.push(`wet pussy`); + } + } else if (canSmell(subSlave)) { + t.push(`${his2} nose samples the scent of`); + if (V.PC.dick) { + t.push(`the precum budding at the tip of your erect dick`); + } else { + t.push(`your wet pussy`); + } + } else { + t.push(`${his2} face is warmed by the heat from your`); + if (V.PC.dick) { + t.push(`hard cock,`); + } else { + t.push(`wet cunt,`); + } + } + t.push(`${he2} opens ${his2} mouth compliantly and`); + if (V.PC.dick) { + t.push(`receives ${his2} owner's hot cock, pressed past ${his2} lips and down ${his2} throat. ${He2} starts sucking`); + } else { + t.push(`is rewarded with ${his2} owner's hot womanhood, pressed against ${his2} lips. ${He2} starts eating you out`); + } + t.push(`obediently, until you reach down to ${his2} still-jiggling udders and tug one of the milkers loose. ${subSlave.slaveName} starts with discomfort, moaning uncomfortably into your`); + if (V.PC.dick) { + t.push(`member`); + } else { + t.push(`cunt`); + } + t.push(`before getting back to work. ${His2}`); + if (subSlave.lactation > 1) { + t.push(`lactation is unnaturally copious,`); + } else { + t.push(`milk is really flowing,`); + } + t.push(`and a thin stream of cream squirts out of ${him2}. It lands on ${slave.slaveName}'s face below, surprising ${him}. ${He} splutters comically, but obeys eagerly when you squeeze ${subSlave.slaveName}'s freed boob and order ${slave.slaveName} to start drinking. After all, you point out, a balanced diet is important. ${slave.slaveName} <span class="mediumaquamarine">giggles complaisantly</span> and reaches for the proffered tit. ${subSlave.slaveName} is still basking in the afterglow of ${his2} orgasm and shudders silently with overstimulation as ${he2} feels ${slave.slaveName}'s lips`); + if (subSlave.nipples !== "fuckable") { + t.push(`latch around`); + } else { + t.push(`encircle`); + } + t.push(`${his2} ${subSlave.nipples} nipple.`); + seX(subSlave, "oral", slave, "oral"); + seX(subSlave, "mammary", V.PC, "penetrative"); + slave.trust += 5; + + App.Events.addParagraph(frag, t); + return frag; + } + + function substitute() { + const frag = document.createDocumentFragment(); + t = []; + + t.push(`You order ${slave.slaveName} to put the dick back where it belongs and come out from under there. There's a lewd noise as ${he} spits out ${subSlave.slaveName}'s penis.`, Spoken(slave, `"Yes, ${getWrittenTitle(slave)}!"`), `${he} ${say}s automatically, knowing your voice, and ${he} scrabbles to obey, stuffing poor moaning ${subSlave.slaveName}'s member back in its proper cum receptacle before hurriedly scooting out from under,`); + if (slave.clitSetting === "cumslut") { // is cumslut missing from slavestate clitSetting or is this incorrect?? + t.push(`gasping with the stimulation applied by ${his} smart piercing, which is encouraging ${him} to suck dick.`); + } else if (slave.belly >= 10000) { + t.push(`a struggle considering just how big ${his}`); + if (slave.bellyPreg >= 8000) { + t.push(`pregnancy`); + } else { + t.push(`belly`); + } + t.push(`is.`); + } else if (slave.dick > 4) { + t.push(`${his} own`); + if (canAchieveErection(slave)) { + t.push(`monster erection waving`); + } else { + t.push(`monstrously limp dick flopping`); + } + t.push(`around comedically as ${he} does.`); + } else if (slave.boobs > 4000) { + t.push(`a process made much more involved and a little funny by ${slave.slaveName}'s own gargantuan tits.`); + } else { + t.push(`${his} bare buttocks smacking painfully against the floor in ${his} haste.`); + } + t.push(`${He} starts to scramble up to a standing position, but ${he} only gets halfway before ${he} notices that there's`); + if (canAchieveErection(subSlave)) { + t.push(`another`); + } else { + t.push("a"); + } + t.push(`massively erect dick`); + if (canSee(slave)) { + t.push(`pointed`); + } else { + t.push(`poking`); + } + t.push(`at ${his} face. Yours.`); + App.Events.addParagraph(frag, t); + t = []; + t.push(`${slave.slaveName}`); + if (slave.trust > 20) { + t.push(`wasn't really worried that ${he} was in trouble; your tone was not angry and ${he} wasn't breaking the rules. Even so, ${he} giggles`); + } else { + t.push(`was worried that ${he} was in trouble; even through your tone wasn't angry, and even though ${he} wasn't breaking the rules, ${he}'s afraid of you. So ${he} giggles with relief`); + } + t.push(`when ${he}`); + if (canSee(slave)) { + t.push(`sees`); + } else { + t.push(`realizes`); + } + t.push(`that ${he}'s going to get ${his} drink of cum, just from a different source.`); + if (slave.trust > 20) { + t.push(`${He} runs ${his}`); + if (slave.tonguePiercing) { + t.push(`pierced`); + } else { + t.push(`pink`); + } + t.push(`tongue over ${his} lips hungrily, staring meaningfully at the cockhead`); + if (V.showInches === 2) { + t.push(`inches`); + } else { + t.push(`centimeters`); + } + t.push(`in front of ${his} face.`, Spoken(slave, `"I'm so happy, ${getWrittenTitle(slave)},"`), `${he} purrs.`, Spoken(slave, `"You have the best cum. ${V.PC.balls >= 10 ? "I'll never go hungry with you either." : "."}"`), `${He}'s still right up against ${subSlave.slaveName}, and ${he} reaches back to pat ${subSlave.slaveName}'s butt reassuringly.`); + t.push(Spoken(slave, `"Yours is nice, but there's only one ${getWrittenTitle(slave)}."`), `Then ${he} starts sucking your dick.`); + } else { + t.push(Spoken(slave, `"Thank you, ${getWrittenTitle(slave)},"`), `${he} ${say}s dutifully.`, Spoken(slave, `"Your, um, your cum is the best.${V.PC.balls >= 10 ? " I'll never go hungry with you either." : ""}"`)); + t.push(`Momentarily unsure of ${himself}, ${he} blushes, and decides to take refuge in dicksucking.`); + } + if (slave.skill.oral > 60) { + t.push(`${He}'s a well-trained cocksucker, and as the suction and ${his} active tongue go to work, ${he} reaches up and`); + if (V.PC.vagina !== -1) { + t.push(`begins to lavish attention on your pussy with both hands. ${He} fingers your labia lovingly before starting to dip ${his} fingers inside you in time with ${his} oral strokes at your shaft.`); + } else { + t.push(`cups your`); + if (V.PC.balls >= 30) { + t.push(`monstrous balls`); + } else if (V.PC.balls >= 14) { + t.push(`hand-filling`); + } else if (V.PC.balls >= 9) { + t.push(`huge`); + } else if (V.PC.balls >= 5) { + t.push(`big`); + } + t.push(`balls lovingly. A testicular massage during a blowjob might not actually increase ejaculation volume, but the care ${he} shows suggests that the hungry slut might believe it does.`); + } + } else { + t.push(`${He}'s not an outstanding oral slave, so after ${he}'s working away reasonably well, you take ${his} head in both hands and fuck ${his} face. Not cruelly, but with comprehensive dominance. ${He} can breathe, but ${he} has to concentrate to do so, letting you rape ${his} throat like a good little bitch.`); + } + t.push(`When you cum, you thrust as far inside as you can manage and`); + if (V.PC.balls >= 30) { + t.push(`pump oversized load after oversized load down ${his} throat, steadily swelling ${his} stomach with your jizz.`); + } else if (V.PC.balls >= 14) { + t.push(`pump your massive load into ${him} until ${he} gags.`); + } else if (V.PC.balls >= 9) { + t.push(`unload your massive cumshot deep into ${him}.`); + } else { + t.push(`shoot your load deep into ${him}.`); + } + t.push(`Denied the`); + if (canTaste(slave)) { + t.push(`taste`); + } else { + t.push(`feeling`); + } + t.push(`of most of your semen, deposited far back and beyond ${his}`); + if (canTaste(slave)) { + t.push(`taste buds,`); + } else { + t.push(`tongue,`); + } + t.push(`${he} forms a tight seal around your shaft as ${he} pulls ${his} head back and off your cock, sucking the residual drops out of you and onto ${his} tongue. ${He} swallows, gives a`); + if (slave.trust > 20) { + t.push(`contented`); + } else { + t.push(`relieved`); + } + t.push(`sigh, and looks up at you <span class="hotpink">devotedly.</span>`); + seX(slave, "oral", V.PC, "penetrative"); + slave.devotion += 5; + App.Events.addParagraph(frag, t); + return frag; + } + } +}; diff --git a/src/events/randomEvent.js b/src/events/randomEvent.js index 4aa2d6f3cbf0757bce63c7f1896ddb2fac8ee34b..c3d149541d4687b39585133b05dc77e0f36518d7 100644 --- a/src/events/randomEvent.js +++ b/src/events/randomEvent.js @@ -50,6 +50,7 @@ App.Events.getIndividualEvents = function() { new App.Events.RETSAnalCowgirl(), new App.Events.RETSBoobCollision(), + new App.Events.RETSCockmilkInterception(), new App.Events.RETSDatePlease(), new App.Events.RETSFucktoyPrefersRelative(), new App.Events.RETSIfYouEnjoyIt(), diff --git a/src/js/eventSelectionJS.js b/src/js/eventSelectionJS.js index a52a22e79f595d09394da08207ee0d7e09e9e210..a835ec7dd47fe1e6e86b4e8f6721e88a64c5af8c 100644 --- a/src/js/eventSelectionJS.js +++ b/src/js/eventSelectionJS.js @@ -6,14 +6,6 @@ globalThis.generateRandomEventPool = function(eventSlave) { if (eventSlave.fetish !== "mindbroken") { if (hasAnyArms(eventSlave) && hasAnyLegs(eventSlave)) { if (canTalk(eventSlave)) { - if (V.RECockmilkInterceptionIDs.length > 1 || (V.RECockmilkInterceptionIDs.length === 1 && eventSlave.ID !== V.RECockmilkInterceptionIDs[0])) { - if (eventSlave.devotion > 20) { - if (eventSlave.dietCum > 0 || (eventSlave.fetishKnown && eventSlave.fetish === "cumslut")) { - V.RETSevent.push("cockmilk interception"); - } - } - } - if (V.seeIncest === 1) { if (eventSlave.devotion > 20) { if (eventSlave.sexualQuirk === "perverted" || eventSlave.energy > 80) { diff --git a/src/uncategorized/RETS.tw b/src/uncategorized/RETS.tw index 4360b0a2d140c8cda4176f1d7c487dc78c335bdb..7278d2d7772a2367af5d3e256d8d328aac0a0279 100644 --- a/src/uncategorized/RETS.tw +++ b/src/uncategorized/RETS.tw @@ -43,18 +43,6 @@ <<switch $RETSevent>> -<<case "cockmilk interception">> - -<<if Array.isArray($RECockmilkInterceptionIDs)>> - <<set $RECockmilkInterceptionIDs = $RECockmilkInterceptionIDs.shuffle()>> - <<for _i = 0; _i < $RECockmilkInterceptionIDs.length; _i++>> - <<if $eventSlave.ID != $RECockmilkInterceptionIDs[_i]>> - <<set $subSlave = $slaves[$slaveIndices[$RECockmilkInterceptionIDs[_i]]]>> - <<break>> - <</if>> - <</for>> -<</if>> - <<case "incestuous nursing">> <<set $subSlave = randomAvailableDaughter($activeSlave)>> @@ -72,7 +60,7 @@ <<set _clothesTemp2 = $subSlave.clothes>> <<switch $RETSevent>> /*Some events start with the slave naked (any event that starts with the daily inspection, for example). Here we switch their clothing just for the image to load, then switch it back quickly so the player's choice is not messed up.*/ - <<case "cockmilk interception" "incestuous nursing">> + <<case "incestuous nursing">> <<set $activeSlave.clothes = "no clothing">> <<set $subSlave.clothes = "no clothing">> <</switch>> @@ -103,56 +91,6 @@ <<switch $RETSevent>> -<<case "cockmilk interception">> - -<<run seX($subSlave, "oral", $activeSlave, "oral")>> -Early in the morning, you run across $subSlave.slaveName using one of the penthouse milking machines. This isn't surprising; -<<if $subSlave.lactation == 0>> - _he2's not lactating, but _he2's a good semen producer and when _he2 wakes up, _he2's usually very ready to have one of the machines drain _his2 balls for _him2. -<<else>> - <<if $subSlave.preg > $subSlave.pregData.normalBirth/1.33>> - it's late in _his2 pregnancy and _he2 wakes up every day with _his2 $subSlave.boobShape breasts sore, painfully swollen with rich, nutritious milk. - <<elseif $subSlave.preg > $subSlave.pregData.normalBirth/2>> - _he2's pregnant and _he2 wakes up every day with _his2 $subSlave.boobShape breasts sore and swollen with rich, nutritious milk. - <<elseif $subSlave.lactation > 1>> - the tiny little slow-release implant in each of _his2 breasts is merciless. It keeps _his2 mammary glands in a permanent state of barely-safe hyperproduction, and _he2 wakes up every day with _his2 terribly sore breasts spontaneously dribbling milk. - <<else>> - _his2 lactation is natural, but it's still enough that _he2 wakes up most days with full, sore breasts. - <</if>> - But _his2 udders aren't the only thing producing creamy liquid. The machine is applying generous prostate stimulation to drain _his2 balls, too. - <<set $subSlave.lactationDuration = 2>> - <<set $subSlave.boobs -= $subSlave.boobsMilk, $subSlave.boobsMilk = 0>> -<</if>> -But the cum is about to be intercepted. There's another slave lying on the floor under $subSlave.slaveName, intertwined with the machine<<if $subSlave.lactation == 0>>; its cum receptacle lying unused<<else>>. The nipple milkers are attached to each of the human cow's nipples, and they're pumping away industriously, keeping the clear lines running away from each udder white with cream. On the other hand, the cum receptacle is lying unused<</if>>. -<br><br> -You can't see much of the slave under $subSlave.slaveName, since $he's intimately intertwined with the machine and with $subSlave.slaveName, but based on $his -<<if $activeSlave.dick > 0>><<if canAchieveErection($activeSlave) && !($activeSlave.chastityPenis)>>stiff prick<<elseif ($activeSlave.chastityPenis == 1)>>uncomfortably filled chastity cage<<else>>pathetically soft but precum-tipped dick<</if>>,<</if>> -<<if $activeSlave.vagina > 0>><<if $activeSlave.labia > 0>>generous pussylips<<elseif $activeSlave.clit > 0>>visibly stiff clit<<else>>obviously aroused womanhood<</if>>,<</if>> -<<if $activeSlave.dick == 0>><<if $activeSlave.vagina == -1>><<if $activeSlave.scrotum > 0>>lonely ballsack<<else>>smoothly featureless groin<</if>>,<</if>><</if>> -<<if $activeSlave.weight > 100>>fat<<elseif $activeSlave.muscles > 30>>muscular<<elseif $activeSlave.weight > 30>>chubby<<elseif $activeSlave.muscles > 10>>toned<<elseif $activeSlave.weight > 10>>nice soft<<elseif $activeSlave.weight >= -10>>slender<<else>>skinny<</if>> legs, and $activeSlave.skin skin, it's <<= App.UI.slaveDescriptionDialog($activeSlave)>>. $He's allowed access to cockmilk and $he's getting it straight from the source. $subSlave.slaveName -<<if $subSlave.dick < 3>> - has a <<if $subSlave.dick < 2>>pathetically tiny penis<<else>>rather modest cock<</if>>, so $activeSlave.slaveName has $his head buried between $subSlave.slaveName's quivering thighs. $He isn't sucking $subSlave.slaveName's dick so much as $he's nursing at it, keeping it entirely within $his mouth and applying powerful suction. -<<elseif $subSlave.dick > 8>> - has an inhumanly monstrous penis that the poor slave's cardiovascular system couldn't possibly bring erect. $activeSlave.slaveName has gotten its huge soft head into $his mouth, and is sucking lustily. -<<elseif !canAchieveErection($subSlave)>> - can't achieve an erection, but $activeSlave.slaveName is sucking _his2 dick anyway. $He's got $his mouth full of it, and to go by the flexing of $his cheeks, is applying $his tongue with gusto. -<<else>> - is rock hard, of course, and $activeSlave.slaveName is giving _him2 a lusty blowjob, stroking _his2 head busily back and forth. -<</if>> -The milking machine cum receptacle is designed to be warm, wet, and stimulating, but $subSlave.slaveName is getting much better attention. $activeSlave.slaveName is omitting nothing that could help $him extract every last drop of cum. $He's sucking, and the machine is applying direct stimulation to $subSlave.slaveName's <<if $subSlave.prostate>>prostate<<else>>insides<</if>> with <<if $subSlave.anus > 2>>a big vibrating dildo that comfortably fills _his2 experienced anus<<elseif $subSlave.anus > 2>>a vibrating dildo that _his2 soft asshole can take comfortably<<else>>a little vibrator that fits comfortably up _his2 tight ass<</if>>, -<<if $subSlave.dick < 3>> - giving $activeSlave.slaveName limited options to further stimulate the poorly-endowed slave. $He's using one hand to stroke the soft, precum-slick skin below $subSlave.slaveName's anus. -<<elseif $subSlave.dick > 8>> - so $activeSlave.slaveName has one hand wrapped around the gigantic soft python of flesh between $subSlave.slaveName's legs, and is squeezing it rhythmically from its base up to where its head enters $his wet lips. -<<elseif !canAchieveErection($subSlave)>> - so, since $activeSlave.slaveName can't jack off a soft shaft, $he's using one hand to stroke the soft, precum-slick skin below $subSlave.slaveName's anus. -<<else>> - so $he uses one hand to stroke the hard shaft outside $his wet lips, using $his saliva and $subSlave.slaveName's precum to perform a messy handjob. -<</if>> -$His other hand is <<if $subSlave.scrotum == 0>>massaging the place where $subSlave.slaveName's scrotum used to be<<elseif $subSlave.scrotum < $activeSlave.balls>>gently massaging $subSlave.slaveName's overfilled scrotum, which _his2 balls fill to the point of discomfort<<elseif $subSlave.scrotum > $activeSlave.balls+1>>playing with $subSlave.slaveName's loose scrotum<<else>>massaging $subSlave.slaveName's balls<</if>>. -<br><br> -$subSlave.slaveName is getting _his2 dick sucked<<if $subSlave.lactation == 0>> and _his2 ass fucked<<else>>, _his2 ass fucked, and _his2 boobs milked<</if>>. _He2's so overstimulated that _he2's shaking; a tremendous orgasm is building within _him2. _He2 <<if $subSlave.voice != 0>>groans<<else>>makes a harsh rasping noise<</if>>, which $activeSlave.slaveName <<if canHear($activeSlave)>>hears<<else>>can feel<</if>>, and $subSlave.slaveName tenses, which $activeSlave.slaveName feels in $his mouth and hands. Smiling around the penis in $his mouth, pleased by the approach of a gush of delectable semen, $activeSlave.slaveName hums encouragement into $subSlave.slaveName's <<if canAchieveErection($subSlave)>>rock-hard<<else>>soft<</if>> dickhead<<if $subSlave.scrotum>> and visibly tickles $subSlave.slaveName's balls with $his naughty pink tongue<</if>>. - <<case "incestuous nursing">> <<set _meal = either("breakfast", "lunch", "dinner")>> @@ -238,106 +176,6 @@ $he adds impishly. <<if canHear($subSlave)>>Hearing this<<else>>Realizing your p <span id="result"> <<switch $RETSevent>> -<<case "cockmilk interception">> - -<<link "Step in for the stimulator">> - <<replace "#result">> - <<run seX($subSlave, "anal", $PC, "pentrative")>> - <<if canImpreg($subSlave, $PC)>> - <<= knockMeUp($subSlave, 5, 1, -1, 1)>> - <</if>> - You command the machine to cease stimulating<<if $subSlave.anus < 3 || canDoVaginal($subSlave)>> and leave $subSlave.slaveName's ass alone for now. _He2<<else>>, but leave its dildo where it is, for now. $subSlave.slaveName<</if>> <<if $subSlave.voice != 0>>moans with frustration<<else>>wriggles uncomfortably<</if>>, incipient orgasm ruined. Below _him2, $activeSlave.slaveName makes a whining noise past $his mouth full of dick, not understanding what's happened. $He makes to start getting out from under $subSlave.slaveName and the machine, to investigate, but before $he can even put the dick down, $he <<if canSee($activeSlave)>>sees a pair of <<if $PC.title>>strong<<else>>feminine<</if>> hands reach around either side of $subSlave.slaveName's torso and seize hold of _his2 <<else>>hears a pair of hands seize hold of $subSlave.slaveName's <</if>><<if $subSlave.lactation == 0>>milkless breasts<<else>>milk-filled udders<</if>>. $activeSlave.slaveName can't see<<if canSee($activeSlave)>> who it is<</if>>, but $he knows it's you. "Mhhf, hi, <<Master>>," $he manages, letting $subSlave.slaveName's <<if canAchieveErection($subSlave)>>hard cockhead spring free of $his mouth with a pop<<else>>soft dick fall out of $his mouth with a wet noise<</if>>. "Should I, um, get out from under here?" - <br><br> - You order $him to stay where $he is, and go back to sucking dick. "Ye<<s>>, <<Master>>," $he giggles, and then shuts up as $his mouth is occupied once more. $subSlave.slaveName, who's been obediently still under you as _he2 waits for your pleasure, stiffens as _he2 feels _his2 dickhead surrounded by warm wetness once more. _He2's got more coming. - <<if canDoVaginal($subSlave)>> - _He2's got a cock and two fuckholes, so you instruct the machine to go back to stimulating, and adroitly lift _his2 hips a little so that when the machine reinserts its stimulator, it penetrates _his2 vagina and fucks that instead. Then you insert your <<if $PC.dick>>cock<<else>>strap-on<</if>> into _his2 conveniently pre-fucked ass and start pounding<<if $PC.dick>>, feeling the vibration from inside _his2 pussy on your dick through _his2 insides<</if>>. - <<elseif $subSlave.anus > 2>> - _His2 ass is so relaxed that your <<if $PC.dick>>cock<<else>>strap-on<</if>> slides in alongside the stimulator without much trouble. Once you're inserted, you instruct the machine to start stimulating again, and mercilessly double penetrate _his2 ass<<if $PC.dick>>, enjoying the vibration against your cock as it slides against the stimulator<</if>>. - <<else>> - The stimulator is effective enough, but it can't match <<if $PC.dick>>a real cock<<else>>a strap-on wielded by a consummate master of the art<</if>>, which is of course what $subSlave.slaveName has up _his2 ass in short order. - <</if>> - _He2 was on the edge of orgasm when you stepped in, and this is just too much. _He2 climaxes with indecent speed, involuntarily humping against the machine, shooting rope after rope of _his2 cum into $activeSlave.slaveName's mouth<<if $PC.dick>> and spasming against your invading penis wonderfully<</if>>. You hold the quivering $subSlave.slaveName down and keep hammering _him2 until you're certain _he2's fed $activeSlave.slaveName every drop _he2 has. Then you let _him2 up. - <br><br> - As $subSlave.slaveName stumbles off, looking @@.hotpink;rather submissive,@@ $activeSlave.slaveName scoots out from underneath the machine. "<<Master>>," $he <<say>>s @@.hotpink;devotedly,@@ "that <<if canTaste($activeSlave)>>ta<<s>>ted<<else>>wa<<s>><</if>> incredible. It <<if canTaste($activeSlave)>>ta<<s>>te<<s>><<else>>feel<<s>><</if>> <<s>>o much better when you fuck it out of _him2!" $He rubs $his<<if $activeSlave.belly >= 5000>> rounded<</if>> tummy with exaggerated satisfaction, and then realizes that you weren't fucking for nearly long enough to have gotten off yourself. - <<if $activeSlave.lactation || $activeSlave.balls>> - "I need to be milked now, too," $he <<say>>s flirtily, and turns to mount the machine in turn. "Plea<<s>>e, plea<<s>>e do me too!" The machine hasn't had a turn first, this time, so $he's much tighter<<if $PC.dick>>, and when $he's done being milked, $he's got a load of your cum inside $him<</if>>. - <<run seX($subSlave, "anal", $PC, "penetrative")>> - <<if canImpreg($activeSlave, $PC)>> - <<= knockMeUp($activeSlave, 5, 1, -1, 1)>> - <</if>> - <<if $activeSlave.lactation > 0>> - <<set $activeSlave.lactationDuration = 2>> - <<set $activeSlave.boobs -= $activeSlave.boobsMilk, $activeSlave.boobsMilk = 0>> - <</if>> - <<else>> - "Plea<<s>>e, plea<<s>>e let me drink your<<s>>, too," $he moans, and gets down on $his knees, opening $his mouth and sticking out $his tongue, begging for <<if $PC.dick>>your cock. You stick it straight down $his throat, and soon add a second load of cum<<else>>you to mount $his face. You do, and soon add a generous helping of femcum<</if>> to $his breakfast. - <<run seX($activeSlave, "oral", $PC, "penetrative")>> - <</if>> - <<set $activeSlave.devotion += 3, $subSlave.devotion += 3>> - <<set $slaves[$slaveIndices[$subSlave.ID]] = $subSlave>> - <</replace>> -<</link>> -<<if $subSlave.lactation>> - <br><<link "Make sure the cumslut gets a balanced diet">> - <<replace "#result">> - You stand by and watch the arresting scene until $subSlave.slaveName cums. The milking stations are designed to be pleasurable, so they're calibrated to drain <<print _girl2>>s' balls about as fast as they drain their udders, allowing them to enjoy both kinds of relief for the whole session. But $activeSlave.slaveName has falsified that for once; - <<if $activeSlave.skill.oral > 95>> - the inside of $his wet, hot mouth is really a delightful place for a penis, and $he puts the machine's dick receptacle to shame. $subSlave.slaveName - <<elseif $activeSlave.skill.oral > 60>> - $he's a skilled cocksucker, and $his wet, hot mouth is a much more stimulating place for a penis than the machine's dick receptacle. $subSlave.slaveName - <<else>> - $he's no oral master, but $his mouth is wet and hot, and $subSlave.slaveName clearly likes it more than machine's dick receptacle. _He2 - <</if>> - can feel that _his2 breasts aren't nearly empty of milk yet, and of course the milkers are tugging at _his2 teats as industriously as ever, so _he2 relaxes luxuriantly as $activeSlave.slaveName starts to climb out from under _him2. - <br><br> - You announce your presence by ordering $activeSlave.slaveName to stay where $he is. Startled, $he sticks $his head out from under $subSlave.slaveName and chirps "Ye<<s>>, <<Master>>!" and scoots back under, waiting to see what you're planning. You straddle $subSlave.slaveName's face; as <<if canSee($subSlave)>>_his2 vision is filled by your <<if $PC.dick>>erect dick<<else>>wet pussy<</if>><<elseif canSmell($subSlave)>>_his2 nose samples the scent of <<if $PC.dick>>the precum budding at the tip of your erect dick<<else>>your wet pussy<</if>><<else>>_his2 face is warmed by the heat from your <<if $PC.dick>>hard cock<<else>>wet cunt<</if>><</if>>, _he2 opens _his2 mouth compliantly and <<if $PC.dick>>receives _his2 owner's hot cock, pressed past _his2 lips and down _his2 throat. _He2 starts sucking<<else>>is rewarded with _his2 owner's hot womanhood, pressed against _his2 lips. _He2 starts eating you out<</if>> obediently, until you reach down to _his2 still-jiggling udders and tug one of the milkers loose. $subSlave.slaveName starts with discomfort, moaning uncomfortably into your <<if $PC.dick>>member<<else>>cunt<</if>> before getting back to work. _His2 <<if $subSlave.lactation > 1>>lactation is unnaturally copious<<else>>milk is really flowing<</if>>, and a thin stream of cream squirts out of _him2. It lands on $activeSlave.slaveName's face below, surprising $him. $He splutters comically, but obeys eagerly when you squeeze $subSlave.slaveName's freed boob and order $activeSlave.slaveName to start drinking. After all, you point out, a balanced diet is important. $activeSlave.slaveName @@.mediumaquamarine;giggles complaisantly@@ and reaches for the proffered tit. $subSlave.slaveName is still basking in the afterglow of _his2 orgasm and shudders silently with overstimulation as _he2 feels $activeSlave.slaveName's lips <<if $subSlave.nipples != "fuckable">>latch around<<else>>encircle<</if>> _his2 $subSlave.nipples nipple. - <<run seX($subSlave, "oral", $activeSlave, "oral")>> - <<run seX($subSlave, "mammary", $PC, "penetrative")>> - <<set $activeSlave.trust += 5>> - <<set $slaves[$slaveIndices[$subSlave.ID]] = $subSlave>> - <</replace>> - <</link>> -<</if>> -<<if $PC.dick>> - <br><<link "Substitute your cum">> - <<replace "#result">> - You order $activeSlave.slaveName to put the dick back where it belongs and come out from under there. There's a lewd noise as $he spits out $subSlave.slaveName's penis. "Ye<<s>>, <<Master>>!" $he <<say>>s automatically, knowing your voice, and $he scrabbles to obey, stuffing poor moaning $subSlave.slaveName's member back in its proper cum receptacle before hurriedly scooting out from under, - <<if $activeSlave.clitSetting == "cumslut">>gasping with the stimulation applied by $his smart piercing, which is encouraging $him to suck dick. - <<elseif $activeSlave.belly >= 10000>>a struggle considering just how big $his <<if $activeSlave.bellyPreg >= 8000>>pregnancy<<else>>belly<</if>> is. - <<elseif $activeSlave.dick > 4>>$his own <<if canAchieveErection($activeSlave)>>monster erection waving<<else>>monstrously limp dick flopping<</if>> around comedically as $he does. - <<elseif $activeSlave.boobs > 4000>>a process made much more involved and a little funny by $activeSlave.slaveName's own gargantuan tits. - <<else>>$his bare buttocks smacking painfully against the floor in $his haste.<</if>> - $He starts to scramble up to a standing position, but $he only gets halfway before $he notices that there's a<<if canAchieveErection($subSlave)>>nother<</if>> massively erect dick <<if canSee($activeSlave)>>pointed<<else>>poking<</if>> at $his face. Yours. - <br><br> - $activeSlave.slaveName <<if $activeSlave.trust > 20>>wasn't really worried that $he was in trouble; your tone was not angry and $he wasn't breaking the rules. Even so, $he giggles<<else>>was worried that $he was in trouble; even through your tone wasn't angry, and even though $he wasn't breaking the rules, $he's afraid of you. So $he giggles with relief<</if>> when $he <<if canSee($activeSlave)>>sees<<else>>realizes<</if>> that $he's going to get $his drink of cum, just from a different source. - <<if $activeSlave.trust > 20>> - $He runs $his <<if $activeSlave.tonguePiercing>>pierced<<else>>pink<</if>> tongue over $his lips hungrily, staring meaningfully at the cockhead <<if $showInches == 2>>inches<<else>>centimeters<</if>> in front of $his face. "I'm <<s>>o happy, <<Master>>," $he purrs. "You have the be<<s>>t cum.<<if $PC.balls >= 10>> I'll never go hungry with you either.<</if>>" $He's still right up against $subSlave.slaveName, and $he reaches back to pat $subSlave.slaveName's butt reassuringly. "Your<<s>> is ni<<c>>e, but there'<<s>> only one <<Master>>." Then $he starts sucking your dick. - <<else>> - "Thank you, <<Master>>," $he <<say>>s dutifully. "Your, um, your cum i<<s>> the be<<s>>t.<<if $PC.balls >= 10>> I'll never go hungry with you either.<</if>>" Momentarily unsure of $himself, $he blushes, and decides to take refuge in dicksucking. - <</if>> - <<if $activeSlave.skill.oral > 60>> - $He's a well-trained cocksucker, and as the suction and $his active tongue go to work, $he reaches up and <<if $PC.vagina != -1>>begins to lavish attention on your pussy with both hands. $He fingers your labia lovingly before starting to dip $his fingers inside you in time with $his oral strokes at your shaft.<<else>>cups your<<if $PC.balls >= 30>>monstrous balls<<elseif $PC.balls >= 14>>hand-filling <<elseif $PC.balls >= 9>>huge <<elseif $PC.balls >= 5>>big <</if>>balls lovingly. A testicular massage during a blowjob might not actually increase ejaculation volume, but the care $he shows suggests that the hungry slut might believe it does.<</if>> - <<else>> - $He's not an outstanding oral slave, so after $he's working away reasonably well, you take $his head in both hands and fuck $his face. Not cruelly, but with comprehensive dominance. $He can breathe, but $he has to concentrate to do so, letting you rape $his throat like a good little bitch. - <</if>> - When you cum, you thrust as far inside as you can manage and - <<if $PC.balls >= 30>> - pump oversized load after oversized load down $his throat, steadily swelling $his stomach with your jizz. - <<elseif $PC.balls >= 14>> - pump your massive load into $him until $he gags. - <<elseif $PC.balls >= 9>> - unload your massive cumshot deep into $him. - <<else>> - shoot your load deep into $him. - <</if>> - Denied the <<if canTaste($activeSlave)>>taste<<else>>feeling<</if>> of most of your semen, deposited far back and beyond $his <<if canTaste($activeSlave)>>taste buds<<else>>tongue<</if>>, $he forms a tight seal around your shaft as $he pulls $his head back and off your cock, sucking the residual drops out of you and onto $his tongue. $He swallows, gives a <<if $activeSlave.trust > 20>>contented<<else>>relieved<</if>> sigh, and looks up at you @@.hotpink;devotedly.@@ - <<run seX($activeSlave, "oral", $PC, "penetrative")>> - <<set $activeSlave.devotion += 5>> - <<set $slaves[$slaveIndices[$subSlave.ID]] = $subSlave>> - <</replace>> - <</link>> -<</if>> - <<case "incestuous nursing">> <<link "That looks delicious">> diff --git a/src/uncategorized/randomIndividualEvent.tw b/src/uncategorized/randomIndividualEvent.tw index db0b4db674abd3828500818f3158ce04f846b9e3..fca571696d41b738d6797fa86c10443aa5f48bae 100644 --- a/src/uncategorized/randomIndividualEvent.tw +++ b/src/uncategorized/randomIndividualEvent.tw @@ -26,26 +26,6 @@ /* initialize event lists as arrays [], not objects {} */ <<set $events = [], $RESSevent = [], $RESSTRevent = [], $RETSevent = [], $RECIevent = [], $activeSlave = 0, $legendaryFacility = 0>> - /* SUB CHECKS */ - - <<set $RECockmilkInterceptionIDs = []>> - - <<for $i = 0; $i < $slaves.length; $i++>> - <<if $slaves[$i].fetish != "mindbroken">> - <<if $slaves[$i].assignment == "work in the dairy" || $slaves[$i].assignment == "get milked">> - <<if $slaves[$i].balls>> - <<if $slaves[$i].dick>> - <<if $slaves[$i].vasectomy == 0 && $slaves[$i].ballType == "human">> - <<if canDoAnal($slaves[$i])>> - <<set $RECockmilkInterceptionIDs.push($slaves[$i].ID)>> - <</if>> - <</if>> - <</if>> - <</if>> - <</if>> - <</if>> - <</for>> - <<run generateRandomEventPool($eventSlave)>> /* EVENT RANDOMIZATION */