Browse Source

Merge branch 'master' of https://git.tfgames.site/Kevin_Smarts/glife

bgkjdgbizgblzdgbr 3 months ago
parent
commit
b02a42db79
1 changed files with 208 additions and 161 deletions
  1. 208 161
      locations/arousal.qsrc

+ 208 - 161
locations/arousal.qsrc

@@ -88,6 +88,11 @@ temp_text = 0
 !!orgasms restricted to direct stimulation using this flag
 killvar 'orgasm_flag'
 
+!!workaround over use
+if $ARGS[0] ! 'auto_lube' and $ARGS[0] ! 'checks' and $ARGS[0] ! 'count' and $ARGS[0] ! 'count2':
+	if arousal_overcall = 1 and $arousal_overcall ! $ARGS[0]+$ARGS[2]+$ARGS[3]+$ARGS[4]+$ARGS[5]+$ARGS[6]+$ARGS[7]+$ARGS[8]: killvar 'arousal_overcall'
+end
+
 if $ARGS[0] ! 'end' and $ARGS[0] ! 'checks' and $ARGS[0] ! 'count' and $ARGS[0] ! 'count2':
 
 	if arrpos('$ARGS', 'unaware') >= 0: temp_unaware = 1
@@ -205,41 +210,45 @@ if $ARGS[0] ! 'end' and $ARGS[0] ! 'checks' and $ARGS[0] ! 'count' and $ARGS[0]
 		!! ARGS[4] grange of inserted object
 		!! ARGS[5] skill (0-2) aka silavag
 		!! ARGS[6] stimulation time
-		!! length and girth abilities of hole are not also separated
-		!! but I suppose that they are related although it is not propable
-		!! we can estimate difference in girth and length
-		grdif = (ARGS[4] - ARGS[0])/2
-		ltdif = (ARGS[3] - ARGS[0])/4
-		!! painful intercourse
-		if pain_coeff > rand(0,2):
-			grdif += rand(pain_coeff/2, pain_coeff)
-			ltdif += rand(pain_coeff/2, pain_coeff)
-		end
-		!! in pain, compensated with lube
-		if ARGS[2] > 0:
-			if ARGS[2] > rand(ARGS[1]/2, ARGS[1]): grdif += rand(ARGS[2] / max(1,ARGS[1]/2), ARGS[2] / max(1,ARGS[1]/4))
-			if ARGS[2] > rand(ARGS[1]/2, ARGS[1]): ltdif += rand(ARGS[2] / max(1,ARGS[1]/2), ARGS[2] / max(1,ARGS[1]/4))
-		end
-		!! lube can compensate the difference a bit, or make it worse if there is no lube at all
-		if ARGS[1] > 0:
-			grdif -= rand(ARGS[1]/2, ARGS[1])
-			ltdif -= rand(ARGS[1]/4, ARGS[1]/2)
-		else
-			grdif += max(1, rand(grdif/4, grdif/2)) / max(1,ARGS[5]+1)
-			ltdif += max(1, rand(ltdif/6, ltdif/4)) / max(1,ARGS[5]+1)
-		end
-		!! when skilled, it does not harm PC
-		if ARGS[5] > 0 and ltdif > 0: ltdif /= ARGS[5]+1
-		!! if there is any discomfort, check intercourse duration, compensated by skill
-		if stim_time > 1:
-			if grdif > rand(stim_time): grdif += rand(stim_time / (max(1,ARGS[5])*5), stim_time / (max(1,ARGS[5])*3))
-			if ltdif > rand(stim_time): ltdif += rand(stim_time / (max(1,ARGS[5])*5), stim_time / (max(1,ARGS[5])*3))
-		end
-
-		!! min\max
-		grdif = max(0, grdif / max(1, (ARGS[0]/6)))
-		ltdif = max(0, ltdif / max(1, (ARGS[0]/6)))
+		grdif = 0
+		ltdif = 0
+		!! cap pain to vitality
+		if ARGS[2] < (120 - pcs_vital)/2:
+			!! length and girth abilities of hole are not also separated
+			!! but I suppose that they are related although it is not propable
+			!! we can estimate difference in girth and length
+			grdif = (ARGS[4] - ARGS[0])/2
+			ltdif = (ARGS[3] - ARGS[0])/4
+			!! painful intercourse
+			if pain_coeff > rand(0,2):
+				grdif += rand(pain_coeff/2, pain_coeff)
+				ltdif += rand(pain_coeff/2, pain_coeff)
+			end
+			!! in pain, compensated with lube
+			if ARGS[2] > 0:
+				if ARGS[2] > rand(ARGS[1]/2, ARGS[1]): grdif += rand(ARGS[2] / max(1,ARGS[1]/2), ARGS[2] / max(1,ARGS[1]/4))
+				if ARGS[2] > rand(ARGS[1]/2, ARGS[1]): ltdif += rand(ARGS[2] / max(1,ARGS[1]/2), ARGS[2] / max(1,ARGS[1]/4))
+			end
+			!! lube can compensate the difference a bit, or make it worse if there is no lube at all
+			if ARGS[1] > 0:
+				grdif -= rand(ARGS[1]/2, ARGS[1])
+				ltdif -= rand(ARGS[1]/4, ARGS[1]/2)
+			else
+				grdif += max(1, rand(grdif/4, grdif/2)) / max(1,ARGS[5]+1)
+				ltdif += max(1, rand(ltdif/6, ltdif/4)) / max(1,ARGS[5]+1)
+			end
+			!! when skilled, it does not harm PC
+			if ARGS[5] > 0 and ltdif > 0: ltdif /= ARGS[5]+1
+			!! if there is any discomfort, check intercourse duration, compensated by skill
+			if stim_time > 1:
+				if grdif > rand(stim_time): grdif += rand(stim_time / (max(1,ARGS[5])*5), stim_time / (max(1,ARGS[5])*3))
+				if ltdif > rand(stim_time): ltdif += rand(stim_time / (max(1,ARGS[5])*5), stim_time / (max(1,ARGS[5])*3))
+			end
 
