From 001212e6c448651237ba3d9e061c9a78b91ae5c9 Mon Sep 17 00:00:00 2001
From: kopareigns <kopareigns@gmail.com>
Date: Sat, 30 Jun 2018 13:57:10 -0400
Subject: [PATCH] More VCheck widget conversion

---
 devNotes/twine JS.txt                    | 104 +++++++++++++++++-
 src/js/sexActsJS.tw                      | 104 +++++++++++++++++-
 src/npc/fRelation.tw                     |  18 +--
 src/pregmod/newChildIntro.tw             |   4 +-
 src/uncategorized/RESS.tw                |   8 +-
 src/uncategorized/RETS.tw                |  18 +--
 src/uncategorized/newSlaveIntro.tw       |   4 +-
 src/uncategorized/peHeadgirlConcubine.tw |   2 +-
 src/utility/miscWidgets.tw               | 134 -----------------------
 9 files changed, 229 insertions(+), 167 deletions(-)

diff --git a/devNotes/twine JS.txt b/devNotes/twine JS.txt
index c51e139402a..a7bd52f5c1b 100644
--- a/devNotes/twine JS.txt	
+++ b/devNotes/twine JS.txt	
@@ -15747,9 +15747,8 @@ window.VaginalVCheck = function VaginalVCheck(times) {
 			slave.trust -= 10;
 			slave.devotion -= 15;
 		}
