Browse Source

Merge remote-tracking branch 'Kevin-upstream/master'

netuttki 3 months ago
parent
commit
9e798c64aa
67 changed files with 1458 additions and 1044 deletions
  1. 20 1
      MakeQSP.bat
  2. 1 0
      glife.qproj
  3. 6 51
      locations/LOCA.qsrc
  4. 208 161
      locations/arousal.qsrc
  5. 17 17
      locations/ballet_secrets.qsrc
  6. 22 6
      locations/body.qsrc
  7. 16 1
      locations/body_structure.qsrc
  8. 1 1
      locations/budgetclothes.qsrc
  9. 127 16
      locations/bus.qsrc
  10. 0 4
      locations/cikl.qsrc
  11. 1 1
      locations/city_center.qsrc
  12. 1 1
      locations/city_clinic.qsrc
  13. 1 1
      locations/city_residential.qsrc
  14. 8 2
      locations/coats.qsrc
  15. 54 0
      locations/debug_tools.qsrc
  16. 1 1
      locations/din_van.qsrc
  17. 1 1
      locations/exhibitionistshop.qsrc
  18. 1 1
      locations/gschool.qsrc
  19. 1 1
      locations/gschool_break.qsrc
  20. 1 1
      locations/gschool_events.qsrc
  21. 1 1
      locations/gschool_grounds.qsrc
  22. 24 1
      locations/homes_properties_attr.qsrc
  23. 1 1
      locations/indik.qsrc
  24. 28 28
      locations/intro_city_select.qsrc
  25. 1 1
      locations/intro_functions.qsrc
  26. 15 20
      locations/intro_sg.qsrc
  27. 29 29
      locations/intro_sg_select.qsrc
  28. 43 81
      locations/intro_sg_tg.qsrc
  29. 16 4
      locations/intro_uni.qsrc
  30. 10 10
      locations/journal.qsrc
  31. 1 1
      locations/katja_chat.qsrc
  32. 1 1
      locations/kendra.qsrc
  33. 5 1
      locations/loadg.qsrc
  34. 2 0
      locations/metro.qsrc
  35. 2 2
      locations/office.qsrc
  36. 3 3
      locations/onobjsel.qsrc
  37. 1 1
      locations/pav_clinic.qsrc
  38. 1 1
      locations/pav_complex.qsrc
  39. 5 5
      locations/pav_lake.qsrc
  40. 1 1
      locations/pav_market.qsrc
  41. 21 14
      locations/pav_park_sex.qsrc
  42. 3 3
      locations/pav_parkev.qsrc
  43. 2 0
      locations/pav_train_hall.qsrc
  44. 14 8
      locations/petkaEv.qsrc
  45. 65 27
      locations/prostitution_functions.qsrc
  46. 323 323
      locations/pushkin_ballet_res.qsrc
  47. 1 1
      locations/pushkin_sq.qsrc
  48. 18 2
      locations/saveupdater.qsrc
  49. 2 2
      locations/sentence.qsrc
  50. 1 0
      locations/sex_ev_morning.qsrc
  51. 4 4
      locations/shoes.qsrc
  52. 1 1
      locations/stat.qsrc
  53. 41 8
      locations/stat_display.qsrc
  54. 6 6
      locations/therapist_hotel.qsrc
  55. 5 5
      locations/torgcentr.qsrc
  56. 1 1
      locations/transport_functions.qsrc
  57. 3 3
      locations/underwear.qsrc
  58. 1 1
      locations/underwear_bodysuits.qsrc
  59. 1 1
      locations/uni_grounds.qsrc
  60. 1 1
      locations/uni_lessons1.qsrc
  61. 1 1
      locations/uni_lessons2.qsrc
  62. 1 1
      locations/uni_lessons3.qsrc
  63. 1 1
      locations/uni_lessons4.qsrc
  64. 1 0
      locations/uni_lessonsev1.qsrc
  65. 111 127
      locations/uni_programs.qsrc
  66. 87 43
      locations/wardrobe.qsrc
  67. 64 0
      tools/build_debug.py

+ 20 - 1
MakeQSP.bat

@@ -69,17 +69,19 @@ if defined NOT_FOUND (
 )
 
 echo.
