90 Achegas e08b5b4d0c ... aa9754d1b9

Autor SHA1 Mensaxe Data
  LinaHirata aa9754d1b9 [fixed] unnecessary call hai 4 meses
  LinaHirata 7f9dbb6f07 [fixed] typo hai 4 meses
  LinaHirata 364505db7a [added] debug_build, call trace hai 4 meses
  Lusticon 7caaa1d92a [changed] no pain no game hai 4 meses
  Lusticon 17ca7a0ddd [fixed] gopnik park sex progression hai 4 meses
  Kevin_Smarts 90274184d8 Merge remote-tracking branch 'Lusticon/master' hai 4 meses
  anjuna krokus 29785ddb96 [fixed] accidentally used trainpas instead of buspass for the bus passes. Added some comments to body for the future hai 4 meses
  anjuna krokus e887cb6598 [fixed] pcs_butt is now properly dynamical. It will be overhauled in the future, but for now it actually (finally) works. The intros now use the correct genetic butt values to get the indicated pcs_butt at normal body weight hai 4 meses
  Lusticon a580ef83d5 [fixed] gopnik park sex progression hai 4 meses
  anjuna krokus 336e0865ea [fixed] slight buff to pcs['butt_gen'] to align with intro_customization hai 4 meses
  anjuna krokus 1b0f2433b8 [removed] no need for set_access if you're using set_home hai 4 meses
  anjuna krokus ad6b0959c6 [fixed] intro_sg_tg not setting pcs_mass['body'] to the correct value (80 -> 60) and updated the layout to use intro_functions hai 4 meses
  anjuna krokus 07217019c2 [fixed] Forgotten colon hai 4 meses
  anjuna krokus f88e182694 [fixed] appearance not set correctly at the start of the game (hopefully) hai 4 meses
  Kevin_Smarts 4606c2cef5 Merge remote-tracking branch 'Lusticon/master' hai 4 meses
  Lusticon fee68405f2 [fixed] typos hai 4 meses
  anjuna krokus 7798b27abb Merge branch 'master' of https://git.tfgames.site/Kevin_Smarts/glife hai 4 meses
  anjuna krokus 4ecb13ae13 [fixed] forgotten change in start_type skipped the magic intro hai 4 meses
  anjuna krokus e2120852b4 [fixed] Temporary fix to the custom body images. Custom descriptions will not be fixed for now. hai 4 meses
  Kevin_Smarts f70e800c3f [fixed] updo and pigtails removed when hair grows too long and moved braid deg to body file from cikl hai 4 meses
  anjuna krokus e91556d4f9 [fixed] Sire to Sir hai 4 meses
  anjuna krokus b31c2eab83 Merge branch 'master' of https://git.tfgames.site/Kevin_Smarts/glife hai 4 meses
  Kevin_Smarts 0276229fd5 [fixed] typo hai 4 meses
  Kevin_Smarts c3e3faa93d Merge remote-tracking branch 'Lusticon/master' hai 4 meses
  Kevin_Smarts b7144878d8 Merge remote-tracking branch 'Anya/master' hai 4 meses
  Kevin_Smarts 85da7bb448 Merge remote-tracking branch 'Hornguy6/master' hai 4 meses
  anjuna krokus ab906c8715 [fixed] typo in a gs crashed the game. Thanx to chlu for finding it hai 4 meses
  Lusticon e07e1eaac2 [fixed] added worn out block for prostitute and sport outfits hai 4 meses
  Lusticon 06034370d6 [fixed] prostitute vs sport outfits fight 2.0 hai 4 meses
  Anya 6af30f79f4 image call updates hai 4 meses
  Anya 7186439577 image call update hai 4 meses
  hornguy6 0e52107de1 [fixed] missing gosub to prevent blank action hai 4 meses
  anjuna krokus 6c56f5de48 [fixed] bus stop images. For now it's just random images, but in the future specific bus stops will probably get a dedicated image set hai 4 meses
  anjuna krokus 2d0cdc5458 [fixed] Allowed buspasses to be sold at the bigger bus stops (Both Pavlovsk stops, Gadukino, and the Suburbs). Enabled shortcuts between pavlovsk Train platform - Bus platform, and between Suburbs Bus platform - Metro station, to limit the number of actions needed to travel. Thanks to BBZ01 for the feedback hai 4 meses
  anjuna krokus 0ac10f71a8 [fixed] Sire -> Sir. Tags added for Anya to fix image/video calls due to renaming hai 4 meses
  Lusticon 38bb0f45c2 [fixed] ballet use membership card deadend hai 4 meses
  Lusticon 23c3877e85 [fixed] prostitute vs sport outfits fight hai 4 meses
  Lusticon 762cf21f03 [fixed] wear prostitute outfit availability hai 4 meses
  Lusticon c02b8bb46f Merge branch 'master' of https://git.tfgames.site/Kevin_Smarts/glife hai 4 meses
  Lusticon 41f0d75c94 [added] petka['homework'] checks at the boys bathroom hai 4 meses
  Lusticon 89a9553421 [changed] Petka do Sveta homework chances hai 4 meses
  Kevin_Smarts 44740c3a9e Merge remote-tracking branch 'Lusticon/master' hai 4 meses
  anjuna krokus 6057f18c17 [fixed] Ballet dorm now properly uses the homes access. Indentation with 4 spaces in Pushkin_ballet_res have been replaced with tabs as indicated by the style guide. hai 4 meses
  anjuna krokus a392de1dd7 [fixed] typo in setting the hotel access hai 4 meses
  anjuna krokus 2d41f396c5 [fixed] forgotten &'s in intro files separating comments from code hai 4 meses
  Lusticon 6f4bc805ad [changed] milk donation money hai 4 meses
  Kevin_Smarts 919fc023f1 Merge remote-tracking branch 'Felix/master' hai 4 meses
  LinaHirata 0587fbfcb5 [fixed] relationship indicators in journal being all fucked up ...... hai 4 meses
  anjuna krokus 3c4c36f562 [fixed] forgotten 'set_access' call for therapist home hai 4 meses
  anjuna krokus a71a90d66d [added] The next step in the therapist story and new home which you share with him. hai 4 meses
  Kevin_Smarts c16cb0351e [fixed] bags not in the set up or removal of set prostitute outfits and the default check did not work as it used ampersands and not 'and' hai 4 meses
  Kevin_Smarts 3d83ed1063 Merge remote-tracking branch 'Anjuna/master' hai 4 meses
  Kevin_Smarts 1519e21025 Merge remote-tracking branch 'Hornguy6/master' hai 4 meses
  anjuna krokus 9189f9356a [fixed] fuckbudy/sugar daddy removal/additions. Clear All lovers function added as part of the therapist questline hai 4 meses
  anjuna krokus 7737675fad [fixed] gschool grades not being set properly and the cheatmenu not allowing them to be altered when a grade reached 100 hai 4 meses
  hornguy6 e70fd63634 [fixed] text edits hai 4 meses
  hornguy6 0285b0f270 [changed] npc trait requirement for event to something that makes more sense hai 4 meses
  hornguy6 06903a1e3b [changed] media choice hai 4 meses
  hornguy6 243135bec4 [fixed] more stat seeding and tracking hai 4 meses
  hornguy6 d94e119e23 [changed] how the pillow talk routing works to fix some weird occurences based on rng hai 4 meses
  hornguy6 4cbd2710a9 [fixed] some variable seeding and an if statement adjustment hai 4 meses
  hornguy6 e3c9032973 [changed] can also shower if sweaty hai 4 meses
  hornguy6 275dcbd2f9 [fixed] missing gosub hai 4 meses
  hornguy6 f956000d7e [changed] some value adjustment for trigger hai 4 meses
  hornguy6 f26d6acec1 [changed] media choice hai 4 meses
  hornguy6 03c89238d8 [changed] text edits and media adjustment hai 4 meses
  hornguy6 914ce6278e [fixed] missing if hai 4 meses
  Kevin_Smarts c9dac0eedc Merge remote-tracking branch 'Felix/master' hai 4 meses
  Kevin_Smarts d34de5c4c7 [fixed] I don't know where this def text comes from1"!!!!!!!!1111!!!1 hai 4 meses
  Kevin_Smarts fdf01d498c [fixed] variable misspelt hai 4 meses
  LinaHirata 620d460602 [fixed] incorrect html template in `indiktab`; hai 4 meses
  LinaHirata f2ac410743 Merge branch 'master' of https://git.tfgames.site/Kevin_Smarts/glife hai 4 meses
  Kevin_Smarts 999f440505 [fixed] Couple of typos in prostitute clothing changes hai 4 meses
  LinaHirata e52b770ee7 Merge branch 'master' of https://git.tfgames.site/Kevin_Smarts/glife hai 4 meses
  Kevin_Smarts 04b9765381 [fixed] extra apostrophes hai 4 meses
  Kevin_Smarts b5c76c6a5d [fixed] Wrong link hai 4 meses
  Kevin_Smarts c4a844bed5 Merge remote-tracking branch 'Creamel/master' hai 4 meses
  Kevin_Smarts c527074561 Merge remote-tracking branch 'Hornguy6/master' hai 4 meses
  creamel cab572dda1 Merge branch 'porn_debut_STD_fix' of creamel/glife into master hai 4 meses
  Creamel dcb7d1f3ad fixed a bug preventing Sveta to be into porn industry if she has STDs at her first movie hai 4 meses
  creamel 1148608855 Merge branch 'stripclub_negative_makeup_fix' of creamel/glife into master hai 4 meses
  Creamel 40bf8d201e Fixed ending up with negative amount of makeup in stripclub when showering with makeup already applied hai 4 meses
  creamel 0f24243552 Merge branch 'anush_sveta_olu_stats_fix' of creamel/glife into master hai 4 meses
  Creamel 6bb8be9df3 Fixed using the correct arousal calls when joining Anushka and Olu hai 4 meses
  hornguy6 c5b5049ee3 [fixed] typo hai 4 meses
  hornguy6 a45067568e [fixed] accidentally pushed a dead end option and commented out WIP option hai 4 meses
  creamel 4a8d39dc33 Merge branch 'artem_not_at_home_fix' of creamel/glife into master hai 4 meses
  Creamel 0125417a36 Fixed checking if Artem is at home hai 4 meses
  LinaHirata 0dfb798598 [changed] shrinkened `indiktab` by 10% hai 4 meses
  hornguy6 30f1bfb3a7 [changed] text to be able to account for a wider variety of preceding dialogue hai 4 meses
Modificáronse 75 ficheiros con 1913 adicións e 1122 borrados
  1. 20 1
      MakeQSP.bat
  2. 1 0
      glife.qproj
  3. 22 20
      locations/Cheatmenu_din.qsrc
  4. 63 11
      locations/HotelRoom.qsrc
  5. 6 51
      locations/LOCA.qsrc
  6. 25 18
      locations/artemhome.qsrc
  7. 1 1
      locations/ballet_secrets.qsrc
  8. 1 1
      locations/bdsm_garden.qsrc
  9. 22 6
      locations/body.qsrc
  10. 16 1
      locations/body_structure.qsrc
  11. 127 16
      locations/bus.qsrc
  12. 0 4
      locations/cikl.qsrc
  13. 1 1
      locations/city_clinic.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. 48 1
      locations/homes_properties_attr.qsrc
  23. 1 1
      locations/hookup_after.qsrc
  24. 14 10
      locations/indiktab.qsrc
  25. 132 133
      locations/intro_city_select.qsrc
  26. 9 1
      locations/intro_functions.qsrc
  27. 1 1
      locations/intro_sg.qsrc
  28. 145 142
      locations/intro_sg_select.qsrc
  29. 43 81
      locations/intro_sg_tg.qsrc
  30. 1 1
      locations/kendra.qsrc
  31. 5 1
      locations/loadg.qsrc
  32. 27 3
      locations/lover.qsrc
  33. 2 0
      locations/metro.qsrc
  34. 2 2
      locations/office.qsrc
  35. 5 4
      locations/olu.qsrc
  36. 3 3
      locations/onobjsel.qsrc
  37. 1 1
      locations/pav_clinic.qsrc
  38. 20 9
      locations/pav_hotel.qsrc
  39. 2 2
      locations/pav_hotelReception.qsrc
  40. 5 5
      locations/pav_lake.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. 1 0
      locations/pornstudio.qsrc
  46. 75 29
      locations/prostitution_functions.qsrc
  47. 323 323
      locations/pushkin_ballet_res.qsrc
  48. 22 1
      locations/saveupdater.qsrc
  49. 8 2
      locations/sex_ev_after.qsrc
  50. 7 7
      locations/sex_ev_boy_pillow_talk.qsrc
  51. 2 2
      locations/sex_ev_cum.qsrc
  52. 2 2
      locations/sex_ev_dress_talking.qsrc
  53. 19 22
      locations/sex_ev_favorite_part.qsrc
  54. 2 0
      locations/sex_ev_foreplay.qsrc
  55. 9 4
      locations/sex_ev_leave.qsrc
  56. 1 0
      locations/sex_ev_morning.qsrc
  57. 14 11
      locations/sex_ev_pillow_talk.qsrc
  58. 1 1
      locations/sex_ev_reactions.qsrc
  59. 22 6
      locations/sex_ev_reactions_creampie.qsrc
  60. 1 1
      locations/sex_ev_sex.qsrc
  61. 1 1
      locations/sex_ev_shower.qsrc
  62. 6 0
      locations/sex_ev_stats.qsrc
  63. 37 35
      locations/sex_ev_talk.qsrc
  64. 4 4
      locations/shoes.qsrc
  65. 1 1
      locations/stat.qsrc
  66. 67 34
      locations/stat_display.qsrc
  67. 6 0
      locations/stwork.qsrc
  68. 5 5
      locations/therapist.qsrc
  69. 235 11
      locations/therapist_hotel.qsrc
  70. 5 5
      locations/torgcentr.qsrc
  71. 1 1
      locations/transport_functions.qsrc
  72. 3 3
      locations/underwear.qsrc
  73. 1 1
      locations/underwear_bodysuits.qsrc
  74. 89 45
      locations/wardrobe.qsrc
  75. 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"/>

+ 22 - 20
locations/Cheatmenu_din.qsrc

