Explorar el Código

Lots of stuff, mostly refactoring cum spatter and deposit code, making
several places behave more logically, and making it so that showering
and bathing don't remove sperm deposits from the vagina and anus - those
will dissipate on their own in a few hours, or they can be removed with
a douche or enema.

J hace 7 años
padre
commit
6e2625c091

+ 3 - 0
glife.qproj

@@ -888,7 +888,10 @@
 		<Location name="cum_cleanup"/>
 		<Location name="cum_call"/>
 		<Location name="pregriskeval"/>
+		<Location name="sexcontraprio"/>
+		<Location name="sparrput"/>
 		<Location name="cuminsidereact"/>
+		<Location name="cumarrput"/>
     </Folder>
     <Location name="LBZhouse"/>
     <Location name="femcyc"/>

+ 119 - 271
locations/Cum_Manage

@@ -27,55 +27,91 @@
 	4 = 'The condom broke'
 	5 = 'The condom slipped off inside you'
 	6 = 'The condom was sabotaged by someone else'
-	7 = 'You sabotaged the condom'}
+	7 = 'You sabotaged the condom'
+	8 = 'Precum had sperm in it'}
+if $ARGS[0] = 'cumeater':
+	loc = ARGS[1]
+	i = arrpos('sparrloc', loc)
+	if i ! -1:
+		spdirtyb = 1
+		fbreath = 0
+		vaf += 1
+		$part = ''
+		if loc = 13:
+			'You carefully lick the sperm residue from both hands, enjoying the tart taste of semen.'
+			gs 'cum_cleanup', 'cleanloc', loc
+		elseif loc = 17:
+			'You fish around in your vagina and pull forth a condom full of <<$sparrnam[i]>>''s semen and drink it.'
+			gs 'cum_cleanup', 'cleandeposit', i
+		else
+			if loc = 0:
+				$part = 'pussy'
+			elseif loc = 1:
+				$part = 'pussylips'
+			elseif loc = 2 or loc = 5:
+				$part = 'your panties'
+				gs 'cum_cleanup', 'cleanloc', 2
+				gs 'cum_cleanup', 'cleanloc', 5
+			elseif loc = 3:
+				$part = 'anus'
+			elseif loc = 4:
+				$part = 'buttocks'
+			elseif loc = 6 or loc = 7:
+				$part = 'clothes'
+				gs 'cum_cleanup', 'cleanloc', 6
+				gs 'cum_cleanup', 'cleanloc', 7
+			elseif loc = 8:
+				$part = 'back'
+			elseif loc = 9:
+				$part = 'legs'
+			elseif loc = 10:
+				$part = 'arms'
+			elseif loc = 11:
+				$part = 'face'
+			elseif loc = 14:
+				$part = 'stomach'
+			elseif loc = 15:
+				$part = 'breasts'
+			elseif loc = 16:
+				$part = 'hair'
+			end
+			if rand(0, 1) = 0:
+				'You collect a handful of sperm from your <<$part>> in your hand and lick it all up, enjoying the tart taste of semen.'
+			else
+				'You collect the sperm from your <<$part>> with your fingers and lick them, enjoying the tart taste of semen.'
+			end
+			sparr_idx = func 'sparrput', 'Yourself', 13, 100, -1, 10, 0
+			gs 'cum_cleanup', 'cleanloc', loc
+		end
+	end
+end
 
 
 if $ARGS[0] = '':
 	!{Sets the cum array temp to the current size of the cum array, to add a new entry to the end of file. Then checks to see if you are on the pill. If you are and there is no contraception used, it flags this as a "done with pill" act, which means a pregnancy will be a pill failure.}
-	cumarr_idx = arrsize('$cumarrnam')
+	cumarr_idx = -1
+	sparr_idx = -1
 	if sexcontra = 0 and pillcon > 0: sexcontra = 2
+	if sexvolume <= 1: sexvolume = 40
 	if vibratorIN = 1 and spafinloc = 0 and replace_vib = 0: vibratorIN = 0
 	if analplugIN = 1 and spafinloc = 3 and replace_analplug = 0: analplugIN = 0
+	effcontra = sexcontra
 	!{It checks to see if this is flagged as a preejaculate emmission. All vaginal penetrations that flag this as cumprecheck contain preejaculate. Guidelines for calling it: If your boy is likely to have masterbated, had sex, or otherwise encouraged semen to leak out of their urethra in the last 48 hours, they probably have some fertile preejaculate. If in doubt, let it leak. The chances of pregnancy from it are low, and the MC should have been wearing protection.}
+	vol = sexvolume
+	ppt = sexvolume * rand(15, 20)
+	spread = 0
 	if cumprecheck ! 1:
 		!{Here it checks for vaginal deposit. If it is, it sees if theres a deposit made by someone named the same. If so, it checks if this new act is protected. If it isnt, it overwrites the old deposit.}
-		if spafinloc <= 0:
-			tmp_idx = arrpos('$cumarrnam',$boy)
-			if tmp_idx >= 0:
-				if $cumarrnam[tmp_idx] = $boy and cumarrdel[tmp_idx] = 0 and sexcontra < 3: cumarr_idx = tmp_idx
-			end
-
-			!{Next it sets the variables in the array. The cumming boys name first, sets the cum age to 0, then the cum delivery location to vaginally, then sees if its a unknowing sex act. If it is, it makes it so the MC doesnt know who did it. Then if the boy has a custom specified potency, it flags the potency. Otherwise it sets it to the default.}
-			$cumarrnam[cumarr_idx] = $boy
-			cumarrage[cumarr_idx] = 0
-			cumarrdel[cumarr_idx] = 0
-			if sexunaware > 0 and sexpartkno = 0:
-				cumarrkno[cumarr_idx] = 0
-			else
-				cumarrkno[cumarr_idx] = 1
-			end
-			if sexspecpot ! 0:
-				cumarrppt[cumarr_idx] = sexspecpot
-			else
-				cumarrppt[cumarr_idx] = 10000
-			end
+		if spafinloc <= 0 or spafinloc = 17:
 
 			!{Now it sets up the splatter and actual internal cum. First it sets the array to the spatter end of file. Then it checks for riding bareback. If theres a condom, it gives a chance for the condom to fail in general, slip off and remain in the vagina, or break.}
-			sparr_idx = arrsize('sparrvol')
-			tmp_idx = arrsize('sparrvol')
-			:arrmodloop1
-			if sparrloc[tmp_idx] = spafinloc and $sparrnam[tmp_idx] = $boy and sexcontra < 3:
-				sparr_idx = tmp_idx
-			else
-				tmp_idx -= 1
-				if tmp_idx >= 0: jump 'arrmodloop1'
-			end
-
-			if sparrppt[0] = 0 and sparr_idx = 1: sparr_idx = 0
-			!{If a condom is used, determine if the condom broke or fell off}
+			!{Generate default potency potential from a random multiplier of sexvolume. Sexvolume defaults to 40 unless specified otherwise (may need to be higher, I do not know) and ppt can also be overridden by setting sexspecpot directly.}
+			cpt = 0
+			loc = 0
+			add = -1
 			if sexcontra > 2:
 				if sexcontra = 3 or sexcontra = 6 or sexcontra = 7:
-					temprand = rand(0,1000)
+					!{For condoms, determine if it broke or not}
 					dick_wid = 3
 					if $dick_girth = 'skinny': dick_wid = 2
 					if $dick_girth = 'slim': dick_wid = 3
@@ -101,85 +137,61 @@ if $ARGS[0] = '':
 					if sexcontra = 6 or sexcontra = 7: break_thresh += 10
 					break_thresh += slip_thresh
 
+					temprand = rand(0,1000)
 					if temprand <= slip_thresh:
 						sexcontra = 5
 					elseif temprand <= break_thresh:
 						sexcontra = 4
 					end
 				end
-				!{Take final value of sexcontra and apply cum potency, age, etc. as appropriate.}
-				cumarrcon[cumarr_idx] = sexcontra
+				!{Take final value of sexcontra and compute cum potency, age, etc. as appropriate.}
 				if sexcontra = 3:
-					cumarrcpt[cumarr_idx] += 0
+					!{The condom did its job. No spatter, no cum deposit.}
+					add = 0
 				elseif sexcontra = 4:
-					cumarrcpt[cumarr_idx] += cumarrppt[cumarr_idx]/2
-					sparrage[sparr_idx] = 0
-					sparrloc[sparr_idx] = 0
-					$sparrnam[sparr_idx] = $boy
-					if sexspecpot ! 0:
-						sparrppt[sparr_idx] = sexspecpot
-					else
-						sparrppt[sparr_idx] = 10000
-					end
-					sparrvol[sparr_idx] += sexvolume
-					cumsumbod += sexvolume
-					cumsumvag += sexvolume
-					if sexvolume <= 0: sparrvol[sparr_idx] += 40 & cumsumbod += 40 & cumsumvag += 40
-					sparridt[sparr_idx] = sexpartkno
-					sparrslc[sparr_idx] = 0
+					!{Broke. Nearly as bad as no protection.}
+					cpt = ppt/rand(3,5)
 				elseif sexcontra = 5:
-					cumarrcpt[cumarr_idx] += cumarrppt[cumarr_idx]/20
+					!{Fell off.}
+					cpt = ppt / rand(10,20)
 					cumcondslip = 1
-					cumcondsanb = cumarr_idx
-					sparrage[sparr_idx] = 0
-					sparrloc[sparr_idx] = 17
-					$sparrnam[sparr_idx] = $boy
-					if sexspecpot ! 0:
-						sparrppt[sparr_idx] = sexspecpot
-					else
-						sparrppt[sparr_idx] = 10000
-					end
-					sparrvol[sparr_idx] += sexvolume
-					cumsumbod += sexvolume
-					cumsumvag += sexvolume
-					if sexvolume <= 0: sparrvol[sparr_idx] += 40 & cumsumbod += 40 & cumsumvag += 40
-					sparridt[sparr_idx] = sexpartkno
-					sparrslc[sparr_idx] = 0
-					!{!Next it checks for sabotaged condoms. First sabotaged by you, then sabotaged by the guy. If they were sabotaged, it acts similar to a condom failure, but worse.}
+					vol = sexvolume / rand(1, 3)
+					loc = 17
 				elseif sexcontra = 6 or sexcontra = 7:
-					cumarrcpt[cumarr_idx] += cumarrppt[cumarr_idx]/3
+					!{Someone was naughty. Very naughty. She gets a large portion of the "potential" potency, but we do not continue to add to it over time since presumably the condom is thrown away.}
+					cpt = ppt / rand(2, 6)
+					ppt = 0
+					vol = 0
 				end
