Explorar el Código

[changed] pain calculation

Lusticon hace 4 meses
padre
commit
da029fbc30
Se han modificado 1 ficheros con 258 adiciones y 125 borrados
  1. 258 125
      locations/arousal.qsrc

+ 258 - 125
locations/arousal.qsrc

@@ -89,13 +89,8 @@ killvar 'orgasm_flag'
 
 if $ARGS[0] ! 'end' and $ARGS[0] ! 'checks' and $ARGS[0] ! 'count' and $ARGS[0] ! 'count2':
 
-	if strpos($ARGS[2]+$ARGS[3]+$ARGS[4]+$ARGS[5]+$ARGS[6]+ $ARGS[7]+ $ARGS[8],'unaware') > 0:
-		temp_unaware = 1
-	end
-
-	if strpos($ARGS[2]+$ARGS[3]+$ARGS[4]+$ARGS[5]+$ARGS[6]+ $ARGS[7]+ $ARGS[8],'no_orgasm_msg') > 0:
-		temp_text = 1
-	end
+	if arrpos('$ARGS', 'unaware') >= 0: temp_unaware = 1
+	if arrpos('$ARGS', 'no_orgasm_msg') >= 0: temp_text = 1
 	
 	if mid($ARGS[2],1,4) = 'dick':
 		temp_dick = dyneval('result='+$ARGS[2])
@@ -106,12 +101,12 @@ if $ARGS[0] ! 'end' and $ARGS[0] ! 'checks' and $ARGS[0] ! 'count' and $ARGS[0]
 		temp_silavag = silavag
 		$temp_dick_girth = $dick_girth
 	end
-	if strpos($ARGS[2]+$ARGS[3]+$ARGS[4]+$ARGS[5]+$ARGS[6]+ $ARGS[7]+ $ARGS[8],'rough')+strpos($ARGS[2]+$ARGS[3]+$ARGS[4]+$ARGS[5]+$ARGS[6]+ $ARGS[7]+ $ARGS[8],'beast') > 0: temp_silavag = 0
+	if arrpos('$ARGS', 'rape') >= 0 or arrpos('$ARGS', 'rough') >= 0 or arrpos('$ARGS', 'beast') >= 0: temp_silavag = 0
 	grange = dyneval('result=strpos(''skinny   slimx     well pr   thicker   thickx    massive   monstrous'',$ARGS[0])',mid($temp_dick_girth+'x',1,6))/2
 
 	!! first let us determine how slippery are pc''s holes
 	if vaginal_slip < pcs_horny / 10: vaginal_slip = pcs_horny / 10
-	if strpos($ARGS[2]+$ARGS[3]+$ARGS[4]+$ARGS[5]+$ARGS[6]+ $ARGS[7]+ $ARGS[8],'lube') > 0:
+	if arrpos('$ARGS', 'lube') >= 0:
 		if ar_anal_lube = 0:
 			if mid($ARGS[0],1,4) = 'anal':
 				anal_slip = 8
@@ -125,6 +120,9 @@ if $ARGS[0] ! 'end' and $ARGS[0] ! 'checks' and $ARGS[0] ! 'count' and $ARGS[0]
 			end
 		end
 	end