@@ -1285,24 +1285,26 @@ $cheatmenu['stats'] = {
 	if workPTU > 1:*pl'<a href="exec:teachlevel += 10 & dynamic $cheatmenu[''stats'']">Reputation teacher+10: <<teachlevel>></a>'
 	if workPTU > 1:*pl'<a href="exec:teachlevel -= 10 & dynamic $cheatmenu[''stats'']">Reputation teacher-10: <<teachlevel>></a>'
 	*nl
-	if mid($start_type,1,2) = 'sg' and SchoolAtestat = 0:
+	if $start_type['loc'] = 'sg' and SchoolAtestat = 0:
 		*pl'<b>School:</b>'
-		if class['school_math_grade'] < 100:*pl'Math grade: <<class[''school_math_grade'']>> <a href="exec:gs ''grades'', ''grade_award'',''school'', ''math'', 10 & dynamic $cheatmenu[''stats'']">+10</a> <a href="exec:gs ''grades'', ''grade_award'',''school'', ''math'', -10 & dynamic $cheatmenu[''stats'']">-10</a>'
-		if class['school_rus_grade'] < 100:*pl'Russian grade: <<class[''school_rus_grade'']>> <a href="exec:gs ''grades'', ''grade_award'',''school'', ''rus'', 10 & dynamic $cheatmenu[''stats'']">+10</a> <a href="exec:gs ''grades'', ''grade_award'',''school'', ''rus'', -10 & dynamic $cheatmenu[''stats'']">-10</a>'
-		if class['school_lit_grade'] < 100:*pl'Literature grade: <<class[''school_lit_grade'']>> <a href="exec:gs ''grades'', ''grade_award'',''school'', ''lit'', 10 & dynamic $cheatmenu[''stats'']">+10</a> <a href="exec:gs ''grades'', ''grade_award'',''school'', ''lit'', -10 & dynamic $cheatmenu[''stats'']">-10</a>'
-		if class['school_art_grade'] < 100:*pl'Art grade: <<class[''school_art_grade'']>> <a href="exec:gs ''grades'', ''grade_award'',''school'', ''art'', 10 & dynamic $cheatmenu[''stats'']">+10</a> <a href="exec:gs ''grades'', ''grade_award'',''school'', ''art'', -10 & dynamic $cheatmenu[''stats'']">-10</a>'
-		if class['school_bio_grade'] < 100:*pl'Biology grade: <<class[''school_bio_grade'']>> <a href="exec:gs ''grades'', ''grade_award'',''school'', ''bio'', 10 & dynamic $cheatmenu[''stats'']">+10</a> <a href="exec:gs ''grades'', ''grade_award'',''school'', ''bio'', -10 & dynamic $cheatmenu[''stats'']">-10</a>'
-		if class['school_eng_grade'] < 100:*pl'English grade: <<class[''school_eng_grade'']>> <a href="exec:gs ''grades'', ''grade_award'',''school'', ''eng'', 10 & dynamic $cheatmenu[''stats'']"> +10</a> <a href="exec:gs ''grades'', ''grade_award'',''school'', ''eng'', -10 & dynamic $cheatmenu[''stats'']"> -10</a>'
-		if class['school_geo_grade'] < 100:*pl'Geography grade: <<class[''school_geo_grade'']>> <a href="exec:gs ''grades'', ''grade_award'',''school'', ''geo'', 10 & dynamic $cheatmenu[''stats'']"> +10</a> <a href="exec:gs ''grades'', ''grade_award'',''school'', ''geo'', -10 & dynamic $cheatmenu[''stats'']"> -10</a>'
-		if class['school_sci_grade'] < 100:*pl'Science grade: <<class[''school_sci_grade'']>> <a href="exec:gs ''grades'', ''grade_award'',''school'', ''sci'', 10 & dynamic $cheatmenu[''stats'']"> +10</a> <a href="exec:gs ''grades'', ''grade_award'',''school'', ''sci'', -10 & dynamic $cheatmenu[''stats'']"> -10</a>'
-		if class['school_his_grade'] < 100:*pl'History grade: <<class[''school_his_grade'']>> <a href="exec:gs ''grades'', ''grade_award'',''school'', ''his'', 10 & dynamic $cheatmenu[''stats'']"> +10</a> <a href="exec:gs ''grades'', ''grade_award'',''school'', ''his'', -10 & dynamic $cheatmenu[''stats'']"> -10</a>'
-		if class['school_shop_grade'] < 100:*pl'Shop grade: <<class[''school_shop_grade'']>> <a href="exec:gs ''grades'', ''grade_award'',''school'', ''shop'', 10 & dynamic $cheatmenu[''stats'']"> +10</a> <a href="exec:gs ''grades'', ''grade_award'',''school'', ''shop'', -10 & dynamic $cheatmenu[''stats'']"> -10</a>'
-		if class['school_comp_grade'] < 100:*pl'Computer grade: <<class[''school_comp_grade'']>> <a href="exec:gs ''grades'', ''grade_award'',''school'', ''comp'', 10 & dynamic $cheatmenu[''stats'']"> +10</a> <a href="exec:gs ''grades'', ''grade_award'',''school'', ''comp'', -10 & dynamic $cheatmenu[''stats'']"> -10</a>'
-		if class['school_mus_grade'] < 100:*pl'Music grade: <<class[''school_mus_grade'']>> <a href="exec:gs ''grades'', ''grade_award'',''school'', ''mus'', 10 & dynamic $cheatmenu[''stats'']"> +10</a> <a href="exec:gs ''grades'', ''grade_award'',''school'', ''mus'', -10 & dynamic $cheatmenu[''stats'']"> -10</a>'
-		if class['school_pe_grade'] < 100:*pl'P.E. grade: <<class[''school_pe_grade'']>> <a href="exec:gs ''grades'', ''grade_award'',''school'', ''pe'', 10 & dynamic $cheatmenu[''stats'']"> +10</a> <a href="exec:gs ''grades'', ''grade_award'',''school'', ''pe'', -10 & dynamic $cheatmenu[''stats'']"> -10</a>'
-		if schoolprogul >= 0:*pl'<a href="exec:schoolprogul = 0 & dynamic $cheatmenu[''stats'']">Zero Absenteeism (School): <<schoolprogul>></a>'
+		*pl 'Math grade: <<class[''school_math_grade'']>> '      + iif(class['school_math_grade'] < 100, ' <a href="exec:gs ''grades'', ''grade_award'',''school'', ''math'', 10 & dynamic $cheatmenu[''stats'']">+10</a>', '') + iif(class['school_math_grade'] > 0, ' <a href="exec:gs ''grades'', ''grade_award'',''school'', ''math'', -10 & dynamic $cheatmenu[''stats'']">-10</a>', '')
+		*pl 'Russian grade: <<class[''school_rus_grade'']>> '    + iif(class['school_rus_grade']  < 100, ' <a href="exec:gs ''grades'', ''grade_award'',''school'', ''rus'',  10 & dynamic $cheatmenu[''stats'']">+10</a>', '') + iif(class['school_rus_grade']  > 0, ' <a href="exec:gs ''grades'', ''grade_award'',''school'', ''rus'',  -10 & dynamic $cheatmenu[''stats'']">-10</a>', '')
+		*pl 'Literature grade: <<class[''school_lit_grade'']>> ' + iif(class['school_lit_grade']  < 100, ' <a href="exec:gs ''grades'', ''grade_award'',''school'', ''lit'',  10 & dynamic $cheatmenu[''stats'']">+10</a>', '') + iif(class['school_lit_grade']  > 0, ' <a href="exec:gs ''grades'', ''grade_award'',''school'', ''lit'',  -10 & dynamic $cheatmenu[''stats'']">-10</a>', '')
+		*pl 'Art grade: <<class[''school_art_grade'']>> '        + iif(class['school_art_grade']  < 100, ' <a href="exec:gs ''grades'', ''grade_award'',''school'', ''art'',  10 & dynamic $cheatmenu[''stats'']">+10</a>', '') + iif(class['school_art_grade']  > 0, ' <a href="exec:gs ''grades'', ''grade_award'',''school'', ''art'',  -10 & dynamic $cheatmenu[''stats'']">-10</a>', '')
+		*pl 'Biology grade: <<class[''school_bio_grade'']>> '    + iif(class['school_bio_grade']  < 100, ' <a href="exec:gs ''grades'', ''grade_award'',''school'', ''bio'',  10 & dynamic $cheatmenu[''stats'']">+10</a>', '') + iif(class['school_bio_grade']  > 0, ' <a href="exec:gs ''grades'', ''grade_award'',''school'', ''bio'',  -10 & dynamic $cheatmenu[''stats'']">-10</a>', '')
+		*pl 'English grade: <<class[''school_eng_grade'']>> '    + iif(class['school_eng_grade']  < 100, ' <a href="exec:gs ''grades'', ''grade_award'',''school'', ''eng'',  10 & dynamic $cheatmenu[''stats'']">+10</a>', '') + iif(class['school_eng_grade']  > 0, ' <a href="exec:gs ''grades'', ''grade_award'',''school'', ''eng'',  -10 & dynamic $cheatmenu[''stats'']">-10</a>', '')
+		*pl 'Geography grade: <<class[''school_geo_grade'']>> '  + iif(class['school_geo_grade']  < 100, ' <a href="exec:gs ''grades'', ''grade_award'',''school'', ''geo'',  10 & dynamic $cheatmenu[''stats'']">+10</a>', '') + iif(class['school_geo_grade']  > 0, ' <a href="exec:gs ''grades'', ''grade_award'',''school'', ''geo'',  -10 & dynamic $cheatmenu[''stats'']">-10</a>', '')
+		*pl 'Science grade: <<class[''school_sci_grade'']>> '    + iif(class['school_sci_grade']  < 100, ' <a href="exec:gs ''grades'', ''grade_award'',''school'', ''sci'',  10 & dynamic $cheatmenu[''stats'']">+10</a>', '') + iif(class['school_sci_grade']  > 0, ' <a href="exec:gs ''grades'', ''grade_award'',''school'', ''sci'',  -10 & dynamic $cheatmenu[''stats'']">-10</a>', '')
+		*pl 'History grade: <<class[''school_his_grade'']>> '    + iif(class['school_his_grade']  < 100, ' <a href="exec:gs ''grades'', ''grade_award'',''school'', ''his'',  10 & dynamic $cheatmenu[''stats'']">+10</a>', '') + iif(class['school_his_grade']  > 0, ' <a href="exec:gs ''grades'', ''grade_award'',''school'', ''his'',  -10 & dynamic $cheatmenu[''stats'']">-10</a>', '')
+		*pl 'Shop grade: <<class[''school_shop_grade'']>> '      + iif(class['school_shop_grade'] < 100, ' <a href="exec:gs ''grades'', ''grade_award'',''school'', ''shop'', 10 & dynamic $cheatmenu[''stats'']">+10</a>', '') + iif(class['school_shop_grade'] > 0, ' <a href="exec:gs ''grades'', ''grade_award'',''school'', ''shop'', -10 & dynamic $cheatmenu[''stats'']">-10</a>', '')
+		*pl 'Computer grade: <<class[''school_comp_grade'']>> '  + iif(class['school_comp_grade'] < 100, ' <a href="exec:gs ''grades'', ''grade_award'',''school'', ''comp'', 10 & dynamic $cheatmenu[''stats'']">+10</a>', '') + iif(class['school_comp_grade'] > 0, ' <a href="exec:gs ''grades'', ''grade_award'',''school'', ''comp'', -10 & dynamic $cheatmenu[''stats'']">-10</a>', '')
+		*pl 'History grade: <<class[''school_mus_grade'']>> '    + iif(class['school_mus_grade']  < 100, ' <a href="exec:gs ''grades'', ''grade_award'',''school'', ''mus'',  10 & dynamic $cheatmenu[''stats'']">+10</a>', '') + iif(class['school_mus_grade']  > 0, ' <a href="exec:gs ''grades'', ''grade_award'',''school'', ''mus'',  -10 & dynamic $cheatmenu[''stats'']">-10</a>', '')
+		*pl 'P.E. grade: <<class[''school_pe_grade'']>> '        + iif(class['school_pe_grade']   < 100, ' <a href="exec:gs ''grades'', ''grade_award'',''school'', ''pe'',   10 & dynamic $cheatmenu[''stats'']">+10</a>', '') + iif(class['school_pe_grade']   > 0, ' <a href="exec:gs ''grades'', ''grade_award'',''school'', ''pe'',   -10 & dynamic $cheatmenu[''stats'']">-10</a>', '')
+
+		if schoolprogul >= 0: *pl '<a href="exec: schoolprogul = 0 & dynamic $cheatmenu[''stats'']">Zero Absenteeism (School): <<schoolprogul>></a>'
 		*nl
 	end
+
 	*pl'<b>Skills</b> (values 0 - 100, and adjusted total by attributes):'
 	*pl '<a href="exec:dynamic $cheatmenu[''setSkills''], 100" >Max Skills</a>    <a href="exec:dynamic $cheatmenu[''setSkills''], 0" >Min Skills</a>'
 	*nl
@@ -2537,7 +2539,7 @@ $cheatmenu['status'] = {
 	end
 
 	if Enable_scalepic = 1:
-		'Scalebar is now as <b>Image</b>, you can switch to <a href="exec:Enable_scalepic = 0 & dynamic $cheatmenu[''status''] & gs ''stat''">Character</a> or <a href="exec:Enable_scalepic = 2 & dynamic $cheatmenu[''status''] & gs ''stat''">Table</a>'
+		'Scalebar is now as <b>Image</b>, you can switch to <a href="exec:Enable_scalepic = 2 & dynamic $cheatmenu[''status''] & gs ''stat''">Character</a> or <a href="exec:Enable_scalepic = 0 & dynamic $cheatmenu[''status''] & gs ''stat''">Table</a>'
 		if Enable_scalewidth > 0:
 			'Scalebar Width: <a href="exec:input(''Input Scalebar Width (default to 120)'') & dynamic $cheatmenu[''status''] & gs ''stat''"><<Enable_scalewidth-1>></a>, Set is currently <a href="exec:Enable_scalewidth = 0 & dynamic $cheatmenu[''status''] & gs ''stat''">ON</a>'
 		else
@@ -2548,15 +2550,15 @@ $cheatmenu['status'] = {
 		else
 			'Scalebar Height: Lock is currently <a href="exec:Enable_scaleheight=1+input(''InputS calebar Height (default to 15)'') & dynamic $cheatmenu[''status''] & gs ''stat''">OFF</a>'
 		end
-	elseif Enable_scalepic = 0:
-		'Scalebar is now as <b>Character</b>, you can switch to <a href="exec:Enable_scalepic = 1 & dynamic $cheatmenu[''status''] & gs ''stat''">Image</a> or <a href="exec:Enable_scalepic = 2 & dynamic $cheatmenu[''status''] & gs ''stat''">Table</a>'
+	elseif Enable_scalepic = 2:
+		'Scalebar is now as <b>Character</b>, you can switch to <a href="exec:Enable_scalepic = 1 & dynamic $cheatmenu[''status''] & gs ''stat''">Image</a> or <a href="exec:Enable_scalepic = 0 & dynamic $cheatmenu[''status''] & gs ''stat''">Table</a>'
 		if cheatStatusBars = 1:
 			'Set status bar size: Currently Small - <a href="exec:cheatStatusBars = 0 & dynamic $cheatmenu[''status''] & gs ''stat''">Set large</a>'
 		else
 			'Set status bar size: Currently Large - <a href="exec:cheatStatusBars = 1 & dynamic $cheatmenu[''status''] & gs ''stat''">Set small</a>'
 		end
-	elseif Enable_scalepic = 2:
-		'Scalebar is now as <b>Table</b>, you can switch to <a href="exec:Enable_scalepic = 0 & dynamic $cheatmenu[''status''] & gs ''stat''">Image</a> or <a href="exec:Enable_scalepic = 1 & dynamic $cheatmenu[''status''] & gs ''stat''">Character</a>'
+	elseif Enable_scalepic = 0:
+		'Scalebar is now as <b>Table</b>, you can switch to <a href="exec:Enable_scalepic = 1 & dynamic $cheatmenu[''status''] & gs ''stat''">Image</a> or <a href="exec:Enable_scalepic = 2 & dynamic $cheatmenu[''status''] & gs ''stat''">Character</a>'
 	end
 	if Enable_statfsize<0:Enable_statfsize=0
 	if Enable_statfsize > 0:

+ 63 - 11
locations/HotelRoom.qsrc

@@ -141,6 +141,52 @@ if $ARGS[0] = 'best':
 	end
 end
 
+if $ARGS[0] = 'therapist':
+	*clr & cla
+	$hotel = 'pav_hotel'
+	$locM_arg = 'therapist'
+	$locM = 'HotelRoom'
+	$loc_arg = 'therapist'
+	$loc = 'HotelRoom'
+	$prevloc = $loc
+	$menu_loc = 'HotelRoom'
+	$menu_arg = 'therapist'
+	menu_off = 0
+	hotelWiFi = 1
+	$location_type = 'private'
+	gs 'themes', 'indoors'
+	gs 'stat'	
+	gs 'internet_mobile', 'get_access', 'free'
+
+	'<center><b><font color = maroon>Your husband''s hotel room</font></b></center>'
+	'<center><img <<$set_imgh>> src="images/characters/pavlovsk/resident/therapist/room.jpg"></center>'
+	'Your hotel room is not very large, but it has everything you need and is quite stylish. The large <a href="exec:gt ''bed2''">double bed</a> takes up most of the room. A modern <a href="exec:gt ''wardrobe'', ''start''">wardrobe</a> (where you can choose outfits and organize your clothing) stands near the entrance of the room. Next to the door, you can find a <a href="exec:gt ''mirror'',''start''">mirror</a>. The door to the <a href="exec:gt ''hotelroom'',''shower1''">bathroom</a> is to the right.'
+	'Your hotel room also has a small flat-screen <a href="exec:gt ''HotelRoom'',''tv''">TV</a>'+iif(mc_inventory['tech_computer'] = 1, ' and your <a href="exec: gt ''Komp'',''start''">computer</a> is on the desk. The hotel offers all guests free Wi-Fi.', '.')
+	
+	if $ml_guitar['location'] = $loc: 'Your guitar rests on its stand next to your bed.'
+	gs 'music_actions', 'music_icon'
+	
+	act'Go to the hotel lobby':
+		if $clothingworntype ! 'nude':
+			hotelWiFi = 0
+			gt 'pav_hotel'
+			killvar '$hotel'
+		else
+			msg'<b><font color = red>You need to get dressed before leaving your hotel room.</font></b>'
+			gt 'HotelRoom', 'better'
+		end
+	end
+
+	if hotelRoom[$hotel] ! 0:
+		if money >= 100: act'Order room service (0:30) (100 <b>₽</b>)': gs 'food', 'h_food'
+		act 'Drink some water (0:01)': gs 'beverage', 'bev_wat'
+		act 'Have a coffee (0:05)': gs 'beverage', 'bev_cof'
+		dynamic $fatdel
+		dynamic $lekarstvo
+		dynamic $vitamin
+	end
+end
+
 if $ARGS[0] = 'shower1':
 	*clr & cla
 	minut += 1
@@ -148,7 +194,7 @@ if $ARGS[0] = 'shower1':
 	$locM_arg = 'shower1'
 	$locM = 'HotelRoom'
 	$loc_arg = 'shower1'
-	$loc = 'HotelRoom'	
+	$loc = 'HotelRoom'
 	$location_type = 'bathroom'
 	gs 'themes', 'indoors'
 	gs'stat'
@@ -156,13 +202,13 @@ if $ARGS[0] = 'shower1':
 	'<center><b><font color = maroon>The bathroom of your hotel room</font></b></center>'
 	if hotelRoom[$hotel] = 1:
 		'<center><img <<$set_imgh>> src="images/locations/pavlovsk/hotel/hotel.room.normal1.jpg"></center>'&'A small and unpretentious bathroom, that is nevertheless quite stylish and has everything you need.'
-	elseif hotelRoom[$hotel] = 2:
+	elseif hotelRoom[$hotel] = 2 or therapistQW['hotel_key'] = 3:
 		'<center><img <<$set_imgh>> src="images/locations/pavlovsk/hotel/hotel.room.better1.jpg"></center>'&'A nice looking and spacious bathroom, with separate bath tub.'
 	elseif hotelRoom[$hotel] = 3:
 		'<center><img <<$set_imgh>> src="images/locations/pavlovsk/hotel/hotel.room.best1.jpg"></center>'&'A very luxurious and spacious bathroom, fit for a king.'
 	end
 
-	if hotelRoom[$hotel] = 0:
+	if hotelRoom[$hotel] = 0 and therapistQW['hotel_key'] ! 3:
 		act 'Return to lobby (It is past checkout time)':
 			hotelWiFi = 0
 			gt $hotel
@@ -172,11 +218,13 @@ if $ARGS[0] = 'shower1':
 		act 'Return to your room':
 			hotelmc_inventory['shampoo'] =  0
 			if hotelRoom[$hotel] = 1:
-				gt'HotelRoom','normal'
+				gt 'HotelRoom', 'normal'
 			elseif hotelRoom[$hotel] = 2:
-				gt'HotelRoom','better'
+				gt 'HotelRoom', 'better'
 			elseif hotelRoom[$hotel] = 3:
-				gt'HotelRoom','best'
+				gt 'HotelRoom', 'best'
+			elseif therapistQW['hotel_key'] = 3:
+				gt 'HotelRoom', 'therapist'
 			end
 		end
 	end
@@ -188,17 +236,21 @@ if $ARGS[0] = 'tv':
 	*clr & cla
 	gs'stat'
 
-	'<center><img <<$set_imgh>> src="images/locations/pavlovsk/hotel/tv<<hotelroom>>.jpg"></center>'
+	if therapistQW['hotel_key'] = 3:
+		'<center><img <<$set_imgh>> src="images/locations/pavlovsk/hotel/tv2.jpg"></center>'
+	else
+		'<center><img <<$set_imgh>> src="images/locations/pavlovsk/hotel/tv<<hotelroom>>.jpg"></center>'
+	end
 	'You turn on the TV and make yourself comfortable on the bed.'
 
-	if hotelRoom[$hotel] = 0:
+	if hotelRoom[$hotel] = 0 and therapistQW['hotel_key'] ! 3:
 		act 'Return to lobby (It is past checkout time)':
 			hotelWiFi = 0
 			gt $hotel
 			killvar '$hotel'
 		end
 	else
-		act 'Get up from the bed':gt $loc, $loc_arg
+		act 'Get up from the bed': gt $loc, $loc_arg
 		act 'Watch TV (1:00)': gt 'hotelroom', 'watch_tv'
 	end
 end
@@ -211,14 +263,14 @@ if $ARGS[0] = 'watch_tv':
 	'<center><img <<$set_imgh>> src="images/locations/pavlovsk/hotel/tv0,'+rand(0,4)+'.jpg"></center>'
 	'You are watching the country''s main television channel. None of their programs are really worth watching, but the distraction is welcome anyway.'
 
-	if hotelRoom[$hotel] = 0:
+	if hotelRoom[$hotel] = 0 and therapistQW['hotel_key'] ! 3:
 		act 'Return to lobby (It is past checkout time)':
 			hotelWiFi = 0
 			gt $hotel
 			killvar '$hotel'
 		end
 	else
-		act 'Get up from the bed':gt $loc, $loc_arg
+		act 'Get up from the bed': gt $loc, $loc_arg
 		act 'Watch TV (1:00)': gt 'hotelroom', 'watch_tv'
 	end
 end

+ 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 ---------------------------------
-

+ 25 - 18
locations/artemhome.qsrc

@@ -81,10 +81,8 @@ if $ARGS[0] = 'home':
 	'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/aptdoor.jpg"></center>'
 	if hour >= 22:
 		'It would be rude to even ring the doorbell at this time. Artem is probably asleep, so you decide against it and lower your hand.'
-		act 'Move away from the door':gt'pod_ezd','etaj_1'
 	elseif hour < 8:
 		'It would be rude to even ring the doorbell at this time. Artem is probably asleep, so you decide against it and lower your hand.'
-		act 'Move away from the door':gt'pod_ezd','etaj_1'
 	else
 		menu_off = 1
 		gs 'stat'
@@ -119,13 +117,15 @@ if $ARGS[0] = 'home':
 					if artemQW['artlie'] = 2 or artemQW['artembrokenheart'] = 1 or artemQW['artemblok'] = 1:
 						'When she hears your name, her demeanor changes swiftly. "Oh, it''s you," she frowns. "I don''t know what you did to my sweet Artem, but he says he never wants to see you again, so please leave."' 
 						'She closes the door in your face without another word.'
-						act 'Leave': gt 'pod_ezd','etaj_1'
 					else
 						'She keeps up her smile. "Is he going to tutor you, dear?"'
 						'You smile. "Something like that. Is he here?"'
-						'Her face tightens ever so slightly. "Yes, he''s in his room." She turns to face down the hall. "Artem dear, <<$pcs_nickname>> from your school is here." She then turns back to you. "Go on in. He''s in his room."'
-						act 'Leave': gt 'pod_ezd','etaj_1'
-						act 'Enter': ArtemLoc = 2 & gt 'artemhome','hallway'
+						if ArtemLoc = 0:
+							'Her face tightens ever so slightly. "Well, he isn''t home." You understand it''s time for you to leave'
+						else
+							'Her face tightens ever so slightly. "Yes, he''s in his room." She turns to face down the hall. "Artem dear, <<$pcs_nickname>> from your school is here." She then turns back to you. "Go on in. He''s in his room."'
+							act 'Enter': ArtemLoc = 2 & gt 'artemhome','hallway'
+						end
 					end
 				else
 					if artemQW['artlie'] = 2 or artemQW['artembrokenheart'] = 1 or artemQW['artemblok'] = 1:
@@ -133,39 +133,46 @@ if $ARGS[0] = 'home':
 						'"I''m <<$pcs_nickname>>."'
 						'When she hears your name, her demeanor changes swiftly. "Oh, it''s you," she frowns. I don''t know what you did to my sweet Artem, but he says he never wants to see you again, so please leave."' 
 						'She closes the door in your face without another word.'
-						act 'Leave': gt'pod_ezd','etaj_1'
 					else
 						'She seems pleased. "You must be one of Artem''s little friends. I''m Glinina, Artem''s mother. What''s your name, dear?"'
 						'"<<$pcs_nickname>>, we go to school together.'
-						'"Come in, come in." She turns to face down the hall. "Artem dear, one of your little friends is here." She then turns back to you. "Go on in. He''s in his room."'
-						act 'Leave': gt'pod_ezd','etaj_1'
-						act 'Enter': gt 'artemhome','hallway'
+						if ArtemLoc = 0:
+							'"Well, he isn''t home actually, you can come back later" You understand it''s time for you to leave'
+						else
+							'"Come in, come in." She turns to face down the hall. "Artem dear, one of your little friends is here." She then turns back to you. "Go on in. He''s in his room."'
+							act 'Enter': gt 'artemhome','hallway'
+						end
 					end
 				end
 			else
 				if artemQW['artlie'] =2 or artemQW['artembrokenheart'] = 1 or artemQW['artemblok'] = 1:
 					'You stand outside the Chebotarev household and knock on the door, which is quickly answered by Artem''s mother, who has a friendly smile on her face until she recognizes you and it turns into a frown. "Oh, it''s you. I don''t know what you did to my sweet Artem, but he says he never wants to see you again. I thought you were such a sweet girl, but he says you''re not, so please leave."'
 					'She closes the door in your face without another word.'
-					act 'Leave': gt'pod_ezd','etaj_1'
 				elseif fame['pav_slut'] >= 200 or grupTipe = 4:
 					'You stand outside the Chebotarev household and knock on the door, which is quickly answered by Artem''s mother, who has a friendly smile on her face that falters when she sees you. "Oh. Hello again, <<$pcs_firstname>>. Can I help you?"'
 					'You return her smile. "Yes, I''m here to see Artem."'
-					'She doesn''t seem pleased. "Oh. Well come in then." She turns to face down the hall. "Artem dear, ''that girl'' is here to see you again." You can hear the judgment in her voice before she turns back to you. "Go on back. He''s in his room."'
-					act 'Leave': gt'pod_ezd','etaj_1'
-					act 'Enter': gt 'artemhome','hallway'
+					if ArtemLoc = 0:
+						'She doesn''t seem pleased. "Well, he isn''t home." You understand it''s time for you to leave'
+					else
+						'She doesn''t seem pleased. "Oh. Well come in then." She turns to face down the hall. "Artem dear, ''that girl'' is here to see you again." You can hear the judgment in her voice before she turns back to you. "Go on back. He''s in his room."'
+						act 'Enter': gt 'artemhome','hallway'
+					end
 				else
 					'You stand outside the Chebotarev household and knock on the door, which is quickly answered by Artem''s mother, who has a friendly smile on her face. "Hello again, <<$pcs_nickname>>. Are you here to see Artem?"'
 					'You return her smile. "Yes."'
-					'She seems pleased to see you. "Come in, come in." She turns to face down the hall. "Artem dear, one that nice girl <<$pcs_nickname>> is here to see you." She then turns back to you. "Go on back. He''s in his room."'
-					act 'Leave': gt'pod_ezd','etaj_1'
-					act 'Enter': gt 'artemhome','hallway'
+					if ArtemLoc = 0:
+						'She seems pleased to see you. "Well, he isn''t home, but you''re welcome to come back later." You understand it''s time for you to leave'
+					else
+						'She seems pleased to see you. "Come in, come in." She turns to face down the hall. "Artem dear, one that nice girl <<$pcs_nickname>> is here to see you." She then turns back to you. "Go on back. He''s in his room."'
+						act 'Enter': gt 'artemhome','hallway'
+					end
 				end
 			end
 		else	
 			'You stand in the hallway, but it appears that nobody is home.'
-			act 'Leave': gt'pod_ezd','etaj_1'
 		end
 	end
+	act 'Leave': gt'pod_ezd','etaj_1'
 end
 
 if $ARGS[0] = 'hallway':

+ 1 - 1
locations/ballet_secrets.qsrc

@@ -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 $loc, 'reception'
     end
   end
 

+ 1 - 1
locations/bdsm_garden.qsrc

@@ -215,7 +215,7 @@ if $ARGS[0] = 'garage':
 	gs 'stat'
 	'<center><img <<$set_imgh>> src="images/locations/city/suburb/bdsm_club/garage.jpg"></center>'
 	'The garage has many different expensive cars, the doors are shut and it is surprisingly warm.'
-	act 'Go to reception': gt 'BDSM_Club', 'reception'
+	act 'Go to reception': gt 'bdsm_mansion', 'reception'
 	act 'Go to the garden': gt 'bdsm_garden', 'garden'
 end
 

+ 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)

+ 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_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

+ 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':
 		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

+ 48 - 1
locations/homes_properties_attr.qsrc

@@ -12,7 +12,8 @@ if ARRSIZE('train_station') < 1:
 	$train_station['dachi'] = "gt 'train', 'communal'"
 end
 
-if ARRSIZE('homes') < 16:
+if ARRSIZE('homes') < 18:
+	killvar '$homes'
 	$homes[] = 'city_apartment'
 	$homes[] = 'parents_home'
 	$homes[] = 'village_cottage'
@@ -29,6 +30,8 @@ if ARRSIZE('homes') < 16:
 	$homes[] = 'grandparents_house'
 	$homes[] = 'city_house'
 	$homes[] = 'meynold_household'
+	$homes[] = 'hotel_therapist'
+	$homes[] = 'pushkin_ballet_dorm'
 end
 
 if ARRSIZE('home_name') < 4:
@@ -150,6 +153,14 @@ if ARRSIZE('home_name') < 4:
 	$home_name['meynold_household'] = 'meynold_household'
 	$home_name['16'] = 'meynold_household'
 	$home_name['mey_home'] = 'meynold_household'
+
+	!! 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. 
@@ -521,6 +532,42 @@ 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]
+		$property['name'] = 'Pavlovsk Hotel Room'
+		$property['display'] = 'husband''s hotel room'
+		$property['region'] = 'pav'
+		$property['town'] = 'pavlovsk'
+		$property['location'] = 'pav_residential'
+		$property['location_arg'] = ''
+		$property['entrance'] = 'pav_hotel'
+		$property['entrance_arg'] = ''
+		$property['bathroom'] = 'HotelRoom'
+		$property['bathroom_arg'] = 'shower1'
+		$property['bedroom'] = 'HotelRoom'
+		$property['bedroom_arg'] = 'therapist'
+		$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/hookup_after.qsrc

@@ -11,7 +11,7 @@ if $ARGS[0] = 'exit':
 			
 	if hookup['fuckbuddy'] > 0:
 		know_virgin[$boy] = hookup['virgin']
-		gs 'lover', 'add fuckbuddy',$boy
+		gs 'lover', 'add_fuckbuddy',$boy
 		npc_fuckbuddy[$boy] = 1
 		npc_no_booty_call[$boy] = daystart
 	end

+ 14 - 10
locations/indiktab.qsrc

@@ -1,4 +1,7 @@
 # indiktab
+! ARGS[0] ... color
+!!  color palette selector
+
 ! ARGS[1] ... percentage
 !!  scales the bar from 0 to 100
 
@@ -8,6 +11,7 @@
 ! ARGS[3] ... phantom
 !!  ghost value, used for painkillers
 
+
 indiktab['bar_progress'] = min(max(ARGS[1], 0), 100)
 if Enable_statfsize > 0:
 	indiktab['label_width'] = len(str(ARGS[2])) * Enable_statfsize*2
@@ -22,7 +26,7 @@ else}
 $indiktab['bar_bg_color'] = $bcolor
 ! end
 