-				!{If you have no protection, you get a nice full load of semen.}
 			else
-				sparrage[sparr_idx] = 0
-				sparrloc[sparr_idx] = 0
-				$sparrnam[sparr_idx] = $boy
+				!{If you have no protection, you get a nice full load of semen. Note that in ALL cases, cpt does not start out at 100% so washing out sperm quickly can still reduce but not negate chance of pregnancy.}
+				cpt = ppt/rand(2,5)
+				vol = sexvolume
+			end
+
+			if add:
+				!{sexspecpot overrides computed value}
 				if sexspecpot ! 0:
-					sparrppt[sparr_idx] = sexspecpot
-				else
-					sparrppt[sparr_idx] = 10000
+					ppt = sexspecpot
+				end
+
+				!{Add values to spatter and deposit arrays}
+				cumarr_idx = func 'cumarrput', $boy, sexcontra, ppt, cpt, know
+				if sexcontra = 5:
+					cumcondsanb = cumarr_idx
+				end
+				if vol > 0:
+					!{She might be inseminated by a method that does not leave residue, like a sabotaged condom.}
+					sparr_idx = func 'sparrput', $boy, loc, ppt, know, vol, spread
 				end
-				sparrvol[sparr_idx] += sexvolume
-				cumsumbod += sexvolume
-				cumsumvag += sexvolume
-				if sexvolume <= 0: sparrvol[sparr_idx] += 40 & cumsumbod += 40 & cumsumvag += 40
-				sparridt[sparr_idx] = sexpartkno
-				sparrslc[sparr_idx] = 0
-				cumarrcpt[cumarr_idx] += cumarrppt[cumarr_idx]/5*4
-				cumarrcon[cumarr_idx] = sexcontra
+
+				cumsumbod += vol
+				cumsumvag += vol
 			end
+
 			!{If you arent getting it in the vagina, and the boy isnt pumping it into a condom, a spatter is made and applied. If you arent wearing any panties and it was called to hit your panties, it goes directly to your groin. If you are naked and it calls for a clothing strike, it will go to your body instead.}
-		elseif spafinloc > 0 and sexcontra < 3:
-			sparr_idx = arrsize('sparrvol')
-			tmp_idx = arrsize('sparrvol')
-			:arrmodloop2
-			if sparrloc[tmp_idx] = spafinloc and $sparrnam[tmp_idx] = $boy and sexcontra < 3:
-			sparr_idx = tmp_idx
-			else
-			tmp_idx -= 1
-			if tmp_idx >= 0: jump 'arrmodloop2'
-			end
-			sparrage[sparr_idx] = 0
+		elseif spafinloc > 0 and spafinloc ! 17 and sexcontra < 3:
+
 			if tanga = 0:
 				if spafinloc = 2:
 					spafinloc = 1
@@ -206,42 +218,24 @@ if $ARGS[0] = '':
 					end
 				end
 			end
-			sparrloc[sparr_idx] = spafinloc
 			if spafinloc = 12 and swallow >= 10 and rand(0,3) = 0: energy += 2
-			$sparrnam[sparr_idx] = $boy
-			if sexspecpot ! 0:
-				sparrppt[sparr_idx] = sexspecpot
-			else
-				sparrppt[sparr_idx] = 10000
-			end
-			sparrvol[sparr_idx] += sexvolume
 			cumsumbod += sexvolume
-			if sexvolume <= 0: sparrvol[sparr_idx] += 40 & cumsumbod += 40 & cumsumvag += 40
 			if spafinloc = 3:
 				cumsumass += sexvolume
-				if sexvolume <= 0: cumsumass += 40
 			end
-			sparridt[sparr_idx] = sexpartkno
-			sparrslc[sparr_idx] = 0
+			know = sexpartkno ! 0 and sexunaware ! 1
+			sparr_idx = func 'sparrput', $boy, spafinloc, ppt, know, sexvolume, spread
 		end
-		sexpartkno = 0
-		sexunaware = 0
-		sexspecpot = 0
 	elseif (sexcontra < 3 or sexcontra > 5) and spafinloc = 0:
 		!{And this is the pre ejaculate release talked about above.}
-		tmp_idx = arrpos('$cumarrnam',$boy)
-		if tmp_idx ! -1 and cumarrdel[tmp_idx] = 0: cumarr_idx = tmp_idx
-		$cumarrnam[cumarr_idx] = $boy
-		cumarrage[cumarr_idx] = 0
-		cumarrdel[cumarr_idx] = 0
-		cumarrkno[cumarr_idx] = 0
 		if sexspecpot ! 0:
-			cumarrppt[cumarr_idx] = sexspecpot
+			ppt = sexspecpot
 		else
-			cumarrppt[cumarr_idx] = 10000
+			ppt = 10000
 		end
-		cumarrcon[cumarr_idx] = sexcontra
-		cumarrcpt[cumarr_idx] = cumarrppt[cumarr_idx]/12
+		ppt /= 100
+		cpt = ppt / rand(3, 12)
+		cumarr_idx = func 'cumarrput', $boy, 8, ppt, cpt, 0
 	end
 
 	sexspecpot = 0
@@ -249,6 +243,9 @@ if $ARGS[0] = '':
 	spafinloc = 0
 	sexvolume = 0
 	tmp_idx = 0
+	sexpartkno = 0
+	sexunaware = 0
+	sexspecpot = 0
 	dynamic $din_Update_Condom_Counts
 	if cumsumass >= 60:
 		tmp_idx = arrpos('sparrloc',3)
@@ -262,155 +259,6 @@ end
 
 
 
-if $ARGS[0] = 'cumeater1':
-	spdirtyb = 1
-	fbreath = 0
-	vaf += 1
-	if sparrvol[temp1arr] > 150:
-		sparrvol[temp1arr] -= 100
-		gs 'stat'
-		'You collect a handful of sperm from your stomach in your hand and lick it all up, feeling the tart taste of semen.'
-	else
-		sparrvol[temp1arr] -= 20
-		gs 'stat'
-		'You collect the sperm from your stomach with your fingers and lick them, feeling the tart taste of semen.'
-	end
-	if sparrvol[temp1arr] <= 0:temp = 14 & gs 'cum_cleanup', 'cumeatercleanup'
-end
-if $ARGS[0] = 'cumeater2':
-	spdirtyb = 1
-	fbreath = 0
-	vaf += 1
-	if sparrvol[temp1arr] > 150:
-		sparrvol[temp1arr] -= 100
-		gs 'stat'
-		'You collect a handful of sperm from your pussy in your hand and lick it all up, feeling the tart taste of semen.'
-	else
-		sparrvol[temp1arr] -= 20
-		gs 'stat'
-		'You collect the sperm from your pussy with your fingers and lick them, feeling the tart taste of semen.'
-	end
-	if sparrvol[temp1arr] <= 0:
-		temp = 0 & gs 'cum_cleanup', 'cumeatercleanup'
-		temp = 1 & gs 'cum_cleanup', 'cumeatercleanup'
-	end
-end
-if $ARGS[0] = 'cumeater3':
-	spdirtyb = 1
-	fbreath = 0
-	vaf += 1
-	if sparrvol[temp1arr] > 150:
-		sparrvol[temp1arr] -= 100
-		gs 'stat'
-		'You collect a handful of sperm from your buttocks in your hand and lick it all up, feeling the tart taste of semen.'
-	else
-		sparrvol[temp1arr] -= 20
-		gs 'stat'
-		'You collect the sperm from your buttocks with your fingers and lick them, feeling the tart taste of semen.'
-	end
-	if sparrvol[temp1arr] <= 0:temp = 4 & gs 'cum_cleanup', 'cumeatercleanup'
-end
-if $ARGS[0] = 'cumeater4':
-	spdirtyb = 1
-	fbreath = 0
-	vaf += 1
-	if sparrvol[temp1arr] > 150:
-		sparrvol[temp1arr] -= 100
-		gs 'stat'
-		'You collect a handful of sperm from your face in your hand and lick it all up, feeling the tart taste of semen.'
-	else
-		sparrvol[temp1arr] -= 20
-		gs 'stat'
-		'You collect the sperm from your face with your fingers and lick them, feeling the tart taste of semen.'
-	end
-	if sparrvol[temp1arr] <= 0:temp = 11 & gs 'cum_cleanup', 'cumeatercleanup'
-end
-if $ARGS[0] = 'cumeater5':
-	spdirtyb = 1
-	fbreath = 0
-	vaf += 1
-	if sparrvol[temp1arr] > 150:
-		sparrvol[temp1arr] -= 100
-		gs 'stat'
-		'You collect a handful of sperm from your clothes in your hand and lick it all up, feeling the tart taste of semen.'
-	else
-		sparrvol[temp1arr] -= 20
-		gs 'stat'
-		'You collect the sperm from your clothes with your fingers and lick them, feeling the tart taste of semen.'
-	end
-	if sparrvol[temp1arr] <= 0:
-		temp = 2 & gs 'cum_cleanup', 'cumeatercleanup'
-		temp = 5 & gs 'cum_cleanup', 'cumeatercleanup'
-		temp = 6 & gs 'cum_cleanup', 'cumeatercleanup'
-		temp = 7 & gs 'cum_cleanup', 'cumeatercleanup'
-	end
-end
-if $ARGS[0] = 'cumeater6':
-	spdirtyb = 1
-	fbreath = 0
-	vaf += 1
-	if sparrvol[temp1arr] > 150:
-		sparrvol[temp1arr] -= 100
-		gs 'stat'
-		'You collect a handful of sperm from your anus in your hand and lick it all up, feeling the tart taste of semen.'
-	else
-		sparrvol[temp1arr] -= 20
-		gs 'stat'
-		'You collect the sperm from your anus with your fingers and lick them, feeling the tart taste of semen.'
-	end
-	if sparrvol[temp1arr] <= 0:temp = 3 & gs 'cum_cleanup', 'cumeatercleanup'
-end
-if $ARGS[0] = 'cumeater7':
-	spdirtyb = 1
-	fbreath = 0
-	vaf += 1
-	if sparrvol[temp1arr] > 150:
-		sparrvol[temp1arr] -= 100
-		gs 'stat'
-		'You collect a handful of sperm from your body in your hand and lick it all up, feeling the tart taste of semen.'
-	else
-		sparrvol[temp1arr] -= 20
-		gs 'stat'
-		'You collect the sperm from your body with your fingers and lick them, feeling the tart taste of semen.'
-	end
-	if sparrvol[temp1arr] <= 0:
-		temp = 8 & gs 'cum_cleanup', 'cumeatercleanup'
-		temp = 9 & gs 'cum_cleanup', 'cumeatercleanup'
-		temp = 10 & gs 'cum_cleanup', 'cumeatercleanup'
-		temp = 11 & gs 'cum_cleanup', 'cumeatercleanup'
-		temp = 15 & gs 'cum_cleanup', 'cumeatercleanup'
-	end
-end
-if $ARGS[0] = 'cumeater8':
-	spdirtyb = 1
-	fbreath = 0
-	vaf += 1
-	if sparrvol[temp1arr] > 100:
-		sparrvol[temp1arr] = 0
-		gs 'stat'
-		'You lick up the whole mouthful of sperm, feeling the tart taste as you eat it.'
-	else
-		sparrvol[temp1arr] = 0
-		gs 'stat'
-		'You lick your fingers clean, feeling the tart taste of semen.'
-	end
-	if sparrvol[temp1arr] <= 0:temp = 13 & gs 'cum_cleanup', 'cumeatercleanup'
-end
-if $ARGS[0] = 'cumeater9':
-	spdirtyb = 1
-	fbreath = 0
-	vaf += 1
-	if sparrvol[temp1arr] > 150:
-		sparrvol[temp1arr] -= 100
-		gs 'stat'
-		'You collect a handful of sperm from your hair in your hand and lick it all up, feeling the tart taste of semen.'
-	else
-		sparrvol[temp1arr] -= 20
-		gs 'stat'
-		'You collect the sperm from your hair with your fingers and lick them, feeling the tart taste of semen.'
-	end
-	if sparrvol[temp1arr] <= 0:temp = 16 & gs 'cum_cleanup', 'cumeatercleanup'
-end
 
 --- Cum_Manage ---------------------------------
 

