diff --git a/src/Mods/SecExp/buildings/weaponsManufacturing.tw b/src/Mods/SecExp/buildings/weaponsManufacturing.tw index ec51be61070f9c6fcecae145eb716fecf5051bc8..5fb27aa14e3273718693d3990687e4eb049acf83 100644 --- a/src/Mods/SecExp/buildings/weaponsManufacturing.tw +++ b/src/Mods/SecExp/buildings/weaponsManufacturing.tw @@ -95,11 +95,13 @@ You own <<print num($menials)>> free menial slaves. This manufacturing complex c <br> <<link "Invest in automating the complex" "weaponsManufacturing">> <<run cashX(forceNeg(10000 * $SecExp.buildings.weapManu.productivity), "capEx")>> <<set $SecExp.buildings.weapManu.productivity++>> - <<if $SecExp.buildings.weapManu.upgrades.current.time > 0>> - <<set _percentComplete = $SecExp.buildings.weapManu.upgrades.current.time / (_baseUpgradeTime / ($SecExp.buildings.weapManu.productivity - 1))>> - <<set _newTime = Math.ceil(_percentComplete * _baseUpgradeTime / $SecExp.buildings.weapManu.productivity)>> - <<set $SecExp.buildings.weapManu.upgrades.current.time = _newTime>> - <</if>> + <<for _i = 0; _i < $SecExp.buildings.weapManu.upgrades.queue.length; _i++>> + <<if $SecExp.buildings.weapManu.upgrades.queue[_i].time > 0>> + <<set _percentComplete = $SecExp.buildings.weapManu.upgrades.queue[_i].time / (_baseUpgradeTime / ($SecExp.buildings.weapManu.productivity - 1))>> + <<set _newTime = Math.ceil(_percentComplete * _baseUpgradeTime / $SecExp.buildings.weapManu.productivity)>> + <<set $SecExp.buildings.weapManu.upgrades.queue[_i].time = _newTime>> + <</if>> + <</for>> <</link>> //Will cost <<print cashFormat(10000 * $SecExp.buildings.weapManu.productivity)>> and will increase the facility income in addition to speeding up upgrade production.// <<elseif $SecExp.buildings.weapManu.lab < 3>> diff --git a/src/Mods/SecExp/rebellionOptions.tw b/src/Mods/SecExp/rebellionOptions.tw index 5a8abc3ef54522703c2963b8e49f55f4d78398bc..e98b7b96bcfb59ab2f515980b24c707d36d094ed 100644 --- a/src/Mods/SecExp/rebellionOptions.tw +++ b/src/Mods/SecExp/rebellionOptions.tw @@ -276,6 +276,6 @@ In order to preserve the structural integrity of the building and the lives of o <<set $battleResult = 4, $foughtThisWeek = 1>> /* sets $battleResult value outside accepted range (-3, 3) to avoid evaluation problems */ <</link>> <br> -<<link "Surrender" "rebellionHandler">> +<<link "Surrender" "rebellionReport">> <<set $battleResult = -1, $foughtThisWeek = 1>> <</link>> \ No newline at end of file diff --git a/src/endWeek/saChoosesOwnJob.js b/src/endWeek/saChoosesOwnJob.js index 05ae391b73b36ffcce91954bc08987cf4e9e0671..f77cecf7efd1dcf0cff38695c4789a8f8f136321 100644 --- a/src/endWeek/saChoosesOwnJob.js +++ b/src/endWeek/saChoosesOwnJob.js @@ -121,7 +121,7 @@ App.SlaveAssignment.choosesOwnJob = (function() { choice.push(`is uneducated, so ${he} sits ${himself} down to learn.`); choice.push(assignJob(slave, "take classes")); } - } else if ((S.Attendant && V.universalRulesAssignsSelfFacility === 1) && (slave.devotion < 45 || slave.trust < 45 || (slave.sexualFlaw !== "none" && !setup.paraphiliaList.includes(slave.sexualFlaw)) || slave.behavioralFlaw !== "none")) { + } else if ((S.Attendant && V.universalRulesAssignsSelfFacility === 1 && V.spa > spaL) && (slave.devotion < 45 || slave.trust < 45 || (slave.sexualFlaw !== "none" && !setup.paraphiliaList.includes(slave.sexualFlaw)) || slave.behavioralFlaw !== "none")) { choice.push(`could use some counseling, so ${he} decides to visit ${V.spaName}.`); choice.push(assignJob(slave, "rest in the spa")); } else if (slave.devotion <= 50 && canWalk(slave) && canSee(slave)) { diff --git a/src/events/randomEvent.js b/src/events/randomEvent.js index 114a8aabe5389ac1199983bf7703b0225b73d22d..f02e608b69319ecdfb9ac1ae67b680863d193b4b 100644 --- a/src/events/randomEvent.js +++ b/src/events/randomEvent.js @@ -61,6 +61,7 @@ App.Events.getNonindividualEvents = function() { // example: new App.Events.TestEvent(), new App.Events.REDevotees(), new App.Events.RERelativeRecruiter(), + new App.Events.REStaffedMorning(), ]; }; diff --git a/src/events/reStaffedMorning.js b/src/events/reStaffedMorning.js new file mode 100644 index 0000000000000000000000000000000000000000..5ef4174facb368a82ac2cc95d9e045f5e370902a --- /dev/null +++ b/src/events/reStaffedMorning.js @@ -0,0 +1,226 @@ +App.Events.REStaffedMorning = class REStaffedMorning extends App.Events.BaseEvent { + eventPrerequisites() { + return [ + () => V.fuckSlaves >= 4, + ]; + } + + actorPrerequisites() { + const req = [ + s => s.devotion > 50, + s => ["please you", "serve in the master suite"].includes(s.assignment), + hasAllLimbs, + ]; + + return [ + req, + req, + req, + req, + ]; + } + + execute(node) { + let bedSlaves = this.actors.map(getSlave); + + const { + He, he, His, his, hers, him, himself, girl + } = getPronouns(bedSlaves[0]); + + const { + He2, he2, His2, his2, hers2, him2, himself2, girl2 + } = getPronouns(bedSlaves[1]).appendSuffix('2'); + + const { + He3, he3, His3, his3, hers3, him3, himself3, girl3 + } = getPronouns(bedSlaves[2]).appendSuffix('3'); + + const { + He4, he4, His4, his4, hers4, him4, himself4, girl4 + } = getPronouns(bedSlaves[3]).appendSuffix('4'); + let playerPronouns = getPronouns(V.PC); + + V.nextLink = "RIE Eligibility Check"; + + App.Events.drawEventArt(node, bedSlaves.slice(0, 2), "no clothing"); + + let t = [ + `Sleep leaves you quickly one morning to the sensation of two of your fucktoys performing human alarm clock duty. You open your eyes and look down: it's ${bedSlaves[0].slaveName} and ${contextualIntro(bedSlaves[0], bedSlaves[1])} today.` + ]; + + if (V.PC.dick !== 0) { + t.push(`${bedSlaves[0].slaveName} is ${(bedSlaves[0].fetish === "cumslut") && (bedSlaves[0].fetishKnown === 1) ? "rapturously" : "industriously"} sucking your dick as it rapidly hardens in ${his} mouth${V.PC.vagina !== -1 ? `, occasionally letting it pop free so ${he} can run ${his} tongue up and down your cunt` : ""}.`); + t.push(`Meanwhile, ${bedSlaves[1].slaveName} is ${(bedSlaves[1].fetish === "cumslut") && (bedSlaves[1].fetishKnown === 1) ? "hungrily" : "gently"} sucking your nuts.`); + t.push(`The two slaves have crowded close together, and not just so they can both have access to your cock and balls. They're ${(bedSlaves[0].dick > 0) && (bedSlaves[1].dick > 0) ? "jerking each other off" : "manually stimulating each other"} as they work.`); + } else { + t.push(`An absolutely wonderful mélange of sensations rises to meet you. Each slave is gently sucking one of your hardening nipples, and one hand from each slave is moving delicately across your womanhood, kindling a fire in your lower belly. They're cuddled up closely under your arms, with a warm body pressed against each side of you. You can feel their ${(bedSlaves[0].boobs > 300) && (bedSlaves[1].boobs > 300) ? "soft breasts" : "steady breathing"} against your ribcage and the heat between their legs against your thighs. You feel absolutely buried in attentive slave.`); + } + + t.push(`The bathroom door is open and the shower is running. Though the steam is beginning to fill the glass-walled shower, you can see a pair of naked bodies in there; that would be ${bedSlaves[2].slaveName} and ${contextualIntro(bedSlaves[2], bedSlaves[3])}, ready to attend you as you bathe.`); + + App.Events.addParagraph(node, t); + + App.Events.addResponses(node, [ + new App.Events.Result("Leave them satisfied", satisfied), + new App.Events.Result("Leave them exhausted", exhausted) + ]); + + function satisfied() { + let t = []; + + if (V.PC.dick !== 0) { + let s = `You begin to thrust gently into ${bedSlaves[0].slaveName}'s mouth. ${girl === girl2 ? `The ${girl}` : "Your bedmate"}s moan and giggle into you at the signal that you're not going to get up right this instant`; + if ((hasAnyArms(bedSlaves[0])) && (hasAnyArms(bedSlaves[1]))) { + s += `, and `; + if ((bedSlaves[0].dick > 0) && (bedSlaves[1].dick > 0)) { + s += `start jerking each other off harder, making lewd noises and humping each other's hands`; + } else { + s += `really start giving each other proper handjobs, jerking around lewdly as their arousal builds`; + } + s += '.'; + if (V.PC.vagina !== -1) { + s += ` They always spare at least one hand for your cunt, despite your thrusting.`; + } + } + s += ` When you climax, they do, too, one after the other. They quickly switch mouth positions and suck you back to full mast so you can enjoy your shower.`; + t.push(s); + } else { + t.push(`You reach down and run a possessive hand across each slave's scalp, neck, and back, eliciting shivers. Then, you gently hook them under the armpits and pull them up a bit, without breaking their lip locks with your nipples, or forcing them to stop playing with your cunt. Each slave ends curled up, mostly face-down, with their mouths still sucking on your ${V.PC.boobs >= 300 ? "boobs" : "chest"}${(hasAnyArms(bedSlaves[0])) && (hasAnyArms(bedSlaves[1])) ? " and their free hands trapped between their legs" : ""}. They get the message and begin to look after themselves, too; their resultant moaning against your nipples grows when you reach down and start teasing their butts. The three of you climax more or less together, and you bounce up with undiminished arousal to enjoy your shower.`); + } + + seX(V.PC, "penetrative", bedSlaves[0], "oral"); + seX(V.PC, "penetrative", bedSlaves[1], "oral"); + + App.Events.addParagraph(node, t); + + t = [ + `By now, the shower is an impenetrable fog of steam. The wet, soapy bodies inside are easy to find, though. ${bedSlaves[2].slaveName} happens to be closest, so you` + ]; + + if (V.PC.dick !== 0) { + t.push(`kiss ${his3} laughing mouth hard and fuck ${him3} with ${his3} back against the shower wall${bedSlaves[2].boobs > 2000 ? `, ${his3} huge soapy tits sliding around deliciously` : ""}. ${He3} does ${his3} best to soap your front while ${he3} takes cock, and ${bedSlaves[3].slaveName} washes your back${V.PC.vagina !== -1 ? ", reaching under your butt to tease your pussy" : ""}. After a short while, you set ${him3} down and seize ${bedSlaves[3].slaveName}, sliding your cock`); + if (bedSlaves[3].vagina > 0) { + t.push(`into ${his4} willing pussy,`); + } else if (bedSlaves[3].anus > 0) { + t.push(`${bedSlaves[3].butt > 4 ? `between ${his4} huge buttocks and` : ""} up ${his4} willing ass,`); + } else { + t.push(`between ${his4} thighs,`); + } + t.push(`taking ${him4} from behind while ${bedSlaves[2].slaveName} does ${his3} best to get ${his3} wits back and take over washing duty. They towel you together, and you head back out of the bathroom.`); + } else { + t.push(`kiss ${his3} laughing mouth hard and trib ${him3} with ${his3} back against the shower wall${bedSlaves[2].boobs > 2000 ? `, ${his3} huge soapy tits sliding around deliciously` : ""}. ${He3} does ${his3} best to soap your front while you hump ${his3} thigh${bedSlaves[2].vagina > 0 ? " and pussy" : ""}, and ${bedSlaves[3].slaveName} washes your back. After a short while, you set ${him3} down and seize ${bedSlaves[3].slaveName}, pushing ${his4} face against the wall and sliding your fingers inside ${him4} while you straddle one of ${his4} legs. ${bedSlaves[2].slaveName} does ${his3} best to get ${his3} wits back and take over washing duty. They towel you together, and you head back out of the bathroom.`); + } + SimpleSexAct.Player(bedSlaves[2]); + SimpleSexAct.Player(bedSlaves[3]); + + App.Events.addParagraph(node, t); + + t = [ + `Your clothes have been laid out, ready for ${bedSlaves[0].slaveName} and ${bedSlaves[1].slaveName} to dress you, but` + ]; + + if (V.PC.dick !== 0) { + t.push(`next to the neat stack of clothes, the two slaves are bent over the bed with their buttocks spread. You select ${bedSlaves[1].slaveName}`); + if (bedSlaves[1].anus > 0) { + t.push(`and slide your dick up ${his2} ${bedSlaves[1].anus > 2 ? "welcoming asspussy" : (bedSlaves[1].anus > 1 ? "soft butthole" : "tight anus")}, sodomizing ${him2}`); + } else if (bedSlaves[1].vagina > 0) { + t.push(`and slide your dick into ${his2} ${bedSlaves[1].vagina > 2 ? "loose pussy" : (bedSlaves[1].vagina > 1 ? "inviting pussy" : "tight pussy")}, fucking ${him2}`); + } else { + t.push(`and turn ${him2} around before sliding your dick into ${his2} welcoming mouth`); + } + t.push(`while ${bedSlaves[0].slaveName} buttons your shirt. When it's done, you push ${him} down next to ${bedSlaves[1].slaveName} and switch partners, letting ${bedSlaves[1].slaveName} up to do ${his2} best to help you into your trousers in the meantime. ${He2} gets them on and fastens everything, except the fly, of course.`); + } else { + t.push(`next to the neat stack of clothes, the two slaves are kneeling on the floor and looking at you with mock innocence. You select ${bedSlaves[1].slaveName} and straddle ${his2} face, letting ${him2}${bedSlaves[1].lips > 0 ? ` use ${his2} big soft lips to` : ""} eat you out while ${bedSlaves[0].slaveName} helps you into your top. When you're buttoned, you take ${his} face in your hands and kiss ${him} deeply, favoring ${him} with the sensation of kissing ${his} ${WrittenMaster(bedSlaves[0])} while ${playerPronouns.he} orgasms. You keep making out with ${him} while ${bedSlaves[1].slaveName} dresses your lower half.`); + } + + SimpleSexAct.Player(bedSlaves[0]); + SimpleSexAct.Player(bedSlaves[1]); + + t.push(`When you finally leave the suite, ${bedSlaves[0].slaveName} and ${bedSlaves[1].slaveName} head into the shower for their turn, while ${bedSlaves[2].slaveName} and ${bedSlaves[3].slaveName} have finished drying each other off so they can have sex on the bed without getting the sheets wet. They pause for a moment to wave at you as you go, though. <span class="trust inc">Your fucktoys are very satisfied with their morning routine.</span>`); + SimpleSexAct.Slaves(bedSlaves[0], bedSlaves[1]); + SimpleSexAct.Slaves(bedSlaves[2], bedSlaves[3]); + bedSlaves.forEach(s => (s.trust += 4)); + + App.Events.addParagraph(node, t); + + return []; + } + + function exhausted() { + let t = []; + + if (V.PC.dick !== 0) { + t.push(`${bedSlaves[0].slaveName} feels a hand snake behind ${his} head and relaxes ${his} throat, knowing what's coming. You fuck the bitch's mouth hard, and since the pounding pulls your balls out of ${bedSlaves[1].slaveName}'s mouth, you yank ${him2} up towards you so you can maul ${his2} breasts. The compliant slave thrusts out ${his2} chest, presenting ${his2} tits for use as toys, and then gasps as you pinch, squeeze, and twist. You blow your load down ${bedSlaves[0].slaveName}'s throat`); + } else { + t.push(`You shove ${bedSlaves[0].slaveName} down towards your pussy and grab ${his} hair. ${He} takes a deep breath, knowing what's coming. You grind your cunt against the bitch's mouth hard, and since there's no room for ${bedSlaves[1].slaveName}'s hand there any more, you yank ${him2} up towards you so you can maul ${his2} breasts. The compliant slave thrusts out ${his2} chest, presenting ${his2} tits for use as toys, and then gasps as you pinch, squeeze, and twist. You climax against ${bedSlaves[0].slaveName}'s face`); + } + + + seX(V.PC, "penetrative", bedSlaves[0], "oral"); + seX(V.PC, "penetrative", bedSlaves[1], "oral"); + + t.push(`and bounce up to fuck bitches in the shower, knocking ${bedSlaves[0].slaveName} to the floor and sending ${bedSlaves[1].slaveName} sprawling. As you go, you tell them they've got ten minutes to get your clothes laid out and their bodies ready for more. They nod furiously and scramble.`); + + App.Events.addParagraph(node, t); + + t = [ + `By now, the shower is an impenetrable fog of steam. The wet, soapy bodies inside are easy to find, though. ${bedSlaves[2].slaveName} happens to be closest, so you` + ]; + + if (V.PC.dick !== 0) { + t.push(`grab ${him3} and shove ${him3} into a corner of the shower${bedSlaves[2].boobs > 2000 ? `, ${his3} huge soapy tits slapping painfully against the glass` : ""}. ${He3} does ${his3} best to angle ${his3} hips for you as you push your cock`); + if (bedSlaves[2].vagina > 0) { + t.push(`into ${his3} pussy to give ${him3} a good hard fuck.`); + } else if (bedSlaves[2].anus > 0) { + t.push(`up ${his3} ass and give ${him3} a good hard reaming.`); + } else { + t.push(`between ${his4} thighs and go to town.`); + } + t.push(`${bedSlaves[3].slaveName} does ${his4} best to wash your back${V.PC.vagina !== -1 ? ` and give your pussy some manual attention` : ""}, but finds ${himself4} taking ${bedSlaves[2].slaveName}'s place soon enough, smashed into the corner with your dick pistoning in and out of ${his4} holes.`); + } else { + t.push(`grab ${him3} and shove ${him3} into a corner of the shower${bedSlaves[2].boobs > 2000 ? `, ${his3} huge soapy tits slapping painfully against the glass` : ""}. ${He3} does ${his3} best to angle ${his3} hips for you as you fingerfuck ${him3}, forcing complete submission out of the compliant ${girl3}. ${bedSlaves[3].slaveName} does ${his4} best to wash your back, but finds ${himself4} taking ${bedSlaves[2].slaveName}'s place soon enough, smashed into the corner with your fingers pistoning in and out of ${his4} holes.`); + } + + SimpleSexAct.Player(bedSlaves[2]); + SimpleSexAct.Player(bedSlaves[3]); + + t.push(`You're in a hurry, but it'll be a sad day when you aren't able to fuck a slave into total submission in five minutes. You drop ${bedSlaves[3].slaveName} on the shower floor and let ${bedSlaves[2].slaveName} towel you off.`); + + if (V.PC.dick === 0 && bedSlaves[3].anus > 0) { + t.push(`${bedSlaves[3].slaveName} ${hasBothLegs(bedSlaves[3]) ? `gets to ${his4} feet` : `hoists ${himself4} upright`} and helpfully holds up a strap-on questioningly; you shake your head and point to another, larger one. ${He4} helps you into it, and you ram it up ${his4} loosened ass experimentally, nodding in satisfaction when the big phallus forces a pained gasp out of ${him4}.`); + seX(V.PC, "penetrative", bedSlaves[3], "anal"); + } + + App.Events.addParagraph(node, t); + + t = [ + `Back in the bedroom, your clothes have been laid out, ready for ${bedSlaves[0].slaveName} and ${bedSlaves[1].slaveName} to dress you.`, + ]; + + + let dick = V.PC.dick !== 0 ? "dick" : "strap-on"; + let suit = V.PC.title !== 0; + + t.push(`Next to the neat stack of clothes, the two slaves are bent over the bed with their buttocks spread. They're perfectly still, awaiting your pleasure. You select ${bedSlaves[1].slaveName} and`); + if (bedSlaves[1].anus > 0) { + t.push(`ram your ${dick} up ${his2} ${bedSlaves[1].anus > 2 ? `welcoming asspussy` : (bedSlaves[1].anus > 1 ? `soft butthole` : `tight anus`)}, assraping ${him2} without mercy`); + } else if (bedSlaves[1].vagina > 0) { + t.push(`push your ${dick} up ${his2} ${bedSlaves[1].vagina > 2 ? `loose pussy` : (bedSlaves[1].vagina > 1 ? `inviting pussy` : `tight pussy`)}, raping ${him2} without mercy`); + } else { + t.push(`spin ${him2} around, then push your ${dick} down ${his2} throat, facefucking ${him2} without mercy`); + } + t.push(`while ${bedSlaves[0].slaveName} ${suit ? `buttons your shirt` : `helps you into your top`}. When it's done, you push ${him} down next to ${bedSlaves[1].slaveName} and switch partners, letting ${bedSlaves[1].slaveName} up to do ${his2} best to ${suit ? `help you into your trousers in the meantime. ${He2} gets them on and fastens everything, except the fly, of course` : `dress your lower half`}. When ${bedSlaves[0].slaveName} has been fucked into helplessness, you throw ${him} away like the human sex toy ${he} is and pound ${bedSlaves[1].slaveName} and then the dried-off ${bedSlaves[3].slaveName} and ${bedSlaves[2].slaveName} senseless, careful to frequently pull far enough out that the slaves have to take the pain of initial penetration again.`); + + SimpleSexAct.Player(bedSlaves[1], 2); + SimpleSexAct.Player(bedSlaves[0]); + SimpleSexAct.Player(bedSlaves[2]); + SimpleSexAct.Player(bedSlaves[3]); + t.push(`When you finally leave the suite, all four slaves are lying like discarded tissues on the bed, face-down and spread-eagled, carefully avoiding resting on any sensitive parts. <span class="devotion inc">Your fucktoys are reminded of who you are.</span>`); + + App.Events.addParagraph(node, t); + bedSlaves.forEach(s => (s.trust += 4)); + + return []; + } + } +}; diff --git a/src/npc/descriptions/butt/anus.js b/src/npc/descriptions/butt/anus.js index 15592c9a067db93278996c86a58670724b30c3cb..bb5c95a8782d2d796e626d40bd1df13f05626c13 100644 --- a/src/npc/descriptions/butt/anus.js +++ b/src/npc/descriptions/butt/anus.js @@ -76,7 +76,7 @@ App.Desc.anus = function(slave, {market, eventDescription} = {}) { r.push(`and the ${skinDesc} skin around it is stretched smooth, suggesting ${he}'s getting used to having such a cock-hungry rear fuckhole.`); } } else { - r.push(`${His} ${either("anal opening", "anal slit", "anus", "asshole", "asspussy", "butthole")} is a ${either("loose", "open", "permanent", "relaxed")} gape,`); + r.push(`${His} ${either("anal opening", "anal slit", "anus", "asshole", "asspussy", "butthole")} is a ${either("loose", "wide-open", "permanent", "relaxed")} gape,`); if (slave.analArea - slave.anus > 0) { r.push(`and it's surrounded by a massive oval of ${skinDesc} skin that runs from ${his} tailbone all the way down to the`); if (slave.vagina > -1) { diff --git a/src/uncategorized/randomNonindividualEvent.tw b/src/uncategorized/randomNonindividualEvent.tw index 96bb896e4303effd606daaf1cdab1e49df9496bc..b8140e3d7fc2713a471b5911f4042c3f8aef44a1 100644 --- a/src/uncategorized/randomNonindividualEvent.tw +++ b/src/uncategorized/randomNonindividualEvent.tw @@ -291,9 +291,6 @@ <<set $events.push("RE full bed")>> <</if>> <</if>> - <<if $fuckSlaves > 3>> - <<set $events.push("RE staffed morning")>> - <</if>> <<if $dairyRestraintsSetting >= 2>> <<set $rebelSlaves = $slaves.filter(function(s) { return s.devotion < -20 && s.assignment != "be confined in the arcade" && canWalk(s) && s.assignment != "work in the dairy"; })>> diff --git a/src/uncategorized/reStaffedMorning.tw b/src/uncategorized/reStaffedMorning.tw deleted file mode 100644 index 9bbd9fde9e61cf90b823ad9bb4cf050afbbe1a26..0000000000000000000000000000000000000000 --- a/src/uncategorized/reStaffedMorning.tw +++ /dev/null @@ -1,153 +0,0 @@ -:: RE staffed morning [nobr] - -<<set $nextButton = "Continue", $nextLink = "RIE Eligibility Check", _bedSlaves = $slaves.filter(function(s) { return s.devotion > 50 && ["please you", "serve in the master suite"].includes(s.assignment) && hasAllLimbs(s); })>> - -<<if (_bedSlaves.length < 4)>> - <<goto "RIE Eligibility Check">> -<<else>> -<<set _bedSlaves = _bedSlaves.shuffle()>> -<<setLocalPronouns _bedSlaves[0]>> -<<setLocalPronouns _bedSlaves[1] 2>> -<<setLocalPronouns _bedSlaves[2] 3>> -<<setLocalPronouns _bedSlaves[3] 4>> -<<setPlayerPronouns>> - -<<set _clothesTemp = _bedSlaves[1].clothes, _bedSlaves[1].clothes = "no clothing">> -<<set _clothesTemp2 = _bedSlaves[0].clothes, _bedSlaves[0].clothes = "no clothing">> -<span id="art-frame"> -/* 000-250-006 */ -<<if $seeImages == 1>> - <div class="imageColumn"> - <div class="imageRef medImg"> - <<= SlaveArt(_bedSlaves[0], 2, 0)>> - </div> - <div class="imageRef medImg"> - <<= SlaveArt(_bedSlaves[1], 2, 0)>> - </div> - </div> -<</if>> -/* 000-250-006 */ -</span> -<<set _bedSlaves[1].clothes = _clothesTemp>> -<<set _bedSlaves[0].clothes = _clothesTemp2>> - -Sleep leaves you quickly one morning to the sensation of two of your fucktoys performing human alarm clock duty. You open your eyes and look down: it's _bedSlaves[0].slaveName and <<= contextualIntro(_bedSlaves[0], _bedSlaves[1])>> today. -<<if $PC.dick != 0>> - _bedSlaves[0].slaveName is <<if (_bedSlaves[0].fetish == "cumslut") && (_bedSlaves[0].fetishKnown == 1)>>rapturously<<else>>industriously<</if>> sucking your dick as it rapidly hardens in $his mouth<<if $PC.vagina != -1>>, occasionally letting it pop free so $he can run $his tongue up and down your cunt<</if>>. - Meanwhile, _bedSlaves[1].slaveName is <<if (_bedSlaves[1].fetish == "cumslut") && (_bedSlaves[1].fetishKnown == 1)>>hungrily<<else>>gently<</if>> sucking your nuts. - The two slaves have crowded close together, and not just so they can both have access to your cock and balls. They're <<if (_bedSlaves[0].dick > 0) && (_bedSlaves[1].dick > 0)>>jerking each other off<<else>>manually stimulating each other<</if>> as they work. -<<else>> - An absolutely wonderful mélange of sensations rises to meet you. Each slave is gently sucking one of your hardening nipples, and one hand from each slave is moving delicately across your womanhood, kindling a fire in your lower belly. They're cuddled up closely under your arms, with a warm body pressed against each side of you. You can feel their <<if (_bedSlaves[0].boobs > 300) && (_bedSlaves[1].boobs > 300)>>soft breasts<<else>>steady breathing<</if>> against your ribcage and the heat between their legs against your thighs. You feel absolutely buried in attentive slave. -<</if>> - -The bathroom door is open and the shower is running. Though the steam is beginning to fill the glass-walled shower, you can see a pair of naked bodies in there; that would be _bedSlaves[2].slaveName and <<= contextualIntro(_bedSlaves[2], _bedSlaves[3])>>, ready to attend you as you bathe. - -<br><br> - -<span id="result"> -<<link "Leave them satisfied">> -<<replace "#result">> - <<if $PC.dick != 0>> - You begin to thrust gently into _bedSlaves[0].slaveName's mouth. <<if $girl == _girl2>>The $girl<<else>>Your bedmate<</if>>s moan and giggle into you at the signal that you're not going to get up right this instant<<if (hasAnyArms(_bedSlaves[0])) && (hasAnyArms(_bedSlaves[1]))>>, and <<if (_bedSlaves[0].dick > 0) && (_bedSlaves[1].dick > 0)>>start jerking each other off harder, making lewd noises and humping each other's hands<<else>>really start giving each other proper handjobs, jerking around lewdly as their arousal builds<</if>>.<<if $PC.vagina != -1>> They always spare at least one hand for your cunt, despite your thrusting.<</if>><</if>> When you climax, they do, too, one after the other. They quickly switch mouth positions and suck you back to full mast so you can enjoy your shower. - <<else>> - You reach down and run a possessive hand across each slave's scalp, neck, and back, eliciting shivers. Then, you gently hook them under the armpits and pull them up a bit, without breaking their lip locks with your nipples, or forcing them to stop playing with your cunt. Each slave ends curled up, mostly face-down, with their mouths still sucking on your <<if $PC.boobs >= 300>>boobs<<else>>chest<</if>><<if (hasAnyArms(_bedSlaves[0])) && (hasAnyArms(_bedSlaves[1]))>> and their free hands trapped between their legs<</if>>. They get the message and begin to look after themselves, too; their resultant moaning against your nipples grows when you reach down and start teasing their butts. The three of you climax more or less together, and you bounce up with undiminished arousal to enjoy your shower. - <</if>> - <<run seX($PC, "penetrative", _bedSlaves[0], "oral"), seX($PC, "penetrative", _bedSlaves[1], "oral")>> - <br><br> - By now, the shower is an impenetrable fog of steam. The wet, soapy bodies inside are easy to find, though. _bedSlaves[2].slaveName happens to be closest, so you - <<if $PC.dick != 0>> - kiss _his3 laughing mouth hard and fuck _him3 with _his3 back against the shower wall<<if _bedSlaves[2].boobs > 2000>>, _his3 huge soapy tits sliding around deliciously<</if>>. _He3 does _his3 best to soap your front while _he3 takes cock, and _bedSlaves[3].slaveName washes your back<<if $PC.vagina != -1>>, reaching under your butt to tease your pussy<</if>>. After a short while, you set _him3 down and seize _bedSlaves[3].slaveName, sliding your cock - <<if _bedSlaves[3].vagina > 0>> - into _his4 willing pussy, - <<elseif _bedSlaves[3].anus > 0>> - <<if _bedSlaves[3].butt > 4>>between _his4 huge buttocks and<</if>> up _his4 willing ass, - <<else>> - between _his4 thighs, - <</if>> - taking _him4 from behind while _bedSlaves[2].slaveName does _his3 best to get _his3 wits back and take over washing duty. They towel you together, and you head back out of the bathroom. - <<else>> - kiss _his3 laughing mouth hard and trib _him3 with _his3 back against the shower wall<<if _bedSlaves[2].boobs > 2000>>, _his3 huge soapy tits sliding around deliciously<</if>>. _He3 does _his3 best to soap your front while you hump _his3 thigh<<if _bedSlaves[2].vagina > 0>> and pussy<</if>>, and _bedSlaves[3].slaveName washes your back. After a short while, you set _him3 down and seize _bedSlaves[3].slaveName, pushing _his4 face against the wall and sliding your fingers inside _him4 while you straddle one of _his4 legs. _bedSlaves[2].slaveName does _his3 best to get _his3 wits back and take over washing duty. They towel you together, and you head back out of the bathroom. - <</if>> - <<run SimpleSexAct.Player(_bedSlaves[2]), SimpleSexAct.Player(_bedSlaves[3])>> - <br><br> - Your clothes have been laid out, ready for _bedSlaves[0].slaveName and _bedSlaves[1].slaveName to dress you, but - <<if $PC.dick != 0>> - next to the neat stack of clothes, the two slaves are bent over the bed with their buttocks spread. You select _bedSlaves[1].slaveName - <<if _bedSlaves[1].anus > 0>> - and slide your dick up _his2 <<if _bedSlaves[1].anus > 2>>welcoming asspussy<<elseif _bedSlaves[1].anus > 1>>soft butthole<<else>>tight anus<</if>>, sodomizing _him2 - <<elseif _bedSlaves[1].vagina > 0>> - and slide your dick into _his2 <<if _bedSlaves[1].vagina > 2>>loose pussy<<elseif _bedSlaves[1].vagina > 1>>inviting pussy<<else>>tight pussy<</if>>, fucking _him2 - <<else>> - and turn _him2 around before sliding your dick into _his2 welcoming mouth - <</if>> - while _bedSlaves[0].slaveName buttons your shirt. When it's done, you push $him down next to _bedSlaves[1].slaveName and switch partners, letting _bedSlaves[1].slaveName up to do _his2 best to help you into your trousers in the meantime. _He2 gets them on and fastens everything, except the fly, of course. - <<else>> - next to the neat stack of clothes, the two slaves are kneeling on the floor and looking at you with mock innocence. You select _bedSlaves[1].slaveName and straddle _his2 face, letting _him2<<if _bedSlaves[1].lips > 0>> use _his2 big soft lips to<</if>> eat you out while _bedSlaves[0].slaveName helps you into your top. When you're buttoned, you take $his face in your hands and kiss $him deeply, favoring $him with the sensation of kissing $his <<= WrittenMaster(_bedSlaves[0])>> while _heP orgasms. You keep making out with $him while _bedSlaves[1].slaveName dresses your lower half. - <</if>> - <<run SimpleSexAct.Player(_bedSlaves[0]), SimpleSexAct.Player(_bedSlaves[1])>> - When you finally leave the suite, _bedSlaves[0].slaveName and _bedSlaves[1].slaveName head into the shower for their turn, while _bedSlaves[2].slaveName and _bedSlaves[3].slaveName have finished drying each other off so they can have sex on the bed without getting the sheets wet. They pause for a moment to wave at you as you go, though. @@.mediumaquamarine;Your fucktoys are very satisfied with their morning routine.@@ - <<run SimpleSexAct.Slaves(_bedSlaves[0], _bedSlaves[1]), SimpleSexAct.Slaves(_bedSlaves[2], _bedSlaves[3])>> - <<set $slaves.forEach(function(s) { if ([_bedSlaves[0].ID, _bedSlaves[1].ID, _bedSlaves[2].ID, _bedSlaves[3].ID].includes(s.ID)) { s.trust += 4; } })>> -<</replace>> -<</link>> -<br><<link "Leave them exhausted">> -<<replace "#result">> - <<if $PC.dick != 0>> - _bedSlaves[0].slaveName feels a hand snake behind $his head and relaxes $his throat, knowing what's coming. You fuck the bitch's mouth hard, and since the pounding pulls your balls out of _bedSlaves[1].slaveName's mouth, you yank _him2 up towards you so you can maul _his2 breasts. The compliant slave thrusts out _his2 chest, presenting _his2 tits for use as toys, and then gasps as you pinch, squeeze, and twist. You blow your load down _bedSlaves[0].slaveName's throat - <<else>> - You shove _bedSlaves[0].slaveName down towards your pussy and grab $his hair. $He takes a deep breath, knowing what's coming. You grind your cunt against the bitch's mouth hard, and since there's no room for _bedSlaves[1].slaveName's hand there any more, you yank _him2 up towards you so you can maul _his2 breasts. The compliant slave thrusts out _his2 chest, presenting _his2 tits for use as toys, and then gasps as you pinch, squeeze, and twist. You climax against _bedSlaves[0].slaveName's face - <</if>> - <<run seX($PC, "penetrative", _bedSlaves[0], "oral"), seX($PC, "penetrative", _bedSlaves[1], "oral")>> - and bounce up to fuck bitches in the shower, knocking _bedSlaves[0].slaveName to the floor and sending _bedSlaves[1].slaveName sprawling. As you go, you tell them they've got ten minutes to get your clothes laid out and their bodies ready for more. They nod furiously and scramble. - <br><br> - By now, the shower is an impenetrable fog of steam. The wet, soapy bodies inside are easy to find, though. _bedSlaves[2].slaveName happens to be closest, so you - <<if $PC.dick != 0>> - grab _him3 and shove _him3 into a corner of the shower<<if _bedSlaves[2].boobs > 2000>>, _his3 huge soapy tits slapping painfully against the glass<</if>>. _He3 does _his3 best to angle _his3 hips for you as you push your cock - <<if _bedSlaves[2].vagina > 0>> - into _his3 pussy to give _him3 a good hard fuck. - <<elseif _bedSlaves[2].anus > 0>> - up _his3 ass and give _him3 a good hard reaming. - <<else>> - between _his4 thighs and go to town. - <</if>> - _bedSlaves[3].slaveName does _his4 best to wash your back<<if $PC.vagina != -1>> and give your pussy some manual attention<</if>>, but finds _himself4 taking _bedSlaves[2].slaveName's place soon enough, smashed into the corner with your dick pistoning in and out of _his4 holes. - <<else>> - grab _him3 and shove _him3 into a corner of the shower<<if _bedSlaves[2].boobs > 2000>>, _his3 huge soapy tits slapping painfully against the glass<</if>>. _He3 does _his3 best to angle _his3 hips for you as you fingerfuck _him3, forcing complete submission out of the compliant _girl3. _bedSlaves[3].slaveName does _his4 best to wash your back, but finds _himself4 taking _bedSlaves[2].slaveName's place soon enough, smashed into the corner with your fingers pistoning in and out of _his4 holes. - <</if>> - <<run SimpleSexAct.Player(_bedSlaves[2]), SimpleSexAct.Player(_bedSlaves[3])>> - You're in a hurry, but it'll be a sad day when you aren't able to fuck a slave into total submission in five minutes. You drop _bedSlaves[3].slaveName on the shower floor and let _bedSlaves[2].slaveName towel you off. - <<if $PC.dick == 0 && _bedSlaves[3].anus > 0>> - _bedSlaves[3].slaveName <<if hasBothLegs(_bedSlaves[3])>>gets to _his4 feet<<else>>hoists _himself4 upright<</if>> and helpfully holds up a strap-on questioningly; you shake your head and point to another, larger one. _He4 helps you into it, and you ram it up _his4 loosened ass experimentally, nodding in satisfaction when the big phallus forces a pained gasp out of _him4. - <<run seX($PC, "penetrative", _bedSlaves[3], "anal")>> - <</if>> - <br><br> - Back in the bedroom, your clothes have been laid out, ready for _bedSlaves[0].slaveName and _bedSlaves[1].slaveName to dress you. - <<if $PC.dick != 0>> - Next to the neat stack of clothes, the two slaves are bent over the bed with their buttocks spread. They're perfectly still, awaiting your pleasure. You select _bedSlaves[1].slaveName and - <<if _bedSlaves[1].anus > 0>> - ram your dick up _his2 <<if _bedSlaves[1].anus > 2>>welcoming asspussy<<elseif _bedSlaves[1].anus > 1>>soft butthole<<else>>tight anus<</if>>, assraping _him2 without mercy - <<elseif _bedSlaves[1].vagina > 0>> - push your dick up _his2 <<if _bedSlaves[1].vagina > 2>>loose pussy<<elseif _bedSlaves[1].vagina > 1>>inviting pussy<<else>>tight pussy<</if>>, raping _him2 without mercy - <<else>> - spin _him2 around, then push your dick down _his2 throat, facefucking _him2 without mercy - <</if>> - while _bedSlaves[0].slaveName buttons your shirt. When it's done, you push $him down next to _bedSlaves[1].slaveName and switch partners, letting _bedSlaves[1].slaveName up to do _his2 best to help you into your trousers in the meantime. _He2 gets them on and fastens everything, except the fly, of course. When _bedSlaves[0].slaveName has been fucked into helplessness, you throw $him away like the human sex toy $he is and pound _bedSlaves[1].slaveName and then the dried-off _bedSlaves[3].slaveName and _bedSlaves[2].slaveName senseless, careful to frequently pull far enough out that the slaves have to take the pain of initial penetration again. - <<else>> - Next to the neat stack of clothes, the two slaves are bent over the bed with their buttocks spread. They're perfectly still, awaiting your pleasure. You select _bedSlaves[1].slaveName and - <<if _bedSlaves[1].anus > 0>> - ram your strap-on up _his2 <<if _bedSlaves[1].anus > 2>>welcoming asspussy<<elseif _bedSlaves[1].anus > 1>>soft butthole<<else>>tight anus<</if>>, assraping _him2 without mercy - <<elseif _bedSlaves[1].vagina > 0>> - push your strap-on up _his2 <<if _bedSlaves[1].vagina > 2>>loose pussy<<elseif _bedSlaves[1].vagina > 1>>inviting pussy<<else>>tight pussy<</if>>, raping _him2 without mercy - <<else>> - push your strap-on down _his2 throat, facefucking him without mercy - <</if>> - while _bedSlaves[0].slaveName helps you into your top. When it's done, you push $him down next to _bedSlaves[1].slaveName and switch partners, letting _bedSlaves[1].slaveName up to do _his2 best to dress your lower half. When _bedSlaves[0].slaveName has been fucked into helplessness, you throw $him away like the human sex toy $he is and pound _bedSlaves[1].slaveName and then the dried-off _bedSlaves[3].slaveName and _bedSlaves[2].slaveName senseless, careful to frequently pull far enough out that the slaves have to take the pain of initial penetration again. - <</if>> - <<run SimpleSexAct.Player(_bedSlaves[1], 2), SimpleSexAct.Player(_bedSlaves[0]), SimpleSexAct.Player(_bedSlaves[2]), SimpleSexAct.Player(_bedSlaves[3])>> - When you finally leave the suite, all four slaves are lying like discarded tissues on the bed, face-down and spread-eagled, carefully avoiding resting on any sensitive parts. @@.hotpink;Your fucktoys are reminded of who you are.@@ - <<set $slaves.forEach(function(s) { if ([_bedSlaves[0].ID, _bedSlaves[1].ID, _bedSlaves[2].ID, _bedSlaves[3].ID].includes(s.ID)) { s.devotion += 4; } })>> -<</replace>> -<</link>> -</span> - -<</if>> /* closes validity check */