+	!! cum slippery
+	if cumsumvag > 0: vaginal_slip += rand(cumsumvag/10, cumsumvag/5)
+	if cumsumass > 0: anal_slip += rand(cumsumass/15, cumsumass/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:
@@ -175,12 +173,14 @@ if $ARGS[0] ! 'end' and $ARGS[0] ! 'checks' and $ARGS[0] ! 'count' and $ARGS[0]
 !!		!! 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
 		stim['act'] = 25
 	elseif $ARGS[0] = 'foreplay':
 		count['foreplay'] = 1
 		stim['act'] = 20
 	elseif $ARGS[0] = 'cuni':
+		pcs_sweat += rand(0,1)*max(1,ARGS[1]/5)
 		orgasm_flag['vaginal'] = 1
 		count['cuni'] = 1
 		stim['mag'] += 4
@@ -203,6 +203,7 @@ if $ARGS[0] ! 'end' and $ARGS[0] ! 'checks' and $ARGS[0] ! 'count' and $ARGS[0]
 		stim['act'] = 70
 		stim_les = 1
 	elseif $ARGS[0] = 'anal':
+		pcs_sweat += rand(1,4)*max(1,ARGS[1]/5)
 		stat['last_sex_day'] = daystart
 		orgasm_flag['anal'] = 1
 		if temp_unaware = 1:
@@ -215,8 +216,6 @@ if $ARGS[0] ! 'end' and $ARGS[0] ! 'checks' and $ARGS[0] ! 'count' and $ARGS[0]
 		elseif pcs_traits['buttslut_lvl'] >= 2:
 			stim['mag'] += 3
 		end
-		if pcs_ass < temp_dick:pcs_ass += 1
-		if pcs_ass*2 < temp_dick:pcs_ass += 1
 		!! length and girth abilities of anus are not also separated , but I suppose that they are related although it is not propable
 		!! we can estimate difference in girth and length anal_girth_difference and anal_lenght_difference - names are shortened
 		altdif = temp_dick - pcs_ass
@@ -237,21 +236,38 @@ if $ARGS[0] ! 'end' and $ARGS[0] ! 'checks' and $ARGS[0] ! 'count' and $ARGS[0]
 		if agrdif < 0: agrdif = 0
 		if altdif < 0: altdif = 0
 		!! rough sex always gives pain
-		if arrpos('$ARGS', 'rape') >= 0:         altdif += rand(temp_dick,temp_dick*2)    & agrdif += rand(grange*2,grange*4)
-		if arrpos('$ARGS', 'rough') >= 0:        altdif += rand(temp_dick/3,temp_dick/2)  & agrdif += rand(grange*3/2,grange*2)
-		if arrpos('$ARGS', 'gangbang') >= 0:     altdif += rand(temp_dick/4,temp_dick/2)  & agrdif += rand(grange,grange*3/2)
-		if arrpos('$ARGS', 'group') >= 0:        altdif += rand(temp_dick/4,temp_dick/3)  & agrdif += rand(grange*2/3,grange)
-		if arrpos('$ARGS', 'beast') >= 0:        altdif += rand(temp_dick/5,temp_dick/3)  & agrdif += rand(grange/2,grange)
-		if arrpos('$ARGS', 'maso') >= 0:         altdif += rand(temp_dick/6,temp_dick/4)  & agrdif += rand(grange/2,grange*2/3)
-		if arrpos('$ARGS', 'prostitution') >= 0: altdif += rand(temp_dick/7,temp_dick/4)  & agrdif += rand(grange/3,grange/2)
-		if arrpos('$ARGS', 'unknown') >= 0:      altdif += rand(temp_dick/8,temp_dick/5)  & agrdif += rand(grange/4,grange/3)
-		if arrpos('$ARGS', 'bound') >= 0:        altdif += rand(temp_dick/9,temp_dick/5)  & agrdif += rand(grange/5,grange/4)
-		if arrpos('$ARGS', 'sub') >= 0:          altdif += rand(temp_dick/10,temp_dick/6) & agrdif += rand(grange/6,grange/5)
+		if arrpos('$ARGS', 'rape') >= 0:             altdif += rand(temp_dick/7,temp_dick/4)   & agrdif += rand(grange/3,grange/2)
+		if arrpos('$ARGS', 'rough') >= 0:            altdif += rand(temp_dick/10,temp_dick/5)  & agrdif += rand(grange/5,grange/3)
+		if arrpos('$ARGS', 'gangbang') >= 0:         altdif += rand(temp_dick/12,temp_dick/6)  & agrdif += rand(grange/7,grange/5)
+		if arrpos('$ARGS', 'beast') >= 0:            altdif += rand(temp_dick/15,temp_dick/8)  & agrdif += rand(grange/10,grange/7)
+		if pain['asshole'] > rand(30,50):
+			if arrpos('$ARGS', 'group') >= 0:        altdif += rand(temp_dick/20,temp_dick/12) & agrdif += rand(grange/15,grange/10)
+			if arrpos('$ARGS', 'maso') >= 0:         altdif += rand(temp_dick/24,temp_dick/16) & agrdif += rand(grange/18,grange/12)
+		end
+		if pain['asshole'] > rand(40,60):
+			if arrpos('$ARGS', 'prostitution') >= 0: altdif += rand(temp_dick/28,temp_dick/20) & agrdif += rand(grange/20,grange/14)
+			if arrpos('$ARGS', 'unknown') >= 0:      altdif += rand(temp_dick/32,temp_dick/22) & agrdif += rand(grange/24,grange/17)
+			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
+		!! 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)
 		!! 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:
+			cumdectime -= 15+ARGS[1]*2
+			temp_gape = agape
+			agape = max(1, min(4,(agrdif + altdif)/5))
+			gs 'cum_manage', 'cum_decay'
+			agape = temp_gape
+		end
+		if pcs_ass < temp_dick:pcs_ass += 1
+		if pcs_ass*2 < temp_dick:pcs_ass += 1
 	elseif $ARGS[0] = 'anal_finger':
 		orgasm_flag['anal'] = 1
 		count['anal_finger'] = 1
@@ -292,11 +308,10 @@ if $ARGS[0] ! 'end' and $ARGS[0] ! 'checks' and $ARGS[0] ! 'count' and $ARGS[0]
 			if agape < 3:agape = 3
 		end
 	elseif $ARGS[0] = 'anal_dildo':
+		pcs_sweat += rand(0,2)*max(1,ARGS[1]/5)
 		orgasm_flag['anal'] = 1
 		count['anal_dildo'] = 1
 		!! the same as for 'anal'
-		if pcs_ass < temp_dick:pcs_ass += 1
-		if pcs_ass*2 < temp_dick:pcs_ass += 1
 		altdif = temp_dick - pcs_ass
 		agrdif = grange - pcs_ass
 		altdif = altdif / (temp_silavag+1)
@@ -312,27 +327,40 @@ if $ARGS[0] ! 'end' and $ARGS[0] ! 'checks' and $ARGS[0] ! 'count' and $ARGS[0]
 		end
 		if agrdif < 0: agrdif = 0
 		if altdif < 0: altdif = 0