+			!! min\max
+			grdif = max(0, grdif / max(1, (ARGS[0]/6)))
+			ltdif = max(0, ltdif / max(1, (ARGS[0]/6)))
+		end
 		!{ 'hole size <<ARGS[0]>>; length: <<ARGS[3]>>; grange: <<ARGS[4]>>; hole slippery: <<ARGS[1]>>; current pain: <<ARGS[2]>>; stim_time: <<stim_time>>; skill: <<ARGS[5]>>; grdif: <<grdif>>; ltdif: <<ltdif>>' }
 	}
 
@@ -328,6 +337,7 @@ if $ARGS[0] ! 'end' and $ARGS[0] ! 'checks' and $ARGS[0] ! 'count' and $ARGS[0]
 			stim['mag'] += 1
 			stim['act'] = 80
 		end
+		if ARGS[1] > 0 and cumvol[3] > rand(pcs_ass/2,pcs_ass): gs 'cum_manage', 'cum_decay', rand(2,5)*max(1,stim_time/5)
 		if pain_coeff > 0:gs 'pain', rand(pain_coeff), 'asshole', 'stretch'
 	elseif $ARGS[0] = 'anal_fist':
 		orgasm_flag['anal'] = 1
@@ -338,11 +348,14 @@ if $ARGS[0] ! 'end' and $ARGS[0] ! 'checks' and $ARGS[0] ! 'count' and $ARGS[0]
 		elseif pcs_traits['buttslut_lvl'] >= 2:
 			stim['act'] = 70
 		end
-		dynamic $get_hole_pain, pcs_ass, anal_slip, pain['asshole'], rand(15,20), rand(35,40), rand(0,2)
-		stim['act'] -= grdif + ltdif
-		gs 'pain', grdif+ltdif, 'asshole', 'stretch'
-		if grdif + ltdif > agape*2 + pcs_ass/2: agape += 1
-		pcs_ass += 1
+		if arousal_overcall = 0:
+			dynamic $get_hole_pain, pcs_ass, anal_slip, pain['asshole'], rand(15,20), rand(35,40), rand(0,2)
+			stim['act'] -= grdif + ltdif
+			gs 'pain', grdif+ltdif, 'asshole', 'stretch'
+			if grdif + ltdif > agape*2 + pcs_ass/2: agape += 1
+			pcs_ass += 1
+		end
+		if ARGS[1] > 0 and cumvol[3] > rand(pcs_ass/2,pcs_ass): gs 'cum_manage', 'cum_decay', rand(15,20)*max(1,stim_time/5)
 	elseif $ARGS[0] = 'self_fisting_anal':
 		orgasm_flag['anal'] = 1
 		count['self_fisting_anal'] = 1
@@ -354,11 +367,14 @@ if $ARGS[0] ! 'end' and $ARGS[0] ! 'checks' and $ARGS[0] ! 'count' and $ARGS[0]
 		elseif pcs_traits['buttslut_lvl'] >= 2:
 			stim['act'] = 70
 		end
