10 Commits c8bdee28a3 ... c46531fd28

Author SHA1 Message Date
  iron_jack c46531fd28 Merge branch 'master' of https://git.tfgames.site/Kevin_Smarts/glife 3 months ago
  bgkjdgbizgblzdgbr b02a42db79 Merge branch 'master' of https://git.tfgames.site/Kevin_Smarts/glife 3 months ago
  Lusticon a5e38e3e4e Merge branch 'master' of https://git.tfgames.site/Kevin_Smarts/glife 3 months ago
  Lusticon d85eb55c49 [added] arousal pain cap 3 months ago
  bgkjdgbizgblzdgbr b0cf404875 [fixed] Misssing ' ' 3 months ago
  bgkjdgbizgblzdgbr 54903d6ab0 [fixed] Missing exit 3 months ago
  Kevin_Smarts 7832b5dda1 [fixed] Hardcoding goto variables to reduce errors 3 months ago
  Lusticon 1c39304de3 Merge branch 'master' of https://git.tfgames.site/Kevin_Smarts/glife 3 months ago
  Lusticon da6727f8df [fixed] arousal over use workaround fix 3 months ago
  Lusticon 70a5ab3166 [fixed] arousal over use workaround 3 months ago
4 changed files with 227 additions and 179 deletions
  1. 208 161
      locations/arousal.qsrc
  2. 17 17
      locations/ballet_secrets.qsrc
  3. 1 1
      locations/katja_chat.qsrc
  4. 1 0
      locations/uni_lessonsev1.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'

+ 17 - 17
locations/ballet_secrets.qsrc

@@ -22,9 +22,9 @@ if $ARGS[0] = 'init':
   if week < 7 and hour >= 9 and hour <= 17:
     'You enter the shop and greeted by a riot of displays showcasing ballet and other dance equipment. A woman is sewing something in the corner and glances at you before continuing.'
     if balletqw['ballet_secrets'] = 1:
-      act 'Approach the woman': gt $loc, 'first_visit'
+      act 'Approach the woman': gt 'ballet_secrets', 'first_visit'
     else
-      act 'Enter studio area': gt $loc, 'reception'
+      act 'Enter studio area': gt 'ballet_secrets', 'reception'
       !! act 'Talk to assistant':
       !! act'Look at equipment'
       !! act 'look at dance wear'
@@ -33,7 +33,7 @@ if $ARGS[0] = 'init':
   else
     'You look at the shop window and realise it''s closed, there is a security door to the left of you that allows you access the studio areas if you are a member.'
     if balletqw['membership'] >= daystart:
-      act 'Swipe membership card': gt $loc, 'reception'
+      act 'Swipe membership card': gt 'ballet_secrets', 'reception'
     end
   end
 
@@ -60,7 +60,7 @@ if $ARGS[0] = 'first_visit':
   '"Of course as you are aware the school is sponsoring these costs, but only for the first year she says and you will need to manage your own equipment after this.", Madame Pushkina advises.'
   '"Is there anything else you neeed? No? Good, I will see you again in two weeks for your final shoe fitting. I would like to extend my congratulations and wish you a successful career Ms. <<$pcs_lastname>>."'
   act 'Leave': gt 'pushkin_sq'
-  act 'Return to shop': gt $loc, 'init'
+  act 'Return to shop': gt 'ballet_secrets', 'init'
   
 
 end
@@ -83,18 +83,18 @@ if $ARGS[0] = 'reception':
   'There is a <a href="exec: gt ''food'', ''watercooler''">drinking fountain</a> near the doors to the gym hall to refill your water bottle.'
  
 
-  act 'Return to shop': gt $loc, 'init'
-  act 'Changing rooms': gt $loc, 'changing_room'
+  act 'Return to shop': gt 'ballet_secrets', 'init'
+  act 'Changing rooms': gt 'ballet_secrets', 'changing_room'
   !! if membership not active:
   if balletqw['membership'] = 0 or balletqw['membership'] < daystart:
-    act 'Discuss membership': gt $loc, 'enrol'
+    act 'Discuss membership': gt 'ballet_secrets', 'enrol'
   elseif hour <= 15 and $clothingworntype = 'danilovich_outfits' and $shoeworntype = 'danilovich' and pcs_stam >= stammax / 5 and pcs_energy >= 20:
     !! link to services:
     !! if membership active
-    !! act 'Attend Physio': gt $loc, 'physio'
-    !! act 'Attend a gymnastics class.': gt $loc, 'gymnastics_courses'
-    !! act 'Attend a dance class': gt $loc, 'ballet_courses'
-    act 'Attend a yoga class': gt $loc, 'yoga_courses'
+    !! act 'Attend Physio': gt 'ballet_secrets', 'physio'
+    !! act 'Attend a gymnastics class.': gt 'ballet_secrets', 'gymnastics_courses'
+    !! act 'Attend a dance class': gt 'ballet_secrets', 'ballet_courses'
+    act 'Attend a yoga class': gt 'ballet_secrets', 'yoga_courses'
   elseif hour >= 16:
     'All the evening classes have started today, you need to be here before 16:00 to ensure you can attend.'
   end
