1
0
Переглянути джерело

[fixed] sex pain and cum leaking

Lusticon 10 місяців тому
батько
коміт
2d87ead6ab
2 змінених файлів з 192 додано та 143 видалено
  1. 122 65
      locations/Cum_Manage.qsrc
  2. 70 78
      locations/arousal.qsrc

+ 122 - 65
locations/Cum_Manage.qsrc

@@ -1094,12 +1094,16 @@ if $ARGS[0] = 'check_innards':
 end
 
 if $ARGS[0] = 'cum_decay':
+!! ARGS[1] forced cum leak (sex intercourse) in values like 20-100
 
-	if menu_off = 1 or cumdectime+15 > totminut: exit
+	cumforced = ARGS[1]
+	if (menu_off = 1 or cumdectime+15 > totminut) and cumforced = 0: exit
 
 	if arrsize('sparrvol') > 0:
 		cumsumvag = 0
 		cumsumass = 0
+        killvar 'cumloc'
+        killvar 'cumvol'
 		i = 0
 
 		!!go through every location
@@ -1120,48 +1124,54 @@ if $ARGS[0] = 'cum_decay':
 
 						if sparrvol[idx] > 0:
 							cumsumvag += sparrvol[idx]
-							cumloc[i] = 1
 							!! seeping out
-							if FUNC('Cum_Manage', 'check_innards', 0) = 1:
-								cumamount = (totminut-cumdectime)/15 * max(rand(1,3), rand(sparrvol[idx]/pcs_vag, vgape*40) - InSleep*rand(2,5) + iif(pcs_horny>50, min(100,pcs_horny)/10 - 4,0))
+							if FUNC('Cum_Manage', 'check_innards', 0) = 1 or cumforced/rand(2,3) > sparrvol[idx]:
+								cumamount = min(sparrvol[idx]*3/2, (totminut-cumdectime)/15 * max(rand(1,3), rand(sparrvol[idx]/pcs_vag, vgape*40) - InSleep*rand(2,5) + iif(pcs_horny>50, min(100,pcs_horny)/10 - 4,0)) + cumforced/rand(5,10))
 								sparrvol[idx] -= cumamount & cumsumvag -= cumamount
+								cumvol[0] -= cumamount
 
 								!! 1 = 'On your labia'
-								sexvolume = max(0, cumamount/2 - isprokp*rand(10,20))
+								sexvolume = max(cumamount/10, cumamount/2 - iif(cumforced=0,isprokp*rand(10,20),0))
 								if sexvolume > 0:
 									spafinloc = 1
-									sexunaware = iif(rand(0,4)=1 or sparridt[idx]=-2,1,0)
+									sexunaware = iif(cumforced=0,iif(rand(0,4)=1 or sparridt[idx]=-2,1,0),0)
 									sexspecpot = -1 & cumarrnam = sparrnam[idx] & cumarrcpt = 0 & cumarrkno = sparridt[idx] & cumarrage = sparrage[idx] & cumnostd = 1
 									gs 'Cum_Manage'
+									cumvol[1] += sexvolume & cumloc[1] = 1
 								end
-								!! 2 = 'On your panties over your vagina'
-								if $pantyworntype <> 'none' or PCloPanties > 0:
-									!! isprokp - sanitary pad absorption
-									if isprokp <> 1:
-										spafinloc = 2
-										sexvolume = max(1, cumamount/2)
-										sexunaware = iif(rand(0,3)=1 or sparridt[idx]=-2,1,0)
-										sexspecpot = -1 & cumarrnam = sparrnam[idx] & cumarrcpt = 0 & cumarrkno = sparridt[idx] & cumarrage = sparrage[idx] & cumnostd = 1
-										gs 'Cum_Manage'
+								if cumforced = 0:
+									!! 2 = 'On your panties over your vagina'
+									if $pantyworntype <> 'none' or PCloPanties > 0:
+										!! isprokp - sanitary pad absorption
+										if isprokp <> 1:
+											spafinloc = 2
+											sexvolume = max(1, cumamount/2)
+											sexunaware = iif(rand(0,3)=1 or sparridt[idx]=-2,1,0)
+											sexspecpot = -1 & cumarrnam = sparrnam[idx] & cumarrcpt = 0 & cumarrkno = sparridt[idx] & cumarrage = sparrage[idx] & cumnostd = 1
+											gs 'Cum_Manage'
+											cumvol[2] += sexvolume & cumloc[2] = 1
+										end
+									!! 9 = 'On your legs'
+									elseif ($clothingworntype = 'nude' or PCloSkirt > 0 or PCloDress > 0) and rand(1,10) > 6 + InSleep*2:
+										sexvolume = max(0, cumamount/4)
+										if sexvolume > 0:
+											spafinloc = 9
+											sexunaware = iif(rand(0,2)=1 or sparridt[idx]=-2,1,0)
+											sexspecpot = -1 & cumarrnam = sparrnam[idx] & cumarrcpt = 0 & cumarrkno = sparridt[idx] & cumarrage = sparrage[idx] & cumnostd = 1
+											gs 'Cum_Manage'
+											cumvol[9] += sexvolume & cumloc[9] = 1
+										end
 									end