+ 1 - 0
locations/Gadbana

@@ -76,6 +76,7 @@ end
 
 dynamic $bteeth
 dynamic $tampon
+dynamic $douche
 dynamic $quickwash
 dynamic $wearpan
 dynamic $basin

+ 2 - 0
locations/cum_arrcheat

@@ -97,6 +97,8 @@ if cycletemp[4] > 0:
 		$cycletemp[3] = 'The condom was sabotaged by someone else'
 	elseif cumarrcon[cycletemp] = 7:
 		$cycletemp[3] = 'You sabotaged the condom'
+	elseif cumarrcon[cycletemp] = 8:
+		$cycletemp[3] = 'Precum had sperm in it'
 	else
 		$cycletemp[3] = 'improperly defined'
 	end

+ 156 - 329
locations/cum_cleanup

@@ -1,338 +1,165 @@
 # cum_cleanup
 
-temp = arrsize('sparrvol')
-cumsumbod = 0
-cumsumvag = 0
-cumsumass = 0
-
-
-
-:temploop
-if temp < 0: cumspclnt = 0
-
-cumsumbod += sparrvol[temp]
-if sparrloc[temp] = 0: cumsumvag += sparrvol[temp]
-if sparrloc[temp] = 3: cumsumass += sparrvol[temp]
-
-!{Full Body Clean}
-if cumspclnt = 1:
-	if (sparrloc[temp] = 0 and vibratorIN = 0 and sparrage[temp] > 0) or sparrloc[temp] = 1 or (sparrloc[temp] = 3 and analplugIN = 0 and sparrage[temp] > 0) or sparrloc[temp] = 4 or sparrloc[temp] >= 8:
-		KILLVAR 'spafinloc',temp
-		KILLVAR 'sparrage',temp
-		KILLVAR 'sparrloc',temp
-		KILLVAR '$sparrnam',temp
-		KILLVAR 'sparrppt',temp
-		KILLVAR 'sparridt',temp
-		KILLVAR 'sparrvol',temp
-		KILLVAR 'sparrslc',temp
-	end
-	cumsumbod -= sparrvol[temp]
-	if sparrloc[temp] = 0: cumsumvag -= sparrvol[temp]
-	if sparrloc[temp] = 3: cumsumass -= sparrvol[temp]
-	temp -= 1
-	jump 'temploop'
-
-!{Teeth Clean}
-elseif cumspclnt = 2:
-	if sparrloc[temp] = 12:
-		KILLVAR 'spafinloc',temp
-		KILLVAR 'sparrage',temp
-		KILLVAR 'sparrloc',temp
-		KILLVAR '$sparrnam',temp
-		KILLVAR 'sparrppt',temp
-		KILLVAR 'sparridt',temp
-		KILLVAR 'sparrvol',temp
-		KILLVAR 'sparrslc',temp
-	end
-	cumsumbod -= sparrvol[temp]
-	temp -= 1
-	jump 'temploop'
-
-!{Internal Clean}
-elseif cumspclnt = 3:
-	if sparrloc[temp] = 0 or sparrloc[temp] = 3 or sparrloc[temp] = 17:
-		KILLVAR 'spafinloc',temp
-		KILLVAR 'sparrage',temp
-		KILLVAR 'sparrloc',temp
-		KILLVAR '$sparrnam',temp
-		KILLVAR 'sparrppt',temp
-		KILLVAR 'sparridt',temp
-		KILLVAR 'sparrvol',temp
-		KILLVAR 'sparrslc',temp
-	end
-	cumsumbod -= sparrvol[temp]
-	if sparrloc[temp] = 0: cumsumvag -= sparrvol[temp]
-	if sparrloc[temp] = 3: cumsumass -= sparrvol[temp]
-	temp -= 1
-	jump 'temploop'
-
-!{External Body Clean}
-elseif cumspclnt = 4:
-	if sparrloc[temp] = 0 or sparrloc[temp] = 3: sparrslc[temp] = 0
-	if sparrloc[temp] = 1 or sparrloc[temp] = 4 or (sparrloc[temp] >= 8 and sparrloc[temp] <= 11) or (sparrloc[temp] >= 13 and sparrloc[temp] <= 16):
-		KILLVAR 'spafinloc',temp
-		KILLVAR 'sparrage',temp
-		KILLVAR 'sparrloc',temp
-		KILLVAR '$sparrnam',temp
-		KILLVAR 'sparrppt',temp
-		KILLVAR 'sparridt',temp
-		KILLVAR 'sparrvol',temp
-		KILLVAR 'sparrslc',temp
-	end
-	cumsumbod -= sparrvol[temp]
-	temp -= 1
-	jump 'temploop'
-
-!{Hair Clean}
-elseif cumspclnt = 5:
-	if sparrloc[temp] = 16:
-		KILLVAR 'spafinloc',temp
-		KILLVAR 'sparrage',temp
-		KILLVAR 'sparrloc',temp
-		KILLVAR '$sparrnam',temp
-		KILLVAR 'sparrppt',temp
-		KILLVAR 'sparridt',temp
-		KILLVAR 'sparrvol',temp
-		KILLVAR 'sparrslc',temp
-	end
-	cumsumbod -= sparrvol[temp]
-	temp -= 1
-	jump 'temploop'
-
-!{Clothes Clean}
-elseif cumspclnt = 6:
-	if sparrloc[temp] = 2 or (sparrloc[temp] >= 5 and sparrloc[temp] <= 7):
-		KILLVAR 'spafinloc',temp
-		KILLVAR 'sparrage',temp
-		KILLVAR 'sparrloc',temp
-		KILLVAR '$sparrnam',temp
-		KILLVAR 'sparrppt',temp
-		KILLVAR 'sparridt',temp
-		KILLVAR 'sparrvol',temp
-		KILLVAR 'sparrslc',temp
-	end
-	cumsumbod -= sparrvol[temp]
-	temp -= 1
-	jump 'temploop'
-
-!{Enima}
-elseif cumspclnt = 7:
-	if sparrloc[temp] = 3:
-		KILLVAR 'spafinloc',temp
-		KILLVAR 'sparrage',temp
-		KILLVAR 'sparrloc',temp
-		KILLVAR '$sparrnam',temp
-		KILLVAR 'sparrppt',temp
-		KILLVAR 'sparridt',temp
-		KILLVAR 'sparrvol',temp
-		KILLVAR 'sparrslc',temp
-	end
-	cumsumbod -= sparrvol[temp]
-	cumsumass -= sparrvol[temp]
-	temp -= 1
-	jump 'temploop'
-
-!{Douche}
-elseif cumspclnt = 8:
-	if sparrloc[temp] = 0 or sparrloc[temp] >= 17:
-		KILLVAR 'spafinloc',temp
-		KILLVAR 'sparrage',temp
-		KILLVAR 'sparrloc',temp
-		KILLVAR '$sparrnam',temp
-		KILLVAR 'sparrppt',temp
-		KILLVAR 'sparridt',temp
-		KILLVAR 'sparrvol',temp
-		KILLVAR 'sparrslc',temp
-	end
-	cumsumbod -= sparrvol[temp]
-	cumsumvag -= sparrvol[temp]
-	temp -= 1
-	jump 'temploop'
-
-!{Handwashing}
-elseif cumspclnt = 9:
-	if sparrloc[temp] = 13:
-		KILLVAR 'spafinloc',temp
-		KILLVAR 'sparrage',temp
-		KILLVAR 'sparrloc',temp
-		KILLVAR '$sparrnam',temp
-		KILLVAR 'sparrppt',temp
-		KILLVAR 'sparridt',temp
-		KILLVAR 'sparrvol',temp
-		KILLVAR 'sparrslc',temp
-	end
-	cumsumbod -= sparrvol[temp]
-	temp -= 1
-	jump 'temploop'
-
-!{Full External Clean}
-elseif cumspclnt = 10:
-	if sparrloc[temp] = 0 or sparrloc[temp] = 3: sparrslc[temp] = 0
-	if sparrloc[temp] = 1 or sparrloc[temp] = 2 or (sparrloc[temp] >= 4 and sparrloc[temp] <= 11) or (sparrloc[temp] >= 13 and sparrloc[temp] <= 16):
-		KILLVAR 'spafinloc',temp
-		KILLVAR 'sparrage',temp
-		KILLVAR 'sparrloc',temp
-		KILLVAR '$sparrnam',temp
-		KILLVAR 'sparrppt',temp
-		KILLVAR 'sparridt',temp
-		KILLVAR 'sparrvol',temp
-		KILLVAR 'sparrslc',temp
-	end
-	cumsumbod -= sparrvol[temp]
-	temp -= 1
-	jump 'temploop'
-
-!{Face Cleanup}
-elseif cumspclnt = 11:
-	if sparrloc[temp] = 11:
-		KILLVAR 'spafinloc',temp
-		KILLVAR 'sparrage',temp
-		KILLVAR 'sparrloc',temp
-		KILLVAR '$sparrnam',temp
-		KILLVAR 'sparrppt',temp
-		KILLVAR 'sparridt',temp
-		KILLVAR 'sparrvol',temp
-		KILLVAR 'sparrslc',temp
-	end
-	cumsumbod -= sparrvol[temp]
-	temp -= 1
-	jump 'temploop'
-
-!{Face and Hair Cleanup}
-elseif cumspclnt = 12:
-	if sparrloc[temp] = 11 or sparrloc[temp] = 16:
-		KILLVAR 'spafinloc',temp
-		KILLVAR 'sparrage',temp
-		KILLVAR 'sparrloc',temp
-		KILLVAR '$sparrnam',temp
-		KILLVAR 'sparrppt',temp
-		KILLVAR 'sparridt',temp
-		KILLVAR 'sparrvol',temp
-		KILLVAR 'sparrslc',temp
-	end
-	cumsumbod -= sparrvol[temp]
-	temp -= 1
-	jump 'temploop'
-
-!{Head clean}
-elseif cumspclnt = 13:
-	if sparrloc[temp] = 11 or sparrloc[temp] = 12 or sparrloc[temp] = 16:
-		KILLVAR 'spafinloc',temp
-		KILLVAR 'sparrage',temp
-		KILLVAR 'sparrloc',temp
-		KILLVAR '$sparrnam',temp
-		KILLVAR 'sparrppt',temp
-		KILLVAR 'sparridt',temp
-		KILLVAR 'sparrvol',temp
-		KILLVAR 'sparrslc',temp
-	end
-	cumsumbod -= sparrvol[temp]
-	temp -= 1
-	jump 'temploop'
-
-!{Belly clean}
-elseif cumspclnt = 14:
-	if sparrloc[temp] = 14:
-		KILLVAR 'spafinloc',temp
-		KILLVAR 'sparrage',temp
-		KILLVAR 'sparrloc',temp
-		KILLVAR '$sparrnam',temp
-		KILLVAR 'sparrppt',temp
-		KILLVAR 'sparridt',temp
-		KILLVAR 'sparrvol',temp
-		KILLVAR 'sparrslc',temp
-	end
-	cumsumbod -= sparrvol[temp]
-	temp -= 1
-	jump 'temploop'
-
-!{ass and pussy external wipe}
-elseif cumspclnt = 15:
-	if sparrloc[temp] = 0 or sparrloc[temp] = 3: sparrslc[temp] = 0
-	if sparrloc[temp] = 1 or sparrloc[temp] = 4:
-		KILLVAR 'spafinloc',temp
-		KILLVAR 'sparrage',temp
-		KILLVAR 'sparrloc',temp
-		KILLVAR '$sparrnam',temp
-		KILLVAR 'sparrppt',temp
-		KILLVAR 'sparridt',temp
-		KILLVAR 'sparrvol',temp
-		KILLVAR 'sparrslc',temp
-	end
-	cumsumbod -= sparrvol[temp]
-	temp -= 1
-	jump 'temploop'
-
-!{Breast cleanup}
-elseif cumspclnt = 16:
-	if sparrloc[temp] = 15:
-		KILLVAR 'spafinloc',temp
-		KILLVAR 'sparrage',temp
-		KILLVAR 'sparrloc',temp
-		KILLVAR '$sparrnam',temp
-		KILLVAR 'sparrppt',temp
-		KILLVAR 'sparridt',temp
-		KILLVAR 'sparrvol',temp
-		KILLVAR 'sparrslc',temp
-	end
-	cumsumbod -= sparrvol[temp]
-	temp -= 1
-	jump 'temploop'
-
-!{Arms and legs cleanup}
-elseif cumspclnt = 17:
-	if sparrloc[temp] = 10 or sparrloc[temp] = 9:
-		KILLVAR 'spafinloc',temp
-		KILLVAR 'sparrage',temp
-		KILLVAR 'sparrloc',temp
-		KILLVAR '$sparrnam',temp
-		KILLVAR 'sparrppt',temp
-		KILLVAR 'sparridt',temp
-		KILLVAR 'sparrvol',temp
-		KILLVAR 'sparrslc',temp
-	end
-	cumsumbod -= sparrvol[temp]
-	temp -= 1
-	jump 'temploop'
-
-!{Full Clean}
-elseif cumspclnt = 20:
-	KILLVAR 'spafinloc'
-	KILLVAR 'sparrage'
-	KILLVAR 'sparrloc'
-	KILLVAR '$sparrnam'
-	KILLVAR 'sparrppt'
-	KILLVAR 'sparridt'
-	KILLVAR 'sparrvol'
-	KILLVAR 'sparrslc'
+!{	Locations to be defined by 'spafinloc'
+	0 = 'In your Vagina'
+	1 = 'On your labia'
+	2 = 'On your panties over your vagina'
+	3 = 'In your anus'
+	4 = 'On your butt'
+	5 = 'On your panties over your butt'
+	6 = 'On your clothes in your groin area'
+	7 = 'On your clothes'
+	8 = 'On your back'
+	9 = 'On your legs'
+	10 = 'On your arms'
+	11 = 'On your face'
+	12 = 'Inside your mouth'
+	13 = 'On your hands'
+	14 = 'On your stomach'
+	15 = 'On your breasts'
+	16 = 'In your hair'
+	17 = 'In a condom in your vagina'}
+
+if $ARGS[0] = 'cleanloc' and arrsize('ARGS') > 1:
+	i = 0
+	:cleanlocloop
+	if i < arrsize('$sparrnam'):
+		if sparrloc[i] = ARGS[1]:
+			gs 'cum_cleanup', 'cleandeposit', i
+		end
+		i += 1
+		jump 'cleanlocloop'
+	end
+elseif $ARGS[0] = 'cleandeposit' and arrsize('ARGS') > 1:
+	cumsumbod -= sparrvol[ARGS[1]]
+	KILLVAR 'spafinloc',ARGS[1]
+	KILLVAR 'sparrage',ARGS[1]
+	KILLVAR 'sparrloc',ARGS[1]
+	KILLVAR '$sparrnam',ARGS[1]
+	KILLVAR 'sparrppt',ARGS[1]
+	KILLVAR 'sparridt',ARGS[1]
+	KILLVAR 'sparrvol',ARGS[1]
+	KILLVAR 'sparrslc',ARGS[1]
+elseif $ARGS[0] = '':
 	cumsumbod = 0
 	cumsumvag = 0
 	cumsumass = 0