@@ -116,7 +116,7 @@ if $ARGS[0]= 'enrol':
   elseif balletqw['membership'] ! 0:
     'You approach the reception to renew your membership.'
   end
-  act 'Return to the studio entrance': gt $loc, 'reception'
+  act 'Return to the studio entrance': gt 'ballet_secrets', 'reception'
 
   'The gym offers a weekly or monthly subscription for of 1,500<b> ₽</b>  or 5,000<b> ₽</b> respectively to use the facilities with some courses included. Physio appointments are charged seperately.'
   'The subscriptions includes classes in gymnastics, yoga and introductory ballet. For advanced classes there is an additional instructor charge. A physical trainer is on hand to assist at all times if you so need one.'
@@ -141,7 +141,7 @@ if $ARGS[0] = 'changing_room':
   '<center><h2>Changing Room</h2></center>'
 	'<center><img <<$set_imgh>> src="images/locations/city/citycenter/gym/locker.jpg"></center>'
 
-  act 'Return to the studio reception': gt $loc, 'reception'
+  act 'Return to the studio reception': gt 'ballet_secrets', 'reception'
   if mc_inventory['shampoo'] > 0:
 		act 'Take a shower (0:15)':
 			cla
@@ -157,7 +157,7 @@ if $ARGS[0] = 'changing_room':
 			'You go into the bathroom and turn on the shower. You lather your body and wash in the shower.'
 			if deodorant_on = 1: gs 'sweat', 'remove_deo' & '<br>Your deodorant gets washed away in the shower.'
 
-			act 'Get out of the shower':gt $loc, 'changing_room'
+			act 'Get out of the shower':gt 'ballet_secrets', 'changing_room'
 
 		end
 	else
@@ -186,7 +186,7 @@ if $ARGS[0] = 'changing_room':
 			gs 'sweat', 'deo'
 			iif(func('body_din','pregnancyVisibility') = 1, '<center><img <<$set_imgh>> src="images/shared/home/bathroom/deodorant_preg.jpg"></center>', '<center><img <<$set_imgh>> src="images/shared/home/bathroom/deodorant.jpg"></center>')
 			'You apply deodorant to your armpits. It will keep you feeling fresh and clean for longer.'
-			act 'Continue': menu_off = 0 & gt $loc, $loc_arg
+			act 'Continue': menu_off = 0 & gt 'ballet_secrets', 'changing_room'
 		end
 	end
 	dynamic $tampon
@@ -272,12 +272,12 @@ if $ARGS[0] = 'yoga_courses':
       gs 'pain', 2, 'chest', 'stretch'
 
       killvar 'lesson_tier'
-      act 'Return to the studio reception': gt $loc, 'reception'
+      act 'Return to the studio reception': gt 'ballet_secrets', 'reception'
     end
   else 
     'There is another fitness class in progress and no more yoga sessions today.'
   end
-  act 'Return to the studio reception': gt $loc, 'reception'
+  act 'Return to the studio reception': gt 'ballet_secrets', 'reception'
 end 
 
 !! Shopping

+ 1 - 1
locations/katja_chat.qsrc

@@ -248,7 +248,7 @@ if $ARGS[0] = 'first_meet':
 	'<center><img <<$set_imgh>> src="images/characters/shared/headshots_main/big14.jpg"></center>'
 	'"Are you studying at uni?" you ask.'
 	'"Yes, I''m '+iif(year = 2017 and month < 9, 'going to study', 'studying')+' to become a teacher," she says. "What about you. Are you also studying here?"'
-	'"I''m '+iif( $university['enrolled_in'] = 'teaching_studies', ' also going to study to become a teacher,', ' '+iif(university[student] = 1, 'in the '+func('uni_programs', 'program_name')+' program', 'not studying at the university,')+',')+'" you reply.'
+	'"I''m'+iif( $university['enrolled_in'] = 'teaching_studies', ' also going to study to become a teacher,', ' '+iif(university['student'] = 1, 'in the '+func('uni_programs', 'program_name')+' program', 'not studying at the university,')+',')+'" you reply.'
 	act 'Talk about something else': gt 'katja_chat', 'chat1'
 end	
 

+ 1 - 0
locations/uni_lessonsev1.qsrc

@@ -183,6 +183,7 @@ if $ARGS[0] = 'patient_care':
 	elseif temp = 2:
 		'<center><img <<$set_imgh>> src="images/locations/city/island/university/classroom/teaching_methods/girl_goofing.jpg"></center>'
 		'Today''s lecture is rather boring, so you look around to see if anything exciting is happening. All you see is Vicky making a funny face at you when you glance in her direction.'
+		act 'Wait for the end of the lesson': gt 'uni_lessons', 'short_break'
 	elseif temp = 3:
 		'<center><img <<$set_imgh>> src="images/locations/city/island/university/classroom/general_education/girls_dryhump.jpg"></center>'
 		'During the halftime break, you relax as the class was pretty mentally exhausting and look around to see how others are handling all the information you''re getting bombarded with. The twins start giggling before one of them grabs the other, bends her over the table and starts humping her hard and rough.'