-		!! rough sex always gives pain
-		if arrpos('$ARGS', 'rape') >= 0:         altdif += rand(temp_dick,temp_dick*2)    & agrdif += rand(grange*2,grange*4)
-		if arrpos('$ARGS', 'rough') >= 0:        altdif += rand(temp_dick/3,temp_dick/2)  & agrdif += rand(grange*3/2,grange*2)
-		if arrpos('$ARGS', 'gangbang') >= 0:     altdif += rand(temp_dick/4,temp_dick/2)  & agrdif += rand(grange,grange*3/2)
-		if arrpos('$ARGS', 'group') >= 0:        altdif += rand(temp_dick/4,temp_dick/3)  & agrdif += rand(grange*2/3,grange)
-		if arrpos('$ARGS', 'beast') >= 0:        altdif += rand(temp_dick/5,temp_dick/3)  & agrdif += rand(grange/2,grange)
-		if arrpos('$ARGS', 'maso') >= 0:         altdif += rand(temp_dick/6,temp_dick/4)  & agrdif += rand(grange/2,grange*2/3)
-		if arrpos('$ARGS', 'prostitution') >= 0: altdif += rand(temp_dick/7,temp_dick/4)  & agrdif += rand(grange/3,grange/2)
-		if arrpos('$ARGS', 'unknown') >= 0:      altdif += rand(temp_dick/8,temp_dick/5)  & agrdif += rand(grange/4,grange/3)
-		if arrpos('$ARGS', 'bound') >= 0:        altdif += rand(temp_dick/9,temp_dick/5)  & agrdif += rand(grange/5,grange/4)
-		if arrpos('$ARGS', 'sub') >= 0:          altdif += rand(temp_dick/10,temp_dick/6) & agrdif += rand(grange/6,grange/5)
+		if arrpos('$ARGS', 'rape') >= 0:             altdif += rand(temp_dick/7,temp_dick/4)   & agrdif += rand(grange/3,grange/2)
+		if arrpos('$ARGS', 'rough') >= 0:            altdif += rand(temp_dick/10,temp_dick/5)  & agrdif += rand(grange/5,grange/3)
+		if arrpos('$ARGS', 'gangbang') >= 0:         altdif += rand(temp_dick/12,temp_dick/6)  & agrdif += rand(grange/7,grange/5)
+		if arrpos('$ARGS', 'beast') >= 0:            altdif += rand(temp_dick/15,temp_dick/8)  & agrdif += rand(grange/10,grange/7)
+		if pain['asshole'] > rand(30,50):
+			if arrpos('$ARGS', 'group') >= 0:        altdif += rand(temp_dick/20,temp_dick/12) & agrdif += rand(grange/15,grange/10)
+			if arrpos('$ARGS', 'maso') >= 0:         altdif += rand(temp_dick/24,temp_dick/16) & agrdif += rand(grange/18,grange/12)
+		end
+		if pain['asshole'] > rand(40,60):
+			if arrpos('$ARGS', 'prostitution') >= 0: altdif += rand(temp_dick/28,temp_dick/20) & agrdif += rand(grange/20,grange/14)
+			if arrpos('$ARGS', 'unknown') >= 0:      altdif += rand(temp_dick/32,temp_dick/22) & agrdif += rand(grange/24,grange/17)
+			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)
 		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:
+			cumdectime -= 15+ARGS[1]*2
+			temp_gape = agape
+			agape = max(1, min(4,(agrdif + altdif)/5))
+			gs 'cum_manage', 'cum_decay'
+			agape = temp_gape
+		end
+		if pcs_ass < temp_dick:pcs_ass += 1
+		if pcs_ass*2 < temp_dick:pcs_ass += 1
 	elseif $ARGS[0] = 'anal_strap':
+		pcs_sweat += rand(1,2)*max(1,ARGS[1]/5)
 		stat['last_sex_day'] = daystart
 		orgasm_flag['anal'] = 1
 		count['anal_strap'] = 1
 		!! the same as for 'anal'
-		if pcs_ass < temp_dick:pcs_ass += 1
-		if pcs_ass*2 < temp_dick:pcs_ass += 1
 		altdif = temp_dick - pcs_ass
 		agrdif = grange - pcs_ass
 		altdif = altdif / (temp_silavag+1)
@@ -348,20 +376,35 @@ if $ARGS[0] ! 'end' and $ARGS[0] ! 'checks' and $ARGS[0] ! 'count' and $ARGS[0]
 		end
 		if agrdif < 0: agrdif = 0
 		if altdif < 0: altdif = 0
-		!! rough sex always gives pain
-		if arrpos('$ARGS', 'rape') >= 0:         altdif += rand(temp_dick,temp_dick*2)    & agrdif += rand(grange*2,grange*4)
-		if arrpos('$ARGS', 'rough') >= 0:        altdif += rand(temp_dick/3,temp_dick/2)  & agrdif += rand(grange*3/2,grange*2)
-		if arrpos('$ARGS', 'gangbang') >= 0:     altdif += rand(temp_dick/4,temp_dick/2)  & agrdif += rand(grange,grange*3/2)
-		if arrpos('$ARGS', 'group') >= 0:        altdif += rand(temp_dick/4,temp_dick/3)  & agrdif += rand(grange*2/3,grange)
-		if arrpos('$ARGS', 'beast') >= 0:        altdif += rand(temp_dick/5,temp_dick/3)  & agrdif += rand(grange/2,grange)
-		if arrpos('$ARGS', 'maso') >= 0:         altdif += rand(temp_dick/6,temp_dick/4)  & agrdif += rand(grange/2,grange*2/3)
-		if arrpos('$ARGS', 'prostitution') >= 0: altdif += rand(temp_dick/7,temp_dick/4)  & agrdif += rand(grange/3,grange/2)
-		if arrpos('$ARGS', 'unknown') >= 0:      altdif += rand(temp_dick/8,temp_dick/5)  & agrdif += rand(grange/4,grange/3)
-		if arrpos('$ARGS', 'bound') >= 0:        altdif += rand(temp_dick/9,temp_dick/5)  & agrdif += rand(grange/5,grange/4)
-		if arrpos('$ARGS', 'sub') >= 0:          altdif += rand(temp_dick/10,temp_dick/6) & agrdif += rand(grange/6,grange/5)
+		if arrpos('$ARGS', 'rape') >= 0:             altdif += rand(temp_dick/7,temp_dick/4)   & agrdif += rand(grange/3,grange/2)
+		if arrpos('$ARGS', 'rough') >= 0:            altdif += rand(temp_dick/10,temp_dick/5)  & agrdif += rand(grange/5,grange/3)
+		if arrpos('$ARGS', 'gangbang') >= 0:         altdif += rand(temp_dick/12,temp_dick/6)  & agrdif += rand(grange/7,grange/5)
+		if arrpos('$ARGS', 'beast') >= 0:            altdif += rand(temp_dick/15,temp_dick/8)  & agrdif += rand(grange/10,grange/7)
+		if pain['asshole'] > rand(30,50):
+			if arrpos('$ARGS', 'group') >= 0:        altdif += rand(temp_dick/20,temp_dick/12) & agrdif += rand(grange/15,grange/10)
+			if arrpos('$ARGS', 'maso') >= 0:         altdif += rand(temp_dick/24,temp_dick/16) & agrdif += rand(grange/18,grange/12)
+		end
+		if pain['asshole'] > rand(40,60):
+			if arrpos('$ARGS', 'prostitution') >= 0: altdif += rand(temp_dick/28,temp_dick/20) & agrdif += rand(grange/20,grange/14)
+			if arrpos('$ARGS', 'unknown') >= 0:      altdif += rand(temp_dick/32,temp_dick/22) & agrdif += rand(grange/24,grange/17)
+			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)
 		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:
+			cumdectime -= 15+ARGS[1]*2
+			temp_gape = agape
+			agape = max(1, min(4,(agrdif + altdif)/5))
+			gs 'cum_manage', 'cum_decay'
+			agape = temp_gape
+		end
+		if pcs_ass < temp_dick:pcs_ass += 1
+		if pcs_ass*2 < temp_dick:pcs_ass += 1
 	elseif $ARGS[0] = 'anal_vibe':
 		orgasm_flag['anal'] = 1
 		count['anal_vibe'] = 1
@@ -375,7 +418,7 @@ if $ARGS[0] ! 'end' and $ARGS[0] ! 'checks' and $ARGS[0] ! 'count' and $ARGS[0]
 			stim['act'] = 90
 		end
 	elseif $ARGS[0] = 'vaginal':
-		
+		pcs_sweat += rand(1,3)*max(1,ARGS[1]/5)
 		orgasm_flag['vaginal'] = 1
 		!! pre-cum check
 		if rand(0,120) < ARGS[1]: cumprecheck = 1 & gs 'cum_manage'
@@ -395,8 +438,6 @@ if $ARGS[0] ! 'end' and $ARGS[0] ! 'checks' and $ARGS[0] ! 'count' and $ARGS[0]
 			stat['last_man_sex_day'] = daystart
 		end
 		stim['mag'] += 3
-		if pcs_vag < temp_dick:pcs_vag += 1
-		if pcs_vag*2 < temp_dick:pcs_vag += 1
 		!! length and girth abilities of vagina are not separated , but I suppose that they are related
 		!! we can estimate difference in girth and length vaginal_girth_difference and vaginal_lenght_difference - names are shortened
 		vgrdif = grange - pcs_vag
@@ -417,27 +458,45 @@ if $ARGS[0] ! 'end' and $ARGS[0] ! 'checks' and $ARGS[0] ! 'count' and $ARGS[0]
 		if vgrdif < 0: vgrdif = 0
 		if vltdif < 0: vltdif = 0
 		!! rough sex always gives pain
-		if arrpos('$ARGS', 'rape') >= 0:         vltdif += rand(temp_dick,temp_dick*3/2)   & vgrdif += rand(grange*3/2,grange*2)
-		if arrpos('$ARGS', 'rough') >= 0:        vltdif += rand(temp_dick/5,temp_dick/4)   & vgrdif += rand(grange,grange*3/2)
-		if arrpos('$ARGS', 'gangbang') >= 0:     vltdif += rand(temp_dick/6,temp_dick/5)   & vgrdif += rand(grange/2,grange)
-		if arrpos('$ARGS', 'group') >= 0:        vltdif += rand(temp_dick/7,temp_dick/6)   & vgrdif += rand(grange/3,grange*2/3)
-		if arrpos('$ARGS', 'beast') >= 0:        vltdif += rand(temp_dick/8,temp_dick/7)   & vgrdif += rand(grange/3,grange/2)
-		if arrpos('$ARGS', 'maso') >= 0:         vltdif += rand(temp_dick/9,temp_dick/8)   & vgrdif += rand(grange/4,grange/3)
-		if arrpos('$ARGS', 'prostitution') >= 0: vltdif += rand(temp_dick/10,temp_dick/8)  & vgrdif += rand(grange/5,grange/3)
-		if arrpos('$ARGS', 'unknown') >= 0:      vltdif += rand(temp_dick/10,temp_dick/9)  & vgrdif += rand(grange/5,grange/4)
-		if arrpos('$ARGS', 'bound') >= 0:        vltdif += rand(temp_dick/11,temp_dick/10) & vgrdif += rand(grange/6,grange/5)
-		if arrpos('$ARGS', 'sub') >= 0:          vltdif += rand(temp_dick/14,temp_dick/12) & vgrdif += rand(grange/7,grange/6)
+		if arrpos('$ARGS', 'rape') >= 0:             vltdif += rand(temp_dick/9,temp_dick/6)   & vgrdif += rand(grange/5,grange/3)
+		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 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 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)
 		!! 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:
+			cumdectime -= 15+ARGS[1]*2
+			temp_gape = vgape
+			vgape = max(1, min(4,(vgrdif + vltdif)/5))
+			gs 'cum_manage', 'cum_decay'
+			vgape = temp_gape
+		end
+		if pcs_vag < temp_dick:pcs_vag += 1
+		if pcs_vag*2 < temp_dick:pcs_vag += 1
 	elseif $ARGS[0] = 'vaginal_finger':
 		orgasm_flag['vaginal'] = 1
 		count['vaginal_finger'] = 1
 		stim['mag'] += 1
 		stim['act'] = 80
 	elseif $ARGS[0] = 'vaginal_fist':
+		pcs_sweat += rand(0,1)*max(1,ARGS[1]/5)
 		orgasm_flag['vaginal'] = 1
 		count['vaginal_fist'] = 1
 		stim['act'] = 70
@@ -458,12 +517,11 @@ if $ARGS[0] ! 'end' and $ARGS[0] ! 'checks' and $ARGS[0] ! 'count' and $ARGS[0]
 			if vgape < 3:vgape = 3
 		end
 	elseif $ARGS[0] = 'vaginal_dildo':
+		pcs_sweat += rand(0,2)*max(1,ARGS[1]/5)
 		orgasm_flag['vaginal'] = 1
 		count['vaginal_dildo'] = 1
 		stim['mag'] += 1
 		!! the same as for 'vaginal'