-								!! 9 = 'On your legs'
-								elseif ($clothingworntype = 'nude' or PCloSkirt > 0 or PCloDress > 0) and rand(1,10) > 6 + InSleep*2:
-									sexvolume = max(0, cumamount/4)
-									if sexvolume > 0:
-										spafinloc = 9
-										sexunaware = iif(rand(0,2)=1 or sparridt[idx]=-2,1,0)
-										sexspecpot = -1 & cumarrnam = sparrnam[idx] & cumarrcpt = 0 & cumarrkno = sparridt[idx] & cumarrage = sparrage[idx] & cumnostd = 1
-										gs 'Cum_Manage'
-									end
-								end
-								!! 6 = 'On your clothes in your groin area'
-								if PCloPants > 0:
-									sexvolume = max(0, cumamount / (3 + iif($pantyworntype<>'none',12,0)))
-									if sexvolume > 0:
-										spafinloc = 6
-										sexunaware = iif(rand(0,4)=1 or sparridt[idx]=-2,1,0)
-										sexspecpot = -1 & cumarrnam = sparrnam[idx] & cumarrcpt = 0 & cumarrkno = sparridt[idx] & cumarrage = sparrage[idx] & cumnostd = 1
-										gs 'Cum_Manage'
+									!! 6 = 'On your clothes in your groin area'
+									if PCloPants > 0:
+										sexvolume = max(0, cumamount / (3 + iif($pantyworntype<>'none',12,0)))
+										if sexvolume > 0:
+											spafinloc = 6
+											sexunaware = iif(rand(0,4)=1 or sparridt[idx]=-2,1,0)
+											sexspecpot = -1 & cumarrnam = sparrnam[idx] & cumarrcpt = 0 & cumarrkno = sparridt[idx] & cumarrage = sparrage[idx] & cumnostd = 1
+											gs 'Cum_Manage'
+											cumvol[6] += sexvolume & cumloc[6] = 1
+										end
 									end
 								end
 							end
@@ -1177,66 +1187,112 @@ if $ARGS[0] = 'cum_decay':
 
 						if sparrvol[idx] > 0:
 							cumsumass += sparrvol[idx]
-							cumloc[i] = 1
 							!! seeping out
-							if FUNC('Cum_Manage', 'check_innards', 3) = 1:
-								cumamount = (totminut-cumdectime)/15 * max(rand(0,1), rand(sparrvol[idx]/(pcs_ass*3/2), agape*20) - InSleep*rand(4,8))
+							if FUNC('Cum_Manage', 'check_innards', 3) = 1 or cumforced/rand(2,4) > sparrvol[idx]:
+								cumamount = min(sparrvol[idx]*3/2, (totminut-cumdectime)/15 * max(rand(0,1), rand(sparrvol[idx]/(pcs_ass*3/2), agape*20) - InSleep*rand(4,8)) + cumforced/rand(7,15))
 								sparrvol[idx] -= cumamount & cumsumass -= cumamount
+								cumvol[3] -= cumamount
 
 								!! 1 = 'On your labia'
-								sexvolume = max(0, cumamount/4 - isprokp*rand(10,20))
+								sexvolume = max(cumamount/10, cumamount/4 - iif(cumforced=0,isprokp*rand(10,20),0))
 								if sexvolume > 0:
 									spafinloc = 1
-									sexunaware = iif(rand(0,4)=1 or sparridt[idx]=-2,1,0)
+									sexunaware = iif(cumforced=0,iif(rand(0,4)=1 or sparridt[idx]=-2,1,0),0)
 									sexspecpot = -1 & cumarrnam = sparrnam[idx] & cumarrcpt = sparrppt[idx]/2 & cumarrkno = sparridt[idx] & cumarrage = sparrage[idx] & cumnostd = 1
 									gs 'Cum_Manage'
+									cumvol[1] += sexvolume & cumloc[1] = 1
 								end
-								!! 5 = 'On your panties over your butt'
-								if $pantyworntype <> 'none' or PCloPanties > 0:
-									!! isprokp - sanitary pad absorption
-									if isprokp <> 1:
-										spafinloc = 5
-										sexvolume = max(1, cumamount/3)
-										sexunaware = iif(rand(0,3)=1 or sparridt[idx]=-2,1,0)
+								if cumforced > 0:
+									!! 4 = 'On your butt'
+									sexvolume = max(cumamount/15, cumamount/3)
+									if sexvolume > 0:
+										spafinloc = 4
+										sexvolume = max(0, cumamount/2)
+										sexunaware = 0
 										sexspecpot = -1 & cumarrnam = sparrnam[idx] & cumarrcpt = sparrppt[idx]/3 & cumarrkno = sparridt[idx] & cumarrage = sparrage[idx] & cumnostd = 1
 										gs 'Cum_Manage'
+										cumvol[4] += sexvolume & cumloc[4] = 1
 									end
-								!! 9 = 'On your legs'
-								elseif ($clothingworntype = 'nude' or PCloSkirt > 0 or PCloDress > 0) and rand(1,10) > 4 + InSleep*3:
-									sexvolume = max(0, cumamount/5)
-									if sexvolume > 0:
-										spafinloc = 9
-										sexunaware = iif(rand(0,2)=1 or sparridt[idx]=-2,1,0)
-										sexspecpot = -1 & cumarrnam = sparrnam[idx] & cumarrcpt = sparrppt[idx]/4 & cumarrkno = sparridt[idx] & cumarrage = sparrage[idx] & cumnostd = 1
-										gs 'Cum_Manage'
+								else
+									!! 5 = 'On your panties over your butt'
+									if $pantyworntype <> 'none' or PCloPanties > 0:
+										!! isprokp - sanitary pad absorption
+										if isprokp <> 1:
+											spafinloc = 5
+											sexvolume = max(1, cumamount/3)
+											sexunaware = iif(rand(0,3)=1 or sparridt[idx]=-2,1,0)
+											sexspecpot = -1 & cumarrnam = sparrnam[idx] & cumarrcpt = sparrppt[idx]/3 & cumarrkno = sparridt[idx] & cumarrage = sparrage[idx] & cumnostd = 1
+											gs 'Cum_Manage'
+											cumvol[5] += sexvolume & cumloc[5] = 1
+										end
+									!! 9 = 'On your legs'
+									elseif ($clothingworntype = 'nude' or PCloSkirt > 0 or PCloDress > 0) and rand(1,10) > 4 + InSleep*3:
+										sexvolume = max(0, cumamount/5)
+										if sexvolume > 0:
+											spafinloc = 9
+											sexunaware = iif(rand(0,2)=1 or sparridt[idx]=-2,1,0)
+											sexspecpot = -1 & cumarrnam = sparrnam[idx] & cumarrcpt = sparrppt[idx]/4 & cumarrkno = sparridt[idx] & cumarrage = sparrage[idx] & cumnostd = 1
+											gs 'Cum_Manage'
+											cumvol[9] += sexvolume & cumloc[9] = 1
+										end
 									end