-		dynamic $get_hole_pain, pcs_ass, anal_slip, pain['asshole'], rand(10,15), rand(30,35), 2
-		stim['act'] -= grdif + ltdif
-		gs 'pain', grdif+ltdif, 'asshole', 'stretch'
-		if grdif + ltdif > agape*2 + pcs_ass/2: agape += 1
-		pcs_ass += 1
+		if arousal_overcall = 0:
+			dynamic $get_hole_pain, pcs_ass, anal_slip, pain['asshole'], rand(10,15), rand(30,35), 2
+			stim['act'] -= grdif + ltdif
+			gs 'pain', grdif+ltdif, 'asshole', 'stretch'
+			if grdif + ltdif > agape*2 + pcs_ass/2: agape += 1
+			pcs_ass += 1
+		end
+		if ARGS[1] > 0 and cumvol[3] > rand(pcs_ass/2,pcs_ass): gs 'cum_manage', 'cum_decay', rand(10,15)*max(1,stim_time/5)
 	elseif $ARGS[0] = 'anal_vibe':
 		orgasm_flag['anal'] = 1
 		count['anal_vibe'] = 1
@@ -371,6 +387,7 @@ if $ARGS[0] ! 'end' and $ARGS[0] ! 'checks' and $ARGS[0] ! 'count' and $ARGS[0]
 			stim['mag'] += 2
 			stim['act'] = 90
 		end
+		if ARGS[1] > 0 and cumvol[3] > rand(pcs_ass/2,pcs_ass): gs 'cum_manage', 'cum_decay', rand(5,10)*max(1,stim_time/5)
 	elseif $ARGS[0] = 'anal':
 		pcs_sweat += rand(1,4)*max(1,stim_time/5)
 		stat['last_sex_day'] = daystart
@@ -385,39 +402,40 @@ 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 vaginal_slip < max(1, anal_slip/2):
-			if cumloc[3] > 0: vaginal_slip += rand(cumvol[3]/10, cumvol[3]/5)
+		if arousal_overcall = 0:
+			!! add some lube for future sex type changes
+			if vaginal_slip < max(1, anal_slip/2) and cumloc[3] > 0: vaginal_slip += rand(cumvol[3]/10, cumvol[3]/5)
+			dynamic $get_hole_pain, pcs_ass, anal_slip, pain['asshole'], temp_dick, grange, temp_silavag
+			stim['act'] = 80 - grdif + ltdif + temp_silavag*8
+			!! the pain lover the pleasure
+			gs 'pain', grdif + ltdif, 'asshole', 'stretch'
+			!! calculate the harm
+			if grdif + ltdif > agape*2 + pcs_ass/2: agape += 1
+			if pcs_ass < temp_dick:pcs_ass += 1
+			if pcs_ass*2 < temp_dick:pcs_ass += 1
 		end
-		dynamic $get_hole_pain, pcs_ass, anal_slip, pain['asshole'], temp_dick, grange, temp_silavag
-		stim['act'] = 80 - grdif + ltdif + temp_silavag*8
-		!! the pain lover the pleasure
-		gs 'pain', grdif + ltdif, 'asshole', 'stretch'
-		!! calculate the harm
-		if grdif + ltdif > agape*2 + pcs_ass/2: agape += 1
 		!! force cum leak
 		if ARGS[1] > 0 and cumvol[3] > rand(pcs_ass/2,pcs_ass): gs 'cum_manage', 'cum_decay', ((temp_dick+grange)/2)*max(1,stim_time/5)
-		if pcs_ass < temp_dick:pcs_ass += 1
-		if pcs_ass*2 < temp_dick:pcs_ass += 1
 	elseif $ARGS[0] = 'anal_dildo':
 		pcs_sweat += rand(0,2)*max(1,stim_time/5)
 		orgasm_flag['anal'] = 1
 		count['anal_dildo'] = 1
 		!! the same as for 'anal'
-		if vaginal_slip < max(1, anal_slip/2):
-			if cumloc[3] > 0: vaginal_slip += rand(cumvol[3]/10, cumvol[3]/5)
-		end
-		dynamic $get_hole_pain, pcs_ass, anal_slip, pain['asshole'], temp_dick, grange, temp_silavag
-		stim['act'] = 80 - grdif + ltdif + temp_silavag*8
 		if pcs_traits['buttslut_lvl'] = 1:
 			stim['act'] += 10
 		elseif pcs_traits['buttslut_lvl'] >= 2:
 			stim['mag'] += 1
 		end
