diff --git a/src/events/RESS/plugDisobedience.js b/src/events/RESS/plugDisobedience.js new file mode 100644 index 0000000000000000000000000000000000000000..9f5ebd4a0d616966889c2fb898bd9d75138a60ad --- /dev/null +++ b/src/events/RESS/plugDisobedience.js @@ -0,0 +1,106 @@ +App.Events.RESSPlugDisobedience = class RESSPlugDisobedience 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 => plugWidth(s) > 1, + s => s.devotion <= 20, + s => s.trust >= -50, + s => s.anus < 3, + s => s.assignment !== Job.CONFINEMENT, + isSlaveAvailable, + ] + ]; + } + + execute(node) { + /** @type {Array<App.Entity.SlaveState>} */ + let [eventSlave] = this.actors.map(a => getSlave(a)); + const { + He, he, his, him, girl + } = getPronouns(eventSlave); + const {title: Master} = getEnunciation(eventSlave); + const belly = bellyAdjective(eventSlave); + + V.nextLink = "Next Week"; + + App.Events.drawEventArt(node, eventSlave); + + let r = []; + r.push(`One morning, you see`); + r.push(contextualIntro(V.PC, eventSlave, "DOM")); + if (!canWalk(eventSlave)) { + r.push(`crawl`); + } else if (shoeHeelCategory(eventSlave) > 1) { + r.push(`totter`); + } else if (eventSlave.belly >= 10000) { + r.push(`waddle`); + } else { + r.push(`walk`); + } + r.push(`hurriedly past your door, as though ${he} doesn't want you to notice ${him}. Of course, this only makes you notice ${him}, and you order ${him} in. As ${he} reluctantly obeys, you notice something off about ${his} gait. ${He} should be quite uncomfortable from the big buttplug ${he} is required to wear, but ${he} doesn't seem to be.`); + App.Events.addParagraph(node, r); + + r = []; + r.push(`Your order ${him} to turn around and present ${his} anus for inspection. ${He} doesn't refuse, exactly, but neither does ${he} obey. ${He} keeps ${his} butt pointed resolutely away from you, and backs away a little. You cover the distance between you in three steps and run a clinical hand between the terrified slave's buttocks. As you suspected, ${he} isn't wearing ${his} buttplug.`); + if (!canTalk(eventSlave)) { + r.push(`${He} gestures pitifully, complaining that the plug hurts.`); + } else { + r.push(`${He} whines pitifully,`); + r.push(Spoken(eventSlave, `"That thing hurts, ${Master}. It's too big for my asshole. Please don't make me wear it."`)); + } + + App.Events.addParagraph(node, r); + App.Events.addResponses(node, [ + new App.Events.Result(`It's ${his} role to hurt`, hurt), + new App.Events.Result(`Punish ${him} for disobedience, but address ${his} anal pain`, punish), + new App.Events.Result(`Address ${his} worrisome anal pain`, address), + ]); + + function hurt() { + r = []; + r.push(`Without a word, you`); + if (V.PC.dick === 0) { + r.push(`don a cruelly knobby strap-on,`); + } + r.push(`throw ${him} onto the couch, take both ${his} ankles in one hand, and force them back over ${his} head so ${his} poor, doomed asshole is completely defenseless. You then spit on ${his} hole, seize your`); + if (V.PC.dick === 0) { + r.push(`instrument,`); + } else { + r.push(`rock-hard dick,`); + if (V.PC.vagina !== -1) { + r.push(`gather a little of your own pussyjuice and rub it on your cockhead,`); + } + } + r.push(`and shove it up the wriggling slave ${girl}'s spasming rectum. You've got the necessary skill to judge exactly where the line between anal pain and anal injury is, and you take ${his} right up to it. Halfway through the long anal rape ${he} gives up struggling and just goes limp, sobbing. ${He} <span class="trust dec">fears you,</span> and has also begun to <span class="flaw gain">hate buttsex.</span>`); + eventSlave.trust -= 5; + eventSlave.sexualFlaw = "hates anal"; + seX(eventSlave, "anal", V.PC, "penetrative"); + return r; + } + + function punish() { + r = []; + r.push(`You patiently and calmly explain to ${him} that disobeying orders isn't acceptable, but that too much pain from ${his} buttplug is a sign that something isn't right. First, you inform ${him}, ${he} will have to be punished for the disobedience, since ${he} should have brought ${his} trouble to you instead of disobeying. ${He}'s almost willing as you bend ${him} over`); + if (eventSlave.belly >= 300000) { + r.push(`${his} ${belly} middle`); + } else { + r.push(`the desk`); + } + r.push(`and spank ${his} buttocks severely, unsure whether to resent the corporal punishment or appreciate your measured response. When you're done tanning ${his} ass, ${he}'s surprised to feel a cool, lubricated digit working its way into ${his} anus. ${He} stiffens a little but eventually relaxes enough to take the finger, then two, and finally three, before you gently and slowly emplace ${his} plug. You instruct ${him} kindly on how to relax in the future when ${he} inserts it on ${his} own. ${He} <span class="devotion inc">appreciates</span> your approach.`); + eventSlave.devotion += 4; + return r; + } + + function address() { + eventSlave.trust += 4; + return `You kindly explain how to relax and prepare one's asshole for such insertions. ${He}'s been told already, but you make ${him} fetch ${his} plug and go through the steps in front of you so you can check ${his} approach. ${He} leaves reminded how to wear ${his} plug, but <span class="mediumaquamarine">secretly relieved</span> ${he} got away with disobedience with nothing more than a lecture.`; + } + } +}; diff --git a/src/events/randomEvent.js b/src/events/randomEvent.js index f4351c7c67029bad1e7781ec768cf0b04e3c5dd7..8efed9747a63809f435de6fd289d710cd1a06dd2 100644 --- a/src/events/randomEvent.js +++ b/src/events/randomEvent.js @@ -48,6 +48,7 @@ App.Events.getIndividualEvents = function() { new App.Events.RESSObedientShemale(), new App.Events.RESSPassingDeclaration(), new App.Events.RESSPermittedMasturbation(), + new App.Events.RESSPlugDisobedience(), new App.Events.RESSRestrictedSmart(), new App.Events.RESSPenitent(), new App.Events.RESSRetchingCum(), diff --git a/src/js/eventSelectionJS.js b/src/js/eventSelectionJS.js index 7d52c39753312868a83101c06cd76cf5960ea5db..2c4080708b755498991cbb62518ae83571366af6 100644 --- a/src/js/eventSelectionJS.js +++ b/src/js/eventSelectionJS.js @@ -713,18 +713,6 @@ if(eventSlave.drugs === "breast injections") { } } - if (plugWidth(eventSlave) > 1) { - if (eventSlave.assignment !== Job.CONFINEMENT && isSlaveAvailable(eventSlave)) { - if (eventSlave.devotion <= 20) { - if (eventSlave.trust >= -50) { - if (eventSlave.anus < 3) { - V.RESSevent.push("plug disobedience"); - } - } - } - } - } - if ([Job.PUBLIC, Job.WHORE].includes(eventSlave.assignment)) { if (eventSlave.vagina !== 0) { if (eventSlave.anus !== 0) { diff --git a/src/uncategorized/RESS.tw b/src/uncategorized/RESS.tw index f2b4fc6c7f2daeb7e786fc4e17a7694e7d8177fd..da0fb4967d2812524d0d20b687612c194c57d58e 100644 --- a/src/uncategorized/RESS.tw +++ b/src/uncategorized/RESS.tw @@ -1008,27 +1008,6 @@ $he is. You've been busy and haven't used $him for a while, and since $he's acce <</if>> <<if $activeSlave.belly >= 10000>>$His <<if $activeSlave.bellyPreg >= 8000>>advanced pregnancy<<else>>greatly distended belly<</if>> gives $him a comically rounded appearance. <</if>><<if $activeSlave.boobs > 4000>>$He's almost smothered by $his gigantic breasts as $he lies there; $his remaining body is almost half breasts.<</if>> -<<case "plug disobedience">> - -One morning, you see <<= App.UI.slaveDescriptionDialog($activeSlave)>> -<<if !canWalk($activeSlave)>> - crawl -<<elseif shoeHeelCategory($activeSlave) > 1>> - totter -<<elseif $activeSlave.belly >= 10000>> - waddle -<<else>> - walk -<</if>> -hurriedly past your door, as though $he doesn't want you to notice $him. Of course, this only makes you notice $him, and you order $him in. As $he reluctantly obeys, you notice something off about $his gait. $He should be quite uncomfortable from the big buttplug $he is required to wear, but $he doesn't seem to be. -<br><br> -Your order $him to turn around and present $his anus for inspection. $He doesn't refuse, exactly, but neither does $he obey. $He keeps $his butt pointed resolutely away from you, and backs away a little. You cover the distance between you in three steps and run a clinical hand between the terrified slave's buttocks. As you suspected, $he isn't wearing $his buttplug. -<<if !canTalk($activeSlave)>> - $He gestures pitifully, complaining that the plug hurts. -<<else>> - $He whines pitifully, "That thing hurt<<s>>, <<Master>>. It'<<s>> too big for my a<<ss>>hole. Plea<<s>>e don't make me wear it." -<</if>> - <<case "age implant">> In the morning the penthouse is a busy bustle of female energy. Slaves get up promptly, eat, shower, dress themselves, and head out to work. They chatter if able and allowed, and draw a good deal of strength from each other. As you pass by the kitchen, you are narrowly avoided by a rush of slaves heading to the showers. They're almost bouncing, feeding off each others' youthful energy. At the back of the pack is <<= App.UI.slaveDescriptionDialog($activeSlave)>>. $He looks as young as any of them, but after they're out, $he leans against the door frame for a moment and exhales slowly. @@ -6166,28 +6145,6 @@ $He cranes $his neck, glancing over $his shoulder to give you a pleading look. <</replace>> <</link>> -<<case "plug disobedience">> - -<<link "It's $his role to hurt">> - <<replace "#result">> - Without a word, you<<if $PC.dick == 0>> don a cruelly knobby strap-on,<</if>> throw $him onto the couch, take both $his ankles in one hand, and force them back over $his head so $his poor, doomed asshole is completely defenseless. You then spit on $his hole, seize your <<if $PC.dick == 0>>instrument<<else>>rock-hard dick<<if $PC.vagina != -1>>, gather a little of your own pussyjuice and rub it on your cockhead<</if>><</if>>, and shove it up the wriggling slave $girl's spasming rectum. You've got the necessary skill to judge exactly where the line between anal pain and anal injury is, and you take $his right up to it. Halfway through the long anal rape $he gives up struggling and just goes limp, sobbing. $He @@.hotpink;fears you,@@ and has also begun to @@.red;hate buttsex.@@ - <<set $activeSlave.trust -= 5, $activeSlave.sexualFlaw = "hates anal">> - <<run seX($activeSlave, "anal", $PC, "penetrative")>> - <</replace>> -<</link>> -<br><<link "Punish $him for disobedience, but address $his anal pain">> - <<replace "#result">> - You patiently and calmly explain to $him that disobeying orders isn't acceptable, but that too much pain from $his buttplug is a sign that something isn't right. First, you inform $him, $he will have to be punished for the disobedience, since $he should have brought $his trouble to you instead of disobeying. $He's almost willing as you bend $him over <<if $activeSlave.belly >= 300000>>$his _belly middle<<else>>the desk<</if>> and spank $his buttocks severely, unsure whether to resent the corporal punishment or appreciate your measured response. When you're done tanning $his ass, $he's surprised to feel a cool, lubricated digit working its way into $his anus. $He stiffens a little but eventually relaxes enough to take the finger, then two, and finally three, before you gently and slowly emplace $his plug. You instruct $him kindly on how to relax in the future when $he inserts it on $his own. $He @@.hotpink;appreciates@@ your approach. - <<set $activeSlave.devotion += 4>> - <</replace>> -<</link>> -<br><<link "Address $his worrisome anal pain">> - <<replace "#result">> - You kindly explain how to relax and prepare one's asshole for such insertions. $He's been told already, but you make $him fetch $his plug and go through the steps in front of you so you can check $his approach. $He leaves reminded how to wear $his plug, but @@.mediumaquamarine;secretly relieved@@ $he got away with disobedience with nothing more than a lecture. - <<set $activeSlave.trust += 4>> - <</replace>> -<</link>> - <<case "age implant">> <<link "Go out clubbing to make $him feel young again">>