diff --git a/src/events/RE/reMalefactor.js b/src/events/RE/reMalefactor.js
index 5432b60016000e4dc9b7a20db0dd9b109da31f02..46866b331714d8833acaf11b52dffbdac28d8d9a 100644
--- a/src/events/RE/reMalefactor.js
+++ b/src/events/RE/reMalefactor.js
@@ -477,6 +477,7 @@ App.Events.REMalefactor = class REMalefactor extends App.Events.BaseEvent {
 
 			slave.devotion = 25;
 			slave.trust = 25;
+			V.RECheckInIDs.push({ID: slave.ID, type: "adoptFollowUp"});
 			slave.origin = "$He was an orphan forced to live and steal on the streets until you adopted $him.";
 
 			cashX(forceNeg(contractCost), "slaveTransfer", slave);
diff --git a/src/events/RECI/adoptFollowUp.js b/src/events/RECI/adoptFollowUp.js
new file mode 100644
index 0000000000000000000000000000000000000000..a4fa9b9fc477161927bb0b67acf927264df2e281
--- /dev/null
+++ b/src/events/RECI/adoptFollowUp.js
@@ -0,0 +1,86 @@
+App.Events.RECIAdoptFollowUp = class RECIAdoptFollowUp extends App.Events.BaseEvent {
+	eventPrerequisites() {
+		return []; // always valid if sufficient actors can be cast successfully
+	}
+
+	actorPrerequisites() { // single event slave
+		return [
+			[
+				s => s.fetish !== Fetish.MINDBROKEN,
+				s => this.validSlave(s),
+				s => s.devotion >= 50,
+				s => s.trust >= 50,
+			]
+		];
+	};
+
+	validSlave(slave) {
+		return V.RECheckInIDs.some((a) => (a.ID === slave.ID && a.type === "adoptFollowUp"));
+	}
+
+	get weight() { return 5; }; // given the very restrictive qualifiers, give it a bit more weight.
+
+	execute(node) {
+		/** @type {Array<App.Entity.SlaveState>} */
+		const [eventSlave] = this.actors.map(a => getSlave(a));
+		const { title: Master } = getEnunciation(eventSlave);
+		const { He, he, His, his, him } = getPronouns(eventSlave);
+		V.RECheckInIDs.deleteWith((s) => s.ID === eventSlave.ID && s.type === "adoptFollowUp");
+		App.Events.drawEventArt(node, eventSlave);
+
+		App.Events.addNode(node, [
+			`While in your office, you receive an unscheduled visit from ${eventSlave.slaveName}.`,
+			`${He} seems a bit nervous and before you can ask ${him} what ${he} wants,`,
+			`${he} suddenly ${canTalk(eventSlave) ? `blurts out`: `attempts to convey via sign language`} a speech that seems half-prepared and half-rambling.`,
+		], "p");
+
+		if (canTalk(eventSlave)) {
+			App.Events.addNode(node, [`"${Spoken(eventSlave,
+				`Thank you for adopting me, ${Master}!
+				I'm so grateful that you took me in!
+				Everything was bad before, I could barely get food and didn't know where I was or what to do.
+				You have taught me so much!
+				At first I thought doing the things you wanted was horrible and disgusting, but you gave me such a good life!
+				I don't care if I have to get fucked all the time, it's fun anyway!
+				I love being with you ${Master}, you made my life so much better!
+				You're... you're everything to me!`
+			)}"`], "p");
+		} else {
+			App.Events.addNode(node, [`Profusely thanking you for adopting ${him} and how ${his} life has improved since then, despite a rocky start.`], "p");
+		}
+
+		App.Events.addResponses(node, [
+			new App.Events.Result(`Reward ${him} with a loving fuck`, love, (eventSlave.anus === 0 || eventSlave.vagina === 0) ? App.UI.DOM.makeElement("span", `Virginity will be lost`, ["yellow"]) : ``),
+			new App.Events.Result(`This slave has forgotten ${his} place`, rape, (eventSlave.anus === 0 || eventSlave.vagina === 0) ? App.UI.DOM.makeElement("span", `Virginity will be lost`, ["yellow"]) : ``),
+		]);
+
+		function love() {
+			SimpleSexAct.Player(eventSlave);
+			eventSlave.devotion += 5;
+			eventSlave.trust += 5;
+			return App.Events.addNode(node, [
+				VCheck.Simple(eventSlave),
+				`Wordlessly, you move towards ${eventSlave.slaveName}, who flinches slightly at your sudden presence.`,
+				`You grip ${his} hips, pulling ${him} in close.`,
+				`${His} face is beet red, and you can feel ${his} heart beating against your chest.`,
+				`You kiss ${him} deeply before pressing ${his} against a nearby wall and lifting ${him} so you can hilt your ${V.PC.dick > 0 ? 'cock' : 'strap-on'} deep inside.`,
+				`You make <span class="trust inc">slow and gentle love</span> to ${him}, savoring every moment.`,
+				`When you finally cum inside and gently lower ${him} back down onto the floor, ${he} hugs you and ${canTalk(eventSlave) ? `whispers,`: `stares`}`,
+				`"<span class="devotion inc">${canTalk(eventSlave) ? Spoken(eventSlave, `I love you, ${Master}.`) : `into your eyes lovingly.`}</span>"`,
+			]);
+		};
+
+		function rape() {
+			SimpleSexAct.Player(eventSlave);
+			eventSlave.devotion -= 5;
+			eventSlave.trust -= 5;
+			return App.Events.addNode(node, [
+				VCheck.Simple(eventSlave),
+				`You abruptly stand up from your desk and explain to ${eventSlave.slaveName} that you didn't adopt ${him}... You enslaved ${him}, and that ${he} needs to learn ${his} place and the difference.`,
+				`You grab ${him} and <span class="trust dec">roughly throw</span> ${him} onto the nearby couch before grabbing ${him} by the neck and shoving ${his} head into the cushions.`,
+				`You penetrate ${him} hard, without warning, and proceed to rape ${him} like ${he}'s never been raped before.`,
+				`<span class="devotion dec">By the time you are done,</span> ${he} is a whimpering, sobbing mess with a gaped out hole.`,
+			]);
+		};
+	};
+};
diff --git a/src/events/randomEvent.js b/src/events/randomEvent.js
index 4cd1f7f9f0eac790c9270089237279c18d3ac92e..448e75a74401df3ec809e00d3304fb1ceccd0f47 100644
--- a/src/events/randomEvent.js
+++ b/src/events/randomEvent.js
@@ -155,6 +155,7 @@ App.Events.getIndividualEvents = function() {
 		new App.Events.RESSWetDreams(),
 		new App.Events.RESSWhoreRebellious(),
 
+		new App.Events.RECIAdoptFollowUp(),
 		new App.Events.RECIButthole(),
 		new App.Events.RECIFeminization(),
 		new App.Events.RECIFuta(),