-		gs 'pain', grdif + ltdif, 'asshole', 'stretch'
-		if grdif + ltdif > agape*2 + pcs_ass/2: agape += 1
+		if arousal_overcall = 0:
+			if vaginal_slip < max(1, anal_slip/2) and cumloc[3] > 0: vaginal_slip += rand(cumvol[3]/10, cumvol[3]/5)
+			dynamic $get_hole_pain, pcs_ass, anal_slip, pain['asshole'], temp_dick, grange, temp_silavag
+			stim['act'] = 80 - grdif + ltdif + temp_silavag*8
+			gs 'pain', grdif + ltdif, 'asshole', 'stretch'
+			if grdif + ltdif > agape*2 + pcs_ass/2: agape += 1
+			if pcs_ass < temp_dick:pcs_ass += 1
+			if pcs_ass*2 < temp_dick:pcs_ass += 1
+		end
 		if ARGS[1] > 0 and cumvol[3] > rand(pcs_ass/2,pcs_ass): gs 'cum_manage', 'cum_decay', ((temp_dick+grange)/2)*max(1,stim_time/5)
-		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,stim_time/5)
 		stat['last_sex_day'] = daystart
@@ -429,59 +447,62 @@ if $ARGS[0] ! 'end' and $ARGS[0] ! 'checks' and $ARGS[0] ! 'count' and $ARGS[0]
 			stim['mag'] += 1
 		end
 		!! the same as for 'anal'
-		if vaginal_slip < max(1, anal_slip/2):
-			if cumloc[3] > 0: vaginal_slip += rand(cumvol[3]/10, cumvol[3]/5)
+		if arousal_overcall = 0:
+			if vaginal_slip < max(1, anal_slip/2) and cumloc[3] > 0: vaginal_slip += rand(cumvol[3]/10, cumvol[3]/5)
+			dynamic $get_hole_pain, pcs_ass, anal_slip, pain['asshole'], temp_dick, grange, temp_silavag
+			stim['act'] = 80 - grdif + ltdif + temp_silavag*8
+			gs 'pain', grdif + ltdif, 'asshole', 'stretch'
+			if grdif + ltdif > agape*2 + pcs_ass/2: agape += 1
+			if pcs_ass < temp_dick:pcs_ass += 1
+			if pcs_ass*2 < temp_dick:pcs_ass += 1
 		end
-		dynamic $get_hole_pain, pcs_ass, anal_slip, pain['asshole'], temp_dick, grange, temp_silavag
-		stim['act'] = 80 - grdif + ltdif + temp_silavag*8
-		gs 'pain', grdif + ltdif, 'asshole', 'stretch'
-		if grdif + ltdif > agape*2 + pcs_ass/2: agape += 1
-		!! force cum leak
 		if ARGS[1] > 0 and cumvol[3] > rand(pcs_ass/2,pcs_ass): gs 'cum_manage', 'cum_decay', ((temp_dick+grange)/2)*max(1,stim_time/5)
-		if pcs_ass < temp_dick:pcs_ass += 1
-		if pcs_ass*2 < temp_dick:pcs_ass += 1
 	elseif $ARGS[0] = 'vaginal_finger':
 		orgasm_flag['vaginal'] = 1
 		count['vaginal_finger'] = 1
 		stim['mag'] += 1
 		stim['act'] = 80
 		if pain_coeff > 0:gs 'pain', rand(pain_coeff), 'vaginal', 'stretch'
+		if ARGS[1] > 0 and cumvol[0] > rand(pcs_vag/2,pcs_vag): gs 'cum_manage', 'cum_decay', rand(2,5)*max(1,stim_time/5)
 	elseif $ARGS[0] = 'vaginal_fist':
 		pcs_sweat += rand(0,1)*max(1,stim_time/5)
 		orgasm_flag['vaginal'] = 1
 		count['vaginal_fist'] = 1
 		stim['act'] = 70