-echo ACTIONS: (B)uild  (R)un  (F)ull  (Q)Gen (V)alidate (E)xit
+echo ACTIONS: (B)uild  (D)ebug  (R)un  (F)ull  (Q)Gen  (V)alidate  (E)xit
 echo.
 set /p action=Choose an action:
 
 if defined QSPFILE (
 	if %action% == b goto build
+	if %action% == d goto build_debug
 	if %action% == r goto run
 	if %action% == f goto build
 	if %action% == v goto parser
 	if %action% == q goto qgen
 	if %action% == B goto build
+	if %action% == D goto build_debug
 	if %action% == R goto run
 	if %action% == F goto build
 	if %action% == V goto parser
@@ -109,6 +111,23 @@ echo Done.
 pause
 if %action% == f ( goto run ) else ( goto menu )
 
+:build_debug
+echo.
+echo Building DEBUG ...
+
+@ECHO ON
+python tools\build_debug.py locations glife.txt
+tools\txt2gam.exe glife.txt %QSPFILE% > nul
+@ECHO OFF
+
+echo.
+if defined CP_TO ( echo Copying %QSPFILE% to "%CP_TO%" ... & copy %QSPFILE% %CP_TO% > nul )
+
+echo.
+echo Done.
+pause
+goto menu
+
 :qgen
 echo.
 echo Running ...

+ 1 - 0
glife.qproj

@@ -32,6 +32,7 @@
 		<Location name="$difficulty"/>
 		<Location name="UnitAppearance"/>
 		<Location name="notification"/>
+		<Location name="debug_tools"/>
 	</Folder>
 	<Folder name="Stats">
 		<Location name="DNA"/>

+ 6 - 51
locations/LOCA.qsrc

@@ -1,5 +1,11 @@
 # LOCA
 
+if debug['trace_loc_change'] = 1:
+	copyarr '$trace_args', '$ARGS'
+	copyarr 'trace_args', 'ARGS'
+	gs 'debug_tools', 'trace', 'loc_change'
+end
+
 if settingmode!0: killvar '$cheatmenu'
 
 !{
@@ -31,55 +37,4 @@ if mod_list > 0:
 	end
 end
 
-if call_trace_enabled ! 0 and call_trace_manual = 0:
-	$call_trace_line = "'<<$curloc>>'"
-
-	call_trace_index = 0
-	:call_trace_loop
-	if call_trace_index < arrsize("$ARGS"):
-		if $ARGS[call_trace_index] ! '':
-			$call_trace_line += ", '<<$ARGS[call_trace_index]>>'"
-		else
-			$call_trace_line += ", <<ARGS[call_trace_index]>>"
-		end
-		call_trace_index += 1
-		jump 'call_trace_loop'
-	end
-	killvar 'call_trace_index'
-
-	$call_trace += $call_trace_line + '<br>'
-	killvar '$call_trace_line'
-	if call_trace_shown ! 0: gs 'stat_display'
-end
-
-!!	MANUAL CALL TRACE SNIPPET
-!?	Why use manual call trace:
-!	- auto mode doesnt catch `gs` calls, manual does
-!?	HOWTO use:
-!	- put it at the head of the location you want to debug
-!	  set location name (if you want it to make sense and look nice)
-
-! {
-call_trace_manual = 1
-$call_trace_line = "'PUT_LOC_NAME_HERE'"
-
-call_trace_index = 0
-:call_trace_loop
-if call_trace_index < arrsize("$ARGS"):
-    if $ARGS[call_trace_index] ! '':
-        $call_trace_line += ", '<<$ARGS[call_trace_index]>>'"
-    else
-        $call_trace_line += ", <<ARGS[call_trace_index]>>"
-    end
-    call_trace_index += 1
-    jump 'call_trace_loop'
-end
-killvar 'call_trace_index'
-
-$call_trace += $call_trace_line + '<br>'
-killvar '$call_trace_line'
-if call_trace_shown ! 0: gs 'stat_display'
-}
-
 --- LOCA ---------------------------------
-

+ 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, 'membership'
+      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

+ 22 - 6
locations/body.qsrc

@@ -228,6 +228,20 @@ if $ARGS[0] = 'Update_Hair':
 	if pcs_haircol ! nathcol and dyefade > 0:
 		dyefade -= 1
 	end
+	
+	!! daily reduction of braids
+	if hbraids > 0: hbraids -= 1
+
+	!! loss of updo if hair too long
+	if pcs_hairlng > 400 and hpingripw = 1:
+		hpingripw = 0
+	end
+
+	!! loss of pigtails if hair too long
+	if pcs_hairlng > 800 and hscrunchw = 2 = 1:
+		hpigtail = 0
+		hscrunchw = 0
+	end
 end
 
 if $ARGS[0] = 'Update_Pubes_and_leghair':
@@ -475,6 +489,7 @@ end
 
 !! All the ratios were rounded to 2 digits and there are divide 100s at the final calc points
 
+! Lies between 65 and 96
 if $ARGS[0] = 'Find_waist_to_hip_ratio':
 	temp_wratio = (2 * vitalbuf + strenbuf + agilbuf) / 4
 
@@ -503,7 +518,7 @@ if $ARGS[0] = 'Find_waist_to_hip_ratio':
 
 	killvar 'temp_wratio'
 
-
+! Lies between 105 and 125
 elseif $ARGS[0] = 'Find_band_to_waist_ratio':
 	temp_bratio = (2 * strenbuf + vitalbuf + agilbuf) / 4
 
@@ -519,7 +534,7 @@ elseif $ARGS[0] = 'Find_band_to_waist_ratio':
 
 	killvar 'temp_bratio'
 
-
+! Lies between 56 and 60
 elseif $ARGS[0] = 'Find_hip_to_height_ratio':
 	temp_hratio = (2 * agilbuf + vitalbuf + strenbuf) / 4
 
@@ -746,7 +761,7 @@ if $ARGS[0] = 'Set_mass_distribution_using_body':
 	pcs_mass['bust_message'] = pcs_mass['bust']
 	pcs_mass['butt_message'] = pcs_mass['butt']
 	
-	bodyVars['vhips'] = (pcs_mass['body'] - 60 + pcs_mass['butt'] - pcs_mass['butt_gen']) / 2
+	bodyVars['vhips'] = (pcs_mass['body'] + pcs_mass['butt'] - 80) / 2
 end
 
 
@@ -754,7 +769,7 @@ end
 
 
 if $ARGS[0] = 'Update_vhips':
-	vhtmp = (pcs_mass['body'] - 60 + pcs_mass['butt'] - pcs_mass['butt_gen']) / 2
+	vhtmp = (pcs_mass['body'] + pcs_mass['butt'] - 80) / 2
 
 	!	Because a reset should be updating hip size instantly (this set is a bit redundant anyway)
 	if bodyresetflag = 1:
@@ -770,7 +785,7 @@ if $ARGS[0] = 'Update_vhips':
 
 	!! Varies between 0 and 25 to 30 ish range
 	!bodyVars['butt_bonus'] = max(0, pcs_mass['butt'] - max(0, bodyVars['vhips']))
-	bodyVars['butt_bonus'] = 0
+	bodyVars['butt_bonus'] = (pcs_mass['butt'] - 20) / 3
 	
 	!! temp_vhips2 = vhips + (pcs_hgt * bodyVars['hratio'])/100 - (pcs_hgt * 72)/100
 	!! temp_vhips2 = pcs_hips - (pcs_hgt * 72) / 1000
@@ -879,7 +894,7 @@ if $ARGS[0] = 'hardreset':
 			pcs_mass['butt_gen'] = 20
 		end
 
-		bodyVars['vhips'] = (pcs_mass['body'] - 60 + pcs_mass['butt'] - pcs_mass['butt_gen']) / 2
+		bodyVars['vhips'] = (pcs_mass['body'] + pcs_mass['butt'] - 80) / 2
 
 		if pcs_mass['bust_gen'] = 0:
 			if pcs_mass['bust'] >= 27:
@@ -959,6 +974,7 @@ if $ARGS[0] = 'initial':
 	killvar 'temp_bmi'
 
 	gs 'body', 'UpdateBodyImage'
+	gs 'body', 'Update_Appearance'
 end
 
 

+ 16 - 1
locations/body_structure.qsrc

@@ -226,8 +226,12 @@ if $ARGS[0] = 'body_img':
 			bs_temp_bs_class = 100 * (bs_temp_bs_class / 100) + 4
 		elseif fixbodset = 1:
 			bs_temp_bs_class = 100 * (bs_temp_bs_class / 100) + 6
-		else
+		elseif fixbodset = 2:
 			bs_temp_bs_class = 100 * (bs_temp_bs_class / 100) + 8
+		else
+			$result = func('body_structure', 'custom_body_img', bs_temp_bs_class)
+			killvar 'bs_temp_bs_class'
+			exit
 		end
 	end
 
@@ -320,6 +324,17 @@ if $ARGS[0] = 'body_img':
 	killvar 'bs_temp_bs_class'
 end
 
+if $ARGS[0] = 'custom_body_img':
+	ARGS[1] = ARGS[1] / 100
+	if ARGS[1] = 0 or ARGS[1] >= 6:
+		if dyneval('result = imset<<ARGS[1]>>ovr[<<fixbodset>>]') = 0:
+			$result = 'images/pc/body/shape/<<ARGS[1]>>.jpg'
+			exit
+		end
+	end
+	$result = 'images/pc/body/shape/<<$bodimgsets[((fixbodset * 10) + 9)]>>/<<ARGS[1]>>.jpg'
+end
+
 
 !	Get the body description
 !	$bodyVars['desc'] = func('body_structure', 'body_desc', pcs_bmi, strenbuf, succubusflag)

+ 1 - 1
locations/budgetclothes.qsrc

@@ -344,7 +344,7 @@ if $ARGS[0] = 'gm_server':
 	*nl
 
 	gs 'clothing_QV', 'shop_filter_header'
-	gs 'clothing', 'totals', 'gm_outfits'
+	gs 'clothing', 'totals', 'gm_server'
 
 	act 'Return':
 		cla

+ 127 - 16
locations/bus.qsrc

@@ -21,7 +21,20 @@ if $ARGS[0] = 'community':
 	menu_off = 0
 	gs 'stat'
 
-	'<center><img <<$set_imgh>> src="images/locations/system/image_needed.jpg" ></center>'
+	if month >= 11 or month <= 3:
+		if hour >= 9 and hour <= 16:
+			'<center><img <<$set_imgh>> src="images/locations/shared/bus/winter_day<<rand(1, 3)>>.jpg"></center>'
+		else
+			'<center><img <<$set_imgh>> src="images/locations/shared/bus/winter_night<<rand(1, 3)>>.jpg"></center>'
+		end
+	else
+		if hour >= 7 and hour <= 18:
+			'<center><img <<$set_imgh>> src="images/locations/shared/bus/day<<rand(1, 3)>>.jpg"></center>'
+		else
+			'<center><img <<$set_imgh>> src="images/locations/shared/bus/night<<rand(1, 3)>>.jpg"></center>'
+		end
+	end
+
 	'The community center bus stop'
 	*nl
 	gs 'transport_functions', 'set_bus_wait_time', 'community'
@@ -35,7 +48,8 @@ if $ARGS[0] = 'community':
 			func('transport_functions', 'display_buspass_time')
 			act 'Go to platforms': gt 'bus', 'community_busses'
 		else
-			act 'Buy a ticket': gt 'bus', 'community_tickets'
+			act 'Walk to the ticket machine': gt 'bus', 'community_tickets'
+			gs 'transport_functions', 'buy_bus_pass'
 		end
 	else
 		'It''s too late to take the bus. The next one arrives in <<transportVars[''bus_wait_gadukino'']/60>> hours'
@@ -93,12 +107,26 @@ if $ARGS[0] = 'pavstation':
 	menu_off = 0
 	gs 'stat'
 
-	'<center><img <<$set_imgh>> src="images/locations/system/image_needed.jpg" ></center>'
+	if month >= 11 or month <= 3:
+		if hour >= 9 and hour <= 16:
+			'<center><img <<$set_imgh>> src="images/locations/shared/bus/winter_day<<rand(1, 3)>>.jpg"></center>'
+		else
+			'<center><img <<$set_imgh>> src="images/locations/shared/bus/winter_night<<rand(1, 3)>>.jpg"></center>'
+		end
+	else
+		if hour >= 7 and hour <= 18:
+			'<center><img <<$set_imgh>> src="images/locations/shared/bus/day<<rand(1, 3)>>.jpg"></center>'
+		else
+			'<center><img <<$set_imgh>> src="images/locations/shared/bus/night<<rand(1, 3)>>.jpg"></center>'
+		end
+	end
+
 	'The Pavlovsk train station bus stop'
 	*nl
 	gs 'transport_functions', 'set_bus_wait_time', 'pavstation'
 
 	act 'Walk to the train station (0:02)': minut += 2 & gt 'pav_train_hall'
+	if transportVars['trainpass_day'] > daystart: act 'Walk to the train platform (0:02)': minut += 2 & gt 'pav_train_hall', 'platform'
 
 	if transportVars['bus_wait_pavlovsk'] <= 60 or transportVars['bus_wait_gadukino'] <= 60:
 		'The next bus in the direction of the Pavlovsk community center ' + iif(transportVars['bus_wait_pavlovsk'] = 0, 'is leaving now!', 'leaves in <<transportVars[''bus_wait_pavlovsk'']>> minutes.')
@@ -109,7 +137,8 @@ if $ARGS[0] = 'pavstation':
 			func('transport_functions', 'display_buspass_time')
 			act 'Go to platforms': gt 'bus', 'pavstation_busses'
 		else
-			act 'Buy a ticket': gt 'bus', 'pavstation_tickets'
+			act 'Walk to the ticket machine': gt 'bus', 'pavstation_tickets'
+			gs 'transport_functions', 'buy_bus_pass'
 		end
 	else
 		'It''s too late to take the bus. The next one arrives in <<min(transportVars[''bus_wait_pavlovsk'']/60, transportVars[''bus_wait_gadukino'']/60)>> hours.'
@@ -174,7 +203,20 @@ if $ARGS[0] = 'pushkin':
 	menu_off = 0
 	gs 'stat'
 
-	'<center><img <<$set_imgh>> src="images/locations/system/image_needed.jpg" ></center>'
+	if month >= 11 or month <= 3:
+		if hour >= 9 and hour <= 16:
+			'<center><img <<$set_imgh>> src="images/locations/shared/bus/winter_day<<rand(1, 3)>>.jpg"></center>'
+		else
+			'<center><img <<$set_imgh>> src="images/locations/shared/bus/winter_night<<rand(1, 3)>>.jpg"></center>'
+		end
+	else
+		if hour >= 7 and hour <= 18:
+			'<center><img <<$set_imgh>> src="images/locations/shared/bus/day<<rand(1, 3)>>.jpg"></center>'
+		else
+			'<center><img <<$set_imgh>> src="images/locations/shared/bus/night<<rand(1, 3)>>.jpg"></center>'
+		end
+	end
+
 	'The bus stop in the old town center of Pushkin'
 	*nl
 	gs 'transport_functions', 'set_bus_wait_time', 'pushkin'
@@ -189,7 +231,7 @@ if $ARGS[0] = 'pushkin':
 			func('transport_functions', 'display_buspass_time')
 			act 'Go to platforms': gt 'bus', 'pushkin_busses'
 		else
-			act 'Buy a ticket': gt 'bus', 'pushkin_tickets'
+			act 'Walk to the ticket machine': gt 'bus', 'pushkin_tickets'
 		end
 	else
 		'It''s too late to take the bus. The next one arrives in <<min(transportVars[''bus_wait_pavlovsk'']/60, transportVars[''bus_wait_gadukino'']/60)>> hours.'
@@ -254,7 +296,20 @@ if $ARGS[0] = 'construction':
 	menu_off = 0
 	gs 'stat'
 
-	'<center><img <<$set_imgh>> src="images/locations/system/image_needed.jpg" ></center>'
+	if month >= 11 or month <= 3:
+		if hour >= 9 and hour <= 16:
+			'<center><img <<$set_imgh>> src="images/locations/shared/bus/winter_day<<rand(1, 3)>>.jpg"></center>'
+		else
+			'<center><img <<$set_imgh>> src="images/locations/shared/bus/winter_night<<rand(1, 3)>>.jpg"></center>'
+		end
+	else
+		if hour >= 7 and hour <= 18:
+			'<center><img <<$set_imgh>> src="images/locations/shared/bus/day<<rand(1, 3)>>.jpg"></center>'
+		else
+			'<center><img <<$set_imgh>> src="images/locations/shared/bus/night<<rand(1, 3)>>.jpg"></center>'
+		end
+	end
+
 	'The temporary bus stop near the construction site'
 	*nl
 	gs 'transport_functions', 'set_bus_wait_time', 'construction'
@@ -269,7 +324,7 @@ if $ARGS[0] = 'construction':
 			func('transport_functions', 'display_buspass_time')
 			act 'Go to platforms': gt 'bus', 'construction_busses'
 		else
-			act 'Buy a ticket': gt 'bus', 'construction_tickets'
+			act 'Walk to the ticket machine': gt 'bus', 'construction_tickets'
 		end
 	else
 		'It''s too late to take the bus. The next one arrives in <<min(transportVars[''bus_wait_pavlovsk'']/60, transportVars[''bus_wait_gadukino'']/60)>> hours.'
@@ -334,7 +389,20 @@ if $ARGS[0] = 'gadukino':
 	menu_off = 0
 	gs 'stat'
 
-	'<center><img <<$set_imgh>> src="images/locations/system/image_needed.jpg" ></center>'
+	if month >= 11 or month <= 3:
+		if hour >= 9 and hour <= 16:
+			'<center><img <<$set_imgh>> src="images/locations/shared/bus/winter_day<<rand(1, 3)>>.jpg"></center>'
+		else
+			'<center><img <<$set_imgh>> src="images/locations/shared/bus/winter_night<<rand(1, 3)>>.jpg"></center>'
+		end
+	else
+		if hour >= 7 and hour <= 18:
+			'<center><img <<$set_imgh>> src="images/locations/shared/bus/day<<rand(1, 3)>>.jpg"></center>'
+		else
+			'<center><img <<$set_imgh>> src="images/locations/shared/bus/night<<rand(1, 3)>>.jpg"></center>'
+		end
+	end
+
 	'The bus stop at the forest road of the village of Gadukino'
 	*nl
 	gs 'transport_functions', 'set_bus_wait_time', 'gadukino'
@@ -349,7 +417,8 @@ if $ARGS[0] = 'gadukino':
 			func('transport_functions', 'display_buspass_time')
 			act 'Go to platforms': gt 'bus', 'gadukino_busses'
 		else
-			act 'Buy a ticket': gt 'bus', 'gadukino_tickets'
+			act 'Walk to the ticket machine': gt 'bus', 'gadukino_tickets'
+			gs 'transport_functions', 'buy_bus_pass'
 		end
 	else
 		'It''s too late to take the bus. The next one arrives in <<min(transportVars[''bus_wait_pavlovsk'']/60, transportVars[''bus_wait_suburbs'']/60)>> hours.'
@@ -419,7 +488,20 @@ if $ARGS[0] = 'communal':
 	menu_off = 0
 	gs 'stat'
 
-	'<center><img <<$set_imgh>> src="images/locations/system/image_needed.jpg" ></center>'
+	if month >= 11 or month <= 3:
+		if hour >= 9 and hour <= 16:
+			'<center><img <<$set_imgh>> src="images/shared/bus/winter_day<<rand(1, 3)>>.jpg"></center>'
+		else
+			'<center><img <<$set_imgh>> src="images/shared/bus/winter_night<<rand(1, 3)>>.jpg"></center>'
+		end
+	else
+		if hour >= 7 and hour <= 18:
+			'<center><img <<$set_imgh>> src="images/shared/bus/day<<rand(1, 3)>>.jpg"></center>'
+		else
+			'<center><img <<$set_imgh>> src="images/shared/bus/night<<rand(1, 3)>>.jpg"></center>'
+		end
+	end
+
 	'The bus stop in the communal village'
 	*nl
 	gs 'transport_functions', 'set_bus_wait_time', 'communal'
@@ -437,7 +519,7 @@ if $ARGS[0] = 'communal':
 			func('transport_functions', 'display_buspass_time')
 			act 'Go to platforms': gt 'bus', 'communal_busses'
 		else
-			act 'Buy a ticket': gt 'bus', 'communal_tickets'
+			act 'Walk to the ticket machine': gt 'bus', 'communal_tickets'
 		end
 	else
 		'It''s too late to take the bus. The next one arrives in <<min(transportVars[''bus_wait_gadukino'']/60, transportVars[''bus_wait_suburbs'']/60)>> hours.'
@@ -501,7 +583,20 @@ if $ARGS[0] = 'graveyard':
 	menu_off = 0
 	gs 'stat'
 
-	'<center><img <<$set_imgh>> src="images/locations/system/image_needed.jpg" ></center>'
+	if month >= 11 or month <= 3:
+		if hour >= 9 and hour <= 16:
+			'<center><img <<$set_imgh>> src="images/locations/shared/bus/winter_day<<rand(1, 3)>>.jpg"></center>'
+		else
+			'<center><img <<$set_imgh>> src="images/locations/shared/bus/winter_night<<rand(1, 3)>>.jpg"></center>'
+		end
+	else
+		if hour >= 7 and hour <= 18:
+			'<center><img <<$set_imgh>> src="images/locations/shared/bus/day<<rand(1, 3)>>.jpg"></center>'
+		else
+			'<center><img <<$set_imgh>> src="images/locations/shared/bus/night<<rand(1, 3)>>.jpg"></center>'
+		end
+	end
+
 	'The cemetery bus stop'
 	*nl
 	gs 'transport_functions', 'set_bus_wait_time', 'graveyard'
@@ -516,7 +611,7 @@ if $ARGS[0] = 'graveyard':
 			func('transport_functions', 'display_buspass_time')
 			act 'Go to platforms': gt 'bus', 'graveyard_busses'
 		else
-			act 'Buy a ticket': gt 'bus', 'graveyard_tickets'
+			act 'Walk to the ticket machine': gt 'bus', 'graveyard_tickets'
 		end
 	else
 		'It''s too late to take the bus. The next one arrives in <<min(transportVars[''bus_wait_gadukino'']/60, transportVars[''bus_wait_suburbs'']/60)>> hours.'
@@ -580,13 +675,28 @@ if $ARGS[0] = 'suburbs':
 	menu_off = 0
 	gs 'stat'
 
-	'<center><img <<$set_imgh>> src="images/locations/system/image_needed.jpg" ></center>'
+	if month >= 11 or month <= 3:
+		if hour >= 9 and hour <= 16:
+			'<center><img <<$set_imgh>> src="images/locations/shared/bus/winter_day<<rand(1, 3)>>.jpg"></center>'
+		else
+			'<center><img <<$set_imgh>> src="images/locations/shared/bus/winter_night<<rand(1, 3)>>.jpg"></center>'
+		end
+	else
+		if hour >= 7 and hour <= 18:
+			'<center><img <<$set_imgh>> src="images/locations/shared/bus/day<<rand(1, 3)>>.jpg"></center>'
+		else
+			'<center><img <<$set_imgh>> src="images/locations/shared/bus/night<<rand(1, 3)>>.jpg"></center>'
+		end
+	end
+
 	'The bus stop near the suburbs of St. Petersburg'
 	*nl
 	gs 'transport_functions', 'set_bus_wait_time', 'suburbs'
 
 	act 'Walk to the suburbs (0:05)': minut += 5 & gt 'city_suburbs', 'start'
 
+	if hour >= 4 and hour < 23: act 'Walk to the Metro station (0:15)': minut += 15 & $loc = 'city_suburbs' & $loc_arg = 'start' & gt 'metro', 'start'
+
 	if transportVars['bus_wait_gadukino'] <= 60:
 		'The next bus in the direction of Gadukino ' + iif(transportVars['bus_wait_gadukino'] = 0, 'is leaving now!', 'leaves in <<transportVars[''bus_wait_gadukino'']>> minutes.')
 		if transportVars['buspass_day'] > daystart:
@@ -594,7 +704,8 @@ if $ARGS[0] = 'suburbs':
 			func('transport_functions', 'display_buspass_time')
 			act 'Go to platforms': gt 'bus', 'suburbs_busses'
 		else
-			act 'Buy a ticket': gt 'bus', 'suburbs_tickets'
+			act 'Walk to the ticket machine': gt 'bus', 'suburbs_tickets'
+			gs 'transport_functions', 'buy_bus_pass'
 		end
 	else
 		'It''s too late to take the bus. The next one arrives in <<transportVars[''bus_wait_gadukino'']/60>> hours'

+ 0 - 4
locations/cikl.qsrc

@@ -354,10 +354,6 @@ if defcurly = 1:
 	if straight = 0: curly = 2147483647
 end
 
-! WD: Added daily reduction of braids for Maruda Hair Mod
-if hbraids > 0: hbraids -= 1
-
-
 gs 'sweat', 'add', 2
 
 if pcs_tan > 0: pcs_tan -= 1

+ 1 - 1
locations/city_center.qsrc

@@ -49,7 +49,7 @@ end
 
 gs 'street_event','city_center', 'extras'
 
-if mother['kickedout_timer'] ! 0 and mother['kickedout_timer'] + 3 <= daystart and hour > 6 and hour <= 15:
+if mother['kickedout_timer'] ! 0 and mother['kickedout_timer'] + 3 <= daystart and hour > 6 and hour <= 15 and $ARGS[1] ! 'mom_check' and cumloc[11] = 0:
 	gs 'mother_chats', 'reconciliation_talk'
 exit
 end

+ 1 - 1
locations/city_clinic.qsrc

@@ -1761,7 +1761,7 @@ if $ARGS[0] = 'milk_donation':
 			end
 			lact_ev['poli_milkedvolume'] = 0
 			if lact_ev['poli_donationsessioncount'] > 0:
-				lact_ev['poli_donatemoney'] = (lact_ev['poli_donationsessioncount']*15)/10*10
+				lact_ev['poli_donatemoney'] = (lact_ev['poli_donationsessioncount']*5)/10*10
 			else
 				lact_ev['poli_donatemoney'] = 0
 			end

+ 1 - 1
locations/city_residential.qsrc

@@ -53,7 +53,7 @@ if gopdeath = 1 and vsehsdaladay ! daystart:
 	gt 'gameover'
 end
 
-if mother['kickedout_timer'] ! 0 and mother['kickedout_timer'] + 3 <= daystart and hour > 6 and hour <= 15:
+if mother['kickedout_timer'] ! 0 and mother['kickedout_timer'] + 3 <= daystart and hour > 6 and hour <= 15 and cumloc[11] = 0:
 	gs 'mother_chats', 'reconciliation_talk'
 exit
 end

+ 8 - 2
locations/coats.qsrc

@@ -15,8 +15,14 @@ if $ARGS[0] = 'remove':
 end
 
 if $ARGS[0] = 'wear':
-	$coatworntype = $ARGS[1]
-	coatwornnumber = ARGS[2]
+	if $ARGS[1] = 'last_worn':
+		$coatworntype = $lastworncoattype
+		coatwornnumber = lastworncoatnumber
+	else
+		$coatworntype = $ARGS[1]
+		coatwornnumber = ARGS[2]
+	end
+
 	gs 'coat_attributes', $ARGS[1], ARGS[2]
 	PCoatWarm = CoatWarm
 	PCoatQuality = CoatQuality

+ 54 - 0
locations/debug_tools.qsrc

@@ -0,0 +1,54 @@
+# debug_tools
+
+if $ARGS[0] = 'trace':
+	if $ARGS[1] = 'loc_change':
+		if debug['trace_loc_change'] = 0: exit
+		$debug['trace_line'] = "'<<$curloc>>'"
+	elseif $ARGS[1] = 'direct':
+		if arrsize('$trace_locations') = 0: exit
+		if arrpos("$trace_locations", $ARGS[2]) = -1: exit
+		$debug['trace_line'] = "'<<$ARGS[2]>>'"
+	else
+		exit
+	end
+
+	debug['trace_index'] = 0
+	:trace_loc_change_loop
+	if debug['trace_index'] < arrsize("$trace_args"):
+		if $trace_args[debug['trace_index']] ! '':
+			$debug['trace_line'] += ", '<<$trace_args[debug['trace_index']]>>'"
+		elseif trace_args[debug['trace_index']] ! 0:
+			$debug['trace_line'] += ", <<trace_args[debug['trace_index']]>>"
+		else
+			$debug['trace_line'] += ", /DEF"
+		end
+		debug['trace_index'] += 1
+		jump 'trace_loc_change_loop'
+	end
+	! killvar 'call_trace_index'
+	killvar '$trace_args' & killvar 'trace_args'
+
+	$debug['<<$ARGS[1]>>_trace'] += $debug['trace_line'] + '<br>'
+	! killvar '$call_trace_line'
+	if debug['trace_shown'] ! 0: gs 'stat_display'
+!?end
+
+elseif $ARGS[0] = 'trace_list_locs':
+	tmp_i = 0
+	:list_locs_loop
+	if tmp_i < arrsize('$trace_locations'):
+		$tmp_msg += $trace_locations[tmp_i] + '<br>'
+		tmp_i += 1
+		jump 'list_locs_loop'
+	end
+	msg $tmp_msg
+	killvar 'tmp_i' & killvar '$tmp_msg'
+!?end
+
+elseif $ARGS[0] = 'reset':
+	$debug['loc_change_trace'] = ''
+	$debug['direct_trace'] = ''
+end
+
+--- debug_tools ---------------------------------
+

+ 1 - 1
locations/din_van.qsrc

@@ -710,7 +710,7 @@ $publicpan = {
 	end
 
 	!! Changing into a different outfit for prostitution
-	if prostitute['active'] = 1:
+	if prostitute['active'] = 1 and ARGS[1] ! 'no_prost' and $loc ! 'gschool_break':
 		gs 'prostitution_functions', 'work_clothes'
 		if  prostitute['work_clothes'] = 0 and prostitute['outfit_is_set']: 
 			act 'Change into prostitute outfit': gt 'prostitution_functions', 'change_to_work', 'restroom'

+ 1 - 1
locations/exhibitionistshop.qsrc

@@ -141,7 +141,7 @@ if $ARGS[0] = 'ksenya_shop':
             '"You are the closest thing I have to a friend, and I want you to be my girlfriend" she repeats.'
             act 'Sure':
                 *clr & cla
-                '<center><video autoplay loop src="images/character/pushkin/ksenya/shop5.mp4"></video></center>'
+                '<center><video autoplay loop src="images/shared/sex/kiss/kiss_lips.mp4"></video></center>'
                 'She walks over to you and gives you a gentle hug. She moves a hand to your hair and moves it behind your ear before leaning in and kissing you. The kiss lingers for a bit before she pulls back. Before anything can be done further, a knock is heard on her office door and a voice says. "Miss?! You''re needed in the store."'
                 '"Be right there" she says and turns back to you. "I''ll see you later" she says and her hand slowly rubs your cheek as she walks away from you, leaving you alone in her office. After you collect your bearings, you leave and see her arguing with a customer as you exit the store.'
                 act 'Leave the store': gt 'pushkin_sq'

+ 1 - 1
locations/gschool.qsrc

@@ -63,7 +63,7 @@ end
 
 if $ARGS[0] = 'weekly grade update':
 	if kanikuli = 0 and week = 1 and SchoolAtestat = 0:
-		if lernHome > 0 and petka['homework'] = 1: gs 'grades', 'homework', 'school', 'yes', lernHome, 2, 'A6'
+		if lernHome > 0 and petka['homework'] = 1: gs 'grades', 'homework', 'school', 'yes', rand(0, lernHome), 2, 'A6'
 		pcs_traits['nerd_points'] -= lernHome		
 		if lernHome = 0:
 			pcs_traits['nerd_points'] += pcs_traits['nerd_lernHome'] 

+ 1 - 1
locations/gschool_break.qsrc

@@ -116,7 +116,7 @@ if $ARGS[0] = 'restroom_actions':
 	dynamic $tampon
 	dynamic $quickwash
 	dynamic $basin
-	dynamic $publicpan
+	dynamic $publicpan, 'no_prost'
 end
 
 if $ARGS[0] = 'girls_restroom_events':

+ 1 - 1
locations/gschool_events.qsrc

@@ -1132,7 +1132,7 @@ if $ARGS[0] = 'break_events':
 	elseif break_rand <= 35 and cheerleadingQW['quest_stage'] = -1 and cheerleadingQW['reject'] + 30 => daystart:
 	 !! 'repeat' event that reminds the player of cheerleading if they rejected it the first time or failed the tryouts.
 		gt 'gschool_cheerleading', 'poster_repeat'
-	elseif break_rand <= 36 and petka_homework_day ! daystart and week > 1:
+	elseif break_rand <= 36 + lernHome*2 + petka['homework']*rand(10,20) and petka_homework_day ! daystart and week > 1:
 		*clr & cla
 		petka_homework_day = daystart
 		gs 'stat'

+ 1 - 1
locations/gschool_grounds.qsrc

@@ -781,7 +781,7 @@ if $ARGS[0] = 'change_room':
 
 	gs 'wardrobe', 'default_sport_options'
 
-	dynamic $publicpan
+	dynamic $publicpan, 'no_prost'
 	act 'Look in the mirror': gt 'mirror', 'start'
 	if pcs_hairbsh < 1: act 'Brush your hair': gt 'mirror', 'brush'
 	dynamic $quickwash

+ 24 - 1
locations/homes_properties_attr.qsrc

@@ -12,7 +12,7 @@ if ARRSIZE('train_station') < 1:
 	$train_station['dachi'] = "gt 'train', 'communal'"
 end
 
-if ARRSIZE('homes') < 17:
+if ARRSIZE('homes') < 18:
 	killvar '$homes'
 	$homes[] = 'city_apartment'
 	$homes[] = 'parents_home'
@@ -31,6 +31,7 @@ if ARRSIZE('homes') < 17:
 	$homes[] = 'city_house'
 	$homes[] = 'meynold_household'
 	$homes[] = 'hotel_therapist'
+	$homes[] = 'pushkin_ballet_dorm'
 end
 
 if ARRSIZE('home_name') < 4:
@@ -156,6 +157,10 @@ if ARRSIZE('home_name') < 4:
 	!! HOTEL
 	$home_name['hotel_therapist'] = 'hotel_therapist'
 	$home_name['17'] = 'hotel_therapist'
+
+	!! BALLET DORM
+	$home_name['pushkin_ballet_dorm'] = 'pushkin_ballet_dorm'
+	$home_name['18'] = 'pushkin_ballet_dorm'
 end
 
 !!{ All the existing properties should be added here. 
@@ -527,6 +532,7 @@ if $ARGS[0] = 'get_property_attr':
 		$property['type'] = 'temporary_residence'
 
 		property['free_internet'] = 1
+
 	elseif $ARGS[1] = 'hotel_therapist':
 		property['id'] = 17
 		$property['code'] = $ARGS[1]
@@ -545,6 +551,23 @@ if $ARGS[0] = 'get_property_attr':
 		$property['type'] = 'temporary_residence'
 
 		property['free_internet'] = 1
+
+	elseif $ARGS[1] = 'pushkin_ballet_dorm':
+		property['id'] = 18
+		$property['code'] = $ARGS[1]
+		$property['name'] = 'Pushkin Ballet Dorm'
+		$property['display'] = 'ballet dorm'
+		$property['region'] = 'pav'
+		$property['town'] = 'pushkin'
+		$property['location'] = 'pushkin_sq'
+		$property['location_arg'] = ''
+		$property['entrance'] = 'pushkin_ballet_center'
+		$property['entrance_arg'] = 'start'
+		$property['bathroom'] = 'pushkin_ballet_class'
+		$property['bathroom_arg'] = 'shower'
+		$property['bedroom'] = 'pushkin_ballet_res'
+		$property['bedroom_arg'] = 'bedroom'
+		$property['type'] = 'temporary_residence'
 	else
 		gs 'homes_properties_attr', 'mod_property_query_hook'
 	end

+ 1 - 1
locations/indik.qsrc

@@ -30,7 +30,7 @@ if Enable_scalepic = 1:
 	killvar '_width'
 	killvar '_height'
 	killvar '$_color'
-elseif Enable_scalepic = 2:
+else
 	if cheatStatusBars = 1:
 		i = 2
 	else

+ 28 - 28
locations/intro_city_select.qsrc

@@ -325,7 +325,7 @@ if $ARGS[0] = 'nerd':
 	pcs_eyesize		-= 1
 	pcs_lashes		-= 1
 	pcs_mass['bust_gen']	= 13	& !B-Cup at ideal BMI
-	pcs_mass['butt_gen']	= 20	& !pcs_butt = 8??
+	pcs_mass['butt_gen']	= 17	& !pcs_butt = 8
 	pcs_mass['body']		= 60
 
 	!!----- INVENTRORY -----!!
@@ -396,7 +396,7 @@ if $ARGS[0] = 'nerdqueen':
 		pcs_lip		+= 1
 		pcs_teeth	-= 1
 		pcs_mass['bust_gen']	= 22	& !D-Cup at ideal BMI
-		pcs_mass['butt_gen']	= 20	& !pcs_butt = 12??
+		pcs_mass['butt_gen']	= 27	& !pcs_butt = 12
 		pcs_mass['body']		= 65
 
 		!!----- INVENTRORY -----!!
@@ -454,7 +454,7 @@ elseif $ARGS[0] = 'goodstudent':
 		!!----- APPEARANCE -----!!
 		pcs_hairlng		-= 100
 		pcs_mass['bust_gen']	= 18	& !C-Cup at ideal BMI
-		pcs_mass['butt_gen']	= 20	& !pcs_butt = 8??
+		pcs_mass['butt_gen']	= 17	& !pcs_butt = 8
 		pcs_mass['body']		= 70
 
 		! Other
@@ -513,7 +513,7 @@ elseif $ARGS[0] = 'computergeek':
 		pcs_skin	-= 100
 		pcs_teeth	+= 1
 		pcs_mass['bust_gen']	= 13	& !B-Cup at ideal BMI
-		pcs_mass['butt_gen']	= 20	& !pcs_butt = 8??
+		pcs_mass['butt_gen']	= 17	& !pcs_butt = 8
 		pcs_mass['body']	= 42
 
 		! Other
@@ -561,7 +561,7 @@ elseif $ARGS[0] = 'chessplayer':
 		!!----- APPEARANCE -----!!
 		pcs_hairlng		-= 100
 		pcs_mass['bust_gen']	= 13	& !B-Cup at ideal BMI
-		pcs_mass['butt_gen']	= 20	& !pcs_butt = 8??
+		pcs_mass['butt_gen']	= 17	& !pcs_butt = 8
 		pcs_mass['body']		= 73
 
 		!!----- RELATIONSHIPS -----!!
@@ -572,10 +572,10 @@ elseif $ARGS[0] = 'chessplayer':
 		chessmonth	= month
 
 		!!----- SCHOOL GRADES -----!!
-		gs 'grades', 'grade_award', 'school', 'math', 5		! 90
-		gs 'grades', 'grade_award', 'school', 'rus',  5		! 90
-		gs 'grades', 'grade_award', 'school', 'lit',  5		! 90
-		gs 'grades', 'grade_award', 'school', 'mus',  -5	! 80
+		gs 'grades', 'grade_award', 'school', 'math', 5		& ! 90
+		gs 'grades', 'grade_award', 'school', 'rus',  5		& ! 90
+		gs 'grades', 'grade_award', 'school', 'lit',  5		& ! 90
+		gs 'grades', 'grade_award', 'school', 'mus',  -5	& ! 80
 
 		gt $loc, $loc_arg
 	end
@@ -636,7 +636,7 @@ if $ARGS[0] = 'jock':
 	pcs_eyesize		+= 1
 	pcs_lip			+= 1
 	pcs_mass['bust_gen']	= 12	& !B-Cup at ideal BMI
-	pcs_mass['butt_gen']	= 20	& !pcs_butt = 12
+	pcs_mass['butt_gen']	= 27	& !pcs_butt = 12
 	pcs_mass['body']		= 60
 
 	!!----- INVENTRORY -----!!
@@ -685,7 +685,7 @@ if $ARGS[0] = 'volleyball':
 
 		!!----- APPEARANCE -----!!
 		pcs_mass['bust_gen']	= 17	& !C-Cup at ideal BMI
-		pcs_mass['butt_gen']	= 20	& !pcs_butt = 12
+		pcs_mass['butt_gen']	= 27	& !pcs_butt = 12
 		pcs_mass['body']		= 56
 
 		!!----- INVENTRORY -----!!
@@ -734,7 +734,7 @@ elseif $ARGS[0] = 'dancer':
 		pcs_eyesize		-= 1
 		pcs_teeth		-= 1
 		pcs_mass['bust_gen']	= 12	& !B-Cup at ideal BMI
-		pcs_mass['butt_gen']	= 20	& !pcs_butt = 12
+		pcs_mass['butt_gen']	= 27	& !pcs_butt = 12
 		pcs_mass['body']		= 37
 
 		!!----- INVENTRORY -----!!
@@ -778,7 +778,7 @@ elseif $ARGS[0] = 'runner':
 
 		!!----- APPEARANCE -----!!
 		pcs_mass['bust_gen']	= 12	& !B-Cup at ideal BMI
-		pcs_mass['butt_gen']	= 20	& !pcs_butt = 12
+		pcs_mass['butt_gen']	= 27	& !pcs_butt = 12
 		pcs_mass['body']		= 45
 
 		!!----- INVENTRORY -----!!
@@ -825,7 +825,7 @@ elseif $ARGS[0] = 'football':
 
 		!!----- APPEARANCE -----!!
 		pcs_mass['bust_gen']	= 17	& !C-Cup at ideal BMI
-		pcs_mass['butt_gen']	= 20	& !pcs_butt = 12
+		pcs_mass['butt_gen']	= 27	& !pcs_butt = 12
 		pcs_mass['body']		= 60
 
 		!!----- INVENTRORY -----!!
@@ -884,7 +884,7 @@ if $ARGS[0] = 'cool':
 		pcs_eyecol	= 2
 		pcs_lip		+= 1
 		pcs_mass['bust_gen']	= 17	& !C-Cup at ideal BMI
-		pcs_mass['butt_gen']	= 20	& !pcs_butt = 16
+		pcs_mass['butt_gen']	= 32	& !pcs_butt = 14
 		pcs_mass['body']		= 60
 
 	!!----- INVENTRORY -----!!
@@ -933,7 +933,7 @@ if $ARGS[0] = 'socialite':
 		!!----- APPEARANCE -----!!
 		pcs_hairlng	-= 100
 		pcs_mass['bust_gen']	= 18	& !C-Cup at ideal BMI
-		pcs_mass['butt_gen']	= 20	& !pcs_butt = 16
+		pcs_mass['butt_gen']	= 32	& !pcs_butt = 14
 		pcs_mass['body']		= 60
 
 		!!----- INVENTRORY -----!!
@@ -989,7 +989,7 @@ elseif $ARGS[0] = 'beautiful':
 		pcs_lashes		+= 1
 		pcs_lip			+= 1
 		pcs_mass['bust_gen']	= 22	& !D-Cup at ideal BMI
-		pcs_mass['butt_gen']	= 20	& !pcs_butt = 16
+		pcs_mass['butt_gen']	= 32	& !pcs_butt = 14
 		pcs_mass['body']		= 56
 
 		!!----- INVENTRORY -----!!
@@ -1067,7 +1067,7 @@ elseif $ARGS[0] = 'anorexic':
 		pcs_lip			-= 1
 		pcs_teeth		-= 1
 		pcs_mass['bust_gen']	= 13	& !B-Cup at ideal BMI
-		pcs_mass['butt_gen']	= 20	& !pcs_butt = 8
+		pcs_mass['butt_gen']	= 17	& !pcs_butt = 8
 		pcs_mass['body']		= 15
 
 		!!----- INVENTRORY -----!!
@@ -1136,7 +1136,7 @@ if $ARGS[0] = 'gopnik':
 	pcs_eyesize		+= 1
 	pcs_lip			+= 1
 	pcs_mass['bust_gen']	= 13	& !B-Cup at ideal BMI
-	pcs_mass['butt_gen']	= 20
+	pcs_mass['butt_gen']	= 17	& !pcs_butt = 8
 	pcs_mass['body']		= 60
 
 	!!----- INVENTRORY -----!!
@@ -1207,7 +1207,7 @@ if $ARGS[0] = 'gopnikstart':
 
 		!!----- APPEARANCE -----!!
 		pcs_mass['bust_gen']	= 13	& !B-Cup at ideal BMI
-		pcs_mass['butt_gen']	= 20
+		pcs_mass['butt_gen']	= 17	& !pcs_butt = 8
 		pcs_mass['body']		= 65
 
 		!!----- RELATIONSHIPS -----!!
@@ -1258,7 +1258,7 @@ elseif $ARGS[0] = 'troublemaker':
 		!!----- APPEARANCE -----!!
 		pcs_hairlng		-= 65
 		pcs_mass['bust_gen']	= 13	& !B-Cup at ideal BMI
-		pcs_mass['butt_gen']	= 20
+		pcs_mass['butt_gen']	= 17	& !pcs_butt = 8
 		pcs_mass['body']		= 49
 
 		!!----- INVENTRORY -----!!
@@ -1321,7 +1321,7 @@ elseif $ARGS[0] = 'alternative':
 		pcs_eyesize	-= 1
 		pcs_teeth	-= 1
 		pcs_mass['bust_gen']	= 18	& !C-cup at ideal BMI
-		pcs_mass['butt_gen']	= 20
+		pcs_mass['butt_gen']	= 17	& !pcs_butt = 8
 		pcs_mass['body']		= 56
 
 		!!----- INVENTRORY -----!!
@@ -1403,7 +1403,7 @@ if $ARGS[0] = 'outcast':
 	pcs_eyesize		-= 1
 	pcs_lashes		-= 1
 	pcs_mass['bust_gen']	= 17	& !C-Cup at ideal BMI
-	pcs_mass['butt_gen']	= 20	& !pcs_butt = 4??
+	pcs_mass['butt_gen']	= 7		& !pcs_butt = 5
 	pcs_mass['body']		= 60
 
 	!!----- RELATIONSHIPS -----!!
@@ -1437,7 +1437,7 @@ if $ARGS[0] = 'friendless':
 		!!----- APPEARANCE -----!!
 		pcs_skin	-= 200
 		pcs_mass['bust_gen']	= 12	& !B-Cup at ideal BMI
-		pcs_mass['butt_gen']	= 20
+		pcs_mass['butt_gen']	= 7		& !pcs_butt = 5
 		pcs_mass['body']		= 51
 
 		!!----- RELATIONSHIPS -----!!
@@ -1475,7 +1475,7 @@ elseif $ARGS[0] = 'uglyduckling':
 		pcs_lashes	+= 2
 		pcs_lip		-= 1
 		pcs_mass['bust_gen']	= 28	& !E-Cup at ideal BMI
-		pcs_mass['butt_gen']	= 20
+		pcs_mass['butt_gen']	= 7		& !pcs_butt = 5
 		pcs_mass['body']		= 94
 
 		! Other
@@ -1522,7 +1522,7 @@ elseif $ARGS[0] = 'goodgirl':
 		pcs_lashes		+= 1
 		pcs_lip			+= 1
 		pcs_mass['bust_gen']	= 13	& !B-Cup at ideal BMI
-		pcs_mass['butt_gen']	= 20
+		pcs_mass['butt_gen']	= 7		& !pcs_butt = 5
 		pcs_mass['body']		= 43
 
 		!!----- INVENTRORY -----!!
@@ -1589,7 +1589,7 @@ elseif $ARGS[0] = 'slut':
 		pcs_lashes	+= 1
 		pcs_lip		+= 1
 		pcs_mass['bust_gen']	= 22	& !D-Cup at ideal BMI
-		pcs_mass['butt_gen']	= 20	& !pcs_butt = 8
+		pcs_mass['butt_gen']	= 22	& !pcs_butt = 10
 		pcs_mass['body']		= 52
 
 		!!----- INVENTRORY -----!!
@@ -1693,7 +1693,7 @@ elseif $ARGS[0] = 'goth':
 		pcs_eyesize		+= 2
 		pcs_lashes		+= 1
 		pcs_mass['bust_gen']	= 13	& !B-Cup at ideal BMI
-		pcs_mass['butt_gen']	= 20
+		pcs_mass['butt_gen']	= 7		& !pcs_butt = 5
 		pcs_mass['body']		= 41
 
 		!!----- INVENTRORY -----!!

+ 1 - 1
locations/intro_functions.qsrc

@@ -85,7 +85,7 @@ if $ARGS[0] = 'set_base_stats':
 	pcs_leghair		= 12
 	pcs_teeth		= 0
 	pcs_mass['bust_gen']	= 17	& !C-Cup at ideal BMI
-	pcs_mass['butt_gen']	= 20
+	pcs_mass['butt_gen']	= 22
 	pcs_mass['body']		= 60
 	pcs_energy		= 60
 	pcs_hydra		= 60

+ 15 - 20
locations/intro_sg.qsrc

@@ -4,18 +4,17 @@ gs 'themes', 'indoors'
 
 if $ARGS[0] = 'start':
 	menu_off = 1
-
 	'<center><img <<$set_imgh>> src="images/system/1_openings/shared/pre_5.jpg"></center>'
-	'You were born in the small town of Pavlovsk near the city of St Petersburg. You have an older sister, Anya, who is two years older than you.'
-	'Your mother is Natasha. You don''t know much about your biological father; your mother never wants to talk about him, or why he left you and Anya with her.'
-	'Your mother met another man not too long after her and your biological father got divorced, Vladimir. Together they had your little brother Kolka. Even though he''s not your real father, Vladimir has always treated you and Anya as if you were his own children.'
-	act '<center><b>Continue</b></center>': gt 'intro_sg', 'Two'
+	'You were born in the small town of Pavlovsk, near the city of St Petersburg.'
+	'Your mother is Natasha, but you don''t know much about your biological father since your mother never wants to talk about him, or why he left you and your older sister, Anya.'
+	'Your mother met another man, Vladimir, not long after she and your biological father got divorced. Together, they had your little brother, Kolka. Even though he''s not your real father, Vladimir has always treated you and Anya as if you were his own children.'
+	act 'Continue': gt 'intro_sg', 'Two'
 end
 
 if $ARGS[0] = 'Two':
 	'<center><img <<$set_imgh>> src="images/system/1_openings/shared/pre_6.jpg"></center>'
 	'You had a pleasant, undisturbed childhood when you were young. Although you don''t remember much from kindergarten, you do remember going to elementary school when you were 6 years old.'
-	act '<center><b>Continue</b></center>': gt 'intro_sg', 'Three'
+	act 'Continue': gt 'intro_sg', 'Three'
 end
 
 if $ARGS[0] = 'Three':
@@ -25,25 +24,23 @@ if $ARGS[0] = 'Three':
 	'Like it does for most girls, you reached the milestone of puberty when you were 13 years old. You had your first period, which sucked, but that was just the start of your changes.'
 	'Your chest felt strange and you discovered your breasts were growing! This excited you: how big will they be when you grow up? Hair also began to grow in your armpits and pubic area, and at the same time you felt things... intimate things. Over time you learned to appreciate these feelings, and how to manage your developing body. Your troublesome skin complexion remains an issue though.'
 	'When you finished 9th grade, you decided to continue with your secondary education. You completed the first one, only one more year of school to go, but first: What type of student are you?'
-	act '<center><b>Time to choose</b></center>': gt 'intro_sg_select', 'start'
+	act 'Continue': gt 'intro_sg_select', 'start'
 end
 
 if $ARGS[0] = 'four':
 	$loc = 'intro_sg'
 	$loc_arg = 'four'
-
-
 	'<center><b><font color = maroon>Character Face</font></b></center>'
-	'<center><b>Allows you to alter hair and eyes, use to match fixed profile picture if in use.</b></center>'
+	'<center><b>Allows you to alter hair and eyes. Use to match fixed profile picture if in use.</b></center>'
 	'<center><img <<$set_imgh>> src="images/system/1_openings/shared/character_creation_2.jpg"></center>'
 	*nl
 	'<center>Customize your:</center>'
 	'<center><a href="exec:gs ''intro_customization'', ''hair''"><img src="images/system/1_openings/shared/icon_hair.png"></a> <a href="exec:gs ''intro_customization'', ''eyes''"><img src="images/system/1_openings/shared/icon_eye.png"></a></center>'
 
-	if $start_type = 'sg_m':
-		act '<center><b>Done</b></center>': gt 'intro_sg_m', 'four'
+	if $start_type['magic'] = 'magic':
+		act 'Finished': gt 'intro_sg_m', 'four'
 	else
-		act '<center><b>Done</b></center>': gt 'intro_sg', 'five'
+		act 'Finished': gt 'intro_sg', 'five'
 	end
 end
 
@@ -53,11 +50,10 @@ if $ARGS[0] = 'five':
 	showstat 1
 	showobjs 1
 	gs 'obj_din', 'old'
-	*clr
-	cla
+	*clr & cla
 	'<center><img <<$set_imgh>> src="images/system/1_openings/2_sg/start_sg.jpg"></center>'
 	'Welcome to the Schoolgirl version! You will need to carry on with your school life, manage your relationships and deal with whatever else comes up along the way!'
-	act 'Begin':
+	act 'Start':
 		close all
 		if start_location = 2:
 			gt 'gadhouse', 'intro'
@@ -67,10 +63,9 @@ if $ARGS[0] = 'five':
 	end
 	act 'Restart':
 		*clr & cla
-		'This will reset everything and take you back to the begining.'
-		'Are you <i><b>very</i></b> sure you want to start from the begining again?'
-		act 'No, I hit the wrong option!': gt 'intro_sg', 'four'
-		act 'Yes, I''m sure, start over.': killall & gt 'start'
+		'This will reset everything and take you back to the beginning. Are you sure you want to start again?'
+		act 'No': gt 'intro_sg', 'four'
+		act 'Yes': killall & gt 'start'
 	end
 end
 

+ 29 - 29
locations/intro_sg_select.qsrc

@@ -394,7 +394,7 @@ if $ARGS[0] = 'nerd':
 	pcs_eyesize		-= 1
 	pcs_lashes		-= 1
 	pcs_mass['bust_gen']	= 13	& !B-Cup at ideal BMI
-	pcs_mass['butt_gen']	= 20	& !pcs_butt = 8??
+	pcs_mass['butt_gen']	= 17	& !pcs_butt = 8
 	pcs_mass['body']		= 60
 
 	!!----- INVENTRORY -----!!
@@ -472,7 +472,7 @@ if $ARGS[0] = 'nerdqueen':
 		pcs_lip			+= 1
 		pcs_teeth		-= 1
 		pcs_mass['bust_gen']	= 22	& !D-Cup at ideal BMI
-		pcs_mass['butt_gen']	= 20	& !pcs_butt = 12??
+		pcs_mass['butt_gen']	= 27	& !pcs_butt = 12
 		pcs_mass['body']		= 65
 
 		!!----- INVENTORY -----!!
@@ -533,7 +533,7 @@ elseif $ARGS[0] = 'goodstudent':
 		!!----- APPEARANCE -----!!
 		pcs_hairlng		-= 100
 		pcs_mass['bust_gen']	= 18	& !C-Cup at ideal BMI
-		pcs_mass['butt_gen']	= 20	& !pcs_butt = 8??
+		pcs_mass['butt_gen']	= 17	& !pcs_butt = 8
 		pcs_mass['body']		= 70
 
 		! other
@@ -595,7 +595,7 @@ elseif $ARGS[0] = 'computergeek':
 		pcs_hairlng 	-= 180
 		pcs_teeth		+= 1
 		pcs_mass['bust_gen']	= 13	& !B-Cup at ideal BMI
-		pcs_mass['butt_gen']	= 20	& !pcs_butt = 8??
+		pcs_mass['butt_gen']	= 17	& !pcs_butt = 8
 		pcs_mass['body']		= 42
 
 		! Other
@@ -641,7 +641,7 @@ elseif $ARGS[0] = 'chessplayer':
 		!!----- APPEARANCE -----!!
 		pcs_hairlng 	-= 100
 		pcs_mass['bust_gen']	= 13	& !B-Cup at ideal BMI
-		pcs_mass['butt_gen']	= 20	& !pcs_butt = 8??
+		pcs_mass['butt_gen']	= 17	& !pcs_butt = 8
 		pcs_mass['body']		= 73
 
 		!!----- RELATIONSHIPS -----!!
@@ -652,10 +652,10 @@ elseif $ARGS[0] = 'chessplayer':
 		chessmonth = month
 
 		!!----- School Grades -----!!
-		gs 'grades', 'grade_award', 'school', 'math', 5		! 90
-		gs 'grades', 'grade_award', 'school', 'rus',  5		! 90
-		gs 'grades', 'grade_award', 'school', 'lit',  5		! 90
-		gs 'grades', 'grade_award', 'school', 'mus',  -5	! 80
+		gs 'grades', 'grade_award', 'school', 'math', 5		& ! 90
+		gs 'grades', 'grade_award', 'school', 'rus',  5		& ! 90
+		gs 'grades', 'grade_award', 'school', 'lit',  5		& ! 90
+		gs 'grades', 'grade_award', 'school', 'mus',  -5	& ! 80
 
 		gt $loc, $loc_arg
 	end
@@ -717,7 +717,7 @@ if $ARGS[0] = 'jock':
 	pcs_eyesize		+= 1
 	pcs_lip			+= 1
 	pcs_mass['bust_gen']	= 12	& !B-Cup at ideal BMI
-	pcs_mass['butt_gen']	= 20	& !pcs_butt = 12??
+	pcs_mass['butt_gen']	= 27	& !pcs_butt = 12
 	pcs_mass['body']		= 60
 
 	!!----- INVENTRORY -----!!
@@ -769,7 +769,7 @@ if $ARGS[0] = 'volleyball':
 
 		!!----- APPEARANCE -----!!
 		pcs_mass['bust_gen']	= 17	& !C-Cup at ideal BMI
-		pcs_mass['butt_gen']	= 20	& !pcs_butt = 12??
+		pcs_mass['butt_gen']	= 27	& !pcs_butt = 12
 		pcs_mass['body']		= 56
 
 		!!----- INVENTRORY -----!!
@@ -826,7 +826,7 @@ elseif $ARGS[0] = 'dancer':
 		pcs_teeth		-= 1
 
 		pcs_mass['bust_gen']	= 12	& !B-Cup at ideal BMI
-		pcs_mass['butt_gen']	= 20	& !pcs_butt = 12??
+		pcs_mass['butt_gen']	= 27	& !pcs_butt = 12
 		pcs_mass['body']		= 37
 
 		!!----- INVENTRORY -----!!
@@ -871,7 +871,7 @@ elseif $ARGS[0] = 'runner':
 
 		!!----- APPEARANCE -----!!
 		pcs_mass['bust_gen']	= 12	& !B-Cup at ideal BMI
-		pcs_mass['butt_gen']	= 20	& !pcs_butt = 12??
+		pcs_mass['butt_gen']	= 27	& !pcs_butt = 12
 		pcs_mass['body']		= 45
 
 		!!----- INVENTRORY -----!!
@@ -913,7 +913,7 @@ elseif $ARGS[0] = 'football':
 
 		!!----- APPEARANCE -----!!
 		pcs_mass['bust_gen']	= 17	& !C-Cup at ideal BMI
-		pcs_mass['butt_gen']	= 20	& !pcs_butt = 12??
+		pcs_mass['butt_gen']	= 27	& !pcs_butt = 12
 		pcs_mass['body']		= 60
 
 		!!----- INVENTRORY -----!!
@@ -973,7 +973,7 @@ if $ARGS[0] = 'cool':
 	pcs_eyecol		= 2
 	pcs_lip			+= 1
 	pcs_mass['bust_gen']	= 22	& !D-Cup at ideal BMI
-	pcs_mass['butt_gen']	= 20	& !pcs_butt = 16
+	pcs_mass['butt_gen']	= 32	& !pcs_butt = 14
 	pcs_mass['body']		= 60
 
 	!!----- INVENTRORY -----!!
@@ -1027,7 +1027,7 @@ if $ARGS[0] = 'socialite':
 		!!----- APPEARANCE -----!!
 		pcs_hairlng		= 200
 		pcs_mass['bust_gen']	= 18	& !C-Cup at ideal BMI
-		pcs_mass['butt_gen']	= 20	& !pcs_butt = 16
+		pcs_mass['butt_gen']	= 32	& !pcs_butt = 14
 		pcs_mass['body']		= 60
 
 		!!----- INVENTRORY -----!!
@@ -1086,7 +1086,7 @@ elseif $ARGS[0] = 'beautiful':
 		pcs_lip		+= 1
 		pcs_teeth	-= 1
 		pcs_mass['bust_gen']	= 20	& !D-Cup at ideal BMI
-		pcs_mass['butt_gen']	= 20	& !pcs_butt = 16
+		pcs_mass['butt_gen']	= 32	& !pcs_butt = 14
 		pcs_mass['body']		= 56
 
 		!!----- INVENTRORY -----!!
@@ -1167,7 +1167,7 @@ elseif $ARGS[0] = 'anorexic':
 		pcs_lip			-= 1
 		pcs_teeth		-= 1
 		pcs_mass['bust_gen']	= 13	& !B-Cup at ideal BMI
-		pcs_mass['butt_gen']	= 20	& !pcs_butt = 8
+		pcs_mass['butt_gen']	= 17	& !pcs_butt = 8
 		pcs_mass['body']		= 15
 
 		!!----- INVENTRORY -----!!
@@ -1236,7 +1236,7 @@ if $ARGS[0] = 'gopnik':
 	pcs_eyesize		+= 1
 	pcs_lip			+= 1
 	pcs_mass['bust_gen']	= 13	& !B-Cup at ideal BMI
-	pcs_mass['butt_gen']	= 20	& !pcs_butt = 8??
+	pcs_mass['butt_gen']	= 17	& !pcs_butt = 8
 	pcs_mass['body']		= 60
 
 	!!----- INVENTRORY -----!!
@@ -1316,7 +1316,7 @@ if $ARGS[0] = 'gopnikstart':
 		!!----- APPEARANCE -----!!
 		pcs_teeth	+= 1
 		pcs_mass['bust_gen']	= 13	& !B-Cup at ideal BMI
-		pcs_mass['butt_gen']	= 20	& !pcs_butt = 8??
+		pcs_mass['butt_gen']	= 17	& !pcs_butt = 8
 		pcs_mass['body']		= 65
 
 		!!----- RELATIONSHIPS -----!!
@@ -1370,7 +1370,7 @@ elseif $ARGS[0] = 'troublemaker':
 		!!----- APPEARANCE -----!!
 		pcs_hairlng		-= 65
 		pcs_mass['bust_gen']	= 13	& !B-Cup at ideal BMI
-		pcs_mass['butt_gen']	= 20	& !pcs_butt = 8??
+		pcs_mass['butt_gen']	= 17	& !pcs_butt = 8
 		pcs_mass['body']		= 49
 
 		!!----- INVENTRORY -----!!
@@ -1435,7 +1435,7 @@ elseif $ARGS[0] = 'vitekgf':
 		pcs_hairlng		+= 80
 		pcs_eyesize		-= 1
 		pcs_mass['bust_gen']	= 32	& !E-Cup at ideal BMI
-		pcs_mass['butt_gen']	= 20	& !pcs_butt = 8??
+		pcs_mass['butt_gen']	= 17	& !pcs_butt = 8
 		pcs_mass['body']		= 55
 
 		!!----- INVENTRORY -----!!
@@ -1525,7 +1525,7 @@ elseif $ARGS[0] = 'alternative':
 		pcs_eyesize		-= 1
 		pcs_teeth		-= 1
 		pcs_mass['bust_gen']	= 18	& !C-Cup at ideal BMI
-		pcs_mass['butt_gen']	= 20
+		pcs_mass['butt_gen']	= 17	& !pcs_butt = 8
 		pcs_mass['body']		= 56
 
 		!!----- INVENTRORY -----!!
@@ -1601,7 +1601,7 @@ if $ARGS[0] = 'outcast':
 	pcs_eyesize	-= 1
 	pcs_lashes	-= 1
 	pcs_mass['bust_gen']	= 22	& !D-Cup at ideal BMI
-	pcs_mass['butt_gen']	= 20	& !pcs_butt = 4
+	pcs_mass['butt_gen']	= 7		& !pcs_butt = 5
 	pcs_mass['body']		= 60
 
 	!!----- INVENTRORY -----!!
@@ -1649,7 +1649,7 @@ if $ARGS[0] = 'friendless':
 		pcs_skin	-= 100
 		pcs_teeth	+= 1
 		pcs_mass['bust_gen']	= 12	& !B-Cup at ideal BMI
-		pcs_mass['butt_gen']	= 20	& !pcs_butt = 4
+		pcs_mass['butt_gen']	= 7		& !pcs_butt = 5
 		pcs_mass['body']		= 51
 
 		!!----- RELATIONSHIPS -----!!
@@ -1691,7 +1691,7 @@ elseif $ARGS[0] = 'uglyduckling':
 		pcs_lip		-= 1
 		pcs_teeth	+= 2
 		pcs_mass['bust_gen']	= 28	& !E-Cup at ideal BMI
-		pcs_mass['butt_gen']	= 20	& !pcs_butt = 4
+		pcs_mass['butt_gen']	= 7		& !pcs_butt = 5
 		pcs_mass['body']		= 94
 
 		! Other
@@ -1732,7 +1732,7 @@ elseif $ARGS[0] = 'goodgirl':
 		pcs_lashes		+= 1
 		pcs_lip			+= 1
 		pcs_mass['bust_gen']	= 13	& !B-Cup at ideal BMI
-		pcs_mass['butt_gen']	= 20	& !pcs_butt = 4
+		pcs_mass['butt_gen']	= 7		& !pcs_butt = 5
 		pcs_mass['body']		= 43
 
 		!!----- INVENTRORY -----!!
@@ -1807,7 +1807,7 @@ elseif $ARGS[0] = 'slut':
 		pcs_lashes		+= 1
 		pcs_lip			+= 1
 		pcs_mass['bust_gen']	= 22	& !D-Cup at ideal BMI
-		pcs_mass['butt_gen']	= 20	& !pcs_butt = 8??
+		pcs_mass['butt_gen']	= 22	& !pcs_butt = 10
 		pcs_mass['body']		= 52
 
 		!!----- INVENTRORY -----!!
@@ -1921,7 +1921,7 @@ elseif $ARGS[0] = 'goth':
 		pcs_lashes		+= 1
 		pcs_teeth		-= 1
 		pcs_mass['bust_gen']	= 13	& !B-Cup at ideal BMI
-		pcs_mass['butt_gen']	= 20	& !pcs_butt = 4
+		pcs_mass['butt_gen']	= 7		& !pcs_butt = 5
 		pcs_mass['body']		= 41
 
 		!!----- INVENTRORY -----!!

+ 43 - 81
locations/intro_sg_tg.qsrc

@@ -197,94 +197,56 @@ if $ARGS[0] = 'settings':
 	gs 'homes_properties', 'give_access', 'parents_home'
 	gs 'homes_properties', 'set_home', 'parents_home'
 
-	pcs_eyesize = 3
-	pcs_lip = 2
-	pcs_lashes = 1
-	pcs_haircol = 3
-	pcs_eyecol = 3
-	pcs_hairlng = 300
-
-	if birthmonth = 0: birthmonth = 4
-	if birthday = 0: birthday = 1
-
 	birthyear = 1999
 	yearlefttemp = 1
 
-	!!Looks
-	pcs_hgt = 170
-	pcs_mass['body'] = 80
-	pcs_mass['bust_gen'] = 17
-	pcs_mass['butt_gen'] = 20
-	pcs_pubes = 30
-	pcs_leghair = 12
-	pcs_makeup = 1
-	pcs_skin = 40
-	dick = 0
-
-	!!Basic
-	pcs_energy = 60
-	pcs_hydra = 60
-	pcs_sleep = 70
-
-	!!Attributes
-	pcs_inhib = 10
-	pcs_stren = 30
-	strenbuf = 10
-	pcs_agil = 30
-	agilbuf = 10
-	pcs_vital = 30
-	vitalbuf = 10
-	pcs_intel = 30
-	pcs_react = 30
-	pcs_sprt = 20
-	pcs_chrsm = 35
-	pcs_prcptn = 40
-	willpowermax = 50
-
-	!!Skills
-	pcs_def = 20
-	pcs_run = 20
-	pcs_gaming = 20
-	pcs_humint = 20
-	pcs_observ = 20
+	if birthmonth = 0: birthmonth = 4
+	if birthday = 0: birthday = 1
 
+	gs 'intro_functions', 'set_base_stats'
+
+	!!----- SKILS -----!!
+	! Attributes
+	pcs_stren		= 30
+	pcs_agil		= 30
+	pcs_vital		= 30
+	pcs_intel		= 30
+	pcs_react		= 30
+	pcs_sprt		= 20
+	pcs_prcptn		= 40
+
+	strenbuf		= 30
+	agilbuf			= 30
+	vitalbuf		= 30
+
+	! Sexual
+	pcs_inhib		= 10
+	willpowermax 	= 50
+
+	! Combat
+	pcs_def			= 20
+
+	! Sport
+	pcs_run			= 20
+
+	! Other
+	pcs_gaming		= 20
+	pcs_humint		= 20
+	pcs_observ		= 20
+
+	!!----- APPEARANCE -----!!
+	pcs_skin		= 40
+	pcs_haircol		= 3
+	pcs_eyecol		= 3
+	pcs_eyesize		= 3
+	pcs_lip			= 2
+
+	!!----- SCHOOL GRADES -----!!
 	killvar 'class_list_institution'
 	killvar 'class_list_name'
+	gs 'intro_functions', 'create_sgclasses'
+	gs 'intro_functions', 'set_base_sgrades'
 
-	!!Setting the shcoll classes such that grades can be assigned
-	gs 'grades', 'createclass', 'school', 'math', 3, 2, 'yes', 'yes', 0, 0
-	gs 'grades', 'createclass', 'school', 'rus', 3, 2, 'yes', 'yes', 0, 0
-	gs 'grades', 'createclass', 'school', 'lit', 2, 2, 'yes', 'yes', 0, 0
-	gs 'grades', 'createclass', 'school', 'art', 2, 2, 'yes', 'no', 0, 0
-	gs 'grades', 'createclass', 'school', 'bio', 2, 2, 'yes', 'yes', 0, 0
-	gs 'grades', 'createclass', 'school', 'pe', 3, 1, 'yes', 'no', 0, 0
-	gs 'grades', 'createclass', 'school', 'eng', 2, 2, 'yes', 'yes', 0, 0
-	gs 'grades', 'createclass', 'school', 'geo', 2, 2, 'yes', 'yes', 0, 0
-	gs 'grades', 'createclass', 'school', 'sci', 2, 2, 'yes', 'yes', 0, 0
-	gs 'grades', 'createclass', 'school', 'shop', 2, 2, 'yes', 'no', 0, 0
-	gs 'grades', 'createclass', 'school', 'comp', 3, 2, 'yes', 'yes', 0, 0
-	gs 'grades', 'createclass', 'school', 'mus', 2, 2, 'yes', 'no', 0, 0
-	gs 'grades', 'createclass', 'school', 'his', 2, 2, 'yes', 'yes', 0, 0
-
-	!!Grades
-	gs 'grades', 'grade_award', 'school', 'math', 55
-	gs 'grades', 'grade_award', 'school', 'rus', 25
-	gs 'grades', 'grade_award', 'school', 'lit', 55
-	gs 'grades', 'grade_award', 'school', 'art', 55
-	gs 'grades', 'grade_award', 'school', 'bio', 55
-	gs 'grades', 'grade_award', 'school', 'pe', 55
-	gs 'grades', 'grade_award', 'school', 'eng', 25
-	gs 'grades', 'grade_award', 'school', 'geo', 55
-	gs 'grades', 'grade_award', 'school', 'sci', 55
-	gs 'grades', 'grade_award', 'school', 'shop', 55
-	gs 'grades', 'grade_award', 'school', 'comp', 55
-	gs 'grades', 'grade_award', 'school', 'mus', 55
-	gs 'grades', 'grade_award', 'school', 'his', 55
-
-	!!Money, School, ...
-	money = 2000
-	prezikProver = 3
-	brothersawpirsF = 0
 	
 	gt 'intro_sg_tg', 'intro_6_looks'
 end

+ 16 - 4
locations/intro_uni.qsrc

@@ -93,11 +93,11 @@ if $ARGS[0] = 'degree_choice':
 	gs 'npc_relationship', 'default_family_friends'
 	*clr & cla
 	'<center><img <<$set_imgh>> src="images/system/1_openings/6_uni/degree_choice.jpg"></center>'
-	'This is where you decide what degree you wish to study. For now, Teaching is the only option, but more will be added in the future.'
+	'This is where you decide what degree you wish to study. For now, Teaching and Nursing are the only options, but more will be added in the future.'
 	
 	act 'Teaching':
-		!!variables for teaching degree
-		$university['enrolled_in']= 'teaching_studies'
+		!! variables for teaching degree
+		$university['enrolled_in'] = 'teaching_studies'
 		gs 'grades', 'createclass', 'uni_teaching_studies_semester_1', 'general education 101', 3, 2, 'no', 'no', 1, 12
 		gs 'grades', 'createclass', 'uni_teaching_studies_semester_1', 'teaching methods 101', 3, 2, 'no', 'no', 1, 12
 		gs 'grades', 'createclass', 'uni_teaching_studies_semester_1', 'learning theories 101', 3, 2, 'no', 'no', 1, 12
@@ -106,6 +106,18 @@ if $ARGS[0] = 'degree_choice':
 		gs 'grades', 'grade_award', 'uni_teaching_studies_semester_1', 'learning theories 101', 35
 		gt 'intro_uni', 'select_electives'
 	end
+	
+	act 'Nursing':
+		!! variables for nursing degree
+		$university['enrolled_in'] = 'nursing'
+		gs 'grades', 'createclass', 'uni_nursing_semester_1', 'patient care 101', 3, 2, 'no', 'no', 1, 12
+		gs 'grades', 'createclass', 'uni_nursing_semester_1', 'anatomy and physiology 101', 3, 2, 'no', 'no', 1, 12
+		gs 'grades', 'createclass', 'uni_nursing_semester_1', 'examination and treatment 101', 3, 2, 'no', 'no', 1, 12
+		gs 'grades', 'grade_award', 'uni_nursing_semester_1', 'patient care 101', 35
+		gs 'grades', 'grade_award', 'uni_nursing_semester_1', 'anatomy and physiology 101', 35
+		gs 'grades', 'grade_award', 'uni_nursing_semester_1', 'examination and treatment 101', 35
+		gt 'intro_uni', 'select_electives'
+	end
 end
 
 if $ARGS[0] = 'select_electives':
@@ -120,7 +132,7 @@ if $ARGS[0] = 'select_electives':
 			'You read about the computer class, which seems to be a basic class that teaches you how to use a computer, the functions of some of the more basic programs and how to troubleshoot the OS if something goes wrong. It seems like a fairly useful class.'
 			act 'Enroll in the computer class':
 				cla
-				'You decide to enrol in the computer class for the first and second semester of this year.'
+				'You decide to enroll in the computer class for the first and second semester of this year.'
 				$university['elective_semester_1_1'] = 'Computers 101'
 				$university['elective_semester_2_1'] = 'Computers 102'
 				act 'Consider other elective classes': gt 'intro_uni', 'select_electives'

+ 10 - 10
locations/journal.qsrc

@@ -587,7 +587,7 @@ if $ARGS[0] = 'uni':
 		'You have graduated from the University of St. Petersburg with a degree in '+func('uni_programs', 'program_name')+'.'
 
 	else
-		'You have are enrolled in the '+trim(MID('  first, second,  third, fourth,  fifth,  sixth,seventh, eighth,  ninth,  tenth', university['enrolled_in_semester']*8-7,7))+' semester of the '+func('uni_programs', 'program_name')+' at the University of St. Petersburg.'
+		'You are currently enrolled in the '+trim(MID('  first, second,  third, fourth,  fifth,  sixth,seventh, eighth,  ninth,  tenth', university['enrolled_in_semester']*8-7,7))+' semester of the '+func('uni_programs', 'program_name')+' degree at the University of St. Petersburg.'
 	end
 
 	if $university['elective1'] ! '' or $university['elective2'] ! '' or $university['elective3'] ! '':
@@ -638,7 +638,7 @@ if $ARGS[0] = 'uni':
 			'You are in the '+trim(MID('  first, second,  third, fourth,  fifth,  sixth,seventh, eighth,  ninth,  tenth', university['semester_week']*8-7,7))+' week of the semester, which last 15 weeks.'
 
 		else
-			'You are in the '+str(university['semester_week']) + 'th week of the semester which last 15 weeks.'
+			'You are in the '+str(university['semester_week']) + 'th week of the semester, which last 15 weeks.'
 		end
 
 		'<center><h2>Class schedule</h2></center>'
@@ -656,10 +656,10 @@ if $ARGS[0] = 'uni':
 		:grade_loop
 			if $class_list_institution[j] = 'uni_<<$university[''enrolled_in'']>>_semester_<<university[''enrolled_in_semester'']>>':
 				if     dyneval( 'RESULT = class[''<<$class_list_institution[j]>>_<<$class_list_name[j]>>_grade'']') >= dyneval( 'RESULT = (4*<<university[''semester_week'']>> + 32)'):
-					'You think you are doing great in <<$class_list_name[j]>> and will probably pass with a top grade if you keep this up.'
+					'You think you''re doing great in <<$class_list_name[j]>> and will probably pass with a top grade if you keep this up.'
 
 				elseif dyneval( 'RESULT = class[''<<$class_list_institution[j]>>_<<$class_list_name[j]>>_grade'']') >  dyneval( 'RESULT = (2*<<university[''semester_week'']>> + 32)'):
-					'You are following the <<$class_list_name[j]>> class well and will probably pass with a good grade if you keep this up, but to get the top mark you need to put in some more effort.'
+					'You''re following the <<$class_list_name[j]>> class well and will probably pass with a good grade if you keep this up, but to get the top mark you''ll need to put in some more effort.'
 
 				elseif dyneval( 'RESULT = class[''<<$class_list_institution[j]>>_<<$class_list_name[j]>>_grade'']') >= dyneval( 'RESULT = (1*<<university[''semester_week'']>> + 32)'):
 					'You have trouble following the <<$class_list_name[j]>> class, but will probably still pass. If you want a good grade, then you''ll really need to do something about it.'
@@ -686,22 +686,22 @@ if $ARGS[0] = 'uni':
 		:exam_loop
 			if $class_list_institution[j] = 'uni_<<$university[''enrolled_in'']>>_semester_<<university[''enrolled_in_semester'']>>':
 				if     dyneval( 'RESULT = class[''<<$class_list_institution[j]>>_<<$class_list_name[j]>>_exam_done'']') = 1:
-					'You did your <<$class_list_name[j]>> exam and think you will get an <<$class[''<<$class_list_institution[j]>>_<<$class_list_name[j]>>_grade'']>>.'
+					'You completed your <<$class_list_name[j]>> exam and think you will get an <<$class[''<<$class_list_institution[j]>>_<<$class_list_name[j]>>_grade'']>>.'
 
 				elseif func('uni_programs', 'exam', 'is_over', $class_list_name[j]) = 1:
-					'Your exam <<$class_list_name[j]>> is over and you did not go. This means you will fail the class and thefore also the semester.'
+					'Your exam <<$class_list_name[j]>> is over, but you did not attend. This means you will fail the class and therefore the semester.'
 
 				elseif dyneval( 'RESULT = class[''<<$class_list_institution[j]>>_<<$class_list_name[j]>>_grade'']') >= 100:
-					'You think you are well prepared in your <<$class_list_name[j]>> exam and will probably pass with the highest mark possible.'
+					'You think you''re well prepared for your <<$class_list_name[j]>> exam and will probably pass with the highest mark possible.'
 
 				elseif dyneval( 'RESULT = class[''<<$class_list_institution[j]>>_<<$class_list_name[j]>>_grade'']') >= 90:
-					'You think you are well prepared in your <<$class_list_name[j]>> exam and will probably pass with a 5, but a little more studying never hurts.'
+					'You think you''re well prepared for your <<$class_list_name[j]>> exam and will probably pass with a 5, but a little more studying never hurts.'
 
 				elseif dyneval( 'RESULT = class[''<<$class_list_institution[j]>>_<<$class_list_name[j]>>_grade'']') >= 70:
-					'You think that you are prepared pretty well for your <<$class_list_name[j]>> exam and will probably get a 4. With some more studying, you might get a 5.'
+					'You think that you''ve prepared pretty well for your <<$class_list_name[j]>> exam and will probably get a 4. With some more studying, you might get a 5.'
 
 				elseif dyneval( 'RESULT = class[''<<$class_list_institution[j]>>_<<$class_list_name[j]>>_grade'']') >= 40:
-					'You think you are prepared enough to pass your <<$class_list_name[j]>> exam, but if you want a good grade, then you need to do some serious studying.'
+					'You think you''ve prepared enough to pass your <<$class_list_name[j]>> exam, but if you want a good grade, then you''ll need to do some serious studying.'
 
 				else
 					'If your <<$class_list_name[j]>> exam was today, then you would fail. Time to hit the books if you don''t want to fail the semester.'

+ 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 - 1
locations/kendra.qsrc

@@ -242,7 +242,7 @@ if $ARGS[0] = 'kendra_room_9':
 	'Once inside, she leads you over to her bed and commands you to strip.'
 	'"Yes, mistress." You start stripping as she opens the night stand and pulls out a collar that she tightly buckles it around your neck, making it a little hard for you to breathe. With the collar firmly in place, she pulls out a leash and attaches it to the collar before pushing you down. "Get down on all fours like a good slave."'
 	*nl
-	'You get down on your hands and knees and she leads you around the room for a few minutes before she grabs a bowl and fills it with water. She places it down in front of you as she sits on the couch and starts texting on her phone. "Drink!" You start lapping up the water as best you can bnefore sitting quietly until she notices you.'
+	'You get down on your hands and knees and she leads you around the room for a few minutes before she grabs a bowl and fills it with water. She places it down in front of you as she sits on the couch and starts texting on her phone. "Drink!" You start lapping up the water as best you can before sitting quietly until she notices you.'
 	'After a while, she finally points to the door. "You can go now slave, but put your collar and leash away first."'
 	'"Yes, mistress." You stand up and take off the collar and leash before walking over and putting them back in the drawer where they belong. You then walk over to the door and leave.'
 	gs 'arousal', 'foreplay', 30, 'sub', 'humiliation', 'inhibition'

+ 5 - 1
locations/loadg.qsrc

@@ -1,10 +1,14 @@
 # loadg
 
 showobjs max(1 - debug_warning_closed, loadg_show_debug)
-killvar 'call_trace_manual'
+
 killvar '$git_hash'
 gs 'addbuilddate'
 gs 'saveupdater'
 
+debug['trace_shown'] = 0
+debug['trace_loc_change'] = 0
+! killvar '$trace_locations'
+
 --- loadg ---------------------------------
 

+ 2 - 0
locations/metro.qsrc

@@ -42,6 +42,8 @@ if $ARGS[0] = 'start':
 		end
 		gt $loc, $loc_arg
 	end
+
+	if $loc = 'city_suburbs': act 'Walk to the bus stop (0:15)': minut += 15 & gt 'bus', 'suburbs'
 	
 	if money >= 16:
 		if $loc ! 'city_residential':

+ 2 - 2
locations/office.qsrc

@@ -243,7 +243,7 @@ if $ARGS[0] = 'womens_restrooms':
 	dynamic $tampon
 	dynamic $quickwash
 	dynamic $basin
-	dynamic $publicpan
+	dynamic $publicpan, 'no_prost'
 
 	act 'Go to the corridor':gt 'office', 'work_floor'
 end
@@ -308,7 +308,7 @@ if $ARGS[0] = 'mens_restrooms':
 		dynamic $tampon
 		dynamic $quickwash
 		dynamic $basin
-		dynamic $publicpan
+		dynamic $publicpan, 'no_prost'
 		act 'Go to the corridor':gt 'office', 'work_floor'
 	end
 end

+ 3 - 3
locations/onobjsel.qsrc

@@ -64,11 +64,11 @@ if $selobj = '<center>Remove debug info</center>':
 end
 
 if $selobj = '<center>Toggle Call Trace</center>':
-	if call_trace_shown = 0:
-		call_trace_shown = 1
+	if debug['trace_shown'] = 0:
+		debug['trace_shown'] = 1
 		gs 'stat_display'
 	else
-		call_trace_shown = 0
+		debug['trace_shown'] = 0
 		gs 'stat'
 	end
 end

+ 1 - 1
locations/pav_clinic.qsrc

@@ -1943,7 +1943,7 @@ if $ARGS[0] = 'maternity_ward_donation':
 			end
 			lact_ev['gpoli_milkedvolume'] = 0
 			if pcs_gpoli_donationsessioncount > 0:
-				mward_donatemoney = (pcs_gpoli_donationsessioncount*5)/10*10
+				mward_donatemoney = (pcs_gpoli_donationsessioncount*3)/10*10
 			else
 				mward_donatemoney = 0
 			end

+ 1 - 1
locations/pav_complex.qsrc

@@ -84,7 +84,7 @@ if $ARGS[0] = 'start':
 	*nl
 	'Behind the apartments is a row of <a href="exec:minut += 3 & gt ''pav_complex'', ''garages''">garages</a> and storage space for tenants.'
 
-	if mother['kickedout_timer'] ! 0 and mother['kickedout_timer'] + 3 <= daystart and hour > 6 and hour <= 15:
+	if mother['kickedout_timer'] ! 0 and mother['kickedout_timer'] + 3 <= daystart and hour > 6 and hour <= 15 and cumloc[11] = 0:
 		gs 'mother_chats', 'reconciliation_talk'
 	exit
 	end

+ 5 - 5
locations/pav_lake.qsrc

@@ -704,23 +704,23 @@ end
 if $ARGS[0] = 'klake':
     *clr & cla
 	KsenyaQW = 2
-    '<center><img <<$set_imgh>> src="images/character/pushkin/ksenya/KLake2.jpg"></center>'
+    '<center><img <<$set_imgh>> src="images/character/pushkin/ksenya/lake2.jpg"></center>'
     'As you head to the lake you see a figure walking around the water. It''s Ksenya. She is in a black negligee and nothing else. You walk up to her and see her mother taking pictures of her. You stand back for a bit watching her work.'
     act 'Continue':
         *clr & cla
-        '<center><img <<$set_imgh>> src="images/character/pushkin/ksenya/KLake1.jpg"></center>'
+        '<center><img <<$set_imgh>> src="images/character/pushkin/ksenya/lake1.jpg"></center>'
         'You watch her for some time and you see her lift the back side of her outfit and her panties drop to the sand. You hear her mother say something and she turns around.'
         act 'Continue':
             *clr & cla
-            '<center><img <<$set_imgh>> src="images/character/pushkin/ksenya/KLake3.jpg"></center>'
+            '<center><img <<$set_imgh>> src="images/character/pushkin/ksenya/lake3.jpg"></center>'
             'When she turns around, she sees you and is shocked but keeps doing what she is told by her mother, trying to look like nothing is wrong.'
             act 'Continue':
                 *clr & cla
-                '<center><img <<$set_imgh>> src="images/character/pushkin/ksenya/KLake4.jpg"></center>'
+                '<center><img <<$set_imgh>> src="images/character/pushkin/ksenya/lake4.jpg"></center>'
                 'She makes a tease with her panties around her ankles. She lifts her leg and makes it look like she is going to grab them but doesn''t.'
                 act 'Continue':
                     *clr & cla
-                    '<center><img <<$set_imgh>> src="images/character/pushkin/ksenya/KLake5.jpg"></center>'
+                    '<center><img <<$set_imgh>> src="images/character/pushkin/ksenya/lake5.jpg"></center>'
                     'She pulls her dress up and shows you her bare pussy. You hear her mother sigh and keep taking a few pictures.'
                     '"Is she doing this for me?" you ask yourself as you watch. "I''ll have to ask her the next time I see her. Best get away before her mother sees me" and with that, you leave the lake area.'
                     act 'Go back': gt 'pav_lake'

+ 1 - 1
locations/pav_market.qsrc

@@ -41,7 +41,7 @@ end
 *nl
 'A rather run-down <a href="exec:minut += 1 & gt ''pav_hotel''">hotel</a> is just across the square, where travelers can spend the night. The manager is always looking for maids among the local young girls. Because of it''s frequent use by the local prostitutes, most people prefer to stay at the middle-class hotel by the main road.'
 
-if mother['kickedout_timer'] ! 0 and mother['kickedout_timer'] + 3 <= daystart and hour > 6 and hour <= 15:
+if mother['kickedout_timer'] ! 0 and mother['kickedout_timer'] + 3 <= daystart and hour > 6 and hour <= 15 and cumloc[11] = 0:
 	gs 'mother_chats', 'reconciliation_talk'
 exit
 end

+ 21 - 14
locations/pav_park_sex.qsrc

@@ -319,6 +319,7 @@ if $ARGS[0] = 'pressured_for_bra':
 	act 'Expose your bra':
 		*clr & cla
 		gs 'fame', 'pav', 'sex', 1
+		svetafall += 1
 		grupvalue[4] += 1
 		npc_rel['A9'] += 1
 		npc_rel['A10'] += 1
@@ -332,11 +333,11 @@ if $ARGS[0] = 'pressured_for_bra':
 		'<center><img <<$set_imgh>> src="images/locations/pavlovsk/park/event/gopnik/fall_strip2.jpg"></center>'
 		'You grin, get up in front of everyone and expose your bra for everyone to see. The boys hoot and holler while Pauline records the whole thing on her phone. You stand there with your bra for several minutes for them, and you can''t help but smile at how happy it makes them all. Arkadi then speaks up.'
 		if grupTipe = 1:
-			$grp_msg = '"You know, being one of the stuck-up bitches, you''re much cooler than I expected."'
+			$grp_msg = 'You know, being one of the stuck-up bitches, you''re much cooler than I expected.'
 		elseif grupTipe = 2:
-			$grp_msg = '"You know, being one of the brain-dead jocks, you''re much cooler than I expected."'
+			$grp_msg = 'You know, being one of the brain-dead jocks, you''re much cooler than I expected.'
 		else
-			$grp_msg = '"You know, being such a nerd, you''re much less shy than I expected."'
+			$grp_msg = 'You know, being such a nerd, you''re much less shy than I expected.'
 		end
 		'"<<$grp_msg>> Not to mention a hell of a lot more fun." The rest all agree. You blush at the compliment and put your top back on. Shortly after the party is over and everyone starts to go their own way, but Vitek calls out to you as you walk away. "You should really come back and hang out with us again." Most of the others agree before they split up and head off.'
 		gs 'arousal', 'flashlite', 5, 'sub', 'inhibition', 'humiliation'
@@ -387,6 +388,7 @@ if $ARGS[0] = 'pressured_for_panties':
 	act 'Expose your panties':
 		*clr & cla
 		gs 'fame', 'pav', 'sex', 2
+		svetafall += 1
 		grupvalue[4] += 1
 		npc_rel['A9'] += 1
 		npc_rel['A10'] += 1
@@ -400,14 +402,14 @@ if $ARGS[0] = 'pressured_for_panties':
 		'<center><img <<$set_imgh>> src="images/locations/pavlovsk/park/event/gopnik/fall_strip3.jpg"></center>'
 		'You grin and get up in front of everyone and expose your panties for all to see, turning around to give them a complete view. The boys hoot and holler while Pauline records the whole thing on her phone. You stand there with your panties exposed for several minutes for them, and you can''t help but smile at how happy it makes them all. Arkadi then speaks up.'
 		if grupTipe = 1:
-			$grp_msg = '"You know, being one of the stuck-up bitches, you''re much cooler than I expected."'
+			$grp_msg = 'You know, being one of the stuck-up bitches, you''re much cooler than I expected.'
 		elseif grupTipe = 2:
-			$grp_msg = '"You know, being one of the brain-dead jocks, you''re much cooler than I expected."'
+			$grp_msg = 'You know, being one of the brain-dead jocks, you''re much cooler than I expected.'
 		else
-			$grp_msg = '"You know, being such a nerd, you''re much less shy than I expected."'
+			$grp_msg = 'You know, being such a nerd, you''re much less shy than I expected.'
 		end
 
-		'<<grp_msg>>  Not to mention a hell of a lot more fun." The rest all agree. You blush at the compliment and put your bottoms back on. Shortly after the party is over and everyone starts to go their own way, but Vitek calls out to you as you begin to walk away. "You should really come back and hang out with us again." Most of the others agree before they split up and head off.'
+		'"<<$grp_msg>> Not to mention a hell of a lot more fun." The rest all agree. You blush at the compliment and put your bottoms back on. Shortly after the party is over and everyone starts to go their own way, but Vitek calls out to you as you begin to walk away. "You should really come back and hang out with us again." Most of the others agree before they split up and head off.'
 		gs 'arousal', 'flashlite', 5, 'sub', 'inhibition', 'humiliation'
 		gs 'arousal', 'end'
 		gs 'stat'
@@ -455,6 +457,7 @@ if $ARGS[0] = 'pressured_for_tits':
 	act 'Expose your tits':
 		*clr & cla
 		gs 'fame', 'pav', 'sex', 3
+		svetafall += 1
 		grupvalue[4] += 1
 		npc_rel['A9'] += 1
 		npc_rel['A10'] += 1
@@ -468,13 +471,13 @@ if $ARGS[0] = 'pressured_for_tits':
 		'<center><img <<$set_imgh>> src="images/locations/pavlovsk/park/event/gopnik/fall_strip4.jpg"></center>'
 		'You grin, get up in front of everyone and expose your breasts for all to see. The boys hoot and holler while Pauline records the whole thing on her phone. You kneel there with your breasts out for several minutes for them, and you can''t help but smile at how happy it makes them all. Arkadi then speaks up.'
 		if grupTipe = 1:
-			$grp_msg = '"You have nice tits for one of the stuck-up princesses."' 
+			$grp_msg = 'You have nice tits for one of the stuck-up princesses.' 
 		elseif grupTipe = 2:
-			$grp_msg = '"You have nice tits for one of the juiced-up jocks. You''re a lot cooler than I was expecting."'
+			$grp_msg = 'You have nice tits for one of the juiced-up jocks. You''re a lot cooler than I was expecting.'
 		else
-			$grp_msg = '"You have nice tits for one of the nerds. You should wear tighter clothes and show them off more."'
+			$grp_msg = 'You have nice tits for one of the nerds. You should wear tighter clothes and show them off more.'
 		end
-		'"<<$grp_msg>>  Not to mention a hell of a lot more fun." The rest all agree. You blush at the compliment and put your top back on. Shortly after the party is over and everyone starts to go their own way, but Vitek calls out to you as you begin to walk away. "You should really come back and hang out with us again." Most of the others agree before they split up and head off.'
+		'"<<$grp_msg>> Not to mention a hell of a lot more fun." The rest all agree. You blush at the compliment and put your top back on. Shortly after the party is over and everyone starts to go their own way, but Vitek calls out to you as you begin to walk away. "You should really come back and hang out with us again." Most of the others agree before they split up and head off.'
 		gs 'arousal', 'flash', 5, 'sub', 'inhibition', 'humiliation'
 		gs 'arousal', 'end'
 		gs 'stat'
@@ -522,6 +525,7 @@ if $ARGS[0] = 'pressured_for_pussy':
 	act 'Expose your pussy':
 		*clr & cla
 		gs 'fame', 'pav', 'sex', 4
+		svetafall += 1
 		grupvalue[4] += 1
 		npc_rel['A9'] += 1
 		npc_rel['A10'] += 1
@@ -535,11 +539,11 @@ if $ARGS[0] = 'pressured_for_pussy':
 		'<center><img <<$set_imgh>> src="images/locations/pavlovsk/park/event/gopnik/fall_strip5.jpg"></center>'
 		'You grin and get up before everyone, stripping down and exposing your pussy for all to see. The boys hoot and holler while Pauline records the whole thing on her phone. You stand there with your pussy exposed for several minutes for them, and you can''t help but smile at how happy it makes them all. Arkadi then speaks up.'
 		if grupTipe = 1:
-			$grp_msg = '"You''re a lot cooler than I expected for one of the stuck-up queens."'
+			$grp_msg = 'For one of the stuck-up queens, you''re a lot cooler than I expected.'
 		elseif grupTipe = 2:
-			$grp_msg = '"You''re much cooler than I was expecting for one of the jocks."'
+			$grp_msg = 'For one of the jocks, you''re much cooler than I was expecting.'
 		else
-			$grp_msg= '"For one of the nerds, you''re a lot cooler than I was expecting."'
+			$grp_msg= 'For one of the nerds, you''re a lot cooler than I was expecting.'
 		end
 		
 		'"You have a real fuckable looking pussy. <<$grp_msg>> Not to mention a hell of a lot more fun." The rest all agree. You blush at the compliment and put your top back on. Shortly after the party is over and everyone starts to go their own way, but Vitek calls out to you as you begin to walk away. "You should really come back and hang out with us again." Most of the others agree before they split up and head off.'
@@ -595,6 +599,7 @@ if $ARGS[0] = 'pressured_for_blowjob':
 		*clr & cla
 		gs 'fame', 'pav', 'sex', 10
 		grupvalue[4] += 1
+		svetafall += 1
 		npc_rel['A9'] += 1
 		npc_rel['A10'] += 1
 		npc_rel['A11'] += 1
@@ -675,6 +680,7 @@ if $ARGS[0] = 'pressured_for_oral_gb':
 	act 'Get down on your knees':
 		*clr & cla
 		gs 'fame', 'pav', 'sex', 50
+		svetafall += 1
 		grupvalue[4] += 1
 		npc_rel['A9'] += 1
 		npc_rel['A10'] += 1
@@ -782,6 +788,7 @@ if $ARGS[0] = 'pressured_for_gangbang':
 		*clr & cla
 		gs 'fame', 'pav', 'sex', 100
 !!to explain why the huge hits to fame it is because they are all bragging about it telling everyone and Pauline has been sharing the videos with all the gopniks, after this one she will share all the videos with all the students in school.
+		svetafall = 6
 		grupvalue[4] += 1
 		npc_rel['A9'] += 1
 		npc_rel['A10'] += 1

+ 3 - 3
locations/pav_parkev.qsrc

@@ -1406,15 +1406,15 @@ if $ARGS[0] = 'male_gopnik_beer':
 							gs 'pav_park_sex', 'pressured_for_bra'
 						elseif svetafall = 1 and $pantyworntype ! 'none':
 							gs 'pav_park_sex', 'pressured_for_panties'
-						elseif svetafall = 2:
+						elseif svetafall = 2 or (svetafall = 0 and $braworntype = 'none'):
 							gs 'pav_park_sex', 'pressured_for_tits'
-						elseif svetafall = 3:
+						elseif svetafall = 3 or (svetafall = 1 and $pantyworntype = 'none'):
 							gs 'pav_park_sex', 'pressured_for_pussy'
 						elseif svetafall = 4:
 							gs 'pav_park_sex', 'pressured_for_blowjob'
 						elseif svetafall = 5:
 							gs 'pav_park_sex', 'pressured_for_oral_gb'
-						else
+						elseif svetafall > 5:
 							gs 'pav_park_sex', 'pressured_for_gangbang'
 						end
 					else

+ 2 - 0
locations/pav_train_hall.qsrc

@@ -161,6 +161,8 @@ if $ARGS[0] = 'platform':
 	if week >= 6 and hour >= 9 and hour <= 10:'You notice <a href="exec:gt ''gschool_socialchg1'', ''tBella''">Bella</a> standing at the train station platform, looking at the time table.'
 
 	act 'Enter the station building': gt 'pav_train_hall'
+	if transportVars['buspass_day'] > daystart: act 'Walk to the bus platfrom (0:02)': minut += 2 & gt 'bus', 'pavstation_busses'
+
 	act 'Look at the train schedule':
 		*clr & cla
 		gs 'transport_functions', 'display_train_schedule', 'pc'

+ 14 - 8
locations/petkaEv.qsrc

@@ -5,7 +5,20 @@ if $ARGS[0] = 'follow_petka':
 	*clr & cla
 	gs 'stat'
 	'<center><img <<$set_imgh>> src="images/locations/pavlovsk/school/bathroom/sex/boys/nerdtalk.jpg"></center>'
-	if petka_homework = 0:
+	if petka['homework'] = 1 and (petkasub > 0 or npc_sex['A6'] = 0):
+		gs 'grades', 'homework', 'school', 'yes', 1, 2, 'A6'
+		'You follow Petka into the bathroom and as the door closes, he quickly turns around alarmed. When he sees you he looks a little eager. "Do you need my homework?" he asks you.'
+		'You nod your head. "Yes."'
+		'He quickly pulls out his homework. "Here, take it."'
+		act 'Take the homework': gt 'gschool_events', 'leave_break_events2'
+	elseif petka_homework = 2 or petka['homework'] = 1:
+		'You follow Petka into the bathroom and as the door closes, he quickly turns around alarmed. When he sees you he looks a little eager, obviously hoping you want to repeat last time. "Do you need my homework again?" he asks you.'
+		'You nod your head. "Yes."'
+		'He licks his lips a bit and you can already see the bulge in his pants growing. "Same as last time?" he asks, sounding hopeful.'
+		'You nod your head as you walk over to him.'
+		act 'Change your mind': gt 'gschool_events', 'leave_break_events2'
+		act 'Bribe him with sex again': gt 'petkaev', 'homework_sex_bribe'
+	elseif petka_homework = 0:
 		'You follow Petka into the bathroom and as the door closes, he quickly turns around alarmed. When he sees you, he looks a little confused but also a little leary of you. "Hey this is the boys bathroom! You shouldn''t be in here."'
 		'You ignore him. "Petka, I was wondering if you could do me a favor. How about you give me your homework so I can copy it?"'
 		'He is already shaking his head before you even finish. "I can''t do that. That would be cheating and I could get expelled for helping you cheat! I''m sorry, but I can''t help you."'
@@ -83,13 +96,6 @@ if $ARGS[0] = 'follow_petka':
 		else
 			act 'Bribe him with sex (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
 		end
-	elseif petka_homework = 2:
-		'You follow Petka into the bathroom and as the door closes, he quickly turns around alarmed. When he sees you he looks a little eager, obviously hoping you want to repeat last time. "Do you need my homework again?" he asks you.'
-		'You nod your head. "Yes."'
-		'He licks his lips a bit and you can already see the bulge in his pants growing. "Same as last time?" he asks, sounding hopeful.'
-		'You nod your head as you walk over to him.'
-		act 'Change your mind': gt 'gschool_events', 'leave_break_events2'
-		act 'Bribe him with sex again': gt 'petkaev', 'homework_sex_bribe'
 	else
 		gs 'grades', 'homework', 'school', 'yes', 1, 2, 'A6'
 		'You follow Petka into the bathroom and as the door closes, he quickly turns around alarmed. When he sees you he looks a little afraid and crest fallen. "What do you want this time?" he asks.'

+ 65 - 27
locations/prostitution_functions.qsrc

@@ -125,8 +125,7 @@ if $ARGS[0] = 'prostitute_outfit_at_home':
 	if func('homes_properties', 'is_current_home') and prostitute['active']:
 		gs 'prostitution_functions', 'work_clothes'
 		if prostitute['work_clothes']:
-			gs 'prostitution_functions', 'is_default'
-			if prostitute['outfit_is_set'] = 1 and is_default = 0:
+			if prostitute['outfit_is_set'] = 1 and func('prostitution_functions', 'is_default') = 0:
 				act 'Replace your default prostitute outfit with the current outfit':
 					gs 'prostitution_functions', 'set_default_outfit'
 					gt $loc, $loc_arg
@@ -147,7 +146,6 @@ if $ARGS[0] = 'prostitute_outfit_at_home':
 				gt $loc, $loc_arg
 			end
 		end
-		killvar 'is_default'
 	end
 end
 
@@ -410,7 +408,13 @@ if $ARGS[0] = 'work_clothes':
 end
 
 if $ARGS[0] = 'is_default':
-	is_default = prostitute['clothingwornnumber'] = clothingwornnumber and prostitute['pantywornnumber'] = pantywornnumber and prostitute['brawornnumber'] = brawornnumber and prostitute['shoewornnumber'] = shoewornnumber and prostitute['currentpursenumber'] = currentpursenumber
+	RESULT = prostitute['clothingwornnumber'] = clothingwornnumber _ 
+			 and prostitute['shoewornnumber']     = shoewornnumber _ 
+			 and prostitute['currentpursenumber'] = currentpursenumber _ 
+			 and prostitute['coatwornnumber']     = coatwornnumber _ 
+			and (prostitute['bodysuitwornnumber'] = bodysuitwornnumber _ 
+			 or (prostitute['pantywornnumber']    = pantywornnumber _ 
+			 and prostitute['brawornnumber']      = brawornnumber))
 end
 
 
@@ -422,11 +426,17 @@ if $ARGS[0] = 'set_default_outfit':
 	prostitute['clothingwornnumber'] = clothingwornnumber
 
 	!!-- Underwear
-	$prostitute['pantyworntype'] = $pantyworntype
-	prostitute['pantywornnumber'] = pantywornnumber
-	$prostitute['braworntype'] = $braworntype
-	prostitute['brawornnumber'] = brawornnumber
-
+	prostitute['underweartype'] = 0
+	if underwear['type'] = 2:
+		prostitute['underweartype'] = 2
+		$prostitute['bodysuitworntype'] = $bodysuitworntype
+		prostitute['bodysuitwornnumber'] = bodysuitwornnumber
+	else
+		$prostitute['pantyworntype'] = $pantyworntype
+		prostitute['pantywornnumber'] = pantywornnumber
+		$prostitute['braworntype'] = $braworntype
+		prostitute['brawornnumber'] = brawornnumber
+	end
 	!!-- Shoes
 	$prostitute['shoeworntype'] = $shoeworntype
 	prostitute['shoewornnumber'] = shoewornnumber
@@ -435,6 +445,10 @@ if $ARGS[0] = 'set_default_outfit':
 	$prostitute['currentpursetype'] = $currentpursetype
 	prostitute['currentpursenumber'] = currentpursenumber
 
+	!!-- Coat
+	$prostitute['coatworntype'] = $coatworntype
+	prostitute['coatwornnumber'] = coatwornnumber
+
 	prostitute['outfit_is_set'] = 1
 end
 
@@ -444,6 +458,8 @@ if $ARGS[0] = 'clearing_default_outfit':
 	prostitute['clothingwornnumber'] = 0
 
 	!!-- Underwear
+	$prostitute['bodysuitworntype'] = ''
+	prostitute['bodysuitwornnumber'] = 0
 	$prostitute['pantyworntype'] = ''
 	prostitute['pantywornnumber'] = 0
 	$prostitute['braworntype'] = ''
@@ -457,33 +473,60 @@ if $ARGS[0] = 'clearing_default_outfit':
 	$prostitute['currentpursetype'] = ''
 	prostitute['currentpursenumber'] = 0
 
+	!!-- Coat
+	$prostitute['coatworntype'] = ''
+	prostitute['coatwornnumber'] = 0
+
 	prostitute['outfit_is_set'] = 0
 end
 
 
 if $ARGS[0] = 'change_into_prostitute_outfit':
+	if dyneval('RESULT = <<$prostitute["clothingworntype"]>>_h[<<prostitute["clothingwornnumber"]>>]') <= 0:
+		msg '<font color="red">Unavailable as outfit is worn out!</font>'
+		exit
+	end
+	!! if last outfit is sport outfit
+	gs 'wardrobe', 'is_sport'
+	gs 'wardrobe', 'back_to_regular_clothes'
+
 	!!-- Backup
 	$lastwornclothingtype['prostitute'] = $clothingworntype
 	lastwornclothingnumber['prostitute'] = clothingwornnumber
-	$lastwornpantytype['prostitute'] = $pantyworntype
-	lastwornpantynumber['prostitute'] = pantywornnumber
-	$lastwornbratype['prostitute'] = $braworntype
-	lastwornbranumber['prostitute'] = brawornnumber
+	lastwornunderwear['prostitute'] = 0
+	if underwear['type'] = 2:
+		lastwornunderwear['prostitute'] = 2
+		$lastwornbodysuittype['prostitute'] = $bodysuitworntype
+		lastwornbodysuitnumber['prostitute'] = bodysuitwornnumber
+	else
+		$lastwornpantytype['prostitute'] = $pantyworntype
+		lastwornpantynumber['prostitute'] = pantywornnumber
+		$lastwornbratype['prostitute'] = $braworntype
+		lastwornbranumber['prostitute'] = brawornnumber
+	end
 	$lastwornshoetype['prostitute'] = $shoeworntype
 	lastwornshoenumber['prostitute'] = shoewornnumber
 	$lastwornpursetype['prostitute'] = $currentpursetype
 	lastwornpursenumber['prostitute'] = currentpursenumber
+	$lastworncoattype['prostitute'] = $coatworntype
+	lastworncoatnumber['prostitute'] = coatwornnumber
+	
 	!!-- Clothing
 	gs 'clothing', 'wear', $prostitute['clothingworntype'], prostitute['clothingwornnumber']
 	!!-- Underwear
-	gs 'panties', 'wear', $prostitute['pantyworntype'], prostitute['pantywornnumber']
-	gs 'bras', 'wear', $prostitute['braworntype'], prostitute['brawornnumber']
+	if prostitute['underweartype'] = 2:
+		gs 'underwear_bodysuits', 'wear', $lastwornbodysuittype['prostitute'], lastwornbodysuitnumber['prostitute']
+	else
+		gs 'panties', 'wear', $prostitute['pantyworntype'], prostitute['pantywornnumber']
+		gs 'bras', 'wear', $prostitute['braworntype'], prostitute['brawornnumber']
+	end
 	!!-- Shoes
 	gs 'shoes', 'wear', $prostitute['shoeworntype'], prostitute['shoewornnumber']
 	!!-- Bag
 	gs 'purses', 'wear', $prostitute['currentpursetype'], prostitute['currentpursenumber']
-
-!	!! TODO: Check for worn out here?
+	!!-- Coat
+	gs 'coats', 'wear', $prostitute['coatworntype'], prostitute['coatwornnumber']
+	!! TODO: Check for worn out here?
 
 	!! CHeck if the change happened not at home and if yes, then store the fact of change.
 	gs 'prostitution_functions', 'work_clothes'
@@ -491,16 +534,11 @@ if $ARGS[0] = 'change_into_prostitute_outfit':
 end
 
 if $ARGS[0] = 'change_into_regular_clothes':
-	!!-- Clothing
-	gs 'clothing', 'wear', $lastwornclothingtype['prostitute'], lastwornclothingnumber['prostitute']
-	!!-- Underwear
-	gs 'panties', 'wear', $lastwornpantytype['prostitute'], lastwornpantynumber['prostitute']
-	gs 'bras', 'wear', $lastwornbratype['prostitute'], lastwornbranumber['prostitute']
-	!!-- Shoes
-	gs 'shoes', 'wear', $lastwornshoetype['prostitute'], lastwornshoenumber['prostitute']
-	gs 'purses', 'wear', $lastwornpursetype['prostitute'], lastwornpursenumber['prostitute']
-	gs 'prostitution_functions', 'work_clothes'
-	if prostitute['changed_for_work']: prostitute['changed_for_work'] = 0
+	gs 'wardrobe', 'back_to_regular_clothes'
+
+	!! if last outfit is sport outfit
+	gs 'wardrobe', 'is_sport'
+	gs 'wardrobe', 'back_to_regular_clothes'
 end
 
 !!---------- Chaging outfits in public locations ------------------------------------------------------------------------

+ 323 - 323
locations/pushkin_ballet_res.qsrc

@@ -17,413 +17,413 @@
 $default_img_path = 'locations/pushkin/'
 if $ARGS[0] = 'start':
 	*clr & cla
-    gs 'shortgs', 'setloc', 'pushkin_ballet_res', $ARGS[0] 
-    !! reset letter
-    gs 'shortgs', 'remove_array_element', 'mod_ballet', 'letter'
-    minut += 45
-    gs 'stat'
-    '<center><h1>Welcome and Introduction</h1></center>'
+	gs 'shortgs', 'setloc', 'pushkin_ballet_res', $ARGS[0] 
+	!! reset letter
+	gs 'shortgs', 'remove_array_element', 'mod_ballet', 'letter'
+	minut += 45
+	gs 'stat'
+	'<center><h1>Welcome and Introduction</h1></center>'
 	'<center><img <<$set_imgh>> src="images/characters/ballet/3513.jpg"></center>'
-    *nl
-    'As you and your group enter the halls for the first time, you are greeted by a matronly-looking woman who will be your warden during your stay.'
-    '"Welcome, students, to your first night at these halls. I''m your warden, <<$npc_firstname[''A3513'']>> <<$npc_lastname[''A3513'']>>. If you have any problems or need assistance, you can find me in the room to the right." She gestures towards a door with a brass plaque that reads "Warden".'
-    '"I will go through the student roster, and you will respond each evening. You can also find a list of rules in your bedroom, which will be strictly enforced. We do not tolerate any behavior that brings this school into disrepute."'
-    *pl '"Do you understand?" '
-	 'With that, you and the other students answer in unison, "Yes, Ms. <<$npc_lastname[''A3513'']>>."'
-    '"Very well. I suggest you read the rules in your bedroom. Ignorance will not be accepted as an excuse."'
-    *nl
-    '"With that out of the way, I will now assign your rooms." She consults her clipboard and starts reading out student names, ticking them off as she allocates rooms.'
-    '"<<$pcs_firstname>> <<$pcs_lastname>>?" "Here!" you reply, "You''ve been assigned to room twelve, first floor to the right of the staircase. Do you have any questions? No? I will see you in the communal room once you''ve settled in."'
-    act 'Find your room': gt 'pushkin_ballet_res', 'bedroom'
+	*nl
+	'As you and your group enter the halls for the first time, you are greeted by a matronly-looking woman who will be your warden during your stay.'
+	'"Welcome, students, to your first night at these halls. I''m your warden, <<$npc_firstname[''A3513'']>> <<$npc_lastname[''A3513'']>>. If you have any problems or need assistance, you can find me in the room to the right." She gestures towards a door with a brass plaque that reads "Warden".'
+	'"I will go through the student roster, and you will respond each evening. You can also find a list of rules in your bedroom, which will be strictly enforced. We do not tolerate any behavior that brings this school into disrepute."'
+	*pl '"Do you understand?" '
+	'With that, you and the other students answer in unison, "Yes, Ms. <<$npc_lastname[''A3513'']>>."'
+	'"Very well. I suggest you read the rules in your bedroom. Ignorance will not be accepted as an excuse."'
+	*nl
+	'"With that out of the way, I will now assign your rooms." She consults her clipboard and starts reading out student names, ticking them off as she allocates rooms.'
+	'"<<$pcs_firstname>> <<$pcs_lastname>>?" "Here!" you reply, "You''ve been assigned to room twelve, first floor to the right of the staircase. Do you have any questions? No? I will see you in the communal room once you''ve settled in."'
+	act 'Find your room': gt 'pushkin_ballet_res', 'bedroom'
 
 end
 
 if $ARGS[0] = 'bedroom':
 	*clr & cla
-	$location_type = 'private'    
+	$location_type = 'private'
 	$setloc['StageTitle'] = 'Residential Bedroom'
 	$setloc['StageImage'] =   '<<$default_img_path>>ballet_residence/bedroom'
-    gs 'shortgs', 'setloc', 'pushkin_ballet_res', $ARGS[0]
-    gs 'themes', 'indoors'
-    gs 'stat'
+	gs 'shortgs', 'setloc', 'pushkin_ballet_res', $ARGS[0]
+	gs 'themes', 'indoors'
+	gs 'stat'
 	gs 'core_library', 'stage_title'
 
-    if ballet_first_visit = 0:
+	if ballet_first_visit = 0:
+		gs 'homes_properties', 'set_home', 'pushkin_ballet_dorm'
 
-        ballet_first_visit = 1
-        if week ! 7 : ballet_day = week
+		ballet_first_visit = 1
+		if week ! 7 : ballet_day = week
 
-        'You look around your room that will be the bedroom for the next week, and a small comfortable bed sits in the corner. You have a desk you can study on. In the corner, there''s a full-size <a href="exec:gt ''wardrobe'', ''start''">wardrobe</a> with a mirror on one of the doors.'
-        'You start to unpack your suitcase into the wardrobe and settle for the evening before preparing to meet your fellow students.'
-        'On the wall beside the entrance are various instructions for fire evacuation. Alongside these instructions is a sheet of paper with the words <b>Accommodation Rules</b>.' 
-        act 'Explore the rest of the accommodation':  gt 'pushkin_ballet_res', 'hallway'
-        act 'Read the rules': gt 'pushkin_ballet_res', 'rules'
+		'You look around your room that will be the bedroom for the next week, and a small comfortable bed sits in the corner. You have a desk you can study on. In the corner, there''s a full-size <a href="exec:gt ''wardrobe'', ''start''">wardrobe</a> with a mirror on one of the doors.'
+		'You start to unpack your suitcase into the wardrobe and settle for the evening before preparing to meet your fellow students.'
+		'On the wall beside the entrance are various instructions for fire evacuation. Alongside these instructions is a sheet of paper with the words <b>Accommodation Rules</b>.' 
+		act 'Explore the rest of the accommodation':  gt 'pushkin_ballet_res', 'hallway'
+		act 'Read the rules': gt 'pushkin_ballet_res', 'rules'
 
-    else
+	else
+		'You enter your room and sit at your desk, wondering what to do next.'
+		'In the corner is your <a href="exec:gt ''wardrobe'', ''start''">wardrobe</a> containing a Ballet Blanc for your upcoming assessment and your clothes for the week.'
+		if komp = 1: 'Your <a href="exec: gt ''Komp'',''start''">computer</a> is on your desk.'
+		'<table><tr><td valign="top">Your <a href="exec:gt ''alarmclock'', ''start''">alarm clock</a> is set to <<func(''alarmclock'', ''alarm_display'', alarmVars[''timerH''], alarmVars[''timerM''])>> during the week and <<func(''alarmclock'', ''alarm_display'', alarmVars[''timerEndH''], alarmVars[''timerEndM''])>> during the weekend. It is currently turned ' + iif(alarmVars['alarmOn'] = 0, '<a href="exec: alarmVars[''alarmOn''] = 1 & gt $loc, $loc_arg">OFF</a>.', '<a href="exec: alarmVars[''alarmOn''] = 0 & gt $loc, $loc_arg">ON</a>.')
 		
-        'You enter your room and sit at your desk, wondering what to do next.'
-        'In the corner is your <a href="exec:gt ''wardrobe'', ''start''">wardrobe</a> containing a Ballet Blanc for your upcoming assessment and your clothes for the week.'
-        if komp = 1: 'Your <a href="exec: gt ''Komp'',''start''">computer</a> is on your desk.'
-        '<table><tr><td valign="top">Your <a href="exec:gt ''alarmclock'', ''start''">alarm clock</a> is set to <<func(''alarmclock'', ''alarm_display'', alarmVars[''timerH''], alarmVars[''timerM''])>> during the week and <<func(''alarmclock'', ''alarm_display'', alarmVars[''timerEndH''], alarmVars[''timerEndM''])>> during the weekend. It is currently turned ' + iif(alarmVars['alarmOn'] = 0, '<a href="exec: alarmVars[''alarmOn''] = 1 & gt $loc, $loc_arg">OFF</a>.', '<a href="exec: alarmVars[''alarmOn''] = 0 & gt $loc, $loc_arg">ON</a>.')
-        
-        if $clothingworntype ! 'nude':
-            act 'Go to the hallway': minut += 5 & gt 'pushkin_ballet_res', 'hallway'
-        else
-            act 'Go to the hallway':
-                msg '<b><font color = red>Whilst as a dancer you have less worries about showing yourself Bronya would likely have a few choice words about your behaviour.</font></b>'
-                gt $loc, $loc_arg
-            end
-        end
-
-        !! Default actions
-        gs 'core_library', 'bedroom'
-
-        !! Non-standard actions
-        if  hour >= 16 and week ! 7:         
-            act 'Barre Practice (60m)': gt 'pushkin_ballet_evt', 'barre_exercise' 
-            act 'Study (60m)':  gt 'pushkin_ballet_res', 'study'
-            if  mc_inventory['cosmetics'] >= 9:
-                act 'Practice make-up' : gt 'pushkin_ballet_res', 'make_up' 
-            end
-            if feet_track ! daystart: act 'Take care of your feet': gt 'pushkin_ballet_res', 'feetcare'     
-        end 
-        act 'Listen to the radio (30m)': gt 'pushkin_ballet_res', 'radio'
-        act 'Read the rules': gt 'pushkin_ballet_res', 'rules'
-
-        !!act 'Debug data': gs 'pushkin_ballet_init', 'score_debug'
-    end
-
-    !! First Maya event
-
-    if ballet_day = 3 and mayaqw['grave'] = 0  and ( hour >= 17 and hour <= 21):
-        act 'Answer the knock' : gs 'npc_3501_init','grave'
-    elseif ballet_day = 3 and hour > 19 and mayaqw['grave'] = 1:
-        act 'Another knock': gt 'npc_3501_init', 'post_grave' 
-    end
+		if $clothingworntype ! 'nude':
+			act 'Go to the hallway': minut += 5 & gt 'pushkin_ballet_res', 'hallway'
+		else
+			act 'Go to the hallway':
+				msg '<b><font color = red>Whilst as a dancer you have less worries about showing yourself Bronya would likely have a few choice words about your behaviour.</font></b>'
+				gt $loc, $loc_arg
+			end
+		end
+
+		!! Default actions
+		gs 'core_library', 'bedroom'
+
+		!! Non-standard actions
+		if  hour >= 16 and week ! 7:		 
+			act 'Barre Practice (60m)': gt 'pushkin_ballet_evt', 'barre_exercise' 
+			act 'Study (60m)':  gt 'pushkin_ballet_res', 'study'
+			if  mc_inventory['cosmetics'] >= 9:
+				act 'Practice make-up' : gt 'pushkin_ballet_res', 'make_up' 
+			end
+			if feet_track ! daystart: act 'Take care of your feet': gt 'pushkin_ballet_res', 'feetcare'	 
+		end 
+		act 'Listen to the radio (30m)': gt 'pushkin_ballet_res', 'radio'
+		act 'Read the rules': gt 'pushkin_ballet_res', 'rules'
+
+		!!act 'Debug data': gs 'pushkin_ballet_init', 'score_debug'
+	end
+
+	!! First Maya event
+
+	if ballet_day = 3 and mayaqw['grave'] = 0  and ( hour >= 17 and hour <= 21):
+		act 'Answer the knock' : gs 'npc_3501_init','grave'
+	elseif ballet_day = 3 and hour > 19 and mayaqw['grave'] = 1:
+		act 'Another knock': gt 'npc_3501_init', 'post_grave' 
+	end
 end
 
-if $ARGS[0] = 'hallway':    
+if $ARGS[0] = 'hallway':	
 	*clr & cla
-    $setloc['StageTitle'] = 'Residental Hallway'
+	$setloc['StageTitle'] = 'Residental Hallway'
 	$setloc['StageImage'] =  '<<$default_img_path>>/ballet_residence/hall'
 	$location_type = 'public_indoors'
-    gs 'shortgs', 'setloc', 'pushkin_ballet_res', $ARGS[0]
-    gs 'core_library', 'corridor'
-    gs 'themes', 'indoors'
+	gs 'shortgs', 'setloc', 'pushkin_ballet_res', $ARGS[0]
+	gs 'core_library', 'corridor'
+	gs 'themes', 'indoors'
 	gs 'stat'
-    
-    gs 'core_library', 'stage_title'
-    !! Visit NPCs 
-    ballet_awol = 0
-    if ballet_day ! week :
-        ballet_day = week
-    end
-    nclass = 0
-
-    if $clothingworntype ! 'nude':
-        if hour = 6 or (hour  = 7 and minut <=  30):
-            act 'Attend Ballet Classes': gt 'pushkin_ballet_class', 'start'
-        elseif hour = 7 and (minut > 30 and minut <= 59):
-            $balletEv['trigger'] = 'late'
-            gs 'npc_init_3501', 'summer_school'
-        else
-            act 'Leave Residence': minut += 5 & ballet_awol = 1 & gt 'pushkin_ballet_center', 'start'
-        end
-    else       
-        msg '<b><font color = red>Whilst as a dancer you have less worries about showing yourself off Bronya would likely have a few choice words about your behaviour.</font></b>'
-        gt $loc, $loc_arg    
-    end
-
-    act 'Go to your room':  minut += 5 & gt 'pushkin_ballet_res', 'bedroom'
-    act 'Enter the communal room':  minut += 5 & gt 'pushkin_ballet_res', 'communal_area'
-    act 'Go to the bathroom':  minut += 5 & gt 'pushkin_ballet_class', 'shower'  
-    act 'Go to the kitchen':  minut += 5 & gt 'pushkin_ballet_res', 'kitchen'
-    if week ! 7:
-        !! act 'Visit Maya' :  minut += 5 & gt 'pushkin_ballet_res', 'maya_room'
-    end
-    !!act 'Knock on wardens door' :  minut += 5 & gt 'pushkin_ballet_res', 'warden_room'
-
-    if ballet_day = 7:
-        'The hall is bustling with various students settling into their rooms. A few of them wave or smile to greet you as you pass by. You see Bronya at the end of the hall, keeping an eye on the students and ready to provide assistance.'
-        
-    elseif week = 2 and hour <= 18:
-        gs 'pushkin_ballet_evt', 'res_events', 'birthday', 1
-    
-    else
-        amb_event = rand(1,4)
-        if amb_event = 1:
-            'You enter the elegant hallway of your residence, and hear music coming from one of the rooms to the side of you.'
-        elseif amb_event = 2:
-            'As you enter the hallway you hear some giggling and laughter coming from one of the girls'' rooms.'
-        elseif amb_event = 3:
-            'As you leave the room, you see a student dashing down the corridor, almost bumping into you. You hear them say "sorry" before vanishing into one of the rooms.'
-        elseif amb_event = 4:
-            if hour < 8 or hour > 21:
-                'You hear someone trying to play the piano at this hour. Before you can complain, you hear the piano being slammed shut, and you wince. A few moments later, two girls emerge from the communal room, arguing heatedly.'
-            else
-                pcs_mood += 5
-                'You hear someone playing the piano in the communal room. You don''t recognize the piece being played, but its soothing melody relaxes you.'
-            end
-        end
-    end
+	
+	gs 'core_library', 'stage_title'
+	!! Visit NPCs 
+	ballet_awol = 0
+	if ballet_day ! week :
+		ballet_day = week
+	end
+	nclass = 0
+
+	if $clothingworntype ! 'nude':
+		if hour = 6 or (hour  = 7 and minut <=  30):
+			act 'Attend Ballet Classes': gt 'pushkin_ballet_class', 'start'
+		elseif hour = 7 and (minut > 30 and minut <= 59):
+			$balletEv['trigger'] = 'late'
+			gs 'npc_init_3501', 'summer_school'
+		else
+			act 'Leave Residence': minut += 5 & ballet_awol = 1 & gt 'pushkin_ballet_center', 'start'
+		end
+	else	   
+		msg '<b><font color = red>Whilst as a dancer you have less worries about showing yourself off Bronya would likely have a few choice words about your behaviour.</font></b>'
+		gt $loc, $loc_arg	
+	end
+
+	act 'Go to your room':  minut += 5 & gt 'pushkin_ballet_res', 'bedroom'
+	act 'Enter the communal room':  minut += 5 & gt 'pushkin_ballet_res', 'communal_area'
+	act 'Go to the bathroom':  minut += 5 & gt 'pushkin_ballet_class', 'shower'  
+	act 'Go to the kitchen':  minut += 5 & gt 'pushkin_ballet_res', 'kitchen'
+	if week ! 7 and npc_trust['A3501'] >= 10:
+		!! act 'Visit Maya' :  minut += 5 & gt 'pushkin_ballet_res', 'maya_room'
+	end
+	!!act 'Knock on wardens door' :  minut += 5 & gt 'pushkin_ballet_res', 'warden_room'
+
+	if ballet_day = 7:
+		'The hall is bustling with various students settling into their rooms. A few of them wave or smile to greet you as you pass by. You see Bronya at the end of the hall, keeping an eye on the students and ready to provide assistance.'
+		
+	elseif week = 2 and hour <= 18:
+		gs 'pushkin_ballet_evt', 'res_events', 'birthday', 1
+	
+	else
+		amb_event = rand(1,4)
+		if amb_event = 1:
+			'You enter the elegant hallway of your residence, and hear music coming from one of the rooms to the side of you.'
+		elseif amb_event = 2:
+			'As you enter the hallway you hear some giggling and laughter coming from one of the girls'' rooms.'
+		elseif amb_event = 3:
+			'As you leave the room, you see a student dashing down the corridor, almost bumping into you. You hear them say "sorry" before vanishing into one of the rooms.'
+		elseif amb_event = 4:
+			if hour < 8 or hour > 21:
+				'You hear someone trying to play the piano at this hour. Before you can complain, you hear the piano being slammed shut, and you wince. A few moments later, two girls emerge from the communal room, arguing heatedly.'
+			else
+				pcs_mood += 5
+				'You hear someone playing the piano in the communal room. You don''t recognize the piece being played, but its soothing melody relaxes you.'
+			end
+		end
+	end
 end
 
 if $ARGS[0] = 'maya_room':
 	*clr & cla
 	$location_type = 'private'	
-    $setloc['StageTitle'] = 'Maya Room'
+	$setloc['StageTitle'] = 'Maya Room'
 	$setloc['StageImage'] =   '<<$default_img_path>>/ballet_residence/maya_room'
-    gs 'shortgs', 'setloc', 'pushkin_ballet_res', $ARGS[0]
-    gs 'themes', 'indoors'
-    gs 'stat'
-    gs 'core_library', 'stage_title'
-    'Maya''s room closely resembles your own. Her wardrobe is open, and you see her collection of tutus hanging from the rails. On her desk there are several books, including an open poetry book. A quick glance reveals the page title "Like a White Stone" by Akhmatova.'
-    'Next to it is an old picture of a woman in a park with a black ribbon in the corner.' 
-    act 'Go to the hallway':  minut += 5 & gt 'pushkin_ballet_res', 'hallway'
-    !! Maya events
+	gs 'shortgs', 'setloc', 'pushkin_ballet_res', $ARGS[0]
+	gs 'themes', 'indoors'
+	gs 'stat'
+	gs 'core_library', 'stage_title'
+	'Maya''s room closely resembles your own. Her wardrobe is open, and you see her collection of tutus hanging from the rails. On her desk there are several books, including an open poetry book. A quick glance reveals the page title "Like a White Stone" by Akhmatova.'
+	'Next to it is an old picture of a woman in a park with a black ribbon in the corner.' 
+	act 'Go to the hallway':  minut += 5 & gt 'pushkin_ballet_res', 'hallway'
+	!! Maya events
 end
 
 if $ARGS[0] = 'communal_area':
 	*clr & cla
 
-    $setloc['StageTitle'] = 'Communal Room'
+	$setloc['StageTitle'] = 'Communal Room'
 	$setloc['StageImage'] =   '<<$default_img_path>>/ballet_residence/communal'
 	$location_type = 'public_indoors'
-    gs 'shortgs', 'setloc', 'pushkin_ballet_res', $ARGS[0]
-    gs 'themes', 'indoors'
-    gs 'stat'
-
-    !!'You enter the communal room.'
-
-    act 'Go to the hallway':  minut += 5 & gt 'pushkin_ballet_res', 'hallway'
-
-    'WIP Progress - no content'
-    if week = 7 and ballet_mod['res_mg'] = 0:
-        ballet_mod['res_mg'] = 1
-        gs 'pushkin_ballet_evt', 'res_events', 'introduction'
-    elseif week = 2 and ((hour >= 18 and minut > 30) or (hour >= 19 or hour < 21)):
-        !! minute += 90
-        'Attend party'
-    elseif week =2 and hour < 18:
-        !! minut += 20 
-        'Write help setting out food.'        
-    end
-    ! Communal random events 
+	gs 'shortgs', 'setloc', 'pushkin_ballet_res', $ARGS[0]
+	gs 'themes', 'indoors'
+	gs 'stat'
+
+	!!'You enter the communal room.'
+
+	act 'Go to the hallway':  minut += 5 & gt 'pushkin_ballet_res', 'hallway'
+
+	'WIP Progress - no content'
+	if week = 7 and ballet_mod['res_mg'] = 0:
+		ballet_mod['res_mg'] = 1
+		gs 'pushkin_ballet_evt', 'res_events', 'introduction'
+	elseif week = 2 and ((hour >= 18 and minut > 30) or (hour >= 19 or hour < 21)):
+		!! minute += 90
+		'Attend party'
+	elseif week =2 and hour < 18:
+		!! minut += 20 
+		'Write help setting out food.'		
+	end
+	! Communal random events 
 end
 
 if $ARGS[0] = 'kitchen':
 	*clr & cla
-    
-    $setloc['StageTitle'] = 'Residental Kitchen'
+	
+	$setloc['StageTitle'] = 'Residental Kitchen'
 	$setloc['StageImage'] =   '<<$default_img_path>>ballet_residence/kitchen'
 	$location_type = 'private'
-    gs 'shortgs', 'setloc', 'pushkin_ballet_res', $ARGS[0]
-    gs 'themes', 'indoors'
-    gs 'stat'
-
-    gs 'core_library', 'stage_title'
-    act 'Go to the hallway':  minut += 5 & gt 'pushkin_ballet_res', 'hallway'
-    gs 'core_library', 'kitchen'  
-
-    !! Set up events
-    *nl    
-    if hour > 15:
-        act 'Eat a light meal':gs 'food', 's_meal'
-        act 'Eat an Evening Meal': dynamic $edahotd
-        elseif (hour > 4 and hour < 8) and mayaqw['grave'] = 4 and sharedmeal ! daystart:
-        act 'Have breakfast with Maya':
-            *clr & cla
-            sharedmeal = daystart
-            gs 'food', 'family_meals', 'breakfast'
-            gs 'stat'
-            'You encounter Maya as she prepares her breakfast. You lend a hand with the preparations and engage in a conversation about your upcoming lessons while enjoying your morning meal.'
-             act 'Finish breakfast': gt 'pushkin_ballet_res', 'kitchen'
-        end
-    elseif hour > 4 and hour < 8:
-        act 'Eat breakfast':
-            *clr & cla
-            gs 'food', 'family_meals', 'breakfast'
-            gs 'stat'
-            'You look in the fridge for some fruit and then make some porridge for breakfast.'
-             act 'Finish breakfast': gt 'pushkin_ballet_res', 'kitchen'
-        end
-    end
-    
-    if week = 2 and (hour > 17 and hour < 19):
-        gs 'pushkin_ballet_evt', 'kitchen_birthday'
-    else
-      'You enter the kitchen area and you''re grateful that the school provides the essentials for cooking and snacks for the pupils to eat during the evenings.'
-    end
-    
+	gs 'shortgs', 'setloc', 'pushkin_ballet_res', $ARGS[0]
+	gs 'themes', 'indoors'
+	gs 'stat'
+
+	gs 'core_library', 'stage_title'
+	act 'Go to the hallway':  minut += 5 & gt 'pushkin_ballet_res', 'hallway'
+	gs 'core_library', 'kitchen'  
+
+	!! Set up events
+	*nl	
+	if hour > 15:
+		act 'Eat a light meal':gs 'food', 's_meal'
+		act 'Eat an Evening Meal': dynamic $edahotd
+		elseif (hour > 4 and hour < 8) and mayaqw['grave'] = 4 and sharedmeal ! daystart:
+		act 'Have breakfast with Maya':
+			*clr & cla
+			sharedmeal = daystart
+			gs 'food', 'family_meals', 'breakfast'
+			gs 'stat'
+			'You encounter Maya as she prepares her breakfast. You lend a hand with the preparations and engage in a conversation about your upcoming lessons while enjoying your morning meal.'
+			 act 'Finish breakfast': gt 'pushkin_ballet_res', 'kitchen'
+		end
+	elseif hour > 4 and hour < 8:
+		act 'Eat breakfast':
+			*clr & cla
+			gs 'food', 'family_meals', 'breakfast'
+			gs 'stat'
+			'You look in the fridge for some fruit and then make some porridge for breakfast.'
+			 act 'Finish breakfast': gt 'pushkin_ballet_res', 'kitchen'
+		end
+	end
+	
+	if week = 2 and (hour > 17 and hour < 19):
+		gs 'pushkin_ballet_evt', 'kitchen_birthday'
+	else
+	  'You enter the kitchen area and you''re grateful that the school provides the essentials for cooking and snacks for the pupils to eat during the evenings.'
+	end
+	
 end
 
 !! Intercomm
 if $ARGS[0] = 'warden':
-    !! residential buzzer logic statements
-    if (hour > 20 or hour < 6) and ballet_awol = 1:
-        '"Pushkin Ballet Residential Block, how may I help you?", you hear Bronya''s icy voice through the intercom.'
-        '"<<$pcs_firstname>> <<$pcs_lastname>>, can I be let in please?", there''s a few seconds pause.'
-        '"<<$pcs_firstname>> <<$pcs_lastname>>, you will see me in my office. Now." You can swear the temperature around you just plummeted a few degrees and the door was buzzed open.'
-        gt 'pushkin_ballet_res', 'warden_room'
-    elseif (hour >= 17  or hour < 21 ) and ballet_awol = 1:
-        '"Pushkin Ballet Residential Block, how may I help you?", you hear Bronya''s voice through the intercom.'
-        '"<<$pcs_firstname>> <<$pcs_lastname>>, can I be let in please?", there''s a few seconds pause and you hear the door being buzzed open.'
-        gt 'pushkin_ballet_res', 'hallway'
-    elseif ballet_awol = 1:
-        '"Pushkin Ballet Residential Block, how may I help you?", you hear Bronya''s voice through the intercom.'
-        '"<<$pcs_firstname>> <<$pcs_lastname>>, can I be let in please?", there''s a few seconds pause.'
-        '"<<$pcs_firstname>> <<$pcs_lastname>>, where the hell have you been? Get in here. Now.", you gulp at her voice and with trepidation make your way to her office.'
-        gt 'pushkin_ballet_res', 'warden_room'
-    else
-        minut += 10
-        'You press the buzzer but there''s no response.'
-        act 'Return': gt 'pushkin'
-    end
+	!! residential buzzer logic statements
+	if (hour > 20 or hour < 6) and ballet_awol = 1:
+		'"Pushkin Ballet Residential Block, how may I help you?", you hear Bronya''s icy voice through the intercom.'
+		'"<<$pcs_firstname>> <<$pcs_lastname>>, can I be let in please?", there''s a few seconds pause.'
+		'"<<$pcs_firstname>> <<$pcs_lastname>>, you will see me in my office. Now." You can swear the temperature around you just plummeted a few degrees and the door was buzzed open.'
+		gt 'pushkin_ballet_res', 'warden_room'
+	elseif (hour >= 17  or hour < 21 ) and ballet_awol = 1:
+		'"Pushkin Ballet Residential Block, how may I help you?", you hear Bronya''s voice through the intercom.'
+		'"<<$pcs_firstname>> <<$pcs_lastname>>, can I be let in please?", there''s a few seconds pause and you hear the door being buzzed open.'
+		gt 'pushkin_ballet_res', 'hallway'
+	elseif ballet_awol = 1:
+		'"Pushkin Ballet Residential Block, how may I help you?", you hear Bronya''s voice through the intercom.'
+		'"<<$pcs_firstname>> <<$pcs_lastname>>, can I be let in please?", there''s a few seconds pause.'
+		'"<<$pcs_firstname>> <<$pcs_lastname>>, where the hell have you been? Get in here. Now.", you gulp at her voice and with trepidation make your way to her office.'
+		gt 'pushkin_ballet_res', 'warden_room'
+	else
+		minut += 10
+		'You press the buzzer but there''s no response.'
+		act 'Return': gt 'pushkin'
+	end
 end
 
 if $ARGS[0] = 'warden_room':
 	*clr & cla
-    
+	
 	$location_type = 'private'
 	$setloc['StageTitle'] = 'Wardens Residence'
 	$setloc['StageImage'] =   '<<$default_img_path>>/ballet_residence/warden' 
-    $location_type = 'public_indoors'
-    gs 'shortgs', 'setloc', 'pushkin_ballet_res', $ARGS[0]
-    gs 'themes', 'indoors'
+	$location_type = 'public_indoors'
+	gs 'shortgs', 'setloc', 'pushkin_ballet_res', $ARGS[0]
+	gs 'themes', 'indoors'
 	gs 'stat'
    
-    gs 'core_library', 'stage_title'
+	gs 'core_library', 'stage_title'
 
-    ! Punishment or plot
-     act 'Go to the hallway':  minut += 5 & ballet_awol = 0 &  gt 'pushkin_ballet_res', 'hallway'
+	! Punishment or plot
+	 act 'Go to the hallway':  minut += 5 & ballet_awol = 0 &  gt 'pushkin_ballet_res', 'hallway'
 end
 
 !! Activities
 if $ARGS[0] = 'rules':
-    *clr & cla
+	*clr & cla
 	minut += 5
 	gs 'stat'
-    *pl '<center><h2>Residence Rules</h2></center>'
-    *pl 'You look at the rules on the wall.'
-
-    *pl 'Whilst you stay in this accommodation, you will follow these rules:'
-
-    '1) No males are allowed in the accommodation block.'
-
-    '2) All residents must return to the block by 21:00. No exceptions. If you are late, you will have to report to the duty warden.'
-    
-    '3) No smoking, drinking, or drug use is allowed in the accommodation. If you are caught, you will face immediate dismissal from the school.'
-    
-    '4) Breakfast is from 06:00 to 07:00.'
-    
-    '5) All rooms must be kept clean and tidy.'
-    
-    '6) Valuables can be left with the duty warden if required. All thefts or problems are to be reported immediately.'
-    
-    '7) You are to follow the duty warden''s instructions in an emergency.'
-
-    act 'Look away': gt 'pushkin_ballet_res', 'bedroom'
+	*pl '<center><h2>Residence Rules</h2></center>'
+	*pl 'You look at the rules on the wall.'
+
+	*pl 'Whilst you stay in this accommodation, you will follow these rules:'
+
+	'1) No males are allowed in the accommodation block.'
+
+	'2) All residents must return to the block by 21:00. No exceptions. If you are late, you will have to report to the duty warden.'
+	
+	'3) No smoking, drinking, or drug use is allowed in the accommodation. If you are caught, you will face immediate dismissal from the school.'
+	
+	'4) Breakfast is from 06:00 to 07:00.'
+	
+	'5) All rooms must be kept clean and tidy.'
+	
+	'6) Valuables can be left with the duty warden if required. All thefts or problems are to be reported immediately.'
+	
+	'7) You are to follow the duty warden''s instructions in an emergency.'
+
+	act 'Look away': gt 'pushkin_ballet_res', 'bedroom'
 end
 
 if $ARGS[0] = 'radio':
 	*clr & cla
 	minut += 30
 	pcs_mood += rand(1,5)  
-    pcs_sleep -= rand(1,10)
-    if ballet_day >= 1 and week ! 7:
-        instrmusic_exp += rand(1,3)
-        gs 'exp_gain', 'perform', rand(1,3)
-        mod_homework[week] += 1 
-        mod_daily_score[week] += 1
-    end
-    $setloc['StageTitle'] = 'Radio'
+	pcs_sleep -= rand(1,10)
+	if ballet_day >= 1 and week ! 7:
+		instrmusic_exp += rand(1,3)
+		gs 'exp_gain', 'perform', rand(1,3)
+		mod_homework[week] += 1 
+		mod_daily_score[week] += 1
+	end
+	$setloc['StageTitle'] = 'Radio'
 	$setloc['StageImage'] =   '<<$default_img_path>>ballet_residence/russian_radio'
 	gs 'stat'
-    gs 'core_library', 'stage_title'
+	gs 'core_library', 'stage_title'
 
-    'You start to listen to the radio for half an hour, taking notes of the performance with the ideas from your earlier lesson. Then, you close your eyes and start humming along to the familiar music after a while. '
+	'You start to listen to the radio for half an hour, taking notes of the performance with the ideas from your earlier lesson. Then, you close your eyes and start humming along to the familiar music after a while. '
 
-    act 'Turn the radio off': gt 'pushkin_ballet_res', 'bedroom'
+	act 'Turn the radio off': gt 'pushkin_ballet_res', 'bedroom'
 end
 
 if $ARGS[0] = 'feetcare':
 
-    ! Feet care - to be expanded. with different routines.
-    ! feet soak in Epsom salts 
-    ! Arnica gel to help reduce swelling around calfs and ankles, or soaking in witch hazel
-    ! sew ballet shoes and break the soles for prep.
-    ! Thera band for feet exercises
-    ! check toe pads
-
-    *clr & cla
-    mood += rand(1, 10)
-    pcs_health += 15
-    mod_homework[week] += 1 
-    mod_daily_score[week] += 1
-    minut +=30
-    feet_track = daystart
-    gs 'stat'
-    $setloc['StageTitle'] = 'Feet Soak'
+	! Feet care - to be expanded. with different routines.
+	! feet soak in Epsom salts 
+	! Arnica gel to help reduce swelling around calfs and ankles, or soaking in witch hazel
+	! sew ballet shoes and break the soles for prep.
+	! Thera band for feet exercises
+	! check toe pads
+
+	*clr & cla
+	mood += rand(1, 10)
+	pcs_health += 15
+	mod_homework[week] += 1 
+	mod_daily_score[week] += 1
+	minut +=30
+	feet_track = daystart
+	gs 'stat'
+	$setloc['StageTitle'] = 'Feet Care'
 	$setloc['StageImage'] =  '<<$default_img_path>>ballet_events/feet_soak'
-    gs 'core_library', 'stage_title'
+	gs 'core_library', 'stage_title'
 
-    'After the long day at the ballet class, you diligently inspect your calves and feet for injuries, gently massaging Arnica Gel onto your calves and ankles to alleviate stiffness and swelling. Next, you carefully examine your calluses and check for any blisters.'
-    'With your checks completed, you reach for your exercise band, commencing a series of foot-stretching exercises, culminating in a soothing massage using a tennis ball on your calves and soles.'
-    'You take a brief moment to unwind before donning your foot warmers, making your way to the kitchen to fetch cold water and investigate the freezer for ice. Fortunately, the school has stored ice cube trays. After replenishing the trays, you fill a bowl and carry it back to your room.'
-    'Seated on your bed, you pour into the bowl the ice cubes and chilled water into a foot bath. Adding a touch of Epsom Salts, you brace yourself as you immerse your feet in the chilling water. Your body shudders briefly from the shock, but after a few moments, the sensation subsides. You close your eyes and attempt to relax.'
+	'After the long day at the ballet class, you diligently inspect your calves and feet for injuries, gently massaging Arnica Gel onto your calves and ankles to alleviate stiffness and swelling. Next, you carefully examine your calluses and check for any blisters.'
+	'With your checks completed, you reach for your exercise band, commencing a series of foot-stretching exercises, culminating in a soothing massage using a tennis ball on your calves and soles.'
+	'You take a brief moment to unwind before donning your foot warmers, making your way to the kitchen to fetch cold water and investigate the freezer for ice. Fortunately, the school has stored ice cube trays. After replenishing the trays, you fill a bowl and carry it back to your room.'
+	'Seated on your bed, you pour into the bowl the ice cubes and chilled water into a foot bath. Adding a touch of Epsom Salts, you brace yourself as you immerse your feet in the chilling water. Your body shudders briefly from the shock, but after a few moments, the sensation subsides. You close your eyes and attempt to relax.'
 
-    ! logic check for then you check your new ballet shoes, and start sewing the ribbons on and break the sole to relax whilst your feet soak.
+	! logic check for then you check your new ballet shoes, and start sewing the ribbons on and break the sole to relax whilst your feet soak.
 
-    act 'Finish feet care': gt 'pushkin_ballet_res', 'bedroom'
+	act 'Finish feet care': gt 'pushkin_ballet_res', 'bedroom'
 end
 
 if $ARGS[0] = 'study':
-    ! Study ballet and music
-    *clr & cla
-    mood -= rand(1, 10)
-    minut += 60
-    mod_homework[week] += 1 
-    mod_daily_score[week] += 1
-    $setloc['StageTitle'] = 'Study'
+	! Study ballet and music
+	*clr & cla
+	mood -= rand(1, 10)
+	minut += 60
+	mod_homework[week] += 1 
+	mod_daily_score[week] += 1
+	$setloc['StageTitle'] = 'Ballet Studies'
 	$setloc['StageImage'] =  '<<$default_img_path>>ballet_residence/study'
-    gs 'stat'
-    gs 'core_library', 'stage_title'
-     'You gather your school books and notebook to begin studying ballet movements, history, and musical theory, diligently taking notes as you progress. After an hour of reading, you notice your eyes beginning to glaze over. Recognizing the need for a break, you decide to stand up and stretch.'
-     act 'Finish studying': gt 'pushkin_ballet_res', 'bedroom'
+	gs 'stat'
+	gs 'core_library', 'stage_title'
+	 'You gather your school books and notebook to begin studying ballet movements, history, and musical theory, diligently taking notes as you progress. After an hour of reading, you notice your eyes beginning to glaze over. Recognizing the need for a break, you decide to stand up and stretch.'
+	 act 'Finish studying': gt 'pushkin_ballet_res', 'bedroom'
 end
 
 if $ARGS[0] = 'make_up':
-        !! Practice make up skills
-        *clr & cla
-        minut += 60
-        mod_homework[week] += 1 
-        mod_daily_score[week] += 1
-        gs 'exp_gain', 'makupskl', rand(1,3)
-        if pcs_makupskl < 30:
-            mc_inventory['cosmetics'] -= 9
-            pcs_makeup = 0
-        elseif pcs_makupskl >=31 <= 74:
-            mc_inventory['cosmetics'] -= 5
-            pcs_makeup = 3
-        elseif pcs_makupskl >= 75:
-            mc_inventory['cosmetics'] -= 3
-            pcs_makeup = 5
-        end
-        gs 'stat'
-        $setloc['StageTitle'] = 'Feet Soak'
-        $setloc['StageImage'] =  '<<$default_img_path>>/ballet_events/make-up'
-        gs 'core_library', 'stage_title'
-
-        if pcs_makupskl <= 30:
-            'You struggle to master the basics of applying your look, wasting a lot of your expensive make-up. You wonder if you should get help with practicing.'
-        elseif pcs_makupskl >= 31 or pcs_makupskl <= 69:
-            'You try to replicate the deft strokes that you was taught in school apply the basic foundation. You struggle briefly with the eyelashes before they settle in place. It takes you a few attempts to finalise the blending of your looks but at the end of your practice you are happy with the results even though it won''t win any awards.'
-        elseif pcs_makupskl >= 70:
-            'You artfully apply the make-up look with a quick, practiced ease that would leave most girls with envy. The final look is almost flawless and you criticaly review the final result.'
-        else
-            $ballet['error'] += 'Makeup skill failed check'
-        end
-        act 'Finish practicing': gt 'pushkin_ballet_res', 'bedroom'
+		!! Practice make up skills
+		*clr & cla
+		minut += 60
+		mod_homework[week] += 1 
+		mod_daily_score[week] += 1
+		gs 'exp_gain', 'makupskl', rand(1,3)
+		if pcs_makupskl < 30:
+			mc_inventory['cosmetics'] -= 9
+			pcs_makeup = 0
+		elseif pcs_makupskl >=31 <= 74:
+			mc_inventory['cosmetics'] -= 5
+			pcs_makeup = 3
+		elseif pcs_makupskl >= 75:
+			mc_inventory['cosmetics'] -= 3
+			pcs_makeup = 5
+		end
+		gs 'stat'
+		$setloc['StageTitle'] = 'Make Up Practice'
+		$setloc['StageImage'] =  '<<$default_img_path>>/ballet_events/make-up'
+		gs 'core_library', 'stage_title'
+
+		if pcs_makupskl <= 30:
+			'You struggle to master the basics of applying your look, wasting a lot of your expensive make-up. You begin to wonder if you need to get help with practicing.'
+		elseif pcs_makupskl >= 31 or pcs_makupskl <= 69:
+			'You try to replicate the deft strokes that you was taught in school as you apply the basic foundations and contouring. You struggle briefly with the eyelashes before they settle in place. It takes you a few attempts to finalise the blending of your final look but at the end of your practice you are happy with the results even though it won''t win any awards.'
+		elseif pcs_makupskl >= 70:
+			'You artfully apply the make-up look with a quick, practiced ease that would leave most girls jealous with envy. The final look is almost flawless and you criticaly review the final result trying to find any imperfections.'
+		else
+			$ballet['error'] += 'Makeup skill failed check'
+		end
+		act 'Finish practicing': gt 'pushkin_ballet_res', 'bedroom'
 end
 
 --- pushkin_ballet_res ---------------------------------

+ 1 - 1
locations/pushkin_sq.qsrc

@@ -59,7 +59,7 @@ else
 	'The old theatre that houses a burlesque club is closed now. It is open every day 18:00 - 23:00'
 end
 
-if mother['kickedout_timer'] ! 0 and mother['kickedout_timer'] + 3 <= daystart and hour > 6 and hour <= 15:
+if mother['kickedout_timer'] ! 0 and mother['kickedout_timer'] + 3 <= daystart and hour > 6 and hour <= 15 and cumloc[11] = 0:
 	gs 'mother_chats', 'reconciliation_talk'
 exit
 end

+ 18 - 2
locations/saveupdater.qsrc

@@ -2501,7 +2501,7 @@ if temp_current_save_version < 00090200:
 	if $start_type['cat']	= '':	$start_type['cat']		= 'friendless'
 
 	!update fashionista to fashionista_dress\
-	if ARRSIZE('fashionista') > 0:
+	if arrsize('fashionista') > 0:
 		:loopfashionista2
 			if fashionista[i] = 1:
 				fashionista_dress[i] = 1
@@ -2529,8 +2529,24 @@ if temp_current_save_version < 00090200:
 	! Therapist
 	if therapist_key[1] > 0:	therapistQW['hotel_day'] = therapist_key[1]	& killvar 'therapist_key', 1
 	if therapist_key > 0:		therapistQW['hotel_key'] = therapist_key	& killvar 'therapist_key'
-	if ARRSIZE('homes') = 16:	$homes[] = 'hotel_therapist'
 
+	! Ballet Dorm
+	if arrsize('homes') = 16:	$homes[] = 'hotel_therapist'
+	if $home_name['hotel_therapist'] = '':
+		$home_name['hotel_therapist'] = 'hotel_therapist'
+		$home_name['17'] = 'hotel_therapist'
+	end
+	if arrsize('homes') = 17:	$homes[] = 'pushkin_ballet_dorm'
+	if $home_name['pushkin_ballet_dorm'] = '':
+		$home_name['pushkin_ballet_dorm'] = 'pushkin_ballet_dorm'
+		$home_name['18'] = 'pushkin_ballet_dorm'
+	end
+
+	! Call Trace update
+	killvar 'call_trace_enabled'
+	killvar 'call_trace_shown'
+	killvar 'call_trace_manual'
+	killvar '$call_trace'
 end
 
 

+ 2 - 2
locations/sentence.qsrc

@@ -550,7 +550,7 @@ if $ARGS[0] = 'punishment':
 	killvar 'temp_fine'
 	killvar 'policeQW_courthearing_dates', 0
 	killvar '$policeQW_courthearing_subjects', 0
-	act 'Leave the court': gt 'city_center'
+	act 'Leave the court': gt 'city_center', 'mom_check'
 end
 
 
@@ -616,7 +616,7 @@ if $ARGS[0] = 'police_arrest2':
 	killvar 'policeQW_courtletter_dates', 0
 	killvar 'policeQW_courtletter_subjects', 0
 
-	act 'Leave the court': gt 'city_center'
+	act 'Leave the court': gt 'city_center', 'mom_check'
 end
 
 

+ 1 - 0
locations/sex_ev_morning.qsrc

@@ -657,6 +657,7 @@ if $ARGS[0] = 'want_coffee_response':
 		gs'sex_ev_morning', 'morning_menu1'
 	elseif rand(1,2) = 1:
 		'"Sure, I wouldn''t mind some coffee," <<$npc_firstname[$boy]>> says and gets up to make some.'
+		gs'sex_ev_morning', 'npc_coffe_make'
 	else
 		'"I''ve got some time," <<$npc_firstname[$boy]>> says. "How about breakfast instead?"'
 		gs'sex_ev_morning', 'boy_breakfast_offer'

+ 4 - 4
locations/shoes.qsrc

@@ -359,8 +359,8 @@ end
 if $ARGS[0] = 'strip':
 	if $shoeworntype = 'none': exit
 
-	$shoelastworntype = $shoeworntype
-	shoelastwornnumber = shoewornnumber
+	$lastwornshoetype = $shoeworntype
+	lastwornshoenumber = shoewornnumber
 	$shoeworntype = 'none'
 	shoewornnumber = 0
 	ShoQuality = 0
@@ -382,8 +382,8 @@ if $ARGS[0] = 'wear':
 	!! ARGS 2 - shoe index
 
 	if $ARGS[1] = 'last_worn':
-		$shoeworntype = $shoelastworntype
-		shoewornnumber = shoelastwornnumber
+		$shoeworntype = $lastwornshoetype
+		shoewornnumber = lastwornshoenumber
 	else
 		$shoeworntype = $ARGS[1]
 		shoewornnumber = ARGS[2]

+ 1 - 1
locations/stat.qsrc

@@ -408,8 +408,8 @@ if totminut >= heelsminut + 30:
 		!! Player skill is equal to or higher than the required skill
 		!! Maybe have excessive skill result in no gain, or even a degrading skill?
 		else
-			gs 'pain', rand(heelstime/60,heelstime/30), 'feet', 'ache'
 			heelsSkilldiff = pcs_heels - heelsRequiredskill
+			gs 'pain', max(0, rand(heelstime/10,heelstime/5) - heelsSkilldiff), 'feet', 'ache'
 			if heelsSkilldiff <= 5:
 				tmp = rand(-2,0) + rand(min(8,heelstime/6),min(12,heelstime/3))
 			elseif heelsSkilldiff <= 10:

+ 41 - 8
locations/stat_display.qsrc

@@ -1,21 +1,54 @@
 # stat_display
 !!2021/04/04
-if call_trace_shown ! 0:
+
+!! --- CALL TRACE, when enabled (`debug['trace_shown'] = 1`) replaces stat_display
+if debug['trace_shown'] ! 0:
 	clear
 	p '<center>'
 	if $git_hash ! '': pl '<<$git_hash>>'
-	pl iif(call_trace_manual = 0, 'auto', 'manual')
-	if call_trace_enabled = 0:
-		p '<a href="exec:call_trace_enabled = 1 & gs ''stat_display''">enable</a>&nbsp;|&nbsp;'
+	if debug['call_trace_selector'] = 0:
+		p 'loc change&nbsp;|&nbsp;'
+		p '<a href="exec:debug[''call_trace_selector''] = 1 & gs ''stat_display''">direct</a>'
+		nl '<hr>'
+
+		if debug['trace_loc_change'] = 0:
+			p '<a href="exec:debug[''trace_loc_change''] = 1 & gs ''stat_display''">start</a>&nbsp;|&nbsp;'
+		else
+			p '<a href="exec:debug[''trace_loc_change''] = 0 & gs ''stat_display''">stop</a>&nbsp;|&nbsp;'
+		end
+		p '<a href="exec:$debug[''loc_change_trace''] = '''' & gs ''stat_display''">clear</a>&nbsp;|&nbsp;'
+		pl '<a href="exec:debug[''trace_shown''] = 0 & gs ''stat''">return</a></center>'
+
+		p $debug['loc_change_trace']
 	else
-		p '<a href="exec:call_trace_enabled = 0 & call_trace_shown = 0 & gs ''stat''">disable</a>&nbsp;|&nbsp;'
+		p '<a href="exec:debug[''call_trace_selector''] = 0 & gs ''stat_display''">loc change</a>&nbsp;|&nbsp;'
+		p 'direct'
+		nl '<hr>'
+
+		p '<a href="exec:$trace_locations[] = $input(''location name'') & gs ''stat_display''">add by name</a>&nbsp;|&nbsp;'
+		p '<a href="exec:$trace_locations[] = $curloc & gs ''stat_display''">add $curloc</a>'
+		nl '<hr>'
+
+		if arrsize('$trace_locations') > 0:
+			p '<a href="exec:gs ''debug_tools'', ''trace_list_locs''">list locations</a>&nbsp;|&nbsp;'
+			p '<a href="exec:killvar ''$trace_locations'' & gs ''stat_display''">clear</a>'
+		else
+			p 'list locations&nbsp;|&nbsp;'
+			p 'clear'
+		end
+		nl '<hr>'
+		
+		p '<a href="exec:$debug[''direct_trace''] = '''' & gs ''stat_display''">clear</a>&nbsp;|&nbsp;'
+		pl '<a href="exec:debug[''trace_shown''] = 0 & gs ''stat''">return</a></center>'
+
+		p $debug['direct_trace']
 	end
-	p '<a href="exec:killvar ''$call_trace'' & gs ''stat_display''">clear</a>&nbsp;|&nbsp;'
-	p '<a href="exec:call_trace_shown = 0 & gs ''stat''">return</a></center>'
-	p $call_trace
 	exit
 end
 
+
+
+!! --- STAT_DISPLAY
 if default_status_icons = 0:set_siconht = 54
 if default_wbanner = 0:set_weatherht = 72
 if default_menu_icons = 0:set_miconht = 54

+ 6 - 6
locations/therapist_hotel.qsrc

@@ -552,7 +552,7 @@ if $ARGS[0] = 'event5_submit':
 			'"Sir?!" You moan out as he ravishes your pussy with his mouth and tongue.'
 			'"You will be mine, your body will not deny me, you only have to say yes to me. My dear, tell me to fuck you." He exclaims and the trigger clicks in your mind.'
 
-			act '"Sire, please, fuck me"':
+			act '"Sir, please, fuck me"':
 				*clr & cla
 				gs 'arousal', 'vaginal', 60, 'sub'
 				gs 'cum_call', 0, 'A186', 2, 0, 15000, 60
@@ -695,7 +695,7 @@ if $ARGS[0] = 'event6_submit':
 		end
 
 		act 'Don''t sign the paper':
-			'He helps you to your feet and tells you to get dressed and leave but tells you "I expect you to sign it the next time i see you" he says. You dress and leave.'
+			'He helps you to your feet and tells you to get dressed and leave. "I expect you to sign it the next time I see you" he says. You dress and leave.'
 			act 'Leave':
 				minut += 5
 				gs 'clothing', 'wear', $lastwornclothingtype['therapist'], lastwornclothingnumber['therapist']
@@ -735,7 +735,7 @@ if $ARGS[0] = 'event6_submit2':
 			minut += 20
 			gs 'stat'
 
-			'You enter the living room with your suitcase and just say, "<Mom>, Dad, Im moving out. I have found a place to stay and I will be living there" you say and <Mom> stands up looking confused. "What are you talking about?" she says.'
+			'You enter the living room with your suitcase and just say, "<<$npc_nickname[''A29'']>>, Dad, Im moving out. I have found a place to stay and I will be living there" you say and your mother stands up looking confused. "What are you talking about?" she says.'
 			*nl
 			'"I''m moving out" you repeat.'
 			*nl
@@ -791,8 +791,8 @@ if $ARGS[0] = 'event6_submit3':
 		gs 'cum_call', 'vagina', 'A186', 2, 0, 15000, 60
 		gs 'stat'
 
-		'<center><video autoplay loop <<$set_imgh>> src="images/shared/sex/vag/miss/old9.mp4"></video></center>'
-		'You spend the next hour or two, naked on the bed, watching TV before her comes to bed. He pushes you on your back and before you know it, he is inside you having sex with you.'
+		'<center><video autoplay loop <<$set_imgh>> src="images/shared/sex/vag/miss/old1.mp4"></video></center>'
+		'You spend the next hour or two, naked on the bed, watching TV before he comes to bed. He pushes you on your back and before you know it, he is inside you having sex with you.'
 		'You were already wet from being in his presence. He moves your hands above your head and spends the next few hours pumping in and out of you before you both pass out.'
 
 
@@ -811,7 +811,7 @@ if $ARGS[0] = 'event6_submit3':
 			gs 'cum_call', 'vagina', 'A186', 2, 0, 15000, 60
 			gs 'stat'
 
-			'<center><video autoplay loop <<$set_imgh>> src="images/shared/sex/vag/miss/old8.mp4"></video></center>'
+			'<center><video autoplay loop <<$set_imgh>> src="images/shared/sex/vag/miss/old2.mp4"></video></center>'
 			'You wake up the next morning and your legs are on his shoulders and he is still having sex with you.'
 			'He says nothing and you just lay there looking up at him. It takes him a bit and he cums deep inside you again. He stays inside you and looks down at you.'
 			'"Good Morning, Wife. Tell me, Do you love being woken up like this?"'

+ 5 - 5
locations/torgcentr.qsrc

@@ -84,33 +84,33 @@ end
 
 if hour > 12 and hour < 18 and sunWeather = 1 and exhibitionQW >= 5 and KsenyaQW = 0 and Kignore ! daystart:
 	*clr & cla
-	'<center><img <<$set_imgh>> src="images/character/pushkin/ksenya/KMall1.jpg"></center>'
+	'<center><img <<$set_imgh>> src="images/character/pushkin/ksenya/mall1.jpg"></center>'
 	'As you approach the mall, you see a beautiful, hot pink Lamborghini before you. It''s top is down and it''s doors are wide open. Inside you see a familiar face. "Hello Ksenya" You say walking up to her.'
 	'She looks up at you with a smile and steps out of the car. You can see she isn''t wearing her normal exhibition clothes today but with slight movement, you can get a look at her panties as her dress is rather tight and short.'
 	
 	act 'Talk to Ksenya':
 		*clr & cla
 		KsenyaQW = 1
-		'<center><img <<$set_imgh>> src="images/character/pushkin/ksenya/KMall5.jpg"></center>'
+		'<center><img <<$set_imgh>> src="images/character/pushkin/ksenya/mall5.jpg"></center>'
 		'"Hello <<$pcs_nickname>>, What brings you to the city?" she asks leaning on the windshield.'
 		'"Oh you know, shopping" you reply. "What about you?"'
 		'"My mother is getting her hair down and I''m waiting for her to finish," she admits. "Stick around long enough and you can meet her if you want" she offers.'
 
 		act 'head into the Mall':
 			*clr & cla
-			'<center><img <<$set_imgh>> src="images/character/pushkin/ksenya/KMall4.jpg"></center>'
+			'<center><img <<$set_imgh>> src="images/character/pushkin/ksenya/mall4.jpg"></center>'
 			'You see Ksenya lean over her car looking bored. "If I had time I would, but I have to get my shopping done. Hope to see you around" You tell her and she gives you a slight smile and lets you head off with a gentle wave.'
 
 			act 'stick around':
 				*clr & cla
-				'<center><img <<$set_imgh>> src="images/character/pushkin/ksenya/KMall3.jpg"></center>'
+				'<center><img <<$set_imgh>> src="images/character/pushkin/ksenya/mall3.jpg"></center>'
 				'You and Ksenya wait around talking about your shared passion when a woman in a white dress walks up to the car. For a moment you could swear this was her sister but when Ksenya walked up to her and hugged her, you understood that this was her mother. "You look good, mom" She says to the other woman.' 
 				'"Who''s your friend?" she asks leaning on the hood of the car.'
 				'"Mom, This is <<$pcs_firstname>>. She is a friend that I share an interest with and she is also a customer of mine" Ksenya says. "<<$pcs_nickname>>, This is my mother, Makoto." she says and her mother hugs you. "Any friend of my daughters is a friend of mine."' 
 
 				act 'continue':
 					*clr & cla
-					'<center><img <<$set_imgh>> src="images/character/pushkin/ksenya/KMall2.jpg"></center>'
+					'<center><img <<$set_imgh>> src="images/character/pushkin/ksenya/mall2.jpg"></center>'
 					'Makoto gets into the driver seat and starts up the car. "Come on Ksenya, we need to make a stop at the bank before we head back" she says and looks at you as Ksenya goes to the other side of the car. "Nice to have met you, <name>. I hope to see you around" she says and they drive off, leaving you alone in the parking lot.'
 				end
 			end

+ 1 - 1
locations/transport_functions.qsrc

@@ -457,7 +457,7 @@ end
 	!!=======================================!!
 
 if $ARGS[0] = 'buy_bus_pass':
-	if transportVars['trainpass_day'] <= daystart:
+	if transportVars['buspass_day'] <= daystart:
 		if money >= 100:
 			dynamic 'act ''Buy a daily bus pass (1 day - 100 <b>₽</b>)'':
 				cla

+ 3 - 3
locations/underwear.qsrc

@@ -54,10 +54,10 @@ end
 
 if $ARGS[0] = 'wear':
 	if underwear['lastworntype'] = 2:
-		gs 'underwear_bodysuits', 'wear'
+		gs 'underwear_bodysuits', 'wear', $ARGS[1]
 	else
-		gs 'panties', 'wear'
-		gs 'bras', 'wear'
+		gs 'panties', 'wear', $ARGS[1]
+		gs 'bras', 'wear', $ARGS[1]
 	end
 end
 

+ 1 - 1
locations/underwear_bodysuits.qsrc

@@ -368,7 +368,7 @@ if $ARGS[0] = 'wear':
 		end
 	else
 		if dyneval('RESULT = <<$ARGS[1]>>_bodysuits_s[<<ARGS[2]>>]') = 0:
-			gs 'underwear_bodysuits', 'wear2', $ARGS[2], ARGS[3]
+			gs 'underwear_bodysuits', 'wear2', $ARGS[1], ARGS[2]
 		else
 			underwear['type'] = 0
 			$bodysuitworntype = 'none'

+ 1 - 1
locations/uni_grounds.qsrc

@@ -54,7 +54,7 @@ if $ARGS[0] = 'main':
 		end
 	end
 
-	if mother['kickedout_timer'] ! 0 and mother['kickedout_timer'] + 3 <= daystart and hour > 6 and hour <= 15:
+	if mother['kickedout_timer'] ! 0 and mother['kickedout_timer'] + 3 <= daystart and hour > 6 and hour <= 15 and cumloc[11] = 0:
 		gs 'mother_chats', 'reconciliation_talk'
 	exit
 	end

+ 1 - 1
locations/uni_lessons1.qsrc

@@ -987,7 +987,7 @@ if $ARGS[0] = 'anatomy_and_physiology_101':
 				gs 'exp_gain', 'intel', rand(1,2)
 				'<center><img <<$set_imgh>> src="images/locations/city/island/university/classroom/question1.jpg"></center>'
 				'Miss Marinova nods approvingly, happy to see her students engaged and trying their best. She happily spends some extra time explaining the topic again, and answers any extra questions you might have. You feel smarter, thoroughly understanding today''s lesson now.'
-				act 'Wait for the end of the lesson': gs 'uni_lessonsev1', 'anatomy_and_physiology '
+				act 'Wait for the end of the lesson': gs 'uni_lessonsev1', 'anatomy_and_physiology'
 			end
 			act 'Wait for the end of the lesson': gs 'uni_lessonsev1', 'anatomy_and_physiology'
 		end

+ 1 - 1
locations/uni_lessons2.qsrc

@@ -973,7 +973,7 @@ if $ARGS[0] = 'anatomy_and_physiology_102':
 				gs 'exp_gain', 'intel', rand(1,2)
 				'<center><img <<$set_imgh>> src="images/locations/city/island/university/classroom/question1.jpg"></center>'
 				'Miss Marinova nods approvingly, happy to see her students engaged and trying their best. She happily spends some extra time explaining the topic again, and answers any extra questions you might have. You feel smarter, thoroughly understanding today''s lesson now.'
-				act 'Wait for the end of the lesson': gs 'uni_lessonsev1', 'anatomy_and_physiology '
+				act 'Wait for the end of the lesson': gs 'uni_lessonsev1', 'anatomy_and_physiology'
 			end
 			act 'Wait for the end of the lesson': gs 'uni_lessonsev1', 'anatomy_and_physiology'
 		end

+ 1 - 1
locations/uni_lessons3.qsrc

@@ -973,7 +973,7 @@ if $ARGS[0] = 'anatomy_and_physiology_201':
 				gs 'exp_gain', 'intel', rand(1,2)
 				'<center><img <<$set_imgh>> src="images/locations/city/island/university/classroom/question1.jpg"></center>'
 				'Miss Marinova nods approvingly, happy to see her students engaged and trying their best. She happily spends some extra time explaining the topic again, and answers any extra questions you might have. You feel smarter, thoroughly understanding today''s lesson now.'
-				act 'Wait for the end of the lesson': gs 'uni_lessonsev1', 'anatomy_and_physiology '
+				act 'Wait for the end of the lesson': gs 'uni_lessonsev1', 'anatomy_and_physiology'
 			end
 			act 'Wait for the end of the lesson': gs 'uni_lessonsev2', 'anatomy_and_physiology'
 		end

+ 1 - 1
locations/uni_lessons4.qsrc

@@ -973,7 +973,7 @@ if $ARGS[0] = 'anatomy_and_physiology_202':
 				gs 'exp_gain', 'intel', rand(1,2)
 				'<center><img <<$set_imgh>> src="images/locations/city/island/university/classroom/question1.jpg"></center>'
 				'Miss Marinova nods approvingly, happy to see her students engaged and trying their best. She happily spends some extra time explaining the topic again, and answers any extra questions you might have. You feel smarter, thoroughly understanding today''s lesson now.'
-				act 'Wait for the end of the lesson': gs 'uni_lessonsev1', 'anatomy_and_physiology '
+				act 'Wait for the end of the lesson': gs 'uni_lessonsev1', 'anatomy_and_physiology'
 			end
 			act 'Wait for the end of the lesson': gs 'uni_lessonsev2', 'anatomy_and_physiology'
 		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.'

+ 111 - 127
locations/uni_programs.qsrc

@@ -1,11 +1,11 @@
 # uni_programs
 
-!!This is the file containing the variabels and actions for handeling the different program the player can attend at the university.
+!!This is the file containing the variables and actions for handling the different programs the player can attend at the university.
 
-!!The following vaiables are important.
+!!The following variables are important.
 !! university['student'] is set to 1 if the player is enrolled in a university program.
 !! $university['enrolled_in'] is the name of the university program the player is enrolled in, there is the following progams: teaching_studies, nursing
-!! university['enrolled_in_semester'] is the semester the player enrolled in starting at 1 for the first semester and ending with 8 for the last.
+!! university['enrolled_in_semester'] is the semester the player enrolled in, starting at 1 for the first semester and ending with 8 for the last.
 
 if $ARGS[0] = 'program_name':
 	if  $university['enrolled_in']= 'teaching_studies':
@@ -17,7 +17,7 @@ if $ARGS[0] = 'program_name':
 end
 
 if $ARGS[0] = 'uni_period_first':
-	!!This arg have two functions. If called with gs without any optional argument it will make the cations to go to class availeble.
+	!!This arg has two functions. If called with gs without any optional argument, it will make the cations to go to class availeble.
 	!!Second if called as a function with the additional ARGS[1] of monday, tuesday, wednesday or thursday, it will print on the screen the name of the class and the time period. 
 	if $university['enrolled_in'] = 'teaching_studies':
 		if university['enrolled_in_semester'] = 1:
@@ -231,7 +231,7 @@ if $ARGS[0] = 'uni_period_first':
 			elseif $ARGS[1] = 'wednesday':
 				$Result = 'Examination and Treatment 101 (09:00 to 10:30)'
 			elseif $ARGS[1] = 'thursday':
-				$Result = 'Anatomy and Physiology 101 (09:00 to 10:30)'
+				$Result = 'Patient Care 101 (09:00 to 10:30)'
 			elseif week = 1: 
 				*nl
 				'Your next class will start at 09:00. You can go to it now or do other things first, but you need to be at the university plaza before it starts if you want to attend it.'
@@ -265,12 +265,12 @@ if $ARGS[0] = 'uni_period_first':
 			elseif week = 4: 
 				*nl
 				'Your next class will start at 09:00. You can go to it now or do other things first, but you need to be at the university plaza before it starts if you want to attend it.'
-				act 'Go to your Anatomy and Physiology 101 class': 
+				act 'Go to your Patient Care 101 class': 
 					if hour = 8: minut += 60 - minut
 					if hour = 7: minut += 120 - minut					
 					uni_period['first'] = daystart
 					gs 'stat'
-					gt 'uni_lessons1', 'anatomy_and_physiology_101'
+					gt 'uni_lessons1', 'patient_care_101'
 				end
 			end
 		elseif university['enrolled_in_semester'] = 2:
@@ -281,7 +281,7 @@ if $ARGS[0] = 'uni_period_first':
 			elseif $ARGS[1] = 'wednesday':
 				$Result = 'Examination and Treatment 102 (09:00 to 10:30)'
 			elseif $ARGS[1] = 'thursday':
-				$Result = 'Anatomy and Physiology 102 (09:00 to 10:30)'
+				$Result = 'Patient Care 102 (09:00 to 10:30)'
 			elseif week = 1: 
 				*nl
 				'Your next class will start at 09:00. You can go to it now or do other things first, but you need to be at the university plaza before it starts if you want to attend it.'
@@ -320,7 +320,7 @@ if $ARGS[0] = 'uni_period_first':
 					if hour = 7: minut += 120 - minut					
 					uni_period['first'] = daystart
 					gs 'stat'
-					gt 'uni_lessons2', 'anatomy_and_physiology_102'
+					gt 'uni_lessons2', 'patient_care_102'
 				end
 			end
 		elseif university['enrolled_in_semester'] = 3:
@@ -331,7 +331,7 @@ if $ARGS[0] = 'uni_period_first':
 			elseif $ARGS[1] = 'wednesday':
 				$Result = 'Dosages and Pharmaceuticals 101 (09:00 to 10:30)'
 			elseif $ARGS[1] = 'thursday':
-				$Result = 'Anatomy and Physiology 201 (09:00 to 10:30)'
+				$Result = 'Patient Care 201 (09:00 to 10:30)'
 			elseif week = 1: 
 				*nl
 				'Your next class will start at 09:00. You can go to it now or do other things first, but you need to be at the university plaza before it starts if you want to attend it.'
@@ -365,12 +365,12 @@ if $ARGS[0] = 'uni_period_first':
 			elseif week = 4: 
 				*nl
 				'Your next class will start at 09:00. You can go to it now or do other things first, but you need to be at the university plaza before it starts if you want to attend it.'
-				act 'Go to your Anatomy and Physiology 201 class': 
+				act 'Go to your Patient Care 201 class': 
 					if hour = 8: minut += 60 - minut
 					if hour = 7: minut += 120 - minut					
 					uni_period['first'] = daystart
 					gs 'stat'
-					gt 'uni_lessons3', 'anatomy_and_physiology_201'
+					gt 'uni_lessons3', 'patient_care_201'
 				end
 			end
 		elseif university['enrolled_in_semester'] = 4:
@@ -381,7 +381,7 @@ if $ARGS[0] = 'uni_period_first':
 			elseif $ARGS[1] = 'wednesday':
 				$Result = 'Dosages and Pharmaceuticals 102 (09:00 to 10:30)'
 			elseif $ARGS[1] = 'thursday':
-				$Result = 'Anatomy and Physiology 202 (09:00 to 10:30)'
+				$Result = 'Patient Care 202 (09:00 to 10:30)'
 			elseif week = 1: 
 				*nl
 				'Your next class will start at 09:00. You can go to it now or do other things first, but you need to be at the university plaza before it starts if you want to attend it.'
@@ -415,12 +415,12 @@ if $ARGS[0] = 'uni_period_first':
 			elseif week = 4: 
 				*nl
 				'Your next class will start at 09:00. You can go to it now or do other things first, but you need to be at the university plaza before it starts if you want to attend it.'
-				act 'Go to your Anatomy and Physiology 202 class': 
+				act 'Go to your Patient Care 202 class': 
 					if hour = 8: minut += 60 - minut
 					if hour = 7: minut += 120 - minut					
 					uni_period['first'] = daystart
 					gs 'stat'
-					gt 'uni_lessons4', 'anatomy_and_physiology_202'
+					gt 'uni_lessons4', 'patient_care_202'
 				end
 			end
 		end
@@ -428,9 +428,9 @@ if $ARGS[0] = 'uni_period_first':
 end
 
 if $ARGS[0] = 'uni_period_second':
-	!!This arg have two functions. If called with gs without any optional argument it will make the options to go to class availeble.
+	!!This arg has two functions. If called with gs without any optional argument, it will make the options to go to class available.
 	!!Second if called as a function with the additional ARGS[1] of monday, tuesday, wednesday or thursday, it will print on the screen the name of the classe and the time period. 
-	if $university['enrolled_in']= 'teaching_studies':
+	if $university['enrolled_in'] = 'teaching_studies':
 		if university['enrolled_in_semester'] = 1:
 			if $ARGS[1] = 'monday':
 				$Result = 'Teaching Methods 101 (11:00 to 12:30)'
@@ -529,7 +529,7 @@ if $ARGS[0] = 'uni_period_second':
 			elseif $ARGS[1] = 'tuesday':
 				$Result = 'Learning Theories 201 (11:00 to 12:30)'
 			elseif $ARGS[1] = 'wednesday':
-				$Result = ' Assessment 201 (11:00 to 12:30)'
+				$Result = 'Assessment 201 (11:00 to 12:30)'
 			elseif $ARGS[1] = 'thursday':
 				$Result = 'Learning Theories 201 (11:00 to 12:30)'
 			elseif week = 1: 
@@ -620,200 +620,184 @@ if $ARGS[0] = 'uni_period_second':
 	if $university['enrolled_in'] = 'nursing':
 		if university['enrolled_in_semester'] = 1:
 			if $ARGS[1] = 'monday':
-				$Result = 'Patient Care 101 (09:00 to 10:30)'
+				$Result = 'Anatomy and Physiology 101 (11:00 to 12:30)'
 			elseif $ARGS[1] = 'tuesday':
-				$Result = 'Anatomy and Physiology 101 (09:00 to 10:30)'
+				$Result = 'Patient Care 101 (11:00 to 12:30)'
 			elseif $ARGS[1] = 'wednesday':
-				$Result = 'Examination and Treatment 101 (09:00 to 10:30)'
+				$Result = 'Patient Care 101 (11:00 to 12:30)'
 			elseif $ARGS[1] = 'thursday':
-				$Result = 'Anatomy and Physiology 101 (09:00 to 10:30)'
+				$Result = 'Anatomy and Physiology 101 (11:00 to 12:30)'
 			elseif week = 1: 
 				*nl
-				'Your next class will start at 09:00. You can go to it now or do other things first, but you need to be at the university plaza before it starts if you want to attend it.'
-				act 'Go to your Patient Care 102 class': 
-					if hour = 8: minut += 60 - minut
-					if hour = 7: minut += 120 - minut					
-					uni_period['first'] = daystart
+				'Your next class will start at 11:00. You can go to it now or do other things first, but you need to be at the university plaza before it starts if you want to attend it.'
+				act 'Go to your Anatomy and Physiology 101 class': 
+					if hour = 10: minut += 60 - minut
+					uni_period['second'] = daystart
 					gs 'stat'
-					gt 'uni_lessons1', 'patient_care_101'
+					gt 'uni_lessons1', 'anatomy_and_physiology_101'
 				end
 			elseif week = 2:
 				*nl
-				'Your next class will start at 09:00. You can go to it now or do other things first, but you need to be at the university plaza before it starts if you want to attend it.'
-				act 'Go to your Anatomy and Physiology 102 class': 
-					if hour = 8: minut += 60 - minut
-					if hour = 7: minut += 120 - minut					
-					uni_period['first'] = daystart
+				'Your next class will start at 11:00. You can go to it now or do other things first, but you need to be at the university plaza before it starts if you want to attend it.'
+				act 'Go to your Patient Care 101 class': 
+					if hour = 10: minut += 60 - minut				
+					uni_period['second'] = daystart
 					gs 'stat'
-					gt 'uni_lessons1', 'anatomy_and_physiology_101'
+					gt 'uni_lessons1', 'patient_care_101'
 				end
 			elseif week = 3:
 				*nl
-				'Your next class will start at 09:00. You can go to it now or do other things first, but you need to be at the university plaza before it starts if you want to attend it.'
-				act 'Go to your Examination and Treatment 102 class': 
-					if hour = 8: minut += 60 - minut
-					if hour = 7: minut += 120 - minut					
-					uni_period['first'] = daystart
+				'Your next class will start at 11:00. You can go to it now or do other things first, but you need to be at the university plaza before it starts if you want to attend it.'
+				act 'Go to your Patient Care 101 class': 
+					if hour = 10: minut += 60 - minut				
+					uni_period['second'] = daystart
 					gs 'stat'
-					gt 'uni_lessons1', 'examination_and_treatment_101'
+					gt 'uni_lessons1', 'patient_care_101'
 				end
 			elseif week = 4: 
 				*nl
-				'Your next class will start at 09:00. You can go to it now or do other things first, but you need to be at the university plaza before it starts if you want to attend it.'
-				act 'Go to your Anatomy and Physiology 102 class': 
-					if hour = 8: minut += 60 - minut
-					if hour = 7: minut += 120 - minut					
-					uni_period['first'] = daystart
+				'Your next class will start at 11:00. You can go to it now or do other things first, but you need to be at the university plaza before it starts if you want to attend it.'
+				act 'Go to your Anatomy and Physiology 101 class': 
+					if hour = 10: minut += 60 - minut
+					uni_period['second'] = daystart
 					gs 'stat'
 					gt 'uni_lessons1', 'anatomy_and_physiology_101'
 				end
 			end
 		elseif university['enrolled_in_semester'] = 2:
 			if $ARGS[1] = 'monday':
-				$Result = 'Patient Care 102 (09:00 to 10:30)'
+				$Result = 'Anatomy and Physiology 102 (11:00 to 12:30)'
 			elseif $ARGS[1] = 'tuesday':
-				$Result = 'Anatomy and Physiology 102 (09:00 to 10:30)'
+				$Result = 'Patient Care 102 (11:00 to 12:30)'
 			elseif $ARGS[1] = 'wednesday':
-				$Result = 'Examination and Treatment 102 (09:00 to 10:30)'
+				$Result = 'Patient Care 102 (11:00 to 12:30)'
 			elseif $ARGS[1] = 'thursday':
-				$Result = 'Anatomy and Physiology 102 (09:00 to 10:30)'
+				$Result = 'Anatomy and Physiology 102 (11:00 to 12:30)'
 			elseif week = 1: 
 				*nl
-				'Your next class will start at 09:00. You can go to it now or do other things first, but you need to be at the university plaza before it starts if you want to attend it.'
-				act 'Go to your Patient Care 102 class': 
-					if hour = 8: minut += 60 - minut
-					if hour = 7: minut += 120 - minut					
-					uni_period['first'] = daystart
+				'Your next class will start at 11:00. You can go to it now or do other things first, but you need to be at the university plaza before it starts if you want to attend it.'
+				act 'Go to your Anatomy and Physiology 102 class': 
+					if hour = 10: minut += 60 - minut
+					uni_period['second'] = daystart
 					gs 'stat'
-					gt 'uni_lessons2', 'patient_care_102'
+					gt 'uni_lessons2', 'anatomy_and_physiology_102'
 				end
 			elseif week = 2:
 				*nl
-				'Your next class will start at 09:00. You can go to it now or do other things first, but you need to be at the university plaza before it starts if you want to attend it.'
-				act 'Go to your Anatomy and Physiology 102 class': 
-					if hour = 8: minut += 60 - minut
-					if hour = 7: minut += 120 - minut					
-					uni_period['first'] = daystart
+				'Your next class will start at 11:00. You can go to it now or do other things first, but you need to be at the university plaza before it starts if you want to attend it.'
+				act 'Go to your Patient Care 102 class': 
+					if hour = 10: minut += 60 - minut				
+					uni_period['second'] = daystart
 					gs 'stat'
-					gt 'uni_lessons2', 'anatomy_and_physiology_102'
+					gt 'uni_lessons2', 'patient_care_102'
 				end
 			elseif week = 3:
 				*nl
-				'Your next class will start at 09:00. You can go to it now or do other things first, but you need to be at the university plaza before it starts if you want to attend it.'
-				act 'Go to your Examination and Treatment 102 class': 
-					if hour = 8: minut += 60 - minut
-					if hour = 7: minut += 120 - minut					
-					uni_period['first'] = daystart
+				'Your next class will start at 11:00. You can go to it now or do other things first, but you need to be at the university plaza before it starts if you want to attend it.'
+				act 'Go to your Patient Care 102 class': 
+					if hour = 10: minut += 60 - minut				
+					uni_period['second'] = daystart
 					gs 'stat'
-					gt 'uni_lessons2', 'examination_and_treatment_102'
+					gt 'uni_lessons2', 'patient_care_102'
 				end
 			elseif week = 4: 
 				*nl
-				'Your next class will start at 09:00. You can go to it now or do other things first, but you need to be at the university plaza before it starts if you want to attend it.'
+				'Your next class will start at 11:00. You can go to it now or do other things first, but you need to be at the university plaza before it starts if you want to attend it.'
 				act 'Go to your Anatomy and Physiology 102 class': 
-					if hour = 8: minut += 60 - minut
-					if hour = 7: minut += 120 - minut					
-					uni_period['first'] = daystart
+					if hour = 10: minut += 60 - minut
+					uni_period['second'] = daystart
 					gs 'stat'
 					gt 'uni_lessons2', 'anatomy_and_physiology_102'
 				end
 			end
 		elseif university['enrolled_in_semester'] = 3:
 			if $ARGS[1] = 'monday':
-				$Result = 'Patient Care 201 (09:00 to 10:30)'
+				$Result = 'Anatomy and Physiology 201 (11:00 to 12:30)'
 			elseif $ARGS[1] = 'tuesday':
-				$Result = 'Anatomy and Physiology 201 (09:00 to 10:30)'
+				$Result = 'Patient Care 201 (11:00 to 12:30)'
 			elseif $ARGS[1] = 'wednesday':
-				$Result = 'Dosages and Pharmaceuticals 101 (09:00 to 10:30)'
+				$Result = 'Patient Care 201 (11:00 to 12:30)'
 			elseif $ARGS[1] = 'thursday':
-				$Result = 'Anatomy and Physiology 201 (09:00 to 10:30)'
+				$Result = 'Anatomy and Physiology 201 (11:00 to 12:30)'
 			elseif week = 1: 
 				*nl
-				'Your next class will start at 09:00. You can go to it now or do other things first, but you need to be at the university plaza before it starts if you want to attend it.'
-				act 'Go to your Patient Care 201 class': 
-					if hour = 8: minut += 60 - minut
-					if hour = 7: minut += 120 - minut					
-					uni_period['first'] = daystart
+				'Your next class will start at 11:00. You can go to it now or do other things first, but you need to be at the university plaza before it starts if you want to attend it.'
+				act 'Go to your Anatomy and Physiology 201 class': 
+					if hour = 10: minut += 60 - minut
+					uni_period['second'] = daystart
 					gs 'stat'
-					gt 'uni_lessons3', 'patient_care_201'
+					gt 'uni_lessons3', 'anatomy_and_physiology_201'
 				end
 			elseif week = 2:
 				*nl
-				'Your next class will start at 09:00. You can go to it now or do other things first, but you need to be at the university plaza before it starts if you want to attend it.'
-				act 'Go to your Anatomy and Physiology 201 class': 
-					if hour = 8: minut += 60 - minut
-					if hour = 7: minut += 120 - minut					
-					uni_period['first'] = daystart
+				'Your next class will start at 11:00. You can go to it now or do other things first, but you need to be at the university plaza before it starts if you want to attend it.'
+				act 'Go to your Patient Care 201 class': 
+					if hour = 10: minut += 60 - minut				
+					uni_period['second'] = daystart
 					gs 'stat'
-					gt 'uni_lessons3', 'anatomy_and_physiology_201'
+					gt 'uni_lessons3', 'patient_care_201'
 				end
 			elseif week = 3:
 				*nl
-				'Your next class will start at 09:00. You can go to it now or do other things first, but you need to be at the university plaza before it starts if you want to attend it.'
-				act 'Go to your Dosages and Pharmaceuticals 101 class': 
-					if hour = 8: minut += 60 - minut
-					if hour = 7: minut += 120 - minut					
-					uni_period['first'] = daystart
+				'Your next class will start at 11:00. You can go to it now or do other things first, but you need to be at the university plaza before it starts if you want to attend it.'
+				act 'Go to your Patient Care 201 class': 
+					if hour = 10: minut += 60 - minut				
+					uni_period['second'] = daystart
 					gs 'stat'
-					gt 'uni_lessons3', 'dosages_and_pharmaceuticals_101'
+					gt 'uni_lessons3', 'patient_care_201'
 				end
 			elseif week = 4: 
 				*nl
-				'Your next class will start at 09:00. You can go to it now or do other things first, but you need to be at the university plaza before it starts if you want to attend it.'
+				'Your next class will start at 11:00. You can go to it now or do other things first, but you need to be at the university plaza before it starts if you want to attend it.'
 				act 'Go to your Anatomy and Physiology 201 class': 
-					if hour = 8: minut += 60 - minut
-					if hour = 7: minut += 120 - minut					
-					uni_period['first'] = daystart
+					if hour = 10: minut += 60 - minut
+					uni_period['second'] = daystart
 					gs 'stat'
 					gt 'uni_lessons3', 'anatomy_and_physiology_201'
 				end
 			end
 		elseif university['enrolled_in_semester'] = 4:
 			if $ARGS[1] = 'monday':
-				$Result = 'Patient Care 202 (09:00 to 10:30)'
+				$Result = 'Anatomy and Physiology 202 (11:00 to 12:30)'
 			elseif $ARGS[1] = 'tuesday':
-				$Result = 'Anatomy and Physiology 202 (09:00 to 10:30)'
+				$Result = 'Patient Care 202 (11:00 to 12:30)'
 			elseif $ARGS[1] = 'wednesday':
-				$Result = 'Dosages and Pharmaceuticals 102 (09:00 to 10:30)'
+				$Result = 'Patient Care 202 (11:00 to 12:30)'
 			elseif $ARGS[1] = 'thursday':
-				$Result = 'Anatomy and Physiology 202 (09:00 to 10:30)'
+				$Result = 'Anatomy and Physiology 202 (11:00 to 12:30)'
 			elseif week = 1: 
 				*nl
-				'Your next class will start at 09:00. You can go to it now or do other things first, but you need to be at the university plaza before it starts if you want to attend it.'
-				act 'Go to your Patient Care 202 class': 
-					if hour = 8: minut += 60 - minut
-					if hour = 7: minut += 120 - minut					
-					uni_period['first'] = daystart
+				'Your next class will start at 11:00. You can go to it now or do other things first, but you need to be at the university plaza before it starts if you want to attend it.'
+				act 'Go to your Anatomy and Physiology 202 class': 
+					if hour = 10: minut += 60 - minut
+					uni_period['second'] = daystart
 					gs 'stat'
-					gt 'uni_lessons4', 'patient_care_202'
+					gt 'uni_lessons4', 'anatomy_and_physiology_202'
 				end
 			elseif week = 2:
 				*nl
-				'Your next class will start at 09:00. You can go to it now or do other things first, but you need to be at the university plaza before it starts if you want to attend it.'
-				act 'Go to your Anatomy and Physiology 202 class': 
-					if hour = 8: minut += 60 - minut
-					if hour = 7: minut += 120 - minut					
-					uni_period['first'] = daystart
+				'Your next class will start at 11:00. You can go to it now or do other things first, but you need to be at the university plaza before it starts if you want to attend it.'
+				act 'Go to your Patient Care 202 class': 
+					if hour = 10: minut += 60 - minut				
+					uni_period['second'] = daystart
 					gs 'stat'
-					gt 'uni_lessons4', 'anatomy_and_physiology_202'
+					gt 'uni_lessons4', 'patient_care_202'
 				end
 			elseif week = 3:
 				*nl
-				'Your next class will start at 09:00. You can go to it now or do other things first, but you need to be at the university plaza before it starts if you want to attend it.'
-				act 'Go to your Dosages and Pharmaceuticals 102 class': 
-					if hour = 8: minut += 60 - minut
-					if hour = 7: minut += 120 - minut					
-					uni_period['first'] = daystart
+				'Your next class will start at 11:00. You can go to it now or do other things first, but you need to be at the university plaza before it starts if you want to attend it.'
+				act 'Go to your Patient Care 202 class': 
+					if hour = 10: minut += 60 - minut				
+					uni_period['second'] = daystart
 					gs 'stat'
-					gt 'uni_lessons4', 'dosages_and_pharmaceuticals_102'
+					gt 'uni_lessons4', 'patient_care_202'
 				end
 			elseif week = 4: 
 				*nl
-				'Your next class will start at 09:00. You can go to it now or do other things first, but you need to be at the university plaza before it starts if you want to attend it.'
+				'Your next class will start at 11:00. You can go to it now or do other things first, but you need to be at the university plaza before it starts if you want to attend it.'
 				act 'Go to your Anatomy and Physiology 202 class': 
-					if hour = 8: minut += 60 - minut
-					if hour = 7: minut += 120 - minut					
-					uni_period['first'] = daystart
+					if hour = 10: minut += 60 - minut
+					uni_period['second'] = daystart
 					gs 'stat'
 					gt 'uni_lessons4', 'anatomy_and_physiology_202'
 				end
@@ -823,7 +807,7 @@ if $ARGS[0] = 'uni_period_second':
 end
 
 if $ARGS[0] = 'uni_period_third':
-	!!This arg have two functions. If called with gs without any optional argument it will make the options to go to class availeble.
+	!!This arg has two functions. If called with gs without any optional argument, it will make the options to go to class available.
 	!!Second if called as a function with the additional ARGS[1] of monday, tuesday, wednesday or thursday, it will print on the screen the name of the classe and the time period. 
 	if $university['enrolled_in']= 'teaching_studies':
 		if university['enrolled_in_semester'] = 1:
@@ -1063,7 +1047,7 @@ if $ARGS[0] = 'uni_period_third':
 					$Result = '<<$university[''elective_semester_1_3'']>> (13:15 to 14:45)'
 				end
 			elseif week = 1 and $university['elective_semester_1_1'] ! '': 
-					*nl
+				*nl
 				'Your next class will start at 13:15.'
 				act 'Go to your elective <<$university[''elective_semester_1_1'']>>': 
 					if hour = 12: minut += 75 - minut
@@ -1270,9 +1254,9 @@ if $ARGS[0] = 'uni_period_third':
 end
 
 if $ARGS[0] = 'exam':
-	!!This arg have three functions. If called with gs without any optional argument it will make the options to go to exam availeble.
+	!!This arg has three functions. If called with gs without any optional argument, it will make the options to go to exam availeble.
 	!!The second if called as a function with the additional $ARGS[1] = 'schedule', it will print on the screen the name and date of the exams you have left this semester. 
-	!!The third is if called with $ARGS[1] = 'is_over' and $ARGs[2] the name of the class to no if the time slot for the exam has passed by returning 1. Only use this during in the exam weeks, out side the exam week this is covered of the variabels that tell wether the semeter is passed or not.
+	!!The third is if called with $ARGS[1] = 'is_over' and $ARGS[2] the name of the class to no if the time slot for the exam has passed by returning 1. (Only use this during the exam weeks. Outside of the exam week, this is covered by the variable that says whether the semester is passed or not)
 	if $university['enrolled_in'] = 'teaching_studies':
 		if university['enrolled_in_semester'] = 1:
 			if $ARGS[1] = 'schedule':

+ 87 - 43
locations/wardrobe.qsrc

@@ -347,20 +347,20 @@ end
 if $ARGS[0] = 'default_set_name':
 	*clr & cla
 	$clothing_default_page[clothing_default_page] = input('Enter new name for this set')
-	act 'Return': gt 'wardrobe', 'default<<clothing_default_page>>'
+	gt 'wardrobe', 'default<<clothing_default_page>>'
 end
 
 if $ARGS[0] = 'default_actions':
-	act 'Return':
-		gt $loc, $loc_arg
-	end
+	act 'Return': gt $loc, $loc_arg
  
 	act 'Select outfit to wear':
 		cla
+		act 'Return': gt 'wardrobe', $wardrobeDefaultPagePref
 		gs 'wardrobe', 'default_actions_wear'
 	end
 	act 'Choose another page':
 		cla
+		act 'Return': gt 'wardrobe', $wardrobeDefaultPagePref
 		gs 'wardrobe', 'default_actions_page'
 	end
 	act 'Rename this set': gs 'wardrobe', 'default_set_name'
@@ -925,29 +925,20 @@ if $ARGS[0] = 'default_sport_options':
 	if default_sport_number = 0:
 		'You have no default sports clothing set, you can set this in your wardrobe.'
 	else
-		!! checks to see if player is wearing the default sports set using default_sport_number[2]
-		default_sport_number[2] = 0
-		if $clothingworntype = $defclothingtype[default_sport_number] and clothingwornnumber = defclothingnumber[default_sport_number]: default_sport_number[2] += 1
-		if defunderwear[default_sport_number] = 2:
-			if $bodysuitworntype = $defbodysuittype[default_sport_number] and bodysuitwornnumber = defbodysuitnumber[default_sport_number]: default_sport_number[2] += 1
-		else
-			if $pantyworntype = $defpantytype[default_sport_number] and pantywornnumber = defpantynumber[default_sport_number] and $braworntype = $defbratype[default_sport_number] and brawornnumber = defbranumber[default_sport_number]: default_sport_number[2] += 1
-		end
-		if $shoeworntype = $defshoetype[default_sport_number] and shoewornnumber = defshoenumber[default_sport_number]: default_sport_number[2] += 1
-		if $currentpursetype = $defpursetype[default_sport_number] and currentpursenumber = defpursenumber[default_sport_number]: default_sport_number[2] += 1
-		if $coatworntype = $defcoattype[default_sport_number] and coatwornnumber = defcoatnumber[default_sport_number]: default_sport_number[2] += 1
-
+		gs 'wardrobe', 'is_sport'
 		!! check to see if sports outfit is worn out
-		if dyneval('RESULT = <<$defclothingtype[default_sport_number]>>_h[<<defclothingnumber[default_sport_number]>>]') = 0:
-			act '<font color="red">Put on your sports clothes - unavailable as outfit is worn out</font>':
-			end
+		if dyneval('RESULT = <<$defclothingtype[default_sport_number]>>_h[<<defclothingnumber[default_sport_number]>>]') <= 0:
+			act 'Put on your sports clothes': msg '<font color="red">Unavailable as outfit is worn out!</font>'
 		!! check to see that player is not wearing default sports outfit
 		elseif default_sport_number[2] ! 5:
-			act'Put on your sports clothes':
+			act 'Put on your sports clothes':
+				if func('prostitution_functions', 'is_default') ! 0: gs 'wardrobe', 'back_to_regular_clothes'
+				
 				$lastwornclothingtype['sport'] = $clothingworntype
 				lastwornclothingnumber['sport'] = clothingwornnumber
-				lastwornunderwear['sport'] = underwear['type']
-				if defunderwear[default_sport_number] = 2:
+				lastwornunderwear['sport'] = 0
+				if underwear['type'] = 2:
+					lastwornunderwear['sport'] = 2
 					$lastwornbodysuittype['sport'] = $bodysuitworntype
 					lastwornbodysuitnumber['sport'] = bodysuitwornnumber
 				else
@@ -956,8 +947,8 @@ if $ARGS[0] = 'default_sport_options':
 					$lastwornbratype['sport'] = $braworntype
 					lastwornbranumber['sport'] = brawornnumber
 				end
-				$shoelastworntype['sport'] = $shoeworntype
-				shoelastwornnumber['sport'] = shoewornnumber
+				$lastwornshoetype['sport'] = $shoeworntype
+				lastwornshoenumber['sport'] = shoewornnumber
 				$lastwornpursetype['sport'] = $currentpursetype
 				lastwornpursenumber['sport'] = currentpursenumber
 				$lastworncoattype['sport'] = $coatworntype
@@ -966,30 +957,83 @@ if $ARGS[0] = 'default_sport_options':
 				gt $loc, $loc_arg
 			end
 		else
-			act'Put your regular clothes back on':
-				if $lastwornclothingtype['sport'] = '':
-					gs 'clothing', 'wear_last_worn'
-					gs 'underwear', 'wear'
-					gs 'shoes', 'wear', 'last_worn'
-				else
-					gs 'clothing', 'wear', $lastwornclothingtype['sport'], lastwornclothingnumber['sport']
-
-					if lastwornunderwear['sport'] = 2:
-						gs 'underwear_bodysuits', 'wear', $lastwornbodysuittype['sport'], lastwornbodysuitnumber['sport']
-					else
-						gs 'panties', 'wear', $lastwornpantytype['sport'], lastwornpantynumber['sport']
-						gs 'bras', 'wear', $lastwornbratype['sport'], lastwornbranumber['sport']
-					end
-					gs 'shoes', 'wear', $shoelastworntype['sport'], shoelastwornnumber['sport']
-					gs 'purses', 'wear', $lastwornpursetype['sport'], lastwornpursenumber['sport']
-					gs 'coats', 'wear', $lastworncoattype['sport'], lastworncoatnumber['sport']
-					gt $loc, $loc_arg
-				end
+			act 'Change into your regular clothes':
+				gs 'wardrobe', 'back_to_regular_clothes'
+				if func('prostitution_functions', 'is_default') ! 0: gs 'wardrobe', 'back_to_regular_clothes'
+				gt $loc, $loc_arg
 			end
 		end
 	end
 end
 
+if $ARGS[0] = 'is_sport':
+	!! checks to see if player is wearing the default sports set using default_sport_number[2]
+	default_sport_number[2] = 0
+	if $clothingworntype = $defclothingtype[default_sport_number] and clothingwornnumber = defclothingnumber[default_sport_number]: default_sport_number[2] += 1
+	if defunderwear[default_sport_number] = 2:
+		if $bodysuitworntype = $defbodysuittype[default_sport_number] and bodysuitwornnumber = defbodysuitnumber[default_sport_number]: default_sport_number[2] += 1
+	else
+		if $pantyworntype = $defpantytype[default_sport_number] and pantywornnumber = defpantynumber[default_sport_number] and $braworntype = $defbratype[default_sport_number] and brawornnumber = defbranumber[default_sport_number]: default_sport_number[2] += 1
+	end
+	if $shoeworntype = $defshoetype[default_sport_number] and shoewornnumber = defshoenumber[default_sport_number]: default_sport_number[2] += 1
+	if $currentpursetype = $defpursetype[default_sport_number] and currentpursenumber = defpursenumber[default_sport_number]: default_sport_number[2] += 1
+	if $coatworntype = $defcoattype[default_sport_number] and coatwornnumber = defcoatnumber[default_sport_number]: default_sport_number[2] += 1
+end
+
+if $ARGS[0] = 'back_to_regular_clothes':
+
+	!! wearing prostitute outfit
+	if func('prostitution_functions', 'is_default') ! 0:
+		if $lastwornclothingtype['prostitute'] = '':
+			gs 'clothing', 'wear_last_worn'
+			gs 'underwear', 'wear', 'wear_last_worn'
+			gs 'shoes', 'wear', 'last_worn'
+			gs 'purses', 'wear', 'last_worn'
+			gs 'coats', 'wear', 'last_worn'
+		else
+			!!-- Clothing
+			gs 'clothing', 'wear', $lastwornclothingtype['prostitute'], lastwornclothingnumber['prostitute']
+			!!-- Underwear
+			if lastwornunderwear['prostitute'] = 2:
+				gs 'underwear_bodysuits', 'wear', $lastwornbodysuittype['prostitute'], lastwornbodysuitnumber['prostitute']
+			else
+				gs 'panties', 'wear', $lastwornpantytype['prostitute'], lastwornpantynumber['prostitute']
+				gs 'bras',    'wear', $lastwornbratype['prostitute'],   lastwornbranumber['prostitute']
+			end
+			!!-- Shoes
+			gs 'shoes',  'wear', $lastwornshoetype['prostitute'],  lastwornshoenumber['prostitute']
+			gs 'purses', 'wear', $lastwornpursetype['prostitute'], lastwornpursenumber['prostitute']
+			gs 'coats',  'wear', $lastworncoattype['prostitute'],  lastworncoatnumber['prostitute']
+		end
+
+		gs 'prostitution_functions', 'work_clothes'
+		if prostitute['changed_for_work']: prostitute['changed_for_work'] = 0
+
+	!! wearing sport outfit
+	elseif default_sport_number[2] >= 5:
+		if $lastwornclothingtype['sport'] = '':
+			gs 'clothing', 'wear_last_worn'
+			gs 'underwear', 'wear', 'wear_last_worn'
+			gs 'shoes', 'wear', 'last_worn'
+			gs 'purses', 'wear', 'last_worn'
+			gs 'coats', 'wear', 'last_worn'
+		else
+			gs 'clothing', 'wear', $lastwornclothingtype['sport'], lastwornclothingnumber['sport']
+
+			if lastwornunderwear['sport'] = 2:
+				gs 'underwear_bodysuits', 'wear', $lastwornbodysuittype['sport'], lastwornbodysuitnumber['sport']
+			else
+				gs 'panties', 'wear', $lastwornpantytype['sport'], lastwornpantynumber['sport']
+				gs 'bras',    'wear', $lastwornbratype['sport'],   lastwornbranumber['sport']
+			end
+			gs 'shoes',  'wear', $lastwornshoetype['sport'],  lastwornshoenumber['sport']
+			gs 'purses', 'wear', $lastwornpursetype['sport'], lastwornpursenumber['sport']
+			gs 'coats',  'wear', $lastworncoattype['sport'],  lastworncoatnumber['sport']
+		end
+
+		default_sport_number[2] = 0
+	end
+end
 
 --- wardrobe ---------------------------------
 

+ 64 - 0
tools/build_debug.py

@@ -0,0 +1,64 @@
+#!/usr/bin/env python
+# usage: build_debug.py <input_dir> <output_file_name>
+# does the exact opposite of txtsplit.py
+
+import os
+import sys
+import io
+import xml.etree.ElementTree as ET
+
+assert len(sys.argv) == 3, "usage:\nbuild_debug.py <input_dir> <output_file_name>"
+idir = str(sys.argv[1])
+oname = str(sys.argv[2])
+
+# read the project xml file first
+# let's do this later in order to implement directory structure
+tree = ET.parse('glife.qproj')
+root = tree.getroot()
+
+
+ofile = io.open(oname, 'w', encoding='utf-16', newline='\r\n')
+
+for location in root.iter('Location'):
+	iname = location.attrib['name']
+	iname = iname.replace("$","_")
+
+	try:
+		ifile = io.open(os.path.join(idir,iname + '.qsrc'), 'rt', encoding='utf-8')
+		text = ifile.readline()
+		locname = text.strip('#').strip()
+		text += u"if arrpos('$trace_locations', '{0}') > -1:\n".format(locname)
+		text += u"	copyarr '$trace_args', '$ARGS'\n"
+		text += u"	copyarr 'trace_args', 'ARGS'\n"
+		text += u"	gs 'debug_tools', 'trace', 'direct', '{0}'\n".format(locname)
+		text += u"end\n"
+		text += ifile.read()
+
+		# make sure there's a line at the end of file
+		# (why wouldn't there be one? WINDOWS!
+		if text[-1] != u'\n':
+			text += u'\n\n'
+
+		ofile.write(text)
+		ifile.close()
+	except IOError:
+		print("WARNING: missing location %s" % iname)
+		pass
+
+import subprocess
+git_hash = ''
+try:
+	git = subprocess.run(["git", "-C", idir, "rev-parse", "--short=10", "HEAD"], capture_output=True, encoding='utf-8')
+except:
+	pass
+else:
+	git_hash = git.stdout.strip()
+
+import datetime as dt
+ofile.write(u"#addbuilddate" + '\n')
+ofile.write(str(dt.datetime.now(dt.UTC).strftime("$builddate = '%d %B %Y, %H:%M %Z'")) + '\n')
+if git_hash != '':
+	ofile.write(u"$git_hash = '" + git_hash + "'\n")
+ofile.write(u"--- addbuilddate ---------------------------------" + '\n')
+
+ofile.close()