-	temp -= 1
-	jump 'temploop'
-else
-	temp = 0
-	cumspclnt = 0
-end
-spdirty = 0
-spdirtyi = 0
-spdirtyn = 0
-spdirtyv = 0
-spdirtyb = 0
-spdirtyc = 0
-spdirtyf = 0
-killvar 'cumloc'
 
-if $ARGS[0] = 'cumeatercleanup':
-	KILLVAR 'spafinloc',temp
-	KILLVAR 'sparrage',temp
-	KILLVAR 'sparrloc',temp
-	KILLVAR '$sparrnam',temp
-	KILLVAR 'sparrppt',temp
-	KILLVAR 'sparridt',temp
-	KILLVAR 'sparrvol',temp
-	KILLVAR 'sparrslc',temp
-	cumsumbod -= sparrvol[temp]
+	KILLVAR 'spafinloc'
+	killvar 'toclean'
+	killvar 'deresidue'
+	if cumspclnt = 1 or cumspclnt = 10: !{full external clean}
+		deresidue[arrsize('deresidue')] = 0
+		deresidue[arrsize('deresidue')] = 3
+		toclean[arrsize('toclean')] = 1
+		toclean[arrsize('toclean')] = 2
+		toclean[arrsize('toclean')] = 4
+		toclean[arrsize('toclean')] = 5
+		toclean[arrsize('toclean')] = 6
+		toclean[arrsize('toclean')] = 7
+		toclean[arrsize('toclean')] = 8
+		toclean[arrsize('toclean')] = 9
+		toclean[arrsize('toclean')] = 10
+		toclean[arrsize('toclean')] = 11
+		toclean[arrsize('toclean')] = 13
+		toclean[arrsize('toclean')] = 14
+		toclean[arrsize('toclean')] = 15
+		toclean[arrsize('toclean')] = 16
+	elseif cumspclnt = 2: !{teeth clean}
+		toclean[arrsize('toclean')] = 12
+	eleseif cumspclnt = 3: !{internal clean}
+		toclean[arrsize('toclean')] = 0
+		toclean[arrsize('toclean')] = 3
+		toclean[arrsize('toclean')] = 17
+	eleseif cumspclnt = 4: !{external body clean}
+		deresidue[arrsize('deresidue')] = 0
+		deresidue[arrsize('deresidue')] = 3
+		toclean[arrsize('toclean')] = 1
+		toclean[arrsize('toclean')] = 4
+		toclean[arrsize('toclean')] = 8
+		toclean[arrsize('toclean')] = 9
+		toclean[arrsize('toclean')] = 10
+		toclean[arrsize('toclean')] = 11
+		toclean[arrsize('toclean')] = 13
+		toclean[arrsize('toclean')] = 14
+		toclean[arrsize('toclean')] = 15
+		toclean[arrsize('toclean')] = 16
+	eleseif cumspclnt = 5: !{hair clean}
+		toclean[arrsize('toclean')] = 16
+	eleseif cumspclnt = 6: !{clothes clean}
+		toclean[arrsize('toclean')] = 2
+		toclean[arrsize('toclean')] = 5
+		toclean[arrsize('toclean')] = 6
+		toclean[arrsize('toclean')] = 7
+	eleseif cumspclnt = 7: !{enema}
+		toclean[arrsize('toclean')] = 3
+	eleseif cumspclnt = 8: !{douche}
+		toclean[arrsize('toclean')] = 1
+		toclean[arrsize('toclean')] = 17
+	eleseif cumspclnt = 9: !{wash hands}
+		toclean[arrsize('toclean')] = 13
+	eleseif cumspclnt = 11: !{wash face}
+		toclean[arrsize('toclean')] = 11
+	eleseif cumspclnt = 12: !{face and hair}
+		toclean[arrsize('toclean')] = 11
+		toclean[arrsize('toclean')] = 16
+	eleseif cumspclnt = 13: !{head}
+		toclean[arrsize('toclean')] = 11
+		toclean[arrsize('toclean')] = 12
+		toclean[arrsize('toclean')] = 16
+	eleseif cumspclnt = 14: !{belly}
+		toclean[arrsize('toclean')] = 14
+	eleseif cumspclnt = 15: !{wipe ass/pussy}
+		toclean[arrsize('toclean')] = 1
+		toclean[arrsize('toclean')] = 4
+		deresidue[arrsize('deresidue')] = 0
+		deresidue[arrsize('deresidue')] = 3
+	eleseif cumspclnt = 16: !{Breasts}
+		toclean[arrsize('toclean')] = 15
+	eleseif cumspclnt = 17: !{Arms/legs}
+		toclean[arrsize('toclean')] = 9
+		toclean[arrsize('toclean')] = 10
+	eleseif cumspclnt = 20: !{Clean everything}
+		KILLVAR 'sparrage'
+		KILLVAR 'sparrloc'
+		KILLVAR '$sparrnam'
+		KILLVAR 'sparrppt'
+		KILLVAR 'sparridt'
+		KILLVAR 'sparrvol'
+		KILLVAR 'sparrslc'
+	end
+
+	i = 0
+	:cumcleanloop
+	if i < arrsize('$sparrnam'):
+		if arrpos('deresidue', sparrloc[i]) : -1: sparrslc[i] = 0
+		if arrpos('toclean', sparrloc[i]) ! -1:
+			KILLVAR 'sparrage',i
+			KILLVAR 'sparrloc',i
+			KILLVAR '$sparrnam',i
+			KILLVAR 'sparrppt',i
+			KILLVAR 'sparridt',i
+			KILLVAR 'sparrvol',i
+			KILLVAR 'sparrslc',i
+		else
+			i += 1
+			cumsumbod += sparrvol[i]
+			if sparrloc[i] = 0:
+				cumsumvag += sparrvol[i]
+			elseif sparrloc[i] = 3:
+				cumsumass += sparrvol[i]
+			end
+			jump 'cumcleanloop'
+		end
+	end
+	spdirty = 0
+	spdirtyi = 0
+	spdirtyn = 0
+	spdirtyv = 0
+	spdirtyb = 0
+	spdirtyc = 0
+	spdirtyf = 0
+	killvar 'cumloc'
 end
 
 --- cum_cleanup ---------------------------------