-		dynamic $get_hole_pain, pcs_vag, vaginal_slip, pain['vaginal'], rand(15,20), rand(35,40), rand(0,2)
-		stim['act'] -= grdif + ltdif
-		gs 'pain', grdif+ltdif, 'vaginal', 'stretch'
-		gs 'pain', rand(grdif), 'labia', 'stretch'
-		if grdif + ltdif > vgape*2 + pcs_vag/2: vgape += 1
-		pcs_vag += 1
+		if arousal_overcall = 0:
+			dynamic $get_hole_pain, pcs_vag, vaginal_slip, pain['vaginal'], rand(15,20), rand(35,40), rand(0,2)
+			stim['act'] -= grdif + ltdif
+			gs 'pain', grdif+ltdif, 'vaginal', 'stretch'
+			gs 'pain', rand(grdif), 'labia', 'stretch'
+			if grdif + ltdif > vgape*2 + pcs_vag/2: vgape += 1
+			pcs_vag += 1
+		end
+		!! force cum leak
+		if ARGS[1] > 0 and cumvol[0] > rand(pcs_vag/2,pcs_vag): gs 'cum_manage', 'cum_decay', rand(15,20)*max(1,stim_time/5)
 	elseif $ARGS[0] = 'self_fisting':
 		orgasm_flag['vaginal'] = 1
 		count['self_fisting'] = 1
 		!! add lube from saliva
 		if vaginal_slip < max(1, pcs_hydra/20): vaginal_slip = max(1, pcs_hydra/20)
 		stim['act'] = 70
-		dynamic $get_hole_pain, pcs_vag, vaginal_slip, pain['vaginal'], rand(10,15), rand(30,35), 2
-		stim['act'] -= grdif + ltdif
-		gs 'pain', grdif+ltdif, 'vaginal', 'stretch'
-		gs 'pain', rand(grdif), 'labia', 'stretch'
-		if grdif + ltdif > vgape*2 + pcs_vag/2: vgape += 1
-		pcs_vag += 1
+		if arousal_overcall = 0:
+			dynamic $get_hole_pain, pcs_vag, vaginal_slip, pain['vaginal'], rand(10,15), rand(30,35), 2
+			stim['act'] -= grdif + ltdif
+			gs 'pain', grdif+ltdif, 'vaginal', 'stretch'
+			gs 'pain', rand(grdif), 'labia', 'stretch'
+			if grdif + ltdif > vgape*2 + pcs_vag/2: vgape += 1
+			pcs_vag += 1
+		end
+		if ARGS[1] > 0 and cumvol[0] > rand(pcs_vag/2,pcs_vag): gs 'cum_manage', 'cum_decay', rand(10,15)*max(1,stim_time/5)
 	elseif $ARGS[0] = 'vaginal_vibe':
 		orgasm_flag['vaginal'] = 1
 		count['vaginal_vibe'] = 1
 		stim['mag'] += 2
 		stim['act'] = 90
+		if ARGS[1] > 0 and cumvol[0] > rand(pcs_vag/2,pcs_vag): gs 'cum_manage', 'cum_decay', rand(5,10)*max(1,stim_time/5)
 	elseif $ARGS[0] = 'vaginal':
 		pcs_sweat += rand(1,3)*max(1,stim_time/5)
 		orgasm_flag['vaginal'] = 1
-		!! add anal lube from vaginal juices
-		if anal_slip < max(1, vaginal_slip/2):
-			anal_slip = max(1, vaginal_slip/rand(2,3))
-			if cumloc[0] > 0: anal_slip += rand(cumvol[0]/15, cumvol[0]/10)
-		end
 		!! pre-cum check
 		if rand(0,120) < ARGS[1]: cumprecheck = 1 & gs 'cum_manage'
 		if temp_unaware = 1:
@@ -499,38 +520,47 @@ 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
-		dynamic $get_hole_pain, pcs_vag, vaginal_slip, pain['vaginal'], temp_dick, grange, temp_silavag
-		stim['act'] = 80 - grdif + ltdif + temp_silavag*8
-		!! the pain lover the pleasure
-		gs 'pain', grdif+ltdif, 'vaginal', 'stretch'
-		if temp_dick/max(1, temp_silavag) > rand(pcs_vag/2,pcs_vag): gs 'pain', rand(ltdif), 'cervix', 'shock'
-		if grange/max(1, temp_silavag)    > rand(pcs_vag/2,pcs_vag): gs 'pain', rand(grdif), 'labia', 'stretch'
-		if pain_coeff > 0: gs 'pain', rand(pain_coeff)/5, 'clitoris', 'hit'
-		!! calculate the harm
-		if grdif + ltdif > vgape*2 + pcs_vag/2: vgape += 1
+		if arousal_overcall = 0:
+			!! add anal lube from vaginal juices
+			if anal_slip < max(1, vaginal_slip/2):
+				anal_slip = max(1, vaginal_slip/rand(2,3))
+				if cumloc[0] > 0: anal_slip += rand(cumvol[0]/15, cumvol[0]/10)
+			end
+			dynamic $get_hole_pain, pcs_vag, vaginal_slip, pain['vaginal'], temp_dick, grange, temp_silavag
+			stim['act'] = 80 - grdif + ltdif + temp_silavag*8
+			!! the pain lover the pleasure
+			gs 'pain', grdif+ltdif, 'vaginal', 'stretch'
+			if temp_dick/max(1, temp_silavag) > rand(pcs_vag/2,pcs_vag): gs 'pain', rand(ltdif), 'cervix', 'shock'
+			if grange/max(1, temp_silavag)    > rand(pcs_vag/2,pcs_vag): gs 'pain', rand(grdif), 'labia', 'stretch'
+			if pain_coeff > 0: gs 'pain', rand(pain_coeff)/5, 'clitoris', 'hit'
+			!! calculate the harm
+			if grdif + ltdif > vgape*2 + pcs_vag/2: vgape += 1
+			if pcs_vag < temp_dick:pcs_vag += 1
+			if pcs_vag*2 < temp_dick:pcs_vag += 1
+		end
 		!! force cum leak
 		if ARGS[1] > 0 and cumvol[0] > rand(pcs_vag/2,pcs_vag): gs 'cum_manage', 'cum_decay', ((temp_dick+grange)/2)*max(1,stim_time/5)