-if $ARGS[0] = '1':
+if ARGS[0] = 1:
 !{	if Enable_Android = 1:
 		if indiktab['bar_progress']  >= 65:
 			$indiktab['bar_color'] = 'green'
@@ -66,7 +70,7 @@ if $ARGS[0] = '1':
 	end
 	! end
 
-elseif $ARGS[0] = '2':
+elseif ARGS[0] = 2:
 !{	if Enable_Android = 1:
 		if indiktab['bar_progress']  >= 85:
 			$indiktab['bar_color'] = 'red'
@@ -134,18 +138,18 @@ elseif $ARGS[0] = '2':
 	! end
 end
 
-$result = '<TABLE  cellpadding="1" cellspacing="0" width="255"><TR>'
+$result = '<TABLE  cellpadding="1" cellspacing="0" width="200"><TR>'
 if indiktab['bar_progress'] >= ARGS[3]:
 	if indiktab['bar_progress'] = 100: $indiktab['bar_bg_color'] = $indiktab['bar_color']
 
 	if indiktab['bar_progress'] > indiktab['label_width']:
 		$result += '<TD bgcolor="<<$indiktab[''bar_color'']>>" width="<<indiktab[''bar_progress'']>>%"' & !! bar
 		$result += 'align="right"><font color ="<<$indiktab[''bar_label'']>>"><<ARGS[2]>></font>&nbsp;</TD>' & !! label
-		$result += '<TD bgcolor="<<$indiktab[''bar_bg_color'']>>" width="<<100 - indiktab[''bar_progress'']>>%"></font></TD>' & !! background
+		$result += '<TD bgcolor="<<$indiktab[''bar_bg_color'']>>" width="<<100 - indiktab[''bar_progress'']>>%"></TD>' & !! background
 	else
 		$result += '<TD bgcolor="<<$indiktab[''bar_color'']>>" width="<<indiktab[''bar_progress'']>>%"></TD>' & !! bar
 		$result += '<TD bgcolor="<<$indiktab[''bar_bg_color'']>>" width="<<100 - indiktab[''bar_progress'']>>%"' & !! background
-		$result += 'align="left">&nbsp;<font color ="<<$fcolor>>"><<ARGS[2]>></TD>' & !! label
+		$result += 'align="left">&nbsp;<font color ="<<$fcolor>>"><<ARGS[2]>></font></TD>' & !! label
 	end
 else
 	if indiktab['bar_progress'] + indiktab['bar_phantom'] = 100: $indiktab['bar_bg_color'] = $indiktab['phantom_color']
@@ -153,18 +157,18 @@ else
 	if indiktab['bar_progress'] > indiktab['label_width']:
 		$result += '<TD bgcolor="<<$indiktab[''bar_color'']>>" width="<<indiktab[''bar_progress'']>>%"' & !! bar
 		$result += 'align="right"><font color ="<<$indiktab[''bar_label'']>>"><<ARGS[2]>></font>&nbsp;</TD>' & !! label
-		$result += '<TD bgcolor="<<$indiktab[''phantom_color'']>>" width="<<indiktab[''bar_phantom'']>>%"></font></TD>' & !! phantom
-		$result += '<TD bgcolor="<<$indiktab[''bar_bg_color'']>>" width="<<100 - indiktab[''bar_phantom''] - indiktab[''bar_progress'']>>%"></font></TD>' & !! background
+		$result += '<TD bgcolor="<<$indiktab[''phantom_color'']>>" width="<<indiktab[''bar_phantom'']>>%"></TD>' & !! phantom
+		$result += '<TD bgcolor="<<$indiktab[''bar_bg_color'']>>" width="<<100 - indiktab[''bar_phantom''] - indiktab[''bar_progress'']>>%"></TD>' & !! background
 	elseif indiktab['bar_phantom'] > indiktab['label_width']:
 		$result += '<TD bgcolor="<<$indiktab[''bar_color'']>>" width="<<indiktab[''bar_progress'']>>%"></TD>' & !! bar
 		$result += '<TD bgcolor="<<$indiktab[''phantom_color'']>>" width="<<indiktab[''bar_phantom'']>>%"' & !! phantom
-		$result += 'align="left">&nbsp;<font color ="<<$indiktab[''phantom_label'']>>"><<ARGS[2]>></TD>' & !! label
+		$result += 'align="left">&nbsp;<font color ="<<$indiktab[''phantom_label'']>>"><<ARGS[2]>></font></TD>' & !! label
 		$result += '<TD bgcolor="<<$indiktab[''bar_bg_color'']>>" width="<<100 - indiktab[''bar_phantom''] - indiktab[''bar_progress'']>>%"></TD>' & !! background
 	else
 		$result += '<TD bgcolor="<<$indiktab[''bar_color'']>>" width="<<indiktab[''bar_progress'']>>%"></TD>' & !! bar
-		$result += '<TD bgcolor="<<$indiktab[''phantom_color'']>>" width="<<indiktab[''bar_phantom'']>>%"></font></TD>' & !! phantom
+		$result += '<TD bgcolor="<<$indiktab[''phantom_color'']>>" width="<<indiktab[''bar_phantom'']>>%"></TD>' & !! phantom
 		$result += '<TD bgcolor="<<$indiktab[''bar_bg_color'']>>" width="<<100 - indiktab[''bar_progress'']>>%"' & !! background
-		$result += 'align="left">&nbsp;<font color ="<<$fcolor>>"><<ARGS[2]>></TD>' & !! label
+		$result += 'align="left">&nbsp;<font color ="<<$fcolor>>"><<ARGS[2]>></font></TD>' & !! label
 	end
 end
 $result += '</TR></TABLE>'

+ 132 - 133
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 -----!!
@@ -346,19 +346,19 @@ if $ARGS[0] = 'nerd':
 	pcs_traits['nerd_lernHome']	= 5
 
 	!!----- SCHOOL GRADES -----!!
-	gs 'grades', 'grade_award', 'school', 'math', 85
-	gs 'grades', 'grade_award', 'school', 'rus',  85
-	gs 'grades', 'grade_award', 'school', 'lit',  85
-	gs 'grades', 'grade_award', 'school', 'art',  85
-	gs 'grades', 'grade_award', 'school', 'bio',  85
-	gs 'grades', 'grade_award', 'school', 'eng',  85
-	gs 'grades', 'grade_award', 'school', 'geo',  85
-	gs 'grades', 'grade_award', 'school', 'sci',  85
-	gs 'grades', 'grade_award', 'school', 'his',  85
-	gs 'grades', 'grade_award', 'school', 'shop', 55
-	gs 'grades', 'grade_award', 'school', 'comp', 85
-	gs 'grades', 'grade_award', 'school', 'mus',  85
-	gs 'grades', 'grade_award', 'school', 'pe',   55
+	gs 'intro_functions', 'reset_sgclasses'		& ! set everything to 55
+
+	gs 'grades', 'grade_award', 'school', 'math', 30	& ! 85
+	gs 'grades', 'grade_award', 'school', 'rus',  30	& ! 85
+	gs 'grades', 'grade_award', 'school', 'lit',  30	& ! 85
+	gs 'grades', 'grade_award', 'school', 'art',  30	& ! 85
+	gs 'grades', 'grade_award', 'school', 'bio',  30	& ! 85
+	gs 'grades', 'grade_award', 'school', 'eng',  30	& ! 85
+	gs 'grades', 'grade_award', 'school', 'geo',  30	& ! 85
+	gs 'grades', 'grade_award', 'school', 'sci',  30	& ! 85
+	gs 'grades', 'grade_award', 'school', 'his',  30	& ! 85
+	gs 'grades', 'grade_award', 'school', 'comp', 30	& ! 85
+	gs 'grades', 'grade_award', 'school', 'mus',  25	& ! 80
 end
 if $ARGS[0] = 'nerdqueen':
 	'<center><h4><font color="maroon">Queen of the nerds</font></h4></center>'
@@ -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 -----!!
@@ -414,16 +414,16 @@ if $ARGS[0] = 'nerdqueen':
 		npc_rel['A18'] = 1
 
 		!!----- SCHOOL GRADES -----!!
-		gs 'grades', 'grade_award', 'school', 'rus',  90
-		gs 'grades', 'grade_award', 'school', 'lit',  80
-		gs 'grades', 'grade_award', 'school', 'art',  75
-		gs 'grades', 'grade_award', 'school', 'bio',  80
-		gs 'grades', 'grade_award', 'school', 'geo',  80
-		gs 'grades', 'grade_award', 'school', 'sci',  80
-		gs 'grades', 'grade_award', 'school', 'his',  80
-		gs 'grades', 'grade_award', 'school', 'comp', 80
-		gs 'grades', 'grade_award', 'school', 'mus',  75
-		gs 'grades', 'grade_award', 'school', 'pe',   60
+		gs 'grades', 'grade_award', 'school', 'rus',  5		& ! 90
+		gs 'grades', 'grade_award', 'school', 'lit',  -5	& ! 80
+		gs 'grades', 'grade_award', 'school', 'art',  -10	& ! 75
+		gs 'grades', 'grade_award', 'school', 'bio',  -5	& ! 80
+		gs 'grades', 'grade_award', 'school', 'geo',  -5	& ! 80
+		gs 'grades', 'grade_award', 'school', 'sci',  -5	& ! 80
+		gs 'grades', 'grade_award', 'school', 'his',  -5	& ! 80
+		gs 'grades', 'grade_award', 'school', 'comp', -5	& ! 80
+		gs 'grades', 'grade_award', 'school', 'mus',  -10	& ! 75
+		gs 'grades', 'grade_award', 'school', 'pe',   5		& ! 60
 
 		gt $loc, $loc_arg
 	end
@@ -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
@@ -473,17 +473,17 @@ elseif $ARGS[0] = 'goodstudent':
 		pcs_traits['nerd_status'] = 3
 
 		!!----- SCHOOL GRADES -----!!
-		gs 'grades', 'grade_award', 'school', 'math', 90
-		gs 'grades', 'grade_award', 'school', 'rus',  90
-		gs 'grades', 'grade_award', 'school', 'lit',  90
-		gs 'grades', 'grade_award', 'school', 'art',  90
-		gs 'grades', 'grade_award', 'school', 'bio',  90
-		gs 'grades', 'grade_award', 'school', 'eng',  90
-		gs 'grades', 'grade_award', 'school', 'geo',  90
-		gs 'grades', 'grade_award', 'school', 'sci',  90
-		gs 'grades', 'grade_award', 'school', 'his',  90
-		gs 'grades', 'grade_award', 'school', 'comp', 90
-		gs 'grades', 'grade_award', 'school', 'mus',  90
+		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', 'art',  5		& !90
+		gs 'grades', 'grade_award', 'school', 'bio',  5		& !90
+		gs 'grades', 'grade_award', 'school', 'eng',  5		& !90
+		gs 'grades', 'grade_award', 'school', 'geo',  5		& !90
+		gs 'grades', 'grade_award', 'school', 'sci',  5		& !90
+		gs 'grades', 'grade_award', 'school', 'his',  5		& !90
+		gs 'grades', 'grade_award', 'school', 'comp', 5		& !90
+		gs 'grades', 'grade_award', 'school', 'mus',  10	& !90
 
 		gt $loc, $loc_arg
 	end
@@ -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
@@ -530,9 +530,9 @@ elseif $ARGS[0] = 'computergeek':
 		npc_rel['A153'] += 10
 
 		!!----- SCHOOL GRADES -----!!
-		gs 'grades', 'grade_award', 'school', 'math', 90
-		gs 'grades', 'grade_award', 'school', 'comp', 95
-		gs 'grades', 'grade_award', 'school', 'pe',   65
+		gs 'grades', 'grade_award', 'school', 'math', 5		& !90
+		gs 'grades', 'grade_award', 'school', 'comp', 10	& !95
+		gs 'grades', 'grade_award', 'school', 'pe',   10	& !65
 
 		gt $loc, $loc_arg
 	end
@@ -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', 90
-		gs 'grades', 'grade_award', 'school', 'rus',  90
-		gs 'grades', 'grade_award', 'school', 'lit',  90
-		gs 'grades', 'grade_award', 'school', 'mus',  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 -----!!
@@ -659,7 +659,9 @@ if $ARGS[0] = 'jock':
 	npc_rel['A129']	-= 10
 
 	!!----- SCHOOL GRADES -----!!
-	gs 'intro_functions', 'set_base_sgrades'
+	gs 'intro_functions', 'reset_sgclasses'		& ! set everything to 55
+
+	gs 'grades', 'grade_award', 'school', 'pe', 40		& ! 95
 end
 if $ARGS[0] = 'volleyball':
 	'<center><h4><font color="maroon">Volleyball player</font></h4></center>'
@@ -683,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 -----!!
@@ -732,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 -----!!
@@ -746,8 +748,7 @@ elseif $ARGS[0] = 'dancer':
 		AlbinaQW['Friends'] = 2
 
 		!!----- SCHOOL GRADES -----!!
-		gs 'grades', 'grade_award', 'school', 'mus',  80
-		gs 'grades', 'grade_award', 'school', 'pe',   95
+		gs 'grades', 'grade_award', 'school', 'mus', 25		& ! 80
 
 		gt $loc, $loc_arg
 	end
@@ -777,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 -----!!
@@ -790,8 +791,7 @@ elseif $ARGS[0] = 'runner':
 		npc_rel['A131']	+= 10
 
 		!!----- SCHOOL GRADES -----!!
-		gs 'grades', 'grade_award', 'school', 'bio',  75
-		gs 'grades', 'grade_award', 'school', 'pe',   95
+		gs 'grades', 'grade_award', 'school', 'bio', 20		& !75
 
 		gt $loc, $loc_arg
 	end
@@ -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 -----!!
@@ -839,9 +839,6 @@ elseif $ARGS[0] = 'football':
 		npc_rel['A131']	+= 10
 		npc_rel['A149']	+= 10
 
-		!!----- SCHOOL GRADES -----!!
-		gs 'grades', 'grade_award', 'school', 'pe',   95
-
 		gt $loc, $loc_arg
 	end
 	act 'Return to starting options': gt 'intro_city_select', 'charselect'
@@ -887,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 -----!!
@@ -906,7 +903,7 @@ if $ARGS[0] = 'cool':
 		npc_rel['A144']	+= 10
 	
 	!!----- SCHOOL GRADES -----!!
-	gs 'intro_functions', 'set_base_sgrades'
+	gs 'intro_functions', 'reset_sgclasses'		& ! set everything to 55
 end
 if $ARGS[0] = 'socialite':
 	'<center><h4><font color="maroon">Sociable</font></h4></center>'
@@ -936,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 -----!!
@@ -951,18 +948,18 @@ if $ARGS[0] = 'socialite':
 		npc_rel['A140']	+= 10
 
 		!!----- SCHOOL GRADES -----!!
-		gs 'grades', 'grade_award', 'school', 'math', 65
-		gs 'grades', 'grade_award', 'school', 'rus',  90
-		gs 'grades', 'grade_award', 'school', 'lit',  65
-		gs 'grades', 'grade_award', 'school', 'art',  65
-		gs 'grades', 'grade_award', 'school', 'bio',  65
-		gs 'grades', 'grade_award', 'school', 'eng',  80
-		gs 'grades', 'grade_award', 'school', 'geo',  65
-		gs 'grades', 'grade_award', 'school', 'sci',  65
-		gs 'grades', 'grade_award', 'school', 'his',  65
-		gs 'grades', 'grade_award', 'school', 'comp', 65
-		gs 'grades', 'grade_award', 'school', 'mus',  65
-		gs 'grades', 'grade_award', 'school', 'pe',   65
+		gs 'grades', 'grade_award', 'school', 'math', 10	& ! 65
+		gs 'grades', 'grade_award', 'school', 'rus',  35	& ! 90
+		gs 'grades', 'grade_award', 'school', 'lit',  10	& ! 65
+		gs 'grades', 'grade_award', 'school', 'art',  10	& ! 65
+		gs 'grades', 'grade_award', 'school', 'bio',  10	& ! 65
+		gs 'grades', 'grade_award', 'school', 'eng',  25	& ! 80
+		gs 'grades', 'grade_award', 'school', 'geo',  10	& ! 65
+		gs 'grades', 'grade_award', 'school', 'sci',  10	& ! 65
+		gs 'grades', 'grade_award', 'school', 'his',  10	& ! 65
+		gs 'grades', 'grade_award', 'school', 'comp', 10	& ! 65
+		gs 'grades', 'grade_award', 'school', 'mus',  10	& ! 65
+		gs 'grades', 'grade_award', 'school', 'pe',   10	& ! 65
 
 		gt $loc, $loc_arg
 	end
@@ -992,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 -----!!
@@ -1015,18 +1012,18 @@ elseif $ARGS[0] = 'beautiful':
 		gs 'fame', 'pav', 'sex', 20
 
 		!!----- SCHOOL GRADES -----!!
-		gs 'grades', 'grade_award', 'school', 'math', 60
-		gs 'grades', 'grade_award', 'school', 'rus',  60
-		gs 'grades', 'grade_award', 'school', 'lit',  60
-		gs 'grades', 'grade_award', 'school', 'art',  60
-		gs 'grades', 'grade_award', 'school', 'bio',  60
-		gs 'grades', 'grade_award', 'school', 'eng',  60
-		gs 'grades', 'grade_award', 'school', 'geo',  60
-		gs 'grades', 'grade_award', 'school', 'sci',  60
-		gs 'grades', 'grade_award', 'school', 'his',  60
-		gs 'grades', 'grade_award', 'school', 'comp', 60
-		gs 'grades', 'grade_award', 'school', 'mus',  60
-		gs 'grades', 'grade_award', 'school', 'pe',   60
+		gs 'grades', 'grade_award', 'school', 'math', 5		& ! 60
+		gs 'grades', 'grade_award', 'school', 'rus',  5		& ! 60
+		gs 'grades', 'grade_award', 'school', 'lit',  5		& ! 60
+		gs 'grades', 'grade_award', 'school', 'art',  5		& ! 60
+		gs 'grades', 'grade_award', 'school', 'bio',  5		& ! 60
+		gs 'grades', 'grade_award', 'school', 'eng',  5		& ! 60
+		gs 'grades', 'grade_award', 'school', 'geo',  5		& ! 60
+		gs 'grades', 'grade_award', 'school', 'sci',  5		& ! 60
+		gs 'grades', 'grade_award', 'school', 'his',  5		& ! 60
+		gs 'grades', 'grade_award', 'school', 'comp', 5		& ! 60
+		gs 'grades', 'grade_award', 'school', 'mus',  5		& ! 60
+		gs 'grades', 'grade_award', 'school', 'pe',   5		& ! 60
 
 		gt $loc, $loc_arg
 	end
@@ -1070,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 -----!!
@@ -1087,8 +1084,7 @@ elseif $ARGS[0] = 'anorexic':
 		!!----- RELATIONSHIPS -----!!
 		npc_rel['A15'] += 30
 		npc_rel['A148'] += 30
-
-		
+	
 		gt $loc, $loc_arg
 	end
 	act 'Return to starting options': gt 'intro_sg_select', 'charselect'
@@ -1140,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 -----!!
@@ -1169,19 +1165,21 @@ if $ARGS[0] = 'gopnik':
 	Gspassed = 0
 
 	!!----- SCHOOL GRADES -----!!
-	gs 'grades', 'grade_award', 'school', 'math', 25
-	gs 'grades', 'grade_award', 'school', 'rus',  25
-	gs 'grades', 'grade_award', 'school', 'lit',  25
-	gs 'grades', 'grade_award', 'school', 'art',  25
-	gs 'grades', 'grade_award', 'school', 'bio',  25
-	gs 'grades', 'grade_award', 'school', 'eng',  25
-	gs 'grades', 'grade_award', 'school', 'geo',  25
-	gs 'grades', 'grade_award', 'school', 'sci',  25
-	gs 'grades', 'grade_award', 'school', 'his',  25
-	gs 'grades', 'grade_award', 'school', 'shop', 80
-	gs 'grades', 'grade_award', 'school', 'comp', 25
-	gs 'grades', 'grade_award', 'school', 'mus',  25
-	gs 'grades', 'grade_award', 'school', 'pe',   80
+	gs 'intro_functions', 'reset_sgclasses'		& ! set everything to 55
+
+	gs 'grades', 'grade_award', 'school', 'math', -30	& ! 25
+	gs 'grades', 'grade_award', 'school', 'rus',  -30	& ! 25
+	gs 'grades', 'grade_award', 'school', 'lit',  -30	& ! 25
+	gs 'grades', 'grade_award', 'school', 'art',  -30	& ! 25
+	gs 'grades', 'grade_award', 'school', 'bio',  -30	& ! 25
+	gs 'grades', 'grade_award', 'school', 'eng',  -30	& ! 25
+	gs 'grades', 'grade_award', 'school', 'geo',  -30	& ! 25
+	gs 'grades', 'grade_award', 'school', 'sci',  -30	& ! 25
+	gs 'grades', 'grade_award', 'school', 'his',  -30	& ! 25
+	gs 'grades', 'grade_award', 'school', 'shop', 25	& ! 80
+	gs 'grades', 'grade_award', 'school', 'comp', -30	& ! 25
+	gs 'grades', 'grade_award', 'school', 'mus',  -30	& ! 25
+	gs 'grades', 'grade_award', 'school', 'pe',   25	& ! 80
 end
 if $ARGS[0] = 'gopnikstart':
 	'<center><h4><font color="maroon">Gopnik</font></h4></center>'
@@ -1209,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 -----!!
@@ -1260,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 -----!!
@@ -1323,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 -----!!
@@ -1371,7 +1369,8 @@ elseif $ARGS[0] = 'alternative':
 		stat['cuni_give']	+= 3
 
 		!!----- SCHOOL GRADES -----!!
-		gs 'grades', 'grade_award', 'school', 'shop', 55
+		gs 'grades', 'grade_award', 'school', 'shop', -25	& ! 55
+		gs 'grades', 'grade_award', 'school', 'mus',  30	& ! 55
 
 		gt $loc, $loc_arg
 	end
@@ -1404,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 -----!!
@@ -1416,7 +1415,7 @@ if $ARGS[0] = 'outcast':
 	npc_rel['A133'] += 20
 
 	!!----- SCHOOL GRADES -----!!
-	gs 'intro_functions', 'set_base_sgrades'
+	gs 'intro_functions', 'reset_sgclasses'		& ! set everything to 55
 end
 if $ARGS[0] = 'friendless':
 	'<center><h4><font color="maroon">Friendless</font></h4></center>'
@@ -1438,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 -----!!
@@ -1446,8 +1445,8 @@ if $ARGS[0] = 'friendless':
 		npc_rel['A11'] -= 20
 
 		!!----- SCHOOL GRADES -----!!
-		gs 'grades', 'grade_award', 'school', 'rus',  25
-		gs 'grades', 'grade_award', 'school', 'eng',  25
+		gs 'grades', 'grade_award', 'school', 'rus',  -30	& ! 25
+		gs 'grades', 'grade_award', 'school', 'eng',  -30	& ! 25
 
 		gt $loc, $loc_arg
 	end
@@ -1476,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
@@ -1492,8 +1491,8 @@ elseif $ARGS[0] = 'uglyduckling':
 		gs 'npc_relationship', 'socialgroup_setting_boys', -10, -10, 0, -10, 0, 0
 
 		!!----- SCHOOL GRADES -----!!
-		gs 'grades', 'grade_award', 'school', 'rus',  25
-		gs 'grades', 'grade_award', 'school', 'pe',   25
+		gs 'grades', 'grade_award', 'school', 'rus', -30	& ! 25
+		gs 'grades', 'grade_award', 'school', 'pe',  -30	& ! 25
 
 		gt $loc, $loc_arg
 	end
@@ -1523,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 -----!!
@@ -1548,16 +1547,16 @@ elseif $ARGS[0] = 'goodgirl':
 		church_moral = 40
 
 		!!----- SCHOOL GRADES -----!!
-		gs 'grades', 'grade_award', 'school', 'math', 80
-		gs 'grades', 'grade_award', 'school', 'rus',  80
-		gs 'grades', 'grade_award', 'school', 'lit',  80
-		gs 'grades', 'grade_award', 'school', 'art',  80
-		gs 'grades', 'grade_award', 'school', 'bio',  80
-		gs 'grades', 'grade_award', 'school', 'eng',  80
-		gs 'grades', 'grade_award', 'school', 'geo',  80
-		gs 'grades', 'grade_award', 'school', 'sci',  80
-		gs 'grades', 'grade_award', 'school', 'his',  80
-		gs 'grades', 'grade_award', 'school', 'comp', 80
+		gs 'grades', 'grade_award', 'school', 'math', 25	& ! 80
+		gs 'grades', 'grade_award', 'school', 'rus',  25	& ! 80
+		gs 'grades', 'grade_award', 'school', 'lit',  25	& ! 80
+		gs 'grades', 'grade_award', 'school', 'art',  25	& ! 80
+		gs 'grades', 'grade_award', 'school', 'bio',  25	& ! 80
+		gs 'grades', 'grade_award', 'school', 'eng',  25	& ! 80
+		gs 'grades', 'grade_award', 'school', 'geo',  25	& ! 80
+		gs 'grades', 'grade_award', 'school', 'sci',  25	& ! 80
+		gs 'grades', 'grade_award', 'school', 'his',  25	& ! 80
+		gs 'grades', 'grade_award', 'school', 'comp', 25	& ! 80
 
 		gt $loc, $loc_arg
 	end
@@ -1590,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 -----!!
@@ -1694,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 -----!!
@@ -1721,10 +1720,10 @@ elseif $ARGS[0] = 'goth':
 		pcs_traits['nerd_points'] = -10
 
 		!!----- SCHOOL GRADES -----!!
-		gs 'grades', 'grade_award', 'school', 'lit',  80
-		gs 'grades', 'grade_award', 'school', 'art',  80
-		gs 'grades', 'grade_award', 'school', 'mus',  80
-		gs 'grades', 'grade_award', 'school', 'pe',   70
+		gs 'grades', 'grade_award', 'school', 'lit', 25		& ! 80
+		gs 'grades', 'grade_award', 'school', 'art', 25		& ! 80
+		gs 'grades', 'grade_award', 'school', 'mus', 25		& ! 80
+		gs 'grades', 'grade_award', 'school', 'pe',  15		& ! 70
 
 		gt $loc, $loc_arg
 	end

+ 9 - 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
@@ -229,5 +229,13 @@ if $ARGS[0] = 'set_base_sgrades':
 	gs 'grades', 'grade_award', 'school', 'pe',   55
 end
 
+if $ARGS[0] = 'reset_sgclasses':
+	killvar 'class_list_institution'
+	killvar 'class_list_name'
+	killvar 'class'
+	gs 'intro_functions', 'create_sgclasses'
+	gs 'intro_functions', 'set_base_sgrades'
+end
+
 
 --- intro_functions ---------------------------------

+ 1 - 1
locations/intro_sg.qsrc

@@ -40,7 +40,7 @@ if $ARGS[0] = 'four':
 	'<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':
+	if $start_type['magic'] = 'magic':
 		act '<center><b>Done</b></center>': gt 'intro_sg_m', 'four'
 	else
 		act '<center><b>Done</b></center>': gt 'intro_sg', 'five'

+ 145 - 142
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 -----!!
@@ -422,19 +422,19 @@ if $ARGS[0] = 'nerd':
 	pcs_traits['nerd_lernHome'] = 5
 
 	!!----- SCHOOL GRADES -----!!
-	gs 'grades', 'grade_award', 'school', 'math', 85
-	gs 'grades', 'grade_award', 'school', 'rus',  85
-	gs 'grades', 'grade_award', 'school', 'lit',  85
-	gs 'grades', 'grade_award', 'school', 'art',  85
-	gs 'grades', 'grade_award', 'school', 'bio',  85
-	gs 'grades', 'grade_award', 'school', 'eng',  85
-	gs 'grades', 'grade_award', 'school', 'geo',  85
-	gs 'grades', 'grade_award', 'school', 'sci',  85
-	gs 'grades', 'grade_award', 'school', 'his',  85
-	gs 'grades', 'grade_award', 'school', 'shop', 55
-	gs 'grades', 'grade_award', 'school', 'comp', 85
-	gs 'grades', 'grade_award', 'school', 'mus',  80
-	gs 'grades', 'grade_award', 'school', 'pe',   55
+	gs 'intro_functions', 'reset_sgclasses'		& ! set everything to 55
+
+	gs 'grades', 'grade_award', 'school', 'math', 30	& ! 85
+	gs 'grades', 'grade_award', 'school', 'rus',  30	& ! 85
+	gs 'grades', 'grade_award', 'school', 'lit',  30	& ! 85
+	gs 'grades', 'grade_award', 'school', 'art',  30	& ! 85
+	gs 'grades', 'grade_award', 'school', 'bio',  30	& ! 85
+	gs 'grades', 'grade_award', 'school', 'eng',  30	& ! 85
+	gs 'grades', 'grade_award', 'school', 'geo',  30	& ! 85
+	gs 'grades', 'grade_award', 'school', 'sci',  30	& ! 85
+	gs 'grades', 'grade_award', 'school', 'his',  30	& ! 85
+	gs 'grades', 'grade_award', 'school', 'comp', 30	& ! 85
+	gs 'grades', 'grade_award', 'school', 'mus',  25	& ! 80
 end
 if $ARGS[0] = 'nerdqueen':
 	'<center><h4><font color="maroon">Queen of the nerds</font></h4></center>'
@@ -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 -----!!
@@ -493,16 +493,16 @@ if $ARGS[0] = 'nerdqueen':
 		npc_rel['A18'] = 1
 
 		!!----- School Grades -----!!
-		gs 'grades', 'grade_award', 'school', 'rus',  90
-		gs 'grades', 'grade_award', 'school', 'lit',  80
-		gs 'grades', 'grade_award', 'school', 'art',  75
-		gs 'grades', 'grade_award', 'school', 'bio',  80
-		gs 'grades', 'grade_award', 'school', 'geo',  80
-		gs 'grades', 'grade_award', 'school', 'sci',  80
-		gs 'grades', 'grade_award', 'school', 'his',  80
-		gs 'grades', 'grade_award', 'school', 'comp', 80
-		gs 'grades', 'grade_award', 'school', 'mus',  75
-		gs 'grades', 'grade_award', 'school', 'pe',   60
+		gs 'grades', 'grade_award', 'school', 'rus',  5		& ! 90
+		gs 'grades', 'grade_award', 'school', 'lit',  -5	& ! 80
+		gs 'grades', 'grade_award', 'school', 'art',  -10	& ! 75
+		gs 'grades', 'grade_award', 'school', 'bio',  -5	& ! 80
+		gs 'grades', 'grade_award', 'school', 'geo',  -5	& ! 80
+		gs 'grades', 'grade_award', 'school', 'sci',  -5	& ! 80
+		gs 'grades', 'grade_award', 'school', 'his',  -5	& ! 80
+		gs 'grades', 'grade_award', 'school', 'comp', -5	& ! 80
+		gs 'grades', 'grade_award', 'school', 'mus',  -10	& ! 75
+		gs 'grades', 'grade_award', 'school', 'pe',   5		& ! 60
 
 		gt $loc, $loc_arg
 	end
@@ -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
@@ -554,17 +554,17 @@ elseif $ARGS[0] = 'goodstudent':
 		npc_rel['A29'] += 20
 
 		!!----- School Grades -----!!
-		gs 'grades', 'grade_award', 'school', 'math', 90
-		gs 'grades', 'grade_award', 'school', 'rus',  90
-		gs 'grades', 'grade_award', 'school', 'lit',  90
-		gs 'grades', 'grade_award', 'school', 'art',  90
-		gs 'grades', 'grade_award', 'school', 'bio',  90
-		gs 'grades', 'grade_award', 'school', 'eng',  90
-		gs 'grades', 'grade_award', 'school', 'geo',  90
-		gs 'grades', 'grade_award', 'school', 'sci',  90
-		gs 'grades', 'grade_award', 'school', 'his',  90
-		gs 'grades', 'grade_award', 'school', 'comp', 90
-		gs 'grades', 'grade_award', 'school', 'mus',  90
+		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', 'art',  5		& !90
+		gs 'grades', 'grade_award', 'school', 'bio',  5		& !90
+		gs 'grades', 'grade_award', 'school', 'eng',  5		& !90
+		gs 'grades', 'grade_award', 'school', 'geo',  5		& !90
+		gs 'grades', 'grade_award', 'school', 'sci',  5		& !90
+		gs 'grades', 'grade_award', 'school', 'his',  5		& !90
+		gs 'grades', 'grade_award', 'school', 'comp', 5		& !90
+		gs 'grades', 'grade_award', 'school', 'mus',  10	& !90
 
 		gt $loc, $loc_arg
 	end
@@ -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
@@ -612,9 +612,9 @@ elseif $ARGS[0] = 'computergeek':
 		npc_rel['A153'] += 10
 
 		!!----- School Grades -----!!
-		gs 'grades', 'grade_award', 'school', 'math', 90
-		gs 'grades', 'grade_award', 'school', 'comp', 95
-		gs 'grades', 'grade_award', 'school', 'pe',   65
+		gs 'grades', 'grade_award', 'school', 'math', 5		& !90
+		gs 'grades', 'grade_award', 'school', 'comp', 10	& !95
+		gs 'grades', 'grade_award', 'school', 'pe',   10	& !65
 
 		gt $loc, $loc_arg
 	end
@@ -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', 90
-		gs 'grades', 'grade_award', 'school', 'rus',  90
-		gs 'grades', 'grade_award', 'school', 'lit',  90
-		gs 'grades', 'grade_award', 'school', 'mus',  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 -----!!
@@ -747,8 +747,9 @@ if $ARGS[0] = 'jock':
 	npc_rel['A129']	-= 10
 
 	!!----- SCHOOL GRADES -----!!
-	gs 'intro_functions', 'set_base_sgrades'
-	gs 'grades', 'grade_award', 'school', 'pe', 95
+	gs 'intro_functions', 'reset_sgclasses'		& ! set everything to 55
+
+	gs 'grades', 'grade_award', 'school', 'pe', 40		& ! 95
 end
 if $ARGS[0] = 'volleyball':
 	'<center><h4><font color="maroon">Volleyball player</font></h4></center>'
@@ -768,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 -----!!
@@ -825,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 -----!!
@@ -838,7 +839,7 @@ elseif $ARGS[0] = 'dancer':
 		npc_rel['A144']	+= 10
 
 		!!----- SCHOOL GRADES -----!!
-		gs 'grades', 'grade_award', 'school', 'mus', 80
+		gs 'grades', 'grade_award', 'school', 'mus', 25		& ! 80
 
 		gt $loc, $loc_arg
 	end
@@ -870,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 -----!!
@@ -885,7 +886,7 @@ elseif $ARGS[0] = 'runner':
 		npc_rel['A131']	+= 10
 
 		!!----- SCHOOL GRADES -----!!
-		gs 'grades', 'grade_award', 'school', 'bio', 75
+		gs 'grades', 'grade_award', 'school', 'bio', 20		& !75
 
 		gt $loc, $loc_arg
 	end
@@ -912,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 -----!!
@@ -972,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 -----!!
@@ -996,7 +997,7 @@ if $ARGS[0] = 'cool':
 	npc_rel['A129']	-= 20
 
 	!!----- SCHOOL GRADES -----!!
-	gs 'intro_functions', 'set_base_sgrades'
+	gs 'intro_functions', 'reset_sgclasses'		& ! set everything to 55
 end
 if $ARGS[0] = 'socialite':
 	'<center><h4><font color="maroon">Sociable</font></h4></center>'
@@ -1026,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 -----!!
@@ -1041,18 +1042,18 @@ if $ARGS[0] = 'socialite':
 		npc_rel['A140'] += 10
 
 		!!----- SCHOOL GRADES -----!!
-		gs 'grades', 'grade_award', 'school', 'math', 65
-		gs 'grades', 'grade_award', 'school', 'rus',  90
-		gs 'grades', 'grade_award', 'school', 'lit',  65
-		gs 'grades', 'grade_award', 'school', 'art',  65
-		gs 'grades', 'grade_award', 'school', 'bio',  65
-		gs 'grades', 'grade_award', 'school', 'eng',  80
-		gs 'grades', 'grade_award', 'school', 'geo',  65
-		gs 'grades', 'grade_award', 'school', 'sci',  65
-		gs 'grades', 'grade_award', 'school', 'his',  65
-		gs 'grades', 'grade_award', 'school', 'comp', 65
-		gs 'grades', 'grade_award', 'school', 'mus',  65
-		gs 'grades', 'grade_award', 'school', 'pe',   65
+		gs 'grades', 'grade_award', 'school', 'math', 10	& ! 65
+		gs 'grades', 'grade_award', 'school', 'rus',  35	& ! 90
+		gs 'grades', 'grade_award', 'school', 'lit',  10	& ! 65
+		gs 'grades', 'grade_award', 'school', 'art',  10	& ! 65
+		gs 'grades', 'grade_award', 'school', 'bio',  10	& ! 65
+		gs 'grades', 'grade_award', 'school', 'eng',  25	& ! 80
+		gs 'grades', 'grade_award', 'school', 'geo',  10	& ! 65
+		gs 'grades', 'grade_award', 'school', 'sci',  10	& ! 65
+		gs 'grades', 'grade_award', 'school', 'his',  10	& ! 65
+		gs 'grades', 'grade_award', 'school', 'comp', 10	& ! 65
+		gs 'grades', 'grade_award', 'school', 'mus',  10	& ! 65
+		gs 'grades', 'grade_award', 'school', 'pe',   10	& ! 65
 
 		gt $loc, $loc_arg
 	end
@@ -1085,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 -----!!
@@ -1111,18 +1112,18 @@ elseif $ARGS[0] = 'beautiful':
 		gs 'fame', 'pav', 'sex', 20
 
 		!!----- SCHOOL GRADES ------!!
-		gs 'grades', 'grade_award', 'school', 'math', 60
-		gs 'grades', 'grade_award', 'school', 'rus',  60
-		gs 'grades', 'grade_award', 'school', 'lit',  60
-		gs 'grades', 'grade_award', 'school', 'art',  60
-		gs 'grades', 'grade_award', 'school', 'bio',  60
-		gs 'grades', 'grade_award', 'school', 'eng',  60
-		gs 'grades', 'grade_award', 'school', 'geo',  60
-		gs 'grades', 'grade_award', 'school', 'sci',  60
-		gs 'grades', 'grade_award', 'school', 'his',  60
-		gs 'grades', 'grade_award', 'school', 'comp', 60
-		gs 'grades', 'grade_award', 'school', 'mus',  60
-		gs 'grades', 'grade_award', 'school', 'pe',   60
+		gs 'grades', 'grade_award', 'school', 'math', 5		& ! 60
+		gs 'grades', 'grade_award', 'school', 'rus',  5		& ! 60
+		gs 'grades', 'grade_award', 'school', 'lit',  5		& ! 60
+		gs 'grades', 'grade_award', 'school', 'art',  5		& ! 60
+		gs 'grades', 'grade_award', 'school', 'bio',  5		& ! 60
+		gs 'grades', 'grade_award', 'school', 'eng',  5		& ! 60
+		gs 'grades', 'grade_award', 'school', 'geo',  5		& ! 60
+		gs 'grades', 'grade_award', 'school', 'sci',  5		& ! 60
+		gs 'grades', 'grade_award', 'school', 'his',  5		& ! 60
+		gs 'grades', 'grade_award', 'school', 'comp', 5		& ! 60
+		gs 'grades', 'grade_award', 'school', 'mus',  5		& ! 60
+		gs 'grades', 'grade_award', 'school', 'pe',   5		& ! 60
 
 		gt $loc, $loc_arg
 	end
@@ -1166,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 -----!!
@@ -1235,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 -----!!
@@ -1272,19 +1273,21 @@ if $ARGS[0] = 'gopnik':
 	Gspassed = 0
 
 	!!----- SCHOOL GRADES -----!!
-	gs 'grades', 'grade_award', 'school', 'math', 25
-	gs 'grades', 'grade_award', 'school', 'rus',  25
-	gs 'grades', 'grade_award', 'school', 'lit',  25
-	gs 'grades', 'grade_award', 'school', 'art',  25
-	gs 'grades', 'grade_award', 'school', 'bio',  25
-	gs 'grades', 'grade_award', 'school', 'eng',  25
-	gs 'grades', 'grade_award', 'school', 'geo',  25
-	gs 'grades', 'grade_award', 'school', 'sci',  25
-	gs 'grades', 'grade_award', 'school', 'his',  25
-	gs 'grades', 'grade_award', 'school', 'shop', 80
-	gs 'grades', 'grade_award', 'school', 'comp', 25
-	gs 'grades', 'grade_award', 'school', 'mus',  25
-	gs 'grades', 'grade_award', 'school', 'pe',   80
+	gs 'intro_functions', 'reset_sgclasses'		& ! set everything to 55
+
+	gs 'grades', 'grade_award', 'school', 'math', -30	& ! 25
+	gs 'grades', 'grade_award', 'school', 'rus',  -30	& ! 25
+	gs 'grades', 'grade_award', 'school', 'lit',  -30	& ! 25
+	gs 'grades', 'grade_award', 'school', 'art',  -30	& ! 25
+	gs 'grades', 'grade_award', 'school', 'bio',  -30	& ! 25
+	gs 'grades', 'grade_award', 'school', 'eng',  -30	& ! 25
+	gs 'grades', 'grade_award', 'school', 'geo',  -30	& ! 25
+	gs 'grades', 'grade_award', 'school', 'sci',  -30	& ! 25
+	gs 'grades', 'grade_award', 'school', 'his',  -30	& ! 25
+	gs 'grades', 'grade_award', 'school', 'shop', 25	& ! 80
+	gs 'grades', 'grade_award', 'school', 'comp', -30	& ! 25
+	gs 'grades', 'grade_award', 'school', 'mus',  -30	& ! 25
+	gs 'grades', 'grade_award', 'school', 'pe',   25	& ! 80
 end
 if $ARGS[0] = 'gopnikstart':
 	'<center><h4><font color="maroon">Gopnik</font></h4></center>'
@@ -1313,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 -----!!
@@ -1367,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 -----!!
@@ -1432,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 -----!!
@@ -1469,19 +1472,19 @@ elseif $ARGS[0] = 'vitekgf':
 		stat['vaginal'] = 2
 
 		!!----- SCHOOL GRADES -----!!
-		gs 'grades', 'grade_award', 'school', 'math', 55
-		gs 'grades', 'grade_award', 'school', 'rus',  55
-		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', 'eng',  55
-		gs 'grades', 'grade_award', 'school', 'geo',  55
-		gs 'grades', 'grade_award', 'school', 'sci',  55
-		gs 'grades', 'grade_award', 'school', 'his',  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', 'pe',   55
+		gs 'grades', 'grade_award', 'school', 'math', 30	& ! 55
+		gs 'grades', 'grade_award', 'school', 'rus',  30	& ! 55
+		gs 'grades', 'grade_award', 'school', 'lit',  30	& ! 55
+		gs 'grades', 'grade_award', 'school', 'art',  30	& ! 55
+		gs 'grades', 'grade_award', 'school', 'bio',  30	& ! 55
+		gs 'grades', 'grade_award', 'school', 'eng',  30	& ! 55
+		gs 'grades', 'grade_award', 'school', 'geo',  30	& ! 55
+		gs 'grades', 'grade_award', 'school', 'sci',  30	& ! 55
+		gs 'grades', 'grade_award', 'school', 'his',  30	& ! 55
+		gs 'grades', 'grade_award', 'school', 'shop', -25	& ! 55
+		gs 'grades', 'grade_award', 'school', 'comp', 30	& ! 55
+		gs 'grades', 'grade_award', 'school', 'mus',  30	& ! 55
+		gs 'grades', 'grade_award', 'school', 'pe',   -25	& ! 55
 
 		gt $loc, $loc_arg
 	end
@@ -1522,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 -----!!
@@ -1571,8 +1574,8 @@ elseif $ARGS[0] = 'alternative':
 		stat['cuni_give']	+= 3
 
 		!!----- SCHOOL GRADES -----!!
-		gs 'grades', 'grade_award', 'school', 'shop', 55
-		gs 'grades', 'grade_award', 'school', 'mus',  55
+		gs 'grades', 'grade_award', 'school', 'shop', -25	& ! 55
+		gs 'grades', 'grade_award', 'school', 'mus',  30	& ! 55
 
 		gt $loc, $loc_arg
 	end
@@ -1598,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 -----!!
@@ -1620,7 +1623,7 @@ if $ARGS[0] = 'outcast':
 	npc_rel['A133']	+= 20
 
 	!!----- SCHOOL GRADES -----!!
-	gs 'intro_functions', 'set_base_sgrades'
+	gs 'intro_functions', 'reset_sgclasses'		& ! set everything to 55
 end
 if $ARGS[0] = 'friendless':
 	'<center><h4><font color="maroon">Friendless</font></h4></center>'
@@ -1646,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 -----!!
@@ -1656,8 +1659,8 @@ if $ARGS[0] = 'friendless':
 		npc_rel['A11'] -= 20
 
 		!!----- SCHOOL GRADES -----!!
-		gs 'grades', 'grade_award', 'school', 'rus',  25
-		gs 'grades', 'grade_award', 'school', 'eng',  25
+		gs 'grades', 'grade_award', 'school', 'rus',  -30	& ! 25
+		gs 'grades', 'grade_award', 'school', 'eng',  -30	& ! 25
 
 		gt $loc, $loc_arg
 	end
@@ -1688,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
@@ -1702,8 +1705,8 @@ elseif $ARGS[0] = 'uglyduckling':
 		uglyduck_flag = 1
 
 		!!----- SCHOOL GRADES -----!!
-		gs 'grades', 'grade_award', 'school', 'rus', 25
-		gs 'grades', 'grade_award', 'school', 'pe',  25
+		gs 'grades', 'grade_award', 'school', 'rus', -30	& ! 25
+		gs 'grades', 'grade_award', 'school', 'pe',  -30	& ! 25
 
 		gt $loc, $loc_arg
 	end
@@ -1729,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 -----!!
@@ -1755,16 +1758,16 @@ elseif $ARGS[0] = 'goodgirl':
 		church_moral = 40
 
 		!!----- SCHOOL GRADES -----!!
-		gs 'grades', 'grade_award', 'school', 'math', 80
-		gs 'grades', 'grade_award', 'school', 'rus',  80
-		gs 'grades', 'grade_award', 'school', 'lit',  80
-		gs 'grades', 'grade_award', 'school', 'art',  80
-		gs 'grades', 'grade_award', 'school', 'bio',  80
-		gs 'grades', 'grade_award', 'school', 'eng',  80
-		gs 'grades', 'grade_award', 'school', 'geo',  80
-		gs 'grades', 'grade_award', 'school', 'sci',  80
-		gs 'grades', 'grade_award', 'school', 'his',  80
-		gs 'grades', 'grade_award', 'school', 'comp', 80
+		gs 'grades', 'grade_award', 'school', 'math', 25	& ! 80
+		gs 'grades', 'grade_award', 'school', 'rus',  25	& ! 80
+		gs 'grades', 'grade_award', 'school', 'lit',  25	& ! 80
+		gs 'grades', 'grade_award', 'school', 'art',  25	& ! 80
+		gs 'grades', 'grade_award', 'school', 'bio',  25	& ! 80
+		gs 'grades', 'grade_award', 'school', 'eng',  25	& ! 80
+		gs 'grades', 'grade_award', 'school', 'geo',  25	& ! 80
+		gs 'grades', 'grade_award', 'school', 'sci',  25	& ! 80
+		gs 'grades', 'grade_award', 'school', 'his',  25	& ! 80
+		gs 'grades', 'grade_award', 'school', 'comp', 25	& ! 80
 
 		gt $loc, $loc_arg
 	end
@@ -1804,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 -----!!
@@ -1918,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 -----!!
@@ -1946,10 +1949,10 @@ elseif $ARGS[0] = 'goth':
 		pcs_traits['nerd_points'] = -10
 
 		!!----- SCHOOL GRADES -----!!
-		gs 'grades', 'grade_award', 'school', 'lit', 80
-		gs 'grades', 'grade_award', 'school', 'art', 80
-		gs 'grades', 'grade_award', 'school', 'mus', 80
-		gs 'grades', 'grade_award', 'school', 'pe',  70
+		gs 'grades', 'grade_award', 'school', 'lit', 25		& ! 80
+		gs 'grades', 'grade_award', 'school', 'art', 25		& ! 80
+		gs 'grades', 'grade_award', 'school', 'mus', 25		& ! 80
+		gs 'grades', 'grade_award', 'school', 'pe',  15		& ! 70
 
 		gt $loc, $loc_arg
 	end

+ 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

+ 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 ---------------------------------
 

+ 27 - 3
locations/lover.qsrc

@@ -147,7 +147,7 @@ if $ARGS[0] = 'remove':
 	
 end
 
-if $ARGS[0] = 'add fuckbuddy':
+if $ARGS[0] = 'add_fuckbuddy':
 	if mid($ARGS[1],1,1) = 'C' :
 		gs 'npcpreservec', $ARGS[1]
 		gs 'boyStat', $npclastsaved
@@ -177,7 +177,7 @@ if $ARGS[0] = 'add_sugar_daddy':
 	end
 end
 
-if $ARGS[0] = 'remove fuckbuddy':
+if $ARGS[0] = 'remove_fuckbuddy':
 	gs 'telefon', 'DeleteContact', $ARGS[1]
 	$ex_fuckbuddy[] = $ARGS[1]
 	$npc_rel_type[$ARGS[1]] = 'ex_fuckbuddy'
@@ -190,7 +190,31 @@ if $ARGS[0] = 'remove_sugar_daddy':
 	npc_sugar_daddy_price[$ARGS[1]] = 0
 	$ex_sugar_daddy[] = $ARGS[1]
 	$npc_rel_type[$ARGS[1]] = 'ex_sugar_daddy'
-	killvar '$fuckbuddy', arrpos('$fuckbuddy',$ARGS[1])
+	killvar '$sugar_daddy', arrpos('$sugar_daddy',$ARGS[1])
+end
+
+if $ARGS[0] = 'clear_all':
+	! CLEAR LOVERS
+	:clear_lovers_loop
+	if arrsize('pcs_lovers') > 0:
+		gs 'lover', 'remove', 0
+		jump 'clear_lovers_loop'
+	end
+
+	! CLEAR FUCKBUDDIES
+	:clear_fb_loop
+	if arrsize('$fuckbuddy') > 0:
+		gs 'lover', 'remove fuckbudy', $fuckbuddy[0]
+		jump 'clear_fb_loop'
+	end
+	
+	! CLEAR SUGAR DADIES
+	:clear_sd_loop
+	if arrsize('$sugar_daddy') > 0:
+		gs 'lover', 'remove_sugar_daddy', $sugar_daddy[0]
+		jump 'clear_sd_loop'
+	end
+	
 end
 
 

+ 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

+ 5 - 4
locations/olu.qsrc

@@ -725,6 +725,7 @@ if $ARGS[0] = 'nusholusvet':
 		*clr & cla
 		'<center><img <<$set_imgh>> src="images/characters/pavlovsk/resident/olu/sex/anushka/nusholusvet2.jpg"></center>'
 		'He steps away from her, pulling his dick out of her mouth and then in front of you says the same thing. "Open." You open your mouth and he slides his wet dick in your mouth, wet from Anushka''s slobber. You suck on it and take as much of it as you can into your mouth.'
+		gs 'boyStat', 'A55'
 		gs 'arousal', 'bj', 5, 'group'
 		gs 'stat'
 		act 'Ride him cowgirl':
@@ -737,7 +738,7 @@ if $ARGS[0] = 'nusholusvet':
 				*clr & cla
 				'<center><img <<$set_imgh>> src="images/characters/pavlovsk/resident/olu/sex/anushka/nusholusvet4.jpg"></center>'
 				'He smacks her on the ass and says. "Get off." Then he turns and looks at you. "Come." Anushka crawls off him and you crawl on top of him. You lower yourself down and feel his wet dick press against your slit. You feel your lips part and then stretch as the massive dick slides inside of you. You go down as far as you find comfortable, taking as much of him into you as you can and then start riding him. Anushka not wanting to be left out, scoots up to his face and straddles it. He starts licking her pussy as you ride him.'
-				gs 'arousal', 'voyeur_sex', 5, 'group'
+				gs 'arousal', 'vaginal', 5, 'group'
 				gs 'stat'
 				act 'Up your ass':
 					*clr & cla
@@ -746,7 +747,7 @@ if $ARGS[0] = 'nusholusvet':
 					'You both turn around and get on all fours, as you both do. He grabs a bottle of lube out of the nightstand and squirts some lube on your butt and her''s and then uses one hands on each of you. He rubs the lube around, then sticks one finger up your butt and then another working the lube into your butt really well. Once he is done he squirts some lube on his dick and lubes it up really nice.'
 					*nl
 					'He stands on the bed behind you, your feel the massive head of his cock pressing against your asshole, it takes a moment before you feel it pop inside of you. You hiss a bit in pain, he gently starts fucking your butt, as he does he grabs ahold of your hair and Anushka''s hair with his other hand and pulls on it. Not too hard just enough you feel the tugs. He works his way deeper into your ass, you don''t know how far but it feels like it is about to push your stomach up into your throat.'
-					gs 'arousal', 'voyeur_sex', 5, 'group'
+					gs 'arousal', 'anal', 5, 'group'
 					gs 'stat'
 					act 'Anushka''s butt':
 						*clr & cla
@@ -758,7 +759,7 @@ if $ARGS[0] = 'nusholusvet':
 							*clr & cla
 							'<center><img <<$set_imgh>> src="images/characters/pavlovsk/resident/olu/sex/anushka/nusholusvet7.jpg"></center>'
 							'You hear Anushka moan loudly and you feel Olu moving around behind you again. This time his dick slides in your ass much easier, as it is still gapping from the last time. He starts going deeper than before, you start to scoot forward a bit but he places his hands on your hips and holds you in place. He keeps going deeper and deeper until you finally feel his balls slapping against your twat, as he starts fucking your butt balls deep, with his massively long and thick cock.'
-							gs 'arousal', 'voyeur_sex', 5, 'group'
+							gs 'arousal', 'anal', 5, 'group'
 							gs 'stat'
 							act 'Her anal pounding':
 								*clr & cla
@@ -781,7 +782,7 @@ if $ARGS[0] = 'nusholusvet':
 									'She takes you by the hand and starts to pull your towards the door. "Come on lets go."'
 									'A little shocked at the thought of walking out into the apartment stairwell with cum on your face. "But I have cum on my face."'
 									'She pulls on your a little harder and grins back at you. "Exactly, now come on."'
-									gs 'arousal', 'voyeur_sex', 5, 'group'
+									gs 'arousal', 'bj', 5, 'group'
 									gs 'cum_call', 'face', 'A55', 1
 									gs 'cum_call', 'mouth', 'A55', 1
 									gs 'arousal', '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

+ 20 - 9
locations/pav_hotel.qsrc

@@ -16,7 +16,7 @@ gs'stat'
 if $ARGS[0] = 'skip_resepevent': jump 'skipresepevent'
 
 if hour = 0 and hotresepQW_day ! daystart and (hotresepQW < 3 or (hotresepQW = 3 and rand(1,10) = 10)):
-	if hotelRoom['pav_hotel'] = 0:
+	if hotelRoom['pav_hotel'] = 0 and therapistQW['hotel_key'] ! 3:
 		*clr
 		'When you want to enter the hotel you notice the doors are closed.'
 		'You try knocking on the door but nobody comes to open them.'
@@ -101,9 +101,15 @@ if hour = 0 and hotresepQW_day ! daystart and (hotresepQW < 3 or (hotresepQW = 3
 						'You have seen enough and quietly go back to your room'
 
 						act 'Continue':
-							if hotelRoom['pav_hotel'] = 1:gt'hotelroom','normal'
-							if hotelRoom['pav_hotel'] = 2:gt'hotelroom','better'
-							if hotelRoom['pav_hotel'] = 3:gt'hotelroom','best'
+							if therapistQW['hotel_key'] = 3:
+								gt 'HotelRoom', 'therapist'
+							elseif hotelRoom['pav_hotel'] = 1:
+								gt'hotelroom','normal'
+							elseif hotelRoom['pav_hotel'] = 2:
+								gt'hotelroom','better'
+							elseif hotelRoom['pav_hotel'] = 3:
+								gt'hotelroom','best'
+							end
 						end
 					end
 				end
@@ -135,8 +141,8 @@ else
 	end
 end
 
-if therapist_key = 2 and week = 6 and hour > 19 and pcs_traits['commando_lvl'] = 3 and therapist_key[1] ! daystart and therapistQW['escaped'] = 0:
-	therapist_key[1] = daystart
+if therapistQW['hotel_key'] = 2 and week = 6 and hour > 19 and pcs_traits['commando_lvl'] = 3 and therapistQW['hotel_day'] ! daystart and therapistQW['escaped'] = 0:
+	therapistQW['hotel_day'] = daystart
 	gs 'willpower', 'misc', 'resist', 'medium'
 
 	act 'Visit the therapist': gt 'therapist_hotel', 'start'
@@ -205,11 +211,16 @@ if hour = 20 and IgorevnaBDSM >= 5 and IgorevnaBDSM < 9 and week < 3 and AnnaQW[
 	act 'Look for Anna':AnnaQW['daystart'] = daystart & gt 'hotel_anna', 'meeting'
 end
 
-if hotelRoom['pav_hotel'] > 0:
+if hotelRoom['pav_hotel'] > 0 or therapistQW['hotel_key'] = 3:
 	act 'Go to your room':
 		$hotel = 'pav_hotel'
-		if hotelRoom['pav_hotel'] = 1: gt 'HotelRoom', 'normal'
-		if hotelRoom['pav_hotel'] = 2: gt 'HotelRoom', 'better'
+		if therapistQW['hotel_key'] = 3:
+			gt 'HotelRoom', 'therapist'
+		elseif hotelRoom['pav_hotel'] = 1:
+			gt 'HotelRoom', 'normal'
+		elseif hotelRoom['pav_hotel'] = 2:
+			gt 'HotelRoom', 'better'
+		end
 	end
 end
 

+ 2 - 2
locations/pav_hotelReception.qsrc

@@ -118,13 +118,13 @@ if $ARGS[0] = '':
 		else
 			'<<$receptionName>> smiles at you and asks: "Hello <<$pcs_nickname>>! Would you like to rent a room?"'
 		end
-		if hotelRoom['pav_hotel'] > 0:
+		if hotelRoom['pav_hotel'] > 0 and therapistQW['hotel_key'] ! 3:
 			*clr & cla
 			'<center><img <<$set_imgh>> src="images/locations/pavlovsk/hotel/resep.girl0,'+rand(0,10)+'.jpg"></center>'
 			'She looks in the computer: "I see you already have a room here. As it is already booked and paid for the only way to change it to a different room, would be to cancel your existing booking. To do so without notice would forfeit your payment, I would advise against this, but you may do so if you wish."'
 			act'Yes, cancel your booking': hotelRoom['pav_hotel'] = 0 & gt'pav_hotel'
 			act'No':gt'pav_hotel'
-		elseif hotelRoom['pav_hotel'] = 0:
+		elseif hotelRoom['pav_hotel'] = 0 and therapistQW['hotel_key'] ! 3:
 			act 'Yes':
 				*clr & cla
 				'<center><img <<$set_imgh>> src="images/locations/pavlovsk/hotel/resep.girl0,'+rand(0,10)+'.jpg"></center>'

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

+ 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.'

+ 1 - 0
locations/pornstudio.qsrc

@@ -987,6 +987,7 @@ if $ARGS[0] = 'medical':
 		if venera > 0:
 			pfilmNO = 1
 			pfilmNoVenera = 1
+			pornstack = 0
 			killvar 'prodcosttrue'
 			killvar 'pfilmday'
 			killvar 'pornplan'

+ 75 - 29
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 & prostitute['pantywornnumber'] = pantywornnumber & prostitute['brawornnumber'] = brawornnumber & prostitute['shoewornnumber'] = shoewornnumber
+	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,15 +426,29 @@ 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
 
+	!!-- Bag
+	$prostitute['currentpursetype'] = $currentpursetype
+	prostitute['currentpursenumber'] = currentpursenumber
+
+	!!-- Coat
+	$prostitute['coatworntype'] = $coatworntype
+	prostitute['coatwornnumber'] = coatwornnumber
+
 	prostitute['outfit_is_set'] = 1
 end
 
@@ -440,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'] = ''
@@ -449,33 +469,64 @@ if $ARGS[0] = 'clearing_default_outfit':
 	$prostitute['shoeworntype'] = ''
 	prostitute['shoewornnumber'] = 0
 
+	!!-- Bag
+	$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
-	lastworndefpursenumber['prostitute'] = currentpursenumber
+	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['shoeworntype'], prostitute['shoewornnumber']
-
-!	!! TODO: Check for worn out here?
+	gs 'purses', 'wear', $prostitute['currentpursetype'], prostitute['currentpursenumber']
+	!!-- 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'
@@ -483,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'], lastworndefpursenumber['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:
+		!! 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 Soak'
 	$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'] = 'Study'
 	$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'] = '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'
 end
 
 --- pushkin_ballet_res ---------------------------------

+ 22 - 1
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
@@ -2526,6 +2526,27 @@ if temp_current_save_version < 00090200:
 	if Trainpass_day ! 0:	transportVars['trainpass_day'] = Trainpass_day	& killvar 'Trainpass_day'
 	killvar 'train_event'
 
+	! 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'
+
+	! 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
 
 

+ 8 - 2
locations/sex_ev_after.qsrc

@@ -840,6 +840,7 @@ if $ARGS[0] = 'finish_sex':
 	sex_ev['finish_time'] = totminut
 	if sex_ev['fucked_out'] > 0:
 		'He just lays there, panting and wheezing in exhaustion.'
+		gs'sex_ev_after', 'after_sex1'
 	elseif sex_ev['orgasm_count'] = 0 and sex_ev['fake_orgasm_count'] = 0 and sex_ev['fuck'] = 0 and npc_selfish[$boy] = 0 and (npc_caretaker[$boy] = 1 or rand(0,1) = 1):
 		gs'sex_ev_after', 'no_cum_end'
 !!	elseif sex_ev['force_harden'] = 2:
@@ -1555,7 +1556,7 @@ if $ARGS[0] = 'boy_bathroom':
 			act'Take a shower':gs'sex_ev_shower', 'after_alone'
 		end
 	else
-		if sex_ev['morning_shower'] = 0 or $stat_cum_msg ! '':
+		if sex_ev['morning_shower'] = 0 or $stat_cum_msg ! '' or pcs_sweat > 0:
 			act'Take a shower':gs'sex_ev_morning', 'shower'
 		end
 	end
@@ -1885,6 +1886,7 @@ if $ARGS[0] = 'plan_b2':
 			cla & *nl
 			'<<$npc_firstname[$boy]>> watches you pop the pill out of its packaging.'
 			if LudaQW['free_condoms'] = 1 and LudaQW['luda_ma_pill'] = 0:
+				sex_ev['aunt_pill'] = 1
 				'"My aunt gave me this morning after pill for emergencies," you explain and pop it in your mouth before forcing it down with a dry swallow.'
 			else
 				'"Morning after pill," you explain and pop it in your mouth before forcing it down with a dry swallow.'
@@ -1897,6 +1899,7 @@ if $ARGS[0] = 'plan_b2':
 			cla & *nl
 			'<<$npc_firstname[$boy]>> watches you pop the pill out of its packaging and you can''t help but blush beneath his gaze.'
 			if LudaQW['free_condoms'] = 1 and LudaQW['luda_ma_pill'] = 0:
+				sex_ev['aunt_pill'] = 1
 				'"My aunt gave me this for emergencies," you say shyly, blush intensifying as you put it in your mouth and force it down with a dry swallow.'
 			else
 				'"The instructions say to take it as soon as possible for best effect," you smile shyly, blush intensifying as you put it in your mouth and force it down with a dry swallow.'
@@ -1928,6 +1931,7 @@ if $ARGS[0] = 'plan_b3':
 		cla & *nl
 		'<<$npc_firstname[$boy]>> watches you pop the pill out of its packaging and into your mouth.'
 		'"There," you say, forcing it down with a dry swallow. "Problem solved."'
+		sex_ev['ma_pill'] = 2
 		gs 'medical_din', 'morning_after_pill_function'
 		gs'sex_ev_after', 'after_sex2'
 	end
@@ -1936,6 +1940,7 @@ if $ARGS[0] = 'plan_b3':
 		cla & *nl
 		'<<$npc_firstname[$boy]>> watches you pop the pill out of its packaging and you can''t help but blush beneath his gaze.'
 		'"Problem solved," you say, feeling your cheeks redden even further as you force it down with a dry swallow.'
+		sex_ev['ma_pill'] = 2
 		gs 'medical_din', 'morning_after_pill_function'
 		gs'sex_ev_after', 'after_sex2'
 	end
@@ -1943,11 +1948,12 @@ if $ARGS[0] = 'plan_b3':
 	act'Take it sexily':
 		cla & *nl
 		'As <<$npc_firstname[$boy]>> watches you pull the pill from its packaging, you stick out your tongue at him, popping the pill onto it and swallowing with a wide grin.'
-		if $sex_ev['last_cum'] = 'swallow':
+		if $sex_ev['last_cum'] = 'swallow' and totminut < sex_ev['finish_time'] + 5:
 			'"Chaser," you wink.'
 		else
 			'"There," you smirk. "Problem solved."'
 		end
+		sex_ev['ma_pill'] = 2
 		gs 'medical_din', 'morning_after_pill_function'
 		gs'sex_ev_after', 'after_sex2'
 	end

+ 7 - 7
locations/sex_ev_boy_pillow_talk.qsrc

@@ -9,16 +9,16 @@ if $ARGS[0] = 'boy_talk':
 !!		:boy_talk_loop
 		if sex_ev['good_for_you'] = 0 and rand(1,sex_ev['boy_topics']) = 1:
 			cla
-			act'<<$npc_firstname[$boy]>> has something to say':gs 'sex_ev_favorite_part', 'boy_good_for_you'
+			gs 'sex_ev_favorite_part', 'boy_good_for_you'
 		elseif sex_ev['boy_pube_talk'] = 0 and rand(1,sex_ev['boy_topics']) = 1:
 			cla
-			act'<<$npc_firstname[$boy]>> has something to say':gs'sex_ev_boy_pillow_talk', 'boy_pube_talk_start'
-		elseif sex_ev['no_kids'] = 1 and npc_know_no_kids[$boy] = 1 and sex_ev['no_kids_talk'] = 0 and rand(1,sex_ev['boy_topics']) = 1:
+			gs'sex_ev_boy_pillow_talk', 'boy_pube_talk_start'
+		elseif sex_ev['no_kids'] = 1 and npc_know_no_kids[$boy] = 0 and sex_ev['no_kids_talk'] = 0 and rand(1,sex_ev['boy_topics']) = 1:
 			cla
-			act'<<$npc_firstname[$boy]>> has something to say':gs'sex_ev_boy_pillow_talk', 'boy_no_kids'
+			gs'sex_ev_boy_pillow_talk', 'boy_no_kids'
 		elseif sex_ev['boy_shower'] = 0 and $sex_ev['loc'] ! 'house_party' and rand(1,sex_ev['boy_topics']) = 1:
 			cla
-			act'<<$npc_firstname[$boy]>> has something to say':gs'sex_ev_boy_pillow_talk', 'boy_take_shower'
+			gs'sex_ev_boy_pillow_talk', 'boy_take_shower'
 		
 !!		elseif sex_ev['no_swallow_talk'] = 0 and sex_ev['cum_mouth'] > 0 and sex_ev['swallow_count'] = 0 and rand(1,2) = 1:
 !!			act'<<$npc_firstname[$boy]>> has something to say':gs'sex_ev_boy_pillow_talk', 'dont_swallow_talk'
@@ -28,14 +28,14 @@ if $ARGS[0] = 'boy_talk':
 
 		elseif sex_ev['broken_condom'] >= 1 and sex_ev['broken_condom_talk'] = 0 and rand(1,2) = 1:
 			cla
-			act'<<$npc_firstname[$boy]>> has something to say':gs'sex_ev_boy_pillow_talk', 'boy_broken_condom'
+			gs'sex_ev_boy_pillow_talk', 'boy_broken_condom'
 !!		elseif sex_ev['creampie_okay'] = 0:
 		
 !!		elseif sex_ev['boy_no_kids'] = 0 and sex_ev['no_kids_talk'] ! 1:
 			
 		elseif sex_ev['no_condom'] = 0 and sex_ev['fuck_count'] > 0 and npc_no_condoms[$boy] > 0 and sex_ev['wish_no_condoms_talk'] = 0:
 			cla
-			act'<<$npc_firstname[$boy]>> has something to say':gs'sex_ev_boy_pillow_talk', 'boy_hates_condoms'
+			gs'sex_ev_boy_pillow_talk', 'boy_hates_condoms'
 		
 		else
 !!			cla & gs'sex_ev_pillow_talk', 'topic_route'

+ 2 - 2
locations/sex_ev_cum.qsrc

@@ -1532,7 +1532,7 @@ if $ARGS[0] = 'cum_tits3':
 	$sex_ev['last_cum'] = 'tits'
 	gs 'cum_call', 'breasts', $boy, 1
 	gs 'cum_call', 'stomach', $boy, 1
-	'<center><video autoplay loop src="images/shared/sex/cum/chest/tits3.mp4"></video></center>'
+	'<center><video autoplay loop src="images/shared/sex/cum/chest/tits4.mp4"></video></center>'
 	
 	if sex_ev['he_ask'] > 0:
 		if sex_ev['condom'] = 1:
@@ -2620,7 +2620,7 @@ if $ARGS[0] = 'what_now':
 		act'Let''s stop':
 			cla & *nl
 			'"Probably best if we stop here," you say.'
-			if npc_selfish[$boy] = 1 and sex_ev['cum_count'] < npc_sexdrive[$boy] + sex_ev['extra_cum']:
+			if npc_selfish[$boy] = 1 and sex_ev['cum_count'] < npc_sexdrive[$boy]/3:
 				'<<$npc_firstname[$boy]>> sighs in disappointment.'
 			else
 				'<<$npc_firstname[$boy]>> nods in somber agreement.'

+ 2 - 2
locations/sex_ev_dress_talking.qsrc

@@ -505,7 +505,7 @@ if $ARGS[0] = 'pc_sex_ev_invite':
 					else
 						'"Twice in one day might be a little bit too much for me," <<$npc_firstname[$boy]>> smiles back ruefully.'
 						gs'sex_ev_leave', 'dress_loop_code'
-						'"Damn," you sigh disappointedly, continuing <<$sex_ev[''dress_describe'']>>'
+						'"Damn," you sigh in disappointment as you continue <<$sex_ev[''dress_describe'']>>'
 						gs'sex_ev_dress_talking', 'pc_sex_ev_invite_denied'
 					end
 				else
@@ -515,7 +515,7 @@ if $ARGS[0] = 'pc_sex_ev_invite':
 					else
 						'"Think I might be a little too tapped out from work," <<$npc_firstname[$boy]>> grunts.'
 						gs'sex_ev_leave', 'dress_loop_code'
-						'"Damn," you sigh disappointedly, continuing <<$sex_ev[''dress_describe'']>>'
+						'"Damn," you sigh in disappointment as you continue <<$sex_ev[''dress_describe'']>>'
 						gs'sex_ev_dress_talking', 'pc_sex_ev_invite_denied'
 					end
 				end

+ 19 - 22
locations/sex_ev_favorite_part.qsrc

@@ -946,7 +946,7 @@ if $ARGS[0] = 'pc_favorite_part':
 	end
 	
 	if sex_ev['fuck_count'] > 0:
-		act'The sex':
+		act'You liked fucking him':
 			cla
 			gs'sex_ev_favorite_part', 'pc_fuck_fav1'
 			gs'sex_ev_favorite_part', 'pc_fuck_fav2'
@@ -985,7 +985,7 @@ end
 
 if $ARGS[0] = 'pc_bj_fav1':
 	if sex_ev['bj_count'] > 0:
-		act'Sucking your cock':
+		act'Liked sucking his cock':
 			cla & *clr
 			'<center><img <<$set_imgh>> src="images/shared/sex/after/pillow_talk1.jpg"></center>'
 			'"I liked sucking your cock," you grin.'
@@ -1720,20 +1720,18 @@ end
 
 if $ARGS[0] = 'pc_cuni_fav1':
 	if sex_ev['cuni_count'] > 0:
-		act'Getting eaten out':
-			cla & *clr
-			'<center><video autoplay loop src="images/shared/sex/after/pillow_talk2.mp4"></video></center>'
+		act'He''d good at giving head':
+			cla & *nl
 			if $sex_ev['boy_favorite'] = 'pussyeating':
 				'"That was my favorite part too," you grin. "When you ate me out. You''re just so good at it!"'
 			else
-				'"I liked it when you ate me out," you grin. "A tongue playing with the little man in the boat drives me crazy. I love it."'
+				'"I liked it when you ate me out ' + iif($sex_ev['boy_favorite'] = 'pussyeating', 'too', '') + '," you grin. "A tongue playing with the little man in the boat drives me crazy. I love it."'
 			end
 			gs'sex_ev_pillow_talk', 'topic_route'
 		end
 		if sex_ev['facesit_count'] > 0:
-			act'When I sat on your face':
-				cla & *clr
-				'<center><video autoplay loop src="images/shared/sex/after/pillow_talk2.mp4"></video></center>'
+			act'Enjoyed sitting on his face':
+				cla & *nl
 				if $sex_ev['boy_favorite'] = 'pussyeating':
 					'"That was my favorite part too," you grin. "But specifically when I sat on your face. I bet you were practically drowning in my girl cum."'
 				else
@@ -1743,9 +1741,8 @@ if $ARGS[0] = 'pc_cuni_fav1':
 			end
 		end
 		if sex_ev['creampie_eat'] > 0:
-			act'When you ate the creampie out of me':
-				cla & *clr
-				'<center><video autoplay loop src="images/shared/sex/after/pillow_talk2.mp4"></video></center>'
+			act'It was hot when he ate the creampie out of you':
+				cla & *nl
 				if $sex_ev['boy_favorite'] = 'pussyeating':
 					'"When you ate the creampie out of my pussy," you grin, shuddering at the memory. "I know you love eating pussy, but holy fuck, that was so hot."'
 				else
@@ -1759,7 +1756,7 @@ end
 
 if $ARGS[0] = 'pc_creampie_fav1':
 	if sex_ev['creampie_count'] > 0:
-		act'Loved it when he came inside':
+		act'Liked it when he came inside':
 			cla & *clr
 			'<center><img <<$set_imgh>> src="images/shared/sex/after/pillow_talk1.jpg"></center>'
 			if $sex_ev['boy_favorite'] = 'creampie' and npc_free_creampies[$boy] < 1 and sex_ev['surprise_creampie_count'] > 0  and npc_ask_creampie[$boy] > 0:
@@ -1773,15 +1770,15 @@ if $ARGS[0] = 'pc_creampie_fav1':
 				end
 			elseif $sex_ev['boy_favorite'] = 'creampie':
 				if cum_loc['vagina'] > 0:
-					'"The same as you," you smile warmly at <<$npc_firstname[$boy]>> rubbing your wet thighs together where his cum continues to leak from your pussy. "I could <i>feel</i> everything. Your cock throbbing inside me, warmth spreading through my hips, I just felt <i>full</i> when you came inside me. And it''s really really good."'
+					'"I liked it when you came inside too," you smile warmly at <<$npc_firstname[$boy]>> rubbing your wet thighs together where his cum continues to leak from your pussy. "The way your cock <i>throbbed</i> inside me, I could feel your cum filling me up. It felt so good."'
 				else
-					'"The same as you," you smile warmly at <<$npc_firstname[$boy]>> rubbing your wet thighs together where his cum was leaking from your snatch just minutes ago. "I could <i>feel</i> everything. Your cock throbbing inside me, warmth spreading through my hips, I just felt <i>full</i> when you came inside me. And it''s really really good."'
+					'"I liked it when you came inside too," you smile warmly at <<$npc_firstname[$boy]>> rubbing your wet thighs together where his cum was leaking from your snatch just minutes ago. "The way your cock <i>throbbed</i> inside me, I could feel your cum filling me up. It felt so good."'
 				end
 			else
 				if cum_loc['vagina'] > 0:
-					'"I liked it when you came inside me," you smile warmly at <<$npc_firstname[$boy]>> rubbing your wet thighs together where his cum continues to leak from your pussy. "I could <i>feel</i> everything. Your cock throbbing inside me, warmth spreading through my hips, I just felt <i>full</i> when you came inside me. And it''s really really good."'
+					'"I liked it when you came inside me," you smile warmly at <<$npc_firstname[$boy]>> rubbing your wet thighs together where his cum continues to leak from your pussy. "The way your cock <i>throbbed</i> inside me, I could feel your cum filling me up. It felt so good."'
 				else
-					'"I liked it when you came inside me," you smile warmly at <<$npc_firstname[$boy]>> rubbing your wet thighs together where his cum was leaking from your snatch just minutes ago. "I could <i>feel</i> everything. Your cock throbbing inside me, warmth spreading through my hips, I just felt <i>full</i> when you came inside me. And it''s really really good."'
+					'"I liked it when you came inside me," you smile warmly at <<$npc_firstname[$boy]>> rubbing your wet thighs together where his cum was leaking from your snatch just minutes ago. "The way your cock <i>throbbed</i> inside me, I could feel your cum filling me up. It felt so good."'
 				end
 			end
 			if sex_ev['accidental_creampie_convo'] = 0 and npc_know_bc[$boy] < 1 and (npc_know_not_bc[$boy] = 1 or sex_ev['risky_creampie'] > 0 or npc_childfree[$boy] > 0) and sex_ev['safe_day'] ! 1 and sex_ev['probably_safe_day'] ! 1:
@@ -1800,12 +1797,12 @@ if $ARGS[0] = 'pc_mouthcum_fav1':
 			'<center><img <<$set_imgh>> src="images/shared/sex/after/pillow_talk1.jpg"></center>'
 			if $sex_ev['boy_favorite'] = 'swallowing':
 				if pcs_traits['cumeater'] > 0:
-					'"The same as you," you admit with a smile. "There''s something strangely hot about gulping down a guy''s load. And it tastes good too."'
+					'"I liked it when you came in my mouth too," you admit with a smile. "There''s something strangely hot about gulping down a guy''s load. And it tastes good too."'
 				else
-					'"The same as you," you admit with a smile. "There''s something strangely hot about gulping down a guy''s load, even if I don''t like the taste. Maybe it''s just the look on your face when I swallow," you smirk mischievously.'
+					'"I liked it when you came in my mouth too," you admit with a smile. "There''s something strangely hot about gulping down a guy''s load, even if I don''t like the taste. Maybe it''s just the look on your face when I swallow," you smirk mischievously.'
 				end
 			elseif $sex_ev['boy_favorite'] = 'cum_in_mouth':
-				'"The same as you," you admit with a smile. "There''s something strangely hot about a guy pumping load after load into your mouth. Turns me on for some reason. Even though I don''t like swallowing."'
+				'"I liked it when you came in my mouth too," you admit with a smile. "There''s something strangely hot about a guy pumping load after load into your mouth. Turns me on for some reason. Even though I don''t like swallowing."'
 			else
 				'"I liked it when you came in my mouth," you smile. "There''s something strangely hot about a guy pumping load after load into your mouth. Turns me on for some reason."'
 			end
@@ -1817,9 +1814,9 @@ if $ARGS[0] = 'pc_mouthcum_fav1':
 			'<center><img <<$set_imgh>> src="images/shared/sex/after/pillow_talk1.jpg"></center>'
 				if $sex_ev['boy_favorite'] = 'swallowing':
 					if pcs_traits['cumeater'] > 0:
-						'"The same as you," you admit with a smile. "There''s something strangely hot about gulping down a guy''s load. And it tastes good too."'
+						'"I liked it when I swallowed your cum," you admit with a smile. "There''s something strangely hot about gulping down a guy''s load. And it tastes good too."'
 					else
-						'"The same as you," you admit with a smile. "There''s something strangely hot about gulping down a guy''s load, even if I don''t like the taste. Maybe it''s just the look on your face when I swallow," you smirk mischievously.'
+						'"I liked it when I swallowed your cum," you admit with a smile. "There''s something strangely hot about gulping down a guy''s load, even if I don''t like the taste. Maybe it''s just the look on your face when I swallow," you smirk mischievously.'
 					end
 					gs'sex_ev_pillow_talk', 'topic_route'
 				else

+ 2 - 0
locations/sex_ev_foreplay.qsrc

@@ -1790,6 +1790,7 @@ end
 if $ARGS[0] = 'makeout_dom3':
 	gs'arousal', 'kiss',rand(2,7), 'no_orgasm_msg', $sex_ev['prostitution_flag']
 	gs'arousal', 'hj',-rand(2,4), 'no_orgasm_msg', $sex_ev['prostitution_flag']
+	sex_ev['hj_count'] += 1
 	gs'stat'
 	if rand(0,1) = 1:
 		'<center><video autoplay loop src="images/shared/sex/foreplay/makeout2.mp4"></video></center>'
@@ -1810,6 +1811,7 @@ if $ARGS[0] = 'handjob_dom1':
 		gs'arousal', 'hj',rand(1,4), 'no_orgasm_msg', $sex_ev['prostitution_flag']
 		gs'stat'
 		$sex_ev['position'] = 'handjob'
+		sex_ev['hj_count'] += 1
 		cla & *clr
 		'<center><video autoplay loop src="images/shared/sex/handjob/hj2.mp4"></video></center>'
 		if sex_ev['foreplay_change'] >= 1:

+ 9 - 4
locations/sex_ev_leave.qsrc

@@ -107,9 +107,9 @@ end
 
 if $ARGS[0] = 'break_up':
 	if $npc_rel_type[$boy] = 'fuckbuddy':
-		gs 'lover', 'remove fuckbuddy', $boy
+		gs 'lover', 'remove_fuckbuddy', $boy
 	elseif $npc_rel_type[$boy] = 'sugar_daddy':
-		gs 'lover', 'remove sugardaddy', $boy
+		gs 'lover', 'remove_sugar_daddy', $boy
 	else
 		gs 'lover', 'remove', $boy
 	end
@@ -117,13 +117,18 @@ if $ARGS[0] = 'break_up':
 end
 
 if $ARGS[0] = 'fuckbuddy_add':
-	gs 'lover', 'add fuckbuddy', $boy
+	gs 'lover', 'add_fuckbuddy', $boy
 	npc_fuckbuddy[$boy] = 1
 	npc_no_booty_call[$boy] = daystart
 end
 
 if $ARGS[0] = 'sugar_daddy_add':
-	if $npc_rel_type[$boy] ! 'fuckbuddy': gs 'sex_ev_leave', 'fuckbuddy_add'
+	if $npc_rel_type[$boy] ! 'fuckbuddy':
+		gs 'lover', 'add_sugar_daddy', $boy
+		npc_fuckbuddy[$boy] = 1
+		npc_no_booty_call[$boy] = daystart
+		sex_ev['sugar_daddy_count'] += 1
+	end
 	npc_sugar_daddy_price[$boy] = sex_ev['sugar_daddy_offer'] * 100
 	if $npc_rel_type[$boy] ! 'sugar_daddy':
 		$npc_rel_type[$boy] = 'sugar_daddy'

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

+ 14 - 11
locations/sex_ev_pillow_talk.qsrc

@@ -8,7 +8,7 @@ if $ARGS[0] = 'start':
 	if sex_ev['virgin'] = 1 and sex_ev['virgin_talk'] = 0 and sex_ev['fuck_count'] > 0:
 		gs'sex_ev_virgin', 'first_time_talk'
 	else
-		gs'sex_ev_pillow_talk', 'topic_route'
+		gs'sex_ev_pillow_talk', 'topics'
 	end
 	gs'sex_ev_after', 'sore_pussy_msg'
 end
@@ -25,10 +25,12 @@ if $ARGS[0] = 'stop_talk':
 end
 
 if $ARGS[0] = 'topic_route':
-	if sex_ev['sex_over'] = 1:
-		gs'sex_ev_pillow_talk', 'topics'
-	else
-		gs'sex_ev_sex', 'break_time'
+	act'Keep talking':
+		if sex_ev['sex_over'] = 1:
+			gs'sex_ev_pillow_talk', 'topics'
+		else
+			gs'sex_ev_sex', 'break_time'
+		end
 	end
 end
 
@@ -47,6 +49,7 @@ if $ARGS[0] = 'pillow_picture1':
 end
 
 if $ARGS[0] = 'topics':
+	cla
 	gs'sex_ev_pillow_talk', 'stop_talk'
 	if sex_ev['unique_npc'] = 1:
 		gs 'sex_ev_pillow_talk_<<$boy>>', 'topic_menu'
@@ -1161,10 +1164,10 @@ if $ARGS[0] = 'love_going_bareback':
 			'"Yeah?" he grins back.'
 			act'Feels good':
 				cla & *nl
-				'"It just feels good," you say with deep satisfaction. "Condoms are all latexy. Bareback is better."'
+				'"It feels good so good to do it raw," you say with deep satisfaction. "Condoms get in the way. Bareback is better."'
 				if npc_no_condoms[$boy] > 0:
 					if npc_know_bc[$boy] = 1:
-						'"Birth control is awesome..." <<$npc_firstname[$boy]>> grins lewdly.'
+						'"Birth control is awesome..." <<$npc_firstname[$boy]>> grins.'
 					else
 						'"You got that right," <<$npc_firstname[$boy]>> says.'
 					end
@@ -1178,9 +1181,9 @@ if $ARGS[0] = 'love_going_bareback':
 			
 			act'Feels natural':
 				cla & *nl
-				'"It feels... natural," you say with deep satisfaction. "Your cock in my pussy and nothing in-between. Using condoms feels so artificial. Bareback feels <i>right</i>."'
+				'"Condoms feel... <i>latexy</i>," you say, scrunching your nose in disgust. "Artificial. It''s better when it''s just your cock in my pussy and nothing in-between. It feels <i>right</i>."'
 				if npc_no_condoms[$boy] > 0:
-					'"That''s why I never use them," <<$npc_firstname[$boy]>> says smugly. "They''re bad for the environment."'
+					'"That''s why I never use condoms," <<$npc_firstname[$boy]>> says smugly. "They''re bad for the environment."'
 				else
 					if npc_humor[$boy] = 1:
 						'"Well they <i>are</i> technically artificial," he chuckles to himself. "I don''t think latex is a commonly occurring material in the wild."'
@@ -1487,9 +1490,9 @@ if $ARGS[0] = 'on_birth_control':
 			cla & *nl
 			if npc_know_not_bc[$boy] = 1:
 				if tabletkishot > 0:
-					'"I forgot, I haven''t told you yet," you say. "I''m on the shot now. I''ll be fine."'
+					'"Oops, I forgot I haven''t told you yet," you say. "I''m on the shot now. I''ll be fine."'
 				elseif birth_control['think_safe'] = 1:
-					'"I forgot, I haven''t told you yet," you say. "I''m on the pill now. I''ll be fine."'
+					'"Oops, I forgot I haven''t told you yet," you say. "I''m on the pill now. I''ll be fine."'
 				end
 			else
 				if tabletkishot > 0:

+ 1 - 1
locations/sex_ev_reactions.qsrc

@@ -786,7 +786,7 @@ if $ARGS[0] = 'facial_happy_reacts':
 			sex_ev['react'] = 1
 			$sex_ev['facial_pic']
 			'"So, how do I look?" you ask, with a cum glazed smile.'
-			if npc_abusive[$boy] > 0 and rand(0,1) = 1:
+			if npc_rough[$boy] > 0 and rand(0,1) = 1:
 				'"Like a walking cumdumpster," <<$npc_firstname[$boy]>> snickers.'
 				act'Offended':
 					cla & *clr

+ 22 - 6
locations/sex_ev_reactions_creampie.qsrc

@@ -3045,16 +3045,32 @@ if $ARGS[0] = 'creampie_accident_birth_control':
 					'The look on his face sends you into uncontrollable giggles and you relent.'
 					'"I''m kidding," you laugh. I''m on the <<$sex_ev[''bc_type'']>>. I won''t get pregnant."'
 					if npc_childfree[$boy] > 0:
-						'"That''s not funny," <<$npc_firstname[$boy]>> scowls.'
+						gs 'npc_relationship', 'modify', $boy, 'dislike'
+						'"That''s not funny!" <<$npc_firstname[$boy]>> scowls.'
 					else
-						
+						'"That''s not funny!" <<$npc_firstname[$boy]>> says, though you can see his own smile breaking through.'
 					end
+					gs'sex_ev_cum', 'what_now'
 				end
 				
+				!!{
 				act'Let him sweat':
-				
-				end
-				gs'sex_ev_cum', 'what_now'
+					cla & *nl
+					!!if npc_childfree[$boy] > 0:
+						'<<$npc_firstname[$boy]>> gulps, looking pale.'
+						'"You''re uh, you''re gonna get a morning after pill right?"'
+						act'Noncommittal':
+						
+						end
+						
+						act'What if ':
+							
+						end
+					!!else
+					!!	'"That''s not funny!" <<$npc_firstname[$boy]>> says, though you can see his own smile breaking through.'
+					!!end
+					gs'sex_ev_cum', 'what_now'
+				end}
 			end
 		elseif $sex_ev['last_cum'] = 'broken_condom':
 			'"Fuck," <<$npc_firstname[$boy]>> breathes, looking back and forth between the broken rubber around his cock and your pussy. "It''s a good thing you''re on birth control."'
@@ -3198,7 +3214,7 @@ if $ARGS[0] = 'creampie_freakout':
 				act'Calm down':
 					cla & *clr
 					$sex_ev['bed_room']
-					'Trying to focus on his words, you force yoruself to take deep, slow breaths, calming down while <<$npc_firstname[$boy]>> tries to reassure you.'
+					'Trying to focus on his words, you force yourself to take deep, slow breaths, calming down while <<$npc_firstname[$boy]>> tries to reassure you.'
 					'<i>He''s right, it''ll be okay. You''re on birth control and he came inside you so it''s okay! He''s not going to have an STD. Can''t have one! Because if he did that would... Nope! I''m not gonna think about that! Because I''m not getting an STD tonight! Everything is going to be fine! <b>It''s going to be fine!</b></i>'
 					*nl
 					'After running through this thought process several more times accompanied by many more breaths, you finally begin to calm down.'

+ 1 - 1
locations/sex_ev_sex.qsrc

@@ -7,7 +7,7 @@ if $ARGS[0] = 'inserted_img':
 		elseif $sex_ev['position'] = 'doggy':
 			'<center><img <<$set_imgh>> src="images/shared/sex/vag/doggy/2.jpg"></center>'
 		elseif $sex_ev['position'] = 'cowgirl':
-			'<center><img <<$set_imgh>> src="images/shared/sex/vag/cowgirl/1.jpg"></center>'
+			'<center><img <<$set_imgh>> src="images/shared/sex/vag/cowgirl/3.jpg"></center>'
 		end
 	else
 		$sex_ev['bed_room']

+ 1 - 1
locations/sex_ev_shower.qsrc

@@ -116,7 +116,7 @@ if $ARGS[0] = 'after_alone':
 	dynamic $showerdin
 	sex_ev['start_shower'] = 1
 	gs 'stat'
-	'You slip into the bathroom and turn on the faucet. Hot water comes pouring out and you gratefully step under, rinsing the post-sex sweat from your body.'
+	'You slip into the bathroom and turn on the faucet. Hot water comes pouring out and you gratefully step under, rinsing the post-sex feeling from your body.'
 	act'Finish':
 		cla & *clr
 		$sex_ev['bath_room']

+ 6 - 0
locations/sex_ev_stats.qsrc

@@ -61,6 +61,12 @@ if $ARGS[0] = 'save_stats':
 	!! number of times you have initiated or responded to a booty call
 	npc_bootycalls[$boy] += 1
 	
+	!! number of times you have had jerked off an npc
+	if sex_ev['hj_count'] > 0: npc_hj_count[$boy] += 1
+	
+	!! number of times you have had blown an npc
+	if sex_ev['bj_count'] > 0: npc_bj_count[$boy] += 1
+	
 	!! number of times you have had sex with an npc
 	if sex_ev['fuck'] > 0 or sex_ev['fuck_count'] > 0: npc_fuck_times[$boy] += 1
 	

+ 37 - 35
locations/sex_ev_talk.qsrc

@@ -253,17 +253,17 @@ if $ARGS[0] = 'childfree_accidental_creampie1':
 				if $sex_ev['convo'] = 'used_all_condoms':
 					'"It''s a safe day," you nod. "I should be okay. This time anyways," you smile teasingly.'
 				else
-					'"It''s a safe day, so I should be okay," you smile teasingly.'
+					'"It''s a safe day, so I should be okay," you smile.'
 				end
 				gs'sex_ev_pillow_talk', 'topic_route'
 			end
 		elseif stat['probably_safe_day'] = 1:
-			act'I think so':
+			act'I should be okay':
 				cla & *nl
 				if $sex_ev['convo'] = 'used_all_condoms':
 					'"I think so," you say. "It <i>should</i> be a safe day for me as long as I''m keeping track of my cycle correctly..."'
 				else
-					'"I think so," you say. "It <i>should</i> be a safe day for me as long as I''m keeping track of my cycle correctly..."'
+					'"It <i>should</i> be a safe day for me as long as I''m keeping track of my cycle correctly..."'
 				end
 				gs'sex_ev_pillow_talk', 'topic_route'
 			end
@@ -280,7 +280,7 @@ if $ARGS[0] = 'childfree_accidental_creampie1':
 			
 			act'Need plan B':
 				cla & *nl
-				'"Not really," you grimace. "I''m definitely going to need some plan B tomorrow."'
+				'"I''ll get some plan B tomorrow," you say.'
 				if npc_childfree[$boy] = 1 or npc_caretaker[$boy] = 1:
 					gs'sex_ev_talk', 'morning_after_money'
 				else
@@ -290,7 +290,7 @@ if $ARGS[0] = 'childfree_accidental_creampie1':
 			
 			act'Need plan B (safety)':
 				cla & *nl
-				'"I''ll get some plan B tomorrow just to be safe," you say.'
+				'"I should be okay but I''ll get some plan B tomorrow just to be safe," you say.'
 				if npc_childfree[$boy] = 1 or npc_caretaker[$boy] = 1:
 					gs'sex_ev_talk', 'morning_after_money'
 				else
@@ -419,39 +419,41 @@ if $ARGS[0] = 'morning_after_money':
 end
 
 if $ARGS[0] = 'pc_have_morning_after':
-	if mc_inventory['morning_after_pill'] = 0:
-		act'I''ll buy a morning after pill':
-			sex_ev['plan_b_buy'] = 1
-			cla & *nl
-			if sex_ev['sleepover'] = 0:
-				sex_ev['ma_pill_tomorrow'] = 1
-				if npc_pay_for_ma_pill[$boy] = 1:
-					'"I''ll get a morning after pill ' + iif(sex_ev['sleepover'] = 0, 'tomorrow', 'later') + '," you murmur. "You''re paying for it, right?"'
-					'"Yeah," he replies. "I''ll give you the money when we''re done."'
-				else
-					'"It''s okay," you murmur reassuringly. "I''ll get a morning after pill ' + iif(sex_ev['sleepover'] = 0, 'tomorrow. No big deal."', 'later today. No big deal."')
-				end
-			else
-				if npc_pay_for_ma_pill[$boy] = 1:
-					'"I''ll get a morning after pill ' + iif(sex_ev['sleepover'] = 0, 'tomorrow', 'later') + '," you murmur. "You''re paying for it, right?"'
-					'"Yeah," he replies. "I''ll give you the money when we''re done."'
+	if birth_control['think_safe'] = 0:
+		if mc_inventory['morning_after_pill'] = 0:
+			act'I''ll buy a morning after pill':
+				sex_ev['plan_b_buy'] = 1
+				cla & *nl
+				if sex_ev['sleepover'] = 0:
+					sex_ev['ma_pill_tomorrow'] = 1
+					if npc_pay_for_ma_pill[$boy] = 1:
+						'"I''ll get a morning after pill ' + iif(sex_ev['sleepover'] = 0, 'tomorrow', 'later') + '," you murmur. "You''re paying for it, right?"'
+						'"Yeah," he replies. "I''ll give you the money when we''re done."'
+					else
+						'"It''s okay," you murmur reassuringly. "I''ll get a morning after pill ' + iif(sex_ev['sleepover'] = 0, 'tomorrow. No big deal."', 'later today. No big deal."')
+					end
 				else
-					'"It''s okay," you murmur reassuringly. "I''ll get a morning after pill ' + iif(sex_ev['sleepover'] = 0, 'tomorrow', 'later') + '. No big deal."'
+					if npc_pay_for_ma_pill[$boy] = 1:
+						'"I''ll get a morning after pill ' + iif(sex_ev['sleepover'] = 0, 'tomorrow', 'later') + '," you murmur. "You''re paying for it, right?"'
+						'"Yeah," he replies. "I''ll give you the money when we''re done."'
+					else
+						'"It''s okay," you murmur reassuringly. "I''ll get a morning after pill ' + iif(sex_ev['sleepover'] = 0, 'tomorrow', 'later') + '. No big deal."'
+					end
 				end
+				'He nods, seeming to relax a bit.'
+				gs'sex_ev_pillow_talk', 'topic_route'
 			end
-			'He nods, seeming to relax a bit.'
-			gs'sex_ev_pillow_talk', 'topic_route'
-		end
-	else
-		act'I''ve got a morning after pill':
-			sex_ev['ma_pill'] = 1
-			cla & *nl
-			'"It''s okay," you smile reassuringly. "I have a morning after pill. It''s no big deal."'
-			act'Continue':cla & gs'sex_ev_pillow_talk', 'topic_route'
-			act'Take it now':
+		else
+			act'I''ve got a morning after pill':
+				sex_ev['ma_pill'] = 1
 				cla & *nl
-				'"In fact..." you say, reaching down for your purse.'
-				gs'sex_ev_after', 'plan_b2'
+				'"It''s okay," you smile reassuringly. "I have a morning after pill. It''s no big deal."'
+				act'Continue':cla & gs'sex_ev_pillow_talk', 'topic_route'
+				act'Take it now':
+					cla & *nl
+					'"In fact..." you say, reaching down for your purse.'
+					gs'sex_ev_after', 'plan_b2'
+				end
 			end
 		end
 	end
@@ -1124,7 +1126,7 @@ if $ARGS[0] = 'bareback_pill_expense':
 	act'Too expensive':
 		cla & *clr
 		'<center><img <<$set_imgh>> src="images/shared/sex/after/pillow_talk3.jpg"></center>'
-		'"That pill costs money you know," you say irritatedly. "I''m not willing to pay for that every time you forget to pull out."'
+		'"That pill costs money you know," you say irritably. "I''m not willing to pay for that every time you forget to pull out."'
 		if npc_finance[$boy] >= 1 and ((npc_selfish[$boy] < 1 and rand(1,3) = 3) or (npc_finance[$boy] = 2 and npc_no_condoms[$boy] > 0 and npc_selfish[$boy] = 1)):
 			'"How about I pay for it then?" <<$npc_firstname[$boy]>> asks. "Any time you need a morning after pill because of me, I''ll give you money to pay for it."'
 			'He grabs his wallet and pulls out a wad of notes.'

+ 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:

+ 67 - 34
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
@@ -1508,18 +1541,18 @@ if enable_show_status = 0:
 		if cheatNoEat = 0: $stat_extra_msg += '<BR><b><<$pcs_energy>></b>'
 		if cheatNoDrink = 0: $stat_extra_msg += '<BR><b><<$pcs_hydra>></b>'
 		if cheatNoSleep = 0: $stat_extra_msg += '<BR><b><<$pcs_sleep>></b>'
-	elseif Enable_scalepic = 2:
-		$stat_extra_msg += '<font color="<<$fcolor>>"><TABLE cellpadding="1" cellspacing="0" width="300">'
-		$stat_extra_msg += '<TR><TD width="85%">'+func('indiktab', '2', pcs_horny, pcs_horny)+'</TD><TD>&nbsp;Arousal</TD></TR>'
-		$stat_extra_msg += '<TR><TD width="85%">'+func('indiktab', '2', pain['total'], pain['total'], pain['damage'])+'</TD><TD>&nbsp;Pain</TD></TR>'
-		$stat_extra_msg += '<TR><TD width="85%">'+func('indiktab', '1', pcs_health * 100 / healthmax, pcs_health)+'</TD><TD>&nbsp;Health</TD></TR>'
-		if $start_type[1] ! 'nomagic': $stat_extra_msg += '<TR><TD width="85%">'+func('indiktab', '1', pcs_mana * 100 / manamax, pcs_mana)+'</TD><TD>&nbsp;Mana</TD></TR>'
-		$stat_extra_msg += '<TR><TD width="85%">'+func('indiktab', '1', pcs_willpwr * 100 / willpowermax, pcs_willpwr)+'</TD><TD>&nbsp;Willpower</TD></TR>'
-		$stat_extra_msg += '<TR><TD width="85%">'+func('indiktab', '1', pcs_stam * 100 / stammax, pcs_stam)+'</TD><TD>&nbsp;Stamina</TD></TR>'
-		$stat_extra_msg += '<TR><TD width="85%">'+func('indiktab', '1', pcs_mood, pcs_mood)+'</TD><TD>&nbsp;Mood</TD></TR>'
-		if cheatNoEat = 0: $stat_extra_msg += '<TR><TD width="85%">'+func('indiktab', '1', pcs_energy, pcs_energy)+'</TD><TD>&nbsp;Hunger</TD></TR>'
-		if cheatNoDrink = 0: $stat_extra_msg += '<TR><TD width="85%">'+func('indiktab', '1', pcs_hydra, pcs_hydra)+'</TD><TD>&nbsp;Thirst</TD></TR>'
-		if cheatNoSleep = 0: $stat_extra_msg += '<TR><TD width="85%">'+func('indiktab', '1', pcs_sleep, pcs_sleep)+'</TD><TD>&nbsp;Sleep</TD></TR>'
+	elseif Enable_scalepic = 0:
+		$stat_extra_msg += '<font color="<<$fcolor>>"><TABLE cellpadding="1" cellspacing="0" width="200">'
+		$stat_extra_msg += '<TR><TD>'+func('indiktab', 2, pcs_horny, pcs_horny)+'</TD><TD>&nbsp;Arousal</TD></TR>'
+		$stat_extra_msg += '<TR><TD>'+func('indiktab', 2, pain['total'], pain['total'], pain['damage'])+'</TD><TD>&nbsp;Pain</TD></TR>'
+		$stat_extra_msg += '<TR><TD>'+func('indiktab', 1, pcs_health * 100 / healthmax, pcs_health)+'</TD><TD>&nbsp;Health</TD></TR>'
+		if $start_type[1] ! 'nomagic': $stat_extra_msg += '<TR><TD>'+func('indiktab', 1, pcs_mana * 100 / manamax, pcs_mana)+'</TD><TD>&nbsp;Mana</TD></TR>'
+		$stat_extra_msg += '<TR><TD>'+func('indiktab', 1, pcs_willpwr * 100 / willpowermax, pcs_willpwr)+'</TD><TD>&nbsp;Willpower</TD></TR>'
+		$stat_extra_msg += '<TR><TD>'+func('indiktab', 1, pcs_stam * 100 / stammax, pcs_stam)+'</TD><TD>&nbsp;Stamina</TD></TR>'
+		$stat_extra_msg += '<TR><TD>'+func('indiktab', 1, pcs_mood, pcs_mood)+'</TD><TD>&nbsp;Mood</TD></TR>'
+		if cheatNoEat = 0: $stat_extra_msg += '<TR><TD>'+func('indiktab', 1, pcs_energy, pcs_energy)+'</TD><TD>&nbsp;Hunger</TD></TR>'
+		if cheatNoDrink = 0: $stat_extra_msg += '<TR><TD>'+func('indiktab', 1, pcs_hydra, pcs_hydra)+'</TD><TD>&nbsp;Thirst</TD></TR>'
+		if cheatNoSleep = 0: $stat_extra_msg += '<TR><TD>'+func('indiktab', 1, pcs_sleep, pcs_sleep)+'</TD><TD>&nbsp;Sleep</TD></TR>'
 		$stat_extra_msg += '</TABLE></font>'
 	else
 		gs 'indik', '2', pcs_horny, pcs_horny
@@ -1571,20 +1604,20 @@ else
 	$stat_tool_msg += '<a href="exec:Enable_showattr = 0 & gs ''$menu_obnovit''">▲Attributes</a>'
 	!skip if this is first message
 	if $stat_extra_msg ! '': $stat_extra_msg += '<br><a href="exec:Enable_showattr = 0 & gs ''$menu_obnovit''">▲Attributes:</a>'
-	if Enable_scalepic = 2:
-		$stat_extra_msg += '<font color="<<$fcolor>>"><TABLE cellpadding="1" cellspacing="0" width="300">'
-		$stat_extra_msg += '<TR><TD width="85%">'+func('indiktab', '1', 100 - pcs_inhib, 100 - pcs_inhib)+'</TD><TD>&nbsp;Inhibition</TD></TR>'
-		$stat_extra_msg += '<TR><TD width="85%">'+func('indiktab', '1', pcs_stren, pcs_stren)+'</TD><TD>&nbsp;Strength</TD></TR>'
-		$stat_extra_msg += '<TR><TD width="85%">'+func('indiktab', '1', pcs_agil, pcs_agil)+'</TD><TD>&nbsp;Agility</TD></TR>'
-		$stat_extra_msg += '<TR><TD width="85%">'+func('indiktab', '1', pcs_vital, pcs_vital)+'</TD><TD>&nbsp;Endurance</TD></TR>'
-		$stat_extra_msg += '<TR><TD width="85%">'+func('indiktab', '1', pcs_intel, pcs_intel)+'</TD><TD>&nbsp;Intelligence</TD></TR>'
-		$stat_extra_msg += '<TR><TD width="85%">'+func('indiktab', '1', pcs_sprt, pcs_sprt)+'</TD><TD>&nbsp;Spirit</TD></TR>'
-		$stat_extra_msg += '<TR><TD width="85%">'+func('indiktab', '1', pcs_react, pcs_react)+'</TD><TD>&nbsp;Reaction</TD></TR>'
-		$stat_extra_msg += '<TR><TD width="85%">'+func('indiktab', '1', pcs_chrsm, pcs_chrsm)+'</TD><TD>&nbsp;Charisma</TD></TR>'
-		$stat_extra_msg += '<TR><TD width="85%">'+func('indiktab', '1', pcs_prcptn, pcs_prcptn)+'</TD><TD>&nbsp;Perception</TD></TR>'
-		if $start_type[1] ! 'nomagic': $stat_extra_msg += '<TR><TD width="85%">'+func('indiktab', '1', pcs_magik, pcs_magik)+'</TD><TD>&nbsp;Magic</TD></TR>'
-		if succubusflag = 1: $stat_extra_msg += '<TR><TD width="85%">'+func('indiktab', '1', sucexcess, sucexcess)+'</TD><TD>&nbsp;Succubus Energy</TD></TR>'
-		$stat_extra_msg += '<TR><TD width="85%">'+func('indiktab', '1', pcs_apprnc / 2, pcs_apprnc)+'</TD><TD>&nbsp;Attractiveness</TD></TR>'
+	if Enable_scalepic = 0:
+		$stat_extra_msg += '<font color="<<$fcolor>>"><TABLE cellpadding="1" cellspacing="0" width="200">'
+		$stat_extra_msg += '<TR><TD>'+func('indiktab', 1, 100 - pcs_inhib, 100 - pcs_inhib)+'</TD><TD>&nbsp;Inhibition</TD></TR>'
+		$stat_extra_msg += '<TR><TD>'+func('indiktab', 1, pcs_stren, pcs_stren)+'</TD><TD>&nbsp;Strength</TD></TR>'
+		$stat_extra_msg += '<TR><TD>'+func('indiktab', 1, pcs_agil, pcs_agil)+'</TD><TD>&nbsp;Agility</TD></TR>'
+		$stat_extra_msg += '<TR><TD>'+func('indiktab', 1, pcs_vital, pcs_vital)+'</TD><TD>&nbsp;Endurance</TD></TR>'
+		$stat_extra_msg += '<TR><TD>'+func('indiktab', 1, pcs_intel, pcs_intel)+'</TD><TD>&nbsp;Intelligence</TD></TR>'
+		$stat_extra_msg += '<TR><TD>'+func('indiktab', 1, pcs_sprt, pcs_sprt)+'</TD><TD>&nbsp;Spirit</TD></TR>'
+		$stat_extra_msg += '<TR><TD>'+func('indiktab', 1, pcs_react, pcs_react)+'</TD><TD>&nbsp;Reaction</TD></TR>'
+		$stat_extra_msg += '<TR><TD>'+func('indiktab', 1, pcs_chrsm, pcs_chrsm)+'</TD><TD>&nbsp;Charisma</TD></TR>'
+		$stat_extra_msg += '<TR><TD>'+func('indiktab', 1, pcs_prcptn, pcs_prcptn)+'</TD><TD>&nbsp;Perception</TD></TR>'
+		if $start_type[1] ! 'nomagic': $stat_extra_msg += '<TR><TD>'+func('indiktab', 1, pcs_magik, pcs_magik)+'</TD><TD>&nbsp;Magic</TD></TR>'
+		if succubusflag = 1: $stat_extra_msg += '<TR><TD>'+func('indiktab', 1, sucexcess, sucexcess)+'</TD><TD>&nbsp;Succubus Energy</TD></TR>'
+		$stat_extra_msg += '<TR><TD>'+func('indiktab', 1, pcs_apprnc / 2, pcs_apprnc)+'</TD><TD>&nbsp;Attractiveness</TD></TR>'
 		$stat_extra_msg += '</TABLE></font>'
 	else
 		gs 'indik', '1', 100 - pcs_inhib, 100 - pcs_inhib

+ 6 - 0
locations/stwork.qsrc

@@ -91,6 +91,12 @@ if $ARGS[0] = 'start':
 					if deodorant_on = 1: gs 'sweat', 'remove_deo' & '<br>Your deodorant gets washed away in the shower.'
 				end
 				if pcs_makeup < 4:
+					if mc_inventory['cosmetics'] < 3:
+						*nl
+						'Once showered, you realize you don''t have enough makeup to go on stage.'
+						act 'Go back to the dressing room':gt 'stwork', 'start'
+						exit
+					end
 					gs 'exp_gain', 'makupskl', rand(1,3)
 					mc_inventory['cosmetics'] -= 3
 					vidageday -= 1

+ 5 - 5
locations/therapist.qsrc

@@ -2084,17 +2084,17 @@ if $ARGS[0] = 'hypnoRandom':
 			'<center><video autoplay loop src="images/locations/pavlovsk/clinic/therapist/sex/schoolBlow<<rand(3,4)>>.mp4"></video></center>'
 			'As instructed, you use your mouth to clean off <i>Master''s</i> cock.'
 
-			if therapist_key = 0:
+			if therapistQW['hotel_key'] = 0:
 				act 'Continue':
 					*clr & cla
 					'<center><img <<$set_imgh>> src="images/locations/pavlovsk/clinic/therapist/sittingClothed.jpg"></center>'
-					therapist_key = 1
+					therapistQW['hotel_key'] = 1
 					'You finish getting dressed and the doctor hands you something. It''s a keychain with a single key, a tiny bunny plush, and a tag for the Hotel by Pavlovsk market with a room number on it. "I want you to show up to this room every Saturday night from 20:00. There you will find me, waiting for you. Once a week, you will be my wife. You will do whatever I ask of you and you will do it without question. This will all be automatic for you. You will not be under hypnosis for this and you will do it because you WANT to do it" he says. "Soon, you will be my wife for real and when that day comes, you must know what is expected of you, Understand?" he states.'
 
 					act 'Yes, Master':
 						*clr & cla
 						'<center><img <<$set_imgh>> src="images/locations/pavlovsk/clinic/therapist/sittingClothed.jpg"></center>'
-						therapist_key = 2
+						therapistQW['hotel_key'] = 2
 						'"I understand, Master, I will be your wife every Saturday night and into Sunday morning"'
 						'"Thats my girl, Heres the key, See you soon" he then places a kiss on your lips. "But remember, if you come to the clinic, you will go under upon seeing me and wont remember anything" You nod as you walk out the door.'
 						act 'Continue':	gt 'therapist', 'hypnoEnd'
@@ -2117,12 +2117,12 @@ if $ARGS[0] = 'hypnoRandom':
 					end
 				end
 
-			elseif therapist_key = 1:
+			elseif therapistQW['hotel_key'] = 1:
 				'You finish getting dressed and the doctor asks you something that you think you have heard before, "I want you to show up to this room every Saturday night. There you will find me, waiting for you. Once a week, you will be my wife. You will do whatever I ask of you and you will do it without question. This will all be automatic for you. You will not be under hypnosis for this and you will do it because you WANT to do it" he says. "Soon, you will be my wife for real and when that day comes, you must know what is expected of you, Understand?" he states.'
 				act 'Yes, Master':
 					*clr & cla
 					'<center><img <<$set_imgh>> src="images/locations/pavlovsk/clinic/therapist/sittingClothed.jpg"></center>'
-					therapist_key = 2
+					therapistQW['hotel_key'] = 2
 					'"I understand, Master, I will be your wife every Saturday night and into Sunday morning"'
 					'"Thats my girl, Heres the key, See you soon" he then places a kiss on your lips. "But remember, if you come to the clinic, you will go under upon seeing me and wont remember anything" You nod as you walk out the door.'
 

+ 235 - 11
locations/therapist_hotel.qsrc

@@ -9,11 +9,10 @@ if $ARGS[0] = 'start':
 	menu_off = 0
 	$location_type = 'private_indoors'
 	minut += 5
-
 	gs 'stat'
+
 	'<center><img <<$set_imgh>> src="images/characters/pavlovsk/resident/therapist/room.jpg"></center>'
 	'Upon entering the room you hear the shower running which gives you a moment to look around the large suite. To start off, it looks lived in. There is a small kitchen in the corner with a mini fridge and a small portable stove with a tea kettle on it letting off some steam, letting the owner of the room know the water is soon to be ready. There is a laptop, open, on the desk with lots of papers lying around it, as if someone is transcribing them into digital form. There is one book on the bed, open and face down, as if someone was reading it.'
-
 	'Suddenly the water in the shower stopped!'
 
 	act 'Wait': gt 'therapist_hotel', 'event_switch'
@@ -34,8 +33,10 @@ if $ARGS[0] = 'event_switch':
 	elseif therapistQW['hotel_visits'] = 2:
 		gt 'therapist_hotel', 'event3'
 	else
-		if therapistQW['hotel_submit'] >= 4:
+		if therapistQW['hotel_submit'] >= 4 and therapistQW['hotel_submit'] < 10:
 			gt 'therapist_hotel', 'event5_submit'
+		elseif therapistQW['hotel_submit'] = 10:
+			gt 'therapist_hotel', 'event6_submit'
 !!		elseif therapistQW['hotel_hypno_study'] >= 4:
 !!			gt ?????
 		else
@@ -308,10 +309,6 @@ if $ARGS[0] = 'event3':
 	act 'Yes Sir':
 		*clr & cla
 		minut += 2
-		'"Good" he says and snaps his fingers again and you come out of your trance. "My dear, thank you for coming over, I really hope you had a good day" he says and gives you a kiss, which you return. "Sorry about being a bad host. This place is a mess, I''ve not had time to clean up" he says and your mind triggers and you remove your clothes, fold them up nicely, place then on the bed, then begin to clean up the hotel room.'
-
-		'<center><img <<$set_imgh>> src="images/characters/pavlovsk/resident/therapist/hotel_clean.jpg"></center>'
-
 		$lastwornclothingtype['therapist'] = $clothingworntype
 		lastwornclothingnumber['therapist'] = clothingwornnumber
 		$lastwornpantytype['therapist'] = $pantyworntype
@@ -319,6 +316,10 @@ if $ARGS[0] = 'event3':
 		$lastwornbratype['therapist'] = $braworntype
 		lastwornbranumber['therapist'] = brawornnumber
 		gs 'clothing', 'strip'
+		gs 'stat'
+
+		'<center><img <<$set_imgh>> src="images/characters/pavlovsk/resident/therapist/hotel_clean.jpg"></center>'
+		'"Good" he says and snaps his fingers again and you come out of your trance. "My dear, thank you for coming over, I really hope you had a good day" he says and gives you a kiss, which you return. "Sorry about being a bad host. This place is a mess, I''ve not had time to clean up" he says and your mind triggers and you remove your clothes, fold them up nicely, place then on the bed, then begin to clean up the hotel room.'
 
 		if func('pcs_has_attr', 'OR', 'body_tits_big', 'body_tits_huge'):
 			'You sense his eyes on you the whole time. "I love watching your body move" he says and this compliment makes you feel happy. You feel like you might love this man, and he''s helped you so much with all your issues. "Thank you, I like to keep my body in healthy shape, I want you to be happy when looking at me" You tell him.'
@@ -330,6 +331,7 @@ if $ARGS[0] = 'event3':
 			*clr & cla
 			gs 'arousal', 'cuni', 35, 'sub'
 			gs 'stat'
+
 			'<center><img <<$set_imgh>> src="images/shared/sex/kuni/kuni.jpg"></center>'
 			'You finish cleaning up the hotel room and when you pick something up, you feel his hands on your bottom. He feels up your rear. This is what you want him to do, but you don''t move. It''s not long before he kneels down behind you and you feel his lips on your pussy and starts to make out with your lower hole. This causes you to moan out softly as he eats you out. This lasts for a few minutes before he pulls back and pushes you onto the bed and is quickly on top of you again.'
 
@@ -456,7 +458,6 @@ if $ARGS[0] = 'event4':
 				gs 'clothing', 'wear', $lastwornclothingtype['therapist'], lastwornclothingnumber['therapist']
 				gs 'panties', 'wear', $lastwornpantytype['therapist'], lastwornpantynumber['therapist']
 				gs 'bras', 'wear', $lastwornbratype['therapist'], lastwornbranumber['therapist']
-
 				gs 'stat'
 
 				'<center><video autoplay loop <<$set_imgh>> src="images/pc/activities/misc/dress_<<rand(1, 2)>>.mp4"></video></center>'
@@ -520,11 +521,11 @@ if $ARGS[0] = 'event5_submit':
 	lastwornbranumber['therapist'] = brawornnumber
 	gs 'clothing', 'strip'
 
+	'<center><img <<$set_imgh>> src="images/characters/pavlovsk/resident/therapist/hotel_undressed_knee.jpg"></center>'
 	'After another Saturday night in the hotel room, you feel flushed when you see your therapist. Your heart feels like it''s pounding a million miles a second. When he stands up in his robe, you see his cock and your mind goes blank. "Wife, welcome back." He walks up to you and kisses your lips and squeezes your chest. "Now, every time you come into this room, you will no longer enter a trance and you will stay, as my lover, you will be wet and ready as you want me but will wait for me to start anything. You will also strip down to nothing and will not want to wear clothing while you are here with me." He commands. "When I say the phrase, ‘My dear’, you will do whatever I command you while you are awake. Do you understand?" he asks, planting more triggers in your mind.'
 	'"Yes, sir." you respond.'
 	'"All right, now undress and present yourself to me."'
 	*nl
-	'<center><img <<$set_imgh>> src="images/characters/pavlovsk/resident/therapist/hotel_undressed_knee.jpg"></center>'
 	'You strip down to your birthday suit and turn to show him your body. He pulls you into his lap and moves a hand over your legs before moving it between your legs, feeling you up. "Now, wake up and be my woman."'
 	*nl
 	*nl
@@ -551,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
@@ -590,8 +591,8 @@ if $ARGS[0] = 'event5_submit':
 						minut += 5
 						gs 'stat'
 
-						'He stops and kisses you and then pulls out of you and slowly gets dressed. “My dear, get up, clean up, then return the same time next week,” he says, leaving you alone to get dressed and cleaned up before leaving.'
 						'<center><video autoplay loop <<$set_imgh>> src="images/pc/activities/misc/dress_<<rand(1, 2)>>.mp4"></video></center>'
+						'He stops and kisses you and then pulls out of you and slowly gets dressed. “My dear, get up, clean up, then return the same time next week,” he says, leaving you alone to get dressed and cleaned up before leaving.'
 						act 'Continue':
 							*clr & cla
 							minut += 15
@@ -633,6 +634,229 @@ if $ARGS[0] = 'event5_submit':
 	end
 end
 
+if $ARGS[0] = 'event6_submit':
+	menu_off = 1
+	minut += 2
+	therapistQW['hotel_visits'] += 1
+
+	$lastwornclothingtype['therapist'] = $clothingworntype
+	lastwornclothingnumber['therapist'] = clothingwornnumber
+	$lastwornpantytype['therapist'] = $pantyworntype
+	lastwornpantynumber['therapist'] = pantywornnumber
+	$lastwornbratype['therapist'] = $braworntype
+	lastwornbranumber['therapist'] = brawornnumber
+	gs 'clothing', 'strip'
+
+	dynamic $showerdin
+	gs 'stat'
+
+	'<center><video autoplay loop <<$set_imgh>> src="images/characters/pavlovsk/resident/therapist/hotel_shower1.mp4"></video></center>'
+	'You enter the hotel again, but this time it is different. The moment you walk in, you remove your clothes, folding them up before heading into the shower to get cleaned up.'
+	'In your mind, you know this phrase, "A Clean Wife has a Happy Husband" You spend time making sure everything about yourself is clean before you dry off and enter the hotel room.'
+
+	act 'Continue':
+		*clr & cla
+		minut += 15
+		gs 'stat'
+
+		'You see your husband working on something at his desk. You kneel before him and wait for him to notice you. After some time, he turns to look at you.'
+		'"Wife, you look as beautiful as ever. I have something I want you to sign. You are my wife in all but name. Let''s make it official" he says and hands you a pen and a clip board.'
+		'You look at it. Giving a quick read you see it''s a marriage certificate. "You will sign it now, won''t you My Dear?" he commands. You look down again at the packet before you.'
+		*nl
+		'<center><font color="red">If you sign this, you will be his wife, any boyfriends, girlfriends, lovers, husbands, anything where you live with them will be null and void. From this point on, the therapist is your husband and he WILL NOT divorce you.</font></center>'
+		
+		act 'Sign the paper':
+			*clr & cla
+			minut += 5
+			gs 'arousal', 'bj', 30, 'sub'
+			gs 'stat'
+
+			'You give the paper a signature and he smiles. "Good, I''ll take this to the city offices on Monday." He says and pulls out his cock and moves your head to it.'
+			'You start sucking on it without question. "Now, we are now married. This means you are to live with me, You will head home tonight, tell your family you are moving out, and you will live here with me until we find a place of our down, Do you understand?" he asks.'
+
+			act '"Yes Sir"':
+				*clr & cla
+				minut += 5
+				gs 'arousal', 'bj', 15, 'sub'
+				gs 'cum_call', 'mouth', 'A186', 2, 0, 15000, 60
+				gs 'stat'
+
+				'"Good, Now finish up with your current task so you can tell your parents or loved ones the news. Tell them whatever you want, but tell them you are moving out."'
+				'He says and cums into your mouth. You drink and swallow every drop. He lets you up and you get dressed. Without saying anything, you leave the motel and head home.'
+				act 'Continue': 
+					gs 'clothing', 'wear', $lastwornclothingtype['therapist'], lastwornclothingnumber['therapist']
+					gs 'panties', 'wear', $lastwornpantytype['therapist'], lastwornpantynumber['therapist']
+					gs 'bras', 'wear', $lastwornbratype['therapist'], lastwornbranumber['therapist']
+					gs 'stat'
+
+					gt 'therapist_hotel', 'event6_submit2'
+				end
+			end
+		end
+
+		act 'Don''t sign the paper':
+			'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']
+				gs 'panties', 'wear', $lastwornpantytype['therapist'], lastwornpantynumber['therapist']
+				gs 'bras', 'wear', $lastwornbratype['therapist'], lastwornbranumber['therapist']
+				gs 'stat'
+
+				gt 'pav_market'
+			end
+		end
+	end
+end
+
+if $ARGS[0] = 'event6_submit2':
+	minut += 45
+	! BREAKUP CODE
+	gs 'lover', 'clear_all'
+	gs 'stat'
+
+	act 'Go to the hotel': gt 'therapist_hotel', 'event6_submit3'
+
+	if func('homes_properties', 'is_current_home', 'parents_home'):
+		cla
+		'<center><img <<$set_imgh>> src="images/characters/pavlovsk/resident/anya/home/sisboyqw_00.jpg"></center>'
+		'You return home and see your family watching TV. You head to your bedroom and see Anya on her bed reading a book. When you pull out your suitcase, she looks up from her book. "You going somewhere?" she asks.'
+		*nl
+		'"I''m moving out" you tell her.'
+		*nl
+		'"Oh, did you find a place for university?" she asks and helps you get your stuff together.'
+		*nl
+		'"Something like that" you tell her. "I found a place to live and I will be staying there" you tell her the truth but not the full truth.'
+		*nl
+		'"Well, make sure you come back from time to time" she says and gives you a hug before you head to the living room to tell your parents about the news.'
+
+		act 'Continue':
+			*clr & cla
+			minut += 20
+			gs 'stat'
+
+			'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
+			'"I heard that, but why?" she asks as Valdimer walks up behind her to keep her back.'
+			*nl
+			'"Dear, stop, she''s out of school and she''s old enough to live on her own now." He walks up to you and gives you a hug. "Just make sure you come home from time to time" he says and you can see your mother starting to cry.'
+			*nl
+			'"Does this mean I can get her bed?" Kolka says loudly and from the bed room, you can hear Anya yell back. "OH HELL NO" and this causes Kolka to slump back into the chair he was sitting on.'
+			*nl
+			'"Just promise us you will be careful" Valdimer says and you nod. "I''ll be ok." you say and grab your suitcase and then leave home to return to the hotel.'
+
+			act 'Go to the hotel': gt 'therapist_hotel', 'event6_submit3'
+		end
+
+	elseif husband > 0:
+		! Divorce husband. Currently no dedicated function for this
+		husband = 0
+		divorced += 1
+		gs 'stat'
+
+		'<center><video autoplay loop <<$set_imgh>> src="images/shared/romance/misc/depart1.mp4"></video></center>'
+		'You return home and head to the bedroom. You pull out your suitcase and start putting all your outfits into it. This takes you only a few minutes before you go to the living room to see your husband sleeping on the couch. You write up a quick note saying you no longer love him and have moved out. You remove your wedding ring and place it on the table with the note and you head back to the motel.'
+
+	!	Living with others:
+	elseif func('homes_properties', 'is_current_home', 'maid_bedroom') or func('homes_properties', 'is_current_home', 'niko_apartment') or func('homes_properties', 'is_current_home', 'vasilyhome') or func('homes_properties', 'is_current_home', 'university_dorm') or func('homes_properties', 'is_current_home', 'hunters_lodge') or func('homes_properties', 'is_current_home', 'shared_apartment') or func('homes_properties', 'is_current_home', 'grandparents_house') or func('homes_properties', 'is_current_home', 'meynold_household'):
+		'You return home and head to the bedroom. You pull out your suitcase and start putting all your outfits into it. This takes you only a few minutes before you go to the living room to see no one is there. You write up a quick note saying you thank them for the times you spent together and will visit when they can. You take the key from your pocket and place it on the table with the note and you head back to the motel.'
+	else
+		'You return home and head to the bedroom. You pull out your suitcase and start putting all your outfits into it. You pull out your phone and cancel your rent payments and send a quick email to the agency saying the keys on the table and you have moved out. You take the key from your pocket and place it on the table and you head back to the motel.'
+	end
+
+end
+
+if $ARGS[0] = 'event6_submit3':
+	minut += 20
+
+	$lastwornclothingtype['therapist'] = $clothingworntype
+	lastwornclothingnumber['therapist'] = clothingwornnumber
+	$lastwornpantytype['therapist'] = $pantyworntype
+	lastwornpantynumber['therapist'] = pantywornnumber
+	$lastwornbratype['therapist'] = $braworntype
+	lastwornbranumber['therapist'] = brawornnumber
+	gs 'clothing', 'strip'
+	gs 'stat'
+
+	'<center><img <<$set_imgh>> src="images/characters/pavlovsk/resident/therapist/naked1.jpg"></center>'
+	'You return to the hotel room with your stuff. When you enter, you see the therapist waiting for you. "Welcome back, my wife. Looks like all went well" he says and you nod.'
+	'"Just put your stuff in the closet there and lay on the bed and wait for me." He says and you strip down, putting your clothes into the closet, then you lay on the bed, naked. You are glad the TV is on and you watch it.'
+
+	act 'Continue':
+		*clr & cla
+		minut += 90
+		gs 'arousal', 'vaginal', 90, 'sub'
+		gs 'cum_call', 'vagina', 'A186', 2, 0, 15000, 60
+		gs 'stat'
+
+		'<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.'
+
+
+		act 'Sleep':
+			*clr & cla
+			gs 'sleep_simple', 'simple'
+			if hour < 7:
+				pcs_sleep += 15 * (6 - hour)
+				hour = 7
+				minut = 0
+				pcs_sleep = min(pcs_sleep, 100)
+				gs 'stat'
+			end
+
+			gs 'arousal', 'vaginal', -90, 'sub'
+			gs 'cum_call', 'vagina', 'A186', 2, 0, 15000, 60
+			gs 'stat'
+
+			'<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?"'
+			*nl
+			'"Yes, sir, I love it" you reply.'
+			*nl
+			'"Good, you will let me use your body anytime, anywhere, anyhow I want, wont you my dear?" he says pulling out of you slowly.'
+			*nl
+			'"Yes, sir, my body is yours." you say.'
+			*nl
+			'"Good, now stay there for a bit and let my cum find your eggs" he says and gets off the bed'
+
+			act 'Continue':
+				*clr & cla
+				minut += 5
+				gs 'stat'
+
+				'<center><img <<$set_imgh>> src="images/characters/pavlovsk/resident/therapist/naked1.jpg"></center>'
+				'You lay there naked on the bed as he goes to get cleaned up. You lay there for a bit and when he exits the shower, you get up and go take one yourself. You wash up and return to him. "Now to make sure no one sees anything wrong with our pairing, you are free to leave and do whatever you want. But you will return here every night.'
+				'This is your home now. You will have all the same freedoms you did in any place you lived before, only the difference is that you will be naked at all times while in this room. At night, we will have sex and you will allow it, even if you are not in the mood, isn''t that right my dear?" he says.'
+				*nl
+				'"Yes, Sir, thank you" you reply.'
+				*nl
+				'He gives you a kiss. "Now go, do whatever it is you like to do" he says and you get dressed and head to the lobby.'
+				act 'Continue': gt 'therapist_hotel', 'event6_submit4'
+			end
+		end
+	end
+end
+
+if $ARGS[0] = 'event6_submit4':
+	minut += 5
+	gs 'clothing', 'wear', $lastwornclothingtype['therapist'], lastwornclothingnumber['therapist']
+	gs 'panties', 'wear', $lastwornpantytype['therapist'], lastwornpantynumber['therapist']
+	gs 'bras', 'wear', $lastwornbratype['therapist'], lastwornbranumber['therapist']
+	gs 'stat'
+
+	HotelRoom['pav_hotel'] = 0
+	hotelRoomDays['pav_hotel'] = 0
+	therapistQW['hotel_key'] = 3
+	gs 'homes_preperties', 'set_home', 'hotel_therapist'
+
+	gt 'pav_hotel'
+
+end
 
 
 --- therapist_hotel ---------------------------------

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

+ 89 - 45
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,40 +947,93 @@ 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
-				lastworndefpursenumber['sport'] = currentpursenumber
+				lastwornpursenumber['sport'] = currentpursenumber
 				$lastworncoattype['sport'] = $coatworntype
-				lastworndefcoatnumber['sport'] = coatwornnumber
+				lastworncoatnumber['sport'] = coatwornnumber
       			gs  'wardrobe', 'default_entry_wear', default_sport_number
 				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'], lastworndefpursenumber['sport']
-					gs 'coats', 'wear', $lastworncoattype['sport'], lastworndefcoatnumber['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()