-								end
-								!! 6 = 'On your clothes in your groin area'
-								if PCloPants > 0:
-									sexvolume = max(0, cumamount / (4 + iif($pantyworntype<>'none',16,0)))
-									if sexvolume > 0:
-										spafinloc = 6
-										sexunaware = iif(rand(0,4)=1 or sparridt[idx]=-2,1,0)
-										sexspecpot = -1 & cumarrnam = sparrnam[idx] & cumarrcpt = sparrppt[idx]/3 & cumarrkno = sparridt[idx] & cumarrage = sparrage[idx] & cumnostd = 1
-										gs 'Cum_Manage'
+									!! 6 = 'On your clothes in your groin area'
+									if PCloPants > 0:
+										sexvolume = max(0, cumamount / (4 + iif($pantyworntype<>'none',16,0)))
+										if sexvolume > 0:
+											spafinloc = 6
+											sexunaware = iif(rand(0,4)=1 or sparridt[idx]=-2,1,0)
+											sexspecpot = -1 & cumarrnam = sparrnam[idx] & cumarrcpt = sparrppt[idx]/3 & cumarrkno = sparridt[idx] & cumarrage = sparrage[idx] & cumnostd = 1
+											gs 'Cum_Manage'
+											cumvol[6] += sexvolume & cumloc[6] = 1
+										end
 									end
 								end
 							end
 						end
 						if sparrvol[idx] <= 0: gs 'cum_cleanup', 'cleandeposit', idx
+					!! 1 = 'On your labia'  4 = 'On your butt'
+					elseif (i = 1 and sparrvol[idx]*((totminut-cumdectime)/15) > rand(2,5)) _ 
+						or (i = 4 and sparrvol[idx]*((totminut-cumdectime)/15) > rand(4,8)):
+						if $pantyworntype <> 'none' or PCloPanties > 0:
+							!! 2 = 'On your panties over your vagina'  5 = 'On your panties over your butt'
+							sexvolume = rand(sparrvol[idx]/2, sparrvol[idx]) - iif(i=1,isprokp*rand(15,30),0)
+							if sexvolume > 0:
+								sparrvol[idx] -= sexvolume
+								spafinloc = iif(i=1,2,5)
+								sexunaware = 1
+								sexspecpot = -1 & cumarrnam = sparrnam[idx] & cumarrcpt = sparrppt[idx] & cumarrkno = sparridt[idx] & cumarrage = sparrage[idx] & cumnostd = 0
+								gs 'Cum_Manage'
+								cumvol[iif(i=1,2,5)] += sexvolume & cumloc[iif(i=1,2,5)] = 1
+							end
+						!! 6 = 'On your clothes in your groin area'
+						elseif PCloPants > 0:
+							sexvolume = rand(sparrvol[idx]/2, sparrvol[idx])
+							if sexvolume > 0:
+								spafinloc = 6
+								sexunaware = iif(rand(0,4)=1 or sparridt[idx]=-2,1,0)
+								sexspecpot = -1 & cumarrnam = sparrnam[idx] & cumarrcpt = sparrppt[idx]/3 & cumarrkno = sparridt[idx] & cumarrage = sparrage[idx] & cumnostd = 1
+								gs 'Cum_Manage'
+								cumvol[6] += sexvolume & cumloc[6] = 1
+							end
+						end
+						if sparrvol[idx] <= 0: gs 'cum_cleanup', 'cleandeposit', idx
 					!! 17 = 'In a condom in your vagina'
 					elseif i = 17 and sparrvol[idx] > rand(10,15):
 						!! 0 = 'In your Vagina'
-						sexvolume = max(0, cumamount/5 - isprokp*rand(2,5))
+						sexvolume = min(sparrvol[idx]/3, (totminut-cumdectime)/15 * max(0, cumamount/5 - isprokp*rand(2,5)) + cumforced/rand(5,10))
 						if sexvolume > 0:
+							!! condom in vagina is summed in cumsumvag and Cum_Manage call will added more, so subtract here
+							cumsumvag -= sexvolume
 							sparrvol[idx] -= sexvolume
 							spafinloc = 0
 							sexunaware = 1
 							sexspecpot = -1 & cumarrnam = sparrnam[idx] & cumarrcpt = sparrppt[idx] & cumarrkno = sparridt[idx] & cumarrage = sparrage[idx] & cumnostd = 0
 							gs 'Cum_Manage'
+							cumvol[17] -= sexvolume & cumvol[0] += sexvolume & cumloc[0] = 1
 						end
 					!! 12 = 'Inside your mouth'
-					elseif i <> 12:
+					elseif i <> 12 and sparrvol[idx] > rand(0,3):
 						!! dry out
 						!! 1: in this hour
 						!! 2: in four hours
@@ -1247,7 +1303,7 @@ if $ARGS[0] = 'cum_decay':
 							gs 'cum_cleanup', 'cleandeposit', idx
 						end
 					end
-					if sparrvol[idx] > 0: cumloc[i] = 1
+					if sparrvol[idx] > 0: cumloc[i] = 1 & cumvol[inx] += sparrvol[idx] else cumloc[i] = 0 & cumvol[inx] = 0
 				end
 				!! reset just in case
 				sexvolume = 0 & cumnostd = 0 & cumarrkno = 0
@@ -1260,6 +1316,7 @@ if $ARGS[0] = 'cum_decay':
 		if cumsumass <= 0: cumsumass = 0 & cum_vol['anus'] = 0   & cumvol[3] = 0 & cum_loc['anus'] = 0   & cumloc[3] = 0
 		if cumsumbod < 0: cumsumbod = 0
 	end
+	killvar 'cumforced'
 	cumdectime = totminut
 end
 

+ 70 - 78
locations/arousal.qsrc

@@ -130,8 +130,8 @@ if $ARGS[0] ! 'end' and $ARGS[0] ! 'checks' and $ARGS[0] ! 'count' and $ARGS[0]
 		end
 	end
 	!! cum slippery