-		if pcs_vag < temp_dick:pcs_vag += 1
-		if pcs_vag*2 < temp_dick:pcs_vag += 1
 	elseif $ARGS[0] = 'vaginal_dildo':
 		pcs_sweat += rand(0,2)*max(1,stim_time/5)
 		orgasm_flag['vaginal'] = 1
 		count['vaginal_dildo'] = 1
 		stim['mag'] += 1
-		!! the same as for 'vaginal'
-		if anal_slip < max(1, vaginal_slip/2):
-			anal_slip = max(1, vaginal_slip/rand(2,3))
-			if cumloc[0] > 0: anal_slip += rand(cumvol[0]/15, cumvol[0]/10)
+		if arousal_overcall = 0:
+			!! the same as for 'vaginal'
+			if anal_slip < max(1, vaginal_slip/2):
+				anal_slip = max(1, vaginal_slip/rand(2,3))
+				if cumloc[0] > 0: anal_slip += rand(cumvol[0]/15, cumvol[0]/10)
+			end
+			dynamic $get_hole_pain, pcs_vag, vaginal_slip, pain['vaginal'], temp_dick, grange, temp_silavag
+			stim['act'] = 80 - grdif + ltdif + temp_silavag*8
+			gs 'pain', grdif + ltdif, 'vaginal', 'stretch'
+			if temp_dick/max(1, temp_silavag) > rand(pcs_vag/2,pcs_vag): gs 'pain', rand(ltdif), 'cervix', 'shock'
+			if grange/max(1, temp_silavag)    > rand(pcs_vag/2,pcs_vag): gs 'pain', rand(grdif), 'labia', 'stretch'
+			if grdif + ltdif > vgape*2 + pcs_vag/2: vgape += 1
+			if pcs_vag < temp_dick:pcs_vag += 1
+			if pcs_vag*2 < temp_dick:pcs_vag += 1
 		end
-		dynamic $get_hole_pain, pcs_vag, vaginal_slip, pain['vaginal'], temp_dick, grange, temp_silavag
-		stim['act'] = 80 - grdif + ltdif + temp_silavag*8
-		gs 'pain', grdif + ltdif, 'vaginal', 'stretch'
-		if temp_dick/max(1, temp_silavag) > rand(pcs_vag/2,pcs_vag): gs 'pain', rand(ltdif), 'cervix', 'shock'
-		if grange/max(1, temp_silavag)    > rand(pcs_vag/2,pcs_vag): gs 'pain', rand(grdif), 'labia', 'stretch'
 		if ARGS[1] > 0 and cumvol[0] > rand(pcs_vag/2,pcs_vag): gs 'cum_manage', 'cum_decay', ((temp_dick+grange)/2)*max(1,stim_time/5)
-		if grdif + ltdif > vgape*2 + pcs_vag/2: vgape += 1
-		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,stim_time/5)
 		orgasm_flag['vaginal'] = 1
@@ -545,19 +575,21 @@ if $ARGS[0] ! 'end' and $ARGS[0] ! 'checks' and $ARGS[0] ! 'count' and $ARGS[0]
 		end
 		stim['mag'] += 1
 		!! the same as for 'vaginal'