+ 40 - 0
locations/cumarrput

@@ -0,0 +1,40 @@
+# cumarrput
+
+if arrsize('ARGS') < 5:
+	'ERROR: cumarrput called incorrectly. report this to the maintainers'
+end
+
+cacon = ARGS[1]
+
+i = arrsize('$cumarrnam')
+
+!{Check for existing non-protected deposit by same guy}
+i2 = 0
+:cumarrputloop
+if i2 < i:
+	if $cumarrnam[i2] = $ARGS[0] and cumarrdel[i2] = 0:
+		!{The following little horror lets us not override a "higher priority" contraceptive method with a lower-priority one. So if PC has unprotected sex with a guy once and then uses a condom next time and the condom breaks, the list will still show the cum deposit as being from unprotected sex.}
+		!{In brief, we create an array of contraceptive methods in order of decreasting priority, and set effcontra to the first value matched by either sexcontra or the relevant cumarrcon entry.}
+		cacon = func 'sexcontraprio', ARGS[1], cumarrcon[i2]
+		i = i2
+	else
+		i2 += 1
+		jump 'cumarrputloop'
+	end
+end
+
+$cumarrnam[i] = $ARGS[0]
+cumarrcon[i] = cacon
+if cumarrppt[i] < ARGS[2]:
+	cumarrppt[i] = ARGS[2]
+end
+cumarrcpt[i] += ARGS[3]
+if AGRS[4]:
+	cumarrkno[i] = ARGS[4]
+end
+cumarrage[i] = 0
+
+RESULT = i
+
+--- cumarrput ---------------------------------
+

+ 25 - 3
locations/din_van

@@ -1,11 +1,27 @@
 # din_van
 
 $showerdin = {
-	if hypnoAddict = 0: cumspclnt = 1 else cumspclnt = 2 & gs 'cum_cleanup' & cumspclnt = 10
+	cumspclnt = 1
 	gs 'cum_cleanup'
 	if sweat > 10: sweat = 10 + rand(0,4)
 }
 
