diff --git a/src/events/RESS/review/transitionAnxiety.js b/src/events/RESS/review/transitionAnxiety.js new file mode 100644 index 0000000000000000000000000000000000000000..d89ca44c581508c49b682021c5b029df6c0b368f --- /dev/null +++ b/src/events/RESS/review/transitionAnxiety.js @@ -0,0 +1,431 @@ +App.Events.RESSTransitionAnxiety = class RESSTransitionAnxiety extends App.Events.BaseEvent { + eventPrerequisites() { + return []; // always valid if sufficient actors can be cast successfully + } + + actorPrerequisites() { + return [ + [ // single event slave + s => s.fetish !== "mindbroken", + hasAnyArms, + hasAnyLegs, + s => s.assignment !== Job.QUARTER, + s => s.devotion <= 20, + s => s.trust <= -20, + s => s.genes === "XY", + s => s.dick > 0, + s => s.chastityPenis !== 1, + s => s.vagina === -1, + s => s.attrXY < 50, + ] + ]; + } + + execute(node) { + /** @type {Array<App.Entity.SlaveState>} */ + let [eventSlave] = this.actors.map(a => getSlave(a)); + const { + His, He, he, his, him, himself, girl + } = getPronouns(eventSlave); + const {hisP} = getPronouns(V.PC).appendSuffix("P"); + const belly = bellyAdjective(eventSlave); + + V.nextLink = "Next Week"; + + App.Events.drawEventArt(node, eventSlave, "no clothing"); + + const r = new SpacedTextAccumulator(node); + r.push( + App.UI.DOM.slaveDescriptionDialog(eventSlave), + `stumbles into your office naked for ${his} weekly inspection, so apprehensive that ${he} can hardly walk. ${He}'s been like this ever since ${he} became one of your sex slaves,`, + ); + if (V.week-eventSlave.weekAcquired === 0) { + r.push(`just this week.`); + } else if (V.week-eventSlave.weekAcquired === 1) { + r.push(`just last week.`); + } else { + r.push(`${V.week-eventSlave.weekAcquired} weeks ago.`); + } + r.push(`It's not surprising; slaves like ${him} usually require some time and training to accept that they're slavegirls. ${He} lacks the natural attraction to men that might have made the idea more comfortable for ${him}, and the resulting sexual anxiety combined with understandable fear of sexual use makes ${him} extremely unhappy to be naked in front of someone ${he} knows can fuck ${him} at will.`); + r.toParagraph(); + r.push(`${He} has ${his} hands balled into fists at ${his} sides, and clearly wants nothing more than to use them to cover ${his}`); + if (eventSlave.chastityPenis === 1) { + r.push(`pitiful caged dick.`); + } else if (eventSlave.balls === 0) { + r.push(`pathetic, ballsless bitchclit.`); + } else if (eventSlave.aphrodisiacs > 0 || eventSlave.inflationType === "aphrodisiac") { + r.push(`aphrodisiac-induced erection.`); + } else if (eventSlave.dick > 3) { + r.push(`impressively sized but pathetically soft dick.`); + } else { + r.push(`soft, pathetic little dick.`); + } + r.push(`${He} knows that that's not allowed, and keeps ${his} hands where they are, though it's a struggle. ${He}`); + if (canSee(eventSlave)) { + r.push(`sees you looking at`); + } else { + r.push(`knows you are eyeing`); + } + r.push(`${his} body like a slaveowner looks at one of ${hisP} sex slaves, and ${he} shivers.`); + + r.toParagraph(); + App.Events.addResponses(node, [ + canDoAnal(eventSlave) + ? new App.Events.Result(`Fuck ${him}`, fuck, eventSlave.anus === 0 ? `This option will take ${his} anal virginity` : null) + : new App.Events.Result(), + new App.Events.Result(`Humiliate ${him} in public`, humiliate) + ]); + + function fuck() { + const r = new SpacedTextAccumulator(); + r.push(`You announce that you're going to fuck ${his}`); + if (eventSlave.anus === 0) { + r.push(`virgin`); + } + r.push(`asspussy. To your complete lack of surprise, ${he} can't hide ${his} horror at the prospect of`); + if (V.PC.dick !== 0) { + r.push(`having a cock inside ${him},`); + } else { + r.push(`being fucked with a strap-on,`); + } + r.push(`and ${his}`); + if (canSee(eventSlave)) { + r.push(`wide, ${App.Desc.eyesColor(eventSlave)} track`); + } else { + r.push(`terrified face follows`); + } + r.push(`your movements closely as you stand up and`); + if (V.PC.dick !== 0) { + r.push(`reveal the formidable member`); + } else { + r.push(`don the strap-on`); + } + r.push(`you're about to breed ${him} with. You order ${him} to`); + if (hasAnyLegs(eventSlave)) { + r.push(`kneel`); + } else { + r.push(`get`); + } + r.push(`on the couch, which ${he} does, <span class="trust dec">cringing in fear of being buttfucked, but knowing disobedience will be worse;</span> and then you order ${him} to reach down and spread ${his} butt for you, as wide as it'll go. ${He} complies,`); + if (eventSlave.butt > 12) { + r.push(`grabbing as much flesh as ${he} can of each monstrous buttock and heaving them as far apart as ${he} can manage in an attempt`); + } else if (eventSlave.butt > 6) { + r.push(`taking a handful of each massive buttock and heaving them apart to reveal ${his}`); + } else if (eventSlave.butt > 3) { + r.push(`pulling ${his} plush buttocks apart`); + } else { + r.push(`even though ${his} cute ass doesn't have to be spread`); + } + r.push(`to reveal ${his}`); + if (eventSlave.anus > 2) { + r.push(`whorish anal slit.`); + } else if (eventSlave.butt > 1) { + r.push(`relaxed rear hole.`); + } else { + r.push(`tight little rosebud.`); + } + r.push(`You let ${him} soak in ${his} discomfort,`); + if (V.PC.dick !== 0) { + r.push(`stroking your cock gently`); + } else { + r.push(`rubbing a little lube on the tip of your phallus`); + } + r.push(`and letting ${him} see how big it is. ${His} cringing even extends to ${his} asshole,`); + if (eventSlave.analArea > 3) { + r.push(`the huge area of crinkled skin`); + } else if (eventSlave.analArea > 1) { + r.push(`the crinkled skin around ${his} anus`); + } else { + r.push(`${his} little pucker`); + } + r.push(`tensing as ${he} anticipates anal sex.`); + eventSlave.trust -= 3; + + r.toParagraph(); + App.Events.addResponses(node, [ + new App.Events.Result(`Make sure ${he} gets off on it`, off), + new App.Events.Result(`Rape ${him}`, rape), + ]); + return r.container(); + + function off() { + const r = new SpacedTextAccumulator(); + r.push(`You press`); + if (V.PC.dick !== 0) { + r.push(`yourself`); + } else { + r.push(`your weapon`); + } + r.push(`past ${his} sphincter with care, and ${his} posture softens a little as ${he} realizes you aren't going to hurt ${him}. Once you've hilted`); + if (V.PC.dick !== 0) { + r.push(`your cock`); + } else { + r.push(`the strap-on`); + } + r.push(`inside ${him}, you caress ${his}`); + if (eventSlave.belly >= 150000) { + r.push(`${belly} distended`); + } else if (eventSlave.weight > 95) { + r.push(`fat`); + } else if (eventSlave.belly >= 5000) { + if (eventSlave.bellyPreg >= 3000) { + r.push(`pregnancy swollen`); + } else if (eventSlave.bellyImplant >= 3000) { + r.push(`implant swollen`); + } else { + r.push(`${eventSlave.inflationType}-bloated`); + } + } else if (eventSlave.weight > 30) { + r.push(`chubby`); + } else if (eventSlave.waist < -95) { + r.push(`narrow`); + } else if (eventSlave.muscles > 30) { + r.push(`muscular`); + } else if (eventSlave.waist < -10) { + r.push(`wasp`); + } else if (eventSlave.weight > 10) { + r.push(`soft`); + } else if (eventSlave.muscles > 5) { + r.push(`toned`); + } else { + r.push(`thin`); + } + r.push(`waist, running your hands across ${his} skin. Then you`); + if (eventSlave.clitPiercing === 3) { + r.push(`activate ${his} smart frenulum piercing.`); + } else { + r.push(`secure a couple of little egg vibes to ${his} dick.`); + } + r.push(`${He} gasps as the vibration starts, and then gasps again as ${his} anus tightens involuntarily with the stimulation, squeezing the`); + if (V.PC.dick !== 0) { + r.push(`warm penis`); + } else { + r.push(`phallus`); + } + r.push(`that fills it. ${He}`); + if (eventSlave.voice > 0) { + r.push(`moans openly`); + } else { + r.push(`rasps mutely`); + } + r.push(`as you pull out and then thrust into ${him}. Much against ${his} will, ${he}`); + if (canAchieveErection(eventSlave)) { + r.push(`quickly becomes erect.`); + } else { + r.push(`starts to drip precum, which is ${his} ballsless body's way of showing arousal.`); + } + if (eventSlave.fetish === "buttslut") { + if (eventSlave.fetishKnown === 1) { + if (eventSlave.fetishStrength > 95) { + r.push(`Every time ${he} takes it up the butt, ${he}'s reminded that ${he}'s a natural buttslut, and the reminder <span class="fetish inc">helps ${him} relax and accept sodomy.</span>`); + eventSlave.fetishStrength += 10; + } else { + r.push(`${He} knows ${he} gets off easily on anal stimulation, but taking it like this still isn't ${his} favorite activity. Still, the`); + if (eventSlave.prostate > 0) { + r.push(`prostate`); + } else { + r.push(`rectal`); + } + r.push(`stimulation does its work, and ${he} <span class="devotion inc">submits to having ${his} favorite hole pleasured.</span>`); + eventSlave.devotion += 3; + } + } else { + r.push(`You notice that ${he} stiffens again, looking down at ${his} traitorous member in shock at how much ${he} enjoys the sensation of`); + if (eventSlave.prostate > 0) { + r.push(`prostate`); + } else { + r.push(`rectal`); + } + r.push(`stimulation. <span class="fetish gain">${He}'s a buttslut!</span>`); + eventSlave.fetishKnown = 1; + } + } + r.push(VCheck.Anal(eventSlave, 1)); + r.push(`Not long after you penetrate ${him}, ${he}`); + if (eventSlave.balls > 0) { + r.push(`squirts a weak ejaculation onto the couch.`); + } else { + r.push(`shivers and releases some watery fluid.`); + } + r.push(`${He} had almost forgotten that ${he} was being fucked like a girl, and stiffens uncomfortably when ${he} feels you`); + if (V.PC.dick !== 0) { + r.push(`fill ${his} rectum with your hot seed.`); + } else { + r.push(`grip ${his} hips harder and shake with your own climax.`); + } + r.push(`As ${he} gets up from the couch, ${he} seems <span class="devotion inc">subdued and submissive.</span> After all, if ${he}'s submitting to you, that absolves ${him} of responsibility for what ${he}'s becoming.`); + eventSlave.devotion += 5; + r.toParagraph(); + return r.container(); + } + + function rape() { + const r = new SpacedTextAccumulator(); + r.push(`You grab ${his} hips, getting a good grip, and spear the poor ${SlaveTitle(eventSlave)} without any hint of mercy. ${He}`); + if (eventSlave.voice > 0) { + r.push(`screams in pain and fear,`); + } else { + r.push(`sucks in a great sobbing gasp,`); + } + r.push(`and tries to wriggle away despite ${his} intention of submitting to your use, but you hold ${him} in place and rape ${his} ass.`); + r.push(VCheck.Anal(eventSlave, 1)); + r.push(`${He} tries to maintain ${his} position, crying openly, but eventually slides off ${his} perch on the couch, pulling ${his} hole off your`); + if (V.PC.dick !== 0) { + r.push(`dick.`); + } else { + r.push(`strap-on.`); + } + r.push(`You grab ${him} by`); + if (eventSlave.hLength > 20) { + r.push(`hair`); + } else { + r.push(`neck`); + } + r.push(`and smash ${his} face into the angle of the couch, leaving ${his} poor butt completely vulnerable. ${He} can't see you line up to ream ${him} again, but ${he} knows it's coming and cries, quivering. After a while, you haul ${him} up to ${his} feet and keep fucking ${him}, the uncomfortable angle of standing anal forcing new`); + if (eventSlave.voice > 0) { + r.push(`squeals`); + } else { + r.push(`rasps`); + } + r.push(`out of ${him}. You pour degradation into ${his} ear as you take your pleasure from ${his} unhappy body, telling ${him} that ${he}'s your fuckmeat. ${He} believes you, and when you finally orgasm and let ${him} slide off your hateful`); + if (V.PC.dick !== 0) { + r.push(`penis,`); + } else { + r.push(`strap-on,`); + } + r.push(`${he}'s <span class="trust dec">already terrified</span> of the next time you feel like fucking ${him}.`); + eventSlave.trust -= 5; + r.toParagraph(); + return r.container(); + } + } + + function humiliate() { + const r = new SpacedTextAccumulator(); + r.push(`You get up from behind your desk, drawing an apprehensive`); + if (canSee(eventSlave)) { + r.push(`stare.`); + } else { + r.push(`look.`); + } + r.push(`To ${his} bemusement, you order ${him} to follow you and leave your office. ${He} hurries to obey, ${his} footsteps pattering along behind you, but they become much more hesitant as you make your way out of the penthouse and ${he} realizes that ${he}'s about to be in public, naked. You don't bother looking back, knowing that ${he}'s sufficiently afraid of you to obey. On the border between your private domain and the public hustle and bustle of the arcology's public life, ${he} stops for a long moment before scurrying to catch up with you, barely even noticing that <span class="devotion inc">${he} just swallowed ${his} sense of shame</span> to obey you and avoid punishment. You stroll along, greeting leading citizens and taking in the hum of your people. ${eventSlave.slaveName} grows increasingly embarrassed under the hot stares of passersby, cringing closer and closer to your protective side as ${he} notices how`); + if (canSee(eventSlave)) { + r.push(`many gazes rest with open hunger on`); + } else { + r.push(`many lewd comments focus on`); + } + r.push(`${his} mouth, ${his} crotch, and ${his} ass.`); + eventSlave.devotion += 3; + + r.toParagraph(); + App.Events.addResponses(node, [ + new App.Events.Result(`Make ${him} perform oral on you, right here`, perform), + new App.Events.Result(`Make ${him} cum in public`, cum) + ]); + + return r.container(); + + function perform() { + const r = new SpacedTextAccumulator(); + r.push(`You reach around, place a dominating hand on ${his} shoulder, pull ${him} around in front of you, and push ${him} down to ${his} knees. ${He} quickly realizes what's coming, and ${his} ${eventSlave.skin} cheeks blush furiously as you reveal your`); + if (V.PC.dick !== 0) { + r.push(`meaty dick`); + } else { + r.push(`flushed pussy`); + } + r.push(`and offer it to ${him}. ${He} gets busy, burying ${his} head against you with a speed that seems surprising until it occurs to you that this allows ${him} to hide ${his} face. Deciding to accept this tiny compromise, you run a possessive hand`); + if (eventSlave.hLength < 5) { + r.push(`across ${his} smooth scalp`); + } else if (eventSlave.hLength < 20) { + r.push(`through ${his} short hair`); + } else { + r.push(`through ${his} tresses`); + } + r.push(`and murmur praise for ${his} enthusiasm. ${He} stiffens at the implication that ${he} wants to be`); + if (V.PC.dick !== 0) { + r.push(`polishing your penis`); + } else { + r.push(`eating you out`); + } + r.push(`in broad daylight, but after a slight pause ${he} decides that this isn't bad. As`); + if (V.PC.dick !== 0) { + r.push(`${his} head continues to bob back and forth as ${he} sucks your dick,`); + } else { + r.push(`${he} continues nuzzling ${his} nose and mouth against your wet cunt,`); + } + r.push(`${he} fails to notice ${his} <span class="devotion inc">second major submission today.</span>`); + if (eventSlave.fetish === "humiliation") { + if (eventSlave.fetishKnown === 1) { + r.push(`Since ${he} has a humiliation fetish, the embarrassment has been arousing ${him} even as it's been torturing ${him}. Unsatisfied with just this, ${his} need to be shamed obliges ${him} to cock ${his} hips and make sure onlookers can see ${his} asspussy as ${he} services you with ${his} mouth.`); + if (eventSlave.fetishStrength > 95) { + r.push(`<span class="fetish inc">${His} need for humiliation has deepened.</span>`); + eventSlave.fetishStrength += 10; + } else { + r.push(`Such abject sluttery <span class="devotion inc">helps convince ${him} of ${his} status as a slave ${girl}.</span>`); + eventSlave.devotion += 3; + } + } else { + r.push(`To your surprise, ${he} even starts to glance around, checking to verify that ${he}'s still being watched. <span class="fetish gain">${He}'s a humiliation slut!</span>`); + eventSlave.fetishKnown = 1; + } + } + eventSlave.devotion += 5; + seX(eventSlave, "oral", V.PC, "penetrative"); + r.toParagraph(); + return r.container(); + } + function cum() { + const r = new SpacedTextAccumulator(); + r.push(`You produce three little egg vibrators, which instantly steal ${his} anxious attention away from the passersby who`); + if (canSee(eventSlave)) { + r.push(`stare`); + } else { + r.push(`whistle catcalls`); + } + r.push(`at ${him}. You require ${him} to hold ${his} dick out while you use an elastic band to attach one of the vibrators to the underside of its head. ${He} doesn't get to touch ${himself} much anymore, and the half-forgotten sensations of doing so almost make ${him} forget that ${he}'s naked in public, and almost certainly about to do something very embarrassing. Then you order ${him} to hold ${his} dick up and place another vibrator`); + if (eventSlave.scrotum > 0) { + r.push(`against ${his} sensitive scrotum.`); + } else { + r.push(`against the sensitive skin where ${his} scrotum used to be.`); + } + r.push(`Finally, you order ${him} to bend over and offer you ${his} asshole. ${He} obeys, with apprehension, and is actually relieved when you just place the final vibrator against, but not inside, ${his}`); + if (eventSlave.anus > 1) { + r.push(`asspussy.`); + } else { + r.push(`pucker.`); + } + r.push(`${He} finds ${himself} ordered to kneel and put ${his} hands on ${his} head; and ordering ${him} to hold this position, you use remote control of the vibrators to force ${him} to cum twice. ${He} can't`); + if (canSee(eventSlave)) { + r.push(`tear ${his} eyes away from`); + } else { + r.push(`tune out`); + } + r.push(`the citizens who stare and laugh as ${he}`); + if (eventSlave.balls > 0) { + r.push(`spurts ${his} seed`); + } else { + r.push(`dribbles weakly`); + } + r.push(`onto the floor.`); + if (eventSlave.fetish === "humiliation") { + if (eventSlave.fetishKnown === 1) { + if (eventSlave.fetishStrength > 95) { + r.push(`Though ${he}'s still unhappy about being a slave ${girl}, <span class="fetish inc">appetite for humiliation has deepened.</span>`); + eventSlave.fetishStrength += 10; + } else { + r.push(`The abject humiliation slut climaxes harder each time, and can't stop ${himself} <span class="trust inc">glancing at you with something like trust.</span>`); + eventSlave.trust += 3; + } + } else { + r.push(`With a mix of horror and dawning arousal, ${he} discovers that ${he} enjoys the stares. <span class="fetish gain">${He}'s a humiliation slut!</span>`); + eventSlave.fetishKnown = 1; + } + } + r.push(`As ${he} follows you back to your penthouse, ${he} seems almost cheerful, and will definitely be <span class="trust inc">more trusting of strange orders</span> in the future.`); + eventSlave.trust += 5; + r.toParagraph(); + return r.container(); + } + } + } +}; diff --git a/src/events/randomEvent.js b/src/events/randomEvent.js index f529ab6989504f05c86a0f24ad5fa7b78402f092..9baf6a5f2e000a65640fe50c7b1392e1b91d7672 100644 --- a/src/events/randomEvent.js +++ b/src/events/randomEvent.js @@ -127,6 +127,7 @@ App.Events.getIndividualEvents = function() { new App.Events.RESSTittymonsterInspection(), new App.Events.RESSTooThinForCumDiet(), new App.Events.RESSTorpedoSqueeze(), + new App.Events.RESSTransitionAnxiety(), new App.Events.RESSTrustingHG(), new App.Events.RESSUnhappyVirgin(), new App.Events.RESSUsedWhore(), diff --git a/src/js/eventSelectionJS.js b/src/js/eventSelectionJS.js index 83c7fb0ea952bc1fc2e60f212469157d61ad7bde..36bbefb5efe7ed271adeb86435022d47aebc4b62 100644 --- a/src/js/eventSelectionJS.js +++ b/src/js/eventSelectionJS.js @@ -139,24 +139,6 @@ if(eventSlave.drugs === "breast injections") { } } /* closes mute exempt */ - if (eventSlave.assignment !== Job.QUARTER) { - if (eventSlave.devotion <= 20) { - if (eventSlave.trust <= -20) { - if (eventSlave.genes === "XY") { - if (eventSlave.dick > 0) { - if (eventSlave.chastityPenis !== 1) { - if (eventSlave.vagina === -1) { - if (eventSlave.attrXY < 50) { - V.RESSevent.push("transition anxiety"); - } - } - } - } - } - } - } - } - if (eventSlave.assignment !== Job.QUARTER) { if (eventSlave.boobs > 800) { if (Math.floor(eventSlave.boobsImplant / eventSlave.boobs) >= 0.60) { diff --git a/src/uncategorized/RESS.tw b/src/uncategorized/RESS.tw index a6f2c6f0a0a00e338f83586af1a46a37bdf9762a..e97ab6c05e720d4d9eac055b560057c0983efb00 100644 --- a/src/uncategorized/RESS.tw +++ b/src/uncategorized/RESS.tw @@ -54,8 +54,7 @@ "implant inspection", "sore shoulders", "spa boobs", -"terrified inspection", -"transition anxiety"].includes($RESSevent)>> +"terrified inspection"].includes($RESSevent)>> <<set $activeSlave.clothes = "no clothing">> <</if>> @@ -332,24 +331,6 @@ in the middle of the room with the machines all around $him. $He has <<if canDoV <br><br> The source of the many-voiced personal assistant becomes clear: probably on the incorrigible $activeSlave.slaveName's request, your sultry personal assistant is voicing each and every one of the machines. When the nymphomaniac masturbator tries to smile <<if hasAnyArms($activeSlave)>> and wave<</if>>, there's an absolute chorus of "Back to work, slut", "Smile less, suck more", "Take it, bitch", et cetera. Yet another instance of $assistant.name chuckles in your ear. "Care to join in, <<= properTitle()>>? I'm sure we can find room somewhere." -<<case "transition anxiety">> - -<<= App.UI.slaveDescriptionDialog($activeSlave)>> stumbles into your office naked for $his weekly inspection, so apprehensive that $he can hardly walk. $He's been like this ever since $he became one of your sex slaves, <<if $week-$activeSlave.weekAcquired == 0>>just this week<<elseif $week-$activeSlave.weekAcquired == 1>>just last week<<else>><<print $week-$activeSlave.weekAcquired>> weeks ago<</if>>. It's not surprising; slaves like $him usually require some time and training to accept that they're slavegirls. $He lacks the natural attraction to men that might have made the idea more comfortable for $him, and the resulting sexual anxiety combined with understandable fear of sexual use makes $him extremely unhappy to be naked in front of someone $he knows can fuck $him at will. -<br><br> -$He has $his hands balled into fists at $his sides, and clearly wants nothing more than to use them to cover $his -<<if ($activeSlave.chastityPenis == 1)>> - pitiful caged dick. -<<elseif $activeSlave.balls == 0>> - pathetic, ballsless bitchclit. -<<elseif $activeSlave.aphrodisiacs > 0 || $activeSlave.inflationType == "aphrodisiac">> - aphrodisiac-induced erection. -<<elseif $activeSlave.dick > 3>> - impressively sized but pathetically soft dick. -<<else>> - soft, pathetic little dick. -<</if>> -$He knows that that's not allowed, and keeps $his hands where they are, though it's a struggle. $He <<if canSee($activeSlave)>>sees you looking at<<else>>knows you are eyeing<</if>> $his body like a slaveowner looks at one of _hisP sex slaves, and $he shivers. - <<case "breast expansion blues">> During $his routine weekly inspection, <<= App.UI.slaveDescriptionDialog($activeSlave)>> cradles $his huge breasts with $his arm<<if hasBothArms($activeSlave)>>s<</if>> whenever the maneuvers of being inspected allow $him to do so. It's not an unusual gesture for a $desc on breast growth drugs, since slaves whose tits are expanding are, by definition, not used to their weight yet. But $activeSlave.slaveName is more than just uncomfortable. $He seems to regard $his weighty mammaries with distaste. <<if $activeSlave.intelligence+$activeSlave.intelligenceImplant >= -15>>$He's not stupid, and quickly realizes<<else>>$He's an idiot, but $he's not dumb enough to completely miss<</if>> that you've noticed $his feelings about $his boobs. $He bites $his lower lip, not sure if $he should say anything, so you follow your usual policy during slave inspections and ask $him about it. <<if $PC.skill.slaving >= 100>>If you learned one thing from your long career of slave training, it's that it's<<else>>It's<</if>> typically best to suss these things out. @@ -1607,160 +1588,6 @@ $He cranes $his neck, glancing over $his shoulder to give you a pleading look. <</link>><<if ($activeSlave.anus == 0 && canDoAnal($activeSlave)) || ($activeSlave.vagina == 0 && canDoVaginal($activeSlave))>> //This option will take $his virginity//<</if>> <</if>> -<<case "transition anxiety">> - -<<if canDoAnal($activeSlave)>> - <<link "Fuck $him">> - <<replace "#result">> - You announce that you're going to fuck $his <<if $activeSlave.anus == 0>>virgin <</if>>asspussy. To your complete lack of surprise, $he can't hide $his horror at the prospect of <<if $PC.dick != 0>>having a cock inside $him<<else>>being fucked with a strap-on<</if>>, and $his <<if canSee($activeSlave)>>wide, <<= App.Desc.eyesColor($activeSlave)>> track<<else>>terrified face follows<</if>> your movements closely as you stand up and <<if $PC.dick != 0>>reveal the formidable member<<else>>don the strap-on<</if>> you're about to breed $him with. You order $him to <<if hasAnyLegs($activeSlave)>>kneel<<else>>get<</if>> on the couch, which $he does, @@.gold;cringing in fear of being buttfucked, but knowing disobedience will be worse;@@ and then you order $him to reach down and spread $his butt for you, as wide as it'll go. $He complies, - <<if $activeSlave.butt > 12>> - grabbing as much flesh as $he can of each monstrous buttock and heaving them as far apart as $he can manage in an attempt - <<elseif $activeSlave.butt > 6>> - taking a handful of each massive buttock and heaving them apart to reveal $his - <<elseif $activeSlave.butt > 3>> - pulling $his plush buttocks apart - <<else>> - even though $his cute ass doesn't have to be spread - <</if>> - to reveal $his - <<if $activeSlave.anus > 2>> - whorish anal slit. - <<elseif $activeSlave.butt > 1>> - relaxed rear hole. - <<else>> - tight little rosebud. - <</if>> - You let $him soak in $his discomfort, <<if $PC.dick != 0>>stroking your cock gently<<else>>rubbing a little lube on the tip of your phallus<</if>> and letting $him see how big it is. $His cringing even extends to $his asshole, - <<if $activeSlave.analArea > 3>> - the huge area of crinkled skin - <<elseif $activeSlave.analArea > 1>> - the crinkled skin around $his anus - <<else>> - $his little pucker - <</if>> - tensing as $he anticipates anal sex. - <<set $activeSlave.trust -= 3>> - <br><br><span id="result2"> - <<link "Make sure $he gets off on it">> - <<replace "#result2">> - You press <<if $PC.dick != 0>>yourself<<else>>your weapon<</if>> past $his sphincter with care, and $his posture softens a little as $he realizes you aren't going to hurt $him. Once you've hilted <<if $PC.dick != 0>>your cock<<else>>the strap-on<</if>> inside $him, you caress $his - <<if $activeSlave.belly >= 150000>> - _belly distended - <<elseif $activeSlave.weight > 95>> - fat - <<elseif $activeSlave.belly >= 5000>> - <<if $activeSlave.bellyPreg >= 3000>> - pregnancy swollen - <<elseif $activeSlave.bellyImplant >= 3000>> - implant swollen - <<else>> - <<print $activeSlave.inflationType>>-bloated - <</if>> - <<elseif $activeSlave.weight > 30>> - chubby - <<elseif $activeSlave.waist < -95>> - narrow - <<elseif $activeSlave.muscles > 30>> - muscular - <<elseif $activeSlave.waist < -10>> - wasp - <<elseif $activeSlave.weight > 10>> - soft - <<elseif $activeSlave.muscles > 5>> - toned - <<else>> - thin - <</if>> - waist, running your hands across $his skin. Then you <<if $activeSlave.clitPiercing == 3>>activate $his smart frenulum piercing<<else>>secure a couple of little egg vibes to $his dick<</if>>. $He gasps as the vibration starts, and then gasps again as $his anus tightens involuntarily with the stimulation, squeezing the <<if $PC.dick != 0>>warm penis<<else>>phallus<</if>> that fills it. $He <<if $activeSlave.voice > 0>>moans openly<<else>>rasps mutely<</if>> as you pull out and then thrust into $him. Much against $his will, $he <<if canAchieveErection($activeSlave)>>quickly becomes erect<<else>>starts to drip precum, which is $his ballsless body's way of showing arousal<</if>>. - <<if $activeSlave.fetish == "buttslut">> - <<if $activeSlave.fetishKnown == 1>> - <<if $activeSlave.fetishStrength > 95>> - Every time $he takes it up the butt, $he's reminded that $he's a natural buttslut, and the reminder @@.lightsalmon;helps $him relax and accept sodomy.@@ - <<set $activeSlave.fetishStrength += 10>> - <<else>> - $He knows $he gets off easily on anal stimulation, but taking it like this still isn't $his favorite activity. Still, the <<if $activeSlave.prostate > 0>>prostate<<else>>rectal<</if>> stimulation does its work, and $he @@.hotpink;submits to having $his favorite hole pleasured.@@ - <<set $activeSlave.devotion += 3>> - <</if>> - <<else>> - You notice that $he stiffens again, looking down at $his traitorous member in shock at how much $he enjoys the sensation of <<if $activeSlave.prostate > 0>>prostate<<else>>rectal<</if>> stimulation. @@.lightsalmon;$He's a buttslut!@@ - <<set $activeSlave.fetishKnown = 1>> - <</if>> - <</if>> - <<= VCheck.Anal($activeSlave, 1)>> - Not long after you penetrate $him, $he - <<if $activeSlave.balls > 0>> - squirts a weak ejaculation onto the couch. - <<else>> - shivers and releases some watery fluid. - <</if>> - $He had almost forgotten that $he was being fucked like a girl, and stiffens uncomfortably when $he feels you <<if $PC.dick != 0>>fill $his rectum with your hot seed<<else>>grip $his hips harder and shake with your own climax<</if>>. As $he gets up from the couch, $he seems @@.hotpink;subdued and submissive.@@ After all, if $he's submitting to you, that absolves $him of responsibility for what $he's becoming. - <<set $activeSlave.devotion += 5>> - <</replace>> - <</link>> - <br><<link "Rape $him">> - <<replace "#result2">> - You grab $his hips, getting a good grip, and spear the poor $desc without any hint of mercy. $He <<if $activeSlave.voice > 0>>screams in pain and fear<<else>>sucks in a great sobbing gasp<</if>>, and tries to wriggle away despite $his intention of submitting to your use, but you hold $him in place and rape $his ass. - <<= VCheck.Anal($activeSlave, 1)>> - $He tries to maintain $his position, crying openly, but eventually slides off $his perch on the couch, pulling $his hole off your <<if $PC.dick != 0>>dick<<else>>strap-on<</if>>. You grab $him by <<if $activeSlave.hLength > 20>>hair<<else>>neck<</if>> and smash $his face into the angle of the couch, leaving $his poor butt completely vulnerable. $He can't see you line up to ream $him again, but $he knows it's coming and cries, quivering. After a while, you haul $him up to $his feet and keep fucking $him, the uncomfortable angle of standing anal forcing new <<if $activeSlave.voice > 0>>squeals<<else>>rasps<</if>> out of $him. You pour degradation into $his ear as you take your pleasure from $his unhappy body, telling $him that $he's your fuckmeat. $He believes you, and when you finally orgasm and let $him slide off your hateful <<if $PC.dick != 0>>penis<<else>>strap-on<</if>>, $he's @@.gold;already terrified@@ of the next time you feel like fucking $him. - <<set $activeSlave.trust -= 5>> - <</replace>> - <</link>> - </span> - <</replace>> - <</link>><<if $activeSlave.anus == 0>> //This option will take $his anal virginity//<</if>> -<</if>> -<br><<link "Humiliate $him in public">> - <<replace "#result">> - You get up from behind your desk, drawing an apprehensive <<if canSee($activeSlave)>>stare<<else>>look<</if>>. To $his bemusement, you order $him to follow you and leave your office. $He hurries to obey, $his footsteps pattering along behind you, but they become much more hesitant as you make your way out of the penthouse and $he realizes that $he's about to be in public, naked. You don't bother looking back, knowing that $he's sufficiently afraid of you to obey. On the border between your private domain and the public hustle and bustle of the arcology's public life, $he stops for a long moment before scurrying to catch up with you, barely even noticing that @@.hotpink;$he just swallowed $his sense of shame@@ to obey you and avoid punishment. You stroll along, greeting leading citizens and taking in the hum of your people. $activeSlave.slaveName grows increasingly embarrassed under the hot stares of passersby, cringing closer and closer to your protective side as $he notices how <<if canSee($activeSlave)>>many gazes rest with open hunger on<<else>>many lewd comments focus on<</if>> $his mouth, $his crotch, and $his ass. - <<set $activeSlave.devotion += 3>> - <br><br><span id="result2"> - <<link "Make $him perform oral on you, right here">> - <<replace "#result2">> - You reach around, place a dominating hand on $his shoulder, pull $him around in front of you, and push $him down to $his knees. $He quickly realizes what's coming, and $his $activeSlave.skin cheeks blush furiously as you reveal your <<if $PC.dick != 0>>meaty dick<<else>>flushed pussy<</if>> and offer it to $him. $He gets busy, burying $his head against you with a speed that seems surprising until it occurs to you that this allows $him to hide $his face. Deciding to accept this tiny compromise, you run a possessive hand <<if $activeSlave.hLength < 5>>across $his smooth scalp<<elseif $activeSlave.hLength < 20>>through $his short hair<<else>>through $his tresses<</if>> and murmur praise for $his enthusiasm. $He stiffens at the implication that $he wants to be <<if $PC.dick != 0>>polishing your penis<<else>>eating you out<</if>> in broad daylight, but after a slight pause $he decides that this isn't bad. As <<if $PC.dick != 0>>$his head continues to bob back and forth as $he sucks your dick<<else>>$he continues nuzzling $his nose and mouth against your wet cunt<</if>>, $he fails to notice $his @@.hotpink;second major submission today.@@ - <<if $activeSlave.fetish == "humiliation">> - <<if $activeSlave.fetishKnown == 1>> - Since $he has a humiliation fetish, the embarrassment has been arousing $him even as it's been torturing $him. Unsatisfied with just this, $his need to be shamed obliges $him to cock $his hips and make sure onlookers can see $his asspussy as $he services you with $his mouth. - <<if $activeSlave.fetishStrength > 95>> - @@.lightsalmon;$His need for humiliation has deepened.@@ - <<set $activeSlave.fetishStrength += 10>> - <<else>> - Such abject sluttery @@.hotpink;helps convince $him of $his status as a slave $girl.@@ - <<set $activeSlave.devotion += 3>> - <</if>> - <<else>> - To your surprise, $he even starts to glance around, checking to verify that $he's still being watched. @@.lightsalmon;$He's a humiliation slut!@@ - <<set $activeSlave.fetishKnown = 1>> - <</if>> - <</if>> - <<set $activeSlave.devotion += 5>> - <<run seX($activeSlave, "oral", $PC, "penetrative")>> - <</replace>> - <</link>> - <br><<link "Make $him cum in public">> - <<replace "#result2">> - You produce three little egg vibrators, which instantly steal $his anxious attention away from the passersby who <<if canSee($activeSlave)>>stare<<else>>whistle catcalls<</if>> at $him. You require $him to hold $his dick out while you use an elastic band to attach one of the vibrators to the underside of its head. $He doesn't get to touch $himself much anymore, and the half-forgotten sensations of doing so almost make $him forget that $he's naked in public, and almost certainly about to do something very embarrassing. Then you order $him to hold $his dick up and place another vibrator <<if $activeSlave.scrotum > 0>>against $his sensitive scrotum<<else>>against the sensitive skin where $his scrotum used to be<</if>>. Finally, you order $him to bend over and offer you $his asshole. $He obeys, with apprehension, and is actually relieved when you just place the final vibrator against, but not inside, $his <<if $activeSlave.anus > 1>>asspussy<<else>>pucker<</if>>. $He finds $himself ordered to kneel and put $his hands on $his head; and ordering $him to hold this position, you use remote control of the vibrators to force $him to cum twice. $He can't <<if canSee($activeSlave)>>tear $his eyes away from<<else>>tune out<</if>> the citizens who stare and laugh as $he <<if $activeSlave.balls > 0>>spurts $his seed<<else>>dribbles weakly<</if>> onto the floor. - <<if $activeSlave.fetish == "humiliation">> - <<if $activeSlave.fetishKnown == 1>> - <<if $activeSlave.fetishStrength > 95>> - Though $he's still unhappy about being a slave $girl, @@.lightsalmon;appetite for humiliation has deepened.@@ - <<set $activeSlave.fetishStrength += 10>> - <<else>> - The abject humiliation slut climaxes harder each time, and can't stop $himself @@.mediumaquamarine;glancing at you with something like trust.@@ - <<set $activeSlave.trust += 3>> - <</if>> - <<else>> - With a mix of horror and dawning arousal, $he discovers that $he enjoys the stares. @@.lightsalmon;$He's a humiliation slut!@@ - <<set $activeSlave.fetishKnown = 1>> - <</if>> - <</if>> - As $he follows you back to your penthouse, $he seems almost cheerful, and will definitely be @@.mediumaquamarine;more trusting of strange orders@@ in the future. - <<set $activeSlave.trust += 5>> - <</replace>> - <</link>> - </span> - <</replace>> -<</link>> - <<case "breast expansion blues">> <<link "Let $him know $he'll be growing as fast as possible">>