-		if anal_slip < max(1, vaginal_slip/2):
-			anal_slip = max(1, vaginal_slip/rand(2,3))
-			if cumloc[0] > 0: anal_slip += rand(cumvol[0]/15, cumvol[0]/10)
+		if arousal_overcall = 0:
+			if anal_slip < max(1, vaginal_slip/2):
+				anal_slip = max(1, vaginal_slip/rand(2,3))
+				if cumloc[0] > 0: anal_slip += rand(cumvol[0]/15, cumvol[0]/10)
+			end
+			dynamic $get_hole_pain, pcs_vag, vaginal_slip, pain['vaginal'], temp_dick, grange, temp_silavag
+			stim['act'] = 80 - grdif + ltdif + temp_silavag*8
+			gs 'pain', grdif + ltdif, 'vaginal', 'stretch'
+			if temp_dick/max(1, temp_silavag) > rand(pcs_vag/2,pcs_vag): gs 'pain', rand(ltdif), 'cervix', 'shock'
+			if grange/max(1, temp_silavag)    > rand(pcs_vag/2,pcs_vag): gs 'pain', rand(grdif), 'labia', 'stretch'
+			if grdif + ltdif > vgape*2 + pcs_vag/2: vgape += 1
+			if pcs_vag < temp_dick:pcs_vag += 1
+			if pcs_vag*2 < temp_dick:pcs_vag += 1
 		end
-		dynamic $get_hole_pain, pcs_vag, vaginal_slip, pain['vaginal'], temp_dick, grange, temp_silavag
-		stim['act'] = 80 - grdif + ltdif + temp_silavag*8
-		gs 'pain', grdif + ltdif, 'vaginal', 'stretch'
-		if temp_dick/max(1, temp_silavag) > rand(pcs_vag/2,pcs_vag): gs 'pain', rand(ltdif), 'cervix', 'shock'
-		if grange/max(1, temp_silavag)    > rand(pcs_vag/2,pcs_vag): gs 'pain', rand(grdif), 'labia', 'stretch'
-		if grdif + ltdif > vgape*2 + pcs_vag/2: vgape += 1
 		if ARGS[1] > 0 and cumvol[0] > rand(pcs_vag/2,pcs_vag): gs 'cum_manage', 'cum_decay', ((temp_dick+grange)/2)*max(1,stim_time/5)
-		if pcs_vag < temp_dick:pcs_vag += 1
-		if pcs_vag*2 < temp_dick:pcs_vag += 1
 	elseif $ARGS[0] = 'flashlite':
 		count['flashlite'] = 1
 		stim['act'] = 10
@@ -638,59 +670,64 @@ if $ARGS[0] ! 'end' and $ARGS[0] ! 'checks' and $ARGS[0] ! 'count' and $ARGS[0]
 		stim['act'] = 25
 	elseif $ARGS[0] = 'bj':
 		pcs_sweat += rand(0,1)*max(1,stim_time/5)
-		!! add lube from saliva
-		if anal_slip < max(1, pcs_hydra/20): anal_slip += max(1, pcs_hydra/20)
-		if vaginal_slip < max(1, pcs_hydra/20): vaginal_slip += max(1, pcs_hydra/20)
 		if temp_unaware = 1:
 			count['hidden_bj'] = 1
 		else
 			count['bj'] = 1
 		end
 		stim['act'] = 45
-		if pain_coeff > 0:gs 'pain', rand(pain_coeff), 'mouth', 'stretch'
-		if pcs_lipbalm > 0:
-			pcs_lipbalm = max(0, pcs_lipbalm - 1*max(1,stim_time/5))
-			if arrpos('$ARGS', 'rape') >= 0 _ 
-			or arrpos('$ARGS', 'rough') >= 0 _ 
-			or arrpos('$ARGS', 'gangbang') >= 0 _ 
-			or arrpos('$ARGS', 'beast') >= 0:
+		if arousal_overcall = 0:
+			!! add lube from saliva
+			if anal_slip < max(1, pcs_hydra/20): anal_slip += max(1, pcs_hydra/20)
+			if vaginal_slip < max(1, pcs_hydra/20): vaginal_slip += max(1, pcs_hydra/20)
+			if pain_coeff > 0:gs 'pain', rand(pain_coeff), 'mouth', 'stretch'
+			if pcs_lipbalm > 0:
 				pcs_lipbalm = max(0, pcs_lipbalm - 1*max(1,stim_time/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,stim_time/5))
+				end
 			end
+			if arrpos('$ARGS', 'deepthroat') >= 0:
+				dynamic $get_hole_pain, pcs_throat, pcs_hydra/10, pain['throat'], temp_dick, grange, temp_silavag
+				stim['act'] = 80 - ltdif + grdif + temp_silavag*8
+				gs 'pain', grdif + ltdif, 'throat', 'stretch'
+				gs 'pain', grdif, 'jaw', '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
 		end
