diff --git a/src/events/RESS/devotedWaist.js b/src/events/RESS/devotedWaist.js new file mode 100644 index 0000000000000000000000000000000000000000..4e96b24b54008eb9c94e2ce588af46aa5c034a48 --- /dev/null +++ b/src/events/RESS/devotedWaist.js @@ -0,0 +1,174 @@ +App.Events.RESSDevotedWaist = class RESSDevotedWaist extends App.Events.BaseEvent { + eventPrerequisites() { + return []; + } + + actorPrerequisites() { + return [ + [ // single event slave + s => s.fetish !== "mindbroken", + hasAnyArms, + hasAnyLegs, + s => s.waist < - 95, + s => s.weight <= 95, + s => s.trust >= -20, + s => s.devotion > 20, + s => s.belly < 30000 + ] + ]; + } + + execute(node) { + /** @type {Array<App.Entity.SlaveState>} */ + let [eventSlave] = this.actors.map(a => getSlave(a)); + const { + He, he, His, his, him, himself + } = getPronouns(eventSlave); + const belly = bellyAdjective(eventSlave); + + /** @type {App.Entity.PlayerState} */ + let PC = V.PC; + + V.nextLink = "Next Week"; + + App.Events.drawEventArt(node, eventSlave, "no clothing"); + + let t = []; + + t.push(App.UI.DOM.slaveDescriptionDialog(eventSlave)); + t.push(`is a real work of surgical art. As ${he} showers, carefully soaping and then moisturizing every ${V.showInches === 2 ? "inch" : "centimeter"} of ${his} eventSlave.skin skin, you notice the undeniable eroticism created by the unnatural narrowness of`); + if (eventSlave.belly >= 5000) { + t.push(`${his} middle, especially given how much ${his} ${belly} ${eventSlave.bellyPreg >= 3000 ? "pregnancy" : "belly"} extends past ${his} sides.`); + } else { + t.push(`${his} middle.`); + } + t.push(`Though ${his} hands are by no means large, when ${he} washes ${his} sides, ${his} hands span almost the entire circumference of ${his} waist.`); + if (eventSlave.dick > 0) { + t.push(`Though ${he}'s not sexually aroused, ${his} cock is visible as ${he} bathes ${himself}; ${his} member and ${his} narrow waist work together to create a real mélange of gender traits.`); + } else if (eventSlave.boobs > 800 && eventSlave.butt > 4) { + t.push(`${His} massive bust and hips work together to create a spectacular hourglass effect; ${he}'s a fantasy $woman made flesh.`); + } else { + t.push(`The narrowness of ${his} waist accentuates ${his} feminine features.`); + } + App.Events.addParagraph(node, t); + t = []; + + App.Events.addResponses(node, [ + new App.Events.Result(`Join ${him} and see if your hands can span ${his} waist`, grab, virginityWarning()), + new App.Events.Result("Such a lovely work of art must be displayed", display, virginityWarning()), + ]); + + function grab() { + t = []; + + t.push(`By the time you reach the shower, ${eventSlave.slaveName} is toweling ${himself}. ${He} notices your approach and folds the towel neatly before performing a little naked pirouette that shows off ${his} artificial`); + if (canDoVaginal(eventSlave) && canDoAnal(eventSlave)) { + t.push(`curviness while displaying each of ${his} delectable holes.`); + } else if (canDoVaginal(eventSlave)) { + t.push(`curviness while displaying ${his}`); + if (eventSlave.vagina > 3) { + t.push("gaping cunt."); + } else if (eventSlave.vagina > 2) { + t.push("loose cunt."); + } else if (eventSlave.vagina > 1) { + t.push("slutty pussy."); + } else if (eventSlave.vagina > 0) { + t.push("tight pussy."); + } else { + t.push("virgin pussy."); + } + } else if (canDoAnal(eventSlave)) { + t.push(`curviness while displaying ${his}`); + if (eventSlave.anus > 2) { + t.push("gaping asshole."); + } else if (eventSlave.anus > 1) { + t.push("slutty asshole."); + } else if (eventSlave.anus > 1) { + t.push("tight asshole."); + } else { + t.push("virgin asshole."); + } + } else { + t.push("curviness."); + } + if (eventSlave.belly >= 500 || eventSlave.weight > 30) { + t.push(`You take ${him} about the middle and, with a little imagination, find that, indeed, you could make your thumbs and fingertips meet around it if you were to press.`); + } else { + t.push(`You take ${him} about the waist and find that, indeed, you can make your thumbs and fingertips meet around it if you press, which elicits a squeak.`); + } + if (!canDoVaginal(eventSlave) && !canDoAnal(eventSlave)) { + t.push(`There are many ways you could apply this during sex, but since ${he} is fully locked in chastity, you can only explain, in detail, the ways you would fuck ${him} if you could. By the end ${he}'s blushing vibrantly, but <span class="mediumaquamarine">more confident in ${his} sexual uniqueness.</span>`); + } else { + t.push(`This can be applied during sex many ways. First, ${he} sits on the bathroom counter and bends ${himself} almost double for`); + if (canDoAnal(eventSlave)) { + t.push(`anal. Your control over the pace is perfected by your grip around ${his} tiny middle.`); + VCheck.Anal(1, eventSlave); + } else { + t.push(`vaginal. Your control over the pace is perfected by your grip around ${his} tiny middle.`); + VCheck.Vaginal(1, eventSlave); + } + t.push(`Finally, ${he} goes down on ${hasAllLimbs(eventSlave) ? "all fours" : "the floor"} for a hard`); + if (canDoVaginal(eventSlave)) { + t.push(`pounding, doggy style, losing ${himself} in the intense penetration as you use your hold around ${him} to give it to ${him} even harder.`); + VCheck.Vaginal(1, eventSlave); + } else { + t.push(`buttfuck, doggy style, losing ${himself} in the intense anal as you use your hold around ${him} to give it to ${him} even harder.`); + VCheck.Anal(1, eventSlave); + } + t.push(`By the end ${he}'s tired but <span class="mediumaquamarine">confident in ${his} sexual uniqueness.</span>`); + } + + eventSlave.trust += 4; + return t; + } + + function display() { + t = []; + + t.push(`There is a polite soirée tonight at one of ${V.arcologies[0].name}'s more upscale eating establishments. Many couples are there to enjoy themselves and preen, but even so, you make a stir as you enter wearing`); + if (PC.title === 1) { + t.push(`the latest in men's eveningwear${PC.boobs >= 300 || PC.belly >= 1500 || PC.butt >= 3 || PC.balls >= 9 ? ", tastefully tailored to accommodate your unusual build" : ""}.`); + } else { + t.push(`the latest dress from one of your arcology's leading tailors${PC.boobs >= 300 || PC.belly >= 1500 || PC.butt >= 3 || PC.balls >= 9 ? ", carefully tailored to accentuate your splendid curves" : ""}.`); + } + t.push(`${eventSlave.slaveName} is a confection on your arm, displayed in a silk gown of strips and cuts that accentuates ${his} artificial figure while leaving ${his} breasts,`); + if (eventSlave.dick > 0) { + t.push(`${eventSlave.chastityPenis === 1 ? "caged" : ""} cock,`); + } else if (eventSlave.vagina > -1) { + t.push(`${eventSlave.chastityPenis === 1 ? "chaste" : ""} pussy,`); + } else if (eventSlave.balls > 1 && eventSlave.scrotum > 0) { + t.push("dangling balls,"); + } else { + t.push("featureless groin,"); + } + t.push(`and ${eventSlave.chastityAnus ? "off-limits rear" : "butt"} lusciously bare. Your appearance together with your living accessory <span class="green">increases your reputation.</span> After a refined meal and some sedate dancing, the maître d' announces that the establishment has become (the Free Cities definition of) a salon for the evening. After the more prudish couples file out, those who remain engage in public sexual congress;`); + if (canDoAnal(eventSlave) || canDoVaginal(eventSlave)) { + t.push(`${eventSlave.slaveName}'s gown allows you to take ${him} in a ${eventSlave.belly >= 5000 ? "tight" : "close"} lotus position on the cleared table, face to face.`); + if (canDoVaginal(eventSlave)) { + VCheck.Vaginal(1, eventSlave); + } else { + VCheck.Anal(1, eventSlave); + } + } else { + t.push(`you and ${eventSlave.slaveName} enjoy the ${canSee(eventSlave) ? "sights" : "atmosphere"} while fooling around. While you'd love to use ${him}, ${his} chastity keeps you at bay.`); + } + t.push(`<span class="hotpink">${He} has become more devoted to you.</span>`); + + eventSlave.devotion += 4; + repX(500, "event", eventSlave); + return t; + } + + function virginityWarning() { + if (eventSlave.anus === 0 && canDoAnal(eventSlave)) { + if (eventSlave.vagina === 0 && canDoVaginal(eventSlave)) { + return `This option will take ${his} anal and vaginal virginity`; + } else { + return `This option will take ${his} anal virginity`; + } + } else if (eventSlave.vagina === 0 && canDoVaginal(eventSlave)) { + return `This option will take ${his} vaginal virginity`; + } + } + } +}; diff --git a/src/events/randomEvent.js b/src/events/randomEvent.js index b1d276309168b312abd7c404fae2dc921e737a71..262cf2afa4cc2ee1b771cbb63b099b957b0bc5cc 100644 --- a/src/events/randomEvent.js +++ b/src/events/randomEvent.js @@ -14,6 +14,7 @@ App.Events.getIndividualEvents = function() { new App.Events.RESSCockFeederResistance(), new App.Events.RESSDevotedAnalVirgin(), new App.Events.RESSDevotedVirgin(), + new App.Events.RESSDevotedWaist(), new App.Events.RESSEscapee(), new App.Events.RESSHotPC(), new App.Events.RESSLazyEvening(), @@ -28,10 +29,10 @@ App.Events.getIndividualEvents = function() { new App.Events.RESSWaistlineWoes(), new App.Events.RECIButthole(), + new App.Events.RECIFeminization(), new App.Events.RECIFuta(), new App.Events.RECIMilf(), new App.Events.RECIOrientation(), - new App.Events.RECIFeminization(), new App.Events.RETSSiblingTussle(), ]; diff --git a/src/js/eventSelectionJS.js b/src/js/eventSelectionJS.js index 9c92ac163066d304aa23660ca36e038da72aa431..3b1f6d4b2cf5eba5801ffcf227fea4b83f5139a4 100644 --- a/src/js/eventSelectionJS.js +++ b/src/js/eventSelectionJS.js @@ -1050,18 +1050,6 @@ globalThis.generateRandomEventPoolStandard = function(eventSlave) { } } - if (eventSlave.waist < -95) { - if (eventSlave.devotion > 20) { - if (eventSlave.trust >= -20) { - if (eventSlave.belly < 30000) { - if (eventSlave.weight <= 95) { - V.RESSevent.push("devoted waist"); - } - } - } - } - } - if (eventSlave.skill.entertainment >= 100) { if (eventSlave.trust > 50) { if (eventSlave.assignment === Job.PUBLIC) { @@ -2279,18 +2267,6 @@ globalThis.generateRandomEventPoolServant = function(eventSlave) { } } - if (eventSlave.waist < -95) { - if (eventSlave.devotion > 20) { - if (eventSlave.trust >= -20) { - if (eventSlave.belly < 30000) { - if (eventSlave.weight <= 95) { - V.RESSevent.push("devoted waist"); - } - } - } - } - } - if (eventSlave.dick > 0) { if (eventSlave.balls === 0) { if (eventSlave.genes === "XY") { diff --git a/src/uncategorized/RESS.tw b/src/uncategorized/RESS.tw index b15495baf37df82f3242314bb5376d83f6fcb84f..9a0f5a07d3b7f9b0e0f1a0d5fb1287cc23d53745 100644 --- a/src/uncategorized/RESS.tw +++ b/src/uncategorized/RESS.tw @@ -44,7 +44,7 @@ <<set _clothesTemp = $activeSlave.clothes>> <<switch $RESSevent>> /*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 "age implant" "ara ara" "back stretch" "bad dream" "bed snuggle" "bondage gear" "bonded love" "breast expansion blues" "confident tanning" "devoted educated slave" "devoted exhibition" "devoted lotion" "desperate null" "devoted nympho" "devoted shortstack" "devoted waist" "extreme aphrodisiacs" "fearful balls" "fucktoy tribbing" "gaped asshole" "happy dance" "heavy piercing" "huge naturals" "huge tits" "hugely pregnant" "ignorant horny" "im scared" "implant inspection" "kitchen molestation" "language lesson" "mindbroken morning" "modest clothes" "mods please" "obedient girlish" "old PC age difference" "orchiectomy please" "PA flirting" "penitent" "permitted masturbation" "plimb help" "rebellious arrogant" "resistant gelding" "resistant shower" "resting amp" "restricted profession" "restricted smart" "sexy succubus" "shaped areolae" "shift masturbation" "shift sleep" "shower slip" "slave clit on slave" "slave dick huge" "slave dick on slave" "sleeping ambivalent" "sore shoulders" "spa boobs" "subjugation blues" "tendon fall" "terrified inspection" "tittymonster inspection" "torpedo squeeze" "transition anxiety" "trusting HG" "unhappy virgin" "used whore" "vocal disobedience" "young PC age difference">> +<<case "age implant" "ara ara" "back stretch" "bad dream" "bed snuggle" "bondage gear" "bonded love" "breast expansion blues" "confident tanning" "devoted educated slave" "devoted exhibition" "devoted lotion" "desperate null" "devoted nympho" "devoted shortstack" "extreme aphrodisiacs" "fearful balls" "fucktoy tribbing" "gaped asshole" "happy dance" "heavy piercing" "huge naturals" "huge tits" "hugely pregnant" "ignorant horny" "im scared" "implant inspection" "kitchen molestation" "language lesson" "mindbroken morning" "modest clothes" "mods please" "obedient girlish" "old PC age difference" "orchiectomy please" "PA flirting" "penitent" "permitted masturbation" "plimb help" "rebellious arrogant" "resistant gelding" "resistant shower" "resting amp" "restricted profession" "restricted smart" "sexy succubus" "shaped areolae" "shift masturbation" "shift sleep" "shower slip" "slave clit on slave" "slave dick huge" "slave dick on slave" "sleeping ambivalent" "sore shoulders" "spa boobs" "subjugation blues" "tendon fall" "terrified inspection" "tittymonster inspection" "torpedo squeeze" "transition anxiety" "trusting HG" "unhappy virgin" "used whore" "vocal disobedience" "young PC age difference">> <<set $activeSlave.clothes = "no clothing">> <<case "whore rebellious">> /* this scene states they are wearing "thick, durable latex with temperature regulation and anchor points for restraint" no matter what they are assigned to wear. */ @@ -2315,10 +2315,6 @@ $His responses to your routine questions are so mechanical and honest that you m <br><br> Lately, you've noticed that $he reacts to these <<if canSee($activeSlave)>>sights<<elseif canHear($activeSlave)>>sounds<<else>>thoughts<</if>> with a well-concealed flash of apprehension. It seems $he's figured out that $he will probably be required to take it up $his little <<if $seeRace == 1>>$activeSlave.race <</if>>butt someday, and isn't enthusiastic about the prospect. You could probably exploit this. -<<case "devoted waist">> - -<<= App.UI.slaveDescriptionDialog($activeSlave)>> is a real work of surgical art. As $he showers, carefully soaping and then moisturizing every <<if $showInches == 2>>inch<<else>>centimeter<</if>> of $his $activeSlave.skin skin, you notice the undeniable eroticism created by the unnatural narrowness of $his middle<<if $activeSlave.belly >= 5000>>, especially given how much $his _belly <<if $activeSlave.bellyPreg >= 3000>>pregnancy<<else>>belly<</if>> extends past $his sides<</if>>. Though $his hands are by no means large, when $he washes $his sides, $his hands span almost the entire circumference of $his waist. <<if $activeSlave.dick > 0>>Though $he's not sexually aroused, $his cock is visible as $he bathes $himself; $his member and $his narrow waist work together to create a real mélange of gender traits.<<elseif ($activeSlave.boobs > 800) && ($activeSlave.butt > 4)>>$His massive bust and hips work together to create a spectacular hourglass effect; $he's a fantasy $woman made flesh.<<else>>The narrowness of $his waist accentuates $his feminine features.<</if>> - <<case "obedient girlish">> <<= App.UI.slaveDescriptionDialog($activeSlave)>> is nice and @@ -12294,113 +12290,6 @@ brought in to you. This time <<= App.UI.slaveDescriptionDialog($activeSlave)>> h <</if>> <</if>> -<<case "devoted waist">> - -<<link "Join $him and see if your hands can span $his waist">> - <<replace "#result">> - By the time you reach the shower, $activeSlave.slaveName is toweling $himself. $He notices your approach and folds the towel neatly before performing a little naked pirouette that shows off $his artificial - <<if canDoVaginal($activeSlave) && canDoAnal($activeSlave)>> - curviness while displaying each of $his delectable holes. - <<elseif canDoVaginal($activeSlave)>> - curviness while displaying $his - <<if $activeSlave.vagina > 3>> - gaping cunt - <<elseif $activeSlave.vagina > 2>> - loose cunt - <<elseif $activeSlave.vagina > 1>> - slutty pussy - <<elseif $activeSlave.vagina > 0>> - tight pussy - <<else>> - virgin pussy. - <</if>> - <<elseif canDoAnal($activeSlave)>> - curviness while displaying $his - <<if $activeSlave.anus > 2>> - gaping asshole. - <<elseif $activeSlave.anus > 1>> - slutty asshole. - <<elseif $activeSlave.anus > 1>> - tight asshole. - <<else>> - virgin asshole. - <</if>> - <<else>> - curviness. - <</if>> - You take $him about the <<if $activeSlave.belly >= 500 || $activeSlave.weight > 30>>middle and, with a little imagination, find that, indeed, you could make your thumbs and fingertips meet around it if you were to press.<<else>>waist and find that, indeed, you can make your thumbs and fingertips meet around it if you press, which elicits a squeak<</if>>. - <<if !canDoVaginal($activeSlave) && !canDoAnal($activeSlave)>> - There are many ways you could apply this during sex, but since $he is fully locked in chastity, you can only explain, in detail, the ways you would fuck $him if you could. By the end $he's blushing vibrantly, but @@.mediumaquamarine;more confident in $his sexual uniqueness.@@ - <<set $activeSlave.trust += 4>> - <<else>> - This can be applied during sex many ways. First, $he sits on the bathroom counter and bends $himself almost double for - <<if canDoAnal($activeSlave)>> - anal. Your control over the pace is perfected by your grip around $his tiny middle. - <<= VCheck.Anal()>> - <<else>> - vaginal. Your control over the pace is perfected by your grip around $his tiny middle. - <<= VCheck.Vaginal()>> - <</if>> - Finally, $he goes down on <<if hasAllLimbs($activeSlave)>>all fours<<else>>the floor<</if>> for a hard - <<if canDoVaginal($activeSlave)>> - pounding, doggy style, losing $himself in the intense penetration as you use your hold around $him to give it to $him even harder. - <<= VCheck.Vaginal()>> - <<else>> - buttfuck, doggy style, losing $himself in the intense anal as you use your hold around $him to give it to $him even harder. - <<= VCheck.Anal()>> - <</if>> - By the end $he's tired but @@.mediumaquamarine;confident in $his sexual uniqueness.@@ - <<set $activeSlave.trust += 4>> - <</if>> - <</replace>> -<</link>><<if ($activeSlave.anus == 0 && canDoAnal($activeSlave)) || ($activeSlave.vagina == 0 && canDoVaginal($activeSlave))>> //This option will take $his virginity//<</if>> -<br><<link "Such a lovely work of art must be displayed">> - <<replace "#result">> - There is a polite soirée tonight at one of $arcologies[0].name's more upscale eating establishments. Many couples are there to enjoy themselves and preen, but even so, you make a stir as you enter wearing - <<if $PC.title == 1>> - the latest in men's eveningwear<<if $PC.boobs >= 300 || $PC.belly >= 1500 || $PC.butt >= 3 || $PC.balls >= 9>>, tastefully tailored to accommodate your unusual build<</if>>. - <<else>> - the latest dress from one of your arcology's leading tailors<<if $PC.boobs >= 1000 || $PC.belly >= 1500 || $PC.butt >= 3 || $PC.balls >= 5>>, carefully tailored to accentuate your splendid curves<</if>>. - <</if>> - $activeSlave.slaveName is a confection on your arm, displayed in a silk gown of strips and cuts that accentuates $his artificial figure while leaving $his breasts, - <<if $activeSlave.dick > 0>> - <<if ($activeSlave.chastityPenis == 1)>> - caged - <</if>> - cock, - <<elseif $activeSlave.vagina > -1>> - <<if ($activeSlave.chastityPenis == 1)>> - chaste - <</if>> - pussy, - <<elseif $activeSlave.balls > 1 && $activeSlave.scrotum > 0>> - dangling balls, - <<else>> - featureless groin, - <</if>> - and - <<if ($activeSlave.chastityAnus)>> - off-limits rear - <<else>> - butt - <</if>> - lusciously bare. Your appearance together with your living accessory @@.green;increases your reputation.@@ After a refined meal and some sedate dancing, the maître d' announces that the establishment has become (the Free Cities definition of) a salon for the evening. After the more prudish couples file out, those who remain engage in public sexual congress; - <<if canDoAnal($activeSlave) || canDoVaginal($activeSlave)>> - $activeSlave.slaveName's gown allows you to take $him in a <<if $activeSlave.belly >= 5000>>tight<<else>>close<</if>> lotus position on the cleared table, face to face. - <<if canDoVaginal($activeSlave)>> - <<= VCheck.Vaginal()>> - <<else>> - <<= VCheck.Anal()>> - <</if>> - <<else>> - you and $activeSlave.slaveName enjoy the <<if canSee($activeSlave)>>sights<<else>>atmosphere<</if>> while fooling around. While you'd love to use $him, $his chastity keeps you at bay. - <</if>> - @@.hotpink;$He has become more devoted to you.@@ - <<set $activeSlave.devotion += 4>> - <<run repX(500, "event", $activeSlave)>> - <</replace>> -<</link>><<if ($activeSlave.anus == 0 && canDoAnal($activeSlave)) || ($activeSlave.vagina == 0 && canDoVaginal($activeSlave))>> //This option will take $his virginity//<</if>> - <<case "obedient girlish">> <<link "Let $him get dressed and spend some quality time with $him">>