-		slave.anus = 1;
-	}
-	if (canDoAnal(slave)) {
+		slave.vagina = 1;
+
 		if (V.PC.dick === 1 && canGetPregnant(slave) && slave.eggType == "human") {
 			r += knockMeUp(slave, 10, 0, -1, 1);
 		}
@@ -15920,6 +15919,105 @@ window.BothVCheck = function BothVCheck(analTimes, bothTimes) {
 	return r;
 }
 
+/*
+ times is how many times to increment either the Vaginal or the Anal counts, if there is no Vagina available.
+ If left undefined it will assume it to be 1.
+*/
+window.SimpleVCheck = function SimpleVCheck(times) {
+	let r = ``;
+	if (canDoVaginal(State.variables.activeSlave)) {
+		r += VaginalVCheck(times);
+	}
+	else if (canDoAnal(State.variables.activeSlave)) {
+		r += AnalVCheck(times);
+	}
+	return r;
+}
+
+/*
+ Before using this function, set $partner to the index of the partner in the $slaves array
+ analTimes is how many times to increment the Anal counts, if there is no Vagina available.
+ bothTimes is how many times to increment both holes counts (usually it is half of Anal).
+ In both cases if left undefined it will assume it to be 1.
+ This also checks for a valid Vagina/Accessory, though most code I've seen does this already, you
+ never know when someone might use the routine and forget to do such.
+*/
+window.PartnerVCheck = function PartnerVCheck(analTimes, bothTimes) {
+	const V = State.variables;
+	const partner = V.slaves[V.partner];
+	let r = ``;
+	
+	if (V.partner < 0 || V.partner >= V.slaves.length) {
+		r += `@@.red;PartnerVCheck called with invalid partner '$partner' from passage ${passage()}.@@`;
+	}	
+	else if (canDoVaginal(partner)) {
+		if (partner.vagina === 0) {
+			if (canDoAnal(partner) && partner.anus === 0) {
+				r += `Since it's ${partner.slaveName}'s first time, you take your time and gently ease yourself into her pussy before gradually working your way into her butthole, alternating between her holes. @@.lime;This breaks in ${partner.slaveName}'s virgin holes.@@ `;
+				partner.vagina = 1;
+				partner.anus = 1;
+			}
+			else {
+				r += `Since it's ${partner.slaveName}'s first time, you take your time and gently ease yourself into her pussy before gradually increasing the intensity of your thrusts. @@.lime;This breaks in partner.slaveName's virgin pussy.@@ `;
+				partner.vagina = 1;
+			}
+		}
+		else if (canDoAnal(partner) && partner.anus == 0) {
+			r += `Since it's ${partner.slaveName}'s first time, you take your time and gently ease yourself into her butthole before gradually increasing the intensity of your thrusts into her ass. @@.lime;This breaks in ${partner.slaveName}'s virgin ass.@@ `;
+			partner.anus = 1;
+		}
+		
+		if (canDoAnal(partner)) {
+			if (!bothTimes) {
+				V.vaginalTotal += 1;
+				V.analTotal += 1;
+				partner.vaginalCount += 1;
+				partner.analCount += 1;
+			}
+			else {
+				V.vaginalTotal += bothTimes;
+				V.analTotal += bothTimes;
+				partner.vaginalCount += bothTimes;
+				partner.analCount += bothTimes;
+			}
+			if (V.PC.dick === 1 && canGetPregnant(partner) && partner.eggType == "human") {
+				r += knockMeUp(partner, 10, 2, -1);
+			}
+		}
+		else {
+			if (!bothTimes) {
+				V.vaginalTotal += 1;
+				partner.vaginalCount += 1;
+			}
+			else {
+				V.vaginalTotal += bothTimes;
+				partner.vaginalCount += bothTimes;
+			}
+			if (V.PC.dick === 1 && canGetPregnant(partner) && partner.eggType == "human") {
+				r += knockMeUp(partner, 10, 0, -1);
+			}
+		}
+	}
+	else if (canDoAnal(partner)) {
+		if (partner.anus === 0) {
+			r += `Since it's ${partner.slaveName}'s first time, you take your time and gently ease yourself into her butthole before gradually increasing the intensity of your thrusts into her ass. @@.lime;This breaks in ${partner.slaveName}'s virgin ass.@@ `;
+			partner.anus = 1;
+		}
+		if (!analTimes) {
+			V.analTotal += analTimes;
+			partner.analCount += analTimes;
+		}
+		else {
+			V.analTotal += 1;
+			partner.analCount += 1;
+		}
+		if (V.PC.dick === 1 && canGetPregnant(partner) && partner.eggType == "human") {
+			r += knockMeUp(partner, 10, 1, -1);
+		}
+	}
+	return r;
+}
+
 /*:: PenthouseNaming [script]*/
 
 window.MS = function() {
diff --git a/src/js/sexActsJS.tw b/src/js/sexActsJS.tw
index 30d5cc31e06..1be9afedc01 100644
--- a/src/js/sexActsJS.tw
+++ b/src/js/sexActsJS.tw
@@ -95,9 +95,8 @@ window.VaginalVCheck = function VaginalVCheck(times) {
 			slave.trust -= 10;
 			slave.devotion -= 15;
 		}
-		slave.anus = 1;
-	}
-	if (canDoAnal(slave)) {
+		slave.vagina = 1;
+
 		if (V.PC.dick === 1 && canGetPregnant(slave) && slave.eggType == "human") {
 			r += knockMeUp(slave, 10, 0, -1, 1);
 		}
@@ -267,3 +266,102 @@ window.BothVCheck = function BothVCheck(analTimes, bothTimes) {
 	}
 	return r;
 }
+
+/*
+ times is how many times to increment either the Vaginal or the Anal counts, if there is no Vagina available.
+ If left undefined it will assume it to be 1.
+*/
+window.SimpleVCheck = function SimpleVCheck(times) {
+	let r = ``;
+	if (canDoVaginal(State.variables.activeSlave)) {
+		r += VaginalVCheck(times);
+	}
+	else if (canDoAnal(State.variables.activeSlave)) {
+		r += AnalVCheck(times);
+	}
+	return r;
+}
+
+/*
+ Before using this function, set $partner to the index of the partner in the $slaves array
+ analTimes is how many times to increment the Anal counts, if there is no Vagina available.
+ bothTimes is how many times to increment both holes counts (usually it is half of Anal).
+ In both cases if left undefined it will assume it to be 1.
+ This also checks for a valid Vagina/Accessory, though most code I've seen does this already, you
+ never know when someone might use the routine and forget to do such.
+*/
+window.PartnerVCheck = function PartnerVCheck(analTimes, bothTimes) {
+	const V = State.variables;
+	const partner = V.slaves[V.partner];
+	let r = ``;
+	
+	if (V.partner < 0 || V.partner >= V.slaves.length) {
+		r += `@@.red;PartnerVCheck called with invalid partner '$partner' from passage ${passage()}.@@`;
+	}	
+	else if (canDoVaginal(partner)) {
+		if (partner.vagina === 0) {
+			if (canDoAnal(partner) && partner.anus === 0) {
+				r += `Since it's ${partner.slaveName}'s first time, you take your time and gently ease yourself into her pussy before gradually working your way into her butthole, alternating between her holes. @@.lime;This breaks in ${partner.slaveName}'s virgin holes.@@ `;
+				partner.vagina = 1;
+				partner.anus = 1;
+			}
+			else {
+				r += `Since it's ${partner.slaveName}'s first time, you take your time and gently ease yourself into her pussy before gradually increasing the intensity of your thrusts. @@.lime;This breaks in partner.slaveName's virgin pussy.@@ `;
+				partner.vagina = 1;
+			}
+		}
+		else if (canDoAnal(partner) && partner.anus == 0) {
+			r += `Since it's ${partner.slaveName}'s first time, you take your time and gently ease yourself into her butthole before gradually increasing the intensity of your thrusts into her ass. @@.lime;This breaks in ${partner.slaveName}'s virgin ass.@@ `;
+			partner.anus = 1;
+		}
+		
+		if (canDoAnal(partner)) {
+			if (!bothTimes) {
+				V.vaginalTotal += 1;
+				V.analTotal += 1;
+				partner.vaginalCount += 1;
+				partner.analCount += 1;
+			}
+			else {
+				V.vaginalTotal += bothTimes;
+				V.analTotal += bothTimes;
+				partner.vaginalCount += bothTimes;
+				partner.analCount += bothTimes;
+			}
+			if (V.PC.dick === 1 && canGetPregnant(partner) && partner.eggType == "human") {
+				r += knockMeUp(partner, 10, 2, -1);
+			}
+		}
+		else {
+			if (!bothTimes) {
+				V.vaginalTotal += 1;
+				partner.vaginalCount += 1;
+			}
+			else {
+				V.vaginalTotal += bothTimes;
+				partner.vaginalCount += bothTimes;
+			}
+			if (V.PC.dick === 1 && canGetPregnant(partner) && partner.eggType == "human") {
+				r += knockMeUp(partner, 10, 0, -1);
+			}
+		}
+	}
+	else if (canDoAnal(partner)) {
+		if (partner.anus === 0) {
+			r += `Since it's ${partner.slaveName}'s first time, you take your time and gently ease yourself into her butthole before gradually increasing the intensity of your thrusts into her ass. @@.lime;This breaks in ${partner.slaveName}'s virgin ass.@@ `;
+			partner.anus = 1;
+		}
+		if (!analTimes) {
+			V.analTotal += analTimes;
+			partner.analCount += analTimes;
+		}
+		else {
+			V.analTotal += 1;
+			partner.analCount += 1;
+		}
+		if (V.PC.dick === 1 && canGetPregnant(partner) && partner.eggType == "human") {
+			r += knockMeUp(partner, 10, 1, -1);
+		}
+	}
+	return r;
+}
diff --git a/src/npc/fRelation.tw b/src/npc/fRelation.tw
index f1e75c43e61..ca62be627b6 100644
--- a/src/npc/fRelation.tw
+++ b/src/npc/fRelation.tw
@@ -62,12 +62,12 @@ You call both $activeSlave.slaveName and $slaves[$partner].slaveName to your off
 <<elseif ($activeSlave.devotion - $slaves[$partner].devotion > 20) && ($slaves[$partner].devotion <= 50)>>
 	$activeSlave.slaveName is a lot more ready and willing for this than $slaves[$partner].slaveName, so<<if ($PC.dick == 0)>>while getting into a strap-on,<</if>> you sit $him on the couch and make $slaves[$partner].slaveName sit on $his lap, facing $him. In this position, $activeSlave.slaveName can reach around and spread $his _partnerRel's <<if $seeRace == 1>>$activeSlave.race <</if>>buttocks for _him2, controlling _him2 all the while in case _he2 has hesitations about this. $slaves[$partner].slaveName knows that _he2's trapped, and lets _his2 _activeSlaveRel hold _his2 ass wide so you can use _him2. They're face to face, and it's not hard to tell that $slaves[$partner].slaveName is glaring daggers at $activeSlave.slaveName. You reward $activeSlave.slaveName for $his obedience and punish $slaves[$partner].slaveName for _his2 resistance by forcing _him2 to suck $activeSlave.slaveName off while you finish using $slaves[$partner].slaveName.
 	<<set $activeSlave.oralCount++, $slaves[$partner].oralCount++, $oralTotal++>>
-	<<PartnerVCheck>>
+	<<= PartnerVCheck()>>
 <<elseif canWalk($activeSlave) && canWalk($slaves[$partner]) && ($activeSlave.devotion > 50) && ($slaves[$partner].devotion > 20) && (_activeSlaveRel == "mother" || _activeSlaveRel == "father")>>
 	$activeSlave.slaveName gives you a little smile when $he hears you wish to fuck $him and $his daughter $slaves[$partner].slaveName<<if ($PC.dick == 0)>> and sees your strap-on<</if>>. On your direction, $activeSlave.slaveName sits on the couch. When $slaves[$partner].slaveName enters, _his2 _activeSlaveRel spreads $his arms and tells _him2 to sit on $his lap. $slaves[$partner].slaveName gets the idea and straddles $him so they're face to face. You take $slaves[$partner].slaveName from behind; _he2 gasps as _he2 feels _his2 _activeSlaveRel's hands stimulate _him2 from the front. They make out shamelessly while you take your pleasure. When you finish, $activeSlave.slaveName lies down on the couch so $slaves[$partner].slaveName can ride $his <<if $seeRace == 1>>$activeSlave.race <</if>>face. As $he sucks the cum out of $his daughter's sopping fuckhole, $slaves[$partner].slaveName sucks you hard again. In the mood for something harder this time, you jam yourself into the older $activeSlave.slaveName. $slaves[$partner].slaveName gets off $activeSlave.slaveName's face so _he2 can offer _himself2 for fondling and groping while you pound $activeSlave.slaveName. After you're done, $slaves[$partner].slaveName returns _his2 _activeSlaveRel's affection and gives $him some gentle oral as the older slave lies there exhausted.
 	<<set $activeSlave.oralCount += 2, $slaves[$partner].oralCount += 2, $oralTotal += 2>>
 	<<= BothVCheck()>>
-	<<PartnerVCheck>>
+	<<= PartnerVCheck()>>
 <<elseif canWalk($activeSlave) && canWalk($slaves[$partner]) && ($activeSlave.devotion > 50) && ($slaves[$partner].devotion > 20) && (_activeSlaveRel == "daughter")>>
 	$activeSlave.slaveName is enthusiastic when $he hears you order $slaves[$partner].slaveName to come over. $His total immersion in sexual slavery has clearly uncovered a willingness to get very close to $his _partnerRel. You<<if ($PC.dick == 0)>> don a strap-on,<</if>> lie on the floor and instruct $slaves[$partner].slaveName to ride you. _He2 complies, and finds _his2 daughter $activeSlave.slaveName
 	<<if ($slaves[$partner].dick > 0)>>
@@ -77,33 +77,33 @@ You call both $activeSlave.slaveName and $slaves[$partner].slaveName to your off
 	<</if>>
 	Your use of $slaves[$partner].slaveName's mature body is the focus. _He2 finds _himself2 caught up in a miasma of sexual pleasure and perversion, moaning and blushing as your <<if ($PC.dick == 0)>>strap-on and fingers<<else>>cock<</if>> and $activeSlave.slaveName's mouth tour _his2 body. When you finish in _his2 <<if ($slaves[$partner].dick > 0)>>asshole, _his2 daughter hastens to lavish attention on $his _partnerRel's well fucked, cum filled butt.<<else>>pussy, _his2 daughter hastens to lavish attention on $his _partnerRel's well fucked, cum filled cunt.<</if>>
 	<<set $activeSlave.oralCount += 2, $slaves[$partner].oralCount += 2, $oralTotal += 2>>
-	<<PartnerVCheck>>
+	<<= PartnerVCheck()>>
 <<elseif canDoVaginal($activeSlave) && canDoVaginal($slaves[$partner]) && canWalk($activeSlave) && canWalk($slaves[$partner]) && ($activeSlave.devotion > 50) && ($slaves[$partner].devotion > 50) && (_activeSlaveRel == "twin")>>
 	$activeSlave.slaveName and $slaves[$partner].slaveName are such devoted sex slaves that they've long since lost any hesitations about their partnership, and generally approach sex as though their bodies were interchangeable. (This means that they almost never masturbate, for one thing, preferring to have sex with each other, instead.) Giggling and kissing each other, they eagerly kneel before your chair and give you simultaneous oral sex, making an effort to play with their symmetry. They kiss around your <<if ($PC.dick == 0)>>pussy<<else>>cock, making a complete seal around you with their lips<</if>>, one on each side. Then they jump up on your desk and press their <<if ($activeSlave.dick > 0) && ($slaves[$partner].dick > 0)>>cocks<<elseif ($activeSlave.dick > 0) || ($slaves[$partner].dick > 0)>>cock and pussy<<else>>pussies<</if>> against one another<<if ($PC.dick == 0)>> while you don a strap-on<</if>>, spreading their legs to offer you everything. You switch back and forth, with the twin you're not in rubbing and grinding against their sister, until both of $slaves[$partner].slaveName and $activeSlave.slaveName are lying on the desk<<if ($PC.dick == 1)>> with cum dripping out of them<</if>>, making out tiredly.
 	<<set $slaves[$partner].oralCount++, $activeSlave.oralCount++, $oralTotal++>>
 	<<= BothVCheck()>>
-	<<PartnerVCheck>>
+	<<= PartnerVCheck()>>
 <<elseif canWalk($activeSlave) && canWalk($slaves[$partner]) && ($activeSlave.devotion > 50) && ($slaves[$partner].devotion > 20) && (_activeSlaveRel == "sister" || _activeSlaveRel == "half-sister")>>
 	You call $activeSlave.slaveName's _activeSlaveRel $slaves[$partner].slaveName in for some incestuous fun, but see no reason to wait for _him2. When _he2 arrives, it's to the sight of $activeSlave.slaveName sitting on the couch with $his legs spread with you <<if ($activeSlave.vagina > -1)>>gently fucking $his pussy<<else>>using $his asshole<</if>><<if ($PC.dick == 0)>> with a strap-on<</if>>. You pull out and order $slaves[$partner].slaveName to orally service _his2 sister. _He2 gets down before the spreadeagled slave $girl to get to work. After watching $activeSlave.slaveName enjoy the attention for a while, you move behind the busy $slaves[$partner].slaveName and pull _him2 into a good position so you can fuck _him2 while _he2 sucks. After a few thrusts, $activeSlave.slaveName's eyes roll back. <<if ($activeSlave.voice == 0) || ($activeSlave.accent >= 3)>>$He gestures that it feels really good when you make $his sister moan into $him.<<else>>"Oh <<Master>>," $he <<say squeal>>s, "it feel<<s>> <<s>>o good when you make _him2 moan into me!"<</if>>
 	<<set $slaves[$partner].oralCount++, $activeSlave.oralCount++, $oralTotal++>>
 	<<= BothVCheck()>>
-	<<PartnerVCheck>>
+	<<= PartnerVCheck()>>
 <<elseif ["twin", "daughter", "mother", "father", "sister", "half-sister"].includes(_activeSlaveRel)>>
 	Since between them they aren't able to enthusiastically perform an incestuous threesome, you simply line $activeSlave.slaveName and $slaves[$partner].slaveName up next to one another on the couch next to your desk,<<if ($PC.dick == 0)>> don a strap-on,<</if>> and fuck <<if $seeRace == 1>>$activeSlave.race holes <</if>>at will. Whenever a hole begins to pall you just switch to another. $activeSlave.slaveName tries hard to ignore the fact that $he's getting fucked next to $his _partnerRel, and $slaves[$partner].slaveName pretends the cock getting shoved into _him2 isn't slick from _his2 _activeSlaveRel's fuckhole.
 	<<= BothVCheck()>>
-	<<PartnerVCheck>>
+	<<= PartnerVCheck()>>
 <<elseif ((_activeSlaveRel == "friend") || (_activeSlaveRel == "best friend")) && ($activeSlave.devotion > 20) && ($slaves[$partner].devotion > 20)>>
 	$activeSlave.slaveName and $slaves[$partner].slaveName line up next to one another on the couch next to your desk<<if ($PC.dick == 0)>> while you don a strap-on,<</if>> and offer you their holes. They're just friends, but they're sex slaves and they see nothing wrong with enjoying sex with you, together. They keep up a constant stream of giggling, gasping, and smiling as each of them in turn feels a cock, warm and wet from their friend's body, transferred into them. Each of them does their best to help the other do well, even manually stimulating their friend when necessary<<if ($PC.boobs > 0)>> and spinning around to lavish attention on your nipples<</if>>.
 	<<= BothVCheck()>>
-	<<PartnerVCheck>>
+	<<= PartnerVCheck()>>
 <<elseif ["friend with benefits", "lover", "slave wife"].includes(_activeSlaveRel) && ($activeSlave.devotion > 20) && ($slaves[$partner].devotion > 20)>>
 	$activeSlave.slaveName and $slaves[$partner].slaveName eagerly retire to the couch and arrange themselves face to face so they can make out and enjoy each other's bodies as you enjoy theirs. You decide not to set up an elaborate threesome, and just <<if ($PC.dick == 0)>>engage in a little tribadism with<<else>>fuck<</if>> whatever hole catches your eye next. They rarely break their intimate kissing, forming between the two of them a loving entity on the couch with all sorts of interesting parts to experience. They're sex slaves, and you're fucking them, but they're also lovers who are very comfortable in each others' arms, kissing, fondling each other, and <<if ($PC.dick == 0)>>enjoying your pussy loving<<else>>taking your dick<</if>>.
 	<<= BothVCheck()>>
-	<<PartnerVCheck>>
+	<<= PartnerVCheck()>>
 <<else>>
 	Since between them they aren't able to enthusiastically perform a threesome, you simply line $activeSlave.slaveName and $slaves[$partner].slaveName up next to one another on the couch next to your desk, and fuck <<if $seeRace == 1>>$activeSlave.race holes <</if>>at will. Whenever a hole begins to pall you just switch to another. $activeSlave.slaveName tries hard to ignore the fact that $he's getting fucked next to $his _partnerRel, and $slaves[$partner].slaveName pretends the <<if ($PC.dick == 0)>>strap-on<<else>>cock<</if>> getting shoved into _him2 isn't slick from _his2 _activeSlaveRel's fuckhole.
 	<<= BothVCheck()>>
-	<<PartnerVCheck>>
+	<<= PartnerVCheck()>>
 <</if>>
 
 <<if passage() !== "Slave Interact">>
diff --git a/src/pregmod/newChildIntro.tw b/src/pregmod/newChildIntro.tw
index 1b9cc77f6d3..ac8c44ebe5b 100644
--- a/src/pregmod/newChildIntro.tw
+++ b/src/pregmod/newChildIntro.tw
@@ -682,7 +682,7 @@ You slowly strip down, gauging her reactions to your show, until you are fully n
 			<<set $activeSlave.fetish = "humiliation">>
 			<<set $activeSlave.fetishStrength = 20>>
 		<</if>>
-	<<SimpleVCheck>>
+	<<= SimpleVCheck()>>
 <</replace>>
 <</link>>
 
@@ -694,7 +694,7 @@ You slowly strip down, gauging her reactions to your show, until you are fully n
 		<<set $activeSlave.fetish = "pregnancy">>
 		<<set $activeSlave.fetishStrength = 20>>
 	<</if>>
-	<<SimpleVCheck>>
+	<<= SimpleVCheck()>>
 <</replace>>
 <</link>>
 
diff --git a/src/uncategorized/RESS.tw b/src/uncategorized/RESS.tw
index 096c21ac13f..c1ebc733c99 100644
--- a/src/uncategorized/RESS.tw
+++ b/src/uncategorized/RESS.tw
@@ -16040,7 +16040,7 @@ You tell her kindly that you understand, and that she'll be trained to address t
 	<<replace "#result">>
 	You give her no orders at all, since her helplessness makes her <<if $activeSlave.devotion > 20>>cooperation<<else>>consent<</if>> completely unnecessary for what you're planning. She makes to turn as you come around behind her, but she can manage only a partial crane of her shoulders and neck to <<if canSee($activeSlave)>>see<<else>>figure out<</if>> what you're doing. Seizing her ankles, you haul her legs out from under her boobs and body, and then push her forward, balancing her body atop her tits as though they were an exercise ball. <<if $activeSlave.devotion > 20>>She giggles at this<<else>>She struggles a little at the sudden discomfort<</if>>, and tries to steady herself with her hands, so you pull them around behind her and pin her arms to her $activeSlave.skin back with one of your hands. You <<if $PC.dick == 1>>shove your dick up<<else>>pull on a strap-on with your other hand and insert it into<</if>> her defenseless
 	<<if canDoVaginal($activeSlave)>>pussy<<else>>asshole<</if>>. Then you fuck her.
-	<<SimpleVCheck>>
+	<<= SimpleVCheck()>>
 	<br><br>
 	You're physically fit to begin with, and between that and all the practice you get, you pride yourself on your <<if $PC.dick == 1>><<if $PC.vagina == 1>>master level futa skills<<else>>cocksmanship<</if>><<else>>power with a strap-on<</if>>. You can fuck hard, and $activeSlave.slaveName gets fucked hard. Having all of her weight on her tits, and being sawed back and forth on top of those tits, is not comfortable.
 	<<if canDoVaginal($activeSlave)>>
@@ -16162,7 +16162,7 @@ You tell her kindly that you understand, and that she'll be trained to address t
 	<br><br>
 	@@.mediumorchid;Sometimes dreams do come true.@@
 	<br><br>
-	<<SimpleVCheck>>
+	<<= SimpleVCheck()>>
 	<<set $activeSlave.trust -= 4, $activeSlave.devotion -= 4>>
 	<</replace>>
 <</link>><<if (($activeSlave.vagina == 0) && canDoVaginal($activeSlave)) || (($activeSlave.anus == 0) && canDoAnal($activeSlave))>> //This option will take virginity//<</if>>
@@ -16467,7 +16467,7 @@ You tell her kindly that you understand, and that she'll be trained to address t
 		making her shudder.
 	<</if>>
 	When you're done, you let her down, and the first thing she does is spin in your embrace to give you an @@.hotpink;earnest kiss.@@
-	<<SimpleVCheck>>
+	<<= SimpleVCheck()>>
 	<<set $activeSlave.devotion += 4>>
 	<</replace>>
 <</link>><<if (($activeSlave.vagina == 0) && canDoVaginal($activeSlave)) || (($activeSlave.anus == 0) && canDoAnal($activeSlave))>> //This option will take virginity//<</if>>
@@ -16901,7 +16901,7 @@ You tell her kindly that you understand, and that she'll be trained to address t
 		leaving her to climb down herself, @@.gold;fearfully@@ watching your receding back as she gets off the counter, favoring her battered breasts.
 		<<set $activeSlave.trust -= 4>>
 	<</if>>
-	<<SimpleVCheck>>
+	<<= SimpleVCheck()>>
 	<</replace>>
 <</link>><<if (($activeSlave.vagina == 0) && canDoVaginal($activeSlave)) || (($activeSlave.anus == 0) && canDoAnal($activeSlave))>> //This option will take virginity//<</if>>
 <</if>>
diff --git a/src/uncategorized/RETS.tw b/src/uncategorized/RETS.tw
index 41e1e11027a..ae5f4e6801e 100644
--- a/src/uncategorized/RETS.tw
+++ b/src/uncategorized/RETS.tw
@@ -1593,7 +1593,7 @@ she adds impishly. Hearing this, $subSlave.slaveName lets the breast pop free of
 	$subSlave.slaveName is out of it, and doesn't realize you're there. The first indication she gets of your presence is the <<if $PC.dick == 1>>head of your penis<<else>>tip of your strap-on<</if>> <<if $subSlave.anus > 2>>sliding easily inside her soft butthole<<elseif $subSlave.anus > 1>>pushing firmly up her relaxed anus<<else>>penetrating her tight little asshole<</if>>. She groans, but greets you properly, slurring a little from sheer fatigue and overstimulation. Nevertheless, she reaches clumsily around to spread her cheeks for you. As you begin to fuck her butt, your invading <<if $PC.dick == 1>>cock<<else>>phallus<</if>> <<if canPenetrate($subSlave)>>presses against her prostate, forcing her hard again<<else>>and thrusting hips get her moving again, too<</if>>. Beneath her, $activeSlave.slaveName shifts uncomfortably at the resumed sex and the extra weight. To relieve her, you haul her <<if $activeSlave.relationship > 4>>wife<<else>>lover<</if>> into a more upright position so she can fuck and be fucked while straddling $activeSlave.slaveName's pressed-together thighs. You fuck $subSlave.slaveName just as hard as she was fucking $activeSlave.slaveName, taking your pleasure from her without mercy. Despite this, the sexed-out slave orgasms again.
 	<<if ($PC.dick == 1) && (canPenetrate($subSlave))>>Deciding to really fill $activeSlave.slaveName, you shove $subSlave.slaveName's quivering body off to one side without ceremony, shove yourself inside the $desc on the bottom, and add your cum to the two loads already inside her.<<else>>You climax yourself, and then stand.<</if>>
 	Pleased, you head off to find more amusement, leaving the sex-stained slaves dozing in each other's arms, @@.hotpink;not thinking for a moment@@ about how profoundly sexual pleasure dominates their lives.
-	<<SimpleVCheck>>
+	<<= SimpleVCheck()>>
 	<<set $activeSlave.devotion += 4>>
 	<<if canPenetrate($subSlave)>>
 		<<if canImpreg($activeSlave, $subSlave)>>
@@ -1619,20 +1619,20 @@ she adds impishly. Hearing this, $subSlave.slaveName lets the breast pop free of
 	<<switch $activeSlave.fetish>>
 	<<case "submissive">>
 		holding the submissive $desc up against the shower wall and giving her a second reaming.
-		<<SimpleVCheck>>
+		<<= SimpleVCheck()>>
 	<<case "cumslut">>
 		giving the cumslut a soapy massage as she <<if $PC.dick == 1>>sucks your cock<<if $PC.vagina == 1>> and <</if>><</if>><<if $PC.vagina == 1>>eats you out<</if>>.
 		<<set $activeSlave.oralCount += 1>>
 		<<set $oralTotal += 1>>
 	<<case "humiliation">>
 		holding the humiliation slut up against the shower wall so passing slaves can see her get fucked.
-		<<SimpleVCheck>>
+		<<= SimpleVCheck()>>
 	<<case "buttslut">>
 		holding the submissive $desc up against the shower wall and giving her a second anal reaming.
 		<<= AnalVCheck()>>
 	<<case "boobs">>
 		fucking the boob fetishist from behind so you can play with her nipples,
-		<<SimpleVCheck>>
+		<<= SimpleVCheck()>>
 	<<case "pregnancy">>
 		<<if $activeSlave.bellyPreg >= 1500>>
 			massaging the pregnant slut's belly as you fuck her.
@@ -1641,19 +1641,19 @@ she adds impishly. Hearing this, $subSlave.slaveName lets the breast pop free of
 		<<else>>
 			pushing the impregnation slut into a corner and pretending you're knocking her up.
 		<</if>>
-		<<SimpleVCheck>>
+		<<= SimpleVCheck()>>
 	<<case "dom" "sadist">>
 		holding the sexually aggressive $desc against the wall so she can push herself back against you.
-		<<SimpleVCheck>>
+		<<= SimpleVCheck()>>
 	<<case "masochist">>
 		pushing the pain slut into a corner and spanking her while you fuck her.
-		<<SimpleVCheck>>
+		<<= SimpleVCheck()>>
 	<<default>>
 		pushing the vanilla girl's back against the wall and kissing her lovingly.
-		<<SimpleVCheck>>
+		<<= SimpleVCheck()>>
 	<</switch>>
 	As $activeSlave.slaveName orgasms in your arms, you feel $subSlave.slaveName hug your thighs lightly before starting to <<if $PC.dick == 1>>blow you<<else>>lick your pussy<</if>> herself. Afterward, you bring the tired pair back to their bed and get them tucked in. They @@.mediumaquamarine;find the gesture comforting,@@ and are asleep in an instant.
-	<<SimpleVCheck>>
+	<<= SimpleVCheck()>>
 	<<set $activeSlave.trust += 4>>
 	<<set $subSlave.oralCount++, $subSlave.penetrativeCount++, $subSlave.trust += 4>>
 	<<set $oralTotal++, $penetrativeTotal++>>
diff --git a/src/uncategorized/newSlaveIntro.tw b/src/uncategorized/newSlaveIntro.tw
index 510e854798e..e8b77164972 100644
--- a/src/uncategorized/newSlaveIntro.tw
+++ b/src/uncategorized/newSlaveIntro.tw
@@ -1197,7 +1197,7 @@ The legalities completed, ''__@@.pink;<<SlaveFullName $activeSlave>>@@__'' <<if
 					<<set $activeSlave.trust -= 4>>
 				<</if>>
 			<</if>>
-			<<SimpleVCheck>>
+			<<= SimpleVCheck()>>
 		<</replace>>
 	<</link>>
 <</if>>
@@ -1339,7 +1339,7 @@ The legalities completed, ''__@@.pink;<<SlaveFullName $activeSlave>>@@__'' <<if
 			<<set $activeSlave.trust -= 4>>
 			<</if>>
 		<</if>>
-		<<SimpleVCheck>>
+		<<= SimpleVCheck()>>
 	<</replace>>
 <</link>>
 <</if>>
diff --git a/src/uncategorized/peHeadgirlConcubine.tw b/src/uncategorized/peHeadgirlConcubine.tw
index 25322769658..bc9f2c98c9b 100644
--- a/src/uncategorized/peHeadgirlConcubine.tw
+++ b/src/uncategorized/peHeadgirlConcubine.tw
@@ -242,7 +242,7 @@ You wake up one morning to find $HeadGirl.slaveName and $Concubine.slaveName wai
 	<</if>>
 	<<set $slaves[$i].devotion += 4, $slaves[$partner].devotion += 4>>
 	<<= BothVCheck(2, 1)>>
-	<<PartnerVCheck 2 1>>
+	<<= PartnerVCheck(2,1)>>
 	<</replace>>
 <</link>>
 <</if>>
diff --git a/src/utility/miscWidgets.tw b/src/utility/miscWidgets.tw
index 974d3f8553e..e634c816244 100644
--- a/src/utility/miscWidgets.tw
+++ b/src/utility/miscWidgets.tw
@@ -34,76 +34,6 @@
 <</if>>
 <</widget>>
 
-/%
- Call as <<SimpleVCheck 5>> or <<SimpleVCheck>>
- $arg[0] is how many times to increment either the Vaginal or the Anal counts, if there is no Vagina available.
- If left undefined it will assume it to be 1.
-%/
-<<widget "SimpleVCheck">>
-<<if canDoVaginal($activeSlave)>>
-	<<if ($activeSlave.vagina == 0)>>
-		@@.lime;This breaks in $activeSlave.slaveName's virgin pussy.@@
-		<<if ($activeSlave.devotion > 20) || $activeSlave.career == "a slave since birth">>
-			As it's her first time, you ease yourself into her pussy and gradually speed up your thrusts while she slowly learns to move her hips along with you. Her moans become louder and louder.
-			<<if $activeSlave.tankBaby == 2>>
-				She thinks of losing her virginity to her <<WrittenMaster $activeSlave>> a @@.hotpink;necessity to be happy.@@ She expects her pussy to be seeing a lot more attention in the future.
-			<<else>>
-				@@.hotpink;She enjoys losing her cherry to you.@@ She looks forward to having her pussy fucked by you again.
-			<</if>>
-			<<set $activeSlave.devotion += 4>>
-		<<elseif ($activeSlave.devotion < -20)>>
-			You force yourself into her pussy. She sobs and cries with disgust while you continue working her fuck hole. She @@.mediumorchid;hates@@ and @@.gold;fears@@ you for taking her virginity.She dreads having her pussy fucked by you again.
-			<<set $activeSlave.trust -= 5, $activeSlave.devotion -= 5>>
-		<<else>>
-			As it's her first time, you ease yourself into her pussy and gradually speed up your thrusts while she slowly learns to move her hips along with you. She accepts losing her virginity to her owner. She looks forward to having her pussy fucked by you again.
-		<</if>>
-		<<set $activeSlave.vagina = 1>>
-	<</if>>
-	<<if $args[0]>>
-		<<set $vaginalTotal += $args[0],
-		$activeSlave.vaginalCount += $args[0]>>
-	<<else>>
-		<<set $vaginalTotal++,
-		$activeSlave.vaginalCount++>>
-	<</if>>
-	<<if $PC.dick == 1 && canGetPregnant($activeSlave) && ($activeSlave.eggType == "human")>>
-		<<= knockMeUp($activeSlave, 10, 0, -1, 1)>>
-	<</if>>
-<<elseif canDoAnal($activeSlave)>>
-	<<if ($activeSlave.anus == 0)>>
-		@@.lime;This breaks in $activeSlave.slaveName's virgin ass.@@
-		<<if ($activeSlave.devotion > 50) || $activeSlave.career == "a slave since birth">>
-			As it's her first time, you gently ease yourself into her butthole and gradually increase the intensity of your thrusts. Before long she's moaning loudly as you continue working away at her butthole.
-			<<if $activeSlave.tankBaby == 2>>
-				She thinks of losing her anal virginity to her <<WrittenMaster $activeSlave>> a @@.hotpink;necessity.@@ She expects her asshole to be seeing a lot more attention now.
-			<<else>>
-				She thinks of losing her anal virginity to you as a @@.hotpink;connection@@ with her beloved <<WrittenMaster $activeSlave>>. She looks forward to having her asshole fucked by you again.
-			<</if>>
-			<<set $activeSlave.devotion += 4>>
-		<<elseif ($activeSlave.devotion > 20)>>
-			As it's her first time, you gently ease yourself into her butthole and gradually increase the intensity of your thrusts. Before long she's moaning loudly as you continue working away at her butthole. She accepts the pain and humiliation of anal sex as part of her sexual servitude. She looks forward to having her asshole fucked by you again.
-		<<elseif ($activeSlave.devotion >= -20)>>
-			You force yourself into her butthole. She sobs and cries with disgust while you continue thrusting into her ass. She @@.gold;fears@@ her next anal sex, remembering the pain of losing her anal virginity. She dreads having her ass fucked by you again.
-			<<set $activeSlave.trust -= 5>>
-		<<else>>
-			You force yourself into her butthole. She sobs and cries with disgust while you continue thrusting into her ass. She @@.mediumorchid;hates@@ and @@.gold;fears@@ you for violating her virgin butt. She dreads having her ass fucked by you again.
-			<<set $activeSlave.trust -= 5, $activeSlave.devotion -= 5>>
-		<</if>>
-		<<set $activeSlave.anus = 1>>
-	<</if>>
-	<<if $args[0]>>
-		<<set $analTotal += $args[0],
-		$activeSlave.analCount += $args[0]>>
-	<<else>>
-		<<set $analTotal++,
-		$activeSlave.analCount++>>
-	<</if>>
-	<<if $PC.dick == 1 && canGetPregnant($activeSlave) && ($activeSlave.eggType == "human")>>
-		<<= knockMeUp($activeSlave, 10, 1, -1, 1)>>
-	<</if>>
-<</if>>
-<</widget>>
-
 /%
  Call as <<SimpleSexAct slave 5>> or <<SimpleSexAct slave>>
  $arg[1] is how many times to increment either the Vaginal, Anal, or Oral counts, depending on availability on $arg[0].
@@ -325,70 +255,6 @@
 <</if>>
 <</widget>>
 
-/%
- Call as <<PartnerVCheck 10 5>> or <<PartnerVCheck>>
- Before calling this widget, set $partner to the index of the partner in the $slaves array
- $arg[0] is how many times to increment the Anal counts, if there is no Vagina available.
- $arg[1] is how many times to increment both holes counts (usually it is half of Anal).
- In both cases if left undefined it will assume it to be 1.
- This also checks for a valid Vagina/Accessory, though most code I've seen does this already, you
- never know when someone might use the routine and forget to do such.
-%/
-<<widget "PartnerVCheck">>
-
-<<if $partner < 0 || $partner >= $slaves.length>>
-	@@.red;PartnerVCheck called with invalid partner '$partner' from passage <<print passage()>>@@
-<<elseif canDoVaginal($slaves[$partner])>>
-	<<if ($slaves[$partner].vagina == 0)>>
-		<<if canDoAnal($slaves[$partner]) && ($slaves[$partner].anus == 0)>>
-			Since it's $slaves[$partner].slaveName's first time, you take your time and gently ease yourself into her pussy before gradually working your way into her butthole, alternating between her holes. @@.lime;This breaks in $slaves[$partner].slaveName's virgin holes.
-			<<set $slaves[$partner].vagina++, $slaves[$partner].anus++>>
-		<<else>>
-			Since it's $slaves[$partner].slaveName's first time, you take your time and gently ease yourself into her pussy before gradually increasing the intensity of your thrusts. @@.lime;This breaks in $slaves[$partner].slaveName's virgin pussy.
-			<<set $slaves[$partner].vagina++>>
-		<</if>>
-	<<elseif canDoAnal($slaves[$partner]) && ($slaves[$partner].anus == 0)>>
-		Since it's $slaves[$partner].slaveName's first time, you take your time and gently ease yourself into her butthole before gradually increasing the intensity of your thrusts into her ass. @@.lime;This breaks in $slaves[$partner].slaveName's virgin ass.
-		<<set $slaves[$partner].anus++>>
-	<</if>>
-	<<if canDoAnal($slaves[$partner])>>
-		<<if $args[1]>>
-			<<set $vaginalTotal += $args[1], $analTotal += $args[1], $slaves[$partner].vaginalCount += $args[1], $slaves[$partner].analCount += $args[1]>>
-		<<else>>
-			<<set $vaginalTotal++, $analTotal++, $slaves[$partner].vaginalCount++, $slaves[$partner].analCount++>>
-		<</if>>
-		<<if $PC.dick == 1 && canGetPregnant($slaves[$partner]) && ($slaves[$partner].eggType == "human")>>
-			<<= knockMeUp($slaves[$partner], 10, 2, -1)>>
-		<</if>>
-	<<else>>
-		<<if $args[1]>>
-			<<set $vaginalTotal += $args[1], $slaves[$partner].vaginalCount += $args[1]>>
-		<<else>>
-			<<set $vaginalTotal++, $slaves[$partner].vaginalCount++>>
-		<</if>>
-		<<if $PC.dick == 1 && canGetPregnant($slaves[$partner]) && ($slaves[$partner].eggType == "human")>>
-			<<= knockMeUp($slaves[$partner], 10, 0, -1)>>
-		<</if>>
-	<</if>>
-<<elseif canDoAnal($slaves[$partner])>>
-	<<if ($slaves[$partner].anus == 0)>>
-		Since it's $slaves[$partner].slaveName's first time, you take your time and gently ease yourself into her butthole before gradually increasing the intensity of your thrusts into her ass. This breaks in $slaves[$partner].slaveName's virgin ass.
-		<<set $slaves[$partner].anus++>>
-	<</if>>
-	<<if $args[0]>>
-		<<set $analTotal += $args[0],
-		$slaves[$partner].analCount += $args[0]>>
-	<<else>>
-		<<set $analTotal++,
-		$slaves[$partner].analCount++>>
-	<</if>>
-	<<if $PC.dick == 1 && canGetPregnant($slaves[$partner]) && ($slaves[$partner].eggType == "human")>>
-		<<= knockMeUp($slaves[$partner], 10, 1, -1)>>
-	<</if>>
-<</if>>
-@@
-<</widget>>
-
 /%
  Call as <<SlaveInteractImpreg>>
 %/
-- 
GitLab