diff --git a/src/events/RESS/arcadeSadist.js b/src/events/RESS/arcadeSadist.js
index 8a6e5530b1af5c992f572a7b8c93b8ec0ed31729..61f9962cc1e8fff23eb5cb7943008f0ab7f447e7 100644
--- a/src/events/RESS/arcadeSadist.js
+++ b/src/events/RESS/arcadeSadist.js
@@ -13,8 +13,9 @@ App.Events.RESSArcadeSadist = class RESSArcadeSadist extends App.Events.BaseEven
 				s => s.fetishStrength > 20,
 				s => s.fetishKnown === 1,
 				hasAnyArms,
-				hasAnyLegs,
+				canMove,
 				canTalk,
+				canHear,
 				s => s.devotion > 50,
 				s => s.trust >= -20,
 				s => s.belly < 300000,
@@ -56,7 +57,7 @@ App.Events.RESSArcadeSadist = class RESSArcadeSadist extends App.Events.BaseEven
 		r = [];
 
 		r.push(Spoken(eventSlave, `"Sorry, ${Master},"`), `he ${say}s apologetically,`);
-		if (eventSlave.belly >= 10000) {
+		if (eventSlave.belly >= 10000 || eventSlave.weight > 160) {
 			r.push(`struggling`);
 		} else {
 			r.push(`scrambling`);
@@ -65,10 +66,8 @@ App.Events.RESSArcadeSadist = class RESSArcadeSadist extends App.Events.BaseEven
 		r.push(Spoken(eventSlave, `"I didn't notice you there."`));
 		if (canSee(eventSlave)) {
 			r.push(`Seeing your questioning look,`);
-		} else if (canHear(eventSlave)) {
-			r.push(`Hearing your lack of response,`);
 		} else {
-			r.push(`Sensing a request to continue,`);
+			r.push(`Hearing your lack of response,`);
 		}
 		r.push(`${he} explains ${himself} further.`);
 		r.push(Spoken(eventSlave, `"I was just thinking about, um, my favorite place. I can almost get off just by thinking about it."`));
@@ -80,7 +79,6 @@ App.Events.RESSArcadeSadist = class RESSArcadeSadist extends App.Events.BaseEven
 		}
 		r.push(`${He}'s a confirmed sadist, so whatever ${his} favorite mental masturbation is probably quite strong.`);
 
-
 		App.Events.addParagraph(node, r);
 		App.Events.addResponses(node, [
 			new App.Events.Result(`Ask ${him} about ${his} fantasy`, fantasy),
@@ -96,7 +94,7 @@ App.Events.RESSArcadeSadist = class RESSArcadeSadist extends App.Events.BaseEven
 			r.push(`You order ${him} to explain further.`);
 			r.push(Spoken(eventSlave, `"${Master},"`), `${he} ${say}s carefully,`, Spoken(eventSlave, `"it's ${V.arcadeName}. There's a specific place there, and, well, I can't describe it. It's in the service area under ${V.arcadeName}. Can I show you what I mean?"`));
 			r.push(`Intrigued, you order ${him} to show you the place ${he}'s talking about, and lead ${him} to ${V.arcadeName} through the access hallway. ${He} points to the service tunnel under one of the rows of inmates, which allows trusted slaves to clean up and perform maintenance.`);
-			if (eventSlave.belly >= 100000) {
+			if (eventSlave.belly >= 100000 || eventSlave.weight > 160) {
 				r.push(`Once you've managed to shove the massive slut`);
 			} else if (eventSlave.belly >= 5000) {
 				r.push(`Once you've helped the`);
@@ -112,12 +110,10 @@ App.Events.RESSArcadeSadist = class RESSArcadeSadist extends App.Events.BaseEven
 			r.push(`in there, ${he} stops and`);
 			if (canSee(eventSlave)) {
 				r.push(`watches`);
-			} else if (canHear(eventSlave)) {
-				r.push(`listens`);
 			} else {
-				r.push(`waits`);
+				r.push(`listens`);
 			}
-			if (V.PC.belly >= 100000) {
+			if (V.PC.belly >= 100000 || V.PC.weight > 130) {
 				r.push(r.pop() + `as you struggle to join ${him} in the increasingly cramped space.`);
 			} else if (V.PC.belly >= 5000) {
 				r.push(r.pop() + `as you gently slip your motherly body in after ${him}.`);
@@ -169,36 +165,48 @@ App.Events.RESSArcadeSadist = class RESSArcadeSadist extends App.Events.BaseEven
 				}
 				r.push(`${his} ${eventSlave.nipples} nipples to stop ${him} from getting off too soon, you`);
 				if (V.PC.dick === 0) {
-					r.push(`hug ${him} to your chest and start playing with ${his} pussy, commanding ${him} to reach around and do the same for you.`);
-					seX(eventSlave, "oral", V.PC, "penetrative");
-				} else if (canDoVaginal(eventSlave) && (eventSlave.vagina > 0)) {
+					r.push(`hug ${him} to your chest and start playing with ${his}`);
+					if (canDoVaginal(eventSlave)) {
+						r.push(`pussy,`);
+						seX(eventSlave, "vaginal", V.PC, "penetrative");
+					} else if (eventSlave.dick > 0 && eventSlave.chstityPenis === 0) {
+						r.push(`dick,`);
+					} else {
+						r.push(`body,`);
+					}
+					r.push(`commanding ${him} to reach around and do the same for you.`);
+					seX(V.PC, "vaginal", eventSlave, "penetrative");
+				} else if (canDoVaginal(eventSlave) && eventSlave.vagina > 0) {
 					r.push(`pull ${him} up to the right height and slide your dick inside ${him}, keeping both of you on your feet so you can take ${him} standing.`);
 					r.push(VCheck.Vaginal(eventSlave, 1));
-				} else if (canDoAnal(eventSlave) && (eventSlave.anus > 0)) {
+				} else if (canDoAnal(eventSlave) && eventSlave.anus > 0) {
 					r.push(`shove your cock roughly up ${his} asshole, letting ${him} struggle a little as ${he} finds the right angle to take standing anal here.`);
 					r.push(VCheck.Anal(eventSlave, 1));
 				} else {
 					r.push(`slide your stiff prick up between the virgin's thighs for some intercrural sex.`);
 				}
-				if (eventSlave.belly >= 5000 || V.PC.belly >= 5000 || eventSlave.weight > 160 || eventSlave.boobs > 40000 || eventSlave.butt > 10) {
+				if (eventSlave.belly >= 5000 || V.PC.belly >= 5000 || V.PC.weight > 160 || V.PC.boobs > 40000 || V.PC.butt > 10 || eventSlave.weight > 160 || eventSlave.boobs > 40000 || eventSlave.butt > 10) {
 					r.push(`As you fuck in the cramped corridor, ${his}`);
 				} else {
 					r.push(`As you fuck, ${his}`);
 				}
 				if (canSee(eventSlave)) {
 					r.push(`gaze flicks up and down along the row`);
-				} else if (canHear(eventSlave)) {
+				} else {
 					r.push(`ears perk up at the subtle sounds`);
+				}
+				r.push(`of suffering bodies. ${He} climaxes again and again, shuddering at each new subtle sign that another one of the slaves here is being degraded by yet another cock inserted into yet another of ${hisU} defenseless holes. By the time you're satisfied, ${he}'s so exhausted that ${his} legs are trembling uncontrollably as ${he} struggles to remain standing with you. You drop ${him}, leaving ${him} to find ${his} own way out of this place. You look back from the entrance, seeing that ${he}'s`);
+				if (canWalk(eventSlave)) {
+					r.push(`following you on shaky legs,`);
 				} else {
-					r.push(`expression indicates that ${he}'s become lost in ${his} thoughts`);
+					r.push(`steadily pushing ${himself} along,`);
 				}
-				r.push(`of suffering bodies. ${He} climaxes again and again, shuddering at each new subtle sign that another one of the slaves here is being degraded by yet another cock inserted into yet another of ${hisU} defenseless holes. By the time you're satisfied, ${he}'s so exhausted that ${his} legs are shuddering uncontrollably as ${he} struggles to remain standing with you. You drop ${him}, leaving ${him} to find ${his} own way out of this place. You look back from the entrance, seeing that ${he}'s following you on shaky legs,`);
 				if (canSee(eventSlave)) {
 					r.push(`staring at`);
 				} else {
 					r.push(`facing`);
 				}
-				r.push(`you with a profound look of mixed <span class="mediumaquamarine">trust for your understanding of ${his} horrible sadism,</span> and deep unease that this is what truly gets ${him} off.`);
+				r.push(`you with a profound look of mixed <span class="trust inc">trust for your understanding of ${his} horrible sadism,</span> and deep unease that this is what truly gets ${him} off.`);
 				eventSlave.trust += 5;
 				return r;
 			}
@@ -239,9 +247,9 @@ App.Events.RESSArcadeSadist = class RESSArcadeSadist extends App.Events.BaseEven
 				r.push(`${eventSlave.slaveName} jerks suddenly,`);
 				if (canAchieveErection(eventSlave)) {
 					r.push(`shooting ${his} cum onto the floor.`);
-				} else if (eventSlave.vagina < 0) {
+				} else if (eventSlave.dick > 0) {
 					r.push(`dribbling a little.`);
-				} else if (eventSlave.vaginaLube > 0) {
+				} else if (eventSlave.vaginaLube > 0 || eventSlave.balls > 0) {
 					r.push(`squirting onto the floor.`);
 				} else {
 					r.push(`orgasming.`);
@@ -252,9 +260,9 @@ App.Events.RESSArcadeSadist = class RESSArcadeSadist extends App.Events.BaseEven
 				} else {
 					r.push(`faces`);
 				}
-				r.push(`the mess ${he} made just by being in the presence of the arcology's <span class="hotpink">undisputed preeminent sadist;</span> ${he} shudders at the sheer gothic glory of it. ${He} has a new moment to think of when ${he} feels like <span class="lightsalmon">indulging ${his} own sadism.</span>`);
+				r.push(`the mess ${he} made just by being in the presence of the arcology's <span class="devotion inc">undisputed preeminent sadist;</span> ${he} shudders at the sheer gothic glory of it. ${He} has a new moment to think of when ${he} feels like <span class="fetish inc">indulging ${his} own sadism.</span>`);
 				eventSlave.devotion += 5;
-				eventSlave.fetishStrength = Math.clamp(eventSlave.fetishStrength+10, 0, 100);
+				eventSlave.fetishStrength = Math.clamp(eventSlave.fetishStrength + 10, 0, 100);
 				return r;
 			}
 		}
@@ -265,7 +273,7 @@ App.Events.RESSArcadeSadist = class RESSArcadeSadist extends App.Events.BaseEven
 			r.push(`You're not particularly interested in what ${he} dreams about when ${he} gets the chance, and you tell ${him} so. Whatever sadistic little fantasies ${he} keeps locked away to bring out when ${he}'s got a moment to satiate ${his} perversions is less interesting to you than the prospect of`);
 			if (V.PC.dick === 0) {
 				r.push(`${his} mouth on your cunt. So, you shove ${him} down to sit on the couch and straddle ${his} face, cutting off any further whimsies by pressing your wet pussy against ${his} lips. ${He} eats you out obediently, accepting`);
-				seX(eventSlave, "oral", V.PC, "penetrative");
+				seX(eventSlave, "oral", V.PC, "vaginal");
 			} else if (canDoVaginal(eventSlave) && (eventSlave.vagina > 0)) {
 				r.push(`giving it to ${him}. So, you shove ${him} down to sit on the couch, nudge ${his} legs apart, kneel between them, and pound ${his} pussy. You fuck ${him} so hard that ${he} doesn't have the attention for further whimsies, and ${he} accepts`);
 				r.push(VCheck.Vaginal(eventSlave, 1));
@@ -282,7 +290,7 @@ App.Events.RESSArcadeSadist = class RESSArcadeSadist extends App.Events.BaseEven
 				r.push(`${him} sucking your dick. So, you shove ${him} down to sit on the couch and give ${him} your cock to keep ${his} mouth occupied, cutting off any further whimsies. ${He} blows you obediently, accepting`);
 				seX(eventSlave, "oral", V.PC, "penetrative");
 			}
-			r.push(`the implicit message that <span class="hotpink">${he}'s your slut</span> in the real world, whatever thoughts ${he} may find appealing in the privacy of ${his} own mind.`);
+			r.push(`the implicit message that <span class="devotion inc">${he}'s your slut</span> in the real world, whatever thoughts ${he} may find appealing in the privacy of ${his} own mind.`);
 			eventSlave.devotion += 3;
 			return r;
 		}