+$douche = {
+	if doucheday ! daystart or arrpos('sparrloc', 0) ! -1 or arrpos('sparrloc', 17) ! -1:
+		act 'Clean your vagina with a douche (0.15)'
+			cla
+			*clr
+			minut += 15
+			cumspclnt = 8
+			gs 'cum_cleanup'
+			fbreath = 1
+			'<center><img src="images/pics/douche.jpg"></center>'
+			'For several minutes you pump warm water into your pussy, cleaning it thoroughly.'
+			act 'Finish':gt $locM, $metkaM
+		end
+	end
+}
+
 $bteeth = {
 	if fbreath ! 1:
 		act 'Brush your teeth (0:05)':
@@ -118,6 +134,12 @@ $shower = {
 					willpower += 10
 					'At first it feels very nice, but after a while it starts to be a little bit painful. You decide to stop masturbating.'
 				end
+				if hypnoAddict ! 0:
+					'You unconsciously avoid spraying water into your vagina.'
+				else
+					cumspclnt = 8
+					gs 'cum_cleanup'
+				end
 
 				dynamic $dryOff
 			end
@@ -330,7 +352,7 @@ $quickwash = {
 				dirtbelo += 1
 			end
 			
-			cumspclnt = 20
+			cumspclnt = 4
 			gs 'cum_cleanup'
 			if sweat < 30 : sweat = 15 + rand(0,4) else sweat -= 10 + rand(0,4)
 			minut += 15
@@ -645,7 +667,7 @@ if $ARGS[0] = 'private':
         end
     end
 
-    if klisma = 1 and klismaday ! daystart:
+    if klisma = 1 and (klismaday ! daystart or arrpos('sparrloc', 3) ! -1):
         act 'Give yourself an enema (0:05)':
             cla
             *clr

+ 59 - 114
locations/femcyc

@@ -14,9 +14,10 @@ if $ARGS[0] = '':
 	:cumarrloop
 	if cumarr_idx < arrsize('$cumarrnam'):
 		if cumarrcpt[cumarr_idx] > 0 and cumarrage[cumarr_idx] < 64:
-			cumpdrop = cumarrppt[cumarr_idx] * (cumarrage[cumarr_idx] / 10)
-			if cumpdrop < 10: cumpdrop = 10
-			cumpdrop += cumpdrop * rand(0, 2)
+			cumpdrop = (cumarrcpt[cumarr_idx] / 100) * (cumarrage[cumarr_idx] / 5)
+			'<<cumpdrop>> = <<(cumarrcpt[cumarr_idx] / 100)>> * <<(cumarrage[cumarr_idx] / 5)>>'
+			if cumpdrop < 100: cumpdrop = 100
+			if cycle ! 2: cumpdrop += cumpdrop * rand(0, 2)
 			cumarrcpt[cumarr_idx] -= cumpdrop
 			cumarrage[cumarr_idx] += 1
 		else
@@ -66,125 +67,69 @@ if $ARGS[0] = '':
 		killvar 'succycletmp'
 	end
 
-	cumarr_idx = 0
+	cumsumvag = 0
+	cumsumass = 0
+	cumsumbod = 0
 	if arrsize('sparrvol') > 0:
+		sparr_idx = 0
 		:cumspaloop
-		!!Succubus absorption for internal locations other than womb
-		if succubusflag = 1:
-			if sparrloc[cumarr_idx] = 3 or sparrloc[cumarr_idx] = 12:
-				sexnutrition += 25*succublvl
-				succubxp += 3
-				sucabscum = 1
-				if sparrvol[cumarr_idx] > 0: sparrvol[cumarr_idx] = 0
-			end
-		end
-		!!{if sparrloc[cumarr_idx] = 0 or sparrloc[cumarr_idx] = 3 or sparrloc[cumarr_idx] = 12:
-			sexnutrition += 30*succublvl
-			sparrvol[cumarr_idx] -= 30*succublvl
-			if sparrvol[cumarr_idx] < 0: sexnutrition += sparrvol[cumarr_idx] & sparrvol[cumarr_idx] = 0
-		end}
-		if sparrvol[cumarr_idx] > 0:
-			sparrtmpv = arrsize('$cumarrnam')
-			if sparrloc[cumarr_idx] = 17:
-				sparrtmpv = arrpos('$cumarrnam',$sparrnam[cumarr_idx])
-				if sparrage[cumarr_idx] < 4:
-					cumarrcpt[sparrtmpv] += sparrppt[cumarr_idx]/5
-				elseif sparrage[cumarr_idx] < 10:
-					cumarrcpt[sparrtmpv] += sparrppt[cumarr_idx]/30
-				end
-			elseif sparrloc[cumarr_idx] = 0:
-				sparrtmpv = arrpos('$cumarrnam',$sparrnam[cumarr_idx])
-				if sparrage[cumarr_idx] < 4:
-					cumarrcpt[sparrtmpv] += sparrppt[cumarr_idx]/40
-				elseif sparrage[cumarr_idx] < 10:
-					cumarrcpt[sparrtmpv] += sparrppt[cumarr_idx]/60
-				end
-			elseif sparrslc[cumarr_idx] = 1 and sparrage < 5:
-				if sparrloc[cumarr_idx] = 1:
-					cumarrcpt[sparrtmpv] = sparrppt[cumarr_idx]/1000*sparrage[cumarr_idx]/sparrvol[cumarr_idx]
-					cumarrppt[sparrtmpv] = sparrppt[cumarr_idx]
-					$cumarrnam[sparrtmpv] = $sparrnam[cumarr_idx]
-					cumarrage[sparrtmpv] = sparrage[cumarr_idx]
-					cumarrdel[sparrtmpv] = 1
-					cumarrkno[sparrtmpv] = 0
-					cumarrcon[sparrtmpv] = 0
+		if sparr_idx < arrsize('$sparrnam'):
+			!!Succubus absorption for internal locations other than womb
+			if succubusflag = 1:
+				if sparrloc[sparr_idx] = 3 or sparrloc[sparr_idx] = 12:
+					sexnutrition += 25*succublvl
+					succubxp += 3
+					sucabscum = 1
+					if sparrvol[sparr_idx] > 0: sparrvol[sparr_idx] = 0
 				end
-			elseif sparrslc[cumarr_idx] = 3 and sparrage < 5:
-				if sparrloc[cumarr_idx] = 2:
-					cumarrcpt[sparrtmpv] = sparrppt[cumarr_idx]/1000*sparrage[cumarr_idx]/sparrvol[cumarr_idx]
-					cumarrppt[sparrtmpv] = sparrppt[cumarr_idx]
-					$cumarrnam[sparrtmpv] = $sparrnam[cumarr_idx]
-					cumarrage[sparrtmpv] = sparrage[cumarr_idx]
-					cumarrdel[sparrtmpv] = 3
-					cumarrkno[sparrtmpv] = 0
-					cumarrcon[sparrtmpv] = 0
-				elseif sparrloc[cumarr_idx] = 4:
-					cumarrcpt[sparrtmpv] = sparrppt[cumarr_idx]/1000*sparrage[cumarr_idx]/sparrvol[cumarr_idx]
-					cumarrppt[sparrtmpv] = sparrppt[cumarr_idx]
-					$cumarrnam[sparrtmpv] = $sparrnam[cumarr_idx]
-					cumarrage[sparrtmpv] = sparrage[cumarr_idx]
-					cumarrdel[sparrtmpv] = 2
-					cumarrkno[sparrtmpv] = 0
-					cumarrcon[sparrtmpv] = 0
+			end
+			!!{if sparrloc[sparr_idx] = 0 or sparrloc[sparr_idx] = 3 or sparrloc[sparr_idx] = 12:
+				sexnutrition += 30*succublvl
+				sparrvol[sparr_idx] -= 30*succublvl
+				if sparrvol[sparr_idx] < 0: sexnutrition += sparrvol[sparr_idx] & sparrvol[sparr_idx] = 0
+			end}
+			if sparrvol[sparr_idx] > 0 and (sparrage[sparr_idx] < 5 or or sparrloc[sparr_idx] = 17 or sparrloc[sparr_idx = 2 or sparrloc[sparr_idx = 5 or sparrloc[sparr_idx = 6 or sparrloc[sparr_idx] = 7):
+				!{Cum dries up and flakes off (or flows out) pretty fast, but stains on clothes have to be washed off.}
+				cumarr_idx = arrsize('$cumarrnam')
+				if sparrloc[sparr_idx] = 17:
+					!{Cum flows out of the condom into the vagina slowly until PC removes it.}
+					cumarr_idx = func 'cumarrput', $sparrnam[sparr_idx], 5, sparrppt[sparr_idx] / 2, (sparrppt[sparr_idx / (sparrage[sparr_idx] + 1), sparridt[sparr_idx]
+				elseif sparrloc[sparr_idx] = 0:
+					!{Cervix quickly drinks up deposits left unremoved}
+					cpti = (sparrppt[sparr_idx] / (sparrage[sparr_idx] + 1)) * 2
+					cumarr_idx = func 'cumarrput', $sparrnam[sparr_idx], 2, sparrppt[sparr_idx], (sparrppt[sparr_idx / (sparrage[sparr_idx] + 1)) * 2, sparridt[sparr_idx]
+				elseif sparrslc[sparr_idx] > 0 and sparrloc[sparr_idx] = 1:
+					cumarr_idx = func 'cumarrput', $sparrnam[sparr_idx], 2, sparrppt[sparr_idx] / 20, sparrppt[sparr_idx]/ ((1000 * sparrage[sparr_idx]) / sparrvol[sparr_idx]), 0
 				end
-			elseif sparrslc[cumarr_idx] = 5 and sparrage < 5:
-				if sparrloc[cumarr_idx] = 3:
-					cumarrcpt[sparrtmpv] = sparrppt[cumarr_idx]/1000*sparrage[cumarr_idx]/sparrvol[cumarr_idx]
-					cumarrppt[sparrtmpv] = sparrppt[cumarr_idx]
-					$cumarrnam[sparrtmpv] = $sparrnam[cumarr_idx]
-					cumarrage[sparrtmpv] = sparrage[cumarr_idx]
-					cumarrdel[sparrtmpv] = 2
-					cumarrkno[sparrtmpv] = 0
-					cumarrcon[sparrtmpv] = 0
-				elseif sparrloc[cumarr_idx] = 5:
-					cumarrcpt[sparrtmpv] = sparrppt[cumarr_idx]/1000*sparrage[cumarr_idx]/sparrvol[cumarr_idx]
-					cumarrppt[sparrtmpv] = sparrppt[cumarr_idx]
-					$cumarrnam[sparrtmpv] = $sparrnam[cumarr_idx]
-					cumarrage[sparrtmpv] = sparrage[cumarr_idx]
-					cumarrdel[sparrtmpv] = 3
-					cumarrkno[sparrtmpv] = 0
-					cumarrcon[sparrtmpv] = 0
-				elseif sparrloc[cumarr_idx] = 6:
-					cumarrcpt[sparrtmpv] = sparrppt[cumarr_idx]/1000*sparrage[cumarr_idx]/sparrvol[cumarr_idx]
-					cumarrppt[sparrtmpv] = sparrppt[cumarr_idx]
-					$cumarrnam[sparrtmpv] = $sparrnam[cumarr_idx]
-					cumarrage[sparrtmpv] = sparrage[cumarr_idx]
-					cumarrdel[sparrtmpv] = 3
-					cumarrkno[sparrtmpv] = 0
-					cumarrcon[sparrtmpv] = 0
+				if sparrloc[sparr_idx] = 0 or sparrloc[sparr_idx] = 3 or sparrloc[sparr_idx] = 12:sparrvol[sparr_idx] -= sparrage[sparr_idx]/2
+				if sparrloc[sparr_idx] = 0 and cumsumvag > 60: sparrslc = 1
+				if sparrloc[sparr_idx] = 3 and cumsumass > 60: sparrslc = 1
+				if sparrloc[sparr_idx] = 17 and sparrage[sparr_idx] > 48:
+					cumcondslip = 1
+					health -= 3
+					'You feel nauseous.'
+					if rand(0,5) < 5: health -= 2
+				else
+					cumcondslip = 0
 				end
-			end
-			if sparrloc[cumarr_idx] = 0 or sparrloc[cumarr_idx] = 3 or sparrloc[cumarr_idx] = 12:sparrvol[cumarr_idx] -= sparrage[cumarr_idx]/2
-			if sparrloc[cumarr_idx] = 0 and cumsumvag > 60: sparrslc = 1
-			if sparrloc[cumarr_idx] = 3 and cumsumass > 60: sparrslc = 1
-			if sparrloc[cumarr_idx] = 17 and sparrage[cumarr_idx] > 48:
-				cumcondslip = 1
-				health -= 3
-				'You feel nauseous.'
-				if rand(0,5) < 5: health -= 2
+				if sparrloc[sparr_idx] ! 0 and sparrloc[sparr_idx] ! 3 and sparrloc[sparr_idx] ! 12 and isprok = 0 and sparrage < 5: sparrslc[sparr_idx] += 1
+				sparrage[sparr_idx] += 1
+				sparr_idx += 1
+				cumsumbod += sparrvol[sparr_idx]
+				if sparrloc[sparr_idx] = 0: cumsumvag += sparrvol[sparr_idx]
+				if sparrloc[sparr_idx] = 3: cumsumass += sparrvol[sparr_idx]
 			else
-				cumcondslip = 0
+				KILLVAR 'spafinloc',sparr_idx
+				KILLVAR 'sparrage',sparr_idx
+				KILLVAR 'sparrloc',sparr_idx
+				KILLVAR '$sparrnam',sparr_idx
+				KILLVAR 'sparrppt',sparr_idx
+				KILLVAR 'sparridt',sparr_idx
+				KILLVAR 'sparrvol',sparr_idx
+				KILLVAR 'sparrslc',sparr_idx	
 			end
-			if sparrloc[cumarr_idx] ! 0 and sparrloc[cumarr_idx] ! 3 and sparrloc[cumarr_idx] ! 12 and isprok = 0 and sparrage < 5: sparrslc[cumarr_idx] += 1
-			sparrage[cumarr_idx] += 1
-			cumarr_idx += 1
-			ctemp += sparrvol[cumarr_idx]
-			if sparrloc[cumarr_idx] = 0: ctemp[1] += sparrvol[cumarr_idx]
-			if sparrloc[cumarr_idx] = 3: ctemp[2] += sparrvol[cumarr_idx]
-		else
-			KILLVAR 'spafinloc',cumarr_idx
-			KILLVAR 'sparrage',cumarr_idx
-			KILLVAR 'sparrloc',cumarr_idx
-			KILLVAR '$sparrnam',cumarr_idx
-			KILLVAR 'sparrppt',cumarr_idx
-			KILLVAR 'sparridt',cumarr_idx
-			KILLVAR 'sparrvol',cumarr_idx
-			KILLVAR 'sparrslc',cumarr_idx	
+			jump 'cumspaloop'
 		end
-		if cumarr_idx < arrsize('sparrvol'): jump 'cumspaloop'
-		cumsumbod = ctemp
-		cumsumvag = ctemp[1]
-		cumsumass = ctemp[2]
 	end
 
 	if lactate > 0:

+ 2 - 0
locations/saunawork

@@ -219,6 +219,8 @@ $saunabrit = {
 	act 'Get out and get dressed':gt $curloc
 }
 
+dynamic $douche
+
 if mesec > 0 and isprok = 0 and workdolg > 0:
 	act 'Use a tampon (0:05)':
 		cla

+ 25 - 0
locations/sexcontraprio

@@ -0,0 +1,25 @@
+# sexcontraprio
+
+!{Function that when given 2 different contraception types, returns the "higher priority" of the two. In brief, if PC had sex with the same guy twice with any two random contraceptive methods, which one would she think was the reason she got pregnant?}
+killvar 'conprio'
+conprio[0] = 0 !{No contraception}
+conprio[1] = 1 !{Lied about the pill}
+conprio[2] = 4 !{Condom broke}
+conprio[3] = 5 !{Condom fell off}
+conprio[4] = 7 !{You sabotaged the condom}
+conprio[5] = 6 !{Someone else sabotaged the condom}
+conprio[6] = 2 !{You were on the pill}
+conprio[7] = 8 !{Precum had sperm in it}
+i = 0
+:cumarrputecl
+if i < arrsize('conprio'):
+	if ARGS[0] = conprio[i] or ARGS[1] = conprio[i]:
+		RESULT = conprio[i]
+	else
+		i += 1
+		jump 'cumarrputecl'
+	end
+end
+
+--- sexcontraprio ---------------------------------
+

+ 1 - 0
locations/shulgabath

@@ -36,6 +36,7 @@ if $ARGS[0] = 'start':
 	dynamic $shower
 	dynamic $bteeth
 	dynamic $tampon
+	dynamic $douche
 	dynamic $quickwash
 	dynamic $wearpan
 	dynamic $basin

+ 38 - 0
locations/sparrput

@@ -0,0 +1,38 @@
+# sparrput
+
+if arrsize('ARGS') < 6:
+	'ERROR: sparrput called incorrectly. report to a maintainer'
+end
+
+i = arrsize('$sparrnam')
+s = ARGS[5]
+
+!{Check for prev spatter by same guy}
+i2 = 0
+:sparrputloop
+if i2 < i:
+	if sparrloc[i2] = ARGS[1] and $sparrnam[i2] = $ARGS[0]:
+		i = i2
+		!{Use existing spread value if greater than provided}
+		if s < sparrslc[i]: s = sparrslc[i]
+	else
+		i2 += 1
+		jump 'sparrputloop'
+	end
+end
+
+sparrnam[i] = $ARGS[0]
+sparrloc[i] = ARGS[1]
+sparrppt[i] = ARGS[2]
+if ARGS[3]:
+	sparridt[i] = ARGS[3]
+end
+sparrvol[i] += ARGS[4]
+sparrslc[i] = s
+
+sparrage[i] = 0
+
+RESULT = i
+
+--- sparrput ---------------------------------
+

+ 16 - 16
locations/stat_display

@@ -534,7 +534,7 @@ if arrsize('sparrvol') > 0:
 				spdirtyn = 1
 			end
 			if swallow >= 10:
-				$stat_msg += '<BR><a href="exec:view''images/body/cumpussy.jpg''"><b><font color="red"><<$cumres[''name'']>>''s <<$cumres[''desc'']>><a href="exec:cumres_idx = arrpos(''sparrloc'',0) & gs ''cum_manage'', ''cumeater2''"><b><font color="blue">sperm</font></b></a><b> <<$cumres[''state'']>>pussy.</a></font></b>'
+				$stat_msg += '<BR><a href="exec:view''images/body/cumpussy.jpg''"><b><font color="red"><<$cumres[''name'']>>''s <<$cumres[''desc'']>><a href="exec:gs ''cum_manage'', ''cumeater'', 0"><b><font color="blue">sperm</font></b></a><b> <<$cumres[''state'']>>pussy.</a></font></b>'
 			else
 				$stat_msg += '<BR><b><font color="red"><<$cumres[''name'']>>''s <<$cumres[''desc'']>>sperm <<$cumres[''state'']>><a href="exec:view''images/body/cumpussy.jpg''">pussy.</a></font></b>'
 			end
@@ -550,7 +550,7 @@ if arrsize('sparrvol') > 0:
 	if cumres_idx >= 0 and sparrloc[cumres_idx] = i and sparrvol[cumres_idx] > 0:
 		dynamic $cumdescribe
 		if swallow >= 10 and sparrage[cumres_idx] < 5:
-			$stat_msg += '<BR><b><font color="red"><<$cumres[''name'']>>''s <<$cumres[''desc'']>><a href="exec:cumres_idx = arrpos(''sparrloc'',1) & gs ''cum_manage'', ''cumeater2''"><b><font color="blue">sperm</font></b></a><b> is smeared across your pussy lips.</font></b>.'
+			$stat_msg += '<BR><b><font color="red"><<$cumres[''name'']>>''s <<$cumres[''desc'']>><a href="exec:gs ''cum_manage'', ''cumeater'', 1"><b><font color="blue">sperm</font></b></a><b> is smeared across your pussy lips.</font></b>.'
 		else
 			$stat_msg += '<BR><b><font color="red"><<$cumres[''name'']>>''s <<$cumres[''desc'']>>sperm is smeared across your pussy lips.</a></font></b>'
 		end
@@ -563,7 +563,7 @@ if arrsize('sparrvol') > 0:
 	if cumres_idx >= 0 and sparrloc[cumres_idx] = i and sparrvol[cumres_idx] > 0:
 		dynamic $cumdescribe
 		if swallow >= 10 and sparrage[cumres_idx] < 5:
-			$stat_msg += '<BR><b><font color="red">You have <<$cumres[''name'']>>''s <<$cumres[''desc'']>><a href="exec:cumres_idx = arrpos(''sparrloc'',2) & gs ''cum_manage'', ''cumeater5''"><b><font color="blue">semen</font></b></a><b> stains on the crotch of your panties.</font></b>.'
+			$stat_msg += '<BR><b><font color="red">You have <<$cumres[''name'']>>''s <<$cumres[''desc'']>><a href="exec:gs ''cum_manage'', ''cumeater'', 2"><b><font color="blue">semen</font></b></a><b> stains on the crotch of your panties.</font></b>.'
 		else
 			$stat_msg += '<BR><b><font color="red">You have <<$cumres[''name'']>>''s <<$cumres[''desc'']>>semen stains on the crotch of your panties.</a></font></b>'
 		end
@@ -588,7 +588,7 @@ if arrsize('sparrvol') > 0:
 				spdirtyn = 1
 			end
 			if swallow >= 10:
-				$stat_msg += '<BR><b><font color="red"><<$cumres[''name'']>>''s <<$cumres[''desc'']>><a href="exec:cumres_idx = arrpos(''sparrloc'',3) & gs ''cum_manage'', ''cumeater6''"><b><font color="blue">sperm</font></b></a><b> <<$cumres[''state'']>><a href="exec:view''images/body/cumanal.jpg''">ass</a>.</font></b>'
+				$stat_msg += '<BR><b><font color="red"><<$cumres[''name'']>>''s <<$cumres[''desc'']>><a href="exec:gs ''cum_manage'', ''cumeater'', 3"><b><font color="blue">sperm</font></b></a><b> <<$cumres[''state'']>><a href="exec:view''images/body/cumanal.jpg''">ass</a>.</font></b>'
 			else
 				$stat_msg += '<BR><b><font color="red"><<$cumres[''name'']>>''s <<$cumres[''desc'']>>sperm <<$cumres[''state'']>><a href="exec:view''images/body/cumanal.jpg''">ass</a>.</font></b>'
 			end
@@ -604,7 +604,7 @@ if arrsize('sparrvol') > 0:
 	if cumres_idx >= 0 and sparrloc[cumres_idx] = i and sparrvol[cumres_idx] > 0:
 		dynamic $cumdescribe
 		if swallow >= 10 and sparrage[cumres_idx] < 5:
-			$stat_msg += '<BR><b><font color="red"><<$cumres[''name'']>>''s <<$cumres[''desc'']>><a href="exec:cumres_idx = arrpos(''sparrloc'',4) & gs ''cum_manage'', ''cumeater3''"><b><font color="blue">sperm</font></b></a><b> is smeared across your <a href="exec:view''images/body/cumass.jpg''">ass</a>.</font></b>.'
+			$stat_msg += '<BR><b><font color="red"><<$cumres[''name'']>>''s <<$cumres[''desc'']>><a href="exec:gs ''cum_manage'', ''cumeater'', 4"><b><font color="blue">sperm</font></b></a><b> is smeared across your <a href="exec:view''images/body/cumass.jpg''">ass</a>.</font></b>.'
 		else
 			$stat_msg += '<BR><b><font color="red"><<$cumres[''name'']>>''s <<$cumres[''desc'']>>sperm is smeared across your <a href="exec:view''images/body/cumass.jpg''">ass</a>.</a></font></b>'
 		end
@@ -617,7 +617,7 @@ if arrsize('sparrvol') > 0:
 	if cumres_idx >= 0 and sparrloc[cumres_idx] = i and sparrvol[cumres_idx] > 0:
 		dynamic $cumdescribe
 		if swallow >= 10 and sparrage[cumres_idx] < 5:
-			$stat_msg += '<BR><b><font color="red">You have <<$cumres[''name'']>>''s <<$cumres[''desc'']>><a href="exec:cumres_idx = arrpos(''sparrloc'',5) & gs ''cum_manage'', ''cumeater5''"><b><font color="blue">semen</font></b></a><b> stains on the ass of your panties.</font></b>.'
+			$stat_msg += '<BR><b><font color="red">You have <<$cumres[''name'']>>''s <<$cumres[''desc'']>><a href="exec:gs ''cum_manage'', ''cumeater'', 5"><b><font color="blue">semen</font></b></a><b> stains on the ass of your panties.</font></b>.'
 		else
 			$stat_msg += '<BR><b><font color="red">You have <<$cumres[''name'']>>''s <<$cumres[''desc'']>>semen stains on the ass of your panties.</a></font></b>'
 		end
@@ -629,7 +629,7 @@ if arrsize('sparrvol') > 0:
 	if cumres_idx >= 0 and sparrloc[cumres_idx] = i and sparrvol[cumres_idx] > 0:
 		dynamic $cumdescribe
 		if swallow >= 10 and sparrage[cumres_idx] < 5:
-			$stat_msg += '<BR><b><font color="red">You have <<$cumres[''name'']>>''s <<$cumres[''desc'']>><a href="exec:cumres_idx = arrpos(''sparrloc'',6) & gs ''cum_manage'', ''cumeater5''"><b><font color="blue">semen</font></b></a><b> stains on the crotch of your <a href="exec:view''images/body/cumfrot.jpg''">clothes</a>.</font></b>.'
+			$stat_msg += '<BR><b><font color="red">You have <<$cumres[''name'']>>''s <<$cumres[''desc'']>><a href="exec:gs ''cum_manage'', ''cumeater'', 6"><b><font color="blue">semen</font></b></a><b> stains on the crotch of your <a href="exec:view''images/body/cumfrot.jpg''">clothes</a>.</font></b>.'
 		else
 			$stat_msg += '<BR><b><font color="red">You have <<$cumres[''name'']>>''s <<$cumres[''desc'']>>semen stains on the crotch of your <a href="exec:view''images/body/cumfrot.jpg''">clothes</a>.</a></font></b>'
 		end
@@ -641,7 +641,7 @@ if arrsize('sparrvol') > 0:
 	if cumres_idx >= 0 and sparrloc[cumres_idx] = i and sparrvol[cumres_idx] > 0:
 		dynamic $cumdescribe
 		if swallow >= 10 and sparrage[cumres_idx] < 5:
-			$stat_msg += '<BR><b><font color="red">You have <<$cumres[''name'']>>''s <<$cumres[''desc'']>><a href="exec:cumres_idx = arrpos(''sparrloc'',7) & gs ''cum_manage'', ''cumeater5''"><b><font color="blue">semen</font></b></a><b> stains on your <a href="exec:view''images/body/cumfrot.jpg''">clothes</a>.</font></b>.'
+			$stat_msg += '<BR><b><font color="red">You have <<$cumres[''name'']>>''s <<$cumres[''desc'']>><a href="exec:gs ''cum_manage'', ''cumeater'', 7"><b><font color="blue">semen</font></b></a><b> stains on your <a href="exec:view''images/body/cumfrot.jpg''">clothes</a>.</font></b>.'
 		else
 			$stat_msg += '<BR><b><font color="red">You have <<$cumres[''name'']>>''s <<$cumres[''desc'']>>semen stains on your <a href="exec:view''images/body/cumfrot.jpg''">clothes</a>.</a></font></b>'
 		end
@@ -653,7 +653,7 @@ if arrsize('sparrvol') > 0:
 	if cumres_idx >= 0 and sparrloc[cumres_idx] = i and sparrvol[cumres_idx] > 0:
 		dynamic $cumdescribe
 		if swallow >= 10 and sparrage[cumres_idx] < 5:
-			$stat_msg += '<BR><b><font color="red"><<$cumres[''name'']>>''s <<$cumres[''desc'']>><a href="exec:cumres_idx = arrpos(''sparrloc'',8) & gs ''cum_manage'', ''cumeater7''"><b><font color="blue">sperm</font></b></a><b> is smeared across your back.</font></b>.'
+			$stat_msg += '<BR><b><font color="red"><<$cumres[''name'']>>''s <<$cumres[''desc'']>><a href="exec:gs ''cum_manage'', ''cumeater'', 8"><b><font color="blue">sperm</font></b></a><b> is smeared across your back.</font></b>.'
 		else
 			$stat_msg += '<BR><b><font color="red"><<$cumres[''name'']>>''s <<$cumres[''desc'']>>sperm is smeared across your back.</a></font></b>'
 		end
@@ -666,7 +666,7 @@ if arrsize('sparrvol') > 0:
 	if cumres_idx >= 0 and sparrloc[cumres_idx] = i and sparrvol[cumres_idx] > 0:
 		dynamic $cumdescribe
 		if swallow >= 10 and sparrage[cumres_idx] < 5:
-			$stat_msg += '<BR><b><font color="red"><<$cumres[''name'']>>''s <<$cumres[''desc'']>><a href="exec:cumres_idx = arrpos(''sparrloc'',9) & gs ''cum_manage'', ''cumeater7''"><b><font color="blue">sperm</font></b></a><b> is smeared across your legs.</font></b>.'
+			$stat_msg += '<BR><b><font color="red"><<$cumres[''name'']>>''s <<$cumres[''desc'']>><a href="exec:gs ''cum_manage'', ''cumeater'', 9"><b><font color="blue">sperm</font></b></a><b> is smeared across your legs.</font></b>.'
 		else
 			$stat_msg += '<BR><b><font color="red"><<$cumres[''name'']>>''s <<$cumres[''desc'']>>sperm is smeared across your legs.</a></font></b>'
 		end
@@ -679,7 +679,7 @@ if arrsize('sparrvol') > 0:
 	if cumres_idx >= 0 and sparrloc[cumres_idx] = i and sparrvol[cumres_idx] > 0:
 		dynamic $cumdescribe
 		if swallow >= 10 and sparrage[cumres_idx] < 5:
-			$stat_msg += '<BR><b><font color="red"><<$cumres[''name'']>>''s <<$cumres[''desc'']>><a href="exec:cumres_idx = arrpos(''sparrloc'',10) & gs ''cum_manage'', ''cumeater7''"><b><font color="blue">sperm</font></b></a><b> is smeared across your arms.</font></b>.'
+			$stat_msg += '<BR><b><font color="red"><<$cumres[''name'']>>''s <<$cumres[''desc'']>><a href="exec:gs ''cum_manage'', ''cumeater'', 10"><b><font color="blue">sperm</font></b></a><b> is smeared across your arms.</font></b>.'
 		else
 			$stat_msg += '<BR><b><font color="red"><<$cumres[''name'']>>''s <<$cumres[''desc'']>>sperm is smeared across your arms.</a></font></b>'
 		end
@@ -692,7 +692,7 @@ if arrsize('sparrvol') > 0:
 	if cumres_idx >= 0 and sparrloc[cumres_idx] = i and sparrvol[cumres_idx] > 0:
 		dynamic $cumdescribe
 		if swallow >= 10 and sparrage[cumres_idx] < 5:
-			$stat_msg += '<BR><b><font color="red"><<$cumres[''name'']>>''s <<$cumres[''desc'']>><a href="exec:cumres_idx = arrpos(''sparrloc'',11) & gs ''cum_manage'', ''cumeater4''"><b><font color="blue">sperm</font></b></a><b> is smeared across your <a href="exec:view''images/body/cumface.jpg''">face</a>.</font></b>.'
+			$stat_msg += '<BR><b><font color="red"><<$cumres[''name'']>>''s <<$cumres[''desc'']>><a href="exec:gs ''cum_manage'', ''cumeater'', 11"><b><font color="blue">sperm</font></b></a><b> is smeared across your <a href="exec:view''images/body/cumface.jpg''">face</a>.</font></b>.'
 		else
 			$stat_msg += '<BR><b><font color="red"><<$cumres[''name'']>>''s <<$cumres[''desc'']>>sperm is smeared across your <a href="exec:view''images/body/cumface.jpg''">face</a>.</a></font></b>'
 		end
@@ -716,7 +716,7 @@ if arrsize('sparrvol') > 0:
 	if cumres_idx >= 0 and sparrloc[cumres_idx] = i and sparrvol[cumres_idx] > 0:
 		dynamic $cumdescribe
 		if swallow >= 10 and sparrage[cumres_idx] < 5:
-			$stat_msg += '<BR><b><font color="red"><<$cumres[''name'']>>''s <<$cumres[''desc'']>><a href="exec:cumres_idx = arrpos(''sparrloc'',13) & gs ''cum_manage'', ''cumeater8''"><b><font color="blue">sperm</font></b></a><b> is smeared across your hands.</font></b>.'
+			$stat_msg += '<BR><b><font color="red"><<$cumres[''name'']>>''s <<$cumres[''desc'']>><a href="exec:gs ''cum_manage'', ''cumeater'', 13"><b><font color="blue">sperm</font></b></a><b> is smeared across your hands.</font></b>.'
 		else
 			$stat_msg += '<BR><b><font color="red"><<$cumres[''name'']>>''s <<$cumres[''desc'']>>sperm is smeared across your hands.</a></font></b>'
 		end
@@ -731,7 +731,7 @@ if arrsize('sparrvol') > 0:
 	if cumres_idx >= 0 and sparrloc[cumres_idx] = i and sparrvol[cumres_idx] > 0:
 		dynamic $cumdescribe
 		if swallow >= 10 and sparrage[cumres_idx] < 5:
-			$stat_msg += '<BR><b><font color="red"><<$cumres[''name'']>>''s <<$cumres[''desc'']>><a href="exec:cumres_idx = arrpos(''sparrloc'',14) & gs ''cum_manage'', ''cumeater1''"><b><font color="blue">sperm</font></b></a><b> is smeared across your <a href="exec:view''images/body/cumbelly.jpg''">stomach</a>.</font></b>.'
+			$stat_msg += '<BR><b><font color="red"><<$cumres[''name'']>>''s <<$cumres[''desc'']>><a href="exec:gs ''cum_manage'', ''cumeater'', 14"><b><font color="blue">sperm</font></b></a><b> is smeared across your <a href="exec:view''images/body/cumbelly.jpg''">stomach</a>.</font></b>.'
 		else
 			$stat_msg += '<BR><b><font color="red"><<$cumres[''name'']>>''s <<$cumres[''desc'']>>sperm is smeared across your <a href="exec:view''images/body/cumbelly.jpg''">stomach.</a></font></b>'
 		end
@@ -744,7 +744,7 @@ if arrsize('sparrvol') > 0:
 	if cumres_idx >= 0 and sparrloc[cumres_idx] = i and sparrvol[cumres_idx] > 0:
 		dynamic $cumdescribe
 		if swallow >= 10 and sparrage[cumres_idx] < 5:
-			$stat_msg += '<BR><b><font color="red"><<$cumres[''name'']>>''s <<$cumres[''desc'']>><a href="exec:cumres_idx = arrpos(''sparrloc'',15) & gs ''cum_manage'', ''cumeater7''"><b><font color="blue">sperm</font></b></a><b> is smeared across your breasts.</font></b>.'
+			$stat_msg += '<BR><b><font color="red"><<$cumres[''name'']>>''s <<$cumres[''desc'']>><a href="exec:gs ''cum_manage'', ''cumeater'', 15"><b><font color="blue">sperm</font></b></a><b> is smeared across your breasts.</font></b>.'
 		else
 			$stat_msg += '<BR><b><font color="red"><<$cumres[''name'']>>''s <<$cumres[''desc'']>>sperm is smeared across your breasts.</a></font></b>'
 		end
@@ -757,7 +757,7 @@ if arrsize('sparrvol') > 0:
 	if cumres_idx >= 0 and sparrloc[cumres_idx] = i and sparrvol[cumres_idx] > 0:
 		dynamic $cumdescribe
 		if swallow >= 10 and sparrage[cumres_idx] < 5:
-			$stat_msg += '<BR><b><font color="red"><<$cumres[''name'']>>''s <<$cumres[''desc'']>><a href="exec:cumres_idx = arrpos(''sparrloc'',16) & gs ''cum_manage'', ''cumeater9''"><b><font color="blue">sperm</font></b></a><b> is smeared in your hair.</font></b>.'
+			$stat_msg += '<BR><b><font color="red"><<$cumres[''name'']>>''s <<$cumres[''desc'']>><a href="exec:gs ''cum_manage'', ''cumeater'', 16"><b><font color="blue">sperm</font></b></a><b> is smeared in your hair.</font></b>.'
 		else
 			$stat_msg += '<BR><b><font color="red"><<$cumres[''name'']>>''s <<$cumres[''desc'']>>sperm is smeared in your hair.</a></font></b>'
 		end

+ 1 - 0
locations/vann

@@ -42,6 +42,7 @@ if $ARGS[0] = 'start':
 
 		dynamic $bteeth
 		dynamic $tampon
+		dynamic $douche
 		dynamic $quickwash
 		dynamic $wearpan
 		dynamic $basin