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">>