-	if cumsumvag > 0: vaginal_slip += rand(cumsumvag/10, cumsumvag/5)
-	if cumsumass > 0: anal_slip += rand(cumsumass/15, cumsumass/10)
+	if cumloc[0] > 0: vaginal_slip += rand(cumvol[0]/10, cumvol[0]/5)
+	if cumloc[3] > 0: anal_slip += rand(cumvol[3]/15, cumvol[3]/10)
 	!!	This is to allow a Succubus with the right skill level to handle any size then go back to original size
 	if succubusflag = 1 and sucskill >= 4:
 		if mid($ARGS[0],1,4) = 'vagi' and temp_dick ! pcs_vag:
@@ -177,10 +177,16 @@ if $ARGS[0] ! 'end' and $ARGS[0] ! 'checks' and $ARGS[0] ! 'count' and $ARGS[0]
 	elseif $ARGS[0] = 'kiss':
 		count['kiss'] = 1
 		stim['act'] = 10
-!!	elseif $ARGS[0] = 'breasts':
-!!		stim['act'] = 30
-!!		!! No idea where else to put this. This is used for breast stimulation which will eventually cause lactation in sveta without her knowledge. If anyone knows a better place for this, please let me know. - milky_boobs.
-!!		milkedvolume += func('lact_lib','$get_breastmilk', 8, ARGS[1])
+	elseif $ARGS[0] = 'breasts':
+		stim['act'] = 30
+		!! lose some milk
+		if lactation['active'] > 0 and lactation['breastmv'] > lactation['breastmm']*3/2:
+			stim['act'] += rand(10,20)
+			lactation['breastmv'] = max(0, lactation['breastmv'] - rand(lactation['breastmv']/10, lactation['breastmv']/4)*max(1,ARGS[1]/2))
+		end
+
+		!! No idea where else to put this. This is used for breast stimulation which will eventually cause lactation in sveta without her knowledge. If anyone knows a better place for this, please let me know. - milky_boobs.
+		!! milkedvolume += func('lact_lib','$get_breastmilk', 8, ARGS[1])
 	elseif $ARGS[0] = 'massage':
 		pcs_sweat += rand(2,4)*max(1,ARGS[1]/5)
 		count['massage'] = 1
@@ -260,21 +266,15 @@ if $ARGS[0] ! 'end' and $ARGS[0] ! 'checks' and $ARGS[0] ! 'count' and $ARGS[0]
 			if arrpos('$ARGS', 'sub') >= 0:          altdif += rand(temp_dick/40,temp_dick/30) & agrdif += rand(grange/35,grange/25)
 		end
 		!! increase if already in pain
-		agrdif += iif(rand(pain['asshole']/2, pain['asshole']) > rand(20,30),rand(agrdif/2),0)
-		altdif += iif(rand(pain['asshole']/2, pain['asshole']) > rand(20,30),rand(altdif/2),0)
+		agrdif += rand(pain['asshole']/10, pain['asshole']/2)
+		altdif += rand(pain['asshole']/10, pain['asshole']/2)
 		!! calculate the harm
 		agape = iif((agrdif + altdif) > 10*agape,(agrdif + altdif)/10,agape)
 		!! the pain lover the pleasure
 		gs 'pain', (agrdif + altdif)/5*max(1,ARGS[1]/5), 'asshole', 'stretch'
 		stim['act'] = stim['act'] - (agrdif + altdif)
 		!! force cum leak
-		if ARGS[1] > 0 and cumsumass > rand(pcs_ass/2,pcs_ass):
-			cumdectime -= 15+ARGS[1]*2
-			temp_gape = agape
-			agape = max(1, min(4,(agrdif + altdif)/10))
-			gs 'cum_manage', 'cum_decay'
-			agape = temp_gape
-		end
+		if ARGS[1] > 0 and cumvol[3] > rand(pcs_ass/2,pcs_ass): gs 'cum_manage', 'cum_decay', (temp_dick+grange)*max(1,ARGS[1]/5)
 		if pcs_ass < temp_dick:pcs_ass += 1
 		if pcs_ass*2 < temp_dick:pcs_ass += 1
 	elseif $ARGS[0] = 'anal_finger':
@@ -350,18 +350,12 @@ if $ARGS[0] ! 'end' and $ARGS[0] ! 'checks' and $ARGS[0] ! 'count' and $ARGS[0]
 			if arrpos('$ARGS', 'bound') >= 0:        altdif += rand(temp_dick/35,temp_dick/25) & agrdif += rand(grange/28,grange/20)
 			if arrpos('$ARGS', 'sub') >= 0:          altdif += rand(temp_dick/40,temp_dick/30) & agrdif += rand(grange/35,grange/25)
 		end
-		agrdif += iif(rand(pain['asshole']/2, pain['asshole']) > rand(20,30),rand(agrdif/2),0)
-		altdif += iif(rand(pain['asshole']/2, pain['asshole']) > rand(20,30),rand(altdif/2),0)
+		agrdif += rand(pain['asshole']/10, pain['asshole']/2)
+		altdif += rand(pain['asshole']/10, pain['asshole']/2)
 		agape = iif((agrdif + altdif) > 10*agape,(agrdif + altdif)/10,agape)
 		gs 'pain', (agrdif + altdif)/5*max(1,ARGS[1]/5), 'asshole', 'stretch'
 		stim['act'] = stim['act'] - (agrdif + altdif)
-		if ARGS[1] > 0 and cumsumass > rand(pcs_ass/2,pcs_ass):
-			cumdectime -= 15+ARGS[1]*2
-			temp_gape = agape
-			agape = max(1, min(4,(agrdif + altdif)/10))
-			gs 'cum_manage', 'cum_decay'
-			agape = temp_gape
-		end
+		if ARGS[1] > 0 and cumvol[3] > rand(pcs_ass/2,pcs_ass): gs 'cum_manage', 'cum_decay', (temp_dick+grange)*max(1,ARGS[1]/5)
 		if pcs_ass < temp_dick:pcs_ass += 1
 		if pcs_ass*2 < temp_dick:pcs_ass += 1
 	elseif $ARGS[0] = 'anal_strap':