-		if pcs_vag < temp_dick:pcs_vag += 1
-		if pcs_vag*2 < temp_dick:pcs_vag += 1
 		vgrdif = grange - pcs_vag
 		vltdif = temp_dick - pcs_vag
 		vltdif = vltdif / (temp_silavag+1)
@@ -474,21 +532,36 @@ if $ARGS[0] ! 'end' and $ARGS[0] ! 'checks' and $ARGS[0] ! 'count' and $ARGS[0]
 		stim['act'] = 80 - (iif(vltdif>0,vltdif,-vltdif) + iif(vgrdif >0,vgrdif,-vgrdif)) + temp_silavag*8
 		if vgrdif < 0: vgrdif = 0
 		if vltdif < 0: vltdif = 0
-		!! rough sex always gives pain
-		if arrpos('$ARGS', 'rape') >= 0:         vltdif += rand(temp_dick,temp_dick*3/2)   & vgrdif += rand(grange*3/2,grange*2)
-		if arrpos('$ARGS', 'rough') >= 0:        vltdif += rand(temp_dick/5,temp_dick/4)   & vgrdif += rand(grange,grange*3/2)
-		if arrpos('$ARGS', 'gangbang') >= 0:     vltdif += rand(temp_dick/6,temp_dick/5)   & vgrdif += rand(grange/2,grange)
-		if arrpos('$ARGS', 'group') >= 0:        vltdif += rand(temp_dick/7,temp_dick/6)   & vgrdif += rand(grange/3,grange*2/3)
-		if arrpos('$ARGS', 'beast') >= 0:        vltdif += rand(temp_dick/8,temp_dick/7)   & vgrdif += rand(grange/3,grange/2)
-		if arrpos('$ARGS', 'maso') >= 0:         vltdif += rand(temp_dick/9,temp_dick/8)   & vgrdif += rand(grange/4,grange/3)
-		if arrpos('$ARGS', 'prostitution') >= 0: vltdif += rand(temp_dick/10,temp_dick/8)  & vgrdif += rand(grange/5,grange/3)
-		if arrpos('$ARGS', 'unknown') >= 0:      vltdif += rand(temp_dick/10,temp_dick/9)  & vgrdif += rand(grange/5,grange/4)
-		if arrpos('$ARGS', 'bound') >= 0:        vltdif += rand(temp_dick/11,temp_dick/10) & vgrdif += rand(grange/6,grange/5)
-		if arrpos('$ARGS', 'sub') >= 0:          vltdif += rand(temp_dick/14,temp_dick/12) & vgrdif += rand(grange/7,grange/6)
+		if arrpos('$ARGS', 'rape') >= 0:             vltdif += rand(temp_dick/9,temp_dick/6)   & vgrdif += rand(grange/5,grange/3)
+		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 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 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)
 		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:
+			cumdectime -= 15+ARGS[1]*2
+			temp_gape = vgape
+			vgape = max(1, min(4,(vgrdif + vltdif)/5))
+			gs 'cum_manage', 'cum_decay'
+			vgape = temp_gape
+		end
+		if pcs_vag < temp_dick:pcs_vag += 1
+		if pcs_vag*2 < temp_dick:pcs_vag += 1
 	elseif $ARGS[0] = 'vaginal_strap':
+		pcs_sweat += rand(1,2)*max(1,ARGS[1]/5)
 		orgasm_flag['vaginal'] = 1
 		count['vaginal_strap'] = 1
 		if stat['think_virgin'] = 1:
@@ -502,9 +575,6 @@ if $ARGS[0] ! 'end' and $ARGS[0] ! 'checks' and $ARGS[0] ! 'count' and $ARGS[0]
 			!! if dont_know_npc_name
 		end
 		stim['mag'] += 1
-		!! virginal capacity increase
-		if pcs_vag < temp_dick:pcs_vag += 1
-		if pcs_vag*2 < temp_dick:pcs_vag += 1
 		!! the same as for 'vaginal'
 		vgrdif = grange - pcs_vag
 		vltdif = temp_dick - pcs_vag
@@ -516,20 +586,34 @@ if $ARGS[0] ! 'end' and $ARGS[0] ! 'checks' and $ARGS[0] ! 'count' and $ARGS[0]
 		stim['act'] = 80 - (iif(vltdif>0,vltdif,-vltdif) + iif(vgrdif >0,vgrdif,-vgrdif)) + temp_silavag*8
 		if vgrdif < 0: vgrdif = 0
 		if vltdif < 0: vltdif = 0
-		!! rough sex always gives pain
-		if arrpos('$ARGS', 'rape') >= 0:         vltdif += rand(temp_dick,temp_dick*3/2)   & vgrdif += rand(grange*3/2,grange*2)
-		if arrpos('$ARGS', 'rough') >= 0:        vltdif += rand(temp_dick/5,temp_dick/4)   & vgrdif += rand(grange,grange*3/2)
-		if arrpos('$ARGS', 'gangbang') >= 0:     vltdif += rand(temp_dick/6,temp_dick/5)   & vgrdif += rand(grange/2,grange)
-		if arrpos('$ARGS', 'group') >= 0:        vltdif += rand(temp_dick/7,temp_dick/6)   & vgrdif += rand(grange/3,grange*2/3)
-		if arrpos('$ARGS', 'beast') >= 0:        vltdif += rand(temp_dick/8,temp_dick/7)   & vgrdif += rand(grange/3,grange/2)
-		if arrpos('$ARGS', 'maso') >= 0:         vltdif += rand(temp_dick/9,temp_dick/8)   & vgrdif += rand(grange/4,grange/3)
-		if arrpos('$ARGS', 'prostitution') >= 0: vltdif += rand(temp_dick/10,temp_dick/8)  & vgrdif += rand(grange/5,grange/3)
-		if arrpos('$ARGS', 'unknown') >= 0:      vltdif += rand(temp_dick/10,temp_dick/9)  & vgrdif += rand(grange/5,grange/4)
-		if arrpos('$ARGS', 'bound') >= 0:        vltdif += rand(temp_dick/11,temp_dick/10) & vgrdif += rand(grange/6,grange/5)
-		if arrpos('$ARGS', 'sub') >= 0:          vltdif += rand(temp_dick/14,temp_dick/12) & vgrdif += rand(grange/7,grange/6)
+		if arrpos('$ARGS', 'rape') >= 0:             vltdif += rand(temp_dick/9,temp_dick/6)   & vgrdif += rand(grange/5,grange/3)
+		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 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 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)
 		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:
+			cumdectime -= 15+ARGS[1]*2
+			temp_gape = vgape
+			vgape = max(1, min(4,(vgrdif + vltdif)/5))
+			gs 'cum_manage', 'cum_decay'
+			vgape = temp_gape
+		end
+		if pcs_vag < temp_dick:pcs_vag += 1
+		if pcs_vag*2 < temp_dick:pcs_vag += 1
 	elseif $ARGS[0] = 'vaginal_vibe':
 		orgasm_flag['vaginal'] = 1
 		count['vaginal_vibe'] = 1
@@ -548,12 +632,14 @@ if $ARGS[0] ! 'end' and $ARGS[0] ! 'checks' and $ARGS[0] ! 'count' and $ARGS[0]
 		count['pee'] = 1
 		stim['act'] = 10
 	elseif $ARGS[0] = 'massage_give':
+		pcs_sweat += rand(3,6)*max(1,ARGS[1]/5)
 		count['massage_give'] = 1
 		stim['act'] = 10
 	elseif $ARGS[0] = 'foreplay_give':
 		count['foreplay_give'] = 1
 		stim['act'] = 20
 	elseif $ARGS[0] = 'cuni_give':
+		pcs_sweat += rand(0,1)*max(1,ARGS[1]/5)
 		count['cuni_give'] = 1
 		stim['act'] = 30
 		stim_les = 1
@@ -567,12 +653,14 @@ if $ARGS[0] ! 'end' and $ARGS[0] ! 'checks' and $ARGS[0] ! 'count' and $ARGS[0]
 		count['anal_fist_give'] = 1
 		stim['act'] = 30
 	elseif $ARGS[0] = 'anal_dildo_give':
+		pcs_sweat += rand(0,1)*max(1,ARGS[1]/5)
 		count['anal_dildo_give'] = 1
 		stim['act'] = 40
 	elseif $ARGS[0] = 'anal_vibe_give':
 		count['anal_vibe_give'] = 1
 		stim['act'] = 40
 	elseif $ARGS[0] = 'anal_strap_give':
+		pcs_sweat += rand(2,4)*max(1,ARGS[1]/5)
 		count['anal_strap_give'] = 1
 		stim['act'] = 40
 	elseif $ARGS[0] = 'vaginal_finger_give':
@@ -588,10 +676,12 @@ if $ARGS[0] ! 'end' and $ARGS[0] ! 'checks' and $ARGS[0] ! 'count' and $ARGS[0]
 		stim['act'] = 50
 		stim_les = 1
 	elseif $ARGS[0] = 'vaginal_dildo_give':
+		pcs_sweat += rand(0,1)*max(1,ARGS[1]/5)
 		count['vaginal_dildo_give'] = 1
 		stim['act'] = 60
 		stim_les = 1
 	elseif $ARGS[0] = 'vaginal_strap_give':
+		pcs_sweat += rand(2,4)*max(1,ARGS[1]/5)
 		count['vaginal_strap_give'] = 1
 		stim['act'] = 70
 		stim_les = 1
@@ -600,6 +690,7 @@ if $ARGS[0] ! 'end' and $ARGS[0] ! 'checks' and $ARGS[0] ! 'count' and $ARGS[0]
 		stim['act'] = 60
 		stim_les = 1
 	elseif $ARGS[0] = 'hj':
+		pcs_sweat += rand(0,3)*max(1,ARGS[1]/5)
 		if temp_unaware = 1:
 			count['hidden_hj'] = 1
 		else
@@ -607,6 +698,7 @@ if $ARGS[0] ! 'end' and $ARGS[0] ! 'checks' and $ARGS[0] ! 'count' and $ARGS[0]
 		end
 		stim['act'] = 25
 	elseif $ARGS[0] = 'bj':
+		pcs_sweat += rand(0,1)*max(1,ARGS[1]/5)
 		if temp_unaware = 1:
 			count['hidden_bj'] = 1
 		else
@@ -614,8 +706,6 @@ if $ARGS[0] ! 'end' and $ARGS[0] ! 'checks' and $ARGS[0] ! 'count' and $ARGS[0]
 		end
 		stim['act'] = 45
 		if arrpos('$ARGS', 'deepthroat') >= 0:
-			if pcs_throat < temp_dick:pcs_throat += 1
-			if pcs_throat*2 < temp_dick:pcs_throat += 1
 			tgrdif = grange - pcs_throat
 			tltdif = temp_dick - pcs_throat
 			tltdif = tltdif / (temp_silavag+1)
@@ -627,26 +717,31 @@ if $ARGS[0] ! 'end' and $ARGS[0] ! 'checks' and $ARGS[0] ! 'count' and $ARGS[0]
 			stim['act'] = 80 - (iif(tltdif>0,tltdif,-tltdif) + iif(tgrdif >0,tgrdif,-tgrdif)) + temp_silavag*8
 			if tgrdif < 0: tgrdif = 0
 			if tltdif < 0: tltdif = 0
