From a92d0e6d19bd283f4206edc41b6701adfc312b23 Mon Sep 17 00:00:00 2001
From: Pregmodder <pregmodder@gmail.com>
Date: Sun, 28 Feb 2021 21:14:45 -0500
Subject: [PATCH] reRepressedAnalVirgin.js cleaning

---
 src/events/RETS/reRepressedAnalVirgin.js | 50 ++++++++++++------------
 1 file changed, 24 insertions(+), 26 deletions(-)

diff --git a/src/events/RETS/reRepressedAnalVirgin.js b/src/events/RETS/reRepressedAnalVirgin.js
index fd7b59ee696..3f885065f30 100644
--- a/src/events/RETS/reRepressedAnalVirgin.js
+++ b/src/events/RETS/reRepressedAnalVirgin.js
@@ -9,19 +9,21 @@ App.Events.RETSAnalRepressedVirgin = class RETSAnalRepressedVirgin extends App.E
 			[ // event slave /domslave
 				s => s.fetish !== "mindbroken",
 				hasAnyArms,
-				hasAnyLegs,
+				canWalk,
 				canTalk,
 				s => s.assignment !== Job.QUARTER,
+				canDoAnal,
+				canHear,
 				s => s.anus === 0,
 				s => s.devotion >= -50,
 				s => s.trust >= -50,
 				s => s.sexualFlaw === "repressed",
+				s => s.fetish !== "buttslut",
 			],
 			[ // and subslave
 				s => s.fetish !== "mindbroken",
 				canWalk,
 				canTalk,
-				hasBothLegs,
 				isSlaveAvailable,
 				s => s.devotion > 50,
 				s => (canDoAnal(s) && s.anus !== 0),
@@ -60,10 +62,8 @@ App.Events.RETSAnalRepressedVirgin = class RETSAnalRepressedVirgin extends App.E
 		if (canSee(slave)) {
 			t.push(`sight of`);
 			t.push(App.UI.DOM.combineNodes(contextualIntro(subSlave, subSlave), "'s back and rear"));
-		} else if (canHear(slave)) {
-			t.push(`sound of ${subSlave.slaveName}`);
 		} else {
-			t.push(`presence of ${subSlave.slaveName}`);
+			t.push(`sound of ${subSlave.slaveName}`);
 		}
 		t.push(`as ${he2} lazily rides ${his2} ${getWrittenTitle(subSlave)}. You've been sitting on the couch, making out with the compliant ${girl2} as ${he2} rides you, for a good half hour. Poor ${subSlave.slaveName} was pent up when you started, and ${he2}'s climaxed already; ${he2}'s feeling very devoted and relaxed at the moment, and is doing ${his2} best to get you off, too. When you finally come, ${he2} moans ${his2} thanks into your mouth nonverbally, breaks your lip lock, gives you a peck on the nose, and climbs off you. As ${he2} does, ${he2} lifts ${his2} ass off your ${pDick ? "cock" : "strap-on"}, ${his2}`);
 		if (subSlave.anus > 2) {
@@ -87,7 +87,7 @@ App.Events.RETSAnalRepressedVirgin = class RETSAnalRepressedVirgin extends App.E
 		t.push(Spoken(slave, `"${getWrittenTitle(slave)}, what were you doing with ${subSlave.slaveName}?"`));
 		t.push(`The absurdity gives you a moment's pause, but you answer gamely that you were fucking ${his2} ass. ${slave.slaveName} blushes furiously but plunges on,`);
 		t.push(Spoken(slave, `"I'm s-sorry, ${getWrittenTitle(slave)}, but I still don't understand. I thought sex happened in a v-vagina. I d-didn't think b-butts were — were for, you know, that."`));
-		seX(subSlave, "anal", slave, "penetrative");
+		seX(subSlave, "anal", V.PC, "penetrative");
 		if (canImpreg(subSlave, V.PC)) {
 			t.push(knockMeUp(subSlave, 5, 1, -1, true));
 		}
@@ -120,7 +120,7 @@ App.Events.RETSAnalRepressedVirgin = class RETSAnalRepressedVirgin extends App.E
 			t.push(`Judging ${him} ready, you tell ${him} to ${hasAnyLegs(slave) ? "kneel" : "get"} on the couch. ${He} does, trembling with fear and arousal;`);
 			if (slave.chastityPenis === 1) {
 				t.push(`${his} caged cock does not show it, but ${he}'s flushed and willing.`);
-			} else if ((slave.dick > 0) && !canAchieveErection(slave)) {
+			} else if (slave.dick > 0 && !canAchieveErection(slave)) {
 				t.push(`as ${he}`);
 				if (slave.belly >= 100000) {
 					t.push(`struggles to pull ${his} gravid body`);
@@ -136,6 +136,8 @@ App.Events.RETSAnalRepressedVirgin = class RETSAnalRepressedVirgin extends App.E
 				t.push(`${he} has a painful hard-on.`);
 			} else if (slave.clit > 0) {
 				t.push(`${his} big clit is visibly erect.`);
+			} else if (slave.chastityVagina === 1) {
+				t.push(`${his} pussy may be locked in chastity, but it doesn't hide the moisture forming under it.`);
 			} else if (slave.vagina === -1) {
 				t.push(`and is unconsciously presenting ${his} ass.`);
 			} else {
@@ -151,8 +153,10 @@ App.Events.RETSAnalRepressedVirgin = class RETSAnalRepressedVirgin extends App.E
 				t.push(`jack off,`);
 			} else if (slave.clit > 0) {
 				t.push(`rub ${his} clit,`);
-			} else if (slave.vagina === 1) {
+			} else if (slave.vagina === -1) {
 				t.push(`frantically rub ${his} perineum,`);
+			} else if (slave.chastityVagina === 1) {
+				t.push(`play with ${his} ${slave.boobs > 300 ? "boobs" : "nipples"},`);
 			} else {
 				t.push(`play with ${his} pussy,`);
 			}
@@ -164,7 +168,7 @@ App.Events.RETSAnalRepressedVirgin = class RETSAnalRepressedVirgin extends App.E
 			}
 			t.push(`Confused, ${he} mumbles into the couch,`);
 			t.push(Spoken(slave, `"${getWrittenTitle(slave)}, I c-came. I came to your thing in my butt. A-am I — does that make me a slut?"`));
-			t.push(`You assure ${him} that it does. Surprisingly, ${he} does not break down, but exhales slowly and squares ${his} shoulders, visibly resolving to <span class="hotpink">be a slut</span> if ${he} has to. ${He} even takes a bit longer than strictly necessary giving ${himself} ${his} <span class="lime">first</span> post-sex enema.`);
+			t.push(`You assure ${him} that it does. Surprisingly, ${he} does not break down, but exhales slowly and squares ${his} shoulders, visibly resolving to <span class="devotion inc">be a slut</span> if ${he} has to. ${He} even takes a bit longer than strictly necessary giving ${himself} ${his} <span class="virginity loss">first</span> post-sex enema.`);
 			slave.devotion += 5;
 			slave.anus += 1;
 			seX(slave, "anal", V.PC, "penetrative");
@@ -177,7 +181,7 @@ App.Events.RETSAnalRepressedVirgin = class RETSAnalRepressedVirgin extends App.E
 
 		function pounding() {
 			t = [];
-			t.push(`You tell ${him} that ${his} butt is your property, just like ${subSlave.slaveName}'s. ${He} looks <span class="gold">terrified.</span> You continue, telling ${him} to bring your property over to you. ${He} stumbles over, begging,`);
+			t.push(`You tell ${him} that ${his} butt is your property, just like ${subSlave.slaveName}'s. ${He} looks <span class="tust dec">terrified.</span> You continue, telling ${him} to bring your property over to you. ${He} stumbles over, begging,`);
 			t.push(Spoken(slave, `"P-please, fuck me ${getWrittenTitle(slave)}, please don't do stuff to my butt. It's going t-to h-hurt.`));
 			if (slave.preg > slave.pregData.normalBirth/2) {
 				t.push(`And I-I'm r-really pregnant."`);
@@ -201,13 +205,15 @@ App.Events.RETSAnalRepressedVirgin = class RETSAnalRepressedVirgin extends App.E
 				t.push(`stimulation brings a little fluid out of ${him},`);
 			}
 			t.push(`and you tell ${him} that ${he} clearly wants it. ${He} doesn't know what to say in response, so ${he} just cries harder as`);
-			if (slave.dick === 0) {
+			if (canDoVaginal(slave)) {
 				t.push(`you reach around to cup ${his} soaking cunt possessively.`);
+			} else if (slave.prostate === 0 && slave.vagina === -1 && slave.dick === 0) {
+				t.push(`${he} starts to quiver despite ${his} displeasure.`);
 			} else {
 				t.push(`${he} starts to leak despite ${his} displeasure.`);
 			}
-			t.push(`${His} butthole is so wonderfully tight that you orgasm quickly, throwing ${his} unresisting butt over onto the couch for another round. ${He}'s <span class="green">no longer repressed,</span> but ${he} now <span class="red">hates</span> having ${his} <span class="lime">newly loosened butt</span> fucked.`);
-			slave.behavioralFlaw = "none"; // FIXME: Original text used slave.behavioralFlaw = 0. remove??
+			t.push(`${His} butthole is so wonderfully tight that you orgasm quickly, throwing ${his} unresisting butt over onto the couch for another round. ${He}'s <span class="flaw break">no longer repressed,</span> but ${he} now <span class="flaw gain">hates</span> having ${his} <span class="virginity loss">newly loosened butt</span> fucked.`);
+			slave.behavioralFlaw = "none";
 			slave.sexualFlaw = "hates anal";
 			slave.trust -= 5;
 			slave.anus += 1;
@@ -221,13 +227,7 @@ App.Events.RETSAnalRepressedVirgin = class RETSAnalRepressedVirgin extends App.E
 		function later() {
 			t = [];
 
-			t.push(`You tell ${him} to sit down on the couch and`);
-			if (!canHear(slave)) {
-				t.push(`listen, so to speak`);
-			} else {
-				t.push(`listen.`);
-			}
-			t.push(`${He} obeys, carefully avoiding the spot where you and ${subSlave.slaveName} embraced. You explain that ${subSlave.slaveName} is an experienced anal slave, and that you enjoy having sex with ${him2} there. You point out how much ${subSlave.slaveName} enjoyed ${himself2} (${slave.slaveName} studiously avoids`);
+			t.push(`You tell ${him} to sit down on the couch and listen. ${He} obeys, carefully avoiding the spot where you and ${subSlave.slaveName} embraced. You explain that ${subSlave.slaveName} is an experienced anal slave, and that you enjoy having sex with ${him2} there. You point out how much ${subSlave.slaveName} enjoyed ${himself2} (${slave.slaveName} studiously avoids`);
 			if (canSee(slave)) {
 				t.push(`looking at`);
 			} else {
@@ -236,17 +236,15 @@ App.Events.RETSAnalRepressedVirgin = class RETSAnalRepressedVirgin extends App.E
 			t.push(`the moist spot on the couch that evidences this), and tell ${him} that anal sex can be very enjoyable. ${He}`);
 			if (canSee(slave)) {
 				t.push(`looks at`);
-			} else if (canHear(slave)) {
-				t.push(`listens to`);
 			} else {
-				t.push(`waits for`);
+				t.push(`listens to`);
 			}
 			t.push(`you uncomprehendingly,`);
 			if (slave.belly >= 5000) {
 				t.push(`${his} hand resting on ${his} rounded middle,`);
 			}
 			t.push(`so you try a different tack. You tell ${him} that ${his} anal virginity has a price: it makes ${him} a more valuable slave. ${He}'ll probably be fucked back there someday soon, but it's not something you plan to do lightly. And in any case, ${he}'ll be trained to enjoy the experience when it happens. Hesitantly, ${he} says`);
-			t.push(Spoken(slave, `"I understand, ${getWrittenTitle(slave)}. I <span class="mediumaquamarine">trust you.</span>"`));
+			t.push(Spoken(slave, `"I understand, ${getWrittenTitle(slave)}. I <span class="trust inc">trust you.</span>"`));
 			t.push(`${He} seems more confident for the rest of the inspection, and when it's done, ${he} leaves with less worry on ${his} face.`);
 			slave.trust += 5;
 			return t;
@@ -254,10 +252,10 @@ App.Events.RETSAnalRepressedVirgin = class RETSAnalRepressedVirgin extends App.E
 
 		function sold() {
 			t = [];
-			t.push(`You tell ${him} that ${his} butt is your property, just like ${subSlave.slaveName}'s. ${He} looks <span class="gold">terrified,</span> but this is nothing to ${his} reaction when another slave arrives to bring ${him} out for an auction of ${his} virgin anus. ${He}'s dragged out, whining,`);
+			t.push(`You tell ${him} that ${his} butt is your property, just like ${subSlave.slaveName}'s. ${He} looks <span class="trust dec">terrified,</span> but this is nothing to ${his} reaction when another slave arrives to bring ${him} out for an auction of ${his} virgin anus. ${He}'s dragged out, whining,`);
 			t.push(Spoken(slave, `"P-please, ${getWrittenTitle(slave)}, please don't sell my butthole! I'll do anything! Please!"`));
 			t.push(`${His} pleas are unavailing.`);
-			t.push(`${V.assistant.name} conducts a brisk streetside auction of the weeping slave ${girl}, using compliance systems to force ${him} to spread ${his} quivering buttocks for the crowd. The <span class="yellowgreen">winning bidder</span> uses a public stall to do the deed; its thin walls are nowhere near enough to disguise ${his} whining and sobbing as he <span class="lime">takes ${his} anal virginity.</span> ${He} now <span class="red">hates anal.</span>`);
+			t.push(`${V.assistant.name} conducts a brisk streetside auction of the weeping slave${girl}, using compliance systems to force ${him} to spread ${his} quivering buttocks for the crowd. The <span class="cash inc">winning bidder</span> uses a public stall to do the deed; its thin walls are nowhere near enough to disguise ${his} whining and sobbing as he <span class="virginity loss">takes ${his} anal virginity.</span> ${He} now <span class="flaw gain">hates anal.</span>`);
 			cashX(500, "whore", slave);
 			slave.sexualFlaw = "hates anal";
 			slave.trust -= 5;
-- 
GitLab