-		if arrpos('$ARGS', 'deepthroat') >= 0:
-			dynamic $get_hole_pain, pcs_throat, pcs_hydra/10, pain['throat'], temp_dick, grange, temp_silavag
-			stim['act'] = 80 - ltdif + grdif + temp_silavag*8
-			gs 'pain', grdif + ltdif, 'throat', 'stretch'
-			gs 'pain', grdif, 'jaw', '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':
+		pcs_sweat += rand(0,1)*max(1,stim_time/10)
 		count['dildo_suck'] = 1
 		stim['act'] = 30
-		!! add lube from saliva
-		if anal_slip < max(1, pcs_hydra/20): anal_slip += max(1, pcs_hydra/20)
-		if vaginal_slip < max(1, pcs_hydra/20): vaginal_slip += max(1, pcs_hydra/20)
-		if pain_coeff > 0:gs 'pain', rand(pain_coeff), 'mouth', 'stretch'
-		if pcs_lipbalm > 0:
-			pcs_lipbalm = max(0, pcs_lipbalm - 1*max(1,stim_time/5))
-			if arrpos('$ARGS', 'rape') >= 0 _ 
-			or arrpos('$ARGS', 'rough') >= 0 _ 
-			or arrpos('$ARGS', 'gangbang') >= 0 _ 
-			or arrpos('$ARGS', 'beast') >= 0:
+		if arousal_overcall = 0:
+			!! add lube from saliva
+			if anal_slip < max(1, pcs_hydra/20): anal_slip += max(1, pcs_hydra/20)
+			if vaginal_slip < max(1, pcs_hydra/20): vaginal_slip += max(1, pcs_hydra/20)
+			if pain_coeff > 0:gs 'pain', rand(pain_coeff), 'mouth', 'stretch'
+			if pcs_lipbalm > 0:
 				pcs_lipbalm = max(0, pcs_lipbalm - 1*max(1,stim_time/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,stim_time/5))
+				end
 			end
+			if arrpos('$ARGS', 'deepthroat') >= 0:
+				dynamic $get_hole_pain, pcs_throat, pcs_hydra/10, pain['throat'], temp_dick, grange, temp_silavag
+				stim['act'] = 80 - ltdif + grdif + temp_silavag*8
+				gs 'pain', grdif + ltdif, 'throat', 'stretch'
+				gs 'pain', grdif, 'jaw', '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
 		end
-		if arrpos('$ARGS', 'deepthroat') >= 0:
-			dynamic $get_hole_pain, pcs_throat, pcs_hydra/10, pain['throat'], temp_dick, grange, temp_silavag
-			stim['act'] = 80 - ltdif + grdif + temp_silavag*8
-			gs 'pain', grdif + ltdif, 'throat', 'stretch'
-			gs 'pain', grdif, 'jaw', '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,stim_time/5)
 		if temp_unaware = 1:
@@ -1042,6 +1079,7 @@ if $ARGS[0] ! 'end' and $ARGS[0] ! 'checks' and $ARGS[0] ! 'count' and $ARGS[0]
 	killvar '$stim_les'
 	killvar '$stim_foot'
 	killvar '$get_hole_pain'
+	killvar 'grdif' & killvar 'ltdif'
 
 	gs 'nichUtil','onArouse',$ARGS[0]
 	
@@ -1049,6 +1087,14 @@ end
 
 !!-----------------------------------------------
 
+!!workaround over use
+if $ARGS[0] ! 'auto_lube' and $ARGS[0] ! 'checks' and $ARGS[0] ! 'count' and $ARGS[0] ! 'count2':
+	if arousal_overcall = 0:
+		$arousal_overcall = $ARGS[0]+$ARGS[2]+$ARGS[3]+$ARGS[4]+$ARGS[5]+$ARGS[6]+$ARGS[7]+$ARGS[8]
+		arousal_overcall = 1
+	end
+end
+
 !!This calculates the various sex stats and includes a small cooldown of stimulation so only use it once per event
 if $ARGS[0] = 'end':
 	if orgasm_buildup > 350: orgasm_buildup = 350
@@ -1130,6 +1176,7 @@ if $ARGS[0] = 'end':
 	killvar 'stim_time'
 	killvar 'pain_coeff'
 	killvar 'grdif' & killvar 'ltdif'
+	killvar 'arousal_overcall'
 
 !!Updating fetish exp for acts carried out and clearing data
 	gs 'arousal', 'checks', 'maso'