@@ -399,19 +393,13 @@ if $ARGS[0] ! 'end' and $ARGS[0] ! 'checks' and $ARGS[0] ! 'count' and $ARGS[0]
 			if arrpos('$ARGS', 'bound') >= 0:        altdif += rand(temp_dick/35,temp_dick/25) & agrdif += rand(grange/28,grange/20)
 			if arrpos('$ARGS', 'sub') >= 0:          altdif += rand(temp_dick/40,temp_dick/30) & agrdif += rand(grange/35,grange/25)
 		end
-		agrdif += iif(rand(pain['asshole']/2, pain['asshole']) > rand(20,30),rand(agrdif/2),0)
-		altdif += iif(rand(pain['asshole']/2, pain['asshole']) > rand(20,30),rand(altdif/2),0)
+		agrdif += rand(pain['asshole']/10, pain['asshole']/2)
+		altdif += rand(pain['asshole']/10, pain['asshole']/2)
 		agape = iif((agrdif + altdif) > 10*agape,(agrdif + altdif)/10,agape)
 		gs 'pain', (agrdif + altdif)/5*max(1,ARGS[1]/5), 'asshole', 'stretch'
 		stim['act'] = stim['act'] - (agrdif + altdif)
 		!! force cum leak
-		if ARGS[1] > 0 and cumsumass > rand(pcs_ass/2,pcs_ass):
-			cumdectime -= 15+ARGS[1]*2
-			temp_gape = agape
-			agape = max(1, min(4,(agrdif + altdif)/10))
-			gs 'cum_manage', 'cum_decay'
-			agape = temp_gape
-		end
+		if ARGS[1] > 0 and cumvol[3] > rand(pcs_ass/2,pcs_ass): gs 'cum_manage', 'cum_decay', (temp_dick+grange)*max(1,ARGS[1]/5)
 		if pcs_ass < temp_dick:pcs_ass += 1
 		if pcs_ass*2 < temp_dick:pcs_ass += 1
 	elseif $ARGS[0] = 'anal_vibe':
@@ -471,32 +459,26 @@ if $ARGS[0] ! 'end' and $ARGS[0] ! 'checks' and $ARGS[0] ! 'count' and $ARGS[0]
 		if arrpos('$ARGS', 'rough') >= 0:            vltdif += rand(temp_dick/12,temp_dick/7)  & vgrdif += rand(grange/7,grange/5)
 		if arrpos('$ARGS', 'gangbang') >= 0:         vltdif += rand(temp_dick/15,temp_dick/9)  & vgrdif += rand(grange/10,grange/7)
 		if arrpos('$ARGS', 'beast') >= 0:            vltdif += rand(temp_dick/18,temp_dick/12) & vgrdif += rand(grange/13,grange/9)
-		if pain['asshole'] > rand(30,50):
+		if pain['vaginal'] > rand(30,50):
 			!! if arrpos('$ARGS', 'group') >= 0:        vltdif += rand(temp_dick/25,temp_dick/15) & vgrdif += rand(grange/18,grange/14)
 			if arrpos('$ARGS', 'maso') >= 0:         vltdif += rand(temp_dick/28,temp_dick/19) & vgrdif += rand(grange/21,grange/17)
 		end
-		if pain['asshole'] > rand(40,60):
+		if pain['vaginal'] > rand(40,60):
 			if arrpos('$ARGS', 'prostitution') >= 0: vltdif += rand(temp_dick/32,temp_dick/25) & vgrdif += rand(grange/24,grange/18)
 			!! if arrpos('$ARGS', 'unknown') >= 0:      vltdif += rand(temp_dick/34,temp_dick/26) & vgrdif += rand(grange/27,grange/22)
 			if arrpos('$ARGS', 'bound') >= 0:        vltdif += rand(temp_dick/38,temp_dick/29) & vgrdif += rand(grange/32,grange/26)
 			if arrpos('$ARGS', 'sub') >= 0:          vltdif += rand(temp_dick/45,temp_dick/35) & vgrdif += rand(grange/40,grange/32)
 		end
 		!! increase if already in pain
-		vgrdif += iif(rand(pain['vaginal']/2, pain['vaginal']) > rand(20,30),rand(vgrdif/2),0)
-		vltdif += iif(rand(pain['vaginal']/2, pain['vaginal']) > rand(20,30),rand(vltdif/2),0)
+		vgrdif += rand(pain['vaginal']/10, pain['vaginal']/2)
+		vltdif += rand(pain['vaginal']/10, pain['vaginal']/2)
 		!! calculate the harm
 		vgape = iif((vgrdif + vltdif) > 10*vgape,(vgrdif + vltdif)/10,vgape)
 		!! the pain lover the pleasure
 		gs 'pain', (vgrdif + vltdif)/5*max(1,ARGS[1]/5), 'vaginal', 'stretch'
 		stim['act'] = stim['act'] - (vgrdif + vltdif)
 		!! force cum leak
-		if ARGS[1] > 0 and cumsumvag > rand(pcs_vag/2,pcs_vag):
-			cumdectime -= 15+ARGS[1]*2
-			temp_gape = vgape
-			vgape = max(1, min(4,(vgrdif + vltdif)/10))
-			gs 'cum_manage', 'cum_decay'
-			vgape = temp_gape
-		end
+		if ARGS[1] > 0 and cumvol[0] > rand(pcs_vag/2,pcs_vag): gs 'cum_manage', 'cum_decay', (temp_dick+grange)*max(1,ARGS[1]/5)
 		if pcs_vag < temp_dick:pcs_vag += 1
 		if pcs_vag*2 < temp_dick:pcs_vag += 1
 	elseif $ARGS[0] = 'vaginal_finger':
@@ -545,28 +527,22 @@ if $ARGS[0] ! 'end' and $ARGS[0] ! 'checks' and $ARGS[0] ! 'count' and $ARGS[0]
 		if arrpos('$ARGS', 'rough') >= 0:            vltdif += rand(temp_dick/12,temp_dick/7)  & vgrdif += rand(grange/7,grange/5)
 		if arrpos('$ARGS', 'gangbang') >= 0:         vltdif += rand(temp_dick/15,temp_dick/9)  & vgrdif += rand(grange/10,grange/7)
 		if arrpos('$ARGS', 'beast') >= 0:            vltdif += rand(temp_dick/18,temp_dick/12) & vgrdif += rand(grange/13,grange/9)
-		if pain['asshole'] > rand(30,50):
+		if pain['vaginal'] > rand(30,50):
 			!! if arrpos('$ARGS', 'group') >= 0:        vltdif += rand(temp_dick/25,temp_dick/15) & vgrdif += rand(grange/18,grange/14)
 			if arrpos('$ARGS', 'maso') >= 0:         vltdif += rand(temp_dick/28,temp_dick/19) & vgrdif += rand(grange/21,grange/17)
 		end
-		if pain['asshole'] > rand(40,60):
+		if pain['vaginal'] > rand(40,60):
 			if arrpos('$ARGS', 'prostitution') >= 0: vltdif += rand(temp_dick/32,temp_dick/25) & vgrdif += rand(grange/24,grange/18)
 			!! if arrpos('$ARGS', 'unknown') >= 0:      vltdif += rand(temp_dick/34,temp_dick/26) & vgrdif += rand(grange/27,grange/22)
 			if arrpos('$ARGS', 'bound') >= 0:        vltdif += rand(temp_dick/38,temp_dick/29) & vgrdif += rand(grange/32,grange/26)
 			if arrpos('$ARGS', 'sub') >= 0:          vltdif += rand(temp_dick/45,temp_dick/35) & vgrdif += rand(grange/40,grange/32)
 		end
-		vgrdif += iif(rand(pain['vaginal']/2, pain['vaginal']) > rand(20,30),rand(vgrdif/2),0)
-		vltdif += iif(rand(pain['vaginal']/2, pain['vaginal']) > rand(20,30),rand(vltdif/2),0)
+		vgrdif += rand(pain['vaginal']/10, pain['vaginal']/2)
+		vltdif += rand(pain['vaginal']/10, pain['vaginal']/2)
 		vgape = iif((vgrdif + vltdif) > 10*vgape,(vgrdif + vltdif)/10,vgape)
 		gs 'pain', (vgrdif + vltdif)/5*max(1,ARGS[1]/5), 'vaginal', 'stretch'
 		stim['act'] = stim['act'] - (vgrdif + vltdif)
-		if ARGS[1] > 0 and cumsumvag > rand(pcs_vag/2,pcs_vag):
-			cumdectime -= 15+ARGS[1]*2
-			temp_gape = vgape
-			vgape = max(1, min(4,(vgrdif + vltdif)/10))
-			gs 'cum_manage', 'cum_decay'
-			vgape = temp_gape
-		end
+		if ARGS[1] > 0 and cumvol[0] > rand(pcs_vag/2,pcs_vag): gs 'cum_manage', 'cum_decay', (temp_dick+grange)*max(1,ARGS[1]/5)
 		if pcs_vag < temp_dick:pcs_vag += 1
 		if pcs_vag*2 < temp_dick:pcs_vag += 1
 	elseif $ARGS[0] = 'vaginal_strap':
@@ -599,28 +575,22 @@ if $ARGS[0] ! 'end' and $ARGS[0] ! 'checks' and $ARGS[0] ! 'count' and $ARGS[0]
 		if arrpos('$ARGS', 'rough') >= 0:            vltdif += rand(temp_dick/12,temp_dick/7)  & vgrdif += rand(grange/7,grange/5)
 		if arrpos('$ARGS', 'gangbang') >= 0:         vltdif += rand(temp_dick/15,temp_dick/9)  & vgrdif += rand(grange/10,grange/7)
 		if arrpos('$ARGS', 'beast') >= 0:            vltdif += rand(temp_dick/18,temp_dick/12) & vgrdif += rand(grange/13,grange/9)
-		if pain['asshole'] > rand(30,50):
+		if pain['vaginal'] > rand(30,50):
 			!! if arrpos('$ARGS', 'group') >= 0:        vltdif += rand(temp_dick/25,temp_dick/15) & vgrdif += rand(grange/18,grange/14)
 			if arrpos('$ARGS', 'maso') >= 0:         vltdif += rand(temp_dick/28,temp_dick/19) & vgrdif += rand(grange/21,grange/17)
 		end
-		if pain['asshole'] > rand(40,60):
+		if pain['vaginal'] > rand(40,60):
 			if arrpos('$ARGS', 'prostitution') >= 0: vltdif += rand(temp_dick/32,temp_dick/25) & vgrdif += rand(grange/24,grange/18)
 			!! if arrpos('$ARGS', 'unknown') >= 0:      vltdif += rand(temp_dick/34,temp_dick/26) & vgrdif += rand(grange/27,grange/22)
 			if arrpos('$ARGS', 'bound') >= 0:        vltdif += rand(temp_dick/38,temp_dick/29) & vgrdif += rand(grange/32,grange/26)
 			if arrpos('$ARGS', 'sub') >= 0:          vltdif += rand(temp_dick/45,temp_dick/35) & vgrdif += rand(grange/40,grange/32)
 		end
-		vgrdif += iif(rand(pain['vaginal']/2, pain['vaginal']) > rand(20,30),rand(vgrdif/2),0)
-		vltdif += iif(rand(pain['vaginal']/2, pain['vaginal']) > rand(20,30),rand(vltdif/2),0)
+		vgrdif += rand(pain['vaginal']/10, pain['vaginal']/2)
+		vltdif += rand(pain['vaginal']/10, pain['vaginal']/2)
 		vgape = iif((vgrdif + vltdif) > 10*vgape,(vgrdif + vltdif)/10,vgape)
 		gs 'pain', (vgrdif + vltdif)/5*max(1,ARGS[1]/5), 'vaginal', 'stretch'
 		stim['act'] = stim['act'] - (vgrdif + vltdif)
-		if ARGS[1] > 0 and cumsumvag > rand(pcs_vag/2,pcs_vag):
-			cumdectime -= 15+ARGS[1]*2
-			temp_gape = vgape
-			vgape = max(1, min(4,(vgrdif + vltdif)/10))
-			gs 'cum_manage', 'cum_decay'
-			vgape = temp_gape
-		end
+		if ARGS[1] > 0 and cumvol[0] > rand(pcs_vag/2,pcs_vag): gs 'cum_manage', 'cum_decay', (temp_dick+grange)*max(1,ARGS[1]/5)
 		if pcs_vag < temp_dick:pcs_vag += 1
 		if pcs_vag*2 < temp_dick:pcs_vag += 1
 	elseif $ARGS[0] = 'vaginal_vibe':
@@ -714,6 +684,15 @@ if $ARGS[0] ! 'end' and $ARGS[0] ! 'checks' and $ARGS[0] ! 'count' and $ARGS[0]
 			count['bj'] = 1
 		end
 		stim['act'] = 45
+		if pcs_lipbalm > 0:
+			pcs_lipbalm = max(0, pcs_lipbalm - 1*max(1,ARGS[1]/5))
+			if arrpos('$ARGS', 'rape') >= 0 _ 
+			or arrpos('$ARGS', 'rough') >= 0 _ 
+			or arrpos('$ARGS', 'gangbang') >= 0 _ 
+			or arrpos('$ARGS', 'beast') >= 0:
+				pcs_lipbalm = max(0, pcs_lipbalm - 1*max(1,ARGS[1]/5))
+			end
+		end
 		if arrpos('$ARGS', 'deepthroat') >= 0:
 			tgrdif = grange - pcs_throat
 			tltdif = temp_dick - pcs_throat
@@ -730,18 +709,18 @@ if $ARGS[0] ! 'end' and $ARGS[0] ! 'checks' and $ARGS[0] ! 'count' and $ARGS[0]
 			if arrpos('$ARGS', 'rough') >= 0:            tltdif += rand(temp_dick/10,temp_dick/6)  & tgrdif += rand(grange/6,grange/4)
 			if arrpos('$ARGS', 'gangbang') >= 0:         tltdif += rand(temp_dick/13,temp_dick/8)  & tgrdif += rand(grange/8,grange/6)
 			if arrpos('$ARGS', 'beast') >= 0:            tltdif += rand(temp_dick/16,temp_dick/10) & tgrdif += rand(grange/10,grange/8)
-			if pain['asshole'] > rand(30,50):
+			if pain['throat'] > rand(30,50):
 				!! if arrpos('$ARGS', 'group') >= 0:        tltdif += rand(temp_dick/23,temp_dick/13) & tgrdif += rand(grange/16,grange/13)
 				if arrpos('$ARGS', 'maso') >= 0:         tltdif += rand(temp_dick/25,temp_dick/16) & tgrdif += rand(grange/19,grange/15)
 			end
-			if pain['asshole'] > rand(40,60):
+			if pain['throat'] > rand(40,60):
 				if arrpos('$ARGS', 'prostitution') >= 0: tltdif += rand(temp_dick/30,temp_dick/19) & tgrdif += rand(grange/21,grange/17)
 				!! if arrpos('$ARGS', 'unknown') >= 0:      tltdif += rand(temp_dick/32,temp_dick/23) & tgrdif += rand(grange/24,grange/19)
 				if arrpos('$ARGS', 'bound') >= 0:        tltdif += rand(temp_dick/35,temp_dick/26) & tgrdif += rand(grange/29,grange/23)
 				if arrpos('$ARGS', 'sub') >= 0:          tltdif += rand(temp_dick/38,temp_dick/33) & tgrdif += rand(grange/35,grange/28)
 			end
-			tgrdif += iif(rand(pain['throat']/2, pain['throat']) > rand(20,30),rand(tgrdif/2),0)
-			tltdif += iif(rand(pain['throat']/2, pain['throat']) > rand(20,30),rand(tltdif/2),0)
+			tgrdif += rand(pain['throat']/10, pain['throat']/2)
+			tltdif += rand(pain['throat']/10, pain['throat']/2)
 			gs 'pain', (tgrdif + tltdif)/5*max(1,ARGS[1]/5), 'throat', 'stretch'
 			if pcs_throat < temp_dick:pcs_throat += 1
 			if pcs_throat*2 < temp_dick:pcs_throat += 1
@@ -750,6 +729,15 @@ if $ARGS[0] ! 'end' and $ARGS[0] ! 'checks' and $ARGS[0] ! 'count' and $ARGS[0]
 	elseif $ARGS[0] = 'dildo_suck':
 		count['dildo_suck'] = 1
 		stim['act'] = 30
+		if pcs_lipbalm > 0:
+			pcs_lipbalm = max(0, pcs_lipbalm - 1*max(1,ARGS[1]/5))
+			if arrpos('$ARGS', 'rape') >= 0 _ 
+			or arrpos('$ARGS', 'rough') >= 0 _ 
+			or arrpos('$ARGS', 'gangbang') >= 0 _ 
+			or arrpos('$ARGS', 'beast') >= 0:
+				pcs_lipbalm = max(0, pcs_lipbalm - 1*max(1,ARGS[1]/5))
+			end
+		end
 		if arrpos('$ARGS', 'deepthroat') >= 0:
 			tgrdif = grange - pcs_throat
 			tltdif = temp_dick - pcs_throat
@@ -766,18 +754,18 @@ if $ARGS[0] ! 'end' and $ARGS[0] ! 'checks' and $ARGS[0] ! 'count' and $ARGS[0]
 			if arrpos('$ARGS', 'rough') >= 0:            tltdif += rand(temp_dick/10,temp_dick/6)  & tgrdif += rand(grange/6,grange/4)
 			if arrpos('$ARGS', 'gangbang') >= 0:         tltdif += rand(temp_dick/13,temp_dick/8)  & tgrdif += rand(grange/8,grange/6)
 			if arrpos('$ARGS', 'beast') >= 0:            tltdif += rand(temp_dick/16,temp_dick/10) & tgrdif += rand(grange/10,grange/8)
-			if pain['asshole'] > rand(30,50):
+			if pain['throat'] > rand(30,50):
 				!! if arrpos('$ARGS', 'group') >= 0:        tltdif += rand(temp_dick/23,temp_dick/13) & tgrdif += rand(grange/16,grange/13)
 				if arrpos('$ARGS', 'maso') >= 0:         tltdif += rand(temp_dick/25,temp_dick/16) & tgrdif += rand(grange/19,grange/15)
 			end
-			if pain['asshole'] > rand(40,60):
+			if pain['throat'] > rand(40,60):
 				if arrpos('$ARGS', 'prostitution') >= 0: tltdif += rand(temp_dick/30,temp_dick/19) & tgrdif += rand(grange/21,grange/17)
 				!! if arrpos('$ARGS', 'unknown') >= 0:      tltdif += rand(temp_dick/32,temp_dick/23) & tgrdif += rand(grange/24,grange/19)
 				if arrpos('$ARGS', 'bound') >= 0:        tltdif += rand(temp_dick/35,temp_dick/26) & tgrdif += rand(grange/29,grange/23)
 				if arrpos('$ARGS', 'sub') >= 0:          tltdif += rand(temp_dick/38,temp_dick/33) & tgrdif += rand(grange/35,grange/28)
 			end
-			tgrdif += iif(rand(pain['throat']/2, pain['throat']) > rand(20,30),rand(tgrdif/2),0)
-			tltdif += iif(rand(pain['throat']/2, pain['throat']) > rand(20,30),rand(tltdif/2),0)
+			tgrdif += rand(pain['throat']/10, pain['throat']/2)
+			tltdif += rand(pain['throat']/10, pain['throat']/2)
 			gs 'pain', (tgrdif + tltdif)/5*max(1,ARGS[1]/5), 'throat', 'stretch'
 			if pcs_throat < temp_dick:pcs_throat += 1
 			if pcs_throat*2 < temp_dick:pcs_throat += 1
@@ -832,16 +820,16 @@ if $ARGS[0] ! 'end' and $ARGS[0] ! 'checks' and $ARGS[0] ! 'count' and $ARGS[0]
 		or arrpos('$ARGS', 'anal_strap') >= 0:    pcs_hairbsh = iif(rand(30, pcs_hairlng)>220,rand(-1,pcs_hairbsh),pcs_hairbsh)
 		if arrpos('$ARGS', 'vaginal') >= 0 _ 
 		or arrpos('$ARGS', 'vaginal_strap') >= 0: pcs_hairbsh = iif(rand(30, pcs_hairlng)>240,rand(-1,pcs_hairbsh),pcs_hairbsh)
-		if arrpos('$ARGS', 'bound') >= 0:         pcs_hairbsh = iif(rand(30, pcs_hairlng)>270,rand(0,pcs_hairbsh),pcs_hairbsh)
-		if arrpos('$ARGS', 'sub') >= 0:           pcs_hairbsh = iif(rand(30, pcs_hairlng)>300,rand(0,pcs_hairbsh),pcs_hairbsh)
+		if pcs_hairbsh > 0:
+			if arrpos('$ARGS', 'bound') >= 0:     pcs_hairbsh = iif(rand(30, pcs_hairlng)>270,rand(0,pcs_hairbsh),pcs_hairbsh)
+			if arrpos('$ARGS', 'sub') >= 0:       pcs_hairbsh = iif(rand(30, pcs_hairlng)>300,rand(0,pcs_hairbsh),pcs_hairbsh)
+		end
 	end
 	if pcs_makeup > 1:
 		if arrpos('$ARGS', 'rape') >= 0:                  pcs_makeup = iif(rand(pcs_makeup, pcs_makupskl/10)<7,0,pcs_makeup)
 		if arrpos('$ARGS', 'rough') >= 0:                 pcs_makeup = iif(rand(pcs_makeup, pcs_makupskl/10)<5,0,pcs_makeup)
 		if arrpos('$ARGS', 'gangbang') >= 0:              pcs_makeup = iif(rand(pcs_makeup, pcs_makupskl/10)<5,0,pcs_makeup)
 		if arrpos('$ARGS', 'beast') >= 0:                 pcs_makeup = iif(rand(pcs_makeup, pcs_makupskl/10)<4,0,pcs_makeup)
-		if (arrpos('$ARGS', 'bj') >= 0 _ 
-		or arrpos('$ARGS', 'cuni_give') >= 0):            pcs_makeup = iif(rand(pcs_makeup, pcs_makupskl/10)<3,rand(0,1),pcs_makeup)
 		if arrpos('$ARGS', 'bj') >= 0 or arrpos('$ARGS', 'deepthroat') >= 0:
 			if arrpos('$ARGS', 'group') >= 0:             pcs_makeup = iif(rand(pcs_makeup, pcs_makupskl/10)<3,0,pcs_makeup)
 			if arrpos('$ARGS', 'BDSM') >= 0:              pcs_makeup = iif(rand(pcs_makeup, pcs_makupskl/10)<3,0,pcs_makeup)
@@ -853,6 +841,10 @@ if $ARGS[0] ! 'end' and $ARGS[0] ! 'checks' and $ARGS[0] ! 'count' and $ARGS[0]
 				if arrpos('$ARGS', 'sub') >= 0:           pcs_makeup = iif(rand(pcs_makeup, pcs_makupskl/10)<5,0,pcs_makeup)
 			end
 		end
+		if pcs_makeup > 1:
+			if (arrpos('$ARGS', 'bj') >= 0 _ 
+			or arrpos('$ARGS', 'cuni_give') >= 0):        pcs_makeup = iif(rand(pcs_makeup, pcs_makupskl/10)<3,rand(0,1),pcs_makeup)
+		end
 	end
 	
 	if stim['mag'] > 9: stim['mag'] = 9