-			!! rough sex always gives pain
-			if arrpos('$ARGS', 'rape') >= 0:         tltdif += rand(temp_dick,temp_dick*2)     & tgrdif += rand(grange*2,grange*3)
-			if arrpos('$ARGS', 'rough') >= 0:        tltdif += rand(temp_dick,temp_dick*3/2)   & tgrdif += rand(grange*2/3,grange*2)
-			if arrpos('$ARGS', 'gangbang') >= 0:     tltdif += rand(temp_dick/2,temp_dick)     & tgrdif += rand(grange,grange*2/3)
-			if arrpos('$ARGS', 'group') >= 0:        tltdif += rand(temp_dick/3,temp_dick/2)   & tgrdif += rand(grange*3/2,grange)
-			if arrpos('$ARGS', 'beast') >= 0:        tltdif += rand(temp_dick/5,temp_dick/3)   & tgrdif += rand(grange/2,grange*3/2)
-			if arrpos('$ARGS', 'maso') >= 0:         tltdif += rand(temp_dick/7,temp_dick/4)   & tgrdif += rand(grange/3,grange/2)
-			if arrpos('$ARGS', 'prostitution') >= 0: tltdif += rand(temp_dick/8,temp_dick/5)   & tgrdif += rand(grange/4,grange/3)
-			if arrpos('$ARGS', 'unknown') >= 0:      tltdif += rand(temp_dick/10,temp_dick/7)  & tgrdif += rand(grange/5,grange/4)
-			if arrpos('$ARGS', 'bound') >= 0:        tltdif += rand(temp_dick/11,temp_dick/9)  & tgrdif += rand(grange/6,grange/5)
-			if arrpos('$ARGS', 'sub') >= 0:          tltdif += rand(temp_dick/14,temp_dick/11) & tgrdif += rand(grange/7,grange/6)
+			if arrpos('$ARGS', 'rape') >= 0:             tltdif += rand(temp_dick/8,temp_dick/5)   & tgrdif += rand(grange/4,grange/2)
+			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 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 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)
 			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
 		end
 		if pcs_throat*3 < temp_dick:pcs_throat += 1
 	elseif $ARGS[0] = 'dildo_suck':
 		count['dildo_suck'] = 1
 		stim['act'] = 30
 		if arrpos('$ARGS', 'deepthroat') >= 0:
-			if pcs_throat < temp_dick:pcs_throat += 1
-			if pcs_throat*2 < temp_dick:pcs_throat += 1
 			tgrdif = grange - pcs_throat
 			tltdif = temp_dick - pcs_throat
 			tltdif = tltdif / (temp_silavag+1)
@@ -658,21 +753,29 @@ if $ARGS[0] ! 'end' and $ARGS[0] ! 'checks' and $ARGS[0] ! 'count' and $ARGS[0]
 			stim['act'] = 80 - (iif(tltdif>0,tltdif,-tltdif) + iif(tgrdif >0,tgrdif,-tgrdif)) + temp_silavag*8
 			if tgrdif < 0: tgrdif = 0
 			if tltdif < 0: tltdif = 0
-			!! rough sex always gives pain
-			if arrpos('$ARGS', 'rape') >= 0:         tltdif += rand(temp_dick,temp_dick*2)     & tgrdif += rand(grange*2,grange*3)
-			if arrpos('$ARGS', 'rough') >= 0:        tltdif += rand(temp_dick,temp_dick*3/2)   & tgrdif += rand(grange*2/3,grange*2)
-			if arrpos('$ARGS', 'gangbang') >= 0:     tltdif += rand(temp_dick/2,temp_dick)     & tgrdif += rand(grange,grange*2/3)
-			if arrpos('$ARGS', 'group') >= 0:        tltdif += rand(temp_dick/3,temp_dick/2)   & tgrdif += rand(grange*3/2,grange)
-			if arrpos('$ARGS', 'beast') >= 0:        tltdif += rand(temp_dick/5,temp_dick/3)   & tgrdif += rand(grange/2,grange*3/2)
-			if arrpos('$ARGS', 'maso') >= 0:         tltdif += rand(temp_dick/7,temp_dick/4)   & tgrdif += rand(grange/3,grange/2)
-			if arrpos('$ARGS', 'prostitution') >= 0: tltdif += rand(temp_dick/8,temp_dick/5)   & tgrdif += rand(grange/4,grange/3)
-			if arrpos('$ARGS', 'unknown') >= 0:      tltdif += rand(temp_dick/10,temp_dick/7)  & tgrdif += rand(grange/5,grange/4)
-			if arrpos('$ARGS', 'bound') >= 0:        tltdif += rand(temp_dick/11,temp_dick/9)  & tgrdif += rand(grange/6,grange/5)
-			if arrpos('$ARGS', 'sub') >= 0:          tltdif += rand(temp_dick/14,temp_dick/11) & tgrdif += rand(grange/7,grange/6)
+			if arrpos('$ARGS', 'rape') >= 0:             tltdif += rand(temp_dick/8,temp_dick/5)   & tgrdif += rand(grange/4,grange/2)
+			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 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 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)
 			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
 		end
 		if pcs_throat*3 < temp_dick:pcs_throat += 1
 	elseif $ARGS[0] = 'footjob':
+		pcs_sweat += rand(0,2)*max(1,ARGS[1]/5)
 		if temp_unaware = 1:
 			count['hidden_footjob'] = 1
 		else
@@ -681,6 +784,7 @@ if $ARGS[0] ! 'end' and $ARGS[0] ! 'checks' and $ARGS[0] ! 'count' and $ARGS[0]
 		stim['act'] = 25
 		stim_foot = 1
 	elseif $ARGS[0] = 'titjob':
+		pcs_sweat += rand(3,5)*max(1,ARGS[1]/5)
 		if temp_unaware = 1:
 			count['hidden_titjob'] = 1
 		else
@@ -689,11 +793,13 @@ if $ARGS[0] ! 'end' and $ARGS[0] ! 'checks' and $ARGS[0] ! 'count' and $ARGS[0]
 		stim['act'] = 45
 		stim_titjob = 1
 	elseif $ARGS[0] = 'BDSM_give':
+		pcs_sweat += rand(0,3)*max(1,ARGS[1]/5)
 		count['BDSM_give'] = 1
 		stim['act'] = 20
 	elseif $ARGS[0] = 'pee_give':
 		count['pee_give'] = 1
 		stim['act'] = 10
+		last_pee = totminut
 	end
 
 	!! anal acts
@@ -702,18 +808,44 @@ if $ARGS[0] ! 'end' and $ARGS[0] ! 'checks' and $ARGS[0] ! 'count' and $ARGS[0]
 			stim['act'] += 20
 		end
 	end
-
-	if arrpos('$ARGS', 'rape') >= 0:         pcs_hairbsh = iif(rand(30, pcs_hairlng)>30,-1,pcs_hairbsh)  & pcs_sweat += rand(0,2)*max(1,ARGS[1]/5)
-	if arrpos('$ARGS', 'rough') >= 0:        pcs_hairbsh = iif(rand(30, pcs_hairlng)>40,-1,pcs_hairbsh)  & pcs_sweat += rand(1,2)*max(1,ARGS[1]/5)
-	if arrpos('$ARGS', 'gangbang') >= 0:     pcs_hairbsh = iif(rand(30, pcs_hairlng)>50,-1,pcs_hairbsh)  & pcs_sweat += rand(2,4)*max(1,ARGS[1]/5)
-	if arrpos('$ARGS', 'group') >= 0:        pcs_hairbsh = iif(rand(30, pcs_hairlng)>75,-1,pcs_hairbsh)  & pcs_sweat += rand(1,3)*max(1,ARGS[1]/5)
-	if arrpos('$ARGS', 'beast') >= 0:        pcs_hairbsh = iif(rand(30, pcs_hairlng)>100,-1,pcs_hairbsh) & pcs_sweat += rand(0,2)*max(1,ARGS[1]/5)
-	if arrpos('$ARGS', 'maso') >= 0:         pcs_hairbsh = iif(rand(30, pcs_hairlng)>125,rand(-1,0),pcs_hairbsh) & pcs_sweat += rand(0,1)*max(1,ARGS[1]/5)
-	if arrpos('$ARGS', 'prostitution') >= 0: pcs_hairbsh = iif(rand(30, pcs_hairlng)>150,rand(-1,0),pcs_hairbsh) & pcs_sweat += rand(0,1)*max(1,ARGS[1]/5)
-	if arrpos('$ARGS', 'unknown') >= 0:      pcs_hairbsh = iif(rand(30, pcs_hairlng)>200,rand(-1,pcs_hairbsh),pcs_hairbsh)
-	if arrpos('$ARGS', 'bound') >= 0:        pcs_hairbsh = iif(rand(30, pcs_hairlng)>250,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', 'rape') >= 0:          pcs_hairbsh = iif(rand(30, pcs_hairlng)>30,-1,pcs_hairbsh)
+		if arrpos('$ARGS', 'rough') >= 0:         pcs_hairbsh = iif(rand(30, pcs_hairlng)>40,-1,pcs_hairbsh)
+		if arrpos('$ARGS', 'gangbang') >= 0:      pcs_hairbsh = iif(rand(30, pcs_hairlng)>50,-1,pcs_hairbsh)
+		if arrpos('$ARGS', 'group') >= 0:         pcs_hairbsh = iif(rand(30, pcs_hairlng)>70,-1,pcs_hairbsh)
+		if arrpos('$ARGS', 'BDSM') >= 0:          pcs_hairbsh = iif(rand(30, pcs_hairlng)>80,-1,pcs_hairbsh)
+		if arrpos('$ARGS', 'beast') >= 0:         pcs_hairbsh = iif(rand(30, pcs_hairlng)>100,-1,pcs_hairbsh)
+		if arrpos('$ARGS', 'maso') >= 0:          pcs_hairbsh = iif(rand(30, pcs_hairlng)>125,rand(-1,0),pcs_hairbsh)
+		if arrpos('$ARGS', 'prostitution') >= 0:  pcs_hairbsh = iif(rand(30, pcs_hairlng)>150,rand(-1,0),pcs_hairbsh)
+		if arrpos('$ARGS', 'unknown') >= 0:       pcs_hairbsh = iif(rand(30, pcs_hairlng)>200,rand(-1,pcs_hairbsh),pcs_hairbsh)
+		if arrpos('$ARGS', 'anal') >= 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)
+	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)
+			if arrpos('$ARGS', 'deepthroat') >= 0:
+				if arrpos('$ARGS', 'maso') >= 0:          pcs_makeup = iif(rand(pcs_makeup, pcs_makupskl/10)<3,0,pcs_makeup)
+				if arrpos('$ARGS', 'prostitution') >= 0:  pcs_makeup = iif(rand(pcs_makeup, pcs_makupskl/10)<4,0,pcs_makeup)
+				if arrpos('$ARGS', 'unknown') >= 0:       pcs_makeup = iif(rand(pcs_makeup, pcs_makupskl/10)<4,0,pcs_makeup)
+				if arrpos('$ARGS', 'bound') >= 0:         pcs_makeup = iif(rand(pcs_makeup, pcs_makupskl/10)<5,0,pcs_makeup)
+				if arrpos('$ARGS', 'sub') >= 0:           pcs_makeup = iif(rand(pcs_makeup, pcs_makupskl/10)<5,0,pcs_makeup)
+			end
+		end
+	end
+	
 	if stim['mag'] > 9: stim['mag'] = 9
 
 	if ARGS[1] > 0: minut += ARGS[1]
@@ -986,6 +1118,7 @@ if $ARGS[0] ! 'end' and $ARGS[0] ! 'checks' and $ARGS[0] ! 'count' and $ARGS[0]
 	killvar '$orgasm_txt'
 	killvar '$stim_les'
 	killvar '$stim_foot'
+	killvar 'temp_gape'
 	
 	gs 'nichUtil','onArouse',$ARGS[0]