diff --git a/devTools/types/FC/gameState.d.ts b/devTools/types/FC/gameState.d.ts index 340a3a7585f70b98e14094a0fe92904cae949682..935bf0fe3a89d90458f4803d3ac4dc76b1b12772 100644 --- a/devTools/types/FC/gameState.d.ts +++ b/devTools/types/FC/gameState.d.ts @@ -69,8 +69,6 @@ declare namespace FC { /** @deprecated */ FSNonconformistEvents: string[]; /** @deprecated */ - RETasteTestSubIDs: number[]; - /** @deprecated */ rebelSlaves: string[]; /** @deprecated */ RECockmilkInterceptionIDs: number[]; diff --git a/src/endWeek/nextWeek/resetGlobals.js b/src/endWeek/nextWeek/resetGlobals.js index 000255c8a5333299cd2f431479d8f6ed0c926a41..7fb202b2cbcc29b591712bea129b61d376dc891f 100644 --- a/src/endWeek/nextWeek/resetGlobals.js +++ b/src/endWeek/nextWeek/resetGlobals.js @@ -45,7 +45,6 @@ App.EndWeek.resetGlobals = function() { V.FSNonconformistEvents = []; V.REButtholeCheckinIDs = []; V.recruit = []; - V.RETasteTestSubIDs = []; V.rebelSlaves = []; V.RECockmilkInterceptionIDs = []; V.eligibleSlaves = []; diff --git a/src/events/RETS/reSimpleAssault.js b/src/events/RETS/reSimpleAssault.js index f8cc32856cc839cd4d1654e9b7ab71e5b88e1d64..9df1d133a614b69ce863f00b908a96e08120a5d2 100644 --- a/src/events/RETS/reSimpleAssault.js +++ b/src/events/RETS/reSimpleAssault.js @@ -69,7 +69,7 @@ App.Events.RETSSimpleAssault = class RETSSimpleAssault extends App.Events.BaseEv } else { t.push(`nice little butt flexes cutely`); } - t.push(`as ${he} thrusts. You can't see much of the slave ${vaginal ? `lying on ${his2} back` : "face-down"} underneath ${domSlave.slaveName}, but you recognize ${him2} as `); + t.push(`as ${he} thrusts. You can't see much of the slave ${vaginal ? `lying on ${his2} back` : "face-down"} underneath ${domSlave.slaveName}, but you recognize ${him2} as`); t.push(contextualIntro(domSlave, subSlave, "DOM")); t.push(`by ${his2} sobbing. ${He2}'s struggling a little, but ${domSlave.slaveName} has ${him2} pinned to the floor by ${his2} ${hasBothArms(subSlave) ? "wrists" : "wrist"}, and ${domSlave.slaveName} is quickly raping the resistance out of the ${SlaveTitle(subSlave)}.`); App.Events.addParagraph(node, t); diff --git a/src/events/RETS/reTasteTest.js b/src/events/RETS/reTasteTest.js new file mode 100644 index 0000000000000000000000000000000000000000..51fb6458122d5d2589d9a587f19c483a3e85e4e6 --- /dev/null +++ b/src/events/RETS/reTasteTest.js @@ -0,0 +1,393 @@ +App.Events.RETSTasteTest = class RETSTasteTest extends App.Events.BaseEvent { + eventPrerequisites() { + return [ + ]; + } + + actorPrerequisites() { + return [ + [ // event slave /domslave + s => s.fetish !== "mindbroken", + hasAnyArms, + hasAnyLegs, + canTalk, + canTaste, + s => s.devotion > 20, + s => s.energy > 80, + s => s.rules.living === "luxurious", + ], + [ // and subslave + s => s.fetish !== "mindbroken", + canWalk, + canTalk, + s => s.rules.living === "luxurious", + s => s.devotion >= -20, + assignmentVisible, + s => (canDoAnal(s) && s.anus !== 0), + ] + ]; + } + + execute(node) { + /** @type {Array<App.Entity.SlaveState>} */ + let [eventSlave, subSlave] = this.actors.map(a => getSlave(a)); + const { + He, he, his, him, His + } = getPronouns(eventSlave); + const { + he2, his2, him2, He2 + } = getPronouns(subSlave).appendSuffix("2"); + + V.nextLink = "Next Week"; + + App.Events.drawEventArt(node, [eventSlave, subSlave], "no clothing"); + + + let t = []; + + + t.push(`You look into the part of the kitchens used for slave feeding one morning during a quiet time, finding the area deserted except for`); + t.push(App.UI.DOM.combineNodes(contextualIntro(V.PC, eventSlave, "DOM"), `. ${He}`)); + if (canSee(eventSlave)) { + t.push(`sees you enter`); + } else if (canHear(eventSlave)) { + t.push(`hears you enter`); + } else { + t.push(`feels a light touch on ${his} shoulder`); + } + t.push(`and`); + if (V.cockFeeder === 1) { + t.push(`stops sucking ${his} feeder phallus,`); + } else { + t.push(`puts ${his} cup of liquid slave food down,`); + } + t.push(`but you make a dismissive "go back to what you were doing"`); + if (canSee(eventSlave)) { + t.push(`gesture,`); + } else if (canHear(eventSlave)) { + t.push(`sound,`); + } else { + t.push(`nudge,`); + } + t.push(`and ${he} obediently`); + if (V.cockFeeder === 1) { + t.push(`resumes sucking down`); + } else { + t.push(`goes back to drinking`); + } + t.push(`${his} breakfast. You pull out a tablet and start getting some work done, enjoying the low, human sounds of your chattel going about their business in the rooms all around you.`); + t.push(App.UI.DOM.slaveDescriptionDialog(subSlave)); + t.push(`pads in, looking not quite awake yet. Not noticing you in ${his2} stupor, ${he2}`); + if (V.cockFeeder === 1) { + t.push(`chooses the phallus next to ${contextualIntro(subSlave, eventSlave)}'s and starts to suck too.`); + } else { + t.push(`draws ${his2} ration and heads over towards ${contextualIntro(subSlave, eventSlave)} to drink it next to ${him}.`); + } + t.push(`${He2}'s clearly looking for some companionship this morning, but ${his2} gears visibly turn for a while before ${his2} sleepy head can come up with something to say. Both the slaves are allowed some variety of flavor in their liquid slave food, so ${he2} finally settles on that.`); + t.push(`${Spoken(subSlave, `"What flavor did you choose?"`)} ${he2} asks ${eventSlave.slaveName}.`); + App.Events.addParagraph(node, t); + t = []; + + + if (V.cockFeeder === 1) { + t.push(`${eventSlave.slaveName} pulls ${his} mouth off ${his} feeder with a luscious pop.`); + } else { + t.push(`${eventSlave.slaveName} lowers ${his} cup for a moment.`); + } + if (eventSlave.preg > eventSlave.pregData.normalBirth/2) { + t.push(`${Spoken(subSlave, `"The sour pickle flavor,"`)} ${he} responds, patting ${his} rounded middle. ${Spoken(eventSlave, `"I just can't get enough of it."`)}`); + } else { + t.push(`${Spoken(subSlave, `"The tart fruity kind,"`)} ${he} responds. ${Spoken(eventSlave, `"It's refreshing first thing in the morning."`)}`); + } + App.Events.addParagraph(node, t); + t = []; + + t.push(`"Oh," says ${subSlave.slaveName}. ${Spoken(subSlave, `"Um, can I try some?"`)}`); + App.Events.addParagraph(node, t); + t = []; + + t.push(`${eventSlave.slaveName} smiles and murmurs, "Mm hm." There is a distinct`); + if (canSee(eventSlave)) { + t.push(`glint in ${his} eye.`); + } else { + t.push(`look on ${his} face.`); + } + t.push(`${He}'s got a healthy libido, to put it mildly. Like all slaves, ${subSlave.slaveName} sleeps nude and hasn't gotten dressed yet, and ${eventSlave.slaveName} has`); + if (canSee(eventSlave)) { + t.push(`obviously noticed ${his2}`); + if (subSlave.dick > 4) { + t.push(`enormous cock`); + } else if (subSlave.labia > 1) { + t.push(`remarkable pussylips`); + } else if (subSlave.boobs > 5000) { + t.push(`enormous bare udders`); + } else if (subSlave.lactation > 1) { + t.push(`milky nipples`); + } else if (subSlave.face > 40) { + t.push(`pretty face, nudity,`); + } else if (subSlave.belly >= 5000) { + if (subSlave.bellyPreg >= 5000) { + t.push(`pregnancy, nudity,`); + } else if (subSlave.bellyImplant >= 5000) { + t.push(`big belly, nudity`); + } else { + t.push(`${subSlave.inflationType}-filled belly, nudity`); + } + } else { + t.push(`nudity`); + } + } else { + t.push(`noticed ${his2}`); + if (subSlave.dick > 4) { + t.push(`enormous cock`); + } else if (subSlave.boobs > 5000) { + t.push(`enormous bare udders`); + } else if (subSlave.belly >= 5000) { + if (subSlave.bellyPreg >= 5000) { + t.push(`pregnancy, nudity,`); + } else if (subSlave.bellyImplant >= 5000) { + t.push(`big belly, nudity`); + } else { + t.push(`${subSlave.inflationType}-filled belly, nudity`); + } + } else if (subSlave.lactation > 1) { + t.push(`milky nipples`); + } else { + t.push(`nudity`); + } + } + t.push(`and sleepy willingness to be friendly. ${eventSlave.slaveName}`); + if (V.cockFeeder === 1) { + t.push(`turns to ${his} phallus and sucks it powerfully, drawing`); + } else { + t.push(`raises ${his} cup again and draws`); + } + t.push(`liquid food into ${his} mouth. ${He} turns to ${subSlave.slaveName}.`); + t.push(`"Go ahead," ${he} says carefully, enunciating past ${his} mouthful of fluid, and then purses ${his} lips. ${subSlave.slaveName} is taken aback for a moment, but decides ${he2}'s game and steps in, planting ${his2} lips on ${eventSlave.slaveName}'s.`); + if ((eventSlave.boobs > 3000) && (subSlave.boobs > 3000)) { + t.push(`(Their tits are so huge that ${he2} has to fight to get close enough to kiss.)`); + } else if (eventSlave.boobs > 5000) { + t.push(`(slave.slaveName's tits are so huge that ${he2} has to press hard against them to get close enough to kiss.)`); + } else if (subSlave.boobs > 5000) { + t.push(`(subSlave.slaveName's tits are so huge that ${he2} has to press them hard against slave.slaveName to get close enough to kiss.)`); + } else if ((eventSlave.belly >= 5000) && (subSlave.belly >= 5000)) { + t.push(`(Their bellies are so swollen`); + if ((eventSlave.preg > eventSlave.pregData.normalBirth/8) && (subSlave.preg > subSlave.pregData.normalBirth/8)) { + t.push(`with life`); + } + t.push(`that ${he2} has to fight to get close enough to kiss.)`); + } else if (eventSlave.belly >= 300000) { + t.push(`(${eventSlave.slaveName}'s`); + if (eventSlave.preg > eventSlave.pregData.normalBirth/8) { + t.push(`pregnancy`); + } else { + t.push(`belly`); + } + t.push(`is so massive that ${he2} has to practically climb atop it to get close enough to kiss.)`); + } else if (subSlave.belly >= 300000) { + t.push(`(${subSlave.slaveName}'s`); + if (subSlave.preg > subSlave.pregData.normalBirth/8) { + t.push(`pregnancy`); + } else { + t.push(`belly`); + } + t.push(`is so massive that ${he2} has to practically climb atop it to get close enough to kiss.)`); + } else if (eventSlave.belly >= 10000) { + t.push(`(${eventSlave.slaveName}'s`); + if (eventSlave.preg > eventSlave.pregData.normalBirth/8) { + t.push(`pregnancy`); + } else { + t.push(`belly`); + } + t.push(`is so big that ${he2} has to press hard against it to get close enough to kiss.)`); + } else if (subSlave.belly >= 10000) { + t.push(`(${subSlave.slaveName}'s`); + if (subSlave.preg > subSlave.pregData.normalBirth/8) { + t.push(`pregnancy`); + } else { + t.push(`belly`); + } + t.push(`is so big that ${he2} has to press it firmly against ${eventSlave.slaveName} to get close enough to kiss.)`); + } + t.push(`${He2} stiffens with the lewd feeling of the warm fluid pressing into ${his2} mouth. After a moment ${he2} tries to back off and concentrate on the food, but ${eventSlave.slaveName} is having none of that, and uses ${his} arms to hug ${subSlave.slaveName} close, making out with ${his} catch.`); + if (subSlave.energy > 60) { + t.push(`${subSlave.slaveName}'s own powerful sex drive is waking up, and ${he2} clearly doesn't mind.`); + } else { + t.push(`${subSlave.slaveName} isn't sexually needy enough or awake enough to be as horny as ${eventSlave.slaveName}, but ${he2} goes along willingly enough.`); + } + + + App.Events.addParagraph(node, t); + App.Events.addResponses(node, [ + new App.Events.Result("This belongs on a live feed", feed), + new App.Events.Result("Get involved in the taste testing", involved), + new App.Events.Result("Look, a bare butt", butt), + ]); + + + function feed() { + t = []; + + t.push(`You let them continue kissing, but use your tablet to slave one of the plaza's bigger screens to a feed of their nude makeout session. They have no way of knowing, and progress innocently from deep kissing to open mutual masturbation. This is a common sex act among your slaves: it's quick and clean and lets them achieve release before getting back to their duties. When they've both climaxed, you manipulate the situation again, setting a wallscreen in the kitchen to display a feed of the crowd in the plaza enjoying the feed of the situation in the kitchen.`); + if ((eventSlave.fetish === "humiliation") && (eventSlave.fetishKnown === 1) && (subSlave.fetish === "humiliation") && (subSlave.fetishKnown === 1)) { + t.push(`They both blush crimson at the realization, but the pair of humiliation fetishists <span class="hotpink">live for this</span> and wave at the camera, enjoying the afterglow.`); + eventSlave.devotion += 2; + subSlave.devotion += 2; + } else if ((subSlave.fetish === "humiliation") && (subSlave.fetishKnown === 1)) { + t.push(`${subSlave.slaveName}, a confirmed humiliation slut, <span class="hotpink">lives for this</span> and waves at the camera, enjoying the afterglow.`); + subSlave.devotion += 2; + } else if ((eventSlave.fetish === "humiliation") && (eventSlave.fetishKnown === 1)) { + t.push(`${eventSlave.slaveName}, a confirmed humiliation slut, <span class="hotpink">lives for this</span> and waves at the camera, enjoying the afterglow.`); + eventSlave.devotion += 2; + } else { + t.push(`They blush crimson and both turn back towards each other, desperate to look anywhere but at the sight of the crowd that just watched them jerk each other off.`); + } + t.push(`Such honesty is very tough to fake, and the crowd <span class="green">knows they just saw real pleasure.</span>`); + repX(500, "event", eventSlave); + seX(subSlave, "oral", eventSlave, "oral"); + V.oralTotal += 2; + return t; + } + + function involved() { + const frag = document.createDocumentFragment(); + t = []; + + t.push(`You move in. ${eventSlave.slaveName}`); + if (canSee(eventSlave)) { + t.push(`catches sight of`); + } else { + t.push(`notices`); + } + t.push(`your approach, and you see the corners of ${his} mouth quirk upward. ${He} breaks the lip lock and says breathily,`); + t.push(Spoken(eventSlave, `"Hey ${subSlave.slaveName}, I think there's something else you should taste test."`)); + + App.Events.addParagraph(frag, t); + t = []; + t.push(`"Whaa-" the slave starts to ask warily before ${eventSlave.slaveName} pushes ${him2} to ${his2} knees, spinning ${him2} around as ${he} does so. This brings ${subSlave.slaveName} face to face with your`); + if (V.PC.dick !== 0) { + t.push(`stiff prick, a bead of precum already present at its tip.`); + } else { + t.push(`wet cunt, a bead of pussyjuice already trailing down your inner thigh.`); + } + t.push(`${Spoken(subSlave, `"Oh, um, hi ${getWrittenTitle(subSlave)},"`)} ${he2} stammers, and then starts to`); + if (V.PC.dick !== 0 && V.PC.vagina !== -1) { + t.push(`suck your dick and eat your pussy.`); + } else if (V.PC.dick !== 0) { + t.push(`suck your dick.`); + } else { + t.push(`eat your pussy.`); + } + t.push(`This leaves poor ${eventSlave.slaveName} without anyone to make out with, so you step in there, grabbing ${him} and pulling the giggling slave in to kiss ${him} deeply. ${His} mouth is indeed a bit`); + if (eventSlave.preg > eventSlave.pregData.normalBirth/2) { + t.push(`sour.`); + } else { + t.push(`tart.`); + } + t.push(`${He} moans into your mouth as ${he} feels ${his} nipples press against`); + if (V.PC.boobs >= 300) { + t.push(`yours,`); + } else { + t.push(`your hard chest,`); + } + t.push(`and then again as your tongue invades ${him}. When you`); + if (V.PC.dick !== 0) { + t.push(`fill ${subSlave.slaveName}'s mouth with cum,`); + } else { + t.push(`climax wetly against ${subSlave.slaveName}'s mouth,`); + } + t.push(`you pull away slightly, letting the slave on ${his2} knees below you gasp ${Spoken(subSlave, `"You taste great, ${getWrittenTitle(subSlave)}!"`)} before you spin ${him2} around in turn so ${he2} can give ${eventSlave.slaveName} ${his} own allotment of oral sex. You leave them to it. They <span class="mediumaquamarine">trust you a bit more</span> after such a lighthearted little escapade.`); + eventSlave.trust += 2; + subSlave.trust += 2; + seX(subSlave, "oral", eventSlave, "penetrative", 2); + + App.Events.addParagraph(frag, t); + return frag; + } + + function butt() { + t = []; + + t.push(`You move in, looking intently at ${subSlave.slaveName}'s bare, vulnerable butt. ${eventSlave.slaveName}`); + if (canSee(eventSlave)) { + t.push(`catches sight of your approach, and then follows the line of your gaze,`); + } else { + t.push(`notices your approach,`); + } + t.push(`the realization of what your intent likely quickly dawns on ${him}. You see the corners of ${his} mouth quirk upward with horny maliciousness. ${He} leans back against the edge of the kitchen counter, pulling ${subSlave.slaveName} with ${him}, and then reaches down and`); + if (subSlave.butt > 6) { + t.push(`grabs handfuls of ${subSlave.slaveName}'s massive ass,`); + } else if (subSlave.butt > 3) { + t.push(`seizes ${subSlave.slaveName}'s big buttocks,`); + } else { + t.push(`grabs ${subSlave.slaveName}'s cute butt,`); + } + t.push(`pulling ${him2} upward. ${subSlave.slaveName} thinks ${he2} gets the idea, and hops up, wrapping ${his2} legs around ${eventSlave.slaveName}'s`); + if (eventSlave.belly >= 5000) { + if (eventSlave.bellyPreg >= 2000) { + t.push(`gravid`); + } else { + t.push(`rounded`); + } + t.push(`middle`); + } else { + t.push(`waist`); + } + t.push(`and ${his2} arms around ${eventSlave.slaveName}'s`); + if (subSlave.belly >= 5000) { + t.push(`shoulders, pushing their `); + if (eventSlave.bellyPreg >= 2000) { + t.push(`pregnancies`); + } else { + t.push(`bellies`); + } + t.push(`together`); + } else { + t.push("shoulders."); + } + t.push(`${eventSlave.slaveName}`); + if (subSlave.butt > 6) { + t.push(`hauls ${subSlave.slaveName}'s huge buttocks apart to reveal the`); + } else if (subSlave.butt > 3) { + t.push(`pulls ${subSlave.slaveName}'s healthy asscheeks apart to reveal the`); + } else { + t.push(`spreads ${subSlave.slaveName}'s buttocks to show off the`); + } + if (subSlave.anus > 2) { + t.push(`lewd slit`); + } else if (subSlave.anus > 1) { + t.push(`inviting anus`); + } else { + t.push(`pretty rosebud`); + } + t.push(`between them. ${subSlave.slaveName} has only a brief moment to wonder why ${his2} butt is being spread this way before ${he2} feels`); + if (V.PC.dick !== 0) { + t.push(`your cockhead`); + } else if (subSlave.anus > 2) { + t.push(`your hand, formed into a beak shape`); + } else if (subSlave.anus > 1) { + t.push(`three fingers`); + } else { + t.push(`two fingers`); + } + t.push(`press against and then inside ${his2} butthole. ${He2} tries to turn away from ${eventSlave.slaveName} and greet you properly, but ${eventSlave.slaveName} won't let ${him2}, so ${he2} tries to mumble a greeting into ${eventSlave.slaveName}'s mouth and then settles for a spastic wave of one hand. This is an alluringly awkward process made desperate by the distracting feeling of you fucking ${his2} ass. You could have done something more inventive with the situation, but the feeling of`); + if (V.PC.dick !== 0) { + t.push(`an anal sphincter around the base of your dick`); + } else { + t.push(`finger fucking a compliant slave's submissive asspussy while you look after yourself with your other hand`); + } + t.push(`never gets old. Why complicate things? An hour later you leave your fucktoys stumbling tiredly towards the shower, <span class="hotpink">sexually satiated</span> and anally dominated.`); + eventSlave.trust += 2; + subSlave.trust += 2; + seX(subSlave, "anal", V.PC, "penetrative", 2); + seX(eventSlave, "anal", V.PC, "penetrative", 2); + if (canImpreg(eventSlave, V.PC)) { + t.push(knockMeUp(eventSlave, 5, 1, -1, true)); + } + if (canImpreg(subSlave, V.PC)) { + t.push(knockMeUp(subSlave, 5, 1, -1, true)); + } + return t; + } + } +}; diff --git a/src/events/randomEvent.js b/src/events/randomEvent.js index 21b7af47d9fe28065bc0b1665015d6f128820ffd..4aa2d6f3cbf0757bce63c7f1896ddb2fac8ee34b 100644 --- a/src/events/randomEvent.js +++ b/src/events/randomEvent.js @@ -59,6 +59,7 @@ App.Events.getIndividualEvents = function() { new App.Events.RETSShowerForce(), new App.Events.RETSSiblingTussle(), new App.Events.RETSSimpleAssault(), + new App.Events.RETSTasteTest(), new App.Events.RETSTopExhaustion(), new App.Events.RENickname().setType("RIE"), diff --git a/src/js/eventSelectionJS.js b/src/js/eventSelectionJS.js index 7349b7f98371ac83ff47e784c4624bda6cc87819..a52a22e79f595d09394da08207ee0d7e09e9e210 100644 --- a/src/js/eventSelectionJS.js +++ b/src/js/eventSelectionJS.js @@ -143,18 +143,6 @@ globalThis.generateRandomEventPool = function(eventSlave) { } } - if (V.RETasteTestSubIDs.length > 1) { - if (eventSlave.rules.living === "luxurious") { - if (eventSlave.devotion > 20) { - if (eventSlave.energy > 80) { - if (canTaste(eventSlave)) { - V.RETSevent.push("taste test"); - } - } - } - } - } - if (eventSlave.assignment !== Job.QUARTER) { if (V.modRequestsAllowed > 0) { if (eventSlave.trust > 50) { diff --git a/src/uncategorized/RETS.tw b/src/uncategorized/RETS.tw index c610193e432b4d99ac44aabe6334ec98bd459fcf..4360b0a2d140c8cda4176f1d7c487dc78c335bdb 100644 --- a/src/uncategorized/RETS.tw +++ b/src/uncategorized/RETS.tw @@ -43,18 +43,6 @@ <<switch $RETSevent>> -<<case "taste test">> - -<<if Array.isArray($RETasteTestSubIDs)>> - <<set $RETasteTestSubIDs = $RETasteTestSubIDs.shuffle()>> - <<for $i = 0; $i < $RETasteTestSubIDs.length; $i++>> - <<if $eventSlave.ID != $RETasteTestSubIDs[$i]>> - <<set $subSlave = $slaves[$slaveIndices[$RETasteTestSubIDs[$i]]]>> - <<break>> - <</if>> - <</for>> -<</if>> - <<case "cockmilk interception">> <<if Array.isArray($RECockmilkInterceptionIDs)>> @@ -84,7 +72,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" "taste test">> + <<case "cockmilk interception" "incestuous nursing">> <<set $activeSlave.clothes = "no clothing">> <<set $subSlave.clothes = "no clothing">> <</switch>> @@ -115,130 +103,6 @@ <<switch $RETSevent>> -<<case "taste test">> - -You look into the part of the kitchens used for slave feeding one morning during a quiet time, finding the area deserted except for <<= App.UI.slaveDescriptionDialog($activeSlave)>>. $He -<<if canSee($activeSlave)>> - sees you enter -<<elseif canHear($activeSlave)>> - hears you enter -<<else>> - feels a light touch on $his shoulder -<</if>> - and -<<if $cockFeeder == 1>> - stops sucking $his feeder phallus, -<<else>> - puts $his cup of liquid slave food down, -<</if>> -but you make a dismissive "go back to what you were doing" <<if canSee($activeSlave)>>gesture<<elseif canHear($activeSlave)>>sound<<else>>nudge<</if>>, and $he obediently -<<if $cockFeeder == 1>> - resumes sucking down -<<else>> - goes back to drinking -<</if>> -$his breakfast. You pull out a tablet and start getting some work done, enjoying the low, human sounds of your chattel going about their business in the rooms all around you. <<= capFirstChar(contextualIntro($activeSlave, $subSlave, true))>> pads in, looking not quite awake yet. Not noticing you in _his2 stupor, _he2 -<<if $cockFeeder == 1>> - chooses the phallus next to $activeSlave.slaveName's and starts to suck too. -<<else>> - draws _his2 ration and heads over towards $activeSlave.slaveName to drink it next to $him. -<</if>> -_He2's clearly looking for some companionship this morning, but _his2 gears visibly turn for a while before _his2 sleepy head can come up with something to say. Both the slaves are allowed some variety of flavor in their liquid slave food, so _he2 finally settles on that. -<<run Enunciate($subSlave)>> -"What flavor did you choo<<s>>e?" _he2 asks $activeSlave.slaveName. -<br><br> -<<run Enunciate($activeSlave)>> -$activeSlave.slaveName -<<if $cockFeeder == 1>> - pulls $his mouth off $his feeder with a luscious pop. -<<else>> - lowers $his cup for a moment. -<</if>> -<<if $activeSlave.preg > $activeSlave.pregData.normalBirth/2>> - "The <<s>>our pickle flavor," $he responds, patting $his rounded middle. "I ju<<s>>t can't get enough of it." -<<else>> - "The tart fruity kind," $he responds. "It'<<s>> refre<<sh>>ing fir<<s>>t thing in the morning." -<</if>> -<br><br> -<<run Enunciate($subSlave)>> -"Oh," says $subSlave.slaveName. "Um, can I try <<s>>ome?" -<br><br> -$activeSlave.slaveName smiles and murmurs, "Mm hm." There is a distinct <<if canSee($activeSlave)>>glint in $his eye<<else>>look on $his face<</if>>. $He's got a healthy libido, to put it mildly. Like all slaves, $subSlave.slaveName sleeps nude and hasn't gotten dressed yet, and $activeSlave.slaveName has -<<if canSee($activeSlave)>> -obviously noticed _his2 - <<if $subSlave.dick > 4>> - enormous cock - <<elseif $subSlave.labia > 1>> - remarkable pussylips - <<elseif $subSlave.boobs > 5000>> - enormous bare udders - <<elseif $subSlave.lactation > 1>> - milky nipples - <<elseif $subSlave.face > 40>> - pretty face, nudity, - <<elseif $subSlave.belly >= 5000>> - <<if $subSlave.bellyPreg >= 5000>> - pregnancy, nudity, - <<elseif $subSlave.bellyImplant >= 5000>> - big belly, nudity - <<else>> - $subSlave.inflationType-filled belly, nudity - <</if>> - <<else>> - nudity - <</if>> -<<else>> - noticed _his2 - <<if $subSlave.dick > 4>> - enormous cock - <<elseif $subSlave.boobs > 5000>> - enormous bare udders - <<elseif $subSlave.belly >= 5000>> - <<if $subSlave.bellyPreg >= 5000>> - pregnancy, nudity, - <<elseif $subSlave.bellyImplant >= 5000>> - big belly, nudity - <<else>> - $subSlave.inflationType-filled belly, nudity - <</if>> - <<elseif $subSlave.lactation > 1>> - milky nipples - <<else>> - nudity - <</if>> -<</if>> -and sleepy willingness to be friendly. $activeSlave.slaveName -<<if $cockFeeder == 1>> - turns to $his phallus and sucks it powerfully, drawing -<<else>> - raises $his cup again and draws -<</if>> -liquid food into $his mouth. $He turns to $subSlave.slaveName. -"Go ahead," $he says carefully, enunciating past $his mouthful of fluid, and then purses $his lips. $subSlave.slaveName is taken aback for a moment, but decides _he2's game and steps in, planting _his2 lips on $activeSlave.slaveName's. -<<if ($activeSlave.boobs > 3000) && ($subSlave.boobs > 3000)>> - (Their tits are so huge that _he2 has to fight to get close enough to kiss.) -<<elseif ($activeSlave.boobs > 5000)>> - ($activeSlave.slaveName's tits are so huge that _he2 has to press hard against them to get close enough to kiss.) -<<elseif ($subSlave.boobs > 5000)>> - ($subSlave.slaveName's tits are so huge that _he2 has to press them hard against $activeSlave.slaveName to get close enough to kiss.) -<<elseif ($activeSlave.belly >= 5000) && ($subSlave.belly >= 5000)>> - (Their bellies are so swollen <<if ($activeSlave.preg > $activeSlave.pregData.normalBirth/8) && ($subSlave.preg > $subSlave.pregData.normalBirth/8)>>with life <</if>>that _he2 has to fight to get close enough to kiss.) -<<elseif ($activeSlave.belly >= 300000)>> - ($activeSlave.slaveName's <<if ($activeSlave.preg > $activeSlave.pregData.normalBirth/8)>>pregnancy<<else>>belly<</if>> is so massive that _he2 has to practically climb atop it to get close enough to kiss.) -<<elseif ($subSlave.belly >= 300000)>> - ($subSlave.slaveName's <<if ($subSlave.preg > $subSlave.pregData.normalBirth/8)>>pregnancy<<else>>belly<</if>> is so massive that _he2 has to practically climb atop it to get close enough to kiss.) -<<elseif ($activeSlave.belly >= 10000)>> - ($activeSlave.slaveName's <<if ($activeSlave.preg > $activeSlave.pregData.normalBirth/8)>>pregnancy<<else>>belly<</if>> is so big that _he2 has to press hard against it to get close enough to kiss.) -<<elseif ($subSlave.belly >= 10000)>> - ($subSlave.slaveName's <<if ($subSlave.preg > $subSlave.pregData.normalBirth/8)>>pregnancy<<else>>belly<</if>> is so big that _he2 has to press it firmly against $activeSlave.slaveName to get close enough to kiss.) -<</if>> -_He2 stiffens with the lewd feeling of the warm fluid pressing into _his2 mouth. After a moment _he2 tries to back off and concentrate on the food, but $activeSlave.slaveName is having none of that, and uses $his arms to hug $subSlave.slaveName close, making out with $his catch. -<<if ($subSlave.energy > 60)>> - $subSlave.slaveName's own powerful sex drive is waking up, and _he2 clearly doesn't mind. -<<else>> - $subSlave.slaveName isn't sexually needy enough or awake enough to be as horny as $activeSlave.slaveName, but _he2 goes along willingly enough. -<</if>> - <<case "cockmilk interception">> <<run seX($subSlave, "oral", $activeSlave, "oral")>> @@ -374,90 +238,6 @@ $he adds impishly. <<if canHear($subSlave)>>Hearing this<<else>>Realizing your p <span id="result"> <<switch $RETSevent>> -<<case "taste test">> - -<<link "This belongs on a live feed">> - <<replace "#result">> - You let them continue kissing, but use your tablet to slave one of the plaza's bigger screens to a feed of their nude makeout session. They have no way of knowing, and progress innocently from deep kissing to open mutual masturbation. This is a common sex act among your slaves: it's quick and clean and lets them achieve release before getting back to their duties. When they've both climaxed, you manipulate the situation again, setting a wallscreen in the kitchen to display a feed of the crowd in the plaza enjoying the feed of the situation in the kitchen. - <<if ($activeSlave.fetish == "humiliation") && ($activeSlave.fetishKnown == 1) && ($subSlave.fetish == "humiliation") && ($subSlave.fetishKnown == 1)>> - They both blush crimson at the realization, but the pair of humiliation fetishists @@.hotpink;live for this@@ and wave at the camera, enjoying the afterglow. - <<set $activeSlave.devotion += 2, $subSlave.devotion += 2>> - <<elseif ($subSlave.fetish == "humiliation") && ($subSlave.fetishKnown == 1)>> - $subSlave.slaveName, a confirmed humiliation slut, @@.hotpink;lives for this@@ and waves at the camera, enjoying the afterglow. - <<set $subSlave.devotion += 2>> - <<elseif ($activeSlave.fetish == "humiliation") && ($activeSlave.fetishKnown == 1)>> - $activeSlave.slaveName, a confirmed humiliation slut, @@.hotpink;lives for this@@ and waves at the camera, enjoying the afterglow. - <<set $activeSlave.devotion += 2>> - <<else>> - They blush crimson and both turn back towards each other, desperate to look anywhere but at the sight of the crowd that just watched them jerk each other off. - <</if>> - Such honesty is very tough to fake, and the crowd @@.green;knows they just saw real pleasure.@@ - <<run repX(500, "event", $activeSlave)>> - <<run seX($subSlave, "oral", $activeSlave, "oral")>> - <<set $oralTotal += 2>> - <<set $slaves[$slaveIndices[$subSlave.ID]] = $subSlave>> - <</replace>> -<</link>> -<br><<link "Get involved in the taste testing">> - <<replace "#result">> - <<run Enunciate($activeSlave)>> - You move in. $activeSlave.slaveName <<if canSee($activeSlave)>>catches sight of<<else>>notices<</if>> your approach, and you see the corners of $his mouth quirk upward. $He breaks the lip lock and says breathily, "Hey $subSlave.slaveName, I think there'<<s>> <<s>>omething el<<s>>e you <<sh>>ould ta<<s>>te te<<s>>t." - <br><br> - <<run Enunciate($subSlave)>> - "Whaa-" the slave starts to ask warily before $activeSlave.slaveName pushes _him2 to _his2 knees, spinning _him2 around as $he does so. This brings $subSlave.slaveName face to face with your <<if $PC.dick != 0>>stiff prick, a bead of precum already present at its tip<<else>>wet cunt, a bead of pussyjuice already trailing down your inner thigh<</if>>. "Oh, um, hi <<Master $subSlave>>," _he2 stammers, and then starts to <<if $PC.dick != 0>>suck your dick<<if $PC.vagina != -1>> and <</if>><</if>><<if $PC.vagina != -1>>eat your pussy<</if>>. This leaves poor $activeSlave.slaveName without anyone to make out with, so you step in there, grabbing $him and pulling the giggling slave in to kiss $him deeply. $His mouth is indeed a bit <<if $activeSlave.preg > $activeSlave.pregData.normalBirth/2>>sour<<else>>tart<</if>>. $He moans into your mouth as $he feels $his nipples press against <<if $PC.boobs >= 300>>yours<<else>>your hard chest<</if>>, and then again as your tongue invades $him. When you <<if $PC.dick != 0>>fill $subSlave.slaveName's mouth with cum<<else>>climax wetly against $subSlave.slaveName's mouth<</if>>, you pull away slightly, letting the slave on _his2 knees below you gasp "You ta<<s>>te great, <<Master>>!" before you spin _him2 around in turn so _he2 can give $activeSlave.slaveName $his own allotment of oral sex. You leave them to it. They @@.mediumaquamarine;trust you a bit more@@ after such a lighthearted little escapade. - <<set $activeSlave.trust += 2, $subSlave.trust += 2>> - <<run seX($subSlave, "oral", $activeSlave, "penetrative", 2)>> - <<set $slaves[$slaveIndices[$subSlave.ID]] = $subSlave>> - <</replace>> -<</link>> -<br><<link "Look, a bare butt">> - <<replace "#result">> - You move in, looking intently at $subSlave.slaveName's bare, vulnerable butt. $activeSlave.slaveName <<if canSee($activeSlave)>>catches sight of your approach, and then follows the line of your gaze<<else>>notices your approach<</if>>, the realization of what your intent likely quickly dawns on $him. You see the corners of $his mouth quirk upward with horny maliciousness. $He leans back against the edge of the kitchen counter, pulling $subSlave.slaveName with $him, and then reaches down and - <<if ($subSlave.butt > 6)>> - grabs handfuls of $subSlave.slaveName's massive ass, - <<elseif ($subSlave.butt > 3)>> - seizes $subSlave.slaveName's big buttocks, - <<else>> - grabs $subSlave.slaveName's cute butt, - <</if>> - pulling _him2 upward. $subSlave.slaveName thinks _he2 gets the idea, and hops up, wrapping _his2 legs around $activeSlave.slaveName's <<if $activeSlave.belly >= 5000>><<if $activeSlave.bellyPreg >= 2000>>gravid<<else>>rounded<</if>> middle<<else>>waist<</if>> and _his2 arms around $activeSlave.slaveName's shoulders<<if $subSlave.belly >= 5000>>, pushing their <<if $activeSlave.bellyPreg >= 2000>>pregnancies<<else>>bellies<</if>> together<</if>>. $activeSlave.slaveName<<if ($subSlave.butt > 6)>> - hauls $subSlave.slaveName's huge buttocks apart to reveal the - <<elseif ($subSlave.butt > 3)>> - pulls $subSlave.slaveName's healthy asscheeks apart to reveal the - <<else>> - spreads $subSlave.slaveName's buttocks to show off the - <</if>> - <<if ($subSlave.anus > 2)>> - lewd slit - <<elseif ($subSlave.anus > 1)>> - inviting anus - <<else>> - pretty rosebud - <</if>> - between them. $subSlave.slaveName has only a brief moment to wonder why _his2 butt is being spread this way before _he2 feels - <<if ($PC.dick != 0)>> - your cockhead - <<elseif ($subSlave.anus > 2)>> - your hand, formed into a beak shape - <<elseif ($subSlave.anus > 1)>> - three fingers - <<else>> - two fingers - <</if>> - press against and then inside _his2 butthole. _He2 tries to turn away from $activeSlave.slaveName and greet you properly, but $activeSlave.slaveName won't let _him2, so _he2 tries to mumble a greeting into $activeSlave.slaveName's mouth and then settles for a spastic wave of one hand. This is an alluringly awkward process made desperate by the distracting feeling of you fucking _his2 ass. You could have done something more inventive with the situation, but the feeling of <<if ($PC.dick != 0)>>an anal sphincter around the base of your dick<<else>>finger fucking a compliant slave's submissive asspussy while you look after yourself with your other hand<</if>> never gets old. Why complicate things? An hour later you leave your fucktoys stumbling tiredly towards the shower, @@.hotpink;sexually satiated@@ and anally dominated. - <<set $activeSlave.trust += 2, $subSlave.trust += 2>> - <<run seX($subSlave, "anal", $PC, "penetrative", 2)>> - <<run seX($activeSlave, "anal", $PC, "penetrative", 2)>> - <<if canImpreg($activeSlave, $PC)>> - <<= knockMeUp($activeSlave, 5, 1, -1, 1)>> - <</if>> - <<if canImpreg($subSlave, $PC)>> - <<= knockMeUp($subSlave, 5, 1, -1, 1)>> - <</if>> - <<set $slaves[$slaveIndices[$subSlave.ID]] = $subSlave>> - <</replace>> -<</link>> - <<case "cockmilk interception">> <<link "Step in for the stimulator">> diff --git a/src/uncategorized/randomIndividualEvent.tw b/src/uncategorized/randomIndividualEvent.tw index 3b3316bd05a9095e6a295b0b765edc6687ecd46a..db0b4db674abd3828500818f3158ce04f846b9e3 100644 --- a/src/uncategorized/randomIndividualEvent.tw +++ b/src/uncategorized/randomIndividualEvent.tw @@ -28,25 +28,10 @@ /* SUB CHECKS */ - <<set $RETasteTestSubIDs = [], $RECockmilkInterceptionIDs = []>> + <<set $RECockmilkInterceptionIDs = []>> <<for $i = 0; $i < $slaves.length; $i++>> <<if $slaves[$i].fetish != "mindbroken">> - <<if canWalk($slaves[$i])>> - <<if canTalk($slaves[$i])>> - <<if assignmentVisible($slaves[$i])>> - <<if $slaves[$i].rules.living == "luxurious">> - <<if $slaves[$i].devotion >= -20>> - <<if $slaves[$i].anus != 0>> - <<if canTaste($slaves[$i])>> - <<set $RETasteTestSubIDs.push($slaves[$i].ID)>> - <</if>> - <</if>> - <</if>> - <</if>> - <</if>> - <</if>> - <</if>> <<if $slaves[$i].assignment == "work in the dairy" || $slaves[$i].assignment == "get milked">> <<if $slaves[$i].balls>> <<if $slaves[$i].dick>>