Browse Source

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

netuttki 3 months ago
parent
commit
73660e9ba1
100 changed files with 6159 additions and 4911 deletions
  1. 0 2143
      duplicate_media_files.txt
  2. 57 39
      glife.qproj
  3. 2 58
      locations/AppearanceSystem.qsrc
  4. 357 36
      locations/Cheatmenu_din.qsrc
  5. 313 13
      locations/Cum_Manage.qsrc
  6. 1 1
      locations/FedorMisc.qsrc
  7. 21 28
      locations/KatjaHomeTalk.qsrc
  8. 1 1
      locations/Komp.qsrc
  9. 4 2
      locations/LakeBoyDy.qsrc
  10. 7 1
      locations/LariskaHome.qsrc
  11. 2 8
      locations/LariskaSex.qsrc
  12. 8 8
      locations/MartinSex.qsrc
  13. 1 1
      locations/MartinTalk.qsrc
  14. 8 13
      locations/Nudelake.qsrc
  15. 2 2
      locations/Peterroom.qsrc
  16. 359 0
      locations/SMS_selfies.qsrc
  17. 21 0
      locations/SMS_selfies_popup.qsrc
  18. 217 0
      locations/SMStext_builder.qsrc
  19. 5 6
      locations/Serge_kuh.qsrc
  20. 1 1
      locations/Voltrener.qsrc
  21. 1 4
      locations/Zvereva_Sly_sex.qsrc
  22. 2 2
      locations/_attributes_fashionista_dress.qsrc
  23. 1 1
      locations/_attributes_school.qsrc
  24. 3 57
      locations/_body_image.qsrc
  25. 1 1
      locations/_clothing_image.qsrc
  26. 1 1
      locations/_short_description.qsrc
  27. 3 3
      locations/albina_chat.qsrc
  28. 1 1
      locations/albina_house_events.qsrc
  29. 1 1
      locations/albinahome.qsrc
  30. 1 1
      locations/alex.qsrc
  31. 2 2
      locations/anush_bedroom.qsrc
  32. 1 1
      locations/anush_bedroom_city.qsrc
  33. 2 2
      locations/anushkaev1.qsrc
  34. 1 1
      locations/anushkaev2.qsrc
  35. 409 211
      locations/arousal.qsrc
  36. 1 2
      locations/artem_sex.qsrc
  37. 27 19
      locations/artemhome.qsrc
  38. 4 4
      locations/backwater.qsrc
  39. 1 1
      locations/ballet_global_evt.qsrc
  40. 9 5
      locations/ballet_npc.qsrc
  41. 277 32
      locations/ballet_secrets.qsrc
  42. 78 92
      locations/band_tour_anushka_SMS.qsrc
  43. 1 0
      locations/barbershop.qsrc
  44. 1 1
      locations/bdsm_garden.qsrc
  45. 1 1
      locations/bed_events.qsrc
  46. 0 1
      locations/bed_get_out.qsrc
  47. 1 1
      locations/bedr.qsrc
  48. 1 1
      locations/bedr2x.qsrc
  49. 18 14
      locations/begin.qsrc
  50. 53 56
      locations/body.qsrc
  51. 1 19
      locations/body_desc.qsrc
  52. 442 0
      locations/body_structure.qsrc
  53. 319 404
      locations/booty_call_sms.qsrc
  54. 78 51
      locations/boy.qsrc
  55. 8 8
      locations/brothel.qsrc
  56. 39 32
      locations/brother.qsrc
  57. 12 6
      locations/budgetclothes.qsrc
  58. 1546 0
      locations/bus.qsrc
  59. 25 0
      locations/bus_events.qsrc
  60. 38 0
      locations/bus_incidental.qsrc
  61. 1 1
      locations/carF.qsrc
  62. 1 1
      locations/cardgame_durak.qsrc
  63. 66 44
      locations/cikl.qsrc
  64. 11 4
      locations/city_center.qsrc
  65. 26 26
      locations/city_clinic.qsrc
  66. 22 23
      locations/city_experimental_trials.qsrc
  67. 48 48
      locations/city_experimental_trials_events.qsrc
  68. 55 52
      locations/city_experimental_trials_list.qsrc
  69. 2 2
      locations/city_hermitage.qsrc
  70. 2 2
      locations/city_industrial.qsrc
  71. 62 143
      locations/city_industrial_train.qsrc
  72. 7 7
      locations/city_island.qsrc
  73. 2 1
      locations/city_market.qsrc
  74. 57 70
      locations/city_musicstore.qsrc
  75. 168 326
      locations/city_nightclub.qsrc
  76. 4 4
      locations/city_nightclubToilet.qsrc
  77. 3 1
      locations/city_sauna.qsrc
  78. 14 7
      locations/city_saunawhore.qsrc
  79. 1 0
      locations/city_smalloffice.qsrc
  80. 12 11
      locations/city_suburbs.qsrc
  81. 29 133
      locations/city_train.qsrc
  82. 185 186
      locations/city_trashplace.qsrc
  83. 92 18
      locations/clothing.qsrc
  84. 37 79
      locations/clothing_QV.qsrc
  85. 8 2
      locations/clothing_attributes.qsrc
  86. 4 4
      locations/core_library.qsrc
  87. 35 55
      locations/cum_call.qsrc
  88. 87 29
      locations/cum_cleanup.qsrc
  89. 2 1
      locations/dachi.qsrc
  90. 9 1
      locations/dateF.qsrc
  91. 2 0
      locations/dateM.qsrc
  92. 4 0
      locations/dimaRevenge.qsrc
  93. 153 121
      locations/dinSex.qsrc
  94. 4 7
      locations/dinSex2.qsrc
  95. 8 5
      locations/din_bad.qsrc
  96. 129 60
      locations/din_van.qsrc
  97. 2 31
      locations/dinsexFX.qsrc
  98. 4 3
      locations/drugs.qsrc
  99. 1 1
      locations/emp_functions.qsrc
  100. 2 2
      locations/ender.qsrc

+ 0 - 2143
duplicate_media_files.txt

@@ -1,2143 +0,0 @@
-   2 equal files of size 3965879
-   /images/shared/prostitution/car/normal/sex/cum/abelly_10.mp4
-   /images/shared/prostitution/car/normal/sex/cum/pbelly_10.mp4
-
-   2 equal files of size 2199156
-   /images/shared/prostitution/car/normal/sex/anal/anal_17.mp4
-   /images/shared/prostitution/car/regular/sex/main_anal2.mp4
-
-   2 equal files of size 1920167
-   /images/locations/city/citycenter/photo/lingerie/2.mp4
-   /images/locations/city/citycenter/photo/lingerie2.mp4
-
-   2 equal files of size 1880659
-   /images/locations/city/citycenter/photo/bikini/4.mp4
-   /images/locations/city/citycenter/photo/bikini2.mp4
-
-   2 equal files of size 1762882
-   /images/locations/city/citycenter/photo/fame/fametopless1.mp4
-   /images/locations/city/citycenter/photo/fametopless1.mp4
-
-   2 equal files of size 1695915
-   /images/locations/city/citycenter/photo/special/basketball.mp4
-   /images/locations/city/citycenter/photo/basketball.mp4
-
-   2 equal files of size 1614645
-   /images/locations/city/citycenter/photo/bikini/1.mp4
-   /images/locations/city/citycenter/photo/bikini3.mp4
-
-   2 equal files of size 1412968
-   /images/locations/city/citycenter/photo/skill/skill_beach.mp4
-   /images/locations/city/citycenter/photo/skill_beach.mp4
-
-   2 equal files of size 1304186
-   /images/shared/prostitution/car/normal/sex/anal/anal_19.mp4
-   /images/shared/prostitution/car/regular/sex/main_anal4.mp4
-
-   2 equal files of size 1260905
-   /images/characters/pavlovsk/school/boy/igor/sex/home/trahaet2.mp4
-   /images/characters/pavlovsk/school/boy/igor/sex/home/trahaet_2.mp4
-
-   2 equal files of size 1260370
-   /images/shared/sex/shower/doggy_enter1.mp4
-   /images/shared/sex/shower/enter.mp4
-
-   2 equal files of size 1237419
-   /images/locations/city/citycenter/photo/fame/fametopless3.mp4
-   /images/locations/city/citycenter/photo/fametopless3.mp4
-
-   2 equal files of size 1060169
-   /images/locations/city/citycenter/photo/fashion/2.mp4
-   /images/locations/city/citycenter/photo/fashion2.mp4
-
-   2 equal files of size 1039135
-   /images/locations/city/citycenter/photo/fame/tennis.mp4
-   /images/locations/city/citycenter/photo/fame_tennis.mp4
-
-   3 equal files of size 1002214
-   /images/locations/city/citycenter/photo/skill/runway/1.mp4
-   /images/locations/city/citycenter/photo/skill/skill_runway.mp4
-   /images/locations/city/citycenter/photo/skill_runway.mp4
-
-   2 equal files of size 998910
-   /images/locations/city/citycenter/photo/bikini/5.mp4
-   /images/locations/city/citycenter/photo/bikini.mp4
-
-   2 equal files of size 997280
-   /images/locations/city/citycenter/photo/fame/fametopless2.mp4
-   /images/locations/city/citycenter/photo/fametopless2.mp4
-
-   2 equal files of size 939811
-   /images/shared/sex/cum/mouth/spit3.mp4
-   /images/shared/sex/cum/spit3.mp4
-
-   2 equal files of size 829627
-   /images/locations/city/citycenter/photo/fame/pool.mp4
-   /images/locations/city/citycenter/photo/fame_pool.mp4
-
-   2 equal files of size 777447
-   /images/locations/city/citycenter/photo/fame/fametopless4.mp4
-   /images/locations/city/citycenter/photo/fametopless4.mp4
-
-   2 equal files of size 763982
-   /images/locations/shared/brothel/tiedonbackfuckvaginal.mp4
-   /images/locations/shared/brothel/tied_vaginal.mp4
-
-   2 equal files of size 711573
-   /images/shared/sex/misc/undress1.mp4
-   /images/shared/sex/undress/undress1.mp4
-
-   2 equal files of size 668416
-   /images/characters/pavlovsk/school/boy/igor/sex/home/trahaet3.mp4
-   /images/characters/pavlovsk/school/boy/igor/sex/home/trahaet_3.mp4
-
-   2 equal files of size 620688
-   /images/locations/city/citycenter/photo/fame/fametopless5.mp4
-   /images/locations/city/citycenter/photo/fametopless5.mp4
-
-   2 equal files of size 617129
-   /images/locations/city/citycenter/photo/skill/skill_pool.mp4
-   /images/locations/city/citycenter/photo/skill_pool.mp4
-
-   3 equal files of size 583286
-   /images/locations/city/citycenter/photo/special/wet/wet.mp4
-   /images/locations/city/citycenter/photo/special/wet.mp4
-   /images/locations/city/citycenter/photo/wet.mp4
-
-   2 equal files of size 550835
-   /images/locations/pavlovsk/school/grounds/track/MA-010.png
-   /images/pc/activities/track/MA-010.png
-
-   2 equal files of size 517123
-   /images/shared/romance/misc/wakeup_shock2.mp4
-   /images/shared/sex/after/wakeup_shock2.mp4
-
-   2 equal files of size 516927
-   /images/locations/city/citycenter/photo/fame/outdoors1.mp4
-   /images/locations/city/citycenter/photo/fame_outdoors.mp4
-
-   2 equal files of size 492786
-   /images/characters/pavlovsk/school/boy/niko/nikoev/school/locker/hall3.mp4
-   /images/characters/pavlovsk/school/boy/niko/nikoev/school/locker/lock3.mp4
-
-   2 equal files of size 485588
-   /images/locations/shared/brothel/tiedonbackfistanal.mp4
-   /images/locations/shared/brothel/tied_analfisting.mp4
-
-   2 equal files of size 467370
-   /images/locations/shared/brothel/tiedonbackfuckanal.mp4
-   /images/locations/shared/brothel/tied_anal.mp4
-
-   2 equal files of size 455129
-   /images/locations/city/citycenter/photo/skill/skill_topless.mp4
-   /images/locations/city/citycenter/photo/skill_topless.mp4
-
-   2 equal files of size 446317
-   /images/characters/pavlovsk/school/boy/niko/nikoev/school/locker/hall2.mp4
-   /images/characters/pavlovsk/school/boy/niko/nikoev/school/locker/lock2.mp4
-
-   2 equal files of size 442513
-   /images/shared/romance/misc/wakeup_shock1.mp4
-   /images/shared/sex/after/wakeup_shock1.mp4
-
-   2 equal files of size 430261
-   /images/characters/pavlovsk/school/boy/niko/nikoev/school/locker/hall7.mp4
-   /images/characters/pavlovsk/school/boy/niko/nikoev/school/locker/lock7.mp4
-
-   2 equal files of size 383652
-   /images/characters/pavlovsk/school/boy/niko/nikoev/school/locker/hall4.mp4
-   /images/characters/pavlovsk/school/boy/niko/nikoev/school/locker/lock1.mp4
-
-   2 equal files of size 345769
-   /images/shared/prostitution/car/normal/sex/anal/anal_16.mp4
-   /images/shared/prostitution/car/regular/sex/main_anal1.mp4
-
-   2 equal files of size 317583
-   /images/shared/romance/misc/wakeup_shock3.mp4
-   /images/shared/sex/after/wakeup_shock3.mp4
-
-   2 equal files of size 296109
-   /images/locations/city/citycenter/mall/salon/work/sex/creampie2.mp4
-   /images/shared/sex/cum/cum7.mp4
-
-   3 equal files of size 273081
-   /images/locations/shared/brothel/tiedonbackvibropussy.mp4
-   /images/locations/shared/brothel/tied_bibrate.mp4
-   /images/locations/shared/brothel/tied_vibrate.mp4
-
-   2 equal files of size 259833
-   /images/shared/prostitution/car/normal/sex/anal/anal_15.mp4
-   /images/shared/prostitution/car/regular/sex/main_anal0.mp4
-
-   2 equal files of size 240406
-   /images/shared/home/bathroom/shower_bath_dildo.mp4
-   /images/shared/home/bathroom/shower_bath_dildo2.mp4
-
-   2 equal files of size 230670
-   /images/shared/sex/cum/mouth/spit2.mp4
-   /images/shared/sex/cum/spit2.mp4
-
-   2 equal files of size 202334
-   /images/locations/pavlovsk/school/grounds/track/FE-016.jpg
-   /images/pc/activities/track/FE-016.jpg
-
-   2 equal files of size 201702
-   /images/shared/prostitution/car/normal/sex/anal/anal_18.mp4
-   /images/shared/prostitution/car/regular/sex/main_anal3.mp4
-
-   2 equal files of size 199851
-   /images/characters/pavlovsk/school/boy/niko/nikoev/school/locker/hall5.mp4
-   /images/characters/pavlovsk/school/boy/niko/nikoev/school/locker/lock5.mp4
-
-   2 equal files of size 197714
-   /images/locations/shared/brothel/tiedonbackwhippussy.mp4
-   /images/locations/shared/brothel/tied_whip.mp4
-
-   2 equal files of size 195289
-   /images/locations/shared/brothel/tiedonbackfuckmouth.mp4
-   /images/locations/shared/brothel/tied_mouth.mp4
-
-   2 equal files of size 188921
-   /images/locations/pavlovsk/resident/apartment/events/sex/evbgsex.jpg
-   /images/locations/pavlovsk/resident/apartment/events/evbgsex.jpg
-
-   2 equal files of size 182518
-   /images/pc/activities/photography/foto/locations/9.jpg
-   /images/pc/activities/photography/foto/pav_school.jpg
-
-   2 equal files of size 173232
-   /images/locations/shared/brothel/tiedonbacktease.mp4
-   /images/locations/shared/brothel/tied_tease.mp4
-
-   2 equal files of size 168857
-   /images/characters/pavlovsk/resident/mom/pavrun1.jpg
-   /images/characters/pavlovsk/resident/mom/pavyoga1.jpg
-
-   2 equal files of size 157938
-   /images/locations/shared/street/sharkdress.mp4
-   /images/locations/shared/street/sharkdress1.mp4
-
-   2 equal files of size 157765
-   /images/locations/pavlovsk/school/bathroom/sex/mastrubate.mp4
-   /images/locations/pavlovsk/school/bathroom/sex/masturbate1.mp4
-
-   2 equal files of size 150087
-   /images/locations/pavlovsk/school/grounds/track/AP-003.jpg
-   /images/pc/activities/track/AP-003.jpg
-
-   2 equal files of size 144239
-   /images/locations/pavlovsk/school/grounds/track/OC-001.jpg
-   /images/pc/activities/track/OC-001.jpg
-
-   2 equal files of size 132587
-   /images/pc/activities/photography/foto/locations/4.jpg
-   /images/pc/activities/photography/foto/gadukino.jpg
-
-   2 equal files of size 128067
-   /images/pc/activities/photography/foto/people/4.jpg
-   /images/pc/activities/photography/foto/sonia.jpg
-
-   2 equal files of size 123417
-   /images/locations/pavlovsk/school/grounds/track/MA-009.jpg
-   /images/pc/activities/track/MA-009.jpg
-
-   2 equal files of size 123165
-   /images/locations/pavlovsk/school/grounds/track/MA-012.jpg
-   /images/pc/activities/track/MA-012.jpg
-
-   2 equal files of size 120840
-   /images/pc/activities/photography/foto/locations/10.jpg
-   /images/pc/activities/photography/foto/pav_park.jpg
-
-   2 equal files of size 120611
-   /images/locations/pavlovsk/school/grounds/track/PR-005.jpg
-   /images/pc/activities/track/PR-005.jpg
-
-   2 equal files of size 120462
-   /images/locations/pavlovsk/school/grounds/track/sex/SXFU-003.jpg
-   /images/pc/activities/track/SXFU-003.jpg
-
-   2 equal files of size 116571
-   /images/locations/pavlovsk/resident/apartment/shulginhome/smroom/event/miss2.mp4
-   /images/locations/pavlovsk/resident/apartment/shulginhome/smroom/event/miss3.mp4
-
-   2 equal files of size 116184
-   /images/locations/city/citycenter/photo/nude/2.jpg
-   /images/locations/city/citycenter/photo/nude29.jpg
-
-   2 equal files of size 115073
-   /images/pc/activities/photography/foto/locations/5.jpg
-   /images/pc/activities/photography/foto/dachi.jpg
-
-   2 equal files of size 113262
-   /images/locations/pavlovsk/school/grounds/track/MA-003.jpeg
-   /images/pc/activities/track/MA-003.jpeg
-
-   2 equal files of size 109359
-   /images/locations/city/citycenter/photo/topnude/14.jpg
-   /images/locations/city/citycenter/photo/nude21.jpg
-
-   2 equal files of size 108986
-   /images/locations/city/residential/apartment/home/sex/balcony_anal2.mp4
-   /images/locations/city/residential/apartment/sex/balcony_anal2.mp4
-
-   2 equal files of size 108402
-   /images/locations/pavlovsk/community/guitarlesson/glessonad.jpg
-   /images/locations/shared/noticeboards/pav/flyer_music_guitar.jpg
-
-   2 equal files of size 107890
-   /images/locations/pavlovsk/lake/secluded_beach/voyeurism/voyeurism_start_event_18.jpg
-   /images/locations/pavlovsk/lake/secluded_beach/voyeurism/voyeurism_start_event_4.jpg
-
-   2 equal files of size 107465
-   /images/locations/city/citycenter/photo/adverts/advert2.jpg
-   /images/locations/city/citycenter/photo/advert2.jpg
-
-   2 equal files of size 106529
-   /images/pc/activities/photography/foto/locations/7.jpg
-   /images/pc/activities/photography/foto/pav_complex.jpg
-
-   2 equal files of size 105474
-   /images/locations/gadukino/forest/gadforestlost_winter0.2.jpg
-   /images/locations/gadukino/forest/gadforest_winter3.jpg
-
-   2 equal files of size 105150
-   /images/locations/pavlovsk/school/grounds/track/MA-011.jpg
-   /images/pc/activities/track/MA-011.jpg
-
-   2 equal files of size 102213
-   /images/locations/pavlovsk/school/grounds/track/PR-003.jpg
-   /images/pc/activities/track/PR-003.jpg
-
-   2 equal files of size 100161
-   /images/locations/pavlovsk/school/grounds/track/AP-013.jpg
-   /images/pc/activities/track/AP-013.jpg
-
-   2 equal files of size 98624
-   /images/locations/gadukino/sex/mitka/mitkaforestsexccowkiss1_2.jpg
-   /images/locations/gadukino/sex/mitka/mitkaforestsex_owKiss1_2.jpg
-
-   2 equal files of size 98473
-   /images/locations/pavlovsk/school/grounds/track/DE-007.jpg
-   /images/pc/activities/track/DE-007.jpg
-
-   2 equal files of size 98224
-   /images/locations/gadukino/sex/mitka/mitkaforestsexccoworal1_1.jpg
-   /images/locations/gadukino/sex/mitka/mitkaforestsex_owOral1_1.jpg
-
-   2 equal files of size 97615
-   /images/characters/pavlovsk/school/girl/natasha/study.jpg
-   /images/locations/pavlovsk/resident/apartment/natbelapt/study.jpg
-
-   2 equal files of size 96749
-   /images/locations/city/citycenter/photo/special/runway_waiting.mp4
-   /images/locations/city/citycenter/photo/runway_waiting.mp4
-
-   2 equal files of size 93764
-   /images/characters/pavlovsk/school/girl/albina/sex/prostitute/d1.jpg
-   /images/characters/pavlovsk/school/girl/albina/sex/prostitute/threesome1.jpg
-
-   2 equal files of size 93249
-   /images/locations/city/residential/apartment/home/kuhr.jpg
-   /images/locations/city/residential/apartment/kuhr.jpg
-
-   2 equal files of size 93098
-   /images/pc/activities/photography/foto/locations/6.jpg
-   /images/pc/activities/photography/foto/gadforest.jpg
-
-   2 equal files of size 92794
-   /images/locations/city/citycenter/photo/portraits/katherine_a/7.jpg
-   /images/locations/city/citycenter/photo/portraits/krystal_b/7.jpg
-
-   2 equal files of size 92096
-   /images/locations/pavlovsk/school/grounds/track/PR-008.jpg
-   /images/pc/activities/track/PR-008.jpg
-
-   2 equal files of size 90908
-   /images/locations/gadukino/sex/mitka/mitkaforestsexccowkiss1_1.jpg
-   /images/locations/gadukino/sex/mitka/mitkaforestsex_owKiss1_1.jpg
-
-   2 equal files of size 90908
-   /images/locations/pavlovsk/school/gym/locker/palpeek.jpg
-   /images/locations/pavlovsk/school/gym/palpeek.jpg
-
-   2 equal files of size 90204
-   /images/pc/activities/photography/foto/locations/1.jpg
-   /images/pc/activities/photography/foto/city_library.jpg
-
-   2 equal files of size 89369
-   /images/locations/gadukino/sex/mitka/mitkaforestsexccow1_2.1.jpg
-   /images/locations/gadukino/sex/mitka/mitkaforestsex_ow1_2.1.jpg
-
-   2 equal files of size 89013
-   /images/locations/gadukino/sex/mitka/mitkaforestsexccoworalcuml1_1.jpg
-   /images/locations/gadukino/sex/mitka/mitkaforestsex_owOralCuml1_1.jpg
-
-   2 equal files of size 88182
-   /images/locations/pavlovsk/school/grounds/track/sex/SXFU-005.jpg
-   /images/pc/activities/track/SXFU-005.jpg
-
-   2 equal files of size 88096
-   /images/pc/activities/photography/foto/locations/8.jpg
-   /images/pc/activities/photography/foto/pav_train.jpg
-
-   2 equal files of size 88048
-   /images/characters/pavlovsk/school/boy/artem/sex/park/rape2.jpg
-   /images/shared/sex/rape/park_rape2.jpg
-
-   2 equal files of size 87418
-   /images/characters/pavlovsk/school/girl/natasha/bedtalk.jpg
-   /images/locations/pavlovsk/resident/apartment/natbelapt/bedtalk.jpg
-
-   2 equal files of size 86800
-   /images/locations/pavlovsk/school/grounds/track/FE-020.jpg
-   /images/pc/activities/track/FE-020.jpg
-
-   2 equal files of size 86714
-   /images/characters/city/anatoly/sex/bossbjcum3.jpg
-   /images/locations/city/anatoly/sex/bossbjcum3.jpg
-
-   2 equal files of size 86368
-   /images/locations/city/residential/apartment/home/kuhr2.jpg
-   /images/locations/city/residential/apartment/kuhr2.jpg
-
-   2 equal files of size 85071
-   /images/characters/city/anatoly/sex/bossbjcum6.jpg
-   /images/locations/city/anatoly/sex/bossbjcum6.jpg
-
-   2 equal files of size 84865
-   /images/pc/activities/photography/foto/locations/12.jpg
-   /images/pc/activities/photography/foto/pav_church.jpg
-
-   2 equal files of size 84836
-   /images/locations/pavlovsk/school/grounds/track/PR-007.jpg
-   /images/pc/activities/track/PR-007.jpg
-
-   2 equal files of size 84595
-   /images/shared/sex/vag/miss/blood1.jpg
-   /images/shared/sex/vag/miss/virgin1.jpg
-
-   2 equal files of size 83055
-   /images/locations/city/citycenter/nichApartment/messy-room.jpg
-   /images/locations/city/citycenter/nichApartment/tanyaDirty3.jpg
-
-   2 equal files of size 82884
-   /images/locations/city/citycenter/photo/topnude/4.jpg
-   /images/locations/city/citycenter/photo/nude9.jpg
-
-   2 equal files of size 80067
-   /images/characters/pavlovsk/school/boy/artem/sex/park/rapecum2.jpg
-   /images/shared/sex/rape/park_rapecum2.jpg
-
-   2 equal files of size 79848
-   /images/locations/shared/train/electri.jpg
-   /images/locations/shared/train/electri_1.jpg
-
-   2 equal files of size 78969
-   /images/shared/sex/vag/cowgirl/blood1.jpg
-   /images/shared/sex/vag/cowgirl/virgin1.jpg
-
-   2 equal files of size 78740
-   /images/locations/pavlovsk/school/grounds/track/MA-006.jpg
-   /images/pc/activities/track/MA-006.jpg
-
-   2 equal files of size 78124
-   /images/locations/pavlovsk/school/grounds/track/MA-002.jpg
-   /images/pc/activities/track/MA-002.jpg
-
-   2 equal files of size 77958
-   /images/characters/city/anatoly/sex/bossbjcum5.jpg
-   /images/locations/city/anatoly/sex/bossbjcum5.jpg
-
-   2 equal files of size 76969
-   /images/locations/pavlovsk/resident/dimkahome/newyear/tusa3.jpg
-   /images/locations/pavlovsk/school/events/newyear/tusa3.jpg
-
-   2 equal files of size 76837
-   /images/locations/pavlovsk/school/grounds/track/FE-018.jpg
-   /images/pc/activities/track/FE-018.jpg
-
-   2 equal files of size 76422
-   /images/locations/city/residential/apartment/home/bedr2.jpg
-   /images/locations/city/residential/apartment/bedr2.jpg
-
-   2 equal files of size 76366
-   /images/characters/pavlovsk/school/boy/artem/sex/park/rape4.jpg
-   /images/shared/sex/rape/park_rape4.jpg
-
-   3 equal files of size 76326
-   /images/locations/pavlovsk/school/grounds/track/sex/OR-001.jpg
-   /images/locations/pavlovsk/school/grounds/track/OR-001.jpg
-   /images/pc/activities/track/OR-001.jpg
-
-   2 equal files of size 76198
-   /images/locations/pavlovsk/school/grounds/track/DE-006.jpg
-   /images/pc/activities/track/DE-006.jpg
-
-   3 equal files of size 76181
-   /images/locations/city/citycenter/photo/nude/1.jpg
-   /images/locations/city/citycenter/photo/nude.jpg
-   /images/locations/city/citycenter/photo/nude17.jpg
-
-   2 equal files of size 75721
-   /images/characters/pavlovsk/school/teacher/arina/dream/dream3.jpg
-   /images/characters/pavlovsk/school/teacher/arina/sex/dream/dream3.jpg
-
-   2 equal files of size 75588
-   /images/locations/city/citycenter/mall/salon/work/sex/creampie1.mp4
-   /images/shared/sex/cum/cum8.mp4
-
-   2 equal files of size 74290
-   /images/locations/city/residential/apartment/stairs/event/sex/floor5_bj.jpg
-   /images/locations/city/residential/apartment/stairs/sex/floor5_bj.jpg
-
-   2 equal files of size 74231
-   /images/characters/pavlovsk/school/boy/artem/sex/park/rape1.jpg
-   /images/shared/sex/rape/park_rape1.jpg
-
-   2 equal files of size 74115
-   /images/locations/city/industrial/red_light_district.jpg
-   /images/locations/city/redlight/redlight.jpg
-
-   2 equal files of size 73980
-   /images/locations/pavlovsk/school/grounds/track/KNO-01.jpg
-   /images/pc/activities/track/KNO-01.jpg
-
-   2 equal files of size 73240
-   /images/pc/activities/photography/foto/locations/11.jpg
-   /images/pc/activities/photography/foto/pav_lake.jpg
-
-   2 equal files of size 73237
-   /images/locations/city/residential/apartment/stairs/event/sex/floor2_bj.jpg
-   /images/locations/city/residential/apartment/stairs/sex/floor2_bj.jpg
-
-   2 equal files of size 73202
-   /images/locations/shared/sex/sexdvanadva/New folder/minet14.jpg
-   /images/locations/shared/sex/sexdvanadva/minet14.jpg
-
-   2 equal files of size 73118
-   /images/characters/pavlovsk/school/teacher/arina/dream/dream4.jpg
-   /images/characters/pavlovsk/school/teacher/arina/sex/dream/dream4.jpg
-
-   2 equal files of size 72961
-   /images/pc/activities/phone/selfies/beach/nude/16.jpg
-   /images/pc/activities/phone/selfies/beach/nude/9.jpg
-
-   2 equal files of size 72798
-   /images/characters/pavlovsk/school/teacher/rolan/school/rolanmeet18.jpg
-   /images/locations/pavlovsk/resident/apartment/aptrolan/rolanmeet/rolanmeet18.jpg
-
-   2 equal files of size 72665
-   /images/locations/pavlovsk/school/grounds/track/AP-001.jpg
-   /images/pc/activities/track/AP-001.jpg
-
-   2 equal files of size 72202
-   /images/locations/pavlovsk/school/grounds/track/DE-005.jpg
-   /images/pc/activities/track/DE-005.jpg
-
-   2 equal files of size 71451
-   /images/locations/pavlovsk/school/grounds/track/OC-002.jpg
-   /images/pc/activities/track/OC-002.jpg
-
-   2 equal files of size 71168
-   /images/characters/pavlovsk/school/boy/artem/sex/park/rape5.jpg
-   /images/shared/sex/rape/park_rape5.jpg
-
-   2 equal files of size 70892
-   /images/characters/pavlovsk/school/teacher/arina/dream/dream2.jpg
-   /images/characters/pavlovsk/school/teacher/arina/sex/dream/dream2.jpg
-
-   2 equal files of size 70170
-   /images/locations/pavlovsk/school/grounds/track/sex/SXFU-M01.mp4
-   /images/pc/activities/track/SXFU-M01.mp4
-
-   2 equal files of size 70111
-   /images/locations/pavlovsk/school/grounds/track/punishment/SP-003.jpg
-   /images/pc/activities/track/SP-003.jpg
-
-   2 equal files of size 69698
-   /images/locations/pavlovsk/school/grounds/track/FE-014.jpg
-   /images/pc/activities/track/FE-014.jpg
-
-   2 equal files of size 69508
-   /images/locations/pavlovsk/school/grounds/track/PR-009.jpg
-   /images/pc/activities/track/PR-009.jpg
-
-   2 equal files of size 69030
-   /images/locations/city/residential/lake/sex/anfisa/anuli4.jpg
-   /images/locations/city/residential/lake/sex/anfisa/kuni1.jpg
-
-   2 equal files of size 68953
-   /images/characters/pavlovsk/school/teacher/arina/dream/dream1.jpg
-   /images/characters/pavlovsk/school/teacher/arina/sex/dream/dream1.jpg
-
-   2 equal files of size 68386
-   /images/locations/city/residential/apartment/home/sitr2.jpg
-   /images/locations/city/residential/apartment/sitr2.jpg
-
-   2 equal files of size 68357
-   /images/locations/pavlovsk/factory/gshveyfab.jpg
-   /images/locations/pavlovsk/factory/pav_factory.jpg
-
-   2 equal files of size 68125
-   /images/locations/pavlovsk/school/grounds/track/sex/FE-011.jpg
-   /images/pc/activities/track/FE-011.jpg
-
-   2 equal files of size 68073
-   /images/characters/pavlovsk/school/boy/niko/kikoev2/dinner/6/vag2.jpg
-   /images/characters/pavlovsk/school/boy/niko/nikoev2/diner/5/Vag2.jpg
-
-   2 equal files of size 68067
-   /images/characters/pavlovsk/school/girl/vicky/event/case_gift4.jpg
-   /images/characters/pavlovsk/school/girl/vicky/sex/case_gift4.jpg
-
-   2 equal files of size 68011
-   /images/pc/activities/photography/foto/locations/13.jpg
-   /images/pc/activities/photography/foto/graveyard.jpg
-
-   2 equal files of size 67939
-   /images/characters/pavlovsk/school/girl/vicky/event/case_gift3.jpg
-   /images/characters/pavlovsk/school/girl/vicky/sex/case_gift3.jpg
-
-   2 equal files of size 67901
-   /images/locations/city/citycenter/photo/seethru/5.jpg
-   /images/locations/city/citycenter/photo/seethru5.jpg
-
-   2 equal files of size 67742
-   /images/locations/pavlovsk/school/gym/locker/change.jpg
-   /images/locations/pavlovsk/school/gym/change.jpg
-
-   2 equal files of size 67627
-   /images/locations/pavlovsk/school/grounds/track/PR-006.jpg
-   /images/pc/activities/track/PR-006.jpg
-
-   2 equal files of size 67571
-   /images/locations/pavlovsk/resident/apartment/events/sex/evbj1.jpg
-   /images/locations/pavlovsk/resident/apartment/events/evbj.jpg
-
-   2 equal files of size 67279
-   /images/locations/pavlovsk/school/grounds/track/DE-002.jpg
-   /images/pc/activities/track/DE-002.jpg
-
-   2 equal files of size 67143
-   /images/locations/pavlovsk/resident/apartment/shulginhome/bigroom/card/sex/cum4.jpg
-   /images/pc/body/cum/cumface/brown/8.jpg
-
-   2 equal files of size 67067
-   /images/locations/city/residential/apartment/home/balcony_naked3.jpg
-   /images/locations/city/residential/apartment/balcony_naked3.jpg
-
-   2 equal files of size 66945
-   /images/characters/pavlovsk/school/boy/artem/sex/park/rapecum1.jpg
-   /images/shared/sex/rape/park_rapecum1.jpg
-
-   2 equal files of size 66932
-   /images/characters/city/anatoly/sex/bossbjcum4.jpg
-   /images/locations/city/anatoly/sex/bossbjcum4.jpg
-
-   2 equal files of size 66609
-   /images/locations/pavlovsk/resident/dimkahome/newyear/sex/pett2.jpg
-   /images/locations/pavlovsk/school/events/newyear/sex/pett2.jpg
-
-   2 equal files of size 66336
-   /images/locations/pavlovsk/school/grounds/track/PC-002.jpg
-   /images/pc/activities/track/PC-002.jpg
-
-   2 equal files of size 66108
-   /images/locations/pavlovsk/school/grounds/track/AP-005.jpg
-   /images/pc/activities/track/AP-005.jpg
-
-   2 equal files of size 65900
-   /images/locations/pavlovsk/park/hugging park 3.jpg
-   /images/locations/pavlovsk/park/hugging_park_3.jpg
-
-   2 equal files of size 65582
-   /images/locations/pavlovsk/school/gym/locker/peekdress2.jpg
-   /images/locations/pavlovsk/school/gym/peekdress2.jpg
-
-   2 equal files of size 65379
-   /images/locations/city/residential/apartment/home/bedr.jpg
-   /images/locations/city/residential/apartment/bedr.jpg
-
-   2 equal files of size 65138
-   /images/characters/pavlovsk/school/teacher/arina/dream/dream5.jpg
-   /images/characters/pavlovsk/school/teacher/arina/sex/dream/dream5.jpg
-
-   2 equal files of size 64714
-   /images/locations/city/citycenter/photo/topnude/1.jpg
-   /images/locations/city/citycenter/photo/nude3.jpg
-
-   2 equal files of size 64647
-   /images/locations/gadukino/sex/mitka/mitkaforestsexccow1_2.2.jpg
-   /images/locations/gadukino/sex/mitka/mitkaforestsex_ow1_2.2.jpg
-
-   2 equal files of size 64458
-   /images/characters/pavlovsk/school/boy/artem/sex/park/rape3.jpg
-   /images/shared/sex/rape/park_rape3.jpg
-
-   2 equal files of size 64140
-   /images/locations/city/citycenter/photo/fashion/4.jpg
-   /images/locations/city/citycenter/photo/fashion4.jpg
-
-   2 equal files of size 64004
-   /images/characters/pavlovsk/school/boy/niko/nikoev/school/exhibition/denis.jpg
-   /images/characters/pavlovsk/school/boy/niko/nikoev/school/exhibition/Vasily.jpg
-
-   2 equal files of size 63675
-   /images/locations/pavlovsk/school/grounds/track/sex/FE-012.jpg
-   /images/pc/activities/track/FE-012.jpg
-
-   2 equal files of size 63497
-   /images/locations/city/citycenter/photo/nude/6.jpg
-   /images/locations/city/citycenter/photo/nude33.jpg
-
-   2 equal files of size 63027
-   /images/locations/city/residential/apartment/stairs/event/floor4_bottle.jpg
-   /images/locations/city/residential/apartment/stairs/sex/floor4_bottle.jpg
-
-   2 equal files of size 62846
-   /images/characters/pavlovsk/school/boy/niko/nikoev/school/hallway/soniaUpset.jpg
-   /images/characters/pavlovsk/school/boy/niko/nikomisc/nikoev/school/hallway/soniaupset.jpg
-
-   2 equal files of size 62384
-   /images/characters/pavlovsk/school/girl/vicky/event/case_gift14.jpg
-   /images/characters/pavlovsk/school/girl/vicky/sex/case_gift14.jpg
-
-   2 equal files of size 62282
-   /images/locations/pavlovsk/school/grounds/track/MA-005.jpg
-   /images/pc/activities/track/MA-005.jpg
-
-   2 equal files of size 62027
-   /images/locations/city/residential/apartment/home/balcony_naked1.jpg
-   /images/locations/city/residential/apartment/balcony_naked1.jpg
-
-   2 equal files of size 61917
-   /images/characters/pavlovsk/school/teacher/rolan/school/rolanmeet15.jpg
-   /images/locations/pavlovsk/resident/apartment/aptrolan/rolanmeet/rolanmeet15.jpg
-
-   2 equal files of size 61545
-   /images/locations/city/residential/apartment/home/kurit.jpg
-   /images/locations/city/residential/apartment/kurit.jpg
-
-   2 equal files of size 61304
-   /images/locations/pavlovsk/school/afterschool/sex/bscum2.jpg
-   /images/shared/sex/cum/mouth/cum50.jpg
-
-   2 equal files of size 61058
-   /images/locations/city/citycenter/photo/topless/2.jpg
-   /images/locations/city/citycenter/photo/topless2.jpg
-
-   2 equal files of size 60993
-   /images/locations/pavlovsk/school/grounds/track/CHR-02.jpg
-   /images/pc/activities/track/CHR-02.jpg
-
-   2 equal files of size 60672
-   /images/shared/home/bathroom/towel_wet.jpg
-   /images/shared/romance/lovers/misc/towel.jpg
-
-   2 equal files of size 60411
-   /images/locations/pavlovsk/resident/apartment/home/kuhrpar.jpg
-   /images/locations/pavlovsk/resident/apartment/ludahome/kitchen.jpg
-
-   2 equal files of size 60208
-   /images/characters/pavlovsk/school/teacher/arina/dream/dream6.jpg
-   /images/characters/pavlovsk/school/teacher/arina/sex/dream/dream6.jpg
-
-   2 equal files of size 59544
-   /images/characters/pavlovsk/school/teacher/rolan/school/rolanmeet11.jpg
-   /images/locations/pavlovsk/resident/apartment/aptrolan/rolanmeet/rolanmeet11.jpg
-
-   2 equal files of size 59445
-   /images/locations/city/residential/apartment/stairs/event/sex/floor4_bj.jpg
-   /images/locations/city/residential/apartment/stairs/sex/floor4_bj.jpg
-
-   2 equal files of size 58801
-   /images/characters/pavlovsk/resident/reks/rex.jpg
-   /images/characters/shared/headshots_main/big57.jpg
-
-   2 equal files of size 58714
-   /images/locations/city/residential/apartment/stairs/event/sex/floor3_fuck.jpg
-   /images/locations/city/residential/apartment/stairs/sex/floor3_fuck.jpg
-
-   2 equal files of size 58625
-   /images/locations/gadukino/village/girl_cow_river.jpg
-   /images/locations/gadukino/village/graze_cow_river.jpg
-
-   3 equal files of size 58018
-   /images/pc/body/hairstyles/lng/curly-bangs-buns/hcol3.jpg
-   /images/pc/body/hairstyles/med/curly-bangs-buns/hcol3.jpg
-   /images/pc/body/hairstyles/medlo/curly-bangs-buns/hcol3.jpg
-
-   2 equal files of size 57523
-   /images/locations/pavlovsk/school/gym/locker/peekdress1.jpg
-   /images/locations/pavlovsk/school/gym/peekdress1.jpg
-
-   2 equal files of size 57179
-   /images/locations/city/citycenter/photo/adverts/advert4.jpg
-   /images/locations/city/citycenter/photo/advert4.jpg
-
-   2 equal files of size 57118
-   /images/locations/pavlovsk/school/classroom/literature/classlit.jpg
-   /images/locations/pavlovsk/school/classroom/classlit.jpg
-
-   2 equal files of size 57008
-   /images/characters/pavlovsk/pavlin/pavlin-bj.jpg
-   /images/characters/pavlovsk/pavlin/pavlin_bj.jpg
-
-   2 equal files of size 56989
-   /images/locations/pavlovsk/school/grounds/track/FE-019.jpg
-   /images/pc/activities/track/FE-019.jpg
-
-   2 equal files of size 56872
-   /images/characters/shared/headshots_main/big32.jpg
-   /images/locations/gadukino/grandparents/babushka.jpg
-
-   2 equal files of size 56849
-   /images/locations/city/citycenter/photo/tastenude/3.jpg
-   /images/locations/city/citycenter/photo/nude6.jpg
-
-   2 equal files of size 56601
-   /images/shared/food/fast_food.jpg
-   /images/shared/food/food.jpg
-
-   2 equal files of size 56535
-   /images/characters/pavlovsk/school/girl/vicky/event/case_gift11.jpg
-   /images/characters/pavlovsk/school/girl/vicky/sex/case_gift11.jpg
-
-   2 equal files of size 56425
-   /images/locations/pavlovsk/school/grounds/track/sex/OR-004.jpg
-   /images/pc/activities/track/OR-004.jpg
-
-   2 equal files of size 56395
-   /images/locations/pavlovsk/resident/apartment/events/sex/evanal.jpg
-   /images/locations/pavlovsk/resident/apartment/events/evanal.jpg
-
-   2 equal files of size 56066
-   /images/locations/pavlovsk/school/grounds/track/AP-009.jpg
-   /images/pc/activities/track/AP-009.jpg
-
-   2 equal files of size 55871
-   /images/characters/pavlovsk/school/boy/vasya/sex/shuglinhome/tv/cum9.jpg
-   /images/pc/body/cum/cumface/black/8.jpg
-
-   2 equal files of size 55709
-   /images/locations/city/citycenter/photo/sexy/3.jpg
-   /images/locations/city/citycenter/photo/ero4.jpg
-
-   2 equal files of size 55527
-   /images/locations/shared/sex/sexdvanadva/New folder/minet15.jpg
-   /images/locations/shared/sex/sexdvanadva/minet15.jpg
-
-   2 equal files of size 55490
-   /images/locations/pavlovsk/school/grounds/track/sex/OR-002.jpg
-   /images/pc/activities/track/OR-002.jpg
-
-   2 equal files of size 55484
-   /images/locations/city/residential/apartment/stairs/event/sex/floor3_bj.jpg
-   /images/locations/city/residential/apartment/stairs/sex/floor3_bj.jpg
-
-   2 equal files of size 55450
-   /images/locations/city/citycenter/photo/tastenude/4.jpg
-   /images/locations/city/citycenter/photo/nude4.jpg
-
-   2 equal files of size 55221
-   /images/locations/pavlovsk/school/grounds/track/sex/FE-009.jpg
-   /images/pc/activities/track/FE-009.jpg
-
-   2 equal files of size 55146
-   /images/characters/pavlovsk/school/boy/niko/kikoev2/dinner/6/rear2.jpg
-   /images/characters/pavlovsk/school/boy/niko/nikoev2/diner/6/anal2.jpg
-
-   2 equal files of size 54805
-   /images/characters/pavlovsk/school/girl/vicky/event/case_gift10.jpg
-   /images/characters/pavlovsk/school/girl/vicky/sex/case_gift10.jpg
-
-   2 equal files of size 54660
-   /images/locations/pavlovsk/resident/dimkahome/newyear/alb.jpg
-   /images/locations/pavlovsk/school/events/newyear/alb.jpg
-
-   2 equal files of size 54459
-   /images/locations/pavlovsk/school/grounds/track/sex/SXFU-002.jpg
-   /images/pc/activities/track/SXFU-002.jpg
-
-   2 equal files of size 54454
-   /images/characters/pavlovsk/school/girl/vicky/event/case_gift13.jpg
-   /images/characters/pavlovsk/school/girl/vicky/sex/case_gift13.jpg
-
-   2 equal files of size 54359
-   /images/characters/pavlovsk/school/girl/albina/sex/prostitute/d.jpg
-   /images/characters/pavlovsk/school/girl/albina/sex/prostitute/threesome.jpg
-
-   2 equal files of size 54245
-   /images/locations/pavlovsk/school/grounds/track/FAM-003.jpg
-   /images/pc/activities/track/FAM-003.jpg
-
-   2 equal files of size 54186
-   /images/characters/pavlovsk/pavlin/pavlin-hj.jpg
-   /images/characters/pavlovsk/pavlin/pavlin_hj.jpg
-
-   2 equal files of size 54085
-   /images/pc/activities/photography/foto/people/5.jpg
-   /images/pc/activities/photography/foto/nush.jpg
-
-   2 equal files of size 54035
-   /images/characters/pavlovsk/school/teacher/rolan/school/rolanmeet14.jpg
-   /images/locations/pavlovsk/resident/apartment/aptrolan/rolanmeet/rolanmeet14.jpg
-
-   2 equal files of size 53971
-   /images/pc/activities/photography/foto/people/1.jpg
-   /images/pc/activities/photography/foto/mother.jpg
-
-   2 equal files of size 53713
-   /images/characters/pavlovsk/school/teacher/rolan/school/rolanmeet7.jpg
-   /images/locations/pavlovsk/resident/apartment/aptrolan/rolanmeet/rolanmeet7.jpg
-
-   2 equal files of size 53578
-   /images/locations/pavlovsk/school/grounds/track/FE-003.jpg
-   /images/pc/activities/track/FE-003.jpg
-
-   2 equal files of size 53509
-   /images/locations/pavlovsk/school/grounds/track/MA-013.jpg
-   /images/pc/activities/track/MA-013.jpg
-
-   2 equal files of size 53282
-   /images/locations/pavlovsk/park/sex/gop/bjbeerbeaten.jpg
-   /images/locations/pavlovsk/park/sex/gop/bjbeerbeaten1.jpg
-
-   2 equal files of size 53137
-   /images/locations/pavlovsk/school/grounds/track/PC-001.jpg
-   /images/pc/activities/track/PC-001.jpg
-
-   2 equal files of size 53002
-   /images/locations/pavlovsk/resident/dimkahome/newyear/tusa9.jpg
-   /images/locations/pavlovsk/school/events/newyear/tusa9.jpg
-
-   2 equal files of size 52934
-   /images/characters/pavlovsk/school/girl/natasha/sex/seethrough01.jpg
-   /images/characters/pavlovsk/school/girl/natasha/seethrough01.jpg
-
-   2 equal files of size 52712
-   /images/locations/pavlovsk/school/grounds/track/DE-001.jpg
-   /images/pc/activities/track/DE-001.jpg
-
-   2 equal files of size 52684
-   /images/characters/pavlovsk/school/girl/vicky/event/case_gift9.jpg
-   /images/characters/pavlovsk/school/girl/vicky/sex/case_gift9.jpg
-
-   2 equal files of size 52338
-   /images/locations/pavlovsk/school/grounds/track/DE-008.jpg
-   /images/pc/activities/track/DE-008.jpg
-
-   2 equal files of size 52332
-   /images/locations/pavlovsk/school/grounds/track/punishment/SP-004.jpg
-   /images/pc/activities/track/SP-004.jpg
-
-   2 equal files of size 52326
-   /images/characters/city/anatoly/sex/bossbj14.jpg
-   /images/locations/city/anatoly/sex/bossbj14.jpg
-
-   2 equal files of size 52302
-   /images/locations/city/residential/apartment/home/balcony_naked2.jpg
-   /images/locations/city/residential/apartment/balcony_naked2.jpg
-
-   2 equal files of size 51505
-   /images/locations/pavlovsk/school/grounds/track/DE-003.jpg
-   /images/pc/activities/track/DE-003.jpg
-
-   2 equal files of size 51424
-   /images/locations/pavlovsk/school/grounds/track/punishment/SP-002.jpg
-   /images/pc/activities/track/SP-002.jpg
-
-   2 equal files of size 51375
-   /images/locations/city/residential/apartment/stairs/event/floor5_couple.jpg
-   /images/locations/city/residential/apartment/stairs/sex/floor5_couple.jpg
-
-   2 equal files of size 51344
-   /images/characters/pavlovsk/school/boy/niko/kikoev2/dinner/6/vag1.jpg
-   /images/characters/pavlovsk/school/boy/niko/nikoev2/diner/5/Vag1.jpg
-
-   2 equal files of size 50697
-   /images/pc/body/pussy/hair/green.jpg
-   /images/pc/body/pussy/hair/green_full.jpg
-
-   2 equal files of size 50594
-   /images/characters/pavlovsk/resident/arthur/sex/cocksuckercum.jpg
-   /images/locations/city/residential/office/sex/guard/bjcum4.jpg
-
-   2 equal files of size 50577
-   /images/locations/pavlovsk/school/grounds/track/MA-008.jpg
-   /images/pc/activities/track/MA-008.jpg
-
-   2 equal files of size 49459
-   /images/locations/city/citycenter/photo/topless/14.jpg
-   /images/locations/city/citycenter/photo/topless14.jpg
-
-   2 equal files of size 49458
-   /images/locations/city/citycenter/photo/special/art1.jpg
-   /images/locations/city/citycenter/photo/art1.jpg
-
-   2 equal files of size 49378
-   /images/locations/pavlovsk/school/grounds/track/DE-004.jpg
-   /images/pc/activities/track/DE-004.jpg
-
-   2 equal files of size 49344
-   /images/locations/city/residential/apartment/home/vanr.jpg
-   /images/locations/city/residential/apartment/vanr.jpg
-
-   2 equal files of size 49026
-   /images/locations/pavlovsk/school/grounds/track/sex/OR-008.jpg
-   /images/pc/activities/track/OR-008.jpg
-
-   2 equal files of size 48958
-   /images/locations/pavlovsk/school/grounds/track/sex/FE-010.jpg
-   /images/pc/activities/track/FE-010.jpg
-
-   2 equal files of size 48939
-   /images/locations/pavlovsk/school/grounds/track/sex/MA-016.jpg
-   /images/pc/activities/track/MA-016.jpg
-
-   2 equal files of size 48436
-   /images/characters/pavlovsk/school/boy/niko/nikomisc/meynold/vicky/vickySmile.jpg
-   /images/characters/pavlovsk/school/boy/niko/nikomisc/meynold/vicky/vickysmile1.jpg
-
-   2 equal files of size 48227
-   /images/characters/shared/headshots_main/big31.jpg
-   /images/locations/gadukino/grandparents/grandpa1.jpg
-
-   2 equal files of size 47983
-   /images/locations/city/citycenter/photo/portraits/katherine_a/2.jpg
-   /images/locations/city/citycenter/photo/portraits/krystal_b/2.jpg
-
-   2 equal files of size 47977
-   /images/locations/pavlovsk/resident/rekshome/party/reksparty_party_home_fun_2_8_8.jpg
-   /images/locations/pavlovsk/resident/rekshome/party/reksparty_party_toilet_5_13.jpg
-
-   2 equal files of size 47964
-   /images/locations/pavlovsk/school/grounds/track/sex/SXFU-004.jpg
-   /images/pc/activities/track/SXFU-004.jpg
-
-   2 equal files of size 47785
-   /images/locations/city/citycenter/photo/bnude/4.jpg
-   /images/locations/city/citycenter/photo/nude38.jpg
-
-   2 equal files of size 47757
-   /images/locations/city/citycenter/photo/topless/12.jpg
-   /images/locations/city/citycenter/photo/topless12.jpg
-
-   2 equal files of size 47651
-   /images/pc/activities/photography/foto/people/3.jpg
-   /images/pc/activities/photography/foto/lazar.jpg
-
-   2 equal files of size 47601
-   /images/locations/pavlovsk/school/grounds/track/NI-003.jpg
-   /images/pc/activities/track/NI-003.jpg
-
-   2 equal files of size 47507
-   /images/locations/pavlovsk/school/grounds/track/FE-005.jpg
-   /images/pc/activities/track/FE-005.jpg
-
-   2 equal files of size 47427
-   /images/locations/pavlovsk/school/grounds/track/punishment/SP-001.jpg
-   /images/pc/activities/track/SP-001.jpg
-
-   2 equal files of size 47376
-   /images/locations/pavlovsk/school/grounds/track/FAM-002.jpg
-   /images/pc/activities/track/FAM-002.jpg
-
-   2 equal files of size 47318
-   /images/locations/pavlovsk/school/grounds/track/PR-004.jpg
-   /images/pc/activities/track/PR-004.jpg
-
-   2 equal files of size 46957
-   /images/characters/pavlovsk/school/teacher/arina/dream/dream8.jpg
-   /images/characters/pavlovsk/school/teacher/arina/sex/dream/dream8.jpg
-
-   2 equal files of size 46890
-   /images/characters/pavlovsk/resident/serge/serge2.jpg
-   /images/characters/shared/headshots_main/big112.jpg
-
-   2 equal files of size 46809
-   /images/pc/body/cum/cumface/blonde/5.jpg
-   /images/shared/sex/cum/facial/facial0,6.jpg
-
-   2 equal files of size 46553
-   /images/locations/pavlovsk/school/lunch/peremena20.jpg
-   /images/locations/pavlovsk/school/lunch/peremena4.jpg
-
-   2 equal files of size 46396
-   /images/characters/pavlovsk/school/teacher/rolan/school/rolanmeet20.jpg
-   /images/locations/pavlovsk/resident/apartment/aptrolan/rolanmeet/rolanmeet20.jpg
-
-   2 equal files of size 46292
-   /images/locations/pavlovsk/school/lunch/peremena10.jpg
-   /images/locations/pavlovsk/school/lunch/peremena17.jpg
-
-   2 equal files of size 46141
-   /images/locations/pavlovsk/school/grounds/track/AP-012.jpg
-   /images/pc/activities/track/AP-012.jpg
-
-   2 equal files of size 46112
-   /images/locations/pavlovsk/resident/dimkahome/newyear/sex/cond.jpg
-   /images/locations/pavlovsk/school/events/newyear/sex/cond.jpg
-
-   2 equal files of size 46100
-   /images/locations/city/citycenter/photo/special/group.jpg
-   /images/locations/city/citycenter/photo/group.jpg
-
-   2 equal files of size 45918
-   /images/characters/shared/boyfriend/groped.jpg
-   /images/locations/shared/boyfriend/groped.jpg
-
-   2 equal files of size 45774
-   /images/locations/city/citycenter/photo/topnude/12.jpg
-   /images/locations/city/citycenter/photo/nude19.jpg
-
-   2 equal files of size 45708
-   /images/locations/city/citycenter/photo/topless/4.jpg
-   /images/locations/city/citycenter/photo/topless4.jpg
-
-   2 equal files of size 45312
-   /images/locations/pavlovsk/resident/apartment/events/sex/evbjn.jpg
-   /images/locations/pavlovsk/resident/apartment/events/evbjn.jpg
-
-   2 equal files of size 45289
-   /images/locations/city/citycenter/photo/topnude/10.jpg
-   /images/locations/city/citycenter/photo/nude15.jpg
-
-   2 equal files of size 45154
-   /images/locations/city/citycenter/photo/portraits/katherine_a/3.jpg
-   /images/locations/city/citycenter/photo/portraits/krystal_b/3.jpg
-
-   2 equal files of size 45074
-   /images/locations/city/residential/apartment/home/vanr2.jpg
-   /images/locations/shared/bathroom/vanr2.jpg
-
-   3 equal files of size 45020
-   /images/pc/body/hairstyles/lng/curly-bangs-buns/hcol2.jpg
-   /images/pc/body/hairstyles/med/curly-bangs-buns/hcol2.jpg
-   /images/pc/body/hairstyles/medlo/curly-bangs-buns/hcol2.jpg
-
-   2 equal files of size 44931
-   /images/locations/pavlovsk/resident/dimkahome/newyear/sex/pett.jpg
-   /images/locations/pavlovsk/school/events/newyear/sex/pett.jpg
-
-   2 equal files of size 44862
-   /images/characters/pavlovsk/school/girl/natasha/sex/seethrough03.jpg
-   /images/characters/pavlovsk/school/girl/natasha/seethrough03.jpg
-
-   2 equal files of size 44615
-   /images/locations/city/citycenter/photo/special/art3.jpg
-   /images/locations/city/citycenter/photo/art3.jpg
-
-   2 equal files of size 44611
-   /images/locations/pavlovsk/resident/dimkahome/newyear/tusa8.jpg
-   /images/locations/pavlovsk/school/events/newyear/tusa8.jpg
-
-   2 equal files of size 44490
-   /images/locations/city/citycenter/photo/adverts/advert3.jpg
-   /images/locations/city/citycenter/photo/advert3.jpg
-
-   2 equal files of size 44382
-   /images/locations/city/citycenter/photo/fashion/2.jpg
-   /images/locations/city/citycenter/photo/fashion2.jpg
-
-   2 equal files of size 44374
-   /images/locations/pavlovsk/school/grounds/track/sex/SXFU-006.jpg
-   /images/pc/activities/track/SXFU-006.jpg
-
-   2 equal files of size 44369
-   /images/characters/pavlovsk/school/girl/vicky/event/case_gift5.jpg
-   /images/characters/pavlovsk/school/girl/vicky/sex/case_gift5.jpg
-
-   2 equal files of size 44270
-   /images/locations/pavlovsk/school/grounds/track/sex/FE-008.jpg
-   /images/pc/activities/track/FE-008.jpg
-
-   2 equal files of size 44264
-   /images/locations/city/citycenter/photo/adverts/advert1.jpg
-   /images/locations/city/citycenter/photo/advert1.jpg
-
-   2 equal files of size 43839
-   /images/locations/pavlovsk/resident/dimkahome/newyear/tusa6.jpg
-   /images/locations/pavlovsk/school/events/newyear/tusa6.jpg
-
-   2 equal files of size 43625
-   /images/locations/city/citycenter/photo/tastenude/1.jpg
-   /images/locations/city/citycenter/photo/nude1.jpg
-
-   2 equal files of size 43520
-   /images/locations/pavlovsk/community/chess/kruchess.jpg
-   /images/locations/pavlovsk/community/kruchess.jpg
-
-   2 equal files of size 43516
-   /images/locations/pavlovsk/school/bathroom/caught.jpg
-   /images/locations/pavlovsk/school/bathroom/caught1.jpg
-
-   2 equal files of size 43465
-   /images/characters/pavlovsk/school/teacher/rolan/school/rolanmeet2.jpg
-   /images/locations/pavlovsk/resident/apartment/aptrolan/rolanmeet/rolanmeet2.jpg
-
-   2 equal files of size 43464
-   /images/characters/pavlovsk/school/boy/vasya/sex/shuglinhome/tv/cum10.jpg
-   /images/pc/body/cum/cumface/brown/10.jpg
-
-   2 equal files of size 43207
-   /images/locations/shared/sex/sexdvanadva/New folder/minet1.jpg
-   /images/locations/shared/sex/sexdvanadva/minet1.jpg
-
-   2 equal files of size 43134
-   /images/locations/pavlovsk/school/grounds/track/MA-014.jpg
-   /images/pc/activities/track/MA-014.jpg
-
-   2 equal files of size 43041
-   /images/characters/pavlovsk/school/teacher/rolan/school/rolanmeet12.jpg
-   /images/locations/pavlovsk/resident/apartment/aptrolan/rolanmeet/rolanmeet12.jpg
-
-   2 equal files of size 43021
-   /images/locations/pavlovsk/school/grounds/track/AP-010.jpg
-   /images/pc/activities/track/AP-010.jpg
-
-   2 equal files of size 42808
-   /images/locations/city/residential/apartment/home/balcony_dressed1.jpg
-   /images/locations/city/residential/apartment/balcony_dressed1.jpg
-
-   2 equal files of size 42770
-   /images/locations/city/citycenter/photo/topless/19.jpg
-   /images/locations/city/citycenter/photo/topless19.jpg
-
-   2 equal files of size 42722
-   /images/locations/pavlovsk/school/gym/locker/lenpeek.jpg
-   /images/locations/pavlovsk/school/gym/lenpeek.jpg
-
-   2 equal files of size 42668
-   /images/locations/shared/sex/sexdvanadva/New folder/minet0.jpg
-   /images/locations/shared/sex/sexdvanadva/minet0.jpg
-
-   2 equal files of size 42587
-   /images/locations/pavlovsk/school/grounds/track/FE-002.jpg
-   /images/pc/activities/track/FE-002.jpg
-
-   2 equal files of size 42569
-   /images/locations/pavlovsk/school/grounds/track/sex/SXFU-001.jpg
-   /images/pc/activities/track/SXFU-001.jpg
-
-   2 equal files of size 42263
-   /images/locations/pavlovsk/school/lunch/peremena18.jpg
-   /images/locations/pavlovsk/school/lunch/peremena6.jpg
-
-   2 equal files of size 42253
-   /images/locations/city/citycenter/photo/seethru/2.jpg
-   /images/locations/city/citycenter/photo/seethru2.jpg
-
-   2 equal files of size 42137
-   /images/locations/pavlovsk/resident/dimkahome/newyear/tit.jpg
-   /images/locations/pavlovsk/school/events/newyear/tit.jpg
-
-   2 equal files of size 42135
-   /images/characters/pavlovsk/school/teacher/rolan/school/rolanmeet9.jpg
-   /images/locations/pavlovsk/resident/apartment/aptrolan/rolanmeet/rolanmeet9.jpg
-
-   2 equal files of size 42101
-   /images/locations/city/citycenter/photo/seethru/1.jpg
-   /images/locations/city/citycenter/photo/seethru1.jpg
-
-   2 equal files of size 41967
-   /images/locations/pavlovsk/resident/dimkahome/newyear/sex/kat.jpg
-   /images/locations/pavlovsk/school/events/newyear/sex/kat.jpg
-
-   2 equal files of size 41857
-   /images/locations/city/citycenter/photo/portraits/katherine_a/5.jpg
-   /images/locations/city/citycenter/photo/portraits/krystal_b/5.jpg
-
-   2 equal files of size 41753
-   /images/pc/activities/phone/selfies/beach/nude/20.jpg
-   /images/pc/activities/phone/selfies/beach/nude/7.jpg
-
-   2 equal files of size 41720
-   /images/locations/city/citycenter/photo/topless/5.jpg
-   /images/locations/city/citycenter/photo/topless5.jpg
-
-   2 equal files of size 41705
-   /images/characters/pavlovsk/school/teacher/rolan/school/rolanmeet25.jpg
-   /images/locations/pavlovsk/resident/apartment/aptrolan/rolanmeet/rolanmeet25.jpg
-
-   2 equal files of size 41515
-   /images/characters/pavlovsk/school/girl/natasha/sex/seethrough02.jpg
-   /images/characters/pavlovsk/school/girl/natasha/seethrough02.jpg
-
-   2 equal files of size 41513
-   /images/locations/pavlovsk/school/grounds/track/sex/SXFU-M02.mp4
-   /images/pc/activities/track/SXFU-M02.mp4
-
-   2 equal files of size 41032
-   /images/locations/city/citycenter/photo/seethru/3.jpg
-   /images/locations/city/citycenter/photo/seethru3.jpg
-
-   2 equal files of size 41030
-   /images/locations/pavlovsk/school/gym/shower/watchkaty.jpg
-   /images/locations/pavlovsk/school/gym/katypeek.jpg
-
-   2 equal files of size 40935
-   /images/locations/pavlovsk/resident/apartment/shulginhome/bigroom/card/sexrough/ass9.jpg
-   /images/pc/body/cum/cumanal/cumanal3.jpg
-
-   2 equal files of size 40905
-   /images/locations/pavlovsk/school/classroom/literature/work2.jpg
-   /images/locations/pavlovsk/school/classroom/work2.jpg
-
-   2 equal files of size 40897
-   /images/locations/pavlovsk/school/grounds/track/FE-017.jpg
-   /images/pc/activities/track/FE-017.jpg
-
-   2 equal files of size 40674
-   /images/locations/city/residential/apartment/stairs/event/floor4_bdsm.jpg
-   /images/locations/city/residential/apartment/stairs/sex/floor4_bdsm.jpg
-
-   2 equal files of size 40654
-   /images/locations/pavlovsk/school/grounds/track/MA-004.jpg
-   /images/pc/activities/track/MA-004.jpg
-
-   2 equal files of size 40514
-   /images/locations/shared/sex/sexdvanadva/uvag12.jpg
-   /images/locations/shared/sex/sexdvanadva/vag12.jpg
-
-   2 equal files of size 40297
-   /images/pc/activities/photography/foto/people/6.jpg
-   /images/pc/activities/photography/foto/eugene.jpg
-
-   2 equal files of size 40235
-   /images/locations/city/citycenter/photo/topnude/6.jpg
-   /images/locations/city/citycenter/photo/nude11.jpg
-
-   2 equal files of size 40169
-   /images/locations/city/residential/apartment/stairs/event/floor5_bdsm.jpg
-   /images/locations/city/residential/apartment/stairs/sex/floor5_bdsm.jpg
-
-   2 equal files of size 40129
-   /images/locations/pavlovsk/school/grounds/track/NI-002.jpg
-   /images/pc/activities/track/NI-002.jpg
-
-   2 equal files of size 39990
-   /images/locations/pavlovsk/school/gym/locker/iripeek.jpg
-   /images/locations/pavlovsk/school/gym/iripeek.jpg
-
-   2 equal files of size 39972
-   /images/locations/pavlovsk/resident/apartment/shulginhome/kuh/help/jara3.jpg
-   /images/locations/pavlovsk/resident/apartment/shulginhome/kuh/help/vert10.jpg
-
-   2 equal files of size 39920
-   /images/locations/pavlovsk/school/grounds/track/AP-004.jpg
-   /images/pc/activities/track/AP-004.jpg
-
-   2 equal files of size 39790
-   /images/locations/pavlovsk/school/grounds/track/AP-007.jpg
-   /images/pc/activities/track/AP-007.jpg
-
-   2 equal files of size 39788
-   /images/locations/pavlovsk/school/grounds/track/AP-008.jpg
-   /images/pc/activities/track/AP-008.jpg
-
-   2 equal files of size 39601
-   /images/characters/pavlovsk/school/girl/natasha/sex/seethroughkitchen01.jpg
-   /images/characters/pavlovsk/school/girl/natasha/seethroughkitchen01.jpg
-
-   2 equal files of size 39564
-   /images/locations/pavlovsk/school/gym/locker/nushpeek.jpg
-   /images/locations/pavlovsk/school/gym/nushpeek.jpg
-
-   2 equal files of size 39485
-   /images/locations/shared/sex/sexdvanadva/New folder/minet13.jpg
-   /images/locations/shared/sex/sexdvanadva/minet13.jpg
-
-   2 equal files of size 39430
-   /images/locations/city/citycenter/photo/topnude/17.jpg
-   /images/locations/city/citycenter/photo/nude23.jpg
-
-   2 equal files of size 39326
-   /images/locations/city/citycenter/photo/topless/11.jpg
-   /images/locations/city/citycenter/photo/topless11.jpg
-
-   2 equal files of size 39300
-   /images/locations/pavlovsk/hotel/hotel.room.best1.jpg
-   /images/locations/pavlovsk/resident/meynolds/bathroom.jpg
-
-   3 equal files of size 39073
-   /images/pc/body/hairstyles/lng/curly-bangs-buns/hcol1.jpg
-   /images/pc/body/hairstyles/med/curly-bangs-buns/hcol1.jpg
-   /images/pc/body/hairstyles/medlo/curly-bangs-buns/hcol1.jpg
-
-   2 equal files of size 39045
-   /images/locations/pavlovsk/resident/apartment/shulginhome/bigroom/card/sex/cum3.jpg
-   /images/pc/body/cum/cumtits/cumtits1.jpg
-
-   2 equal files of size 39019
-   /images/characters/pavlovsk/school/girl/vicky/event/case_gift2.jpg
-   /images/characters/pavlovsk/school/girl/vicky/sex/case_gift2.jpg
-
-   2 equal files of size 38877
-   /images/characters/pavlovsk/school/girl/vicky/event/case_gift6.jpg
-   /images/characters/pavlovsk/school/girl/vicky/sex/case_gift6.jpg
-
-   2 equal files of size 38822
-   /images/locations/pavlovsk/school/grounds/track/NI-001.jpg
-   /images/pc/activities/track/NI-001.jpg
-
-   2 equal files of size 38652
-   /images/characters/pavlovsk/school/teacher/rolan/school/rolanmeet1.jpg
-   /images/locations/pavlovsk/resident/apartment/aptrolan/rolanmeet/rolanmeet1.jpg
-
-   2 equal files of size 38552
-   /images/locations/city/residential/apartment/home/sex/balcony_anal1.mp4
-   /images/locations/city/residential/apartment/sex/balcony_anal1.mp4
-
-   2 equal files of size 38549
-   /images/characters/pavlovsk/resident/vladimir/father.jpg
-   /images/characters/shared/headshots_main/big28.jpg
-
-   2 equal files of size 38549
-   /images/locations/pavlovsk/school/grounds/track/CHR-01.jpg
-   /images/pc/activities/track/CHR-01.jpg
-
-   2 equal files of size 38502
-   /images/locations/pavlovsk/school/grounds/track/FAM-001.jpg
-   /images/pc/activities/track/FAM-001.jpg
-
-   2 equal files of size 38385
-   /images/locations/city/residential/apartment/home/balcony_underwear3.jpg
-   /images/locations/city/residential/apartment/balcony_underwear3.jpg
-
-   2 equal files of size 38354
-   /images/characters/city/jugo/jugopre.jpg
-   /images/system/1_openings/shared/npc_gustav.jpg
-
-   2 equal files of size 38227
-   /images/locations/pavlovsk/school/grounds/track/FE-015.jpg
-   /images/pc/activities/track/FE-015.jpg
-
-   2 equal files of size 38144
-   /images/characters/pavlovsk/school/teacher/rolan/school/rolanmeet5.jpg
-   /images/locations/pavlovsk/resident/apartment/aptrolan/rolanmeet/rolanmeet5.jpg
-
-   2 equal files of size 38115
-   /images/locations/pavlovsk/school/gym/locker/belpeek.jpg
-   /images/locations/pavlovsk/school/gym/belpeek.jpg
-
-   2 equal files of size 38111
-   /images/characters/pavlovsk/resident/misha/misha.jpg
-   /images/characters/shared/headshots_main/big54.jpg
-
-   2 equal files of size 38109
-   /images/locations/pavlovsk/school/grounds/track/AP-011.jpg
-   /images/pc/activities/track/AP-011.jpg
-
-   2 equal files of size 37864
-   /images/locations/city/citycenter/photo/topless/22.jpg
-   /images/locations/city/citycenter/photo/topless22.jpg
-
-   2 equal files of size 37762
-   /images/characters/shared/headshots_main/big63.jpg
-   /images/locations/gadukino/village/mitka.jpg
-
-   2 equal files of size 37712
-   /images/characters/pavlovsk/school/teacher/rolan/school/rolanmeet21.jpg
-   /images/locations/pavlovsk/resident/apartment/aptrolan/rolanmeet/rolanmeet21.jpg
-
-   3 equal files of size 37601
-   /images/locations/city/citycenter/photo/portraits/katherine_a/face.jpg
-   /images/locations/city/citycenter/photo/portraits/krystal_b/talking/face.jpg
-   /images/locations/city/citycenter/photo/portraits/krystal_b/face.jpg
-
-   2 equal files of size 37396
-   /images/locations/pavlovsk/school/gym/locker/albpeek.jpg
-   /images/locations/pavlovsk/school/gym/albpeek.jpg
-
-   2 equal files of size 37324
-   /images/locations/pavlovsk/school/gym/locker/katpeek.jpg
-   /images/locations/pavlovsk/school/gym/katpeek.jpg
-
-   2 equal files of size 37260
-   /images/locations/pavlovsk/school/grounds/track/sex/MA-021.jpg
-   /images/pc/activities/track/MA-021.jpg
-
-   2 equal files of size 37180
-   /images/locations/pavlovsk/school/gym/locker/chrispeek.jpg
-   /images/locations/pavlovsk/school/gym/chrispeek.jpg
-
-   2 equal files of size 36827
-   /images/pc/activities/phone/selfies/beach/nude/21.jpg
-   /images/pc/activities/phone/selfies/beach/nude/6.jpg
-
-   2 equal files of size 36709
-   /images/locations/city/residential/apartment/stairs/event/floor3_ir.jpg
-   /images/locations/city/residential/apartment/stairs/sex/floor3_ir.jpg
-
-   2 equal files of size 36454
-   /images/locations/city/citycenter/photo/portraits/katherine_a/1.jpg
-   /images/locations/city/citycenter/photo/portraits/krystal_b/1.jpg
-
-   2 equal files of size 36441
-   /images/locations/pavlovsk/resident/dimkahome/newyear/vomit.jpg
-   /images/locations/pavlovsk/school/events/newyear/vomit.jpg
-
-   2 equal files of size 36333
-   /images/locations/pavlovsk/resident/dimkahome/newyear/idi.jpg
-   /images/locations/pavlovsk/school/events/newyear/idi.jpg
-
-   2 equal files of size 36311
-   /images/locations/pavlovsk/school/events/newyear/ggkiss.jpg
-   /images/locations/pavlovsk/school/events/girlskiss.jpg
-
-   2 equal files of size 36306
-   /images/locations/city/residential/apartment/home/balcony_dressed2.jpg
-   /images/locations/city/residential/apartment/balcony_dressed2.jpg
-
-   2 equal files of size 36199
-   /images/locations/pavlovsk/resident/apartment/shulginhome/bigroom/card/sex/cum1.jpg
-   /images/pc/body/cum/cumface/blonde/8.jpg
-
-   3 equal files of size 36056
-   /images/pc/body/hairstyles/lng/curly-bangs-buns/hcol0.jpg
-   /images/pc/body/hairstyles/med/curly-bangs-buns/hcol0.jpg
-   /images/pc/body/hairstyles/medlo/curly-bangs-buns/hcol0.jpg
-
-   2 equal files of size 35971
-   /images/locations/pavlovsk/school/grounds/track/sex/OR-006.jpg
-   /images/pc/activities/track/OR-006.jpg
-
-   2 equal files of size 35933
-   /images/locations/city/citycenter/photo/special/art2.jpg
-   /images/locations/city/citycenter/photo/art2.jpg
-
-   2 equal files of size 35871
-   /images/characters/pavlovsk/school/teacher/rolan/school/rolanmeet0.jpg
-   /images/locations/pavlovsk/resident/apartment/aptrolan/rolanmeet/rolanmeet0.jpg
-
-   2 equal files of size 35655
-   /images/characters/pavlovsk/school/boy/niko/nikoev/school/locker/hall10.mp4
-   /images/characters/pavlovsk/school/boy/niko/nikoev/school/locker/lock8.mp4
-
-   2 equal files of size 35610
-   /images/locations/pavlovsk/altschool/ptu_ups.jpg
-   /images/locations/pavlovsk/school/afterschool/ptu_ups.jpg
-
-   2 equal files of size 35515
-   /images/locations/pavlovsk/school/grounds/track/AP-002.jpg
-   /images/pc/activities/track/AP-002.jpg
-
-   2 equal files of size 35419
-   /images/locations/shared/sex/sexdvanadva/anal12.jpg
-   /images/locations/shared/sex/sexdvanadva/uanal12.jpg
-
-   2 equal files of size 35387
-   /images/locations/pavlovsk/school/grounds/track/sex/OR-007.jpg
-   /images/pc/activities/track/OR-007.jpg
-
-   2 equal files of size 35383
-   /images/locations/city/citycenter/photo/bnude/6.jpg
-   /images/locations/city/citycenter/photo/nude40.jpg
-
-   2 equal files of size 35328
-   /images/pc/body/cum/cumface/black/4.jpg
-   /images/shared/sex/cum/facial/facial0,7.jpg
-
-   2 equal files of size 35141
-   /images/locations/city/residential/apartment/stairs/event/sex/floor4_fuck.jpg
-   /images/locations/city/residential/apartment/stairs/sex/floor4_fuck.jpg
-
-   2 equal files of size 34875
-   /images/locations/pavlovsk/school/gym/locker/lizpeek.jpg
-   /images/locations/pavlovsk/school/gym/lizpeek.jpg
-
-   2 equal files of size 34847
-   /images/locations/pavlovsk/school/grounds/track/DE-009.jpg
-   /images/pc/activities/track/DE-009.jpg
-
-   2 equal files of size 34755
-   /images/locations/pavlovsk/school/gym/locker/linpeek.jpg
-   /images/locations/pavlovsk/school/gym/linpeek.jpg
-
-   2 equal files of size 34644
-   /images/locations/pavlovsk/school/grounds/track/punishment/PR-010.jpg
-   /images/pc/activities/track/PR-010.jpg
-
-   2 equal files of size 34640
-   /images/locations/pavlovsk/school/gym/locker/verpeek.jpg
-   /images/locations/pavlovsk/school/gym/verpeek.jpg
-
-   2 equal files of size 34516
-   /images/locations/pavlovsk/school/gym/locker/zinpeek.jpg
-   /images/locations/pavlovsk/school/gym/zinpeek.jpg
-
-   2 equal files of size 34448
-   /images/characters/pavlovsk/school/teacher/rolan/school/rolanmeet4.jpg
-   /images/locations/pavlovsk/resident/apartment/aptrolan/rolanmeet/rolanmeet4.jpg
-
-   2 equal files of size 34334
-   /images/characters/pavlovsk/school/boy/igor/crossdress/kd_2.jpg
-   /images/characters/pavlovsk/school/boy/igor/crossdress/kd_6.jpg
-
-   2 equal files of size 34199
-   /images/characters/city/models/mari/talking/face.jpg
-   /images/characters/city/models/mari/face.jpg
-
-   2 equal files of size 34163
-   /images/locations/city/citycenter/photo/topless/21.jpg
-   /images/locations/city/citycenter/photo/topless21.jpg
-
-   2 equal files of size 34105
-   /images/pc/body/piercings/cli1.jpg
-   /images/pc/body/piercings/g2.jpg
-
-   2 equal files of size 34093
-   /images/locations/pavlovsk/school/grounds/track/sex/OR-005.jpg
-   /images/pc/activities/track/OR-005.jpg
-
-   2 equal files of size 34058
-   /images/locations/pavlovsk/school/grounds/track/MA-001.jpg
-   /images/pc/activities/track/MA-001.jpg
-
-   2 equal files of size 34045
-   /images/locations/pavlovsk/school/gym/locker/natpeek.jpg
-   /images/locations/pavlovsk/school/gym/natpeek.jpg
-
-   2 equal files of size 33996
-   /images/locations/pavlovsk/resident/apartment/shulginhome/bigroom/card/sex/cum6.jpg
-   /images/pc/body/cum/cumtits/cumtits2.jpg
-
-   2 equal files of size 33989
-   /images/locations/pavlovsk/resident/dimkahome/newyear/sex/fuck.jpg
-   /images/locations/pavlovsk/school/events/newyear/sex/fuck.jpg
-
-   2 equal files of size 33942
-   /images/locations/pavlovsk/resident/rekshome/party/party_rex_party_gost_14_3.jpg
-   /images/locations/pavlovsk/resident/rekshome/party/party_rex_party_gost_7_3.jpg
-
-   2 equal files of size 33884
-   /images/locations/pavlovsk/school/grounds/track/sex/FE-007.jpg
-   /images/pc/activities/track/FE-007.jpg
-
-   2 equal files of size 33873
-   /images/locations/pavlovsk/resident/rekshome/party/party_rex_party_gost_14_2.jpg
-   /images/locations/pavlovsk/resident/rekshome/party/party_rex_party_gost_7_2.jpg
-
-   2 equal files of size 33818
-   /images/locations/pavlovsk/resident/apartment/shulginhome/bigroom/card/sexrough/ass1.jpg
-   /images/pc/body/cum/cumanal/cumanal2.jpg
-
-   2 equal files of size 33720
-   /images/characters/pavlovsk/school/teacher/rolan/school/rolanmeet10.jpg
-   /images/locations/pavlovsk/resident/apartment/aptrolan/rolanmeet/rolanmeet10.jpg
-
-   2 equal files of size 33686
-   /images/locations/pavlovsk/school/grounds/track/FE-001.jpg
-   /images/pc/activities/track/FE-001.jpg
-
-   2 equal files of size 33626
-   /images/pc/body/cum/cumface/black/3.jpg
-   /images/shared/sex/cum/facial/facial0,1.jpg
-
-   2 equal files of size 33590
-   /images/locations/pavlovsk/school/gym/locker/julpeek.jpg
-   /images/locations/pavlovsk/school/gym/julpeek.jpg
-
-   2 equal files of size 33559
-   /images/characters/pavlovsk/school/girl/vicky/event/case_gift8.jpg
-   /images/characters/pavlovsk/school/girl/vicky/sex/case_gift8.jpg
-
-   2 equal files of size 33436
-   /images/locations/pavlovsk/school/grounds/track/sex/MA-023.jpg
-   /images/pc/activities/track/MA-023.jpg
-
-   2 equal files of size 33423
-   /images/locations/city/citycenter/photo/topless/13.jpg
-   /images/locations/city/citycenter/photo/topless13.jpg
-
-   2 equal files of size 33273
-   /images/characters/pavlovsk/school/girl/anushka/nush_model/nush_talk.jpg
-   /images/locations/pavlovsk/school/gym/nushwatch1.jpg
-
-   2 equal files of size 33214
-   /images/locations/pavlovsk/school/gym/locker/alypeek.jpg
-   /images/locations/pavlovsk/school/gym/alypeek.jpg
-
-   2 equal files of size 33181
-   /images/characters/pavlovsk/school/girl/vicky/event/case_gift7.jpg
-   /images/characters/pavlovsk/school/girl/vicky/sex/case_gift7.jpg
-
-   2 equal files of size 33136
-   /images/locations/city/citycenter/photo/portraits/jeff_m/talking/19.jpg
-   /images/locations/city/citycenter/photo/portraits/jeff_m/talking/26.jpg
-
-   2 equal files of size 32992
-   /images/locations/pavlovsk/school/lunch/peremena19.jpg
-   /images/locations/pavlovsk/school/lunch/peremena5.jpg
-
-   2 equal files of size 32920
-   /images/characters/pavlovsk/school/boy/vasya/sex/shuglinhome/tv/cum6.jpg
-   /images/pc/body/cum/cumface/blonde/10.jpg
-
-   2 equal files of size 32908
-   /images/locations/city/residential/apartment/stairs/event/sex/floor5_fuck.jpg
-   /images/locations/city/residential/apartment/stairs/sex/floor5_fuck.jpg
-
-   2 equal files of size 32768
-   /images/locations/city/residential/apartment/home/balcony_underwear1.jpg
-   /images/locations/city/residential/apartment/balcony_underwear1.jpg
-
-   2 equal files of size 32688
-   /images/locations/pavlovsk/resident/rekshome/party/party_girls_party_gost_1_2.jpg
-   /images/locations/pavlovsk/resident/rekshome/party/reksparty_4_2.jpg
-
-   2 equal files of size 32606
-   /images/characters/pavlovsk/school/girl/natasha/sex/seethrough00.jpg
-   /images/characters/pavlovsk/school/girl/natasha/seethrough00.jpg
-
-   2 equal files of size 32592
-   /images/characters/pavlovsk/school/boy/kolka/brother.jpg
-   /images/characters/shared/headshots_main/big34.jpg
-
-   2 equal files of size 32518
-   /images/locations/pavlovsk/school/grounds/track/FE-004.jpg
-   /images/pc/activities/track/FE-004.jpg
-
-   2 equal files of size 32473
-   /images/locations/pavlovsk/school/grounds/track/punishment/PR-011.jpg
-   /images/pc/activities/track/PR-011.jpg
-
-   2 equal files of size 32361
-   /images/pc/activities/reading/bed_book_nude.jpg
-   /images/shared/accessories/books/book_nude.jpg
-
-   2 equal files of size 32292
-   /images/characters/pavlovsk/school/boy/niko/kikoev2/dinner/6/ride1.jpg
-   /images/characters/pavlovsk/school/boy/niko/nikoev2/diner/6/ride1.jpg
-
-   2 equal files of size 32258
-   /images/locations/pavlovsk/school/gym/locker/vicpeek.jpg
-   /images/locations/pavlovsk/school/gym/vicpeek.jpg
-
-   2 equal files of size 32235
-   /images/locations/city/citycenter/photo/nude/4.jpg
-   /images/locations/city/citycenter/photo/nude31.jpg
-
-   2 equal files of size 32231
-   /images/pc/body/cum/cumface/blonde/4.jpg
-   /images/shared/sex/cum/facial/facial0,0.jpg
-
-   2 equal files of size 32131
-   /images/locations/city/citycenter/photo/nude/5.jpg
-   /images/locations/city/citycenter/photo/nude32.jpg
-
-   2 equal files of size 32079
-   /images/locations/city/citycenter/photo/topnude/3.jpg
-   /images/locations/city/citycenter/photo/nude8.jpg
-
-   2 equal files of size 32012
-   /images/locations/city/residential/apartment/home/balcony_underwear2.jpg
-   /images/locations/city/residential/apartment/balcony_underwear2.jpg
-
-   2 equal files of size 31682
-   /images/characters/pavlovsk/school/girl/vicky/event/case_gift0.jpg
-   /images/characters/pavlovsk/school/girl/vicky/sex/case_gift0.jpg
-
-   2 equal files of size 31483
-   /images/locations/pavlovsk/resident/apartment/shulginhome/bigroom/card/sex/cum2.jpg
-   /images/pc/body/cum/creampie/cumpussy13.jpg
-
-   2 equal files of size 31326
-   /images/locations/pavlovsk/school/gym/locker/stapeek.jpg
-   /images/locations/pavlovsk/school/gym/stapeek.jpg
-
-   2 equal files of size 31287
-   /images/locations/pavlovsk/school/grounds/track/sex/OR-003.jpg
-   /images/pc/activities/track/OR-003.jpg
-
-   2 equal files of size 31254
-   /images/locations/city/citycenter/photo/lingerie/2.jpg
-   /images/locations/city/citycenter/photo/lingerie2.jpg
-
-   2 equal files of size 31239
-   /images/locations/pavlovsk/altschool/ptu_korr1.jpg
-   /images/locations/pavlovsk/school/afterschool/ptu_korr1.jpg
-
-   2 equal files of size 31226
-   /images/locations/pavlovsk/altschool/ptu_zanato.jpg
-   /images/locations/pavlovsk/school/afterschool/ptu_zanato.jpg
-
-   2 equal files of size 31212
-   /images/locations/city/citycenter/photo/portraits/katherine_a/4.jpg
-   /images/locations/city/citycenter/photo/portraits/krystal_b/4.jpg
-
-   2 equal files of size 31191
-   /images/locations/pavlovsk/resident/rekshome/party/reksparty_party_home_fun_2_8_7.jpg
-   /images/locations/pavlovsk/resident/rekshome/party/reksparty_party_toilet_5_12.jpg
-
-   2 equal files of size 31121
-   /images/locations/city/citycenter/photo/topnude/16.jpg
-   /images/locations/city/citycenter/photo/nude28.jpg
-
-   2 equal files of size 31036
-   /images/locations/pavlovsk/school/grounds/track/sex/MA-019.jpg
-   /images/pc/activities/track/MA-019.jpg
-
-   2 equal files of size 30890
-   /images/locations/city/citycenter/photo/topnude/11.jpg
-   /images/locations/city/citycenter/photo/nude16.jpg
-
-   2 equal files of size 30729
-   /images/locations/city/citycenter/photo/topless/16.jpg
-   /images/locations/city/citycenter/photo/topless16.jpg
-
-   2 equal files of size 30627
-   /images/characters/pavlovsk/school/teacher/rolan/school/rolanmeet24.jpg
-   /images/locations/pavlovsk/resident/apartment/aptrolan/rolanmeet/rolanmeet24.jpg
-
-   2 equal files of size 30232
-   /images/locations/pavlovsk/school/gym/locker/larpeek.jpg
-   /images/locations/pavlovsk/school/gym/larpeek.jpg
-
-   2 equal files of size 30041
-   /images/characters/pavlovsk/school/teacher/arina/dream/dream7.jpg
-   /images/characters/pavlovsk/school/teacher/arina/sex/dream/dream7.jpg
-
-   2 equal files of size 30004
-   /images/locations/pavlovsk/resident/apartment/shulginhome/bigroom/card/sex/cum5.jpg
-   /images/pc/body/cum/cumface/brown/9.jpg
-
-   2 equal files of size 29940
-   /images/locations/pavlovsk/school/grounds/track/sex/MA-017.jpg
-   /images/pc/activities/track/MA-017.jpg
-
-   2 equal files of size 29821
-   /images/characters/pavlovsk/school/boy/vasya/sex/shuglinhome/tv/cum4.jpg
-   /images/pc/body/cum/cumface/blonde/9.jpg
-
-   2 equal files of size 29762
-   /images/locations/city/citycenter/photo/topnude/8.jpg
-   /images/locations/city/citycenter/photo/nude13.jpg
-
-   2 equal files of size 29624
-   /images/locations/pavlovsk/altschool/ptu_urok1.jpg
-   /images/locations/pavlovsk/school/afterschool/ptu_urok1.jpg
-
-   2 equal files of size 29387
-   /images/characters/pavlovsk/school/boy/niko/nikoev/school/locker/hall9.mp4
-   /images/characters/pavlovsk/school/boy/niko/nikoev/school/locker/lock6.mp4
-
-   2 equal files of size 29212
-   /images/locations/pavlovsk/resident/rekshome/party/reksparty_party_home_2_18.jpg
-   /images/locations/pavlovsk/resident/rekshome/party/reksparty_party_home_fun_2_8_1.jpg
-
-   2 equal files of size 29080
-   /images/locations/pavlovsk/school/gym/locker/lerpeek.jpg
-   /images/locations/pavlovsk/school/gym/lerpeek.jpg
-
-   2 equal files of size 29050
-   /images/locations/city/citycenter/photo/special/special1.jpg
-   /images/locations/city/citycenter/photo/special1.jpg
-
-   2 equal files of size 28406
-   /images/characters/pavlovsk/school/teacher/rolan/school/rolanmeet26.jpg
-   /images/locations/pavlovsk/resident/apartment/aptrolan/rolanmeet/rolanmeet26.jpg
-
-   2 equal files of size 28236
-   /images/locations/pavlovsk/resident/rekshome/party/party_rex_party_gost_14_5.jpg
-   /images/locations/pavlovsk/resident/rekshome/party/party_rex_party_gost_7_5.jpg
-
-   2 equal files of size 28179
-   /images/characters/pavlovsk/resident/roma/roma.jpg
-   /images/characters/shared/headshots_main/big56.jpg
-
-   2 equal files of size 28123
-   /images/pc/items/fashionista/panties/58.jpg
-   /images/pc/items/lusso/panties/36.jpg
-
-   2 equal files of size 28090
-   /images/locations/city/citycenter/photo/topless/3.jpg
-   /images/locations/city/citycenter/photo/topless3.jpg
-
-   2 equal files of size 28060
-   /images/locations/city/citycenter/photo/topless/10.jpg
-   /images/locations/city/citycenter/photo/topless10.jpg
-
-   2 equal files of size 28027
-   /images/locations/pavlovsk/school/grounds/track/MA-007.jpg
-   /images/pc/activities/track/MA-007.jpg
-
-   2 equal files of size 28027
-   /images/locations/pavlovsk/school/gym/locker/sonpeek.jpg
-   /images/locations/pavlovsk/school/gym/sonpeek.jpg
-
-   2 equal files of size 27916
-   /images/characters/pavlovsk/school/teacher/rolan/school/rolanmeet28.jpg
-   /images/locations/pavlovsk/resident/apartment/aptrolan/rolanmeet/rolanmeet28.jpg
-
-   2 equal files of size 27701
-   /images/locations/city/citycenter/photo/bnude/5.jpg
-   /images/locations/city/citycenter/photo/nude39.jpg
-
-   2 equal files of size 27576
-   /images/locations/pavlovsk/resident/dimkahome/newyear/tusa5.jpg
-   /images/locations/pavlovsk/school/events/newyear/tusa5.jpg
-
-   2 equal files of size 27514
-   /images/locations/city/citycenter/photo/fashion/5.jpg
-   /images/locations/city/citycenter/photo/fashion5.jpg
-
-   2 equal files of size 27356
-   /images/locations/pavlovsk/resident/rekshome/party/party_girls_party_gost_1_3.jpg
-   /images/locations/pavlovsk/resident/rekshome/party/reksparty_4_8.jpg
-
-   2 equal files of size 27295
-   /images/locations/city/citycenter/photo/topless/1.jpg
-   /images/locations/city/citycenter/photo/topless1.jpg
-
-   2 equal files of size 27229
-   /images/locations/pavlovsk/resident/apartment/garage/father/sex/father.misha1,0.jpg
-   /images/locations/pavlovsk/resident/apartment/garage/father/sex/fathermisha.jpg
-
-   2 equal files of size 27155
-   /images/locations/pavlovsk/school/grounds/track/sex/MA-020.jpg
-   /images/pc/activities/track/MA-020.jpg
-
-   2 equal files of size 27122
-   /images/shared/sex/blowjob/fa6.jpg
-   /images/shared/sex/cum/mouth/cum40.jpg
-
-   2 equal files of size 27084
-   /images/characters/pavlovsk/school/teacher/rolan/school/rolanmeet22.jpg
-   /images/locations/pavlovsk/resident/apartment/aptrolan/rolanmeet/rolanmeet22.jpg
-
-   2 equal files of size 27055
-   /images/characters/pavlovsk/school/boy/niko/nikomisc/meynold/bathroom/door.jpg
-   /images/characters/pavlovsk/school/boy/niko/nikomisc/meynold/bathroom/locked.jpg
-
-   2 equal files of size 27031
-   /images/characters/pavlovsk/school/teacher/rolan/school/rolanmeet23.jpg
-   /images/locations/pavlovsk/resident/apartment/aptrolan/rolanmeet/rolanmeet23.jpg
-
-   2 equal files of size 27023
-   /images/locations/pavlovsk/school/grounds/track/sex/MA-015.jpg
-   /images/pc/activities/track/MA-015.jpg
-
-   2 equal files of size 26929
-   /images/locations/city/citycenter/photo/topless/17.jpg
-   /images/locations/city/citycenter/photo/topless17.jpg
-
-   2 equal files of size 26796
-   /images/locations/city/residential/clinic/sex/exam13.jpg
-   /images/locations/city/residential/clinic/exam13.jpg
-
-   2 equal files of size 26662
-   /images/pc/activities/phone/selfies/bathroom/bath/27.jpg
-   /images/pc/activities/phone/selfies/bathroom/nude/1.jpg
-
-   2 equal files of size 26531
-   /images/locations/pavlovsk/school/grounds/track/sex/MA-018.jpg
-   /images/pc/activities/track/MA-018.jpg
-
-   2 equal files of size 26324
-   /images/locations/city/residential/clinic/sex/exam14.jpg
-   /images/locations/city/residential/clinic/exam14.jpg
-
-   2 equal files of size 26278
-   /images/locations/city/citycenter/photo/sexy/1.jpg
-   /images/locations/city/citycenter/photo/ero2.jpg
-
-   2 equal files of size 25750
-   /images/locations/pavlovsk/resident/rekshome/party/reksparty_party_home_fun_2_8_12.jpg
-   /images/locations/pavlovsk/resident/rekshome/party/reksparty_party_toilet_5_17.jpg
-
-   2 equal files of size 25451
-   /images/pc/activities/photography/foto/people/2.jpg
-   /images/pc/activities/photography/foto/sister.jpg
-
-   2 equal files of size 24933
-   /images/locations/shared/sex/sexdvanadva/New folder/minet11.jpg
-   /images/locations/shared/sex/sexdvanadva/minet11.jpg
-
-   2 equal files of size 24903
-   /images/locations/pavlovsk/school/grounds/track/FE-013.jpg
-   /images/pc/activities/track/FE-013.jpg
-
-   2 equal files of size 24842
-   /images/characters/pavlovsk/school/teacher/rolan/school/rolanmeet6.jpg
-   /images/locations/pavlovsk/resident/apartment/aptrolan/rolanmeet/rolanmeet6.jpg
-
-   2 equal files of size 24645
-   /images/locations/pavlovsk/school/grounds/track/sex/MA-022.jpg
-   /images/pc/activities/track/MA-022.jpg
-
-   2 equal files of size 24506
-   /images/locations/shared/sex/sexdvanadva/New folder/minet26.jpg
-   /images/locations/shared/sex/sexdvanadva/minet26.jpg
-
-   2 equal files of size 24496
-   /images/locations/city/citycenter/photo/portraits/katherine_a/6.jpg
-   /images/locations/city/citycenter/photo/portraits/krystal_b/6.jpg
-
-   2 equal files of size 24276
-   /images/characters/pavlovsk/school/teacher/rolan/school/rolanmeet3.jpg
-   /images/locations/pavlovsk/resident/apartment/aptrolan/rolanmeet/rolanmeet3.jpg
-
-   2 equal files of size 24205
-   /images/locations/pavlovsk/resident/rekshome/party/party_girls_party_gost_1_1.jpg
-   /images/locations/pavlovsk/resident/rekshome/party/reksparty_4_4.jpg
-
-   2 equal files of size 24144
-   /images/locations/pavlovsk/resident/dimkahome/newyear/drunk.jpg
-   /images/locations/pavlovsk/school/events/newyear/drunk.jpg
-
-   2 equal files of size 23905
-   /images/locations/pavlovsk/resident/rekshome/party/reksparty_party_home_fun_2_8_9.jpg
-   /images/locations/pavlovsk/resident/rekshome/party/reksparty_party_toilet_5_14.jpg
-
-   2 equal files of size 23899
-   /images/locations/city/citycenter/photo/nude/3.jpg
-   /images/locations/city/citycenter/photo/nude30.jpg
-
-   2 equal files of size 23782
-   /images/locations/pavlovsk/resident/dimkahome/newyear/vom.jpg
-   /images/locations/pavlovsk/school/events/newyear/vom.jpg
-
-   2 equal files of size 23700
-   /images/locations/city/citycenter/photo/topnude/18.jpg
-   /images/locations/city/citycenter/photo/nude24.jpg
-
-   2 equal files of size 23557
-   /images/locations/city/citycenter/photo/topless/15.jpg
-   /images/locations/city/citycenter/photo/topless15.jpg
-
-   2 equal files of size 23268
-   /images/locations/pavlovsk/resident/rekshome/party/reksparty_party_home_fun_2_8_6.jpg
-   /images/locations/pavlovsk/resident/rekshome/party/reksparty_party_toilet_5_18.jpg
-
-   2 equal files of size 22975
-   /images/locations/city/citycenter/photo/topnude/9.jpg
-   /images/locations/city/citycenter/photo/nude14.jpg
-
-   2 equal files of size 22666
-   /images/pc/activities/phone/selfies/beach/nude/19.jpg
-   /images/pc/activities/phone/selfies/beach/titflash/7.jpg
-
-   2 equal files of size 21741
-   /images/locations/pavlovsk/resident/rekshome/party/reksparty_party_home_fun_2_8_11.jpg
-   /images/locations/pavlovsk/resident/rekshome/party/reksparty_party_toilet_5_16.jpg
-
-   2 equal files of size 21711
-   /images/characters/pavlovsk/school/teacher/rolan/school/rolanmeet27.jpg
-   /images/locations/pavlovsk/resident/apartment/aptrolan/rolanmeet/rolanmeet27.jpg
-
-   2 equal files of size 21588
-   /images/locations/city/citycenter/photo/topless/8.jpg
-   /images/locations/city/citycenter/photo/topless8.jpg
-
-   2 equal files of size 21379
-   /images/locations/pavlovsk/resident/rekshome/party/party_rex_party_gost_14_1.jpg
-   /images/locations/pavlovsk/resident/rekshome/party/party_rex_party_gost_7_1.jpg
-
-   2 equal files of size 21123
-   /images/locations/pavlovsk/resident/rekshome/party/party_rex_party_gost_14_6.jpg
-   /images/locations/pavlovsk/resident/rekshome/party/party_rex_party_gost_7_6.jpg
-
-   2 equal files of size 21077
-   /images/characters/pavlovsk/school/teacher/rolan/school/rolanmeet16.jpg
-   /images/locations/pavlovsk/resident/apartment/aptrolan/rolanmeet/rolanmeet16.jpg
-
-   2 equal files of size 20390
-   /images/locations/pavlovsk/school/grounds/track/FE-006.jpg
-   /images/pc/activities/track/FE-006.jpg
-
-   2 equal files of size 20101
-   /images/characters/pavlovsk/school/teacher/rolan/school/rolanmeet13.jpg
-   /images/locations/pavlovsk/resident/apartment/aptrolan/rolanmeet/rolanmeet13.jpg
-
-   2 equal files of size 19949
-   /images/locations/pavlovsk/resident/apartment/garage/father/sex/father.gar.1,0.jpg
-   /images/locations/pavlovsk/resident/apartment/garage/father/sex/fathergar.jpg
-
-   2 equal files of size 19653
-   /images/locations/pavlovsk/school/grounds/track/AP-006.jpg
-   /images/pc/activities/track/AP-006.jpg
-
-   2 equal files of size 19219
-   /images/characters/pavlovsk/school/teacher/rolan/school/rolanmeet17.jpg
-   /images/locations/pavlovsk/resident/apartment/aptrolan/rolanmeet/rolanmeet17.jpg
-
-   2 equal files of size 18921
-   /images/characters/pavlovsk/school/teacher/rolan/school/rolanmeet8.jpg
-   /images/locations/pavlovsk/resident/apartment/aptrolan/rolanmeet/rolanmeet8.jpg
-
-   2 equal files of size 18886
-   /images/characters/pavlovsk/school/teacher/rolan/school/rolanmeet19.jpg
-   /images/locations/pavlovsk/resident/apartment/aptrolan/rolanmeet/rolanmeet19.jpg
-
-   2 equal files of size 18296
-   /images/locations/city/citycenter/photo/topless/6.jpg
-   /images/locations/city/citycenter/photo/topless6.jpg
-
-   2 equal files of size 18273
-   /images/locations/pavlovsk/resident/rekshome/party/reksparty_party_home_fun_2_8_10.jpg
-   /images/locations/pavlovsk/resident/rekshome/party/reksparty_party_toilet_5_15.jpg
-
-   2 equal files of size 18168
-   /images/locations/pavlovsk/resident/rekshome/party/party_rex_party_gost_14_4.jpg
-   /images/locations/pavlovsk/resident/rekshome/party/party_rex_party_gost_7_4.jpg
-
-   2 equal files of size 18130
-   /images/locations/pavlovsk/police/pavrec.jpg
-   /images/locations/shared/police/pavrec.jpg
-
-   3 equal files of size 17989
-   /images/locations/city/citycenter/photo/fashion/1.jpg
-   /images/locations/city/citycenter/photo/fashion.jpg
-   /images/locations/city/citycenter/photo/fashion1.jpg
-
-   2 equal files of size 17864
-   /images/characters/city/jora/sex/klof10.jpg
-   /images/shared/sex/cum/vagcreampie/klof10.jpg
-
-   2 equal files of size 16723
-   /images/characters/city/jora/sex/bas13.jpg
-   /images/characters/city/jora/sex/vas13.jpg
-
-   2 equal files of size 15484
-   /images/locations/city/industrial/casino/stavkabd.jpg
-   /images/locations/city/industrial/casino/stavkacw.jpg
-
-   2 equal files of size 14140
-   /images/characters/city/jora/sex/bas 27.jpg
-   /images/characters/city/jora/sex/bas27.jpg
-
-   2 equal files of size 13771
-   /images/shared/drinks/tea.jpg
-   /images/shared/food/tea.jpg
-
-   2 equal files of size 12678
-   /images/characters/city/jora/sex/klof11.jpg
-   /images/characters/city/jora/sex/klof7.jpg
-
-   2 equal files of size 9170
-   /images/system/phone/theme/Custom_Voidwalker Red/icon_sms_new.gif
-   /images/system/phone/theme/Custom_Voidwalker Toxic/icon_sms_new.gif
-
-   2 equal files of size 6556
-   /images/locations/pavlovsk/school/grounds/track/sex/CHR-03.jpg
-   /images/pc/activities/track/CHR-03.jpg
-
-   2 equal files of size 6408
-   /images/locations/city/residential/lake/allure/shop_name.png
-   /images/locations/pavlovsk/commercial/allure/shop_name.png
-
-   2 equal files of size 4650
-   /images/system/icons/status/bimbo.png
-   /images/system/icons/bimbo.png
-
-   2 equal files of size 2348
-   /images/system/icons/status/boobs.png
-   /images/system/icons/status/boobs_black.png
-
-   2 equal files of size 1743
-   /images/system/icons/status/commando.png
-   /images/system/icons/status/commando_black.png
- 

+ 57 - 39
glife.qproj

@@ -8,15 +8,17 @@
 	<Location name="begin"/>
 	<Location name="onobjsel"/>
 	<Location name="obj_din"/>
-	<Location name="journal"/>
-	<Location name="journal_work"/>
-	<Location name="journal_school"/>
-	<Location name="journal_uni"/>
-	<Location name="journal_quests"/>
-	<Location name="journal_portfolio"/>
-	<Location name="journal_NPC_information"/>
-	<Location name="Cheatmenu_din"/>
 	<Location name="themes"/>
+	<Folder name="Journal">
+		<Location name="journal"/>
+		<Location name="journal_work"/>
+		<Location name="journal_school"/>
+		<Location name="journal_uni"/>
+		<Location name="journal_quests"/>
+		<Location name="journal_portfolio"/>
+		<Location name="journal_NPC_information"/>
+		<Location name="Cheatmenu_din"/>
+	</Folder>
 	<Folder name="System">
 		<Location name="counter"/>
 		<Location name="loadg"/>
@@ -93,6 +95,7 @@
 		<Location name="AppearanceSystem"/>
 		<Location name="body"/>
 		<Location name="body_desc"/>
+		<Location name="body_structure"/>
 		<Location name="lact_lib"/>
 		<Location name="lact_bp"/>
 		<Location name="body_din"/>
@@ -141,7 +144,7 @@
 		<Location name="$attributes_flamingos_dress"/>
 		<Location name="$attributes_coco_outfits"/>
 		<Location name="$attributes_coco_dress"/>
-		<Location name="$attributes_fashionista"/>
+		<Location name="$attributes_fashionista_dress"/>
 		<Location name="$attributes_fashionista_outfits"/>
 		<Location name="$attributes_moncheri_gown"/>
 		<Location name="$attributes_moncheri_dress"/>
@@ -239,6 +242,9 @@
 		<Location name="telefon"/>
 		<Location name="phone_selfies"/>
 		<Location name="phone_selfies_popup"/>
+		<Location name="SMStext_builder"/>
+		<Location name="SMS_selfies"/>
+		<Location name="SMS_selfies_popup"/>
 	</Folder>
 	<Folder name="Prostitution">
 		<Location name="street_walker"/>
@@ -282,6 +288,7 @@
 		<Location name="intro_sg_select"/>
 		<Location name="intro_sg_select_custom"/>
 		<Location name="intro_city_select"/>
+		<Location name="intro_functions"/>
 	</Folder>
 	<Folder name="NPCManage">
 		<Location name="npccleanc"/>
@@ -344,10 +351,6 @@
 		<Location name="bank"/>
 		<Location name="kiosk"/>
 		<Location name="taxi"/>
-		<Location name="train"/>
-		<Location name="train_incidental"/>
-		<Location name="metro"/>
-		<Location name="metro_events"/>
 		<Location name="events"/>
 		<Location name="flash"/>
 		<Location name="street_event"/>
@@ -358,6 +361,18 @@
 		<Location name="gloryhole"/>
 		<Location name="home_activity"/>
 	</Folder>
+	<Folder name="Transportation">
+		<Location name="transport_functions"/>
+		<Location name="train"/>
+		<Location name="train_events"/>
+		<Location name="train_incidental"/>
+		<Location name="metro"/>
+		<Location name="metro_events"/>
+		<Location name="bus"/>
+		<Location name="bus_events"/>
+		<Location name="bus_incidental"/>
+		<Location name="bicycle"/>
+	</Folder>
 	<Folder name="Post office">
 		<Location name="post_office"/>
 		<Location name="post_master"/>
@@ -422,26 +437,6 @@
 		<Location name="WorkHosp"/>
 		<Location name="worksalon"/>
 	</Folder>
-	<Folder name="Nicholas">
-		<Location name="nichApartment"/>
-		<Location name="nichBathGuest"/>
-		<Location name="nichBathMaster"/>
-		<Location name="nichBathServant"/>
-		<Location name="nichBedroomMaster"/>
-		<Location name="nichBedroomServant"/>
-		<Location name="nichBedroomTanja"/>
-		<Location name="nichChore"/>
-		<Location name="nichClub"/>
-		<Location name="nichCook"/>
-		<Location name="nichGala"/>
-		<Location name="nichKitchen"/>
-		<Location name="nichLivingroom"/>
-		<Location name="nichNicholas"/>
-		<Location name="nichStudy"/>
-		<Location name="nichTanya"/>
-		<Location name="nichTaras"/>
-		<Location name="nichUtil"/>
-	</Folder>
 	<Folder name="Home- City Residental Apartment">
 		<Location name="bedr"/>
 		<Location name="sitr"/>
@@ -515,6 +510,26 @@
 		<Location name="rex_party_smallEvents"/>
 		<Location name="rex_party_sexEvents"/>
 	</Folder>
+	<Folder name="Nicholas">
+		<Location name="nichApartment"/>
+		<Location name="nichBathGuest"/>
+		<Location name="nichBathMaster"/>
+		<Location name="nichBathServant"/>
+		<Location name="nichBedroomMaster"/>
+		<Location name="nichBedroomServant"/>
+		<Location name="nichBedroomTanja"/>
+		<Location name="nichChore"/>
+		<Location name="nichClub"/>
+		<Location name="nichCook"/>
+		<Location name="nichGala"/>
+		<Location name="nichKitchen"/>
+		<Location name="nichLivingroom"/>
+		<Location name="nichNicholas"/>
+		<Location name="nichStudy"/>
+		<Location name="nichTanya"/>
+		<Location name="nichTaras"/>
+		<Location name="nichUtil"/>
+	</Folder>
 	<Folder name="Dima Nosov">
 		<Location name="dimaEv"/>
 		<Location name="dimaHome"/>
@@ -541,6 +556,7 @@
 		<Location name="KatjaHomeTalk"/>
 		<Location name="katja_sex"/>
 		<Location name="Katja_Tanga"/>
+		<Location name="katja_pantyquest"/>
 		<Location name="katja_meynold_schedule"/>
 		<Location name="katja_uni"/>
 		<Location name="katja_uni_sex"/>
@@ -608,6 +624,8 @@
 		<Location name="fbDormD"/>
 		<Location name="fbGar"/>
 		<Location name="zsoft_gopskverGorSlut"/>
+        <Location name="pav_park_meet_event"/>
+        <Location name="pav_park_meet_kol_event"/>
 	</Folder>
 	<Folder name="Employment Systems">
 		<Location name="emp_functions"/>
@@ -682,7 +700,7 @@
 		<Location name="VolleyTrenCentr"/>
 		<Location name="VolleyTrenerSpeak"/>
 		<Location name="Voltrenersex"/>
-		<Location name="chessplay"/>git
+		<Location name="chessplay"/>
 		<Location name="boilerroom"/>
 		<Location name="krupo"/>
 		<Location name="kruchess"/>
@@ -1053,9 +1071,10 @@
 	<Folder name="University Characters">
 		<Location name="vecher"/>
 		<Location name="djibril"/>
+		<Location name="djibrilev1"/>
 		<Location name="gosha"/>
 		<Location name="kendra"/>
-		<Location name="djibrilev1"/>
+		<Location name="sofia"/>
 		<Location name="Vika"/>
 		<Location name="vikaev1"/>
 	</Folder>
@@ -1119,7 +1138,6 @@
 		<Location name="gadriver"/>
 		<Location name="meadow"/>
 		<Location name="gadprostitutes"/>
-		<Location name="bicycle"/>
 		<Location name="gadfield"/>
 		<Location name="gadgarden"/>
 		<Location name="gadmarket"/>
@@ -1356,13 +1374,13 @@
 		<Location name="treeCircActs"/>
 		<Location name="treeCircEntry"/>
 	</Folder>
-	<folder name="Ballet_career">
+	<Folder name="Ballet_career">
 		<Location name="pushkin_ballet_init"/>
 		<Location name="core_library"/>
 		<Location name="ballet_npc"/>
 		<Location name="npc_3501_init"/>
-		<Location name="maya_residence"/>
 		<Location name="npc_3510_init"/>
+		<Location name="maya_residence"/>
 		<Location name="pushkin_ballet_center"/>
 		<Location name="pushkin_ballet_res"/>
 		<Location name="pushkin_ballet_class"/>
@@ -1372,7 +1390,7 @@
 		<Location name="marlilnsky_theatre"/>
 		<Location name="pushkin_theatre"/>
 		<Location name="st_petersburg_canals"/>
-	</folder>
+	</Folder>
 	<Location name="cleanHTML"/>
 	</Structure>
 </QGen-project>

+ 2 - 58
locations/AppearanceSystem.qsrc

@@ -21,7 +21,7 @@ if $ARGS[0] = '':
 	killvar 'groomingPenalty'
 end
 
-if $args[0] = 'UpdateBaseAppearnce':
+if $args[0] = 'UpdateBaseAppearance':
 	!{
 		Base Appearance is updated once a day at midnight and called from cikl
 		Base Appearance is calculated from:
@@ -138,63 +138,7 @@ if $ARGS[0] = 'SetBodyShapeBonus':
 
 	!!Setting the pcs_apprnc bonus based on fat and strength
 	else
-		if pcs_bmi < 16:
-			!! severely underweight
-			tempBodyShapeBonus = -10
-		elseif pcs_bmi < 19:
-			!! underweight
-			tempBodyShapeBonus = 25
-		elseif pcs_bmi < 25:
-			!! healthy weight
-			tempBodyShapeBonus = 50
-		elseif pcs_bmi < 30:
-			!! overweight
-			tempBodyShapeBonus = 25
-		elseif pcs_bmi < 35:
-			!! moderately obese
-			tempBodyShapeBonus = 10
-		elseif pcs_bmi < 40:
-			!! severely obese
-			tempBodyShapeBonus = -15
-		elseif pcs_bmi < 45:
-			!! very severely obese
-			tempBodyShapeBonus = -40
-		else
-			!! morbidly obese
-			tempBodyShapeBonus = -80
-		end
-
-		if succubusflag = 1:
-			tempBodyShapeBonus += 10
-		else
-			if strenbuf > 190:
-				tempBodyShapeBonus -= 130
-			elseif strenbuf > 180:
-				tempBodyShapeBonus -= 100
-			elseif strenbuf > 170:
-				tempBodyShapeBonus -= 75
-			elseif strenbuf > 160:
-				tempBodyShapeBonus -= 60
-			elseif strenbuf > 150:
-				tempBodyShapeBonus -= 45
-			elseif strenbuf <= 5 or strenbuf > 140:
-				tempBodyShapeBonus -= 30
-			elseif strenbuf <= 10:
-				tempBodyShapeBonus -= 20
-			elseif strenbuf <= 15 or strenbuf > 130:
-				tempBodyShapeBonus -= 15
-			elseif strenbuf <= 25:
-				tempBodyShapeBonus -= 10
-			elseif strenbuf <= 35 or strenbuf > 120:
-				tempBodyShapeBonus -= 5
-			elseif strenbuf <= 50 or strenbuf > 110:
-				tempBodyShapeBonus += 0
-			elseif strenbuf <= 70 or strenbuf > 100:
-				tempBodyShapeBonus += 5
-			else
-				tempBodyShapeBonus += 10
-			end
-		end
+		tempBodyShapeBonus = func('body_structure', 'appearance_bonus')
 
 		!!This modifies bodykoef for high or low pcs_mass['body'] values
 		if salocatnow = 0 or salocatnow >= 7:

+ 357 - 36
locations/Cheatmenu_din.qsrc

@@ -209,7 +209,7 @@ $cheatmenu['bodyMod'] = {
 	'Changing body shape does not resize clothes.'
 	'May cause adverse interactions, use at your own risk!'
 	''
-	'You are currently <<$body>>.'
+	'You are currently <<$bodyVars[''desc'']>>.'
 	''
 	'You may select from the following sizes:'
 	''
@@ -727,13 +727,11 @@ $cheatmenu['state'] = {
 			'Lactate Rate: <a href="exec:lactation[''lactaterate''] -= 10000 & dynamic $cheatmenu[''state'']">-10</a> <<lactation[''lactaterate'']/1000>>ml/h'
 		else
 			'Lactate Rate: <a href="exec:lactation[''lactaterate''] -= 10000 & dynamic $cheatmenu[''state'']">-10</a> <<lactation[''lactaterate'']/1000>>ml/h <a href="exec:lactation[''lactaterate''] += 10000 & dynamic $cheatmenu[''state'']">+10</a>'
-			if lactation['caplactaterate'] <= 0:
-				'Cap Lactate Rate: <a href="exec:lactation[''caplactaterate''] = 24 & dynamic $cheatmenu[''state'']">Switch ON</a>'
-			elseif lactation['caplactaterate'] >= 72:
-				'Cap Lactate Rate: <a href="exec:lactation[''caplactaterate''] -= 24 & dynamic $cheatmenu[''state'']">-24h</a> <<lactation[''caplactaterate'']>>h'
-			else
-				'Cap Lactate Rate: <a href="exec:lactation[''caplactaterate''] -= 24 & dynamic $cheatmenu[''state'']">-24h</a> <<lactation[''caplactaterate'']>>h <a href="exec:lactation[''caplactaterate''] += 24 & dynamic $cheatmenu[''state'']">+24h</a>'
-			end
+			'Cap Lactate Rate: ' + _ 
+			iif(lactation['milkprod_type'] = 0 and lactation['caplactaterate'] > 0,'<a href="exec:lactation[''caplactaterate''] -= 2 & dynamic $cheatmenu[''state'']">-2h</a> ','') + _ 
+			iif(lactation['milkprod_type'] = 1 and lactation['caplactaterate'] > 4,'<a href="exec:lactation[''caplactaterate''] -= 2 & dynamic $cheatmenu[''state'']">-2h</a> ','') + _ 
+			iif(lactation['caplactaterate'] > 0,'<<lactation[''caplactaterate'']>>h ','OFF ') + _ 
+			iif(lactation['caplactaterate'] < 72,'<a href="exec:lactation[''caplactaterate''] += 2 & dynamic $cheatmenu[''state'']">+2h</a>','')
 			'<font color="grey">Cap lactate rate makes lactate rate stop growing if <<$pcs_firstname>> needs milking more often.</font>'
 		end
 		'Milk in Breasts: <<lactation[''breastmv'']/1000>>ml'
@@ -782,8 +780,13 @@ $cheatmenu['setLooks'] = {
 }
 
 $cheatmenu['setLooksInput'] = {
-	temp_input = input("Set your <<$ARGS[1]>> level:")
-	gs 'shortgs', 'setStat', $ARGS[0], temp_input
+	$temp_input = $input("Set your <<$ARGS[1]>> level:")
+	if isnum($temp_input) ! 0:
+		gs 'shortgs', 'setStat', $ARGS[0], val($temp_input)
+	elseif $temp_input ! '':
+		msg 'invalid input'
+	end
+	killvar '$temp_input'
 	dynamic $cheatmenu['looks']
 }
 
@@ -836,6 +839,9 @@ $cheatmenu['looks'] = {
 	'<a href="exec:pcs_hgt = input(''Enter <<$pcs_nickname>>s height in centimetres<br><br>(default 170, min 100, max 200, values below 160 and above 180 will cause problems in the calculation of BMI/weight the more you deviate from the default 170)'') & dynamic $cheatmenu[''looks'']">Change <<$pcs_nickname>>''s height</a>'
 	*nl
 	*p 'Musculature (<<stren_plus_lvl>>): ' & dynamic $cheatmenu['printLooksLinks'], 'stren_plus', 'Musculature'
+	*pl '<font color="grey">Allows strength to go past 100'
+	*pl'<font color="red">Negatively</font> affects appearance</font>'
+	*nl
 	*p 'Toned Butt (<<butt_tr_lvl>>): ' & dynamic $cheatmenu['printLooksLinks'], 'butt_tr', 'Toned Butt'
 	*nl
 	'You have <<$titsize>> breasts'
@@ -865,8 +871,8 @@ $cheatmenu['looks'] = {
 	if pcs_lip > 0:'<a href="exec:pcs_lip -= 1 & dynamic $cheatmenu[''looks'']">Shrink lips</a>'
 	*nl
 	'<<$skin>>'
-	if pcs_skin < 900: '<a href="exec:pcs_skin += 200 & gs ''AppearanceSystem'', ''UpdateBaseAppearnce'' & dynamic $cheatmenu[''looks'']">Improve skin</a>'
-	if pcs_skin > 0: '<a href="exec:pcs_skin -= 200 & gs ''AppearanceSystem'', ''UpdateBaseAppearnce'' & dynamic $cheatmenu[''looks'']">Worsen skin</a>'
+	if pcs_skin < 900: '<a href="exec:pcs_skin += 200 & gs ''AppearanceSystem'', ''UpdateBaseAppearance'' & dynamic $cheatmenu[''looks'']">Improve skin</a>'
+	if pcs_skin > 0: '<a href="exec:pcs_skin -= 200 & gs ''AppearanceSystem'', ''UpdateBaseAppearance'' & dynamic $cheatmenu[''looks'']">Worsen skin</a>'
 	if pcs_tan >= 0:'<a href="exec:pcs_tan += 10 & dynamic $cheatmenu[''looks'']">Become tanned</a>'
 	if pcs_tan > 0:'<a href="exec:pcs_tan = 0 & dynamic $cheatmenu[''looks'']">Remove tan</a>'
 	*nl
@@ -1036,10 +1042,15 @@ $cheatmenu['parameters'] = {
 	'waist (pcs_waist) = <<pcs_waist>>'
 	'hips (pcs_hips) = <<pcs_hips>>'
 	'bust - band (pcs_cupsize) = <<pcs_cupsize>>'
-	'bodyVars[''bust_silicone''] = <<bodyVars[''bust_silicone'']>>'
 	'pcs_mass[''bust''] = <<pcs_mass[''bust'']>>'
-	'bodyVars[''bust_magic''] = <<bodyVars[''bust_magic'']>>'
 	'pcs_mass[''bust_gen''] = <<pcs_mass[''bust_gen'']>>'
+	'bodyVars[''bust_magic''] = <<bodyVars[''bust_magic'']>>'
+	'bodyVars[''bust_silicone''] = <<bodyVars[''bust_silicone'']>>'
+	'bodyVars[''bust_other''] = <<bodyVars[''bust_other'']>>'
+	'pcs_mass[''butt''] = <<pcs_mass[''butt'']>>'
+	'pcs_mass[''butt_gen''] = <<pcs_mass[''butt_gen'']>>'
+	'bodyVars[''butt_silicone''] = <<bodyVars[''butt_silicone'']>>'
+	'bodyVars[''butt_other''] = <<bodyVars[''butt_other'']>>'
 	'bodyVars[''vhips''] = <<bodyVars[''vhips'']>>'
 	'bodyVars[''wratio''] = <<bodyVars[''wratio'']>>'
 	'bodyVars[''bratio''] = <<bodyVars[''bratio'']>>'
@@ -1154,14 +1165,24 @@ $cheatmenu['setStat'] = {
 }
 
 $cheatmenu['setStatInput'] = {
-	temp_input = input("Set your <<$ARGS[1]>> level:")
-	gs 'shortgs', 'setStat', $ARGS[0], temp_input
+	$temp_input = $input("Set your <<$ARGS[1]>> level:")
+	if isnum($temp_input) ! 0:
+		gs 'shortgs', 'setStat', $ARGS[0], val($temp_input)
+	elseif $temp_input ! '':
+		msg 'invalid input'
+	end
+	killvar '$temp_input'
 	dynamic $cheatmenu['stats']
 }
 
 $cheatmenu['setStatInputInverted'] = {
-	temp_input = input("Set your <<$ARGS[1]>> level:")
-	gs 'shortgs', 'setStat', $ARGS[0], (100 - temp_input)
+	$temp_input = $input("Set your <<$ARGS[1]>> level:")
+	if isnum($temp_input) ! 0:
+		gs 'shortgs', 'setStat', $ARGS[0], (100 - val($temp_input))
+	elseif $temp_input ! '':
+		msg 'invalid input'
+	end
+	killvar '$temp_input'
 	dynamic $cheatmenu['stats']
 }
 
@@ -1673,7 +1694,7 @@ $cheatmenu['input_time'] = {
 
 $cheatmenu['time'] = {
 	if currtimecheck = 1:
-		if ((year mod 4 = 0) and (year mod 100 ! 0)) or (year mod 400 = 0): 
+		if ((year mod 4 = 0) and (year mod 100 ! 0)) or (year mod 400 = 0):
 			monthsend[2] = 29
 		else
 			monthsend[2] = 28
@@ -1682,13 +1703,13 @@ $cheatmenu['time'] = {
 	gs 'daystart'
 	gs 'outdoors', 'temp_set'
 	gs 'stat'
-	
-	temp_daystart = (year - 2016) * 365
+
+	temp_daystart = (temp_year - 2016) * 365
 	!! leap year correction
-	temp_daystart += (year - 2013) / 4
+	temp_daystart += (temp_year - 2013) / 4
 
 	copyarr 'temp_monthsend', 'monthsend'
-	if ((temp_year mod 4 = 0) and (temp_year mod 100 ! 0)) or (temp_year mod 400 = 0): 
+	if ((temp_year mod 4 = 0) and (temp_year mod 100 ! 0)) or (temp_year mod 400 = 0):
 		temp_monthsend[2] = 29
 	else
 		temp_monthsend[2] = 28
@@ -2027,6 +2048,7 @@ $cheatmenu['cycle'] = {
 $cheatmenu['setting'] = {
 	*clr & cla
 	$BACKIMAGE = ''
+	if $theme['name'] = 'Custom': gs 'themes', 'check_custom_vars' & gs 'themes', 'set_custom' & gs '$menu_obnovit'
 	gs 'obj_din', 'settingtabs'
 	'<center><h1>Gameplay Settings</h1></center>'
 	'<center><table cellspacing="0" cellpadding="20" valign="top"><tr>'
@@ -2095,8 +2117,7 @@ $cheatmenu['display'] = {
 	*clr & cla
 	gs 'obj_din', 'settingtabs'
 	'<center><h1>Display Setting</h1></center>'
-	'<center><table cellspacing="0" cellpadding="20" valign="top"><tr>'
-	'<td cellspacing="0" cellpadding="20" valign="top">'
+	*p '<center><table cellspacing="0" cellpadding="20" valign="top"><tr><td cellspacing="0" cellpadding="20" valign="top">'
 	if usePopUps = 1:
 		'Allow Popup Pictures: Currently ON - <a href="exec:usePopUps = 0 & dynamic $cheatmenu[''display'']">Turn OFF</a>'
 	else
@@ -2130,7 +2151,7 @@ $cheatmenu['display'] = {
 
 	*p iif($theme['name'] = 'Custom', 'Custom&nbsp;', '<a href="exec:gs ''themes'', ''set_custom'' & gs ''$menu_obnovit'' & dynamic $cheatmenu[''display'']">Custom</a>&nbsp;')
 
-	*pl '<a href="exec:msg ''test''"><img src="images/system/image_needed.png" height="<<fsize+2>>"></a>'
+	*pl '<a href="exec:dynamic $cheatmenu[''theme_customize'']"><img src="images/system/ui/preferences<<iif(theme[''is_dark''] = 0, ''_b'', ''_w'')>>.png" height="<<fsize*15/10>>"></a>'
 
 	'<font color="grey">Dynamic theme (default) will change colour based on the game hour.</font>'
 	*nl
@@ -2160,7 +2181,307 @@ $cheatmenu['display'] = {
 	else
 		'Show Debug window on save load: Currently ON - <a href="exec:loadg_show_debug = 0 & debug_warning_closed = 1 & showobjs 0 & dynamic $cheatmenu[''display'']">Turn OFF</a>'
 	end
-	'</tr></table></b></center>'
+	*p '</td></tr></table></center>'
+}
+
+$cheatmenu['theme_customize_input'] = {
+	if $ARGS[0] = 'fname':
+		$temp_input = $trim($input('Enter Font name:'))
+		if $temp_input ! '': $custom_theme['fname'] = $temp_input
+	elseif $ARGS[0] = 'fsize':
+		$temp_input = $trim($input('Enter Font size:'))
+		if $temp_input ! '':
+			if isnum($temp_input):
+				custom_theme['fsize'] = iif(val($temp_input) <= 9, 9, val($temp_input))
+			else
+				msg 'invalid input'
+			end
+		end
+	elseif $ARGS[0] = 'increment':
+		$temp_input = $trim($input('Enter increment:'))
+		if $temp_input ! '':
+			if isnum($temp_input):
+				custom_theme['increment'] = iif(val($temp_input) <= 1, 1, val($temp_input))
+			else
+				msg 'invalid input'
+			end
+		end
+	elseif $ARGS[0] = 'rgb':
+		result = ARGS[2]
+		$temp_input = $ucase($trim($input('Enter <<$ARGS[1]>> color component in 0 - 255 or 00 - FF format')))
+		if $temp_input ! '':
+			if isnum($temp_input) ! 0:
+				if val($temp_input) < 0 or val($temp_input) > 255:
+					msg 'invalid input'
+				else
+					temp_result = val($temp_input)
+				end
+			else
+				if len($temp_input) > 2 or instr('0123456789ABCDEF', $mid($temp_input, 1, 1)) = 0 or instr('0123456789ABCDEF', $mid($temp_input, 2, 1)) = 0:
+					msg 'invalid input'
+				else
+					temp_result = func('shortgs', 'hex_str_to_int', $temp_input)
+				end
+			end
+		end
+		if arrsize('temp_result') = 1:
+			if $ARGS[1] = 'red':
+				result = ((ARGS[2] and (-256)) or temp_result)
+			elseif $ARGS[1] = 'green':
+				result = ((ARGS[2] and (-65281)) or (temp_result * 256))
+			elseif $ARGS[1] = 'blue':
+				result = ((ARGS[2] and (-16711681)) or (temp_result * 65536))
+			end
+		end
+		killvar 'temp_result'
+	elseif $ARGS[0] = 'hex':
+		result = ARGS[1]
+		$temp_input = $ucase($trim($input('Enter color in ABC or AABBCC format')))
+		if $temp_input ! '':
+			$temp_input = $replace($temp_input, '#')
+			temp_length = len($temp_input)
+			if temp_length = 3 or temp_length = 6:
+				temp_index = 1
+				:is_hex_loop
+					if instr('0123456789ABCDEF', $mid($temp_input, temp_index, 1)) = 0:
+						msg 'invalid input' & jump 'invalid_input_exit'
+					end
+				if temp_index < temp_length: temp_index += 1 & jump 'is_hex_loop'
+				killvar 'temp_index'
+
+				if temp_length = 3:
+					$temp_red = $mid($temp_input, 1, 1) & $temp_red = $temp_red + $temp_red
+					$temp_green = $mid($temp_input, 2, 1) & $temp_green = $temp_green + $temp_green
+					$temp_blue = $mid($temp_input, 3, 1) & $temp_blue = $temp_blue + $temp_blue
+				else
+					$temp_red = $mid($temp_input, 1, 2)
+					$temp_green = $mid($temp_input, 3, 2)
+					$temp_blue = $mid($temp_input, 5, 2)
+				end
+
+				result = rgb(func('shortgs', 'hex_str_to_int', $temp_red), func('shortgs', 'hex_str_to_int', $temp_green), func('shortgs', 'hex_str_to_int', $temp_blue))
+
+				killvar '$temp_red' & killvar '$temp_green' & killvar '$temp_blue'
+			else
+				msg 'invalid input'
+			end
+			:invalid_input_exit
+			killvar 'temp_length'
+		end
+	end
+	killvar '$temp_input'
+}
+
+$cheatmenu['extract_color_component'] = {
+	if $ARGS[0] = 'red':
+		result = (ARGS[1] and 255)
+	elseif $ARGS[0] = 'green':
+		result = ((ARGS[1] and 65280) / 256)
+	elseif $ARGS[0] = 'blue':
+		result = ((ARGS[1] and 16711680) / 65536)
+	end
+}
+
+$cheatmenu['theme_customize_increment'] = {
+	if $ARGS[0] = 'rgb':
+		result = dyneval($cheatmenu['extract_color_component'], $ARGS[1], ARGS[2]) + ARGS[3]
+		result = iif(result > 255, result - 256, iif(result < 0, 256 + result, result))
+		if $ARGS[1] = 'red':
+			result = ((ARGS[2] and (-256)) or result)
+		elseif $ARGS[1] = 'green':
+			result = ((ARGS[2] and (-65281)) or (result * 256))
+		elseif $ARGS[1] = 'blue':
+			result = ((ARGS[2] and (-16711681)) or (result * 65536))
+		else
+			result = ARGS[2]
+		end
+	end
+}
+
+$cheatmenu['theme_customize_print_color_line'] = {
+	$result = '<a href="exec: <<$ARGS[1]>> = dyneval($cheatmenu[''theme_customize_increment''], ''rgb'', ''<<$ARGS[0]>>'', <<$ARGS[1]>>, -custom_theme[''increment'']) & dynamic $cheatmenu[''theme_customize'']"><img src="images/system/ui/less<<$icon_selector>>.png" height="<<icon_height>>"></img></a>'
+	$result += '&nbsp;<<dyneval($cheatmenu[''extract_color_component''], ''<<$ARGS[0]>>'', dyneval(''result = <<$ARGS[1]>>''))>>&nbsp;'
+	$result += '<a href="exec: <<$ARGS[1]>> = dyneval($cheatmenu[''theme_customize_increment''], ''rgb'', ''<<$ARGS[0]>>'', <<$ARGS[1]>>, custom_theme[''increment'']) & dynamic $cheatmenu[''theme_customize'']"><img src="images/system/ui/more<<$icon_selector>>.png" height="<<icon_height>>"></img></a>'
+	$result += '&nbsp;'
+	$result += '<a href="exec: <<$ARGS[1]>> = dyneval($cheatmenu[''theme_customize_input''], ''rgb'', ''<<$ARGS[0]>>'', <<$ARGS[1]>>) & dynamic $cheatmenu[''theme_customize'']"><img src="images/system/ui/pencil<<$icon_selector>>.png" height="<<icon_height>>"></img></a>'
+}
+
+$cheatmenu['theme_customize'] = {
+	*clr
+	gs 'themes', 'check_custom_vars'
+	if $theme['name'] = 'Custom': gs 'themes', 'set_custom' & gs '$menu_obnovit'
+
+	menu_page = -1
+	gs 'obj_din', 'settingtabs'
+
+	cla
+	act 'Return': menu_page = 1 & dynamic $cheatmenu['display']
+	act 'Presets': dynamic $cheatmenu['theme_presets']
+	act 'Export': dynamic $cheatmenu['theme_export']
+	act 'Import': killvar 'menu_page' & gt 'initg', 'set_game_set'
+
+	'<center><h1>Customize Theme</h1></center>'
+	*p '<center><table width="90%" cellspacing="0" cellpadding="20" valign="top"><tr><td bgcolor="black" width="50%" cellspacing="0" cellpadding="20" valign="top"><font face="Tahoma" size="4" color="white">'
+
+	$icon_selector = '_w'
+	icon_height = 13
+!!  --- FONT ---
+	*p 'Font Family: <<$custom_theme[''fname'']>>&nbsp;'
+	*pl '<a href="exec: dynamic $cheatmenu[''theme_customize_input''], ''fname'' & dynamic $cheatmenu[''theme_customize'']"><img src="images/system/ui/pencil<<$icon_selector>>.png" height="<<icon_height>>"></img></a>'
+
+	*p 'Font Size:&nbsp;'
+	*p '<a href="exec: custom_theme[''fsize''] = iif(custom_theme[''fsize''] <= 9, 9, custom_theme[''fsize''] - 1) & dynamic $cheatmenu[''theme_customize'']"><img src="images/system/ui/less<<$icon_selector>>.png" height="<<icon_height>>"></img></a>'
+	*p '&nbsp;<<custom_theme[''fsize'']>>&nbsp;'
+	*p '<a href="exec: custom_theme[''fsize''] += 1 & dynamic $cheatmenu[''theme_customize'']"><img src="images/system/ui/more<<$icon_selector>>.png" height="<<icon_height>>"></img></a>'
+	*pl '&nbsp;<a href="exec: dynamic $cheatmenu[''theme_customize_input''], ''fsize'' & dynamic $cheatmenu[''theme_customize'']"><img src="images/system/ui/pencil<<$icon_selector>>.png" height="<<icon_height>>"></img></a>'
+
+!!  --- BCOLOR ---
+	*nl
+	*p 'BG Color: <<func(''shortgs'', ''rgb_to_hex'', custom_theme[''bcolor''])>>&nbsp;'
+	*pl '<a href="exec: custom_theme[''bcolor''] = dyneval($cheatmenu[''theme_customize_input''], ''hex'', custom_theme[''bcolor'']) & dynamic $cheatmenu[''theme_customize'']"><img src="images/system/ui/pencil<<$icon_selector>>.png" height="<<icon_height>>"></img></a>'
+
+	*p 'R:&nbsp;' + dyneval($cheatmenu['theme_customize_print_color_line'], 'red', 'custom_theme[''bcolor'']') + '&nbsp;|&nbsp;'
+	*p 'G:&nbsp;' + dyneval($cheatmenu['theme_customize_print_color_line'], 'green', 'custom_theme[''bcolor'']') + '&nbsp;|&nbsp;'
+	*pl 'B:&nbsp;' + dyneval($cheatmenu['theme_customize_print_color_line'], 'blue', 'custom_theme[''bcolor'']')
+
+!!  --- FCOLOR ---
+	*nl
+	*p 'FG (text) Color: <<func(''shortgs'', ''rgb_to_hex'', custom_theme[''fcolor''])>>&nbsp;'
+	*pl '<a href="exec: custom_theme[''fcolor''] = dyneval($cheatmenu[''theme_customize_input''], ''hex'', custom_theme[''fcolor'']) & dynamic $cheatmenu[''theme_customize'']"><img src="images/system/ui/pencil<<$icon_selector>>.png" height="<<icon_height>>"></img></a>'
+
+	*p 'R:&nbsp;' + dyneval($cheatmenu['theme_customize_print_color_line'], 'red', 'custom_theme[''fcolor'']') + '&nbsp;|&nbsp;'
+	*p 'G:&nbsp;' + dyneval($cheatmenu['theme_customize_print_color_line'], 'green', 'custom_theme[''fcolor'']') + '&nbsp;|&nbsp;'
+	*pl 'B:&nbsp;' + dyneval($cheatmenu['theme_customize_print_color_line'], 'blue', 'custom_theme[''fcolor'']')
+
+!!  --- LCOLOR ---
+	*nl
+	*p 'Link Color: <<func(''shortgs'', ''rgb_to_hex'', custom_theme[''lcolor''])>>&nbsp;'
+	*pl '<a href="exec: custom_theme[''lcolor''] = dyneval($cheatmenu[''theme_customize_input''], ''hex'', custom_theme[''lcolor'']) & dynamic $cheatmenu[''theme_customize'']"><img src="images/system/ui/pencil<<$icon_selector>>.png" height="<<icon_height>>"></img></a>'
+
+	*p 'R:&nbsp;' + dyneval($cheatmenu['theme_customize_print_color_line'], 'red', 'custom_theme[''lcolor'']') + '&nbsp;|&nbsp;'
+	*p 'G:&nbsp;' + dyneval($cheatmenu['theme_customize_print_color_line'], 'green', 'custom_theme[''lcolor'']') + '&nbsp;|&nbsp;'
+	*pl 'B:&nbsp;' + dyneval($cheatmenu['theme_customize_print_color_line'], 'blue', 'custom_theme[''lcolor'']')
+
+!!  --- TABLE BG ---
+	*nl
+	*p 'Table BG: <<func(''shortgs'', ''rgb_to_hex'', custom_theme[''table_bg''])>>&nbsp;'
+	*pl '<a href="exec: custom_theme[''table_bg''] = dyneval($cheatmenu[''theme_customize_input''], ''hex'', custom_theme[''table_bg'']) & dynamic $cheatmenu[''theme_customize'']"><img src="images/system/ui/pencil<<$icon_selector>>.png" height="<<icon_height>>"></img></a>'
+
+	*p 'R:&nbsp;' + dyneval($cheatmenu['theme_customize_print_color_line'], 'red', 'custom_theme[''table_bg'']') + '&nbsp;|&nbsp;'
+	*p 'G:&nbsp;' + dyneval($cheatmenu['theme_customize_print_color_line'], 'green', 'custom_theme[''table_bg'']') + '&nbsp;|&nbsp;'
+	*pl 'B:&nbsp;' + dyneval($cheatmenu['theme_customize_print_color_line'], 'blue', 'custom_theme[''table_bg'']')
+
+!!  --- TABLE BG ALT ---
+	*nl
+	*p 'Alt Table BG: <<func(''shortgs'', ''rgb_to_hex'', custom_theme[''table_bg_alt''])>>&nbsp;'
+	*pl '<a href="exec: custom_theme[''table_bg_alt''] = dyneval($cheatmenu[''theme_customize_input''], ''hex'', custom_theme[''table_bg_alt'']) & dynamic $cheatmenu[''theme_customize'']"><img src="images/system/ui/pencil<<$icon_selector>>.png" height="<<icon_height>>"></img></a>'
+
+	*p 'R:&nbsp;' + dyneval($cheatmenu['theme_customize_print_color_line'], 'red', 'custom_theme[''table_bg_alt'']') + '&nbsp;|&nbsp;'
+	*p 'G:&nbsp;' + dyneval($cheatmenu['theme_customize_print_color_line'], 'green', 'custom_theme[''table_bg_alt'']') + '&nbsp;|&nbsp;'
+	*pl 'B:&nbsp;' + dyneval($cheatmenu['theme_customize_print_color_line'], 'blue', 'custom_theme[''table_bg_alt'']')
+
+!!  --- DARK MODE ---
+	*nl
+	*p 'Dark Mode&nbsp;'
+	if $custom_theme['is_dark'] = '0':
+		*pl '<a href="exec: $custom_theme[''is_dark''] = ''1'' & dynamic $cheatmenu[''theme_customize'']"><img src="images/system/ui/box<<$icon_selector>>.png" height="<<icon_height>>"></img></a>'
+	else
+		*pl '<a href="exec: $custom_theme[''is_dark''] = ''0'' & dynamic $cheatmenu[''theme_customize'']"><img src="images/system/ui/check<<$icon_selector>>.png" height="<<icon_height>>"></img></a>'
+	end
+
+!!  --- INCREMENT ---
+	*nl
+	if custom_theme['increment'] = 0: custom_theme['increment'] = 16
+	*p 'Increment:&nbsp;'
+	*p '<a href="exec: custom_theme[''increment''] = iif(custom_theme[''increment''] <= 1, 1, custom_theme[''increment''] - 1) & dynamic $cheatmenu[''theme_customize'']"><img src="images/system/ui/less<<$icon_selector>>.png" height="<<icon_height>>"></img></a>'
+	*p '&nbsp;<<custom_theme[''increment'']>>&nbsp;'
+	*p '<a href="exec: custom_theme[''increment''] += 1 & dynamic $cheatmenu[''theme_customize'']"><img src="images/system/ui/more<<$icon_selector>>.png" height="<<icon_height>>"></img></a>'
+	*pl '&nbsp;<a href="exec: dynamic $cheatmenu[''theme_customize_input''], ''increment'' & dynamic $cheatmenu[''theme_customize'']"><img src="images/system/ui/pencil<<$icon_selector>>.png" height="<<icon_height>>"></img></a>'
+
+	*p '</font></td>'
+
+!!  --- LOREM IPSUM ---
+	$icon_selector = iif(theme['is_dark'] = 0, '_b', '_w')
+	icon_height = fsize * 15 / 10
+	*p '<td width="50%" cellspacing="0" cellpadding="20" valign="top">'
+
+	*p '"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."'
+
+	*p '<table width="100%" cellspacing="0" cellpadding="20">'
+	*p '<tr><td></td></tr>'
+	$temp_bgcolor = func('themes', 'alt_color', $temp_bgcolor)
+	*p '<tr bgcolor="<<$temp_bgcolor>>"><td>Table Color</td><td align="center" width="6%"><img src="images/system/ui/more<<$icon_selector>>.png" height="<<icon_height>>"></td></tr>'
+
+	$temp_bgcolor = func('themes', 'alt_color', $temp_bgcolor)
+	*p '<tr bgcolor="<<$temp_bgcolor>>"><td>Alt Table Color</td><td align="center" width="6%"><img src="images/system/ui/less<<$icon_selector>>.png" height="<<icon_height>>"></td></tr>'
+
+	$temp_bgcolor = func('themes', 'alt_color', $temp_bgcolor)
+	*p '<tr bgcolor="<<$temp_bgcolor>>"><td>Table Color</td><td align="center" width="6%"><img src="images/system/ui/preferences<<$icon_selector>>.png" height="<<icon_height>>"></td></tr>'
+	*p '</table>'
+
+	*p '</td></tr></table></center>'
+	killvar '$icon_selector' & killvar 'icon_height' & killvar '$temp_bgcolor'
+	*nl
+	'<b>The standard Lorem Ipsum passage, used since the 1500s</b>'
+	*nl
+	'"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."'
+	*nl
+	'<b>Section 1.10.32 of "de Finibus Bonorum et Malorum", written by Cicero in 45 BC</b>'
+	*nl
+	'"Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur?"'
+	*nl
+	'<b>1914 translation by H. Rackham</b>'
+	*nl
+	'"But I must explain to you how all this mistaken idea of denouncing pleasure and praising pain was born and I will give you a complete account of the system, and expound the actual teachings of the great explorer of the truth, the master-builder of human happiness. No one rejects, dislikes, or avoids pleasure itself, because it is pleasure, but because those who do not know how to pursue pleasure rationally encounter consequences that are extremely painful. Nor again is there anyone who loves or pursues or desires to obtain pain of itself, because it is pain, but because occasionally circumstances occur in which toil and pain can procure him some great pleasure. To take a trivial example, which of us ever undertakes laborious physical exercise, except to obtain some advantage from it? But who has any right to find fault with a man who chooses to enjoy a pleasure that has no annoying consequences, or one who avoids a pain that produces no resultant pleasure?"'
+	*nl
+	'<b>Section 1.10.33 of "de Finibus Bonorum et Malorum", written by Cicero in 45 BC</b>'
+	*nl
+	'"At vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis praesentium voluptatum deleniti atque corrupti quos dolores et quas molestias excepturi sint occaecati cupiditate non provident, similique sunt in culpa qui officia deserunt mollitia animi, id est laborum et dolorum fuga. Et harum quidem rerum facilis est et expedita distinctio. Nam libero tempore, cum soluta nobis est eligendi optio cumque nihil impedit quo minus id quod maxime placeat facere possimus, omnis voluptas assumenda est, omnis dolor repellendus. Temporibus autem quibusdam et aut officiis debitis aut rerum necessitatibus saepe eveniet ut et voluptates repudiandae sint et molestiae non recusandae. Itaque earum rerum hic tenetur a sapiente delectus, ut aut reiciendis voluptatibus maiores alias consequatur aut perferendis doloribus asperiores repellat."'
+	*nl
+	'<b>1914 translation by H. Rackham</b>'
+	*nl
+	'"On the other hand, we denounce with righteous indignation and dislike men who are so beguiled and demoralized by the charms of pleasure of the moment, so blinded by desire, that they cannot foresee the pain and trouble that are bound to ensue; and equal blame belongs to those who fail in their duty through weakness of will, which is the same as saying through shrinking from toil and pain. These cases are perfectly simple and easy to distinguish. In a free hour, when our power of choice is untrammelled and when nothing prevents our being able to do what we like best, every pleasure is to be welcomed and every pain avoided. But in certain circumstances and owing to the claims of duty or the obligations of business it will frequently occur that pleasures have to be repudiated and annoyances accepted. The wise man therefore always holds in these matters to this principle of selection: he rejects pleasures to secure other greater pleasures, or else he endures pains to avoid worse pains."'
+}
+
+$cheatmenu['theme_presets'] = {
+	cla
+	act 'Return': dynamic $cheatmenu['theme_customize']
+	act 'White': gs 'themes', 'set_white' & dynamic $cheatmenu['theme_presets_copy']
+	act 'Black': gs 'themes', 'set_black' & dynamic $cheatmenu['theme_presets_copy']
+	act 'Modern Grey': gs 'themes', 'set_gray' & dynamic $cheatmenu['theme_presets_copy']
+}
+
+$cheatmenu['theme_presets_copy'] = {
+	$custom_theme['fname'] = $theme['fname']
+	custom_theme['fsize'] = theme['fsize']
+
+	custom_theme['bcolor'] = theme['bcolor']
+	custom_theme['fcolor'] = theme['fcolor']
+	custom_theme['lcolor'] = theme['lcolor']
+
+	custom_theme['table_bg'] = theme['table_bg']
+	custom_theme['table_bg_alt'] = theme['table_bg_alt']
+
+	$custom_theme['is_dark'] = str(theme['is_dark'])
+
+	gs 'themes', 'set_custom'
+	dynamic $cheatmenu['theme_customize']
+}
+
+$cheatmenu['theme_export'] = {
+	*clr & cla
+	act 'Return': dynamic $cheatmenu['theme_customize']
+	"$custom_theme['fname'] = '<<$custom_theme['fname']>>'"
+	"custom_theme['fsize'] = <<custom_theme['fsize']>>"
+	""
+	"custom_theme['bcolor'] = <<custom_theme['bcolor']>>"
+	"custom_theme['fcolor'] = <<custom_theme['fcolor']>>"
+	"custom_theme['lcolor'] = <<custom_theme['lcolor']>>"
+	""
+	"custom_theme['table_bg'] = <<custom_theme['table_bg']>>"
+	"custom_theme['table_bg_alt'] = <<custom_theme['table_bg_alt']>>"
+	""
+	"$custom_theme['is_dark'] = '<<$custom_theme['is_dark']>>'"
 }
 
 $cheatmenu['status'] = {
@@ -2216,7 +2537,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
@@ -2227,15 +2548,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:
@@ -2405,7 +2726,7 @@ $cheatmenu['pain'] = {
 	'pain[head] = <<pain[''head'']>> <a href="exec:pain[''head''] -= 10 & dynamic $cheatmenu[''pain'']">-10</a> <a href="exec:pain[''head''] += 10 & dynamic $cheatmenu[''pain'']">+10</a>'
 	'pain[hair] = <<pain[''hair'']>> <a href="exec:pain[''hair''] -= 10 & dynamic $cheatmenu[''pain'']">-10</a> <a href="exec:pain[''hair''] += 10 & dynamic $cheatmenu[''pain'']">+10</a>'
 	'pain[ears] = <<pain[''ears'']>> <a href="exec:pain[''ears''] -= 10 & dynamic $cheatmenu[''pain'']">-10</a> <a href="exec:pain[''ears''] += 10 & dynamic $cheatmenu[''pain'']">+10</a>'
-	'pain[eyebrows] = <<pain[''ears'']>> <a href="exec:pain[''eyebrows''] -= 10 & dynamic $cheatmenu[''pain'']">-10</a> <a href="exec:pain[''eyebrows''] += 10 & dynamic $cheatmenu[''pain'']">+10</a>'
+	'pain[eyebrows] = <<pain[''eyebrows'']>> <a href="exec:pain[''eyebrows''] -= 10 & dynamic $cheatmenu[''pain'']">-10</a> <a href="exec:pain[''eyebrows''] += 10 & dynamic $cheatmenu[''pain'']">+10</a>'
 	'pain[eyes] = <<pain[''eyes'']>> <a href="exec:pain[''eyes''] -= 10 & dynamic $cheatmenu[''pain'']">-10</a> <a href="exec:pain[''eyes''] += 10 & dynamic $cheatmenu[''pain'']">+10</a>'
 	'pain[cheeks] = <<pain[''cheeks'']>> <a href="exec:pain[''cheeks''] -= 10 & dynamic $cheatmenu[''pain'']">-10</a> <a href="exec:pain[''cheeks''] += 10 & dynamic $cheatmenu[''pain'']">+10</a>'
 	'pain[nose] = <<pain[''nose'']>> <a href="exec:pain[''nose''] -= 10 & dynamic $cheatmenu[''pain'']">-10</a> <a href="exec:pain[''nose''] += 10 & dynamic $cheatmenu[''pain'']">+10</a>'
@@ -2445,7 +2766,7 @@ $cheatmenu['pain'] = {
 	'You may still have pain from gaping or having been spanked, you can clear these using "Cure all ailments." in "Cheat Menu - Character State Changes"'
 	'You currently have vaginal gaping of <<vgape>>'
 	'You currently have anal gaping of <<agape>>'
-	'You currently have spanked level <<spanked>>'	
+	'You currently have spanked level <<spanked>>'
 }
 
 $cheatmenu['DNA'] = {
@@ -3283,7 +3604,7 @@ $cheatmenu['about'] = {
 	gs 'addbuilddate'
 	'<center><h1>About Window</h1></center>'
 	'<center><table cellspacing="0" cellpadding="20" valign="top">'
-	'<tr><td><h3><center>Girl Life version <<version_major>>.<<version_minor>>.<<version_revision>>.<<version_patch>></center></h3></td></tr>'
+	'<tr><td><h3><center>Girl Life version <<version_major+"."+version_minor+"."+version_revision+"."+version_patch+iif($git_hash ! "", "<br>"+$git_hash+" (dev build)", "")>></center></h3></td></tr>'
 	'<tr><td><h3><center>built on <<$builddate>></center></h3></td></tr>'
 	'<tr><td><h5><center>if loaded so it was the save from</center></h5></td></tr>'
 	'<tr><td cellspacing="0" cellpadding="20" valign="top"><center><<$version>></center></td></tr>'
@@ -3305,7 +3626,7 @@ $cheatmenu['items'] = {
 	if showPharmacyItems = 1:
 		'<a href = "exec: showPharmacyItems = 0 & dynamic $cheatmenu[''items'']">Hide Details </a>'
 		*pl 'Morning after pill: <a href="exec:mc_inventory[''morning_after_pill'']=input(''Set number'') & dynamic $cheatmenu[''items'']"><b> <<mc_inventory[''morning_after_pill'']>> </b></a>'
-		*pl 'Condoms: <a href="exec:mc_inventory[''equipped_condoms'']=input(''Set number'') & dynamic $cheatmenu[''items'']"><b> <<mc_inventory[''equipped_condoms'']>> </b></a>'
+		*pl 'Condoms: <a href="exec:mc_inventory[''normal_condoms'']=input(''Set number'') & dynamic $cheatmenu[''items'']"><b> <<mc_inventory[''normal_condoms'']>> </b></a>'
 		*pl 'Pregnancy test: <a href="exec:mc_inventory[''pregnancy_test'']=input(''Set number'') & dynamic $cheatmenu[''items'']"><b> <<mc_inventory[''pregnancy_test'']>> </b></a>'
 		*pl 'Birth control pills: <a href="exec:mc_inventory[''contraceptive_pill'']=input(''Set number'') & dynamic $cheatmenu[''items'']"><b> <<mc_inventory[''contraceptive_pill'']>> </b></a>'
 		*pl 'Antibiotics: <a href="exec:mc_inventory[''antibiotics'']=input(''Set number'') & dynamic $cheatmenu[''items'']"><b> <<mc_inventory[''antibiotics'']>> </b></a>'

+ 313 - 13
locations/Cum_Manage.qsrc

@@ -106,15 +106,19 @@ if $ARGS[0] = '':
 	stat['cum_count'] += 1
 	condom_break = 0
 
+!!{ no STDs from NPC you know }
+	if (mid($boy,1,1) = 'A' or mid($boy,1,1) = 'B') and isnum(mid($boy,2,1)) ! 0: cumnostd = 1
+	cumnostd = min(1, max(cumnostd, sexpartkno))
+
 !!{	Here we define our important variables.}
 	dick = npc_dick[$boy]
 	if sexvolume <= 0: sexvolume = 40
 	if sexspecpot = 0: sexspecpot = npc_spermpot[$boy]
 	if sexspecpot = 0: sexspecpot = sexvolume * rand(250, 300)
 	if sexspecpot < 0: sexspecpot = 0
-	if vibratorIN = 1 and spafinloc = 0 and replace_vib = 0: vibratorIN = 0
-
-	if analplugIN = 1 and spafinloc = 3 and replace_analplug = 0: analplugIN = 0
+	if vibratorIN = 1 and spafinloc = 0: vibratorIN = 0
+	if isprok = 1 and spafinloc = 0: isprok = 0
+	if analplugIN = 1 and spafinloc = 3: analplugIN = 0
 
 !!{	Set the cum array temp to the current size of the cum array to add a new entry to the end of file. Then checks to see if you are on the pill. If you are and there is no contraception used, it flags this as a "done with pill" act, which means a pregnancy will be a pill failure.}
 
@@ -525,7 +529,7 @@ if $ARGS[0] = 'cumeater_icon':
 	*nl
 	j = 0
 	:cumeater_icon_jump
-	if cumloc[j] > 0 and j ! 12: gs 'cum_manage', 'cumeater', j
+	if cumloc[j] > 0 and j <> 12 and ((j <> 0 and j <> 3) or FUNC('Cum_Manage', 'check_innards', j) = 1 or cheatKlisma = 0): gs 'cum_manage', 'cumeater', j
 	if j < 17: j += 1 & jump 'cumeater_icon_jump'
 end
 
@@ -535,6 +539,7 @@ if $ARGS[0] = 'cumeater':
 
 	if i ! -1 and i < arrsize('sparrloc'):
 		cumloc[12] = 1
+		spafinloc = 12 & sexvolume = sparrvol[i] & sexunaware = 0 & sexspecpot = -1 & cumarrnam = sparrnam[i] & cumarrcpt = sparrppt[i] & cumarrkno = sparridt[i] & cumarrage = sparrage[i] & cumnostd = 1 & gs 'Cum_Manage'
 		pcs_breath = 0
 		$part = ''
 
@@ -582,7 +587,11 @@ if $ARGS[0] = 'cumeater':
 				'You collect the sperm from your <<$part>> with your fingers and lick them, enjoying the tart taste.'
 			end
 
-			gs 'cum_cleanup', 'cleanloc', cloc
+			if FUNC('Cum_Manage', 'check_innards', cloc) = 1 and cheatKlisma = 1:
+				cumspclnt = 15 & gs 'cum_cleanup'
+			elseif (cloc <> 0 and cloc <> 3) or cheatKlisma = 0:
+				gs 'cum_cleanup', 'cleanloc', cloc
+			end
 		end
 
 		minut += 2
@@ -677,6 +686,9 @@ if $ARGS[0] = 'cum_stat_display':
 	$stat_cum_text = ''
 	stat_visible_cum = 0
 	stat_cumloc_check = 0
+	cumsumbod = 0
+	cumsumvag = 0
+	cumsumass = 0
 
 	i = 0
 	:cumlocloop
@@ -687,7 +699,7 @@ if $ARGS[0] = 'cum_stat_display':
 			$txtloc_adj = 'all over '
 			$icon_txtloc = 'your labia'
 			$txtloc = 'your <a href="exec:view''images/pc/body/cum/cumpussy/cumpus'+rand(1,4)+'.jpg''">labia</a>'
-		elseif i = 2:
+		elseif i = 2 and PCloPanties > 0:
 			$txtloc_adj = 'across '
 			$txtloc = 'the front of your panties'
 			$icon_txtloc = $txtloc
@@ -699,15 +711,15 @@ if $ARGS[0] = 'cum_stat_display':
 			$txtloc_adj = 'all over '
 			$icon_txtloc = 'your butt'
 			$txtloc = 'your <a href="exec:view''images/pc/body/cum/cumass/cumass'+rand(1,6)+'.jpg''">butt</a>'
-		elseif i = 5:
+		elseif i = 5 and PCloPanties > 0:
 			$txtloc_adj = 'painting '
 			$txtloc = 'the back of your panties'
 			$icon_txtloc = $txtloc
-		elseif i = 6:
+		elseif i = 6 and PCloPants > 0:
 			$txtloc_adj = 'on '
 			$icon_txtloc = 'your clothes near your groin'
 			$txtloc = 'your <a href="exec:view''images/pc/body/cum/cumclothes/'+rand(1,3)+'.jpg''">clothes near your groin</a>'
-		elseif i = 7:
+		elseif i = 7 and $clothingworntype <> 'nude':
 			$txtloc_adj = 'on '
 			$icon_txtloc = 'your clothes'
 			$txtloc = 'your <a href="exec:view''images/pc/body/cum/cumclothes/cumclothes'+rand(1,21)+'.jpg''">clothes</a>'
@@ -793,11 +805,14 @@ if $ARGS[0] = 'cum_stat_display':
 
 				!! if sperm age stage is 4, it means inside the body
 				if j = 4:
-					if (vibratorIN = 1 and i = 0) or (analplugin = 1 and i = 3):
+					cumsumbod += cumvolume['<<i>>:<<j>>']
+					cumsumvag += iif(i=0,cumvolume['<<i>>:<<j>>'],0)
+					cumsumass += iif(i=3,cumvolume['<<i>>:<<j>>'],0)
+					if ((vibratorIN = 1 or isprok = 1) and i = 0) or (analplugin = 1 and i = 3):
 						$txtproxy = 'being plugged in '
-					elseif i = 0 and cumvolume['<<i>>:<<j>>'] < pcs_vag*5:
+					elseif i = 0 and cumvolume['<<i>>:<<j>>'] < FUNC('Cum_Manage', 'check_innards', 0, 1):
 						$txtproxy = 'staying inside '
-					elseif i = 3 and pcs_ass <= 25:
+					elseif i = 3 and cumvolume['<<i>>:<<j>>'] < FUNC('Cum_Manage', 'check_innards', 3, 1):
 						$txtproxy = 'staying inside '
 					else
 						if cumvolume['<<i>>:<<j>>'] > 250:
@@ -821,6 +836,7 @@ if $ARGS[0] = 'cum_stat_display':
 					end
 					if cumcondslip_deep > (vagina / 2): $txtproxy += 'deep '
 				elseif j < 4 and j > 0:
+					cumsumbod += cumvolume['<<i>>:<<j>>']
 					!!amount setting
 					if cumvolume['<<i>>:<<j>>'] > 160:
 						!! 10 ml, about two load, flowing
@@ -912,7 +928,10 @@ if $ARGS[0] = 'cum_stat_display':
 					end
 				end
 				$icon_txtiscum = $txtiscum
-				if j <= 4 and pcs_traits['cumeater'] = 1 and $txtiscum = 'cum': $txtiscum = '<a href="exec:gs ''cum_manage'', ''cumeater'', <<i>>"><font color=#0064FF>' + $txtiscum + '</font></a>'
+				if j <= 4 and pcs_traits['cumeater'] = 1 and $txtiscum = 'cum' _ 
+				and FUNC('Cum_Manage', 'check_private', i) = 1 and ((i <> 0 and i <> 3) or FUNC('Cum_Manage', 'check_innards', i) = 1 or cheatKlisma = 0):
+					$txtiscum = '<a href="exec:gs ''cum_manage'', ''cumeater'', <<i>>"><font color=#0064FF>' + $txtiscum + '</font></a>'
+				end
 				if $txtperson ! '':
 					$txtperson = ' from ' + $txtperson
 				end
@@ -935,6 +954,14 @@ if $ARGS[0] = 'cum_stat_display':
 				end
 			end
 		if j < 7: j+=1 & jump 'ageloop'
+
+		if stat_cumloc_check = 1 and cheatKlisma = 1 and (FUNC('Cum_Manage', 'check_private', i) = 0 _ 
+		or (i <> 0 and cumsumass = 0 and cumsumvag > 0 and FUNC('Cum_Manage', 'check_innards', 0) = 0) _ 
+		or (i <> 3 and cumsumvag = 0 and cumsumass > 0 and FUNC('Cum_Manage', 'check_innards', 3) = 0) _ 
+		or (i > 3 and cumsumvag > 0 and FUNC('Cum_Manage', 'check_innards', 0) = 0 and cumsumass > 0 and FUNC('Cum_Manage', 'check_innards', 3) = 0)):
+			stat_cumloc_check = 0
+		end
+
 	if i < 18: i+=1 & jump 'cumlocloop'
 	killvar 'i'
 	killvar 'j'
@@ -1024,5 +1051,278 @@ if $ARGS[0] = 'cum_stat_display':
 	cum_vol['condom_in_pussy'] = cumvol[17]
 end
 
+if $ARGS[0] = 'check_private':
+!! Checks whether the current location is private for cleaning cum in intimate places
+!! ARGS[1] - cum location (see cum_cleanup)
+!! no ARGS[1] means 0, means vagina, means you must be in a private location to interact
+!! FUNC('Cum_Manage', 'check_private') = 1
+!! FUNC('Cum_Manage', 'check_private', 7) = 1
+
+	RESULT = 0
+
+	if $location_type = 'private' or $location_type = 'private_indoors' or $location_type = 'private_shared' or $location_type = 'bathroom': RESULT = 1
+	if ARGS[1] > 5 and ARGS[1] <> 15 and ARGS[1] <> 17: RESULT = 1
+
+end
+
+if $ARGS[0] = 'check_innards':
+!! Cum overflow check inside vagina or anus
+!! ARGS[1] - 0 (vagina) or 3 (anus)
+!! ARGS[2] - return max capacity
+!! capvag - vagina max capacity
+!! capanus - anus max capacity
+!! FUNC('Cum_Manage', 'check_innards') = 1
+!! FUNC('Cum_Manage', 'check_innards', 3) = 1
+!! FUNC('Cum_Manage', 'check_innards', 0, 1) <= cumsumvag
+
+	capvag  = pcs_vag*3 - vgape*30 - min(100,pcs_horny)/10
+	capanus = pcs_ass*6 - agape*40
+	RESULT = 0
+
+	if ARGS[1] = 0:
+		if ARGS[2] > 0:
+			RESULT = capvag
+		elseif cumsumvag >= capvag and isprok = 0 and vibratorIN = 0:
+			RESULT = 1
+		end
+	elseif ARGS[1] = 3:
+		if ARGS[2] > 0:
+			RESULT = capanus
+		elseif cumsumass >= capanus and analplugin = 0:
+			RESULT = 1
+		end
+	end
+
+	killvar 'capvag'
+	killvar 'capanus'
+end
+
+if $ARGS[0] = 'cum_decay':
+!! ARGS[1] forced cum leak (sex intercourse) in values like 20-100
+
+	cumforced = ARGS[1]
+	if (menu_off = 1 or cumdectime+15 > totminut) and cumforced = 0: exit
+
+	if arrsize('sparrvol') > 0:
+		cumsumvag = 0
+		cumsumass = 0
+        killvar 'cumloc'
+        killvar 'cumvol'
+		i = 0
+
+		!!go through every location
+		:sparrvolloop
+			!!start from the freshest load
+			idx = arrsize('sparrloc')-1
+			:sparrlocloop
+				!!if the currently examined load loaction is the location of the current cycle, execute
+				if sparrloc[idx] = i and sparrvol[idx] > 0:
+					!! 0 = 'In your Vagina'
+					if i = 0:
+						!! passive absorption, succubus has its own
+						!! InSleep - increase the amount during sleep, isprok - tampon absorption
+						if succubusflag = 0:
+							cumamount = (totminut-cumdectime)/15 * max(rand(0,1), rand(sparrvol[idx]/60, sparrvol[idx]/30) + rand(0, InSleep*rand(1,3)) + isprok*rand(5,10) + rand(0, iif(pcs_hydra<30,(30-pcs_hydra)/10,0)) + rand(0, iif(pcs_horny<100,(100-pcs_horny)/20,0)))
+							sparrvol[idx] -= cumamount
+						end
+
+						if sparrvol[idx] > 0:
+							cumsumvag += sparrvol[idx]
+							!! seeping out
+							if FUNC('Cum_Manage', 'check_innards', 0) = 1 or cumforced/rand(2,3) > sparrvol[idx]:
+								cumamount = min(sparrvol[idx]*3/2, (totminut-cumdectime)/15 * max(rand(1,3), rand(sparrvol[idx]/pcs_vag, vgape*40) - InSleep*rand(2,5) + iif(pcs_horny>50, min(100,pcs_horny)/10 - 4,0)) + cumforced/rand(5,10))
+								sparrvol[idx] -= cumamount & cumsumvag -= cumamount
+								cumvol[0] -= cumamount
+
+								!! 1 = 'On your labia'
+								sexvolume = max(cumamount/10, cumamount/2 - iif(cumforced=0,isprokp*rand(10,20),0))
+								if sexvolume > 0:
+									spafinloc = 1
+									sexunaware = iif(cumforced=0,iif(rand(0,4)=1 or sparridt[idx]=-2,1,0),0)
+									sexspecpot = -1 & cumarrnam = sparrnam[idx] & cumarrcpt = 0 & cumarrkno = sparridt[idx] & cumarrage = sparrage[idx] & cumnostd = 1
+									gs 'Cum_Manage'
+									cumvol[1] += sexvolume & cumloc[1] = 1
+								end
+								if cumforced = 0:
+									!! 2 = 'On your panties over your vagina'
+									if $pantyworntype <> 'none' or PCloPanties > 0:
+										!! isprokp - sanitary pad absorption
+										if isprokp <> 1:
+											spafinloc = 2
+											sexvolume = max(1, cumamount/2)
+											sexunaware = iif(rand(0,3)=1 or sparridt[idx]=-2,1,0)
+											sexspecpot = -1 & cumarrnam = sparrnam[idx] & cumarrcpt = 0 & cumarrkno = sparridt[idx] & cumarrage = sparrage[idx] & cumnostd = 1
+											gs 'Cum_Manage'
+											cumvol[2] += sexvolume & cumloc[2] = 1
+										end
+									!! 9 = 'On your legs'
+									elseif ($clothingworntype = 'nude' or PCloSkirt > 0 or PCloDress > 0) and rand(1,10) > 6 + InSleep*2:
+										sexvolume = max(0, cumamount/4)
+										if sexvolume > 0:
+											spafinloc = 9
+											sexunaware = iif(rand(0,2)=1 or sparridt[idx]=-2,1,0)
+											sexspecpot = -1 & cumarrnam = sparrnam[idx] & cumarrcpt = 0 & cumarrkno = sparridt[idx] & cumarrage = sparrage[idx] & cumnostd = 1
+											gs 'Cum_Manage'
+											cumvol[9] += sexvolume & cumloc[9] = 1
+										end
+									end
+									!! 6 = 'On your clothes in your groin area'
+									if PCloPants > 0:
+										sexvolume = max(0, cumamount / (3 + iif($pantyworntype<>'none',12,0)))
+										if sexvolume > 0:
+											spafinloc = 6
+											sexunaware = iif(rand(0,4)=1 or sparridt[idx]=-2,1,0)
+											sexspecpot = -1 & cumarrnam = sparrnam[idx] & cumarrcpt = 0 & cumarrkno = sparridt[idx] & cumarrage = sparrage[idx] & cumnostd = 1
+											gs 'Cum_Manage'
+											cumvol[6] += sexvolume & cumloc[6] = 1
+										end
+									end
+								end
+							end
+						end
+						if sparrvol[idx] <= 0: gs 'cum_cleanup', 'cleandeposit', idx
+					!! 3 = 'In your anus'
+					elseif i = 3:
+						!! passive absorption, succubus has its own
+						if succubusflag = 0:
+							cumamount = (totminut-cumdectime)/15 * max(rand(0,2), rand(sparrvol[idx]/40, sparrvol[idx]/20) + rand(0, InSleep*rand(3,6)) + rand(0, iif(pcs_hydra<50,(50-pcs_hydra)/10,0)))
+							sparrvol[idx] -= cumamount
+						end
+
+						if sparrvol[idx] > 0:
+							cumsumass += sparrvol[idx]
+							!! seeping out
+							if FUNC('Cum_Manage', 'check_innards', 3) = 1 or cumforced/rand(2,4) > sparrvol[idx]:
+								cumamount = min(sparrvol[idx]*3/2, (totminut-cumdectime)/15 * max(rand(0,1), rand(sparrvol[idx]/(pcs_ass*3/2), agape*20) - InSleep*rand(4,8)) + cumforced/rand(7,15))
+								sparrvol[idx] -= cumamount & cumsumass -= cumamount
+								cumvol[3] -= cumamount
+
+								!! 1 = 'On your labia'
+								sexvolume = max(cumamount/10, cumamount/4 - iif(cumforced=0,isprokp*rand(10,20),0))
+								if sexvolume > 0:
+									spafinloc = 1
+									sexunaware = iif(cumforced=0,iif(rand(0,4)=1 or sparridt[idx]=-2,1,0),0)
+									sexspecpot = -1 & cumarrnam = sparrnam[idx] & cumarrcpt = sparrppt[idx]/2 & cumarrkno = sparridt[idx] & cumarrage = sparrage[idx] & cumnostd = 1
+									gs 'Cum_Manage'
+									cumvol[1] += sexvolume & cumloc[1] = 1
+								end
+								if cumforced > 0:
+									!! 4 = 'On your butt'
+									sexvolume = max(cumamount/15, cumamount/3)
+									if sexvolume > 0:
+										spafinloc = 4
+										sexvolume = max(0, cumamount/2)
+										sexunaware = 0
+										sexspecpot = -1 & cumarrnam = sparrnam[idx] & cumarrcpt = sparrppt[idx]/3 & cumarrkno = sparridt[idx] & cumarrage = sparrage[idx] & cumnostd = 1
+										gs 'Cum_Manage'
+										cumvol[4] += sexvolume & cumloc[4] = 1
+									end
+								else
+									!! 5 = 'On your panties over your butt'
+									if $pantyworntype <> 'none' or PCloPanties > 0:
+										!! isprokp - sanitary pad absorption
+										if isprokp <> 1:
+											spafinloc = 5
+											sexvolume = max(1, cumamount/3)
+											sexunaware = iif(rand(0,3)=1 or sparridt[idx]=-2,1,0)
+											sexspecpot = -1 & cumarrnam = sparrnam[idx] & cumarrcpt = sparrppt[idx]/3 & cumarrkno = sparridt[idx] & cumarrage = sparrage[idx] & cumnostd = 1
+											gs 'Cum_Manage'
+											cumvol[5] += sexvolume & cumloc[5] = 1
+										end
+									!! 9 = 'On your legs'
+									elseif ($clothingworntype = 'nude' or PCloSkirt > 0 or PCloDress > 0) and rand(1,10) > 4 + InSleep*3:
+										sexvolume = max(0, cumamount/5)
+										if sexvolume > 0:
+											spafinloc = 9
+											sexunaware = iif(rand(0,2)=1 or sparridt[idx]=-2,1,0)
+											sexspecpot = -1 & cumarrnam = sparrnam[idx] & cumarrcpt = sparrppt[idx]/4 & cumarrkno = sparridt[idx] & cumarrage = sparrage[idx] & cumnostd = 1
+											gs 'Cum_Manage'
+											cumvol[9] += sexvolume & cumloc[9] = 1
+										end
+									end
+									!! 6 = 'On your clothes in your groin area'
+									if PCloPants > 0:
+										sexvolume = max(0, cumamount / (4 + iif($pantyworntype<>'none',16,0)))
+										if sexvolume > 0:
+											spafinloc = 6
+											sexunaware = iif(rand(0,4)=1 or sparridt[idx]=-2,1,0)
+											sexspecpot = -1 & cumarrnam = sparrnam[idx] & cumarrcpt = sparrppt[idx]/3 & cumarrkno = sparridt[idx] & cumarrage = sparrage[idx] & cumnostd = 1
+											gs 'Cum_Manage'
+											cumvol[6] += sexvolume & cumloc[6] = 1
+										end
+									end
+								end
+							end
+						end
+						if sparrvol[idx] <= 0: gs 'cum_cleanup', 'cleandeposit', idx
+					!! 1 = 'On your labia'  4 = 'On your butt'
+					elseif (i = 1 and sparrvol[idx]*((totminut-cumdectime)/15) > rand(2,5)) _ 
+						or (i = 4 and sparrvol[idx]*((totminut-cumdectime)/15) > rand(4,8)):
+						if $pantyworntype <> 'none' or PCloPanties > 0:
+							!! 2 = 'On your panties over your vagina'  5 = 'On your panties over your butt'
+							sexvolume = rand(sparrvol[idx]/2, sparrvol[idx]) - iif(i=1,isprokp*rand(15,30),0)
+							if sexvolume > 0:
+								sparrvol[idx] -= sexvolume
+								spafinloc = iif(i=1,2,5)
+								sexunaware = 1
+								sexspecpot = -1 & cumarrnam = sparrnam[idx] & cumarrcpt = sparrppt[idx] & cumarrkno = sparridt[idx] & cumarrage = sparrage[idx] & cumnostd = 0
+								gs 'Cum_Manage'
+								cumvol[iif(i=1,2,5)] += sexvolume & cumloc[iif(i=1,2,5)] = 1
+							end
+						!! 6 = 'On your clothes in your groin area'
+						elseif PCloPants > 0:
+							sexvolume = rand(sparrvol[idx]/2, sparrvol[idx])
+							if sexvolume > 0:
+								spafinloc = 6
+								sexunaware = iif(rand(0,4)=1 or sparridt[idx]=-2,1,0)
+								sexspecpot = -1 & cumarrnam = sparrnam[idx] & cumarrcpt = sparrppt[idx]/3 & cumarrkno = sparridt[idx] & cumarrage = sparrage[idx] & cumnostd = 1
+								gs 'Cum_Manage'
+								cumvol[6] += sexvolume & cumloc[6] = 1
+							end
+						end
+						if sparrvol[idx] <= 0: gs 'cum_cleanup', 'cleandeposit', idx
+					!! 17 = 'In a condom in your vagina'
+					elseif i = 17 and sparrvol[idx] > rand(10,15):
+						!! 0 = 'In your Vagina'
+						sexvolume = min(sparrvol[idx]/3, (totminut-cumdectime)/15 * max(0, cumamount/5 - isprokp*rand(2,5)) + cumforced/rand(5,10))
+						if sexvolume > 0:
+							!! condom in vagina is summed in cumsumvag and Cum_Manage call will added more, so subtract here
+							cumsumvag -= sexvolume
+							sparrvol[idx] -= sexvolume
+							spafinloc = 0
+							sexunaware = 1
+							sexspecpot = -1 & cumarrnam = sparrnam[idx] & cumarrcpt = sparrppt[idx] & cumarrkno = sparridt[idx] & cumarrage = sparrage[idx] & cumnostd = 0
+							gs 'Cum_Manage'
+							cumvol[17] -= sexvolume & cumvol[0] += sexvolume & cumloc[0] = 1
+						end
+					!! 12 = 'Inside your mouth'
+					elseif i <> 12 and sparrvol[idx] > rand(0,3):
+						!! dry out
+						!! 1: in this hour
+						!! 2: in four hours
+						!! 3: at least five hours ago
+						if rand(min(-1+InSleep, sparrvol[idx]/-5), sparrage[idx] + (totminut-cumdectime)/30) >= 1:
+							!! 5 and 7 = not clothes
+							if i <> 6 and i <> 7: pcs_sweat += rand(0, max(1,sparrvol[idx]/10))
+							gs 'cum_cleanup', 'cleandeposit', idx
+						end
+					end
+					if sparrvol[idx] > 0: cumloc[i] = 1 & cumvol[inx] += sparrvol[idx] else cumloc[i] = 0 & cumvol[inx] = 0
+				end
+				!! reset just in case
+				sexvolume = 0 & cumnostd = 0 & cumarrkno = 0
+			if idx > 0:idx -= 1 & jump 'sparrlocloop'
+		if i < 18:i += 1 & jump 'sparrvolloop'
+		killvar 'i'
+		killvar 'idx'
+		killvar 'cumamount'
+		if cumsumvag <= 0: cumsumvag = 0 & cum_vol['vagina'] = 0 & cumvol[0] = 0 & cum_loc['vagina'] = 0 & cumloc[0] = 0
+		if cumsumass <= 0: cumsumass = 0 & cum_vol['anus'] = 0   & cumvol[3] = 0 & cum_loc['anus'] = 0   & cumloc[3] = 0
+		if cumsumbod < 0: cumsumbod = 0
+	end
+	killvar 'cumforced'
+	cumdectime = totminut
+end
+
 --- Cum_Manage ---------------------------------
 

+ 1 - 1
locations/FedorMisc.qsrc

@@ -212,7 +212,7 @@ if $ARGS[0] = 'Locker Room 1':
 
 		act 'Vaginal':
 			*clr & cla
-			minut -= -5
+			minut += 5
 			gs 'stat'
 			'<center><img <<$set_imgh>> src="images/characters/pavlovsk/school/boy/fedor/school/lockerroom/lr3.jpg"></center>'
 			'After a few more seconds, Fedor lifts you up by your shoulders then lightly pushes you onto the bench then climbs up in front of you. You look down at Fedor''s penis as it slowly enters your vagina, giving you a jolt of pleasure which emits a moan from you. Fedor begins fucking you slowly while gradually increasing his pace. Fedor lifts one of your legs up, giving himself easier access to your vagina as he continues ramming his penis inside you. After a few minutes, Fedor looks down to you and says, "I''m ready to cum for you."'

+ 21 - 28
locations/KatjaHomeTalk.qsrc

@@ -279,19 +279,7 @@ if $ARGS[0] = 'chat':
 	if katjaQW['QWstage'] >= 7 and katjaQW['birth_control_start_day'] < daystart and katjaQW['birth_control_start_day'] > 0 and katjaQW['horny'] > 60 and katjaQW['sex_clossedness'] = 0:
 		!!If you have gotten to the last stage of Katja''s questline, you can suggest to go to the park to look for boys if Katja is horny.
 		act 'Look for boys in the park':
-			minut += 15
-			katjaQW['horny'] += 5
-			$ev_name = 'Katja'
-			$ev_name_a = 'Katja'
-			$ev_name_om = 'Katja'
-			dick = 0
-			place = 1
-			Frend_num = 14
-			p_slut = katjaQW['slut']
-			p_dom = KatjaQW['dom'] + 50
-			p_horny = katjaQW['horny']
-			p_alko = 0
-			gt 'placer'
+			gt 'KatjaHomeTalk', 'go_to_park'
 		end
 	end
 			
@@ -1088,7 +1076,7 @@ if $ARGS[0] = 'Sextalk':
 			end
 		end
 	elseif kattalkrand = 4:
-		if katjaQW['knows_masterbation'] > 0:
+		if katjaQW['knows_masturbation'] > 0:
 			'"<<$pcs_nickname>>, tell me how you masturbate."'
 		else
 			'"<<$pcs_nickname>>, do you masturbate?"'
@@ -1099,7 +1087,7 @@ if $ARGS[0] = 'Sextalk':
 				*clr & cla
 				minut += 3
 				katjaQW['horny'] += 5
-				katjaQW['knows_masterbation'] = 1
+				katjaQW['knows_masturbation'] = 1
 				gs 'stat'
 				'<center><img <<$set_imgh>> src="images/characters/shared/headshots_main/big14.jpg"></center>'
 				'You tell Katja how you masturbate in the bathroom and she blushes and bites her lip.'
@@ -1874,19 +1862,7 @@ if $ARGS[0] = 'random_park_sex_talk':
 		'"Awesome!" she says and looks at you really excitedly. "Why don''t we go right now?"'
 		if katjaQW['birth_control_start_day'] < daystart and katjaQW['birth_control_start_day'] > 0:
 			act 'Agree':
-				minut += 15
-				katjaQW['horny'] += 5
-				$ev_name = 'Katja'
-				$ev_name_a = 'Katja'
-				$ev_name_om = 'Katja'
-				dick = 0
-				place = 1
-				Frend_num = 14
-				p_slut = katjaQW['slut']
-				p_dom = KatjaQW['dom'] + 50
-				p_horny = katjaQW['horny']
-				p_alko = 0
-				gt 'placer'
+				gt 'KatjaHomeTalk', 'go_to_park'
 			end				
 			act 'Not right now': gt 'KatjaHomeTalk'
 		else
@@ -2163,5 +2139,22 @@ if $ARGS[0] = 'fisting_ask':
 	end
 end
 
+if $ARGS[0] = 'go_to_park':
+	minut += 15
+	katjaQW['horny'] += 5
+	dick = 0
+	gs 'placer', 'init'
+	$placerStringParameter['ev_name'] = 'Katja'
+	$placerStringParameter['ev_name_a'] = 'Katja'
+	$placerStringParameter['ev_name_om'] = 'Katja'
+	placerParameter['friend_index'] = 14
+	placerParameter['friend_horny'] = katjaQW['horny']
+	placerParameter['friend_dom'] = KatjaQW['dom'] + 50
+	placerParameter['friend_slut'] = katjaQW['slut']
+	placerParameter['friend_alko'] = 0
+	placerParameter['location_index']  = 0
+	gt 'placer'
+end
+
 --- KatjaHomeTalk ---------------------------------
 

+ 1 - 1
locations/Komp.qsrc

@@ -80,7 +80,7 @@ if $ARGS[0] = 'browse':
 		if access['general-text'] = 1: '<center><h4 style="color: red;"><b><<$access[''general-text'']>></b></h4></center>'
 		'You go to your favourite start page, while you try to decide on what you want to see right now.'		
 		'A blinking banner for a <a href="exec: gt ''komp'',''agent''">Kirsanova Real Estate Agency</a> keeps popping up in the corner.'
-		if $access['noporn'] = 1:
+		if access['noporn'] = 1:
 			"<b><<$access['noporn']>></b>"
 		end
 		if camwhore = 1 and access['nocamshow'] = 1 and mc_inventory['tech_webcam'] = 1: 

+ 4 - 2
locations/LakeBoyDy.qsrc

@@ -7,8 +7,10 @@ if $ARGS[0] = 'ride':
 		gs'stat'
 
 		'You quickly get dressed and follow the fat man to his car. He guides you to an old Mitsubishi Pajero, and takes place behind the wheel while he invites you to relax in the passenger seat. Once you get in the car, he puts his hand on your knee as he starts the engine.'
-		'"My name is Vadim Bely... you can call me Mr. Bely. What''s your name, girl?"'
-		'You''re still a bit intimidated by his presence, and just say your name: "<<$pcs_nickname>>."'
+		if npc_QW['A113'] = 0 and belgangday = 0:
+			'"My name is Vadim Bely... you can call me Mr. Bely. What''s your name, girl?"'
+			'You''re still a bit intimidated by his presence, and just say your name: "<<$pcs_nickname>>."'
+		end
 		'Vadim slides his hand up your leg a little, and gently kneads your thigh as you drive through town, the engine roaring. Within minutes, you approach a five-storey apartment. Vadim parks the car in front of it and says: "Get out and follow me", not waiting for a response.'
 		act'Look around':
 			cls

+ 7 - 1
locations/LariskaHome.qsrc

@@ -490,7 +490,13 @@ if $ARGS[0] = 'lariska_bedroom':
 	if locat['Lariska'] = 17:'<a href="exec:gt ''LariskaHome'', ''lariska_cleaning_1''">Lariska</a> is here cleaning.'
 	if locat['Lariska'] = 22:'Lariska is here, doing various things.'
 	if locat['Lariska'] = 9:gt 'LariskaHome', 'community_center_invite'
-	act 'Return to the hallway':gt 'LariskaHome', 'hallway'
+	act 'Return to the hallway':
+		if $clothingworntype ! 'nude':
+			gt 'LariskaHome', 'hallway'
+		else
+			msg'<b><font color = red>You need to get dressed first.</font></b>'
+		end
+	end
 	if locat['Lariska'] = 2 or locat['Lariska'] = 8 or locat['Lariska'] = 22 or locat['Lariska'] = 15 or locat['Lariska'] = 17:
 		act 'Chat with Lariska': gt 'LariskaHome', 'chat'
 	end

+ 2 - 8
locations/LariskaSex.qsrc

@@ -32,10 +32,7 @@ if $ARGS[0] = 'undressed2':
 		act 'Lariska wears the Strap-on': gt 'LariskaSex', 'bj_1'
 	end
 	act 'Get dressed': 
-		if analplugout = 1:
-			analplugout = 0
-			analplugin = 1
-		end
+		if analplugout = 1: gs 'dinsex', 'after_anal'
 		if vibratorOUT = 1:
 			vibratorIN = 1
 			vibratorOUT = 0
@@ -709,10 +706,7 @@ if $ARGS[0] = 'boyfriend_sex':
 							gs 'arousal', 'bj', 5,'lesbian', 'group'
 							gs 'stat'
 							act 'Clean up':
-								if analplugout = 1:
-									analplugout = 0
-									analplugin = 1
-								end
+								if analplugout = 1: gs 'dinsex', 'after_anal'
 								if vibratorOUT = 1:
 									vibratorIN = 1
 									vibratorOUT = 0

+ 8 - 8
locations/MartinSex.qsrc

@@ -102,7 +102,7 @@ if $ARGS[0] = '':
 				'You don''t know when this thing with Martin went from friendly chats and idle flirts to something else, but there is a tingling in your belly, and lower, when you look at him that you would very much like to act on...'
 				'And since Martin is trying his best to hide his interest and it doesn''t look like he is gonna do you the favor of making the first step, you will have to take matters into your own hands.'
 				*nl
-				'You flirt more aggressively than you have up until now: You smile more,' + iif(pcs_hairlng>81,' play with your <<$pc_descWordy[''hair length'']>>,','') + ' touch his arm every now and then, even move and lean over in ways that give him good looks at your <<$pc_desc[''breast'']>> cleavage or <<$body>> butt - in other words, you drop about as many hints as womanly possible, short of stripping right then and there.'
+				'You flirt more aggressively than you have up until now: You smile more,' + iif(pcs_hairlng>81,' play with your <<$pc_descWordy[''hair length'']>>,','') + ' touch his arm every now and then, even move and lean over in ways that give him good looks at your <<$pc_desc[''breast'']>> cleavage or <<$bodyVars[''desc'']>> butt - in other words, you drop about as many hints as womanly possible, short of stripping right then and there.'
 				*nl
 				'Twenty minutes pass like that and you are starting to wonder if Martin is playing hard to get or if he really is oblivious to what you''re doing... when he visibly catches himself staring at your <<$pc_desc[''lip gloss'']>> lips and suddenly declares: "You shouldn''t get involved with me."'
 				'"Excuse me?" You are so astonished by what he said that you are almost sure you misheard him.'
@@ -429,7 +429,7 @@ if $ARGS[0] = '':
 			'But you decide not to indulge him today. After all, you are a respectable woman who would <b>never</b> have sex in a public place, right?'
 			*nl
 			'So instead, you just have a normal chat with Martin. Well, as normal as can be in this situation.'
-			'You catch up on the day-to-day' + iif($MartinHobby!'',', your <<$MartinHobby>>,','') + ' and talk about a few other trivial things, but this conversation is at regular intervals interrupted by double entendres, kisses, you giving Martin generous looks at your <<$pc_desc[''breast'']>> cleavage and <<$body>> ass, and other things you cannot or will not do while the bar is open.'
+			'You catch up on the day-to-day' + iif($MartinHobby!'',', your <<$MartinHobby>>,','') + ' and talk about a few other trivial things, but this conversation is at regular intervals interrupted by double entendres, kisses, you giving Martin generous looks at your <<$pc_desc[''breast'']>> cleavage and <<$bodyVars[''desc'']>> ass, and other things you cannot or will not do while the bar is open.'
 			*nl
 			'After about half an hour of talking, among other things, you decide that you should let Martin finish up for the night. After a final goodnight kiss, you leave the bar with a tingly stomach, your mind still lingering at the bulge in his pants and all the things you could do with him instead of talking...'
 			gs 'arousal', 'kiss', 5
@@ -493,7 +493,7 @@ if $ARGS[0] = 'MartinTease1':
 		'And you can''t blame him for this reaction - you went from being a friendly flirt to showing him your pussy in under a minute, so most men would need a second to catch up with a reality that has gone utterly mad.'
 
 		if analplugin = 1:
-			analplugin = 0
+			analplugin = 0 & analplugout = 1
 			minut += 1
 			*nl
 			'<center><img <<$set_imgh>> src="images/locations/city/industrial/bar/sex/bar/martin/tease/buttplug.jpg"></center>'
@@ -605,7 +605,7 @@ if $ARGS[0] = 'MartinTease2':
 				'"There, better now?"'
 
 				if analplugin = 1:
-					analplugin = 0
+					analplugin = 0 & analplugout = 1
 					minut += 1
 					*nl
 					'<center><img <<$set_imgh>> src="images/locations/city/industrial/bar/sex/bar/martin/tease/buttplug.jpg"></center>'
@@ -668,9 +668,9 @@ if $ARGS[0] = 'MartinTease3':
 
 		if analplugin = 0:
 			*nl
-			'Considering how reluctant he was to let you "settle for an old man", he seems to be awfully happy about that same young <<$body>> woman stripping and exposing her privates to him.'
+			'Considering how reluctant he was to let you "settle for an old man", he seems to be awfully happy about that same young <<$bodyVars[''desc'']>> woman stripping and exposing her privates to him.'
 		else
-			analplugin = 0
+			analplugin = 0 & analplugout = 1
 			minut += 1
 			*nl
 			'<center><img <<$set_imgh>> src="images/locations/city/industrial/bar/sex/bar/martin/tease/buttplug.jpg"></center>'
@@ -826,9 +826,9 @@ if $ARGS[0] = 'MartinTease4':
 				if analplugin = 0:
 					*nl
 					'"Maybe a little better than okay," he smirks.'
-					'Considering how reluctant he was to let you "settle for an old man", he seems to be awfully happy about teasing that same young <<$body>> woman while she''s stripping and exposing her privates to him.'
+					'Considering how reluctant he was to let you "settle for an old man", he seems to be awfully happy about teasing that same young <<$bodyVars[''desc'']>> woman while she''s stripping and exposing her privates to him.'
 				else
-					analplugin = 0
+					analplugin = 0 & analplugout = 1
 					minut += 1
 					*nl
 					'<center><img <<$set_imgh>> src="images/locations/city/industrial/bar/sex/bar/martin/tease/buttplug.jpg"></center>'

+ 1 - 1
locations/MartinTalk.qsrc

@@ -121,7 +121,7 @@ if $ARGS[0] = '':
 		*nl
 		'"You''re skinny," he observes.'
 		'"Excuse me?"' 
-		'You ' + iif($body='skinny','would call yourself skinny, too, but','see yourself as <<$body>> rather than skinny, so') + ' you don''t really see why he would bring this up.'
+		'You ' + iif($bodyVars['desc']='skinny','would call yourself skinny, too, but','see yourself as <<$bodyVars[''desc'']>> rather than skinny, so') + ' you don''t really see why he would bring this up.'
 		*nl
 		'"Are you eating right, <<$pcs_firstname>>?" He inquires, completely ignoring your visible confusion.'
 		'"Uh... I guess. Wait, you didn''t, by any chance, talk to my mother, did you?"'

+ 8 - 13
locations/Nudelake.qsrc

@@ -8,6 +8,7 @@ $menu_arg = ''
 killvar '$locclass'
 menu_off = 0
 $location_type = 'secluded'
+gs 'stat'
 
 '<center><b>nudist beach</b></center>'
 '<center><img <<$set_imgh>> src="images/locations/city/residential/lake/nudelake.jpg"></center>'
@@ -27,7 +28,7 @@ if PCloswimwear = 1 or $clothingworntype = 'nude':
 	end
 end
 
-if temper >= 15 and month >= 5 and month <= 9:
+if temper >= 15 and month >= 5 and month <= 9 and hour >= 6 and hour <= 20:
 	if func('changingroom','count_swim_item') > 0 and PCloswimwear = 0:
 		act'Change into your swimwear':
 			menu_off = 1
@@ -48,9 +49,7 @@ if temper >= 15 and month >= 5 and month <= 9:
 			end
 		end
 	end
-end
 
-if temper >= 15 and month >= 5 and month <= 9:
 	if $clothingworntype ! 'nude':
 		act'Take off your clothes':
 			menu_off = 1
@@ -65,7 +64,7 @@ if temper >= 15 and month >= 5 and month <= 9:
 				$lastwornbratype['swim'] = $braworntype
 				lastwornbranumber['swim'] = brawornnumber
 				gs 'clothing', 'strip_all'
-				if pcs_horny >= 80 and exhibitionist_lvl > 1:
+				if pcs_horny >= 80 and exhibitionist_lvl > 1 and PCloPanties > 0:
 					'<center><img <<$set_imgh>> src="images/locations/pavlovsk/lake/secluded_beach/self/wetpussypants3.jpg"></center>'
 					'You strip off. A few passing men do a double-take and pause to look at your sopping wet panties, probably thinking about what is making you so excited. You don''t care about what they might say or think of you.'
 				elseif pcs_inhib >= 60:
@@ -84,10 +83,7 @@ if temper >= 15 and month >= 5 and month <= 9:
 			act'Continue':gt'Nudelake'
 		end
 	end
-end
-gs 'stat'
 
-if hour >= 6 and hour <= 20 and temper >= 15:
 	if $clothingworntype = 'nude':
 		'Here you can <a href="exec:gt ''Nudelake'', ''zagarat''">sunbathe</a> and <a href="exec:gt ''Nudelake'', ''swim''">swim</a>'
 		if pcs_stam >= (20 * (10 - sport_clothes_exercise_bonus)) / 2:
@@ -96,6 +92,11 @@ if hour >= 6 and hour <= 20 and temper >= 15:
 		act 'Sunbathe': gt 'Nudelake', 'zagarat'
 		'You can play <a href="exec:gt ''Nudelake'', ''voleybol''">beach volleyball</a>.'
 	end
+
+	if katday ! daystart and kat >= 1:
+		'You see Kat on the beach.'
+		act 'Approach Kat':gt 'Katlake', 'kat'
+	end
 elseif hour >= 6 and hour <= 20:
 	'It''s too cold for any nudist activities.'
 else
@@ -112,12 +113,6 @@ else
 	act 'Return to the main beach':gt 'city_lake', 'start'
 end
 
-if katday ! daystart and kat >= 1 and temper >= 15:
-	'You see Kat on the beach.'
-
-	act 'Approach Kat':gt 'Katlake', 'kat'
-end
-
 if $ARGS[0] = 'voleybol':
 	$location_type = 'event_outdoors'
 	$menu_loc = 'Nudelake'

+ 2 - 2
locations/Peterroom.qsrc

@@ -72,7 +72,7 @@ if $ARGS[0] = 'start':
 			'You do as he says and feel leather cuffs being tightly fastened around your wrists.'
 
 			if analplugin = 1:
-				analplugin = 0
+				analplugin = 0 & analplugout = 1
 				'"What do we have here?" he asks as he grips the end of your butt plug and eases it out.'
 			end
 
@@ -141,7 +141,7 @@ if $ARGS[0] = 'klap':
 		'Your moans are muffled by the gag as Peter bears down on you from above. "Let''s see how well your sweet ass takes me..." he says'
 
 		if analplugin = 1:
-			analplugin = 0
+			analplugin = 0 & analplugout = 1
 			', pulls out your butt plug'
 		end
 

+ 359 - 0
locations/SMS_selfies.qsrc

@@ -0,0 +1,359 @@
+# SMS_selfies
+
+!{
+if $ARGS[0] = 'Trial':
+	gs 'SMStext_builder', 'start'
+		gs 'SMStext_builder', 'receive', 'Come on, send me a selfie'
+		gs 'SMStext_builder', 'send', 'Alright'
+		gs 'SMStext_builder', 'send_selfie', '[send selfie]', 'c|sw|u|n|b|sh|ft|fa|fp', 'SMS_selfies', 'Trial2'
+		gs 'SMStext_builder', 'add_sms', 'A144'
+	gs 'SMStext_builder', 'end'
+end
+
+
+if $ARGS[0] = 'Trial2':
+	gs 'SMStext_builder', 'start'
+		gs 'SMStext_builder', 'receive', 'Come on, send me a selfie'
+		gs 'SMStext_builder', 'send', 'Alright'
+		gs 'SMStext_builder', 'send_img', $ARGS[2]
+		if $ARGS[4] = 'clothed':
+			gs 'SMStext_builder', 'receive', 'Just a basic selfie'
+		elseif $ARGS[4] = 'bikini':
+			gs 'SMStext_builder', 'receive', 'Nice, a bikini selfie'
+		elseif $ARGS[4] = 'underwear':
+			gs 'SMStext_builder', 'receive', 'Cute underwear!'
+		elseif $ARGS[4] = 'nude':
+			gs 'SMStext_builder', 'receive', 'wow, a nudie!'
+		elseif $ARGS[4] = 'bath':
+			gs 'SMStext_builder', 'receive', 'Nice, a bath selfie'
+		elseif $ARGS[4] = 'shower':
+			gs 'SMStext_builder', 'receive', 'Nice, a shower selfie'
+		elseif $ARGS[4] = 'titflash':
+			gs 'SMStext_builder', 'receive', 'Naughty! Did someone see you flashing your tits?'
+		elseif $ARGS[4] = 'assflash':
+			gs 'SMStext_builder', 'receive', 'Naughty! Did someone see you flashing your butt?'
+		elseif $ARGS[4] = 'pussyflash':
+			gs 'SMStext_builder', 'receive', 'Naughty! Did someone see you flashing your pussy?'
+		end
+		gs 'SMStext_builder', 'show_sms', ARGS[1]
+	gs 'SMStext_builder', 'end'
+end
+}
+
+
+
+if $ARGS[0] = 'show_sms':
+	$temp_curSMS = $SMSMessage[ARGS[1]]
+	$SMSMessage[ARGS[1]] = $temp_SMS_selfietext
+	gs 'telefon', 'show_sms', ARGS[1]
+	$SMSMessage[ARGS[1]] = $temp_curSMS
+	killvar '$temp_SMS_selfietext'
+end
+
+if $ARGS[0] = 'exit':
+	gs 'telefon', 'show_sms', ARGS[1]
+end
+
+! $ARGS[1] = control string
+!  ARGS[2] = telefon['SMSid']
+! $ARGS[3] -> onward = return string
+if $ARGS[0] = 'selfie_menu':
+	gs 'phone_selfies', 'Phone_selfie_totals'
+	
+	!! Create the return string
+	$temp_return_string = ''
+	sms_s_n_args = arrsize('$ARGS')
+	sms_s_i = 3
+	:add_rest_ARGS_loop
+	if sms_s_i < sms_s_n_args:
+		$temp_return_string += '''<<$ARGS[sms_s_i]>>'', '
+		sms_s_i += 1
+		jump 'add_rest_ARGS_loop'
+	end
+	$temp_return_string = mid($temp_return_string, 1, len($temp_return_string)-2)
+
+
+	! reset temp_SMS_selftext
+	$temp_SMS_selfietext = '<table width=80%><th>Selfies</th><tr><td>'
+	temp_locationCnt = 0
+	:LocationLoop
+		$temp_SMS_selfietext += '<a href="exec: gs ''SMS_selfies'', ''showlocation'', <<temp_locationCnt>>, ''<<$ARGS[1]>>'', <<ARGS[2]>>, <<$temp_return_string>>"><<$selfieLocDesc[temp_locationCnt]>> selfies</a>'
+		$temp_SMS_selfietext += '</tr></td><tr><td>'
+		temp_locationCnt += 1
+	if temp_locationCnt < arrsize('$selfieLoc'): jump 'LocationLoop'
+
+	$temp_SMS_selfietext += '<a href="exec: gs ''SMS_selfies'', ''exit''">Exit</a></td></tr></table>'
+	gs 'SMS_selfies', 'show_sms', ARGS[3]
+
+	killvar 'temp_locationCnt'
+	killvar '$temp_return_string'
+	killvar 'sms_s_i'
+	killvar 'sms_s_n_args'
+end
+
+!  ARGS[1] = temp_locationCnt
+! $ARGS[2] = control string
+!  ARGS[3] = telefon['SMSid']
+! $ARGS[4] -> onward = return string
+if $ARGS[0] = 'showlocation':
+
+	!! Create the return string
+	$temp_return_string = ''
+	sms_s_n_args = arrsize('$ARGS')
+	sms_s_i = 4
+	:add_rest_ARGS_loop2
+	if sms_s_i < sms_s_n_args:
+		$temp_return_string += '''<<$ARGS[sms_s_i]>>'', '
+		sms_s_i += 1
+		jump 'add_rest_ARGS_loop2'
+	end
+	$temp_return_string = mid($temp_return_string, 1, len($temp_return_string)-2)
+
+	$temp_SMS_selfietext = '<table width=80%><tr><th><font color="maroon"><<$selfieLocDesc[ARGS[1]]>> selfies</font></th></tr>'
+
+	gs 'SMS_selfies', 'listretrieve', ARGS[1], $selfieLoc[ARGS[1]], $ARGS[2], ARGS[3], $temp_return_string
+
+	$temp_SMS_selfietext += '<tr><td colspan=3><a href="exec: gs ''SMS_selfies'', ''selfie_menu'', ''<<$ARGS[2]>>'', ''<<ARGS[3]>>'', <<$temp_return_string>>">Go Back</a></td></tr>'
+	$temp_SMS_selfietext += '<tr><td colspan=3><a href="exec: gs ''SMS_selfies'', ''exit''">Exit</a></td></tr></table>'
+
+	gs 'SMS_selfies', 'show_sms', ARGS[4]
+
+	killvar '$temp_return_string'
+	killvar 'sms_s_i'
+	killvar 'sms_s_n_args'
+end
+
+!  ARGS[1] = the index of the location in $selfieLoc[]
+! $ARGS[2] = the selfie location (park, home, etc)
+! $ARGS[3] = control string
+!  ARGS[4] = telefon['SMSid']
+! $ARGS[5] = return string
+if $ARGS[0] = 'listretrieve':
+	if strpos($ARGS[3], 'c')	> 0:	gs 'SMS_selfies', 'retrieve_clothed_selfies',		ARGS[1], $ARGS[2], $ARGS[5], ARGS[4]
+	if strpos($ARGS[3], 'sw')	> 0:	gs 'SMS_selfies', 'retrieve_swim_selfies',			ARGS[1], $ARGS[2], $ARGS[5], ARGS[4]
+	if strpos($ARGS[3], 'u')	> 0:	gs 'SMS_selfies', 'retrieve_underwear_selfies',		ARGS[1], $ARGS[2], $ARGS[5], ARGS[4]
+	if strpos($ARGS[3], 'n')	> 0:	gs 'SMS_selfies', 'retrieve_nude_selfies',			ARGS[1], $ARGS[2], $ARGS[5], ARGS[4]
+	if strpos($ARGS[3], 'b')	> 0:	gs 'SMS_selfies', 'retrieve_bath_selfies',			ARGS[1], $ARGS[2], $ARGS[5], ARGS[4]
+	if strpos($ARGS[3], 'sh')	> 0:	gs 'SMS_selfies', 'retrieve_shower_selfies',		ARGS[1], $ARGS[2], $ARGS[5], ARGS[4]
+	if strpos($ARGS[3], 'ft')	> 0:	gs 'SMS_selfies', 'retrieve_titflash_selfies',		ARGS[1], $ARGS[2], $ARGS[5], ARGS[4]
+	if strpos($ARGS[3], 'fa')	> 0:	gs 'SMS_selfies', 'retrieve_assflash_selfies',		ARGS[1], $ARGS[2], $ARGS[5], ARGS[4]
+	if strpos($ARGS[3], 'fp')	> 0:	gs 'SMS_selfies', 'retrieve_pussyflash_selfies',	ARGS[1], $ARGS[2], $ARGS[5], ARGS[4]
+end
+
+
+!  ARGS[1] = the index of the location in $selfieLoc[]
+! $ARGS[2] = the selfie location (park, home, etc)
+! $ARGS[3] = return string
+!  ARGS[4] = telefon['SMSid']
+if $ARGS[0] = 'retrieve_clothed_selfies':
+	!!Loop for clothed selfies, dynamics set variables as mixing them in loop instructions is bad
+	if selfieClotot[ARGS[1]] > 0:
+		$temp_SMS_selfietxt += '<tr><th colspan=3>Clothed selfies</th></tr><tr>'
+
+		temp_cnum = 1
+		temp_clocnt = 1
+		:temp_loop
+			!!setting value to unmixed variable so it can be checked in the if below
+			dynamic 'phone_locval = <<$ARGS[2]>>_closelfie[<<temp_clocnt>>]'
+			if phone_locval = 1:
+				if temp_cnum = 3: $temp_SMS_selfietext += '</tr><tr>' & temp_cnum = 0
+				temp_cnum += 1
+				$temp_SMS_selfietext += '<td width="33%">' + func('SMS_selfies_popup', 'set_selfie', $ARGS[3], ARGS[4], $ARGS[2], 'clothed', ARGS[1], temp_clocnt) + '</td>'
+			end
+			temp_clocnt += 1
+		if temp_clocnt <= selfieClotot[ARGS[1]]: jump 'temp_loop'
+		if temp_cnum ! 2: $temp_SMS_selfietext += '<td></td>'
+		$temp_SMS_selfietext += '</tr>'
+
+		killvar 'temp_clocnt'
+		killvar 'temp_cnum'
+	end
+
+elseif $ARGS[0] = 'retrieve_swim_selfies':
+	!!Loop for clothed selfies, dynamics set variables as mixing them in loop instructions is bad
+	if selfieSwimtot[ARGS[1]] > 0:
+		$temp_SMS_selfietxt += '<tr><th colspan=3>Swimwear selfies</th></tr><tr>'
+
+		temp_cnum = 0
+		temp_swicnt = 1
+		:temp_loop1
+			!!setting value to unmixed variable so it can be checked in the if below
+			dynamic 'phone_locval = <<$ARGS[2]>>_swim[<<temp_swicnt>>]'
+			if phone_locval = 1:
+				if temp_cnum = 2: $temp_SMS_selfietext += '</tr><tr>' & temp_cnum = 0
+				temp_cnum += 1
+				$temp_SMS_selfietext += '<td width="33%">' + func('SMS_selfies_popup', 'set_selfie', $ARGS[3], ARGS[4], $ARGS[2], 'bikini', ARGS[1], temp_swicnt) + '</td>'
+			end
+			temp_swicnt += 1
+		if temp_swicnt <= selfieClotot[ARGS[1]]: jump 'temp_loop1'
+		if temp_cnum ! 2: $temp_SMS_selfietext += '<td></td>'
+		$temp_SMS_selfietext += '</tr>'
+
+		killvar 'temp_swicnt'
+		killvar 'temp_cnum'
+	end
+
+elseif $ARGS[0] = 'retrieve_underwear_selfies':
+	if selfieUndtot[ARGS[1]] > 0:
+		$temp_SMS_selfietxt += '<tr><th colspan=3>Underwear selfies</th></tr><tr>'
+
+		temp_cnum = 0
+		temp_undcnt = 1
+		:temp_loop2
+			dynamic 'phone_locval = <<$ARGS[2]>>_undselfie[<<temp_undcnt>>]'
+			if phone_locval = 1:
+				if temp_cnum = 2: $temp_SMS_selfietext += '</tr><tr>' & temp_cnum = 0
+				temp_cnum += 1
+				$temp_SMS_selfietext += '<td width="33%">' + func('SMS_selfies_popup', 'set_selfie', $ARGS[3], ARGS[4], $ARGS[2], 'underwear', ARGS[1], temp_undcnt) + '</td>'
+			end
+			temp_undcnt += 1
+		if temp_undcnt <= selfieUndtot[ARGS[1]]: jump 'temp_loop2'
+
+		if temp_cnum ! 2: $temp_SMS_selfietext += '<td></td>'
+		$temp_SMS_selfietext += '</tr>'
+
+		killvar 'temp_swicnt'
+		killvar 'temp_cnum'
+	end
+
+elseif $ARGS[0] = 'retrieve_nude_selfies':
+	if selfieNudtot[ARGS[1]] > 0:
+		$temp_SMS_selfietxt += '<tr><th colspan=3>Nude selfies</th></tr><tr>'
+
+		temp_cnum = 0
+		temp_nudcnt = 1
+		:temp_loop3
+			dynamic 'phone_locval = <<$ARGS[2]>>_nudselfie[<<temp_nudcnt>>]'
+			if phone_locval = 1:
+				if temp_cnum = 2: $temp_SMS_selfietext += '</tr><tr>' & temp_cnum = 0
+				temp_cnum += 1
+				$temp_SMS_selfietext += '<td width="33%">' + func('SMS_selfies_popup', 'set_selfie', $ARGS[3], ARGS[4], $ARGS[2], 'nude', ARGS[1], temp_nudcnt) + '</td>'
+			end
+			temp_nudcnt += 1
+		if temp_nudcnt <= selfieNudtot[ARGS[1]]: jump 'temp_loop3'
+		if temp_cnum ! 2: $temp_SMS_selfietext += '<td></td>'
+		$temp_SMS_selfietext += '</tr>'
+
+		killvar 'temp_nudcnt'
+		killvar 'temp_cnum'
+	end
+
+elseif $ARGS[0] = 'retrieve_bath_selfies':
+	!!loop for bath selfies
+	if selfieBathtot[ARGS[1]] > 0:
+		$temp_SMS_selfietxt += '<tr><th colspan=3>Bath selfies</th></tr><tr>'
+
+		temp_cnum = 0
+		temp_bathcnt = 1
+		:temp_loop4
+			dynamic 'phone_locval = <<$ARGS[2]>>_bathselfie[<<temp_bathcnt>>]'
+			if phone_locval = 1:
+				if temp_cnum = 2: $temp_SMS_selfietext += '</tr><tr>' & temp_cnum = 0
+				temp_cnum += 1
+				$temp_SMS_selfietext += '<td width="33%">' + func('SMS_selfies_popup', 'set_selfie', $ARGS[3], ARGS[4], $ARGS[2], 'bath', ARGS[1], temp_bathcnt) + '</td>'
+			end
+			temp_bathcnt += 1
+		if temp_bathcnt <= selfieBathtot[ARGS[1]]: jump 'temp_loop4'
+		if temp_cnum ! 2: $temp_SMS_selfietext += '<td></td>'
+		$temp_SMS_selfietext += '</tr>'
+
+		killvar 'temp_bathcnt'
+		killvar 'temp_cnum'
+	end
+
+elseif $ARGS[0] = 'retrieve_shower_selfies':
+	!!loop for shower selfies
+	if selfieShowertot[ARGS[1]] > 0:
+		$temp_SMS_selfietxt += '<tr><th colspan=3>Shower selfies</th></tr><tr>'
+
+		temp_cnum = 0
+		temp_showercnt = 1
+		:temp_loop5
+			dynamic 'phone_locval = <<$ARGS[2]>>_showerselfie[<<temp_showercnt>>]'
+			if phone_locval = 1:
+				if temp_cnum = 2: $temp_SMS_selfietext += '</tr><tr>' & temp_cnum = 0
+				temp_cnum += 1
+				$temp_SMS_selfietext += '<td width="33%">' + func('SMS_selfies_popup', 'set_selfie', $ARGS[3], ARGS[4], $ARGS[2], 'shower', ARGS[1], temp_showercnt) + '</td>'
+			end
+			temp_showercnt += 1
+		if temp_showercnt <= selfieShowertot[ARGS[1]]: jump 'temp_loop5'
+		if temp_cnum ! 2: $temp_SMS_selfietext += '<td></td>'
+		$temp_SMS_selfietext += '</tr>'
+
+		killvar 'temp_showercnt'
+		killvar 'temp_cnum'
+	end
+
+elseif $ARGS[0] = 'retrieve_titflash_selfies':
+	!!loop for flashing tits selfies
+	if selfieTitflash[ARGS[1]] > 0:
+		$temp_SMS_selfietxt += '<tr><th colspan=3>Flashing tits selfies</th></tr><tr>'
+
+		temp_cnum = 0
+		temp_flashtitscnt = 1
+		:temp_loop6
+			dynamic 'phone_locval = <<$ARGS[2]>>_titflash[<<temp_flashtitscnt>>]'
+			if phone_locval = 1:
+				if temp_cnum = 2: $temp_SMS_selfietext += '</tr><tr>' & temp_cnum = 0
+				temp_cnum += 1
+				$temp_SMS_selfietext += '<td width="33%">' + func('SMS_selfies_popup', 'set_selfie', $ARGS[3], ARGS[4], $ARGS[2], 'titflash', ARGS[1], temp_flashtitscnt) + '</td>'
+			end
+			temp_flashtitscnt += 1
+		if temp_flashtitscnt <= selfieTitflash[ARGS[1]]: jump 'temp_loop6'
+		if temp_cnum ! 2: $temp_SMS_selfietext += '<td></td>'
+		$temp_SMS_selfietext += '</tr>'
+
+		killvar 'temp_flashtitscnt'
+		killvar 'temp_cnum'
+	end
+
+elseif $ARGS[0] = 'retrieve_assflash_selfies':
+	!!loop for flashing ass selfies
+	if selfieAssflash[ARGS[1]] > 0:
+		$temp_SMS_selfietxt += '<tr><th colspan=3>Flashing ass selfies</th></tr><tr>'
+
+		temp_cnum = 0
+		temp_flashasscnt = 1
+		:temp_loop7
+			dynamic 'phone_locval = <<$ARGS[2]>>_assflash[<<temp_flashasscnt>>]'
+			if phone_locval = 1:
+				if temp_cnum = 2: $temp_SMS_selfietext += '</tr><tr>' & temp_cnum = 0
+				temp_cnum += 1
+				$temp_SMS_selfietext += '<td width="33%">' + func('SMS_selfies_popup', 'set_selfie', $ARGS[3], ARGS[4], $ARGS[2], 'assflash', ARGS[1], temp_flashasscnt) + '</td>'
+			end
+			temp_flashasscnt += 1
+		if temp_flashasscnt <= selfieAssflash[ARGS[1]]: jump 'temp_loop7'
+		if temp_cnum ! 2: $temp_SMS_selfietext += '<td></td>'
+		$temp_SMS_selfietext += '</tr>'
+
+		killvar 'temp_flashasscnt'
+		killvar 'temp_cnum'
+	end
+
+elseif $ARGS[0] = 'retrieve_pussyflash_selfies':
+	!!loop for flashing pussy selfies
+	if selfiePussyflash[ARGS[1]] > 0:
+		$temp_SMS_selfietxt += '<tr><th colspan=3>Flashing pussy selfies</th></tr><tr>'
+
+		temp_cnum = 0
+		temp_flashpussycnt = 1
+		:temp_loop8
+			dynamic 'phone_locval = <<$ARGS[2]>>_pussyflash[<<temp_flashpussycnt>>]'
+			if phone_locval = 1:
+				if temp_cnum = 2: $temp_SMS_selfietext += '</tr><tr>' & temp_cnum = 0
+				temp_cnum += 1
+				$temp_SMS_selfietext += '<td width="33%">' + func('SMS_selfies_popup', 'set_selfie', $ARGS[3], ARGS[4], $ARGS[2], 'pussyflash', ARGS[1], temp_flashpussycnt) + '</td>'
+			end
+			temp_flashpussycnt += 1
+		if temp_flashpussycnt <= selfiePussyflash[ARGS[1]]: jump 'temp_loop8'
+		if temp_cnum ! 2: $temp_SMS_selfietext += '<td></td>'
+		$temp_SMS_selfietext += '</tr>'
+
+		killvar 'temp_flashpussycnt'
+		killvar 'temp_cnum'
+	end
+end
+
+
+
+--- SMS_selfies ---------------------------------

+ 21 - 0
locations/SMS_selfies_popup.qsrc

@@ -0,0 +1,21 @@
+# SMS_selfies_popup
+
+
+!	$ARGS[1] = Return string
+!	$ARGS[2] = telefon['SMSid']
+!!	$ARGS[3] = Location where the selfie is taken
+!!	$ARGS[4] = State of dress in the selfie
+!!	 ARGS[5] = is the index of the location in $selfieLoc[] and $selfieFilePrefix
+!!	 ARGS[6] = the selfie number
+if $ARGS[0] = 'set_selfie':
+	$temp_imloc = func('SMS_selfies_popup', 'get_imloc', $ARGS[3], $ARGS[4], ARGS[5], ARGS[6])
+	$result = '<a href="exec: gs <<$ARGS[1]>>, <<ARGS[2]>>, ''<<$temp_imloc>>'', ''<<$ARGS[3]>>'', ''<<$ARGS[4]>>'', <<ARGS[5]>>, <<ARGS[6]>>"><img src="<<$temp_imloc>>" style="horizontal-align:center; max-height:90%; max-width:90%"></a>'
+	killvar '$temp_imloc'
+end
+
+if $ARGS[0] = 'get_imloc':
+	$result = 'images/pc/activities/phone/selfies/<<$ARGS[1]>>/<<$ARGS[2]>>/<<$selfieFilePrefix[ARGS[3]]>><<ARGS[4]>>.jpg'
+end
+
+
+--- SMS_selfies_popup ---------------------------------

+ 217 - 0
locations/SMStext_builder.qsrc

@@ -0,0 +1,217 @@
+# SMStext_builder
+
+!	How to use SMStext_builder:
+!	
+!	Start with:
+!		gs 'SMStext_builder', 'start'
+!	Then add your content through "send" and "receive":
+!		gs 'SMStext_builder', 'send', [$text]
+!		gs 'SMStext_builder', 'receive', [$text]
+!		...
+!		...
+!	You can send/receive an image using "send_img" and "receive_img". Optionally, you can add an alt-name to the image in case it does not load
+!		gs 'SMStext_builder', 'send_img', [$img_path], ([$img_name])
+!		gs 'SMStext_builder', 'receive_img', [$img_path], ([$img_name])
+!
+!	If you want Sveta to reply to this (and thus the player potentially having a choice):
+!		gs 'SMStext_builder', 'add_reply', [$text], [$file_name], [$file_args0], [$file_args1], ...
+!		gs 'SMStext_builder', 'add_reply', [$text], [$file_name], [$file_args0], [$file_args1], ...
+!	
+!	If you want Sveta to choose a selfie to send, use:
+!		gs 'SMStext_builder', 'send_selfie', [$text], [$file_name], [$file_args0], [$file_args1]
+!		Where the file_name and args are where the text chain continues.
+!	
+!	Finally, if this is a new sms-chain, use:
+!		gs 'SMStext_builder', 'add_sms', [$npc_code]
+!	
+!	If you are updating an ongoing sms-chain (usually in reponse to a choice made in the replies), use:
+!		gs 'SMStext_builder', 'show_sms', ARGS[{n}]
+!				where {n} is one more than the number of args you passed to the choice.
+!				So if you are used:
+!					gs 'SMStext_builder', 'add_reply', [$text], [$file_name], [$file_args0], [$file_args1].
+!				Then you would pass ARGS[2] (since you used $ARGS[0] and $ARGS[1]):
+!				gs 'SMStext_builder', 'add_sms', ARGS[2]
+!	
+!	Finally after the player has made a choice, everything but the replies are stored.
+!	If you want to reset the text (but not the end images), use gs 'SMStext_builder', 'reset'
+!	Starting fresh or having done your final update (even if you never updated it anyway)
+!	End it with:
+!		gs 'SMStext_builder', 'end'
+
+
+
+
+if $ARGS[0] = 'start':
+	$temp_SMStext = ''
+
+elseif $ARGS[0] = 'end':
+	killvar '$temp_SMStext'
+	killvar '$temp_SMSreplies'
+	killvar '$temp_SMSimgs'
+	killvar 'stb_i'
+	killvar 'stb_maxi'
+	killvar '$temp_SMS_reset_flag'
+	killvar '$temp_SMSRepliestext'
+end
+
+if $ARGS[0] = 'reset':
+	$temp_SMS_reset_flag = 1
+end
+
+if $ARGS[0] = 'send':
+	temp_text_width = max(10, 90 - 2 * len($ARGS[1]))
+	$temp_SMStext += '<table width=80%><tr><td width=<<temp_text_width>>%></td><td collspan=2 bgcolor=pink style="padding-top:5pt; padding-bottom:5pt; padding-left:10pt; padding-right:3pt"><font color=black>'
+	$temp_SMStext += $ARGS[1]
+	$temp_SMStext += '</font></td></tr></table>'
+	killvar 'temp_text_width'
+
+elseif $ARGS[0] = 'send_img':
+	$temp_SMStext += '<table width=80%><tr><td width=10%></td><td collspan=2 bgcolor=pink align=center style="white-space:pre-wrap">'
+	if $ARGS[2] = '': $ARGS[2] = $ARGS[1]
+	$temp_SMStext += '<br><img src="<<$ARGS[1]>>" alt="<<$ARGS[2]>>" style="horizontal-align:center; max-height:90%; max-width:90%"><br><br>'
+	$temp_SMStext += '</td></tr></table>'
+
+
+elseif $ARGS[0] = 'receive':
+	temp_text_width = max(10, 90 - 2 * len($ARGS[1]))
+	$temp_SMStext += '<table width=80%><tr><td collspan=2 bgcolor="#D4CEF9" style="padding-top:5pt; padding-bottom:5pt; padding-left:10pt; padding-right:3pt"><font color=black>'
+	$temp_SMStext += $ARGS[1]
+	$temp_SMStext += '</font></td><td width=<<temp_text_width>>%></td></tr></table>'
+	killvar 'temp_text_width'
+
+elseif $ARGS[0] = 'receive_img':
+	$temp_SMStext += '<table width=80%><tr><td collspan=2 bgcolor="#D4CEF9" align=center style="white-space:pre-wrap">'
+	if $ARGS[2] = '': $ARGS[2] = $ARGS[1]
+	$temp_SMStext += '<br><img src="<<$ARGS[1]>>" alt="<<$ARGS[2]>>" style="horizontal-align:center; max-height:90%; max-width:90%"><br><br>'
+	$temp_SMStext += '</td><td width=10%></td></tr></table>'
+end
+
+
+!	How to use 'add_reply':
+!		gs 'SMStext_builder', 'add_reply', $reply_text, $file_loc, $file_arg1, $file_arg2, $file_args2, ...
+!		gs 'SMStext_builder', 'add_reply', 'Hello', 'band_tour_anushka_SMS', 'week1', 'choice_a'
+if $ARGS[0] = 'add_reply':
+	$temp_reply_str = '[Reply] <a href="exec: gs '
+
+	stb_n_args = arrsize('$ARGS')
+	stb_i = 2
+	:SMS_build_reply_loop
+	if stb_i < stb_n_args:
+		$temp_reply_str += '''<<$ARGS[stb_i]>>'', '
+		stb_i += 1
+		jump 'SMS_build_reply_loop'
+	end
+
+	$temp_reply_str += 'telefon[''SMSid'']">' + $ARGS[1] + '</a>'
+	$temp_SMSreplies[] = $temp_reply_str
+
+	killvar 'temp_reply_str'
+	killvar 'stb_i'
+	killvar 'stb_n_args'
+
+elseif $ARGS[0] = 'private_set_replies':
+	$temp_SMSRepliestext += '<table>'
+
+	stb_maxi = arrsize('temp_SMSreplies')
+	stb_i = 0
+	:SMS_reply_loop
+		$temp_SMSRepliestext += '<tr><td>' + $temp_SMSreplies[stb_i] + '</td></tr>'
+		stb_i += 1
+	if stb_i < stb_maxi: jump 'SMS_reply_loop'
+	$temp_SMSRepliestext += '</table>'
+
+	killvar '$temp_SMSreplies'
+	killvar 'stb_i'
+	killvar 'stb_maxi'
+end
+
+
+if $ARGS[0] = 'add_end_img':
+	if $temp_imgs[0] = '':
+		$temp_SMSimgs[0] = $ARGS[1]
+	elseif $temp_imgs[1] = '':
+		$temp_SMSimgs[1] = $ARGS[1]
+	elseif $temp_imgs[2] = '':
+		$temp_SMSimgs[2] = $ARGS[1]
+	elseif $temp_imgs[3] = '':
+		$temp_SMSimgs[3] = $ARGS[1]
+	end
+end
+
+if $ARGS[0] = 'private_set_end_img':
+	stb_i = 0
+	:stb_psei_loop
+	if stb_i < arrsize('temp_SMSimgs'):
+		if $SMSPicture1[ARGS[1]] = '':
+			$SMSPicture1[ARGS[1]] = $temp_SMSimgs[stb_i]
+		elseif $SMSPicture2[ARGS[1]] = '':
+			$SMSPicture2[ARGS[1]] = $temp_SMSimgs[stb_i]
+		elseif $SMSPicture3[ARGS[1]] = '':
+			$SMSPicture3[ARGS[1]] = $temp_SMSimgs[stb_i]
+		elseif $SMSPicture4[ARGS[1]] = '':
+			$SMSPicture4[ARGS[1]] = $temp_SMSimgs[stb_i]
+		end
+		stb_i += 1
+	end
+	killvar 'stb_i'
+	killvar '$temp_SMSimgs'
+end
+
+if $ARGS[0] = 'add_sms':
+	if arrsize('temp_SMSreplies') > 0: 
+		gs 'SMStext_builder', 'private_set_replies'
+	else
+		$temp_SMSRepliestext = ''
+	end
+	gs 'telefon', 'add_sms', $ARGS[1], $temp_SMStext, $temp_SMSRepliestext, $temp_SMSimgs[0], $temp_SMSimgs[1], $temp_SMSimgs[2], $temp_SMSimgs[3]
+	
+	killvar '$temp_SMSRepliestext'
+
+elseif $ARGS[0] = 'show_sms':
+	if arrsize('temp_SMSreplies') > 0:
+		gs 'SMStext_builder', 'private_set_replies'
+	else
+		killvar '$temp_SMSRepliestext'
+	end
+	if arrsize('temp_SMSimgs') > 0: gs 'SMStext_builder', 'private_set_end_img', ARGS[1]
+	if temp_SMS_reset_flag = 1: $SMSMessage[ARGS[1]] = ''
+
+	$SMSMessage[ARGS[1]] += $temp_SMStext
+	$SMSReplies[ARGS[1]] = $temp_SMSRepliestext
+	gs 'telefon', 'show_sms', ARGS[1]
+
+	killvar 'temp_SMS_reset_flag'
+	killvar '$temp_SMStext'
+	killvar '$temp_SMSRepliestext'
+end
+
+! $ARGS[1] = displayed text
+! $ARGS[2] = control string = 'c|sw|u|n|b|sh|ft|fa|fp'
+!		c: clothed | sw: swim | u: underwear
+!		n: nude | b: bath | sh: shower
+!		ft: flash tits | fa: flash ass | fp: flash pussy
+! $ARGS[3] -> onward = the return location.
+! gs 'SMStext_builder', 'send_selfie', 'Send a sexy selfie', 'c|b|ft', 'band_tour_anushka_SMS', 'Week8', 'Choice_a'
+if $ARGS[0] = 'send_selfie':
+	$temp_reply_str = '[Selfie] <a href="exec: gs ''SMS_selfies'', ''selfie_menu'', ''<<lcase($ARGS[2])>>'', telefon[''SMSid'']'
+
+	stb_n_args = arrsize('$ARGS')
+	stb_i = 3
+	:SMS_build_send_selfie_loop
+	if stb_i < stb_n_args:
+		$temp_reply_str += ', ''<<$ARGS[stb_i]>>'''
+		stb_i += 1
+		jump 'SMS_build_send_selfie_loop'
+	end
+
+	$temp_reply_str += '"><<$ARGS[1]>></a>'
+	$temp_SMSreplies[] = $temp_reply_str
+
+	killvar 'temp_reply_str'
+	killvar 'stb_i'
+	killvar 'stb_n_args'
+end
+
+
+
+--- SMStext_builder ---------------------------------

+ 5 - 6
locations/Serge_kuh.qsrc

@@ -488,7 +488,7 @@ if $ARGS[0] = 'izdev2':
 							'He slips his dick into your soppy pussy with one firm thrust, and begins to fuck you thoroughly. "Very nice, very wet... you''re a good little slut, <<$pcs_nickname>>. Did getting me off with your mouth really turn you on so much?"'
 							'To your shame you have to admit that: yes, yes it did.'
 							if analplugin = 1:
-								analplugin = 0
+								analplugin = 0 & analplugout = 1
 								'While Sergey keeps pounding your pussy, he begins to tug at your butt plug. It''s not that easy to take out while you''re moving constantly, and eventually Sergey stops fucking you for a second to pull it out.'
 							end
 							'With his cock still inside your pussy, he begins to finger your tight little asshole.'
@@ -925,7 +925,7 @@ if $ARGS[0] = 'izdev9':
 							'"When Sergey tells you to stop after a few minutes of throatfucking, his cock is covered in a layer of saliva. "Very good, <<$pcs_nickname>>. You''re almost as good as your classmate. Now get on your hands and knees."'
 							'Sergey''s hands explore your body greedily, but end up a little bit higher than you had anticipated.'
 							if analplugin = 1:
-								analplugin = 0
+								analplugin = 0 & analplugout = 1
 								'Sergey laughs when he finds your butt plug and says: "Wow, <<$pcs_nickname>>! I never would''ve thought... good for you, though. Let''s get this out of the way for now."'
 								'He carefully pulls your butt plug out of your ass, and plunges his fingers in to test how loose your ass is. "Very nice. That should make the next step easier. Will save some time, too... no need to take it slow!"'
 							end
@@ -1476,7 +1476,7 @@ if $ARGS[0] = 'izn1':
 			'"I have all day, slut! We''ll repeat this until you get it right! Hands behind your back!" he growls, and slaps your hand away once more.'
 			'He repeats this three more times. When he realizes you''re no longer trying to disobey him, he nods: "That''s better, slut. Turn around."'
 			if analplugin = 1:
-				analplugin = 0
+				analplugin = 0 & analplugout = 1
 				'Sergey notices your butt plug and pulls it out of you in one quick motion, tossing it aside carelessly.'
 			end
 			'When you turn your back to him, you feel his raging erection poking against the small of your back. He takes it in his hand and guides it towards your tight anus, and begins to work the head inside your asshole. "You handle pain well, slut", Sergey groans. "This should be easy for you."'
@@ -1545,7 +1545,7 @@ if $ARGS[0] = 'izn2':
 		'Then he stops, and rubs his cock against your puckered asshole.'
 		$orgasm_or = 'yes'
 		if analplugin = 1:
-			analplugin = 0
+			analplugin = 0 & analplugout = 1
 			'Or at least, he tries to. "What''s this?" he asked, a bit amazed... he was not expecting you to be wearing a butt plug! He grins as he pulls it out, and holds it in front of your mouth: "Lick it clean while I stuff your ass with something else, slut."'
 		end
 		'He slips one finger inside your ass, and then another. And then another! With three fingers inside you, he begins to move his hand.'
@@ -1700,7 +1700,6 @@ if $ARGS[0] = 'sex2':
 					*clr & cla
 					minut +=10
 					pcs_mood = 100
-					gs 'cum_manage'
 					gs 'cum_call','',$boy,1
 					pcs_hairbsh = 0
 					'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/shulginhome/kuh/help/event/sex2-5.jpg"></center>'
@@ -1749,7 +1748,7 @@ if $ARGS[0] = 'sex3':
 			'"Uncle Sergey, fuck me!" you tell him. It''s more of an order than a question, but Sergey seems happy to oblige and turns you around, showing his cock inside you in one firm thrust.'
 			'He''s satisfied enough to just fuck you for a while, but you notice his attention is going to your asshole more and more.'
 			if analplugin = 1:
-				analplugin = 0
+				analplugin = 0 & analplugout = 1
 				'Sergey laughs when he finds your butt plug and says: "Wow, <<$pcs_nickname>>! I never would''ve thought... good for you, though. Let''s get this out of the way for now."'
 				'He carefully pulls your butt plug out of your ass, and plunges his fingers in to test how loose your ass is. "Very nice. That should make the next step easier. Will save some time, too... no need to take it slow!"'
 			end

+ 1 - 1
locations/Voltrener.qsrc

@@ -446,7 +446,7 @@ if $ARGS[0] = 'trener_speak':
 			$OpenInnerThought+'"Didn''t get anything out of him there, <<$pcs_lastname>>. Although, the classes in the fitness center should be worth investigating."'+$CloseInnerThought 
 			npc_rel['A69'] += 3
 			'Seeing Mikhail a little upset by your questions, you decide to cheer him up.'
-			!! the flag on the emergence of Turner in the centre
+			!! the flag on the emergence of Turner in the center
 			ShowerIvan = 4
 			act 'Kiss':
 				cla & *clr

+ 1 - 4
locations/Zvereva_Sly_sex.qsrc

@@ -172,10 +172,7 @@ if $ARGS[0] = 'sex_end':
 		killvar '$pursebratype' & killvar 'pursebranumber'
 		gs 'clothing','wear_last_worn'
 
-		if analplugout = 1:
-			analplugout = 0
-			analplugin = 1
-		end
+		if analplugout = 1: gs 'dinsex', 'after_anal'
 		if vibratorOUT = 1:
 			vibratorIN = 1
 			vibratorOUT = 0

+ 2 - 2
locations/_attributes_fashionista.qsrc → locations/_attributes_fashionista_dress.qsrc

@@ -1,4 +1,4 @@
-# $attributes_fashionista
+# $attributes_fashionista_dress
 !2022/06/14
 !prince range from 4 to 6, please avoid adding too many 4s
 
@@ -1457,5 +1457,5 @@ elseif ARGS[1] = 200:
 	
 end
 
---- $attributes_fashionista ---------------------------------
+--- $attributes_fashionista_dress ---------------------------------
 

+ 1 - 1
locations/_attributes_school.qsrc

@@ -393,7 +393,7 @@ elseif ARGS[1] = 55:
 	CloStyle2 = 4
 	
 elseif ARGS[1] = 56:
-	CloQuality = 4
+	CloQuality = 3
 	CloThinness = 4
 	CloTopCut = 4
 	CloSkirtShortness = 3

+ 3 - 57
locations/_body_image.qsrc

@@ -3,66 +3,12 @@
 !for example, you can   VIEW FUNC('$body_image', 'body')   to view body image in popup window, and
 !pl $body_image_msg     to display extra texts
 
-!{
-if $ARGS[0] = 'BMI':
-	!!BMI Descriptions
-	if pcs_bmi < 16:
-		$bmi_desc = 'You are severely underweight.'
-	elseif pcs_bmi < 19:
-		$bmi_desc = 'You are underweight'
-	elseif pcs_bmi < 25:
-		$bmi_desc = 'You have a normal, healthy weight.'
-	elseif pcs_bmi < 30:
-		$bmi_desc = 'You are overweight.'
-	elseif pcs_bmi < 35:
-		$bmi_desc = 'You are moderately obese.'
-	elseif pcs_bmi < 40:
-		$bmi_desc = 'You are severely obese.'
-	elseif pcs_bmi < 45:
-		$bmi_desc = 'You are very severely obese.'
-	else
-		$bmi_desc = 'You are morbidly obese.'
-	end
-end
-}
 
 $body_image_msg = ''
 if $ARGS[0] = 'body':
-!!	This displays the body image; $bodimgsets[x9] is the folder name
-	if (knowpreg = 1 or (preg = 1 and thinkpreg = 1) or (preg = 1 and PregChem > 3600)) and bodset = 3:
-		if PregChem > 6216:
-			$result = 'images/pc/body/shape/<<$bodimgsets[((bodset * 10)+9)]>>/8.jpg'
-		elseif PregChem < 2688:
-			$result = 'images/pc/body/shape/<<$bodimgsets[((bodset * 10)+9)]>>/0.jpg'
-		else
-			$result = 'images/pc/body/shape/<<$bodimgsets[((bodset * 10)+9)]>>/<<((PregChem - 2184)/504)>>.jpg'
-		end
-	elseif pcs_bmi < 15 or (pcs_bmi = 15 and pcs_bmi[1] <= 1):
-		$result = 'images/pc/body/shape/0.jpg'
-	elseif pcs_bmi < 19 or (pcs_bmi = 19 and pcs_bmi[1] = 0):
-		$result = 'images/pc/body/shape/<<$bodimgsets[((bodset * 10) + 9)]>>/1.jpg'
-	elseif pcs_bmi < 22 or (pcs_bmi = 22 and pcs_bmi[1] < 5):
-		$result = 'images/pc/body/shape/<<$bodimgsets[((bodset * 10) + 9)]>>/2.jpg'
-	elseif pcs_bmi < 26:
-		$result = 'images/pc/body/shape/<<$bodimgsets[((bodset * 10) + 9)]>>/3.jpg'
-	elseif pcs_bmi < 29 or (pcs_bmi = 29 and pcs_bmi[1] < 5):
-		$result = 'images/pc/body/shape/<<$bodimgsets[((bodset * 10) + 9)]>>/4.jpg'
-	elseif pcs_bmi < 32 or (pcs_bmi = 32 and pcs_bmi[1] < 9):
-		$result = 'images/pc/body/shape/<<$bodimgsets[((bodset * 10) + 9)]>>/5.jpg'
-	elseif pcs_bmi < 36 or (pcs_bmi = 36 and pcs_bmi[1] < 4):
-		if imgset6ovr[bodset] = 1:
-			$result = 'images/pc/body/shape/<<$bodimgsets[((bodset * 10) + 9)]>>/6.jpg'
-		else
-			$result = 'images/pc/body/shape/6.jpg'
-		end
-	else
-		if imgset7ovr[bodset] = 1:
-			$result = 'images/pc/body/shape/<<$bodimgsets[((bodset * 10) + 9)]>>/7.jpg'
-		else
-			$result = 'images/pc/body/shape/7.jpg'
-		end
-	end
-	$body_image_msg += 'You are <<pcs_hgt>>cm tall and <<$body>>'
+	$bodyVars['img'] = func('body_structure', 'body_img')
+	$result = $bodyVars['img']
+	$body_image_msg += 'You are <<pcs_hgt>>cm tall and <<$bodyVars[''desc'']>>'
 end
 
 if $ARGS[0] = 'coat':

+ 1 - 1
locations/_clothing_image.qsrc

@@ -21,7 +21,7 @@ elseif $ARGS[0] = 'coco_outfits':
 	$RESULT = 'images/pc/items/coco/outfits/<<ARGS[1]>>.jpg'
 elseif $ARGS[0] = 'coco_dress':
 	$RESULT = 'images/pc/items/coco/dress/<<ARGS[1]>>.jpg'
-elseif $ARGS[0] = 'fashionista':
+elseif $ARGS[0] = 'fashionista_dress':
 	$RESULT = 'images/pc/items/fashionista/dress/<<ARGS[1]>>.jpg'
 elseif $ARGS[0] = 'fashionista_outfits':
 	$RESULT = 'images/pc/items/fashionista/outfits/<<ARGS[1]>>.jpg'

+ 1 - 1
locations/_short_description.qsrc

@@ -26,7 +26,7 @@ elseif $ARGS[0] = 'coco_outfits':
 	$RESULT = 'Coco outfit number '
 elseif $ARGS[0] = 'coco_dress':
 	$RESULT = 'Coco dress number '
-elseif $ARGS[0] = 'fashionista':
+elseif $ARGS[0] = 'fashionista_dress':
 	$RESULT = 'Fashionista dress number '
 elseif $ARGS[0] = 'fashionista_outfits':
 	$RESULT = 'Fashionista outfit number '

+ 3 - 3
locations/albina_chat.qsrc

@@ -95,7 +95,7 @@ if $ARGS[0] = 'stripper_talk1':
 		'"I... do some strip dancing in the city," you admit, blushing hard.'
 		if age < 18:
 			'"You''re a stripper?" Her jaw drops. "How? You''re underage!"'
-			if alterstrtimg = 18 or alterstrtimg = 19 or alterstrtimg = 20 or alterstrtimg = 21:
+			if $start_type['group'] = 'gopnik':
 				'"I''ve had a fake passport for years," you shrug uncomfortably. "Easiest way to get booze. Now it helps me with other things too."'
 			else
 				'"I... got a fake passport that the club don''t really care to check," you admit. "It... wasn''t easy getting it."'
@@ -117,7 +117,7 @@ if $ARGS[0] = 'stripper_talk1':
 		'"I do some strip dancing in the city," you say casually.'
 		if age < 18:
 			'"You''re a stripper?" she exclaims, her jaw dropping. "How? You''re underage!"'
-			if alterstrtimg = 18 or alterstrtimg = 19 or alterstrtimg = 20 or alterstrtimg = 21:
+			if $start_type['group'] = 'gopnik':
 				'"I''ve had a fake passport for years, Albina," you say, rolling your eyes. "How do you think I got all my booze?"'
 			else
 				'"I got a fake passport," you admit with a shrug. "It wasn''t easy but it gets me past any doors that have an 18+ requirement."'
@@ -139,7 +139,7 @@ if $ARGS[0] = 'stripper_talk1':
 		'"I do some strip dancing in the city," you admit, letting a smug smile creep onto your lips.'
 		if age < 18:
 			'"You''re a stripper?!" she exclaims, her jaw dropping. "How? You''re underage!"'
-			if alterstrtimg = 18 or alterstrtimg = 19 or alterstrtimg = 20 or alterstrtimg = 21:
+			if $start_type['group'] = 'gopnik':
 				'"I''ve had a fake passport for years," you grin. "Easiest way to get booze. Now it helps me with other things too."'
 			else
 				'"I got a fake passport. Expensive sumbitch, but it gets me into 18+ areas."'

+ 1 - 1
locations/albina_house_events.qsrc

@@ -650,7 +650,7 @@ if $ARGS[0] = 'hot_tub_no_panties':
 	else
 		'"I uhh, may have forgotten to wear them today..." you blush before stepping into the tub with her.'
 	end
-	if albina['commando_know'] = 0 and alterstrtimg = 24:
+	if albina['commando_know'] = 0 and $start_type['cat'] = 'goodgirl':
 		gs 'albina_house_events', 'goodie_two_shoes'
 	else
 		gs 'albina_house_events', 'hot_tub_no_panties2'

+ 1 - 1
locations/albinahome.qsrc

@@ -220,7 +220,7 @@ if $ARGS[0] = 'bedroom':
 		act 'Hang out': gt $loc, $loc_arg
 	else
 		'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/albinahome/albinaroom.jpg"></center>'
-		'You are impressed at how nice Albina''s bedroom looks, the centrepiece being a large double bed covered in soft pillows. A door at the back of the room leads to her en-suite bathroom, and she even has a sliding door leading to a balcony that overlooks the nearby lake. A closet full of expensive-looking clothes is built into one of the walls.'
+		'You are impressed at how nice Albina''s bedroom looks, the centerpiece being a large double bed covered in soft pillows. A door at the back of the room leads to her en-suite bathroom, and she even has a sliding door leading to a balcony that overlooks the nearby lake. A closet full of expensive-looking clothes is built into one of the walls.'
 		'By the bed is a small <a href="exec:gt ''albina_house_events'',''night_stand''">nightstand</a>, and on a desk is a <a href="exec:gt ''albina_house_events'',''computer''">laptop</a>'
 		act 'Return to the hallway': gt 'albinahome', 'hallway'
 		act 'Chat with Albina': gt 'albina_chat', 'chat'

+ 1 - 1
locations/alex.qsrc

@@ -31,7 +31,7 @@ act 'Get on your knees and take it in your mouth':
 		'Alexey slaps you on your ass with the palm of his hand and says, "You''re wet like a slut already, do you like being fucked like this?"'
 		if analplugin = 1:
 			'Alexey pulls the plug out of your narrow and tight ass.'
-			analplugout = 1
+			analplugin = 0 & analplugout = 1
 		end
 		'Without stopping his relentless pounding of your pussy, Alexey smears one of his fingers with your lovejuices, and sticks it in your anus.'
 		'He moves his finger slowly, probing your anus and preparing it for his dick.'

+ 2 - 2
locations/anush_bedroom.qsrc

@@ -60,7 +60,7 @@ if $ARGS[0] = 'anushroom':
 	gs 'stat'
 	'<center><h4><font color="maroon">Anushka''s Room</font></h4></center>'
 	'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/anushapt/anushroom.jpg"></center>'
-	'The room is surprisingly clean, more so than any other room in the apartment. The walls are covered with pictures and posters of <a href="exec:gt ''anush_bedroom'',''the_pretty_reckless''">bands</a> or famous models, girls and guys, while the room is skillfully decorated with various strings of coloured lights. In the centre of the room, beneath the window, is a <a href="exec:gt ''anush_bedroom'',''bed''">bed</a> with a small <a href="exec:gt ''anush_bedroom'',''night_stand''">nightstand</a> beside it.'
+	'The room is surprisingly clean, more so than any other room in the apartment. The walls are covered with pictures and posters of <a href="exec:gt ''anush_bedroom'',''the_pretty_reckless''">bands</a> or famous models, girls and guys, while the room is skillfully decorated with various strings of coloured lights. In the center of the room, beneath the window, is a <a href="exec:gt ''anush_bedroom'',''bed''">bed</a> with a small <a href="exec:gt ''anush_bedroom'',''night_stand''">nightstand</a> beside it.'
 	'Against the opposite wall are a small computer desk, a <a href="exec:gt ''anush_bedroom'',''computer''">laptop</a> and a chair. Next to the desk is a <a href="exec:gt ''anush_bedroom'',''nushdresser''">dresser</a> with a decent sized flatscreen TV sitting on top of it. On the other side of the desk is a bookshelf with a relatively large collection of books. Hanging on the wall next to the shelves is an <a href="exec:gt ''anush_bedroom'',''guitar''">acoustic guitar</a> with an electric guitar right beside it. A skateboard is also leaning against one of the other walls next to the <a href="exec:gt ''anush_bedroom'',''nushcloset''">closet door</a>, along with some rollerblades in the corner.'
 	act 'Leave Anushka''s room': gt 'anushapt','hallway'
 	if AnushkaLoc = 2:
@@ -403,7 +403,7 @@ if $ARGS[0] = 'computer':
 			'You perk up at the mention of modelling to earn money towards a lovely laptop like she has. "Does modelling really pay that well?"'
 			'She nods. "Sort of... If you''re willing to do nude modelling, you can make a lot in a short amount of time. Are you interested?" she asks while arching a shapely eyebrow.'
 			'"Nude?" you silently ask yourself. Still, it might be worth considering if it pays that much. "I don''t know... Maybe... How would I get started? Is there a modelling agency or something?"'
-			'She grins at your reply. "Yes, it''s located in the city centre." She then explains precisely where it is and to let the photographer know she sent you.'
+			'She grins at your reply. "Yes, it''s located in the city center." She then explains precisely where it is and to let the photographer know she sent you.'
 			act 'Thanks':gt 'anush_bedroom','anushroom'
 			if fakepassport ! 1:
 				act 'Underaged?':

+ 1 - 1
locations/anush_bedroom_city.qsrc

@@ -72,7 +72,7 @@ if $ARGS[0] = 'anushroom':
 	gs 'stat'
 	'<center><h4><font color="maroon">Anushka''s Room</font></h4></center>'
 	'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/anushapt/anushroom.jpg"></center>'
-	'The room is clean, even more so than her room back in Pavlovsk, it reminds you a lot of her old room, a few new posters, slightly bigger and looks a little more adult but otherwise pretty much the same. The walls are covered with pictures and posters of <a href="exec:gt ''anush_bedroom_city'',''the_pretty_reckless''">bands</a> or famous models, girls and guys, while the room is skillfully decorated with various strings of coloured lights. In the centre of the room, beneath the window, is a <a href="exec:gt ''anush_bedroom_city'',''bed''">bed</a> with a small <a href="exec:gt ''anush_bedroom_city'',''night_stand''">nightstand</a> beside it.'
+	'The room is clean, even more so than her room back in Pavlovsk, it reminds you a lot of her old room, a few new posters, slightly bigger and looks a little more adult but otherwise pretty much the same. The walls are covered with pictures and posters of <a href="exec:gt ''anush_bedroom_city'',''the_pretty_reckless''">bands</a> or famous models, girls and guys, while the room is skillfully decorated with various strings of coloured lights. In the center of the room, beneath the window, is a <a href="exec:gt ''anush_bedroom_city'',''bed''">bed</a> with a small <a href="exec:gt ''anush_bedroom_city'',''night_stand''">nightstand</a> beside it.'
 	*nl
 	'Against the opposite wall are a small computer desk, a <a href="exec:gt ''anush_bedroom_city'',''computer''">laptop</a> and a chair. Next to the desk is a <a href="exec:gt ''anush_bedroom_city'',''nushdresser''">dresser</a> with a decent sized flatscreen TV sitting on top of it. On the other side of the desk is a bookshelf with a relatively large collection of books. Hanging on the wall next to the shelves is an <a href="exec:gt ''anush_bedroom_city'',''guitar''">acoustic guitar</a> with an electric guitar right beside it. A skateboard is also leaning against one of the other walls next to the <a href="exec:gt ''anush_bedroom_city'',''nushcloset''">closet door</a>, along with some rollerblades in the corner.'
 	act 'Leave Anushka''s room': gt 'anushapt_city','hallway'

+ 2 - 2
locations/anushkaev1.qsrc

@@ -134,7 +134,7 @@ if $ARGS[0] = 'strapon1':
 													anushkaQW['dom_nush'] -= 1
 													'<center><img <<$set_imgh>> src="images/characters/pavlovsk/school/girl/anushka/bedroom/sex/strapon/strapme9.jpg"></center>'
 													if analplugin = 1:
-														analplugin = 0
+														analplugin = 0 & analplugout = 1
 														'She straddles your thighs to get a better position, then starts pulling on your butt plug. As you glance back, you see a huge grin on her face. "You won''t be needing this for a while..." she says as she pulls it free and shows it to you.'
 													else
 														'She straddles your thighs to get a better position and uses her hands to spread your ass cheeks. As you glance back, you see a huge grin on her face. She obviously loves the idea of fucking you in the ass.'
@@ -277,7 +277,7 @@ if $ARGS[0] = 'strapon1':
 										'Once she gets bored of you sucking the dildo, she flips your ass towards her.'
 										anushkaQW['dom_nush'] -= 1
 										if analplugin = 1:
-											analplugin = 0
+											analplugin = 0 & analplugout = 1
 											'She straddles your thighs to get a better position, then starts pulling on your butt plug. As you glance back, you see a huge grin on her face. "You won''t be needing this for a while..." she says as she pulls it free and shows it to you.'
 										else
 											'She straddles your thighs to get a better position and uses her hands to spread your ass cheeks. As you glance back, you see a huge grin on her face. She obviously loves the idea of fucking you in the ass.'

+ 1 - 1
locations/anushkaev2.qsrc

@@ -671,7 +671,7 @@ if $ARGS[0] = 'val3some':
 													'<center><img <<$set_imgh>> src="images/characters/pavlovsk/school/girl/anushka/sex/spy/join/val/valnushs11.jpg"></center>'
 													'You nod at his request. "Sure, you can fuck my ass." you tell him and Anushka rolls off of you as Valentin moves up behind you. He grabs you by the hips and pulls you up into a doggy position. As he does, Anushka moves around in front of you and lies on her back with her legs spread. She places her hand on the back of your head and pulls your face to her crotch.'
 													*nl
-													if analplugin = 1: analplugin = 0 & 'Valentin pulls out your butt plug without mercy, and it comes out with a loud pop. You doing some anal training <<$pcs_nickname>>? Nice! No need to take it easy on you it seems.'
+													if analplugin = 1: analplugin = 0 & analplugout = 1 & 'Valentin pulls out your butt plug without mercy, and it comes out with a loud pop. You doing some anal training <<$pcs_nickname>>? Nice! No need to take it easy on you it seems.'
 													'As you lower your head, you feel Valentin''s cock pressing against your asshole, along with a squirt of lube. He rubs the tip of his dick against your asshole while you start to lick Anushka''s sopping wet pussy.'
 													*nl
 													'You groan as Valentin''s <<dick>>cm <<$dick_girth>> cock pops into your ass. He pauses to let you adjust before he slowly starts fucking your ass. The louder you moan the harder and rougher he gets. He seems to be really getting into it, making you think he is close when he cries out "Fuck, I''m about to cum!"'

+ 409 - 211
locations/arousal.qsrc

@@ -56,9 +56,10 @@ eg: gs 'arousal', 'trib', 10, 'bound', 'sub'
 In this case lesbianism is automatically added, much as feet would be applied to 'footjob'
 
 Lubrication - if one of the arguments $ARGS[2] - [8] is set to 'lube', it supposes that it is used some kind of lubricant - preferably from PCs supply of lube.
-The lube will remain applied to the orifice in question until 'end' is called. The usage of Svetas lube and checks for her having any must be done in the sex act.
+The lube will remain applied to the orifice in question until 'end' is called. The usage of Svetas lube and checks for her having any must be done in the sex act or use the auto lube action.
 The lubrication is binded with anal or vaginal action. I think that the best combo is with 'anal_finger' and 'vaginal_finger'
 Only call one at a time, if more required, use multiple calls
+Also - if one of the arguments $ARGS[2] - [8] is set to 'spit' then it will apply lube at half value, again this must be with a vaginal or anal action. I would suggest skipping the specific finger part
 
 Unaware - if one of the arguments $ARGS[2] - [8] is set to 'unaware', Sveta is not aware of this Sexact. Sveta will never know she had Sex!
 no_orgasm_msg - if one of the arguments $ARGS[2] - [8] is set to 'no_orgasm_msg', the system will not generate a generic arousal message
@@ -89,13 +90,8 @@ killvar 'orgasm_flag'
 
 if $ARGS[0] ! 'end' and $ARGS[0] ! 'checks' and $ARGS[0] ! 'count' and $ARGS[0] ! 'count2':
 
-	if strpos($ARGS[2]+$ARGS[3]+$ARGS[4]+$ARGS[5]+$ARGS[6]+ $ARGS[7]+ $ARGS[8],'unaware') > 0:
-		temp_unaware = 1
-	end
-
-	if strpos($ARGS[2]+$ARGS[3]+$ARGS[4]+$ARGS[5]+$ARGS[6]+ $ARGS[7]+ $ARGS[8],'no_orgasm_msg') > 0:
-		temp_text = 1
-	end
+	if arrpos('$ARGS', 'unaware') >= 0: temp_unaware = 1
+	if arrpos('$ARGS', 'no_orgasm_msg') >= 0: temp_text = 1
 	
 	if mid($ARGS[2],1,4) = 'dick':
 		temp_dick = dyneval('result='+$ARGS[2])
@@ -106,22 +102,67 @@ if $ARGS[0] ! 'end' and $ARGS[0] ! 'checks' and $ARGS[0] ! 'count' and $ARGS[0]
 		temp_silavag = silavag
 		$temp_dick_girth = $dick_girth
 	end
-	if strpos($ARGS[2]+$ARGS[3]+$ARGS[4]+$ARGS[5]+$ARGS[6]+ $ARGS[7]+ $ARGS[8],'rough')+strpos($ARGS[2]+$ARGS[3]+$ARGS[4]+$ARGS[5]+$ARGS[6]+ $ARGS[7]+ $ARGS[8],'beast') > 0: temp_silavag = 0
+	if arrpos('$ARGS', 'prostitution') >= 0: temp_silavag = rand(0,1)
+	if arrpos('$ARGS', 'gangbang') >= 0: temp_silavag = rand(0,2)
+	if arrpos('$ARGS', 'rape') >= 0 or arrpos('$ARGS', 'rough') >= 0 or arrpos('$ARGS', 'beast') >= 0: temp_silavag = 0
 	grange = dyneval('result=strpos(''skinny   slimx     well pr   thicker   thickx    massive   monstrous'',$ARGS[0])',mid($temp_dick_girth+'x',1,6))/2
 
 	!! first let us determine how slippery are pc''s holes
-	if vaginal_slip < pcs_horny / 10: vaginal_slip = pcs_horny / 10
-	if strpos($ARGS[2]+$ARGS[3]+$ARGS[4]+$ARGS[5]+$ARGS[6]+ $ARGS[7]+ $ARGS[8],'lube') > 0:
-		if ar_anal_lube = 0:
-			if mid($ARGS[0],1,4) = 'anal':
-				anal_slip = 8
+	if anal_slip < max(1, 8 + pain['asshole']/2 - pcs_ass) _ 
+	and mid($ARGS[0],1,4) = 'anal' and arrpos('$ARGS', 'anal_finger') < 0:
+		!! cum
+		if cumloc[3] > 0: anal_slip += rand(cumvol[3]/15, cumvol[3]/10)
+		!! spit
+		if arrpos('$ARGS', 'spit') >= 0: anal_slip += 4
+		!! lube
+		if anal_slip < max(1, 8 + pain['asshole']/2 - pcs_ass):
+			!! event lube
+			if arrpos('$ARGS', 'lube') >= 0 and ar_anal_lube = 0:
+				anal_slip += 8
 				ar_anal_lube = 1
+			!! PC lube
+			elseif auto_anal_lube = 1 _ 
+			and arrpos('$ARGS', 'rape') < 0 _ 
+			and arrpos('$ARGS', 'gangbang') < 0 _ 
+			and arrpos('$ARGS', 'rough') < 0 _ 
+			and arrpos('$ARGS', 'beast') < 0 _ 
+			and arrpos('$ARGS', 'BDSM') < 0 _ 
+			and arrpos('$ARGS', 'bound') < 0 _ 
+			and arrpos('$ARGS', 'humiliation') < 0:
+				gs 'arousal', 'auto_lube', 'anal'
 			end
 		end
-		if ar_vag_lube = 0:
-			if mid($ARGS[0],1,4) = 'vagi':
-				vaginal_slip = 8
+		!! an old(?) variable that is still in use somewhere
+		if anal_slip <> lubonus and lubonus > 0:
+			anal_slip += lubonus
+			lubonus = anal_slip
+		end
+	end
+
+	if vaginal_slip < max(1, 8 + pain['vaginal']/2 - pcs_vag) _ 
+	and mid($ARGS[0],1,4) = 'vagi' and arrpos('$ARGS', 'vaginal_finger') < 0:
+		!! horny
+		if vaginal_slip < pcs_horny / 10: vaginal_slip = pcs_horny / 10
+		!! cum
+		if cumloc[0] > 0: vaginal_slip += rand(cumvol[0]/10, cumvol[0]/5)
+		!! spit
+		if arrpos('$ARGS', 'spit') >= 0: vaginal_slip += 4
+		!! lube
+		if vaginal_slip < max(1, 8 + pain['vaginal']/2 - pcs_vag):
+			!! event lube
+			if arrpos('$ARGS', 'lube') >= 0 and ar_vag_lube = 0:
+				vaginal_slip += 8
 				ar_vag_lube = 1
+			!! PC lube
+			elseif auto_vag_lube = 1 _ 
+			and arrpos('$ARGS', 'rape') < 0 _ 
+			and arrpos('$ARGS', 'gangbang') < 0 _ 
+			and arrpos('$ARGS', 'rough') < 0 _ 
+			and arrpos('$ARGS', 'beast') < 0 _ 
+			and arrpos('$ARGS', 'BDSM') < 0 _ 
+			and arrpos('$ARGS', 'bound') < 0 _ 
+			and arrpos('$ARGS', 'humiliation') < 0:
+				gs 'arousal', 'auto_lube', 'vag'
 			end
 		end
 	end
@@ -142,6 +183,66 @@ if $ARGS[0] ! 'end' and $ARGS[0] ! 'checks' and $ARGS[0] ! 'count' and $ARGS[0]
 !!set a magnitude as a random
 	stim['mag'] = rand(0,3) + rand(0,3) + rand(0,3) 
 
+!! set up pain coefficient
+	pain_coeff = 0
+	if arrpos('$ARGS', 'rape') >= 0:         pain_coeff += rand(15,30)
+	if arrpos('$ARGS', 'gangbang') >= 0:     pain_coeff += rand(10,15)
+	if arrpos('$ARGS', 'beast') >= 0:        pain_coeff += rand(7,10)
+	if arrpos('$ARGS', 'rough') >= 0:        pain_coeff += rand(5,7)
+	if arrpos('$ARGS', 'BDSM') >= 0:         pain_coeff += rand(4,5)
+	if arrpos('$ARGS', 'maso') >= 0:         pain_coeff += rand(3,4)
+	if arrpos('$ARGS', 'bound') >= 0:        pain_coeff += rand(2,3)
+	if arrpos('$ARGS', 'sub') >= 0:          pain_coeff += rand(1,2)
+	if arrpos('$ARGS', 'prostitution') >= 0: pain_coeff += max(0, rand(-3,2))
+	if arrpos('$ARGS', 'unknown') >= 0:      pain_coeff += max(0, rand(-4,1))
+
+	stim_time = max(1, iif(ARGS[1]<0, -ARGS[1], ARGS[1]))
+	$get_hole_pain = {
+		!! ARGS[0] hole size
+		!! ARGS[1] hole slippery
+		!! ARGS[2] current pain
+		!! ARGS[3] length of inserted object
+		!! ARGS[4] grange of inserted object
+		!! ARGS[5] skill (0-2) aka silavag
+		!! ARGS[6] stimulation time
+		!! length and girth abilities of hole are not also separated
+		!! but I suppose that they are related although it is not propable
+		!! we can estimate difference in girth and length
+		grdif = (ARGS[4] - ARGS[0])/2
+		ltdif = (ARGS[3] - ARGS[0])/4
+		!! painful intercourse
+		if pain_coeff > rand(0,2):
+			grdif += rand(pain_coeff/2, pain_coeff)
+			ltdif += rand(pain_coeff/2, pain_coeff)
+		end
+		!! in pain, compensated with lube
+		if ARGS[2] > 0:
+			if ARGS[2] > rand(ARGS[1]/2, ARGS[1]): grdif += rand(ARGS[2] / max(1,ARGS[1]/2), ARGS[2] / max(1,ARGS[1]/4))
+			if ARGS[2] > rand(ARGS[1]/2, ARGS[1]): ltdif += rand(ARGS[2] / max(1,ARGS[1]/2), ARGS[2] / max(1,ARGS[1]/4))
+		end
+		!! lube can compensate the difference a bit, or make it worse if there is no lube at all
+		if ARGS[1] > 0:
+			grdif -= rand(ARGS[1]/2, ARGS[1])
+			ltdif -= rand(ARGS[1]/4, ARGS[1]/2)
+		else
+			grdif += max(1, rand(grdif/4, grdif/2)) / max(1,ARGS[5]+1)
+			ltdif += max(1, rand(ltdif/6, ltdif/4)) / max(1,ARGS[5]+1)
+		end
+		!! when skilled, it does not harm PC
+		if ARGS[5] > 0 and ltdif > 0: ltdif /= ARGS[5]+1
+		!! if there is any discomfort, check intercourse duration, compensated by skill
+		if stim_time > 1:
+			if grdif > rand(stim_time): grdif += rand(stim_time / (max(1,ARGS[5])*5), stim_time / (max(1,ARGS[5])*3))
+			if ltdif > rand(stim_time): ltdif += rand(stim_time / (max(1,ARGS[5])*5), stim_time / (max(1,ARGS[5])*3))
+		end
+
+		!! min\max
+		grdif = max(0, grdif / max(1, (ARGS[0]/6)))
+		ltdif = max(0, ltdif / max(1, (ARGS[0]/6)))
+
+		!{ 'hole size <<ARGS[0]>>; length: <<ARGS[3]>>; grange: <<ARGS[4]>>; hole slippery: <<ARGS[1]>>; current pain: <<ARGS[2]>>; stim_time: <<stim_time>>; skill: <<ARGS[5]>>; grdif: <<grdif>>; ltdif: <<ltdif>>' }
+	}
+
 !!add count and effects due to action
 	if $ARGS[0] = 'clit_finger':
 		orgasm_flag['clit'] = 1
@@ -170,17 +271,30 @@ if $ARGS[0] ! 'end' and $ARGS[0] ! 'checks' and $ARGS[0] ! 'count' and $ARGS[0]
 	elseif $ARGS[0] = 'kiss':
 		count['kiss'] = 1
 		stim['act'] = 10
-!!	elseif $ARGS[0] = 'breasts':
-!!		stim['act'] = 30
-!!		!! No idea where else to put this. This is used for breast stimulation which will eventually cause lactation in sveta without her knowledge. If anyone knows a better place for this, please let me know. - milky_boobs.
-!!		milkedvolume += func('lact_lib','$get_breastmilk', 8, ARGS[1])
+	elseif $ARGS[0] = 'breasts':
+		stim['act'] = 30
+		!! lose some milk
+		if lactation['active'] > 0 and lactation['breastmv'] > lactation['breastmm']*3/2:
+			stim['act'] += rand(10,20)
+			lactation['breastmv'] = max(0, lactation['breastmv'] - rand(lactation['breastmv']/20, lactation['breastmv']/10)*max(1,stim_time/2))
+		end
+
+		if pain_coeff > 0:
+			gs 'pain', rand(pain_coeff)/2, 'breasts', 'twist'
+			gs 'pain', rand(pain_coeff)/2, 'nipples', 'pinch'
+		end
+
+		!! No idea where else to put this. This is used for breast stimulation which will eventually cause lactation in sveta without her knowledge. If anyone knows a better place for this, please let me know. - milky_boobs.
+		!! milkedvolume += func('lact_lib','$get_breastmilk', 8, ARGS[1])
 	elseif $ARGS[0] = 'massage':
+		pcs_sweat += rand(2,4)*max(1,stim_time/5)
 		count['massage'] = 1
 		stim['act'] = 25
 	elseif $ARGS[0] = 'foreplay':
 		count['foreplay'] = 1
 		stim['act'] = 20
 	elseif $ARGS[0] = 'cuni':
+		pcs_sweat += rand(0,1)*max(1,stim_time/5)
 		orgasm_flag['vaginal'] = 1
 		count['cuni'] = 1
 		stim['mag'] += 4
@@ -202,45 +316,7 @@ if $ARGS[0] ! 'end' and $ARGS[0] ! 'checks' and $ARGS[0] ! 'count' and $ARGS[0]
 		stim['mag'] += 3
 		stim['act'] = 70
 		stim_les = 1
-	elseif $ARGS[0] = 'anal':
-		stat['last_sex_day'] = daystart
-		orgasm_flag['anal'] = 1
-		if temp_unaware = 1:
-			count['hidden_anal'] = 1
-		else
-			count['anal'] = 1
-		end
-		if pcs_traits['buttslut_lvl'] = 1:
-			stim['mag'] += 1
-		elseif pcs_traits['buttslut_lvl'] >= 2:
-			stim['mag'] += 3
-		end
-		if pcs_ass < temp_dick:pcs_ass += 1
-		if pcs_ass*2 < temp_dick:pcs_ass += 1
-		!! length and girth abilities of anus are not also separated , but I suppose that they are related although it is not propable
-		!! we can estimate difference in girth and length anal_girth_difference and anal_lenght_difference - names are shortened
-		altdif = temp_dick - pcs_ass
-		agrdif = grange - pcs_ass
-		!! negative influence of the difference can be reduced by sex skill and also by lubricant
-		!! I made it as simply as possible so you do not complain about reality, feel free to modify the algorithm
-		!! when the boy is skilled, he can compensate the difference partly
-		altdif = altdif / (temp_silavag+1)
-		agrdif = agrdif *(5/4 - 1/(4 - temp_silavag))
-		!! when the boy is skilled, he does not harm PC with his long dick
-		if (temp_silavag = 2) and (altdif > 0): altdif = 0
-		!! lube can compensate the difference a bit
-		if -agrdif > anal_slip: agrdif = agrdif + anal_slip else if agrdif < 0: agrdif = 0
-		if agrdif > anal_slip: agrdif = agrdif - anal_slip else if agrdif > 0: agrdif = 0
-
-		stim['act'] = 80 - (iif(altdif>0,altdif,-altdif) + iif(agrdif >0,agrdif,-agrdif)) + temp_silavag*8
-		!! if the dick is smaller, it cannot harm PC
-		if agrdif < 0: agrdif = 0
-		if altdif < 0: altdif = 0
-		!! calculate the harm
-		agape = iif((agrdif + altdif) > 10*agape,(agrdif + altdif)/10,agape)
-		!! the pain lover the pleasure
-		gs 'pain', (agrdif + altdif)/5 , 'asshole', 'stretch'
-		stim['act'] = stim['act'] - (agrdif + altdif)
+		if pain_coeff > 0:gs 'pain', rand(pain_coeff)/5, 'clitoris', 'twist'
 	elseif $ARGS[0] = 'anal_finger':
 		orgasm_flag['anal'] = 1
 		count['anal_finger'] = 1
@@ -252,6 +328,7 @@ if $ARGS[0] ! 'end' and $ARGS[0] ! 'checks' and $ARGS[0] ! 'count' and $ARGS[0]
 			stim['mag'] += 1
 			stim['act'] = 80
 		end
+		if pain_coeff > 0:gs 'pain', rand(pain_coeff), 'asshole', 'stretch'
 	elseif $ARGS[0] = 'anal_fist':
 		orgasm_flag['anal'] = 1
 		count['anal_fist'] = 1
@@ -261,96 +338,156 @@ if $ARGS[0] ! 'end' and $ARGS[0] ! 'checks' and $ARGS[0] ! 'count' and $ARGS[0]
 		elseif pcs_traits['buttslut_lvl'] >= 2:
 			stim['act'] = 70
 		end
-		if pcs_ass + anal_slip < 30:
-			pcs_ass = 30
-			gs 'pain', 4-agape, 'asshole', 'stretch'
-			if agape < 3:agape = 3
-		end
+		dynamic $get_hole_pain, pcs_ass, anal_slip, pain['asshole'], rand(15,20), rand(35,40), rand(0,2)
+		stim['act'] -= grdif + ltdif
+		gs 'pain', grdif+ltdif, 'asshole', 'stretch'
+		if grdif + ltdif > agape*2 + pcs_ass/2: agape += 1
+		pcs_ass += 1
 	elseif $ARGS[0] = 'self_fisting_anal':
 		orgasm_flag['anal'] = 1
 		count['self_fisting_anal'] = 1
+		!! add lube from saliva
+		if anal_slip < max(1, pcs_hydra/20): anal_slip = max(1, pcs_hydra/20)
 		stim['act'] = 30
 		if pcs_traits['buttslut_lvl'] = 1:
 			stim['act'] = 50
 		elseif pcs_traits['buttslut_lvl'] >= 2:
 			stim['act'] = 70
 		end
-		if pcs_ass + anal_slip < 30:
-			pcs_ass = 30
-			gs 'pain', 4-agape, 'asshole', 'stretch'
-			if agape < 3:agape = 3
+		dynamic $get_hole_pain, pcs_ass, anal_slip, pain['asshole'], rand(10,15), rand(30,35), 2
+		stim['act'] -= grdif + ltdif
+		gs 'pain', grdif+ltdif, 'asshole', 'stretch'
+		if grdif + ltdif > agape*2 + pcs_ass/2: agape += 1
+		pcs_ass += 1
+	elseif $ARGS[0] = 'anal_vibe':
+		orgasm_flag['anal'] = 1
+		count['anal_vibe'] = 1
+		stim['mag'] += 1
+		stim['act'] = 60
+		if pcs_traits['buttslut_lvl'] = 1:
+			stim['mag'] += 1
+			stim['act'] = 70
+		elseif pcs_traits['buttslut_lvl'] >= 2:
+			stim['mag'] += 2
+			stim['act'] = 90
+		end
+	elseif $ARGS[0] = 'anal':
+		pcs_sweat += rand(1,4)*max(1,stim_time/5)
+		stat['last_sex_day'] = daystart
+		orgasm_flag['anal'] = 1
+		if temp_unaware = 1:
+			count['hidden_anal'] = 1
+		else
+			count['anal'] = 1
 		end
+		if pcs_traits['buttslut_lvl'] = 1:
+			stim['mag'] += 1
+		elseif pcs_traits['buttslut_lvl'] >= 2:
+			stim['mag'] += 3
+		end
+		if vaginal_slip < max(1, anal_slip/2):
+			if cumloc[3] > 0: vaginal_slip += rand(cumvol[3]/10, cumvol[3]/5)
+		end
+		dynamic $get_hole_pain, pcs_ass, anal_slip, pain['asshole'], temp_dick, grange, temp_silavag
+		stim['act'] = 80 - grdif + ltdif + temp_silavag*8
+		!! the pain lover the pleasure
+		gs 'pain', grdif + ltdif, 'asshole', 'stretch'
+		!! calculate the harm
+		if grdif + ltdif > agape*2 + pcs_ass/2: agape += 1
+		!! force cum leak
+		if ARGS[1] > 0 and cumvol[3] > rand(pcs_ass/2,pcs_ass): gs 'cum_manage', 'cum_decay', ((temp_dick+grange)/2)*max(1,stim_time/5)
+		if pcs_ass < temp_dick:pcs_ass += 1
+		if pcs_ass*2 < temp_dick:pcs_ass += 1
 	elseif $ARGS[0] = 'anal_dildo':
+		pcs_sweat += rand(0,2)*max(1,stim_time/5)
 		orgasm_flag['anal'] = 1
 		count['anal_dildo'] = 1
 		!! the same as for 'anal'
-		if pcs_ass < temp_dick:pcs_ass += 1
-		if pcs_ass*2 < temp_dick:pcs_ass += 1
-		altdif = temp_dick - pcs_ass
-		agrdif = grange - pcs_ass
-		altdif = altdif / (temp_silavag+1)
-		agrdif = agrdif *(5/4 - 1/(4 - temp_silavag))
-		if (temp_silavag = 2) and (altdif > 0): altdif = 0
-		if agrdif > anal_slip: agrdif = agrdif - anal_slip else if agrdif > 0: agrdif = 0
-		if -agrdif > anal_slip: agrdif = agrdif + anal_slip else if agrdif < 0: agrdif = 0
-		stim['act'] = 80 - (iif(altdif>0,altdif,-altdif) + iif(agrdif >0,agrdif,-agrdif)) + temp_silavag*8
+		if vaginal_slip < max(1, anal_slip/2):
+			if cumloc[3] > 0: vaginal_slip += rand(cumvol[3]/10, cumvol[3]/5)
+		end
+		dynamic $get_hole_pain, pcs_ass, anal_slip, pain['asshole'], temp_dick, grange, temp_silavag
+		stim['act'] = 80 - grdif + ltdif + temp_silavag*8
 		if pcs_traits['buttslut_lvl'] = 1:
 			stim['act'] += 10
 		elseif pcs_traits['buttslut_lvl'] >= 2:
 			stim['mag'] += 1
 		end
-		if agrdif < 0: agrdif = 0
-		if altdif < 0: altdif = 0
-		agape = iif((agrdif + altdif) > 10*agape,(agrdif + altdif)/10,agape)
-		gs 'pain', (agrdif + altdif)/5 , 'asshole', 'stretch'
-		stim['act'] = stim['act'] - (agrdif + altdif)
+		gs 'pain', grdif + ltdif, 'asshole', 'stretch'
+		if grdif + ltdif > agape*2 + pcs_ass/2: agape += 1
+		if ARGS[1] > 0 and cumvol[3] > rand(pcs_ass/2,pcs_ass): gs 'cum_manage', 'cum_decay', ((temp_dick+grange)/2)*max(1,stim_time/5)
+		if pcs_ass < temp_dick:pcs_ass += 1
+		if pcs_ass*2 < temp_dick:pcs_ass += 1
 	elseif $ARGS[0] = 'anal_strap':
+		pcs_sweat += rand(1,2)*max(1,stim_time/5)
 		stat['last_sex_day'] = daystart
 		orgasm_flag['anal'] = 1
 		count['anal_strap'] = 1
-		!! the same as for 'anal'
-		if pcs_ass < temp_dick:pcs_ass += 1
-		if pcs_ass*2 < temp_dick:pcs_ass += 1
-		altdif = temp_dick - pcs_ass
-		agrdif = grange - pcs_ass
-		altdif = altdif / (temp_silavag+1)
-		agrdif = agrdif *(5/4 - 1/(4 - temp_silavag))
-		if (temp_silavag = 2) and (altdif > 0): altdif = 0
-		if agrdif > anal_slip: agrdif = agrdif - anal_slip else if agrdif > 0: agrdif = 0
-		if -agrdif > anal_slip: agrdif = agrdif + anal_slip else if agrdif < 0: agrdif = 0
-		stim['act'] = 80 - (iif(altdif>0,altdif,-altdif) + iif(agrdif >0,agrdif,-agrdif)) + temp_silavag*8
 		if pcs_traits['buttslut_lvl'] = 1:
 			stim['act'] += 10
 		elseif pcs_traits['buttslut_lvl'] >= 2:
 			stim['mag'] += 1
 		end
-		if agrdif < 0: agrdif = 0
-		if altdif < 0: altdif = 0
-		agape = iif((agrdif + altdif) > 10*agape,(agrdif + altdif)/10,agape)
-		gs 'pain', (agrdif + altdif)/5 , 'asshole', 'stretch'
-		stim['act'] = stim['act'] - (agrdif + altdif)
-	elseif $ARGS[0] = 'anal_vibe':
-		orgasm_flag['anal'] = 1
-		count['anal_vibe'] = 1
-		stim['mag'] += 1
-		stim['act'] = 60
-		if pcs_traits['buttslut_lvl'] = 1:
-			stim['mag'] += 1
-			stim['act'] = 70
-		elseif pcs_traits['buttslut_lvl'] >= 2:
-			stim['mag'] += 2
-			stim['act'] = 90
+		!! the same as for 'anal'
+		if vaginal_slip < max(1, anal_slip/2):
+			if cumloc[3] > 0: vaginal_slip += rand(cumvol[3]/10, cumvol[3]/5)
 		end
+		dynamic $get_hole_pain, pcs_ass, anal_slip, pain['asshole'], temp_dick, grange, temp_silavag
+		stim['act'] = 80 - grdif + ltdif + temp_silavag*8
+		gs 'pain', grdif + ltdif, 'asshole', 'stretch'
+		if grdif + ltdif > agape*2 + pcs_ass/2: agape += 1
+		!! force cum leak
+		if ARGS[1] > 0 and cumvol[3] > rand(pcs_ass/2,pcs_ass): gs 'cum_manage', 'cum_decay', ((temp_dick+grange)/2)*max(1,stim_time/5)
+		if pcs_ass < temp_dick:pcs_ass += 1
+		if pcs_ass*2 < temp_dick:pcs_ass += 1
+	elseif $ARGS[0] = 'vaginal_finger':
+		orgasm_flag['vaginal'] = 1
+		count['vaginal_finger'] = 1
+		stim['mag'] += 1
+		stim['act'] = 80
+		if pain_coeff > 0:gs 'pain', rand(pain_coeff), 'vaginal', 'stretch'
+	elseif $ARGS[0] = 'vaginal_fist':
+		pcs_sweat += rand(0,1)*max(1,stim_time/5)
+		orgasm_flag['vaginal'] = 1
+		count['vaginal_fist'] = 1
+		stim['act'] = 70
+		dynamic $get_hole_pain, pcs_vag, vaginal_slip, pain['vaginal'], rand(15,20), rand(35,40), rand(0,2)
+		stim['act'] -= grdif + ltdif
+		gs 'pain', grdif+ltdif, 'vaginal', 'stretch'
+		gs 'pain', rand(grdif), 'labia', 'stretch'
+		if grdif + ltdif > vgape*2 + pcs_vag/2: vgape += 1
+		pcs_vag += 1
+	elseif $ARGS[0] = 'self_fisting':
+		orgasm_flag['vaginal'] = 1
+		count['self_fisting'] = 1
+		!! add lube from saliva
+		if vaginal_slip < max(1, pcs_hydra/20): vaginal_slip = max(1, pcs_hydra/20)
+		stim['act'] = 70
+		dynamic $get_hole_pain, pcs_vag, vaginal_slip, pain['vaginal'], rand(10,15), rand(30,35), 2
+		stim['act'] -= grdif + ltdif
+		gs 'pain', grdif+ltdif, 'vaginal', 'stretch'
+		gs 'pain', rand(grdif), 'labia', 'stretch'
+		if grdif + ltdif > vgape*2 + pcs_vag/2: vgape += 1
+		pcs_vag += 1
+	elseif $ARGS[0] = 'vaginal_vibe':
+		orgasm_flag['vaginal'] = 1
+		count['vaginal_vibe'] = 1
+		stim['mag'] += 2
+		stim['act'] = 90
 	elseif $ARGS[0] = 'vaginal':
-		
+		pcs_sweat += rand(1,3)*max(1,stim_time/5)
 		orgasm_flag['vaginal'] = 1
+		!! add anal lube from vaginal juices
+		if anal_slip < max(1, vaginal_slip/2):
+			anal_slip = max(1, vaginal_slip/rand(2,3))
+			if cumloc[0] > 0: anal_slip += rand(cumvol[0]/15, cumvol[0]/10)
+		end
 		!! pre-cum check
 		if rand(0,120) < ARGS[1]: cumprecheck = 1 & gs 'cum_manage'
-		
 		if temp_unaware = 1:
 			count['hidden_vaginal'] = 1
 		else
-			if stat['think_virgin'] = 1:
+			if virgin_stats['vaginal'] = 0 and (stat['think_virgin'] = 1 or pcs_vag = 0):
 				virgin_stats['day_lost'] = daystart
 				virgin_stats['age_lost'] = age
 				virgin_stats['vaginal'] = 1
@@ -362,113 +499,65 @@ if $ARGS[0] ! 'end' and $ARGS[0] ! 'checks' and $ARGS[0] ! 'count' and $ARGS[0]
 			stat['last_man_sex_day'] = daystart
 		end
 		stim['mag'] += 3
-		if pcs_vag < dick:pcs_vag += 1
-		if pcs_vag*2 < dick:pcs_vag += 1
-		!! length and girth abilities of vagina are not separated , but I suppose that they are related
-		!! we can estimate difference in girth and length vaginal_girth_difference and vaginal_lenght_difference - names are shortened
-		vgrdif = grange - pcs_vag
-		vltdif = temp_dick - pcs_vag
-		!! negative influence of the difference can be reduced by sex skill and also by PCs horniness, using of a lubricant is not established yet
-		!! I made it as simply as possible so you do not complain about reality, feel free to modify the algorithm
-		!! when the boy is skilled, he can compensate the difference partly
-		vltdif = vltdif / (temp_silavag+1)
-		vgrdif = vgrdif *(5/4 - 1/(4 - temp_silavag))
-		!! when the boy is skilled, he does not harm PC with his long dick
-		if (temp_silavag = 2) and (vltdif > 0): vltdif = 0
-		!! even PC horniness can compensate the difference 
-		if vgrdif > vaginal_slip: vgrdif = vgrdif - vaginal_slip else if (vgrdif > 0): vgrdif = 0
-		if -1*vgrdif > vaginal_slip: vgrdif = vgrdif + vaginal_slip else if (vgrdif < 0): vgrdif = 0
-
-		stim['act'] = 80 - (iif(vltdif>0,vltdif,-vltdif) + iif(vgrdif >0,vgrdif,-vgrdif)) + temp_silavag*8
-		!! if the dick is smaller, it cannot harm PC
-		if vgrdif < 0: vgrdif = 0
-		if vltdif < 0: vltdif = 0
-		!! calculate the harm
-		vgape = iif((vgrdif + vltdif) > 10*vgape,(vgrdif + vltdif)/10,vgape)
+		dynamic $get_hole_pain, pcs_vag, vaginal_slip, pain['vaginal'], temp_dick, grange, temp_silavag
+		stim['act'] = 80 - grdif + ltdif + temp_silavag*8
 		!! the pain lover the pleasure
-		gs 'pain', (vgrdif + vltdif)/5 , 'vaginal', 'stretch'
-		stim['act'] = stim['act'] - (vgrdif + vltdif)
-	elseif $ARGS[0] = 'vaginal_finger':
-		orgasm_flag['vaginal'] = 1
-		count['vaginal_finger'] = 1
-		stim['mag'] += 1
-		stim['act'] = 80
-	elseif $ARGS[0] = 'vaginal_fist':
-		orgasm_flag['vaginal'] = 1
-		count['vaginal_fist'] = 1
-		stim['act'] = 70
-		if pcs_vag + vaginal_slip < 30:
-			!! same as for 'vaginal'
-			pcs_vag += 3
-			gs 'pain', 3 - vgape, 'vaginal', 'stretch'
-			if vgape < 3:vgape = 3
-		end
-	elseif $ARGS[0] = 'self_fisting':
-		orgasm_flag['vaginal'] = 1
-		count['self_fisting'] = 1
-		stim['act'] = 70
-		if pcs_vag + vaginal_slip < 30:
-			!! same as for 'vaginal'
-			pcs_vag += 3
-			gs 'pain', 3 - vgape, 'vaginal', 'stretch'
-			if vgape < 3:vgape = 3
-		end
+		gs 'pain', grdif+ltdif, 'vaginal', 'stretch'
+		if temp_dick/max(1, temp_silavag) > rand(pcs_vag/2,pcs_vag): gs 'pain', rand(ltdif), 'cervix', 'shock'
+		if grange/max(1, temp_silavag)    > rand(pcs_vag/2,pcs_vag): gs 'pain', rand(grdif), 'labia', 'stretch'
+		if pain_coeff > 0: gs 'pain', rand(pain_coeff)/5, 'clitoris', 'hit'
+		!! calculate the harm
+		if grdif + ltdif > vgape*2 + pcs_vag/2: vgape += 1
+		!! force cum leak
+		if ARGS[1] > 0 and cumvol[0] > rand(pcs_vag/2,pcs_vag): gs 'cum_manage', 'cum_decay', ((temp_dick+grange)/2)*max(1,stim_time/5)
+		if pcs_vag < temp_dick:pcs_vag += 1
+		if pcs_vag*2 < temp_dick:pcs_vag += 1
 	elseif $ARGS[0] = 'vaginal_dildo':
+		pcs_sweat += rand(0,2)*max(1,stim_time/5)
 		orgasm_flag['vaginal'] = 1
 		count['vaginal_dildo'] = 1
 		stim['mag'] += 1
 		!! the same as for 'vaginal'
+		if anal_slip < max(1, vaginal_slip/2):
+			anal_slip = max(1, vaginal_slip/rand(2,3))
+			if cumloc[0] > 0: anal_slip += rand(cumvol[0]/15, cumvol[0]/10)
+		end
+		dynamic $get_hole_pain, pcs_vag, vaginal_slip, pain['vaginal'], temp_dick, grange, temp_silavag
+		stim['act'] = 80 - grdif + ltdif + temp_silavag*8
+		gs 'pain', grdif + ltdif, 'vaginal', 'stretch'
+		if temp_dick/max(1, temp_silavag) > rand(pcs_vag/2,pcs_vag): gs 'pain', rand(ltdif), 'cervix', 'shock'
+		if grange/max(1, temp_silavag)    > rand(pcs_vag/2,pcs_vag): gs 'pain', rand(grdif), 'labia', 'stretch'
+		if ARGS[1] > 0 and cumvol[0] > rand(pcs_vag/2,pcs_vag): gs 'cum_manage', 'cum_decay', ((temp_dick+grange)/2)*max(1,stim_time/5)
+		if grdif + ltdif > vgape*2 + pcs_vag/2: vgape += 1
 		if pcs_vag < temp_dick:pcs_vag += 1
 		if pcs_vag*2 < temp_dick:pcs_vag += 1
-		vgrdif = grange - pcs_vag
-		vltdif = temp_dick - pcs_vag
-		vltdif = vltdif / (temp_silavag+1)
-		vgrdif = vgrdif *(5/4 - 1/(4 - temp_silavag))
-		if (temp_silavag = 2) and (vltdif > 0): vltdif = 0
-		if vgrdif > vaginal_slip: vgrdif = vgrdif - vaginal_slip else if (vgrdif > 0): vgrdif = 0
-		if -1*vgrdif > vaginal_slip: vgrdif = vgrdif + vaginal_slip else if (vgrdif < 0): vgrdif = 0
-		stim['act'] = 80 - (iif(vltdif>0,vltdif,-vltdif) + iif(vgrdif >0,vgrdif,-vgrdif)) + temp_silavag*8
-		if vgrdif < 0: vgrdif = 0
-		if vltdif < 0: vltdif = 0
-		vgape = iif((vgrdif + vltdif) > 10*vgape,(vgrdif + vltdif)/10,vgape)
-		gs 'pain', (vgrdif + vltdif)/5 , 'vaginal', 'stretch'
-		stim['act'] = stim['act'] - (vgrdif + vltdif)
 	elseif $ARGS[0] = 'vaginal_strap':
+		pcs_sweat += rand(1,2)*max(1,stim_time/5)
 		orgasm_flag['vaginal'] = 1
 		count['vaginal_strap'] = 1
-		if stat['think_virgin'] = 1:
+		if virgin_stats['strapon'] = 0 and (stat['think_virgin'] = 1 or pcs_vag = 0):
 			virgin_stats['day_lost'] = daystart
 			virgin_stats['age_lost'] = age
 			virgin_stats['strapon'] = 1
 			$virgin_stats['virgin_taker_ID'] = $boy
-			if birthday = day and birthmonth = month:
-				virgin_stats['birthday'] = 1
-			end
+			if birthday = day and birthmonth = month: virgin_stats['birthday'] = 1
 			!! if dont_know_npc_name
 		end
 		stim['mag'] += 1
-		!! virginal capacity increase
+		!! the same as for 'vaginal'
+		if anal_slip < max(1, vaginal_slip/2):
+			anal_slip = max(1, vaginal_slip/rand(2,3))
+			if cumloc[0] > 0: anal_slip += rand(cumvol[0]/15, cumvol[0]/10)
+		end
+		dynamic $get_hole_pain, pcs_vag, vaginal_slip, pain['vaginal'], temp_dick, grange, temp_silavag
+		stim['act'] = 80 - grdif + ltdif + temp_silavag*8
+		gs 'pain', grdif + ltdif, 'vaginal', 'stretch'
+		if temp_dick/max(1, temp_silavag) > rand(pcs_vag/2,pcs_vag): gs 'pain', rand(ltdif), 'cervix', 'shock'
+		if grange/max(1, temp_silavag)    > rand(pcs_vag/2,pcs_vag): gs 'pain', rand(grdif), 'labia', 'stretch'
+		if grdif + ltdif > vgape*2 + pcs_vag/2: vgape += 1
+		if ARGS[1] > 0 and cumvol[0] > rand(pcs_vag/2,pcs_vag): gs 'cum_manage', 'cum_decay', ((temp_dick+grange)/2)*max(1,stim_time/5)
 		if pcs_vag < temp_dick:pcs_vag += 1
 		if pcs_vag*2 < temp_dick:pcs_vag += 1
-		!! the same as for 'vaginal'
-		vgrdif = grange - pcs_vag
-		vltdif = temp_dick - pcs_vag
-		vltdif = vltdif / (temp_silavag+1)
-		vgrdif = vgrdif *(5/4 - 1/(4 - temp_silavag))
-		if (temp_silavag = 2) and (vltdif > 0): vltdif = 0
-		if vgrdif > vaginal_slip: vgrdif = vgrdif - vaginal_slip else if (vgrdif > 0): vgrdif = 0
-		if -1*vgrdif > vaginal_slip: vgrdif = vgrdif + vaginal_slip else if (vgrdif < 0): vgrdif = 0
-		stim['act'] = 80 - (iif(vltdif>0,vltdif,-vltdif) + iif(vgrdif >0,vgrdif,-vgrdif)) + temp_silavag*8
-		if vgrdif < 0: vgrdif = 0
-		if vltdif < 0: vltdif = 0
-		vgape = iif((vgrdif + vltdif) > 10*vgape,(vgrdif + vltdif)/10,vgape)
-		gs 'pain', (vgrdif + vltdif)/5 , 'vaginal', 'stretch'
-		stim['act'] = stim['act'] - (vgrdif + vltdif)
-	elseif $ARGS[0] = 'vaginal_vibe':
-		orgasm_flag['vaginal'] = 1
-		count['vaginal_vibe'] = 1
-		stim['mag'] += 2
-		stim['act'] = 90
 	elseif $ARGS[0] = 'flashlite':
 		count['flashlite'] = 1
 		stim['act'] = 10
@@ -482,12 +571,14 @@ if $ARGS[0] ! 'end' and $ARGS[0] ! 'checks' and $ARGS[0] ! 'count' and $ARGS[0]
 		count['pee'] = 1
 		stim['act'] = 10
 	elseif $ARGS[0] = 'massage_give':
+		pcs_sweat += rand(3,6)*max(1,stim_time/5)
 		count['massage_give'] = 1
 		stim['act'] = 10
 	elseif $ARGS[0] = 'foreplay_give':
 		count['foreplay_give'] = 1
 		stim['act'] = 20
 	elseif $ARGS[0] = 'cuni_give':
+		pcs_sweat += rand(0,1)*max(1,stim_time/5)
 		count['cuni_give'] = 1
 		stim['act'] = 30
 		stim_les = 1
@@ -501,12 +592,14 @@ if $ARGS[0] ! 'end' and $ARGS[0] ! 'checks' and $ARGS[0] ! 'count' and $ARGS[0]
 		count['anal_fist_give'] = 1
 		stim['act'] = 30
 	elseif $ARGS[0] = 'anal_dildo_give':
+		pcs_sweat += rand(0,1)*max(1,stim_time/5)
 		count['anal_dildo_give'] = 1
 		stim['act'] = 40
 	elseif $ARGS[0] = 'anal_vibe_give':
 		count['anal_vibe_give'] = 1
 		stim['act'] = 40
 	elseif $ARGS[0] = 'anal_strap_give':
+		pcs_sweat += rand(2,4)*max(1,stim_time/5)
 		count['anal_strap_give'] = 1
 		stim['act'] = 40
 	elseif $ARGS[0] = 'vaginal_finger_give':
@@ -522,10 +615,12 @@ if $ARGS[0] ! 'end' and $ARGS[0] ! 'checks' and $ARGS[0] ! 'count' and $ARGS[0]
 		stim['act'] = 50
 		stim_les = 1
 	elseif $ARGS[0] = 'vaginal_dildo_give':
+		pcs_sweat += rand(0,1)*max(1,stim_time/5)
 		count['vaginal_dildo_give'] = 1
 		stim['act'] = 60
 		stim_les = 1
 	elseif $ARGS[0] = 'vaginal_strap_give':
+		pcs_sweat += rand(2,4)*max(1,stim_time/5)
 		count['vaginal_strap_give'] = 1
 		stim['act'] = 70
 		stim_les = 1
@@ -534,6 +629,7 @@ if $ARGS[0] ! 'end' and $ARGS[0] ! 'checks' and $ARGS[0] ! 'count' and $ARGS[0]
 		stim['act'] = 60
 		stim_les = 1
 	elseif $ARGS[0] = 'hj':
+		pcs_sweat += rand(0,3)*max(1,stim_time/5)
 		if temp_unaware = 1:
 			count['hidden_hj'] = 1
 		else
@@ -541,18 +637,62 @@ if $ARGS[0] ! 'end' and $ARGS[0] ! 'checks' and $ARGS[0] ! 'count' and $ARGS[0]
 		end
 		stim['act'] = 25
 	elseif $ARGS[0] = 'bj':
+		pcs_sweat += rand(0,1)*max(1,stim_time/5)
+		!! add lube from saliva
+		if anal_slip < max(1, pcs_hydra/20): anal_slip += max(1, pcs_hydra/20)
+		if vaginal_slip < max(1, pcs_hydra/20): vaginal_slip += max(1, pcs_hydra/20)
 		if temp_unaware = 1:
 			count['hidden_bj'] = 1
 		else
 			count['bj'] = 1
 		end
 		stim['act'] = 45
-		if temp_dick > pcs_throat: pcs_throat += 1
+		if pain_coeff > 0:gs 'pain', rand(pain_coeff), 'mouth', 'stretch'
+		if pcs_lipbalm > 0:
+			pcs_lipbalm = max(0, pcs_lipbalm - 1*max(1,stim_time/5))
+			if arrpos('$ARGS', 'rape') >= 0 _ 
+			or arrpos('$ARGS', 'rough') >= 0 _ 
+			or arrpos('$ARGS', 'gangbang') >= 0 _ 
+			or arrpos('$ARGS', 'beast') >= 0:
+				pcs_lipbalm = max(0, pcs_lipbalm - 1*max(1,stim_time/5))
+			end
+		end
+		if arrpos('$ARGS', 'deepthroat') >= 0:
+			dynamic $get_hole_pain, pcs_throat, pcs_hydra/10, pain['throat'], temp_dick, grange, temp_silavag
+			stim['act'] = 80 - ltdif + grdif + temp_silavag*8
+			gs 'pain', grdif + ltdif, 'throat', 'stretch'
+			gs 'pain', grdif, 'jaw', 'stretch'
+			if pcs_throat < temp_dick:pcs_throat += 1
+			if pcs_throat*2 < temp_dick:pcs_throat += 1
+		end
+		if pcs_throat*3 < temp_dick:pcs_throat += 1
 	elseif $ARGS[0] = 'dildo_suck':
 		count['dildo_suck'] = 1
 		stim['act'] = 30
-		if temp_dick > pcs_throat: pcs_throat += 1
+		!! add lube from saliva
+		if anal_slip < max(1, pcs_hydra/20): anal_slip += max(1, pcs_hydra/20)
+		if vaginal_slip < max(1, pcs_hydra/20): vaginal_slip += max(1, pcs_hydra/20)
+		if pain_coeff > 0:gs 'pain', rand(pain_coeff), 'mouth', 'stretch'
+		if pcs_lipbalm > 0:
+			pcs_lipbalm = max(0, pcs_lipbalm - 1*max(1,stim_time/5))
+			if arrpos('$ARGS', 'rape') >= 0 _ 
+			or arrpos('$ARGS', 'rough') >= 0 _ 
+			or arrpos('$ARGS', 'gangbang') >= 0 _ 
+			or arrpos('$ARGS', 'beast') >= 0:
+				pcs_lipbalm = max(0, pcs_lipbalm - 1*max(1,stim_time/5))
+			end
+		end
+		if arrpos('$ARGS', 'deepthroat') >= 0:
+			dynamic $get_hole_pain, pcs_throat, pcs_hydra/10, pain['throat'], temp_dick, grange, temp_silavag
+			stim['act'] = 80 - ltdif + grdif + temp_silavag*8
+			gs 'pain', grdif + ltdif, 'throat', 'stretch'
+			gs 'pain', grdif, 'jaw', 'stretch'
+			if pcs_throat < temp_dick:pcs_throat += 1
+			if pcs_throat*2 < temp_dick:pcs_throat += 1
+		end
+		if pcs_throat*3 < temp_dick:pcs_throat += 1
 	elseif $ARGS[0] = 'footjob':
+		pcs_sweat += rand(0,2)*max(1,stim_time/5)
 		if temp_unaware = 1:
 			count['hidden_footjob'] = 1
 		else
@@ -561,6 +701,7 @@ if $ARGS[0] ! 'end' and $ARGS[0] ! 'checks' and $ARGS[0] ! 'count' and $ARGS[0]
 		stim['act'] = 25
 		stim_foot = 1
 	elseif $ARGS[0] = 'titjob':
+		pcs_sweat += rand(3,5)*max(1,stim_time/5)
 		if temp_unaware = 1:
 			count['hidden_titjob'] = 1
 		else
@@ -568,12 +709,15 @@ if $ARGS[0] ! 'end' and $ARGS[0] ! 'checks' and $ARGS[0] ! 'count' and $ARGS[0]
 		end
 		stim['act'] = 45
 		stim_titjob = 1
+		if pain_coeff > 0:gs 'pain', rand(pain_coeff), 'breasts', 'pull'
 	elseif $ARGS[0] = 'BDSM_give':
+		pcs_sweat += rand(0,3)*max(1,stim_time/5)
 		count['BDSM_give'] = 1
 		stim['act'] = 20
 	elseif $ARGS[0] = 'pee_give':
 		count['pee_give'] = 1
 		stim['act'] = 10
+		last_pee = totminut
 	end
 
 	!! anal acts
@@ -582,8 +726,48 @@ if $ARGS[0] ! 'end' and $ARGS[0] ! 'checks' and $ARGS[0] ! 'count' and $ARGS[0]
 			stim['act'] += 20
 		end
 	end
-
-
+	
+	if pcs_hairbsh >= 0:
+		if arrpos('$ARGS', 'rape') >= 0:          pcs_hairbsh = iif(rand(30, pcs_hairlng)>30,-1,pcs_hairbsh)
+		if arrpos('$ARGS', 'rough') >= 0:         pcs_hairbsh = iif(rand(30, pcs_hairlng)>40,-1,pcs_hairbsh)
+		if arrpos('$ARGS', 'gangbang') >= 0:      pcs_hairbsh = iif(rand(30, pcs_hairlng)>50,-1,pcs_hairbsh)
+		if arrpos('$ARGS', 'group') >= 0:         pcs_hairbsh = iif(rand(30, pcs_hairlng)>70,-1,pcs_hairbsh)
+		if arrpos('$ARGS', 'BDSM') >= 0:          pcs_hairbsh = iif(rand(30, pcs_hairlng)>80,-1,pcs_hairbsh)
+		if arrpos('$ARGS', 'beast') >= 0:         pcs_hairbsh = iif(rand(30, pcs_hairlng)>100,-1,pcs_hairbsh)
+		if arrpos('$ARGS', 'maso') >= 0:          pcs_hairbsh = iif(rand(30, pcs_hairlng)>125,rand(-1,0),pcs_hairbsh)
+		if arrpos('$ARGS', 'prostitution') >= 0:  pcs_hairbsh = iif(rand(30, pcs_hairlng)>150,rand(-1,0),pcs_hairbsh)
+		if arrpos('$ARGS', 'unknown') >= 0:       pcs_hairbsh = iif(rand(30, pcs_hairlng)>200,rand(-1,pcs_hairbsh),pcs_hairbsh)
+		if arrpos('$ARGS', 'anal') >= 0 _ 
+		or arrpos('$ARGS', 'anal_strap') >= 0:    pcs_hairbsh = iif(rand(30, pcs_hairlng)>220,rand(-1,pcs_hairbsh),pcs_hairbsh)
+		if arrpos('$ARGS', 'vaginal') >= 0 _ 
+		or arrpos('$ARGS', 'vaginal_strap') >= 0: pcs_hairbsh = iif(rand(30, pcs_hairlng)>240,rand(-1,pcs_hairbsh),pcs_hairbsh)
+		if pcs_hairbsh > 0:
+			if arrpos('$ARGS', 'bound') >= 0:     pcs_hairbsh = iif(rand(30, pcs_hairlng)>270,rand(0,pcs_hairbsh),pcs_hairbsh)
+			if arrpos('$ARGS', 'sub') >= 0:       pcs_hairbsh = iif(rand(30, pcs_hairlng)>300,rand(0,pcs_hairbsh),pcs_hairbsh)
+		end
+	end
+	if pcs_makeup > 1:
+		if arrpos('$ARGS', 'rape') >= 0:                  pcs_makeup = iif(rand(pcs_makeup, pcs_makupskl/10)<7,0,pcs_makeup)
+		if arrpos('$ARGS', 'rough') >= 0:                 pcs_makeup = iif(rand(pcs_makeup, pcs_makupskl/10)<5,0,pcs_makeup)
+		if arrpos('$ARGS', 'gangbang') >= 0:              pcs_makeup = iif(rand(pcs_makeup, pcs_makupskl/10)<5,0,pcs_makeup)
+		if arrpos('$ARGS', 'beast') >= 0:                 pcs_makeup = iif(rand(pcs_makeup, pcs_makupskl/10)<4,0,pcs_makeup)
+		if arrpos('$ARGS', 'bj') >= 0 or arrpos('$ARGS', 'deepthroat') >= 0:
+			if arrpos('$ARGS', 'group') >= 0:             pcs_makeup = iif(rand(pcs_makeup, pcs_makupskl/10)<3,0,pcs_makeup)
+			if arrpos('$ARGS', 'BDSM') >= 0:              pcs_makeup = iif(rand(pcs_makeup, pcs_makupskl/10)<3,0,pcs_makeup)
+			if arrpos('$ARGS', 'deepthroat') >= 0:
+				if arrpos('$ARGS', 'maso') >= 0:          pcs_makeup = iif(rand(pcs_makeup, pcs_makupskl/10)<3,0,pcs_makeup)
+				if arrpos('$ARGS', 'prostitution') >= 0:  pcs_makeup = iif(rand(pcs_makeup, pcs_makupskl/10)<4,0,pcs_makeup)
+				if arrpos('$ARGS', 'unknown') >= 0:       pcs_makeup = iif(rand(pcs_makeup, pcs_makupskl/10)<4,0,pcs_makeup)
+				if arrpos('$ARGS', 'bound') >= 0:         pcs_makeup = iif(rand(pcs_makeup, pcs_makupskl/10)<5,0,pcs_makeup)
+				if arrpos('$ARGS', 'sub') >= 0:           pcs_makeup = iif(rand(pcs_makeup, pcs_makupskl/10)<5,0,pcs_makeup)
+			end
+		end
+		if pcs_makeup > 1:
+			if (arrpos('$ARGS', 'bj') >= 0 _ 
+			or arrpos('$ARGS', 'cuni_give') >= 0):        pcs_makeup = iif(rand(pcs_makeup, pcs_makupskl/10)<3,rand(0,1),pcs_makeup)
+		end
+	end
+	
 	if stim['mag'] > 9: stim['mag'] = 9
 
 	if ARGS[1] > 0: minut += ARGS[1]
@@ -788,6 +972,7 @@ if $ARGS[0] ! 'end' and $ARGS[0] ! 'checks' and $ARGS[0] ! 'count' and $ARGS[0]
 	stim['total'] = ((stim['mag']*stim['act']*stim['kink']/100) + stim['pref'])*stim['time'] / 120
 
 !!Reduction in arousal linked to pain, masochism helps to deal with this
+	gs 'pain', 'calc'
 	if pain['total'] > 0:
 		if maso['pref'] <= 0 and pain['total'] < 50:
 			if pain['total'] - (maso['exp'] + 1 / 6) > 0:stim['total'] -= (pain['total'] - (maso['exp'] / 6))
@@ -856,7 +1041,8 @@ if $ARGS[0] ! 'end' and $ARGS[0] ! 'checks' and $ARGS[0] ! 'count' and $ARGS[0]
 	killvar '$orgasm_txt'
 	killvar '$stim_les'
 	killvar '$stim_foot'
-	
+	killvar '$get_hole_pain'
+
 	gs 'nichUtil','onArouse',$ARGS[0]
 	
 end
@@ -926,12 +1112,24 @@ if $ARGS[0] = 'end':
 		end
 		stat['anal_partners'] += 1
 	end
-	
+
+	if analplugout > 0:
+		if pain['asshole'] > 10:
+			gs 'dinsex', 'after_anal','no_plug'
+		else
+			gs 'dinsex', 'after_anal','pc'
+		end
+	end
+
+	killvar 'lubonus'
 	killvar 'anal_slip'
 	killvar 'ar_anal_lube'
 	killvar 'vaginal_slip'
 	killvar 'ar_vag_lube'
 	killvar '$orgasm_or'
+	killvar 'stim_time'
+	killvar 'pain_coeff'
+	killvar 'grdif' & killvar 'ltdif'
 
 !!Updating fetish exp for acts carried out and clearing data
 	gs 'arousal', 'checks', 'maso'
@@ -1059,7 +1257,7 @@ end
 !!to use enter gs 'arousal', 'auto_lube', 'anal' or 'vag'
 !!add 'custom' to display a custom or no text by setting $lube_txt, if $lube_txt is '' no text will be displayed
 if $ARGS[0] = 'auto_lube':
-	if $ARGS[1] = 'anal' and auto_anal_lube = 1:
+	if $ARGS[1] = 'anal' and auto_anal_lube = 1 and anal_slip < 8 + pain['asshole']/2 - pcs_ass:
 		if mc_inventory['lubricant'] > 0:
 			if $ARGS[2] ! 'custom': 
 				'You rub some lube in and around your anus.'
@@ -1067,14 +1265,14 @@ if $ARGS[0] = 'auto_lube':
 				$lube_txt
 			end
 			gs 'arousal', 'anal_finger', 1
-			anal_slip = 8
+			anal_slip += 8
 			ar_anal_lube = 1
 			mc_inventory['lubricant'] -= 1
 		elseif $ARGS[2] ! 'custom' or ($ARGS[2] = 'custom' and $lube_txt ! ''):
 			'You do not have any lube left so cannot use it during this sex act.'
 		end
 	end
-	if $ARGS[1] = 'vag' and auto_vag_lube = 1:
+	if $ARGS[1] = 'vag' and auto_vag_lube = 1 and vaginal_slip < 8 + pain['vaginal']/2 - pcs_vag:
 		if mc_inventory['lubricant'] > 0:
 			if $ARGS[2] ! 'custom': 
 				'You rub some lube in and around your vagina.'
@@ -1082,7 +1280,7 @@ if $ARGS[0] = 'auto_lube':
 				$lube_txt
 			end
 			gs 'arousal', 'vaginal_finger', 1
-			vaginal_slip = 8
+			vaginal_slip += 8
 			ar_vag_lube = 1
 			mc_inventory['lubricant'] -= 1
 		elseif $ARGS[2] ! 'custom' or ($ARGS[2] = 'custom' and $lube_txt ! ''):

+ 1 - 2
locations/artem_sex.qsrc

@@ -722,9 +722,8 @@ if $ARGS[0] = 'anushka_3some_anal':
 		'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/artemhome/artemroom/sex/nush3some13.jpg"></center>'
 		'You lower your head between Anushka''s legs and start lapping at her clit, and she does the same to you as Artem continues fucking your ass. You know a part of him is trying to get out, to be rough and dominant, and you want to help him feel that way.'
 		gs 'arousal', 'anal', 2
-		gs 'arousal', 'cuni', +2, 'lesbian'
+		gs 'arousal', 'cuni', -2, 'lesbian'
 		gs 'arousal', 'cuni_give', -2, 'lesbian'
-		minut -2
 		gs 'stat'
 		act 'Bend her over': gt 'artem_sex', 'anushka_3some_doggy'
 	end

+ 27 - 19
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':
@@ -1196,7 +1203,8 @@ if $ARGS[0] = 'chat':
 			act 'Stop talking': gt 'artemhome', 'artemroom'
 		end
 !! This is triggered after Sveta has asked Artem to steal the video
-	elseif artemQW['artlie'] =1 and artemQW['dimkahelp'] ! daystart:
+!! dimaRevChoice ! 6 - Sveta did not ask Artem for extra help at school
+	elseif artemQW['artlie'] = 1 and artemQW['dimkahelp'] ! daystart and dimaRevChoice ! 6:
 		cla & clr
 		DimaRudeBlock = 1
 		artemQW['artlie'] = 2

+ 4 - 4
locations/backwater.qsrc

@@ -65,7 +65,7 @@ if $ARGS[0] = 'alone':
 			act 'Finish': gt 'backwater'
 		end
 	end
-	if cumloc[11] = 1 or cumloc[12] = 1:
+	if cumloc[11]+cumloc[12]+cumloc[16] > 0:
 		act 'Clean the sperm from your face (0:10)':
 			*clr & cla
 			'<center><img <<$set_imgh>> src="images/locations/gadukino/hunters/backwaterswim1.jpg"></center>'
@@ -98,7 +98,7 @@ if $ARGS[0] = 'alone':
 			act 'Finish': gt 'backwater'
 		end
 	end
-	if cumloc[6] = 1 or cumloc[7] = 1:
+	if cumloc[2]+cumloc[5]+cumloc[6]+cumloc[7] > 0:
 		act 'Wipe the cum off your clothes (0:10)':
 			*clr & cla
 			'<center><img <<$set_imgh>> src="images/locations/gadukino/hunters/cumwash.jpg"></center>'
@@ -113,11 +113,11 @@ if $ARGS[0] = 'alone':
 			act 'Finish':gt 'backwater'
 		end
 	end
-	if spdirty > 0:
+	if cumsumbod-cumsumvag-cumsumass > 0 or pcs_sweat > 20:
 		act 'Quick wash (0:15)':
 			*clr & cla
 			'<center><img <<$set_imgh>> src="images/pc/activities/facewash.jpg"></center>'
-			*nl 'You carefully wash your face, removing any impurities.'
+			*nl 'You carefully wash your body, removing any impurities.'
 			menu_off = 1
 			cumspclnt = 4
 			gs 'cum_cleanup'

+ 1 - 1
locations/ballet_global_evt.qsrc

@@ -1,3 +1,3 @@
 # ballet_global_evt
 !! General world events 
---- ballet_global_evt---------------------------------
+--- ballet_global_evt ---------------------------------

+ 9 - 5
locations/ballet_npc.qsrc

@@ -20,7 +20,7 @@ hotcat_rating['A<<npctemp>>'] = 8
 !! mod appearance NPC settings, height in cm, weight in kg
 $npc_haircolour['A<<npctemp>>'] = 'blonde'
 $npc_eyecolour['A<<npctemp>>'] = 'blue'
-$npc_height['A<<npctemp>>'] = 170
+$npc_height['A<<npctemp>>'] = 160
 $npc_weight['A<<npctemp>>'] = 50 
 
 !! NPC Temp: 3502 - Kima
@@ -83,12 +83,16 @@ $npc_nickname['A<<npctemp>>'] = 'Bronya '
 $npc_lastname['A<<npctemp>>'] = 'Volkova'
 $npc_usedname['A<<npctemp>>'] = 'Bronya'
 
-!! NPC temp: 3514 - Physio - 
+!! NPC temp: 3514 - Physio - Pelageya Makarova
  
-!! Make up teacher: No name, the teacher never bothers to tell the class after a week. Former stage make up artist, beautician and scatterbrained.
+!! Make up teacher: Rada Egorova, the teacher never bothers to tell the class after a week. Former stage make up artist, beautician and scatterbrained.
+
+!! Staff Physio -  Syuzanna Zakharova / Klavdii Frolov (Klavdii is a pun)
+!! Mistress of Ballet - Zarya Popova
+
+!! Names f: Boleslava Grigoreva, Esfir Mikhaylova, Gavriila Makarova (warrior),Yustina Vinogradova
+!! Names m: Ipatiy Novikov, Venedikt Sorokin, Ony Volkov, Kazimir Sokolov
 
-!! Staff Physio - TBC
-!! Mistress of Ballet - TBC
 --- ballet_npc ---------------------------------
 
 

+ 277 - 32
locations/ballet_secrets.qsrc

@@ -1,74 +1,319 @@
 # ballet_secrets
-
 !! Author: Hooded Silence
-!! A dance shop which includes ballet, gymnastics and physio-therapy sources. Alternative path to ballet career in second year and first.
+!! Date Created: Nov, 2023
+!! Version: .01
+!! Author: Hooded Silence
+!! A dance shop which includes ballet, gymnastics and physio-therapy sources. Alternative path to ballet or dance career in second year and first.
 !! TBC - NPCs to be created
 
+$default_img_path = 'locations/pushkin/ballet_secrets/'
+
 if $ARGS[0] = 'init':
   *clr & cla
   gs 'shortgs', 'setloc', 'ballet_secrets', $ARGS[0] 
   $location_type = 'public_indoors'
   $setloc['StageTitle'] = 'Ballet Secrets'
-  $setloc['StageImage'] =  'pushkin/ballet_secrets'
+  $setloc['StageImage'] =  '<<$default_img_path>>ballet-shop-window'
   $location_type = 'public_indoors'
   gs 'themes', 'indoors'
   gs 'core_library', 'stage_title'
+  minut += 5
+  gs 'stat'
+  if week < 7 and hour >= 9 and hour <= 17:
+    'You enter the shop and greeted by a riot of displays showcasing ballet and other dance equipment. A woman is sewing something in the corner and glances at you before continuing.'
+    if balletqw['ballet_secrets'] = 1:
+      act 'Approach the woman': gt $loc, 'first_visit'
+    else
+      act 'Enter studio area': gt $loc, 'reception'
+      !! act 'Talk to assistant':
+      !! act'Look at equipment'
+      !! act 'look at dance wear'
+      act 'Leave shop': gt 'pushkin_sq'
+    end
+  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'
+    end
+  end
 
 end
 
 !! Intro
 
 if $ARGS[0] = 'first_visit':
+  balletqw['ballet_secrets_visit'] = 1
+  balletqw['shoe_order'] = daystart + 14
+  $setloc['StageImage'] =  '<<$default_img_path>>ballet_secrets_fitting_1'
+  minut += 60
+  gs 'core_library', 'stage_title'
+  gs 'stat'
+
+  'You are greeted by a middle aged woman. "Hello, how may I help you?" She askes politely.'
+  '"Hello, I am <<$pcs_firstname>> <<$pcs_lastname>>. I am part of the ballet school intake." you give her a smile and hand over the schools letter as proof.'
+  'The woman smiles warmly, "Ah you are the new students for this year?" she claps her hands and then takes yours, "Come, come we must measure your feet and order your shoes"'
+  'Before you say anything she''s dragging you through the shop towards the back we are are greeted by a wall of shoes and there is pictures on the wall signed by dancers with shoes next to them. You look at the woman.'
+  '"Yes, they are all dancers who are or have been clients of our establishment", she noticed your gaze and explains with pride."We will only provide the best for the school."'
+  !! Set up gate for sponsored or not, not implemented system needs to be added to the end of year assessment.
+  '"But where are my manners I am Darya Pushkina, I am the owner of this shop and facilies" she exclaims, "now to your fitting grabbing a tape measure and fitting tools for your feet"'
+  'For the next hour Madam Pushkina bombards you with questions of whether you want leather or cotton fabric, how many satin shoes and a myriad other questions before she finally relents.'
+  '"Of course as you are aware the school is sponsoring these costs, but only for the first year she says and you will need to manage your own equipment after this.", Madame Pushkina advises.'
+  '"Is there anything else you neeed? No? Good, I will see you again in two weeks for your final shoe fitting. I would like to extend my congratulations and wish you a successful career Ms. <<$pcs_lastname>>."'
+  act 'Leave': gt 'pushkin_sq'
+  act 'Return to shop': gt $loc, 'init'
+  
+
 end
 !! Services
-  !! Gymnastics
-  if $ARGS[0] = 'gymnastics':
-    gs 'shortgs', 'setloc', 'ballet_secrets', $ARGS[0] 
-    $location_type = 'public_indoors'
-    $setloc['StageTitle'] = 'Ballet Secrets - Gymnastics Class'
-    $setloc['StageImage'] =  'pushkin/ballet_secrets'
-    $location_type = 'public_indoors'
-    gs 'themes', 'indoors'
-    gs 'core_library', 'stage_title'
+
+!! Sports Area - Req Membership card
+
+if $ARGS[0] = 'reception':
+  gs 'shortgs', 'setloc', 'ballet_secrets', $ARGS[0] 
+  $location_type = 'public_indoors'
+  $setloc['StageTitle'] = 'Ballet Secrets - Reception'
+  $setloc['StageImage'] =  '<<$default_img_path>>reception'
+  $location_type = 'public_indoors'
+  gs 'themes', 'indoors'
+  gs 'core_library', 'stage_title'
+  minut += 5
+  gs 'stat'
+  'As you enter you are greeted warmly by the gym staff. The gym has an industrial feel reflecting the buildng being converted from an old factory.'
+
+  'There is a <a href="exec: gt ''food'', ''watercooler''">drinking fountain</a> near the doors to the gym hall to refill your water bottle.'
+ 
+
+  act 'Return to shop': gt $loc, 'init'
+  act 'Changing rooms': gt $loc, 'changing_room'
+  !! if membership not active:
+  if balletqw['membership'] = 0 or balletqw['membership'] < daystart:
+    act 'Discuss membership': gt $loc, 'enrol'
+  elseif hour <= 15 and $clothingworntype = 'danilovich_outfits' and $shoeworntype = 'danilovich' and pcs_stam >= stammax / 5 and pcs_energy >= 20:
+    !! link to services:
+    !! if membership active
+    !! act 'Attend Physio': gt $loc, 'physio'
+    !! act 'Attend a gymnastics class.': gt $loc, 'gymnastics_courses'
+    !! act 'Attend a dance class': gt $loc, 'ballet_courses'
+    act 'Attend a yoga class': gt $loc, 'yoga_courses'
+  elseif hour >= 16:
+    'All the evening classes have started today, you need to be here before 16:00 to ensure you can attend.'
   end
-  !! Ballet Courses Easy, Intermediate and advanced
-  if $ARGS[0] = 'ballet_courses':
-    gs 'shortgs', 'setloc', 'ballet_secrets', $ARGS[0] 
-    $location_type = 'public_indoors'
-    $setloc['StageTitle'] = 'Ballet Secrets - Courses'
-    $setloc['StageImage'] =  'pushkin/ballet_secrets'
-    $location_type = 'public_indoors'
-    gs 'themes', 'indoors'
-    gs 'core_library', 'stage_title'
+end
+if $ARGS[0]= 'enrol':
+  
+	$epayments['method'] = ''
+	$epayments['item_variable'] = ''
+	$epayments['description'] = 'gym facilities access'
+	$epayments['loc'] = 'ballet_secrets'
+	$epayments['loc_arg'] = 'reception'
+	$epayments['banner']= 'locations/<<$default_img_path>>reception.jpg'
+  gs 'core_library', 'stage_title'
+  minut += 30
+  gs 'stat'
+
+  if balletqw['membership'] = 0:
+    'You approach the reception to discuss membership to the gym.'
+  elseif balletqw['membership'] ! 0:
+    'You approach the reception to renew your membership.'
   end
-  !! Physiotherapy
-  if $ARGS[0] = 'physio':
-    gs 'shortgs', 'setloc', 'ballet_secrets', $ARGS[0] 
-    $location_type = 'public_indoors'
-    $setloc['StageTitle'] = 'Ballet Secrets - Physio'
-    $setloc['StageImage'] =  'pushkin/ballet_secrets'
-    $location_type = 'public_indoors'
-    gs 'themes', 'indoors'
-    gs 'core_library', 'stage_title'
+  act 'Return to the studio entrance': gt $loc, 'reception'
+
+  'The gym offers a weekly or monthly subscription for of 1,500<b> ₽</b>  or 5,000<b> ₽</b> respectively to use the facilities with some courses included. Physio appointments are charged seperately.'
+  'The subscriptions includes classes in gymnastics, yoga and introductory ballet. For advanced classes there is an additional instructor charge. A physical trainer is on hand to assist at all times if you so need one.'
+  'We also have a small café which attracts a members discount and your membership card can purchase items directly from the vending machine which will be billed to your account.'
+
+  if money >= 5000 or karta + bankDebtLimit >= 5000:
+    '<td> <a href="exec: epayments[''value''] = 5000 & balletqw[''membership''] = daystart + 30  & gs ''shortgs'',''payments'' ">Purchase a monthly subscription for 5,000<b> ₽</b></a></td>'
   end
+  if money >= 1500 or karta + bankDebtLimit >= 1500:
+    '<td> <a href="exec: epayments[''value''] = 1500 & balletqw[''membership''] = daystart + 7  & gs ''shortgs'',''payments'' ">Purchase a weekly subscription for 1,500<b> ₽</b></a></td>'
+	end
+end
+
+if $ARGS[0] = 'changing_room':
+  menu_off = 0
+  gs 'shortgs', 'setloc', 'ballet_secrets', $ARGS[0] 
+	$location_type = 'private'
+	$locclass = 'changingroom'
+  gs 'themes', 'indoors'
+  minut += 5
+  gs 'stat'
+  '<center><h2>Changing Room</h2></center>'
+	'<center><img <<$set_imgh>> src="images/locations/city/citycenter/gym/locker.jpg"></center>'
+
+  act 'Return to the studio reception': gt $loc, 'reception'
+  if mc_inventory['shampoo'] > 0:
+		act 'Take a shower (0:15)':
+			cla
+			*clr
+			menu_off = 1
+			minut += 15
+			pcs_horny += 1
+			pcs_hairbsh = 0
+			pcs_makeup = 1
+			if pcs_inhib < 15:inhib_exp += rand(1,2)
+			dynamic $showerdin
+			'<center><video autoplay loop src="images/shared/home/bathroom/dush.mp4"></video></center>'
+			'You go into the bathroom and turn on the shower. You lather your body and wash in the shower.'
+			if deodorant_on = 1: gs 'sweat', 'remove_deo' & '<br>Your deodorant gets washed away in the shower.'
+
+			act 'Get out of the shower':gt $loc, 'changing_room'
+
+		end
+	else
+		'<font color="red">You''ve run out of shampoo and will have to buy some more before you can wash yourself.</font>'
+	end
+
+	act 'Use mirror':
+		cla
+		gt 'mirror', 'start'
+	end
+
+	act 'Change outfit':
+		cla
+		gt 'wardrobe', 'start'
+	end
+
+	gs 'wardrobe', 'default_sport_options'
+
+  if mc_inventory['deodorant'] > 0 and deodorant_on = 0:
+		'Your deodorant will last you for <b><<mc_inventory[''deodorant'']>></b> more '+iif(mc_inventory['deodorant'] =  1, 'application.', 'applications.')
+		act 'Apply deodorant (0:01)':
+			*clr & cla
+			menu_off = 1
+			minut += 1
+			mc_inventory['deodorant'] -=  1
+			gs 'sweat', 'deo'
+			iif(func('body_din','pregnancyVisibility') = 1, '<center><img <<$set_imgh>> src="images/shared/home/bathroom/deodorant_preg.jpg"></center>', '<center><img <<$set_imgh>> src="images/shared/home/bathroom/deodorant.jpg"></center>')
+			'You apply deodorant to your armpits. It will keep you feeling fresh and clean for longer.'
+			act 'Continue': menu_off = 0 & gt $loc, $loc_arg
+		end
+	end
+	dynamic $tampon
+  
+end
+
+!! Physiotherapy
+if $ARGS[0] = 'physio':
+  gs 'shortgs', 'setloc', 'ballet_secrets', $ARGS[0] 
+  $location_type = 'public_indoors'
+  $setloc['StageTitle'] = 'Ballet Secrets - Physio'
+  $setloc['StageImage'] =  '<<$default_img_path>>physio'
+  $location_type = 'public_indoors'
+  gs 'themes', 'indoors'
+  gs 'core_library', 'stage_title'
+
+  !! write attendance spiel 
+  act 'Leave': gt 'pushkin_sq'
+end
+
+!! Gymnastics
+
+if $ARGS[0] = 'gymnastics_courses':
+  gs 'shortgs', 'setloc', 'ballet_secrets', $ARGS[0] 
+  $location_type = 'public_indoors'
+  $setloc['StageTitle'] = 'Ballet Secrets - Gymnastics Class'
+  $setloc['StageImage'] =  '<<$default_img_path>>gymnastics'
+  $location_type = 'public_indoors'
+  gs 'themes', 'indoors'
+  gs 'core_library', 'stage_title'
+
+  !! write attendance spiel and some random reactions for post-exercise such that was a great workout, you didn''t feel you did well today
+  act 'Leave': gt 'pushkin_sq'
+end
+
+!! Ballet Courses Easy, Intermediate and advanced
+if $ARGS[0] = 'ballet_courses':
+  gs 'shortgs', 'setloc', 'ballet_secrets', $ARGS[0] 
+  $location_type = 'public_indoors'
+  $setloc['StageTitle'] = 'Ballet Secrets - Courses'
+  $setloc['StageImage'] =  '<<$default_img_path>>ballet_class'
+  $location_type = 'public_indoors'
+  gs 'themes', 'indoors'
+  gs 'core_library', 'stage_title'
+end
+
+  !! Gymnastics
+
+if $ARGS[0] = 'yoga_courses':
+  gs 'shortgs', 'setloc', 'ballet_secrets', $ARGS[0] 
+  $location_type = 'public_indoors'
+  $setloc['StageTitle'] = 'Ballet Secrets - Yoga Class'
+  $setloc['StageImage'] =  '<<$default_img_path>>yoga_class'
+  $location_type = 'public_indoors'
+  gs 'themes', 'indoors'
+  gs 'core_library', 'stage_title'
+  minut += 5
+  gs 'stat'
+  if balletqw['yoga_session'] ! daystart:
+    act 'Attend Yoga Class':
+      cla
+      balletqw['yoga_session'] = daystart
+      lesson_tier = rand(1,3)
+      if lesson_tier = 1:
+        gs 'exercise', 'tier1', 60, 'sprt', 'agil'
+      'You spend sixty minutes in an easy going class today, leaving you feeling refreshed and ready to face the world again.'
+      elseif lesson_tier = 2:
+        'You spend sixty minutes with your instructor today correcting your poses and providing advice on how you can improve, leaving you feeling tired and some muscle aches from the exercises.'
+        gs 'exercise', 'tier2', 60, 'sprt', 'agil'
+      else 
+        gs 'exercise', 'tier3', 60, 'sprt', 'agil', 'stren'
+        'Today''s sixty minutes was challenging with the instructor taking the class through some of the more demanding positions. Leaving many of your yoga buddies look more than a little bit ragged after todays session.'
+      end
+      pcs_willpwr += rand(1,lesson_tier)
+      !! Set minor pain to reflect exercising
+
+      gs 'pain', 2, 'legL', 'stretch'
+      gs 'pain', 2, 'legR', 'stretch'
+      gs 'pain', 2, 'shoulders', 'stretch'
+      gs 'pain', 2, 'armL', 'stretch'
+      gs 'pain', 2, 'armR', 'stretch'
+      gs 'pain', 2, 'back', 'stretch'
+      gs 'pain', 2, 'chest', 'stretch'
+
+      killvar 'lesson_tier'
+      act 'Return to the studio reception': gt $loc, 'reception'
+    end
+  else 
+    'There is another fitness class in progress and no more yoga sessions today.'
+  end
+  act 'Return to the studio reception': gt $loc, 'reception'
+end 
+
 !! Shopping
 if $ARGS[0] = 'clothing':
   gs 'shortgs', 'setloc', 'ballet_secrets', $ARGS[0] 
   $location_type = 'public_indoors'
   $setloc['StageTitle'] = 'Ballet Secrets - Dancewear'
-  $setloc['StageImage'] =  'pushkin/ballet_secrets'
+  $setloc['StageImage'] =  '<<$default_img_path>>sports_shop'
   $location_type = 'public_indoors'
   gs 'themes', 'indoors'
   gs 'core_library', 'stage_title'
+  act 'Leave': gt 'pushkin_sq'
 end
+
 !! Custom Tutus for quests/shows, ballet shoe fitting, clothing, physio items, portable ballet equipment (barre) etc.
 if $ARGS[0] = 'quest':
   gs 'shortgs', 'setloc', 'ballet_secrets', $ARGS[0] 
   $location_type = 'public_indoors'
   $setloc['StageTitle'] = 'Ballet Secrets'
-  $setloc['StageImage'] =  'pushkin/ballet_secrets'
+  $setloc['StageImage'] =  '<<$default_img_path>>quest'
   $location_type = 'public_indoors'
   gs 'themes', 'indoors'
   gs 'core_library', 'stage_title'
+  act 'Leave': gt 'pushkin_sq'
+end
+
+if $ARGS[0] = 'food':
+  gs 'shortgs', 'setloc', 'ballet_secrets', $ARGS[0] 
+  $location_type = 'public_indoors'
+  $setloc['StageTitle'] = 'Food Court'
+  $setloc['StageImage'] =  '<<$default_img_path>>food_court'
+  $location_type = 'public_indoors'
+  gs 'themes', 'indoors'
+  gs 'core_library', 'stage_title'
+
+  'There is a small area set aside for vending machines to provide drinks and food. '
+  act 'Leave': gt 'pushkin_sq'
 end
 --- ballet_secrets ---------------------------------

+ 78 - 92
locations/band_tour_anushka_SMS.qsrc

@@ -16,50 +16,29 @@
 
 
 
-!!=====   Layout stuff   =====================================================================================!!
-!! Open and close receiving text
-$SMS_open_receiving = '<table width=80%><tr><td collspan=2 bgcolor="#D4CEF9"><font color=black>'
-$SMS_close_receiving = '</font></td><td width=10%></td></tr></table>'
+!=====   Reply example here ==================================================================================!
 
-!! Open and close sending text
-$SMS_open_sending = '<table width=80%><tr><td width=10%></td><td collspan=2 bgcolor=pink><font color=black>'
-$SMS_close_sending = '</font></td></tr></table>'
+!	gs 'SMStext_builder', 'add_reply', [$text], [$location], [$args0], [$args1], [$args2], ...
+!	examples:
+!		gs 'SMStext_builder', 'add_reply', 'No, I do''t want to come over', 'booty_call_sms', 'Choice_a', $ARGS[1], $ARGS[2]
+!		gs 'SMStext_builder', 'add_reply', 'Good luck!', 'band_tour_anushka_SMS', 'Week1', 'Choice_a'
 
-!! Start reply
-$SMS_open_replies = '<table><tr><th> Reply</th></tr><tr><td>'
-$SMS_next_reply = '</td></tr><tr><td>'
-$SMS_close_replies = '</td></tr></table>'
-!!=====   Layout stuff   =====================================================================================!!
+!=============================================================================================================!
 
 
+!=====   Adding Images to SMS ================================================================================!
 
-!!=====   Reply example here =================================================================================!!
-
-!!   $temp_SMStext += $SMS_open_replies
-!!   $temp_SMStext += '<a href="exec: gs ''>>Name of the location<<'', ''>>Name of the SMS Branch<<'', ''>>Name of the Choice<<'', telefon[''SMSid'']">' + 'TEXT' + '</a>'
-!!   $temp_SMStext += $SMS_next_reply
-!!   $temp_SMStext += '<a href="exec: gs ''>>Name of the location<<'', ''>>Name of the SMS Branch<<'', ''>>Name of the Choice<<'', telefon[''SMSid'']">' + 'TEXT' + '</a>'
-!!   ....
-!!   $temp_SMStext += $SMS_close_replies
-
-!!=====   Reply example here =================================================================================!!
-
-!!=====   Adding Images to SMS ===============================================================================!!
-
-!!    You can add images at the end by manually setting:
-!!    $SMSPicture1[telefon['SMSid']] = Path to picture 1
-!!    $SMSPicture2[telefon['SMSid']] = Path to picture 2
-!!    $SMSPicture3[telefon['SMSid']] = Path to picture 3
-!!    $SMSPicture4[telefon['SMSid']] = Path to picture 4
+!	You can add images at the end of the text by using:
+!	gs 'SMStext_builder', 'add_sms', $npc_code, $imagepath1, $imagepath2, $imagepath3, $imagepath4
+!	gs 'SMStext_builder', 'add_sms', SMSid, $imagepath1, $imagepath2, $imagepath3, $imagepath4
+!			SMSid is the final ARGS passed to this file (here ARGS[2])
 
 ! You can also always add a picture to the text, scaling is an issue though
 
+!=============================================================================================================!
 
-!!=====   Adding Images to SMS ===============================================================================!!
 
 
-$temp_SMStext = ''
-
 
 if $ARGS[0] = 'start':
 	anushkaQW['num_tour_SMS_send'] += 1
@@ -107,25 +86,22 @@ if $ARGS[0] = 'Week1':
 	! Tree with all options, for reading ease
 	
 	$SMSTree[ '0'] = '"Hey, what up? Just got up, it was a long night last night. Did our first gig at this little club in Pskov, it was pretty cool. Stayed up drinking afterwards, have a hell of a headache. Hope you are having half as much fun as I am bitch." Her text is followed by emojis aligned in a lewd way.'
-	
+
 		$SMSTree['a1'] = 'Good luck!'
 	!!		$SMSTree['a2'] = 'Receiving respons a'
-	
+
 	!!Add the SMS to the phone
 	if $ARGS[1] = 'Add SMS':
-		$temp_SMStext += $SMS_open_receiving + $SMSTree[ '0'] + $SMS_close_receiving
+		gs 'SMStext_builder', 'start'
+			gs 'SMStext_builder', 'receive', $SMSTree[ '0']
+			gs 'SMStext_builder', 'receive_img', 'images/characters/pavlovsk/school/girl/anushka/tour/week1.jpg'
 		
-		!!replies
-		$temp_SMStext += $SMS_open_replies
-		
-		$temp_SMStext += '<a href="exec: gs ''band_tour_anushka_SMS'', ''Week1'', ''Choice_a'', telefon[''SMSid'']">' + 'Good luck!' + '</a>'
-		$temp_SMStext += $SMS_close_replies
-
-		!!$temp_SMStext += $SMS_next_reply
-		!!$temp_SMStext += '<a href="exec: gs ''band_tour_anushka_SMS'', ''Week1'', ''Choice_b'', telefon[''SMSid'']">' + 'Reply2' + '</a>'
-		!!$temp_SMStext += $SMS_close_replies
-
-		gosub 'telefon', 'add_sms', 'A144', $temp_SMStext
+			!replies
+			gs 'SMStext_builder', 'add_reply', $SMSTree['a1'], 'band_tour_anushka_SMS', 'Week1', 'Choice_a'
+			!	gs 'SMStext_builder', 'add_reply', $SMSTree['b1'], 'band_tour_anushka_SMS', 'Week1', 'Choice_b'
+			
+			gs 'SMStext_builder', 'add_sms', 'A144'
+		gs 'SMStext_builder', 'end'
 
 
 	!!===   Choice a   ===!!
@@ -135,11 +111,10 @@ if $ARGS[0] = 'Week1':
 		!! Is here to add it after reading the text.
 		if arrpos('$contact', 'A144') = -1: gs 'telefon', 'AddContact', 'A144', 'images/characters/shared/headshots_main/big144.jpg', "", "1 = 0", "", "", 0
 
-		$temp_SMStext += $SMS_open_receiving + $SMSTree[ '0']  + $SMS_close_receiving
-		$temp_SMStext += $SMS_open_sending   + $SMSTree['a1'] + $SMS_close_sending
-		
-		$SMSMessage[ARGS[2]] = $temp_SMStext
-		gs 'telefon', 'show_sms', ARGS[2]
+		gs 'SMStext_builder', 'start'
+			gs 'SMStext_builder', 'send', $SMSTree['a1']
+			gs 'SMStext_builder', 'show_sms', ARGS[2]
+		gs 'SMStext_builder', 'end'
 	end
 
 
@@ -148,10 +123,11 @@ elseif $ARGS[0] = 'Week2':
 	$SMSTree[ '0'] = '"Got to Smolensk, been playing most nights in local clubs. Going to do a little site seeing today, the boys are all out still. Was a hell of a party last night, so many bitches just throwing themselves at the boys and boy do they love it." Her text is followed by emojis aligned in a lewd way.'
 
 	if $ARGS[1] = 'Add SMS':
-		$temp_SMStext += $SMS_open_receiving + $SMSTree[ '0'] + $SMS_close_receiving
-
-		gosub 'telefon', 'add_sms', 'A144', $temp_SMStext
-
+		gs 'SMStext_builder', 'start'
+			gs 'SMStext_builder', 'receive', $SMSTree[ '0']
+			gs 'SMStext_builder', 'receive_img', 'images/characters/pavlovsk/school/girl/anushka/tour/week2.jpg'
+			gs 'SMStext_builder', 'add_sms', 'A144'
+		gs 'SMStext_builder', 'end'
 	end
 
 
@@ -161,12 +137,11 @@ elseif $ARGS[0] = 'Week3':
 	$SMSTree[ '0'] = '"We got to Minsk just in time for Рок За Бобров festival, it was amazing. We camped out all four days. So many bands, so much good music, we got to get up on stage as well. Not the main stage but one of the side stages. So fucking cool, I want to come back next year and do it again." A string of excited emojis follow the text'
 
 	if $ARGS[1] = 'Add SMS':
-		$temp_SMStext += $SMS_open_receiving + $SMSTree[ '0'] + $SMS_close_receiving
-		
-		!! Insert image path here ---- $SMSPicture1[ARGS[2]] = 'images/pc/glare.jpg'
-		$temp_imagepath1 = ''
-		
-		gosub 'telefon', 'add_sms', 'A144', $temp_SMStext, $temp_imagepath1
+		gs 'SMStext_builder', 'start'
+			gs 'SMStext_builder', 'receive', $SMSTree[ '0']
+			gs 'SMStext_builder', 'receive_img', 'images/characters/pavlovsk/school/girl/anushka/tour/week3.jpg'
+			gs 'SMStext_builder', 'add_sms', 'A144'
+		gs 'SMStext_builder', 'end'
 	end
 
 
@@ -175,9 +150,11 @@ elseif $ARGS[0] = 'Week4':
 	$SMSTree[ '0'] = '"We made Kyiv in time for Atlas music festival, they also had a beer festival and a lot of tattoo artists. I was going to get a new tattoo, but the wait was too long. Val got so drunk we had to carry him back to the hotel."'
 
 	if $ARGS[1] = 'Add SMS':
-		$temp_SMStext += $SMS_open_receiving + $SMSTree[ '0'] + $SMS_close_receiving
-
-		gosub 'telefon', 'add_sms', 'A144', $temp_SMStext
+		gs 'SMStext_builder', 'start'
+			gs 'SMStext_builder', 'receive', $SMSTree[ '0']
+			gs 'SMStext_builder', 'receive_img', 'images/characters/pavlovsk/school/girl/anushka/tour/week4.jpg'
+			gs 'SMStext_builder', 'add_sms', 'A144'
+		gs 'SMStext_builder', 'end'
 	end
 
 
@@ -187,12 +164,11 @@ elseif $ARGS[0] = 'Week5':
 	$SMSTree[ '0'] = '"Third festival in a row, we made the Маяк Fest here in Odessa. So cool, I am loving this trip. Spent a lot of time at the music festival, played some gigs, but spent a lot of the time at the beach. I wish another girl had come, hanging out with just the boys is getting old." emoji of a gun to head.'
 
 	if $ARGS[1] = 'Add SMS':
-		$temp_SMStext += $SMS_open_receiving + $SMSTree[ '0'] + $SMS_close_receiving
-		
-		!! Insert image path here ---- $SMSPicture1[ARGS[2]] = 'images/pc/glare.jpg'
-		$temp_imagepath1 = ''
-
-		gosub 'telefon', 'add_sms', 'A144', $temp_SMStext, $temp_imagepath1
+		gs 'SMStext_builder', 'start'
+			gs 'SMStext_builder', 'receive', $SMSTree[ '0']
+			gs 'SMStext_builder', 'receive_img', 'images/characters/pavlovsk/school/girl/anushka/tour/week5.jpg'
+			gs 'SMStext_builder', 'add_sms', 'A144'
+		gs 'SMStext_builder', 'end'
 	end
 
 
@@ -201,9 +177,11 @@ elseif $ARGS[0] = 'Week6':
 	$SMSTree[ '0'] = '"There was some watermelon festival going on here at Rostov, Arkadi entered into the eating contest and lost, we took some with us for our next drive. Played at a lot of small clubs while here."'
 
 	if $ARGS[1] = 'Add SMS':
-		$temp_SMStext += $SMS_open_receiving + $SMSTree[ '0'] + $SMS_close_receiving
-
-		gosub 'telefon', 'add_sms', 'A144', $temp_SMStext
+		gs 'SMStext_builder', 'start'
+			gs 'SMStext_builder', 'receive', $SMSTree[ '0']
+			gs 'SMStext_builder', 'receive_img', 'images/characters/pavlovsk/school/girl/anushka/tour/week6.jpg'
+			gs 'SMStext_builder', 'add_sms', 'A144'
+		gs 'SMStext_builder', 'end'
 	end
 
 
@@ -212,9 +190,11 @@ elseif $ARGS[0] = 'Week7':
 	$SMSTree[ '0'] = '"Had some big gigs in Volgograd, followed by a two day party at some girls place. I don''t remember half of it, but I woke up in the van, somehow we picked up two bitches who are now with us, the guys take turns fucking them in the back, as we drive." Followed by several lewd emojis for sex'
 
 	if $ARGS[1] = 'Add SMS':
-		$temp_SMStext += $SMS_open_receiving + $SMSTree[ '0'] + $SMS_close_receiving
-
-		gosub 'telefon', 'add_sms', 'A144', $temp_SMStext
+		gs 'SMStext_builder', 'start'
+			gs 'SMStext_builder', 'receive', $SMSTree[ '0']
+			gs 'SMStext_builder', 'receive_img', 'images/characters/pavlovsk/school/girl/anushka/tour/week7.jpg'
+			gs 'SMStext_builder', 'add_sms', 'A144'
+		gs 'SMStext_builder', 'end'
 	end
 
 
@@ -223,9 +203,11 @@ elseif $ARGS[0] = 'Week8':
 	$SMSTree[ '0'] = '"Had some great gigs here in Voronezh, one of the bitches took off, getting a bus ride home. Anna stayed, she seems to love it when I drive, so the boys can triple team her. The rest of the time she spends passed out from drinking too much, she is starting to get on my nerves."'
 
 	if $ARGS[1] = 'Add SMS':
-		$temp_SMStext += $SMS_open_receiving + $SMSTree[ '0'] + $SMS_close_receiving
-
-		gosub 'telefon', 'add_sms', 'A144', $temp_SMStext
+		gs 'SMStext_builder', 'start'
+			gs 'SMStext_builder', 'receive', $SMSTree[ '0']
+			gs 'SMStext_builder', 'receive_img', 'images/characters/pavlovsk/school/girl/anushka/tour/week8.jpg'
+			gs 'SMStext_builder', 'add_sms', 'A144'
+		gs 'SMStext_builder', 'end'
 	end
 
 
@@ -234,9 +216,11 @@ elseif $ARGS[0] = 'Week9':
 	$SMSTree[ '0'] = '"Moscow is huge and amazing, had a blast here. Getting sick of the boys, after two months with them I am ready to strangle them. At least we ditched the bitch, we just left her passed out in the hotel room."'
 
 	if $ARGS[1] = 'Add SMS':
-		$temp_SMStext += $SMS_open_receiving + $SMSTree[ '0'] + $SMS_close_receiving
-
-		gosub 'telefon', 'add_sms', 'A144', $temp_SMStext
+		gs 'SMStext_builder', 'start'
+			gs 'SMStext_builder', 'receive', $SMSTree[ '0']
+			gs 'SMStext_builder', 'receive_img', 'images/characters/pavlovsk/school/girl/anushka/tour/week9.jpg'
+			gs 'SMStext_builder', 'add_sms', 'A144'
+		gs 'SMStext_builder', 'end'
 	end
 
 
@@ -245,9 +229,11 @@ elseif $ARGS[0] = 'Week10':
 	$SMSTree[ '0'] = '"On the way to Novgorod I almost jumped out of the van. We stopped at some diner and the boys all had this bean stew. Within an hour the van was like a toxic gas zone. they made a game out of who could fart the loudest, I almost threw up several times. Spent most of the time with my head hanging out the window." emoji of a vomiting face.'
 
 	if $ARGS[1] = 'Add SMS':
-		$temp_SMStext += $SMS_open_receiving + $SMSTree[ '0'] + $SMS_close_receiving
-
-		gosub 'telefon', 'add_sms', 'A144', $temp_SMStext
+		gs 'SMStext_builder', 'start'
+			gs 'SMStext_builder', 'receive', $SMSTree[ '0']
+			gs 'SMStext_builder', 'receive_img', 'images/characters/pavlovsk/school/girl/anushka/tour/week10.jpg'
+			gs 'SMStext_builder', 'add_sms', 'A144'
+		gs 'SMStext_builder', 'end'
 	end
 
 !!11th text
@@ -255,16 +241,16 @@ elseif $ARGS[0] = 'Week11':
 	$SMSTree[ '0'] = '"Back home, can''t believe it but I actually missed this place. Got to start packing tomorrow to move to the city and get ready for Uni."'
 
 	if $ARGS[1] = 'Add SMS':
-		$temp_SMStext += $SMS_open_receiving + $SMSTree[ '0'] + $SMS_close_receiving
-
-		gosub 'telefon', 'add_sms', 'A144', $temp_SMStext
+		gs 'SMStext_builder', 'start'
+			gs 'SMStext_builder', 'receive', $SMSTree[ '0']
+			gs 'SMStext_builder', 'receive_img', 'images/characters/pavlovsk/school/girl/anushka/tour/week11.jpg'
+			gs 'SMStext_builder', 'add_sms', 'A144'
+		gs 'SMStext_builder', 'end'
 	end
 
 end
 
-killvar '$temp_SMStext'
-killvar 'SMSTree'
-
+killvar '$SMSTree'
 
 --- band_tour_anushka_SMS ---------------------------------
 

+ 1 - 0
locations/barbershop.qsrc

@@ -158,6 +158,7 @@ elseif barbershop_wrk = 1 and barbershop_wrk_day ! daystart:
 		menu_off = 1
 		minut += 60
 		money += 125
+		gs 'exp_gain', 'cleaning', rand(1,2)
 		barbershop_wrk_day = daystart
 		gs 'stat'
 		'You work diligently and fast. You clean the floor, take out the trash, dust off the shelves and wipe some mirrors and windows. Before you know an hour has passed and you''re 125 <b>₽</b> richer.'

+ 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
 

+ 1 - 1
locations/bed_events.qsrc

@@ -148,7 +148,7 @@ if $ARGS[0] = 'rab2':
 	act 'Suck it':
 		*clr & cla
 
-		if analplugIN = 1: analplugIN = 0
+		if analplugIN = 1: analplugIN = 0 & analplugout = 1
 		if pcs_makeup ! 1 and cosmetic_tattoo = 0: pcs_makeup = 0
 
 		'<center><img <<$set_imgh>> src="images/characters/city/nicholas/sex/r1.jpg"></center>'

+ 0 - 1
locations/bed_get_out.qsrc

@@ -3,7 +3,6 @@
 
 if $ARGS[0] = 'start' or $ARGS[0] = '':
 	menu_off = 1
-	minut -= 1
 	InSleep = 0
 	sleepVars['slept_in'] = 0
 	strip_here = 0

+ 1 - 1
locations/bedr.qsrc

@@ -131,8 +131,8 @@ if husbandrink = 10 and hour > 20 and hour < 23 and husbanstrapon = 0:
 			husbanstrapon = 1
 			minut += 10
 			'<center><img <<$set_imgh>> src="images/characters/city/husband/sex/h0.jpg"></center>'
-			if analplugin = 1: 'You pull the plug out of you and shove it up his ass.'
 			if analplugin = 0: 'You take an anal plug and put it into his ass.'
+			if analplugin = 1: analplugIN = 0 & analplugout = 0 & 'You pull the plug out of you and shove it up his ass.'
 
 			'<<$husName>> moves, but he doesn''t wake up.'
 

+ 1 - 1
locations/bedr2x.qsrc

@@ -121,8 +121,8 @@ if husbandrink = 10 and hour > 20 and hour < 23 and husbanstrapon = 0:
 			husbanstrapon = 1
 			minut += 10
 			'<center><img <<$set_imgh>> src="images/characters/city/husband/sex/h0.jpg"></center>'
-			if analplugin = 1: 'You get your butt plug out and pull down his pants. You put just a dab of lube on the tip of the plug, then gently insert it into his ass.'
 			if analplugin = 0: 'You take an anal plug and put it into his ass.'
+			if analplugin = 1: analplugIN = 0 & analplugout = 0 & 'You get your butt plug out and pull down his pants. You put just a dab of lube on the tip of the plug, then gently insert it into his ass.'
 			'<<$husName>> moves, but he doesn''t wake up.'
 
 			if mc_inventory['dildo_small'] > 0:

+ 18 - 14
locations/begin.qsrc

@@ -12,10 +12,10 @@ if $ARGS[0] = 'start':
 
 	settingmode = 0
 	$checkimg = {
-		if $ARGS[0]=$ARGS[1]:
+		if $ARGS[0]=$ARGS[2] and $ARGS[1]=$ARGS[3]:
 			$result = '<TD><center><img src="images/system/icons/check.png" height="50"></center></TD>'
 		else
-			$result = '<TD><center><a href="exec:$start_type = ''<<$ARGS[1]>>'' & gt ''begin'',''start''"><img src="images/system/icons/uncheck.png" height="50"></a></center></TD>'
+			$result = '<TD><center><a href="exec:$start_type[''loc''] = ''<<$ARGS[2]>>'' & $start_type[''magic''] = ''<<$ARGS[3]>>'' & gt ''begin'',''start''"><img src="images/system/icons/uncheck.png" height="50"></a></center></TD>'
 		end
 	}
 	gs 'Cheatmenu_din'
@@ -40,30 +40,34 @@ if $ARGS[0] = 'start':
 
 	$start_text = '<TR><TD><p align="center">School</p></TD>'
 
-	$start_text += $dyneval($checkimg,$start_type,'sg')
-	$start_text += $dyneval($checkimg,$start_type,'sg_m')
-	$start_text += $dyneval($checkimg,$start_type,'sg_tg')
+	$start_text += $dyneval($checkimg, $start_type['loc'], $start_type['magic'], 'sg', 'nomagic')
+	$start_text += $dyneval($checkimg, $start_type['loc'], $start_type['magic'], 'sg', 'magic')
+	$start_text += $dyneval($checkimg, $start_type['loc'], $start_type['magic'], 'sg', 'tg')
 
 	$start_text += '<TR><TD><p align="center">City</p></TD>'
 
-	$start_text += $dyneval($checkimg,$start_type,'city')
-	$start_text += $dyneval($checkimg,$start_type,'city_m')
-	$start_text += $dyneval($checkimg,$start_type,'city_tg')
+	$start_text += $dyneval($checkimg, $start_type['loc'], $start_type['magic'], 'city', 'nomagic')
+	$start_text += $dyneval($checkimg, $start_type['loc'], $start_type['magic'], 'city', 'magic')
+	$start_text += $dyneval($checkimg, $start_type['loc'], $start_type['magic'], 'city', 'tg')
 
 	$start_text += '<TR><TD><p align="center">University</p></TD>'
 
-	$start_text += $dyneval($checkimg,$start_type,'uni')
-	$start_text += $dyneval($checkimg,$start_type,'uni_m')
-	$start_text += $dyneval($checkimg,$start_type,'uni_tg')
+	$start_text += $dyneval($checkimg, $start_type['loc'], $start_type['magic'], 'uni', 'nomagic')
+	$start_text += $dyneval($checkimg, $start_type['loc'], $start_type['magic'], 'uni', 'magic')
+	$start_text += $dyneval($checkimg, $start_type['loc'], $start_type['magic'], 'uni', 'tg')
 
 	$start_text
 
 	'</table></center>'
 
-	if $start_type = 'sg' or $start_type = 'sg_m':
+	if $start_type['loc'] = 'sg' and $start_type['magic'] ! 'tg':
 		act '<center><b>Start</b></center>': gt 'intro_sg', 'start'
-	elseif $start_type ! '':
-		act '<center><b>Start</b></center>': gt 'intro_'+$start_type, 'start'
+	elseif $start_type['magic'] = 'nomagic':
+		act '<center><b>Start</b></center>': gt 'intro_' + $start_type['loc'], 'start'
+	elseif $start_type['magic'] = 'magic':
+		act '<center><b>Start</b></center>': gt 'intro_' + $start_type['loc'] + '_m', 'start'
+	elseif $start_type['magic'] = 'tg':
+		act '<center><b>Start</b></center>': gt 'intro_' + $start_type['loc'] + '_tg', 'start'
 	end
 
 	act '<center><b>Change game settings</b></center>': settingmode = 1 & gs '$menu_setting'

+ 53 - 56
locations/body.qsrc

@@ -71,7 +71,7 @@ if $ARGS[0] = 'CalcWeight':
 	This is an approximation, so that a sveta with a different height has the same BMI for the same pcs_mass['body'] values.
 	The default height of 170 cm is used as a starting point. The bmi deviates by 0.06 for a deviation of 10cm and 0.4 for a deviation of 20cm.}
 
-	result = 30 + (2 * (pcs_mass['body'] + pcs_mass['bust'] + pcs_mass['butt'])) / 5 + (pcs_hgt - 170) * 7 / 10
+	result = (600 + 7 * (pcs_mass['body'] + pcs_mass['bust'] + pcs_mass['butt']) + 14 * (pcs_hgt - 170)) / 20
 
 	!{Do not remove (julzor)
 	This is the old more complex function, but it doesn''t work correctly.
@@ -83,18 +83,18 @@ end
 
 if $ARGS[0] = 'CalcWeight2':
 	!! weight2 = 10 * weight
-	result = 300 + (20 * (pcs_mass['body'] + pcs_mass['bust'] + pcs_mass['butt'])) / 5 + (pcs_hgt - 170) * 7
+	result = (600 + 7 * (pcs_mass['body'] + pcs_mass['bust'] + pcs_mass['butt']) + 14 * (pcs_hgt - 170)) / 2
 	!result = (pcs_hgt * 62 / 17) + (10 * (vhips + (bodyVars['vofat'] * 2))) / 4 + 10 * tits
 end
 
 if $ARGS[0] = 'CalcBMI':
 	!! BMI = weight [kg] / (height [m])^2 = 100^2 * weight [kg] / (height [cm])^2
-	result = (10000 * pcs_weight) / (pcs_hgt * pcs_hgt)
+	result = (1000 * (10 * pcs_weight[0] + pcs_weight[1])) / (pcs_hgt * pcs_hgt)
 end
 
 if $ARGS[0] = 'CalcBMI2':
 	!! BMI2 = 10 * BMI
-	result = (100000 * pcs_weight) / (pcs_hgt * pcs_hgt)
+	result = (10000 * (10 * pcs_weight[0] + pcs_weight[1])) / (pcs_hgt * pcs_hgt)
 end
 
 
@@ -128,8 +128,7 @@ if $ARGS[0] = 'DailyUpdate':
 		gs 'body', 'Update_StatBuffs'
 	end
 
-	gs 'body', 'UpdateBodyImage'
-
+	gs 'body', 'RegularUpdate'
 
 	gs 'body', 'Update_daily_body_other'
 
@@ -157,13 +156,39 @@ if $ARGS[0] = 'DailyUpdate':
 
 	gs 'body', 'Update_Teeth'
 
+	gs 'AppearanceSystem', 'UpdateBaseAppearance'
+	gs 'body', 'Update_Appearance'
+
 	!skin variable reset
 	killvar 'moisturizerDailyCount'
 	killvar 'skinDailyGain'
 	killvar 'skinDailyPenalty'
+	
+end
+
+if $ARGS[0] = 'Update_Appearance':
+	gs 'body', 'UpdateBodyImage'
+	gs 'AppearanceSystem'
+	gs 'body_desc'
 end
 
 
+	!!-------------------------    UPDATE images   -------------------------!!
+
+if $ARGS[0] = 'UpdateBodyImage':
+	!Update body image set
+	if dounspell = 1:
+		salocatnow = (pcs_hips / 10) - 5
+	end
+
+
+	$bodyVars['desc']     = func('body_structure', 'body_desc')
+	$bodyVars['img']      = func('body_structure', 'body_img')
+	$bodyVars['bmi_desc'] = func('body_structure', 'bmi_desc')
+end
+
+
+
 	!!-------------------------    UPDATE eyelashes, hair, pubes, teeth   -------------------------!!
 
 if $ARGS[0] = 'Update_Eyelashes':
@@ -262,45 +287,6 @@ if $ARGS[0] = 'Update_Teeth':
 end
 
 
-	!!-------------------------    UPDATE images   -------------------------!!
-
-if $ARGS[0] = 'UpdateBodyImage':
-	!Update body image set
-	if dounspell = 1:
-		salocatnow = (pcs_hips / 10) - 5
-	end
-
-	if bdsetlock = 1:
-		bodset = fixbodset
-	else
-		if knowpreg = 1 or (preg = 1 and (thinkpreg = 1 or PregChem > 3600)):
-			bodset = 3
-		elseif strenbuf >= 100 and stren_plus_lvl > 0:
-			bodset = 2
-		elseif strenbuf <= 50:
-			bodset = 0
-		else
-			bodset = 1
-		end
-	end
-
-	! Update body description
-	if bodset = 3 and (knowpreg = 1 or (preg = 1 and (thinkpreg = 1 or PregChem > 3600))):
-		if PregChem > 6216:
-			$body = $bodimgsets[bodset * 10 + 8]
-		elseif PregChem < 2688:
-			$body = $bodimgsets[bodset * 10]
-		else
-			$body = $bodimgsets[bodset * 10 + (PregChem - 2688) / 504 + 1]
-		end
-
-	elseif salocatnow <= 7:
-		$body = $bodimgsets[bodset * 10 + salocatnow]
-	else
-		$body = $bodimgsets[bodset * 10 + 7]
-	end
-end
-
 
 
 
@@ -554,10 +540,10 @@ end
 
 if $ARGS[0] = 'Calc_salocat':
 	!!This calculates the current pcs_mass['body'] category; ranges are 20 points, seemed to balance best if the range is x10 the hip devisor
-	if pcs_mass['body'] < 10:
+	if pcs_mass['body'] + pcs_mass['butt'] < 10:
 		result = 0
 	else
-		result = 1 + (pcs_mass['body'] - 10) / 20
+		result = (pcs_mass['body'] + pcs_mass['butt'] + 10) / 20
 	end
 end
 
@@ -662,7 +648,7 @@ if $ARGS[0] = 'Redistribute_Mass':
 					pcs_mass['body'] -= 1
 				!end
 
-			elseif emp_mass_ass < pcs_mass['butt'] and pcs_mass['butt'] > 0:
+			elseif temp_mass_ass < pcs_mass['butt'] and pcs_mass['butt'] > 0:
 				pcs_mass['butt'] -= 1
 				pcs_mass['body'] += 1
 			end
@@ -744,6 +730,7 @@ if $ARGS[0] = 'Reset_mass_distribution':
 	pcs_mass['butt_last']  = pcs_mass['body']
 
 	killvar 'total_mass'
+	killvar 'total_gen_mass'
 
 	gs 'body', 'Update_vhips'
 end
@@ -759,6 +746,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
 end
 
 
@@ -842,13 +830,16 @@ if $ARGS[0] = 'softreset':
 	bodyresetflag = 1
 	:resetloop
 	if pcs_mass['body'] ! salolast:
-		if gamestartflag = 1: salobustdo = 1
+		if gamestartflag = 1:
+			salobustdo = 1
+		end
 		gs 'body', 'Update_Body'
 		jump 'resetloop'
 	end
 
 	!!Updates pcs_apprncbase after a reset
-	gs 'AppearanceSystem', 'UpdateBaseAppearnce'
+	gs 'body', 'UpdateBodyMeasurement'
+	gs 'body', 'Update_Appearance'
 
 	!!Clears the warning and reset status flags if they were set
 	bodyresetflag = 0
@@ -915,7 +906,7 @@ if $ARGS[0] = 'hardreset':
 		killvar 'dounsplkil'
 		newbdsp = 1
 		dounspell = 0
-		gs 'AppearanceSystem', 'UpdateBaseAppearnce'
+		gs 'body', 'Update_Appearance'
 		gs 'body', 'Update_Body'
 		gs 'stat'
 	end
@@ -934,11 +925,17 @@ end
 if $ARGS[0] = 'initial':
 	!!	Sets the genetic bust size if it was not set in the start routines
 	if pcs_mass['bust_gen'] = 0: pcs_mass['bust_gen'] = 12
-	
-	gs 'body', 'Set_mass_distribution_using_body', pcs_mass['body']
+	if pcs_mass['butt_gen'] = 0: pcs_mass['butt_gen'] = 20
+
+	if pcs_mass['body'] >= 50 and pcs_mass['body'] <= 60:
+		pcs_mass['bust'] = pcs_mass['bust_gen']
+		pcs_mass['butt'] = pcs_mass['butt_gen']
+	else
+		gs 'body', 'Set_mass_distribution_using_body', pcs_mass['body']
+	end
 
-	agilbuf = pcs_agil
 	strenbuf = pcs_stren
+	agilbuf  = pcs_agil
 	vitalbuf = pcs_vital
 
 	normbuffpick = -1
@@ -948,7 +945,8 @@ if $ARGS[0] = 'initial':
 	gs 'body', 'softreset'
 
 	!!	This sets/resets the controler variables
-	salocatlast = salocatnow
+	salocatnow = func('body', 'Calc_salocat')
+	salocatlast = salocatlast
 	normbuffpick = 0
 	magf2bdo = 0
 	killvar 'gamestartflag'
@@ -961,7 +959,6 @@ if $ARGS[0] = 'initial':
 	killvar 'temp_bmi'
 
 	gs 'body', 'UpdateBodyImage'
-	gs 'body_desc', 'BMI'
 end
 
 

+ 1 - 19
locations/body_desc.qsrc

@@ -186,24 +186,7 @@ if $ARGS[0] = 'anus':
 end
 
 if $ARGS[0] = 'BMI':
-	!!BMI Descriptions
-	if pcs_bmi < 16:
-		$bmi_desc = 'You are severely underweight.'
-	elseif pcs_bmi < 19:
-		$bmi_desc = 'You are underweight'
-	elseif pcs_bmi < 25:
-		$bmi_desc = 'You have a normal, healthy weight.'
-	elseif pcs_bmi < 30:
-		$bmi_desc = 'You are overweight.'
-	elseif pcs_bmi < 35:
-		$bmi_desc = 'You are moderately obese.'
-	elseif pcs_bmi < 40:
-		$bmi_desc = 'You are severely obese.'
-	elseif pcs_bmi < 45:
-		$bmi_desc = 'You are very severely obese.'
-	else
-		$bmi_desc = 'You are morbidly obese.'
-	end
+	$bodyVars['bmi_desc'] = func('body_structure', 'bmi_desc')
 end
 
 if $ARGS[0] = 'breasts':
@@ -1029,7 +1012,6 @@ if $ARGS[0] = 'hair':
 	if hbraids >= 1:
 		hscrunchw = 0
 		hpingripw = 0
-		hbangs = 0
 		hpigtail = 0
 	end
 

+ 442 - 0
locations/body_structure.qsrc

@@ -0,0 +1,442 @@
+# body_structure
+
+
+!	Get the bmi-strength class
+!	bs_class = func('body_structure', 'get_class', pcs_bmi, strenbuf)
+if $ARGS[0] = 'get_class':
+	!	bmi
+	if ARGS[1] < 16:
+		result = 0
+	elseif ARGS[1] < 19:
+		result = 100
+	elseif ARGS[1] < 22:
+		result = 200
+	elseif ARGS[1] < 25:
+		result = 300
+	elseif ARGS[1] < 30:
+		result = 400
+	elseif ARGS[1] < 35:
+		result = 500
+	elseif ARGS[1] < 40:
+		result = 600
+	elseif ARGS[1] < 45:
+		result = 700
+	else
+		result = 800
+	end
+
+	!	strenbuf
+	if ARGS[2] <= 5:
+		result += 0
+	elseif ARGS[2] <= 10:
+		result += 1
+	elseif ARGS[2] <= 15:
+		result += 2
+	elseif ARGS[2] <= 25:
+		result += 3
+	elseif ARGS[2] <= 35:
+		result += 4
+	elseif ARGS[2] <= 50:
+		result += 5
+	elseif ARGS[2] <= 70:
+		result += 6
+	elseif ARGS[2] <= 100:
+		result += 7
+	elseif ARGS[2] <= 110:
+		result += 8
+	elseif ARGS[2] <= 120:
+		result += 9
+	elseif ARGS[2] <= 130:
+		result += 10
+	elseif ARGS[2] <= 140:
+		result += 11
+	elseif ARGS[2] <= 150:
+		result += 12
+	elseif ARGS[2] <= 160:
+		result += 13
+	elseif ARGS[2] <= 170:
+		result += 14
+	elseif ARGS[2] <= 180:
+		result += 15
+	elseif ARGS[2] <= 190:
+		result += 16
+	else
+		result += 17
+	end
+end
+
+
+!	Get the bmi description:
+!	$bodyVars['bmi_desc'] = func('body_structure', pcs_bmi)
+if $ARGS[0] = 'bmi_desc':
+	if arrsize('ARGS') = 1: ARGS[1] = pcs_bmi
+
+	bs_temp_bs_class = func('body_structure', 'get_class', ARGS[1], 30)
+
+	if bs_temp_bs_class < 100:
+		$result = 'You are severely underweight.'
+	elseif bs_temp_bs_class < 200:
+		$result = 'You are underweight'
+	elseif bs_temp_bs_class < 300:
+		$result = 'You have a normal, healthy weight.'
+	elseif bs_temp_bs_class < 400:
+		$result = 'You have a normal, healthy weight.'
+	elseif bs_temp_bs_class < 500:
+		$result = 'You are overweight.'
+	elseif bs_temp_bs_class < 600:
+		$result = 'You are moderately obese.'
+	elseif bs_temp_bs_class < 700:
+		$result = 'You are severely obese.'
+	elseif bs_temp_bs_class < 800:
+		$result = 'You are very severely obese.'
+	else
+		$result = 'You are morbidly obese.'
+	end
+
+	killvar 'bs_temp_bs_class'
+end
+
+
+!	Get the appearance bonus
+!	Appearance_bonus = func('body_structure', 'appearance_bonus', pcs_bmi, strenbuf, succubusflag)
+if $ARGS[0] = 'appearance_bonus':
+	if arrsize('ARGS') = 1: ARGS[1] = pcs_bmi
+	if arrsize('ARGS') = 2: ARGS[2] = strenbuf
+	if arrsize('ARGS') = 3: ARGS[3] = succubusflag
+	if ARGS[3] = 1: ARGS[2] = 90
+
+	bs_temp_bs_class = func('body_structure', 'get_class', ARGS[1], ARGS[2])
+
+	if bs_temp_bs_class < 100:
+		!	starving: bmi < 16
+		result = -10
+	elseif bs_temp_bs_class < 200:
+		!	underweight: 16 <= bmi < 16
+		result = 25
+	elseif bs_temp_bs_class < 300:
+		!	slender: 19 <= bmi < 21
+		result = 50
+	elseif bs_temp_bs_class < 400:
+		!	healthy: 21 <= bmi < 25
+		result = 50
+	elseif bs_temp_bs_class < 500:
+		!	overweight: 26 <= bmi < 30
+		result = 25
+	elseif bs_temp_bs_class < 600:
+		!	moderately obese: 30 <= bmi < 35
+		result = 10
+	elseif bs_temp_bs_class < 700:
+		!	severely obese: 35 <= bmi < 40
+		result = -15
+	elseif bs_temp_bs_class < 800:
+		!	very severely obese: 40 <= bmi < 45
+		result = -40
+	else
+		!	morbidly obese: 45 <= bmi
+		result = -80
+	end
+
+	bs_temp_bs_class = bs_temp_bs_class mod 100
+
+	if bs_temp_bs_class = 0:
+		!	0 <= strenbuf <= 5
+		result -= 30
+	elseif bs_temp_bs_class = 1:
+		!	5 < strenbuf <= 10
+		result -= 20
+	elseif bs_temp_bs_class = 2:
+		!	10 < strenbuf <= 15
+		result -= 15
+	elseif bs_temp_bs_class = 3:
+		!	15 < strenbuf <= 25
+		result -= 10
+	elseif bs_temp_bs_class = 4:
+		!	25 < strenbuf <= 35
+		result -= 5
+	elseif bs_temp_bs_class = 5:
+		!	35 < strenbuf <= 50
+		result += 0
+	elseif bs_temp_bs_class = 6:
+		!	50 < strenbuf <= 70
+		result += 5
+	elseif bs_temp_bs_class = 7:
+		!	70 < strenbuf <= 100
+		result += 10
+	elseif bs_temp_bs_class = 8:
+		!	100 < strenbuf <= 110
+		result += 5
+	elseif bs_temp_bs_class = 9:
+		!	110 < strenbuf <= 120
+		result += 0
+	elseif bs_temp_bs_class = 10:
+		!	120 < strenbuf <= 130
+		result -= 5
+	elseif bs_temp_bs_class = 11:
+		!	130 < strenbuf <= 140
+		result -= 15
+	elseif bs_temp_bs_class = 12:
+		!	140 < strenbuf <= 150
+		result -= 30
+	elseif bs_temp_bs_class = 13:
+		!	150 < strenbuf <= 160
+		result -= 45
+	elseif bs_temp_bs_class = 14:
+		!	160 < strenbuf <= 170
+		result -= 60
+	elseif bs_temp_bs_class = 15:
+		!	170 < strenbuf <= 180
+		result -= 75
+	elseif bs_temp_bs_class = 16:
+		!	180 < strenbuf <= 190
+		result -= 100
+	else
+		!	190 < strenbuf <= 200
+		result -= 130
+	end
+
+	killvar 'bs_temp_bs_class'
+end
+
+
+!	Get the body shape image
+!	$bodyVars['img'] = func('body_structure', 'body_img', pcs_bmi, strenbuf, succubusflag)
+if $ARGS[0] = 'body_img':
+
+	! =======      Pregnant       ======= !
+	if bdsetlock = 0 and (knowpreg = 1 or (preg = 1 and (thinkpreg = 1 or PregChem > 3600))):
+		if PregChem <= 2687:
+			$result = 'images/pc/body/shape/default_preg/0.jpg'
+		elseif PregChem <= 6215:
+			$result = 'images/pc/body/shape/default_preg/<<((PregChem - 2184)/504)>>.jpg'
+		else
+			$result = 'images/pc/body/shape/default_preg/8.jpg'
+		end
+		exit
+	end
+
+	if arrsize('ARGS') = 1: ARGS[1] = pcs_bmi
+	if arrsize('ARGS') = 2: ARGS[2] = strenbuf
+	if arrsize('ARGS') = 3: ARGS[3] = succubusflag
+	if ARGS[3] = 1: ARGS[2] = 80
+
+	bs_temp_bs_class = func('body_structure', 'get_class', ARGS[1], ARGS[2])
+
+	if bdsetlock = 1:
+		if fixbodset = 0:
+			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
+			bs_temp_bs_class = 100 * (bs_temp_bs_class / 100) + 8
+		end
+	end
+
+
+	! =======      starving       ======= !
+	! -----           bmi < 16      ----- !
+	if bs_temp_bs_class <= 17:
+		!	0 <= strenbuf <= 200
+		$result = 'images/pc/body/shape/0.jpg'
+
+	! =======     underweight     ======= !
+	! -----     16 <= bmi < 19      ----- !
+	elseif bs_temp_bs_class <= 105:
+		!	0 <= strenbuf <= 50
+		$result = 'images/pc/body/shape/default_low/1.jpg'
+	elseif bs_temp_bs_class <= 107:
+		!	51 <= strenbuf <= 100
+		$result = 'images/pc/body/shape/default_mid/1.jpg'
+	elseif bs_temp_bs_class <= 117:
+		!	101 <= strenbuf <= 200
+		$result = 'images/pc/body/shape/default_high/1.jpg'
+
+	! =======       slender       ======= !
+	! -----     19 <= bmi < 21      ----- !
+	elseif bs_temp_bs_class <= 205:
+		!	0 <= strenbuf <= 50
+		$result = 'images/pc/body/shape/default_low/2.jpg'
+	elseif bs_temp_bs_class <= 207:
+		!	51 <= strenbuf <= 100
+		$result = 'images/pc/body/shape/default_mid/2.jpg'
+	elseif bs_temp_bs_class <= 217:
+		!	101 <= strenbuf <= 200
+		$result = 'images/pc/body/shape/default_high/2.jpg'
+
+	! =======       healthy       ======= !
+	! -----     21 <= bmi < 25      ----- !
+	elseif bs_temp_bs_class <= 305:
+		!	0 <= strenbuf <= 50
+		$result = 'images/pc/body/shape/default_low/3.jpg'
+	elseif bs_temp_bs_class <= 307:
+		!	51 <= strenbuf <= 100
+		$result = 'images/pc/body/shape/default_mid/3.jpg'
+	elseif bs_temp_bs_class <= 317:
+		!	101 <= strenbuf <= 200
+		$result = 'images/pc/body/shape/default_high/3.jpg'
+
+	! =======     overweight      ======= !
+	! -----     26 <= bmi < 30      ----- !
+	elseif bs_temp_bs_class <= 405:
+		!	0 <= strenbuf <= 50
+		$result = 'images/pc/body/shape/default_low/4.jpg'
+	elseif bs_temp_bs_class <= 407:
+		!	51 <= strenbuf <= 100
+		$result = 'images/pc/body/shape/default_mid/4.jpg'
+	elseif bs_temp_bs_class <= 417:
+		!	101 <= strenbuf <= 200
+		$result = 'images/pc/body/shape/default_high/4.jpg'
+
+	! =======  moderately obese   ======= !
+	! -----     30 <= bmi < 35      ----- !
+	elseif bs_temp_bs_class <= 505:
+		!	0 <= strenbuf <= 50
+		$result = 'images/pc/body/shape/default_low/5.jpg'
+	elseif bs_temp_bs_class <= 507:
+		!	51 <= strenbuf <= 100
+		$result = 'images/pc/body/shape/default_mid/5.jpg'
+	elseif bs_temp_bs_class <= 517:
+		!	101 <= strenbuf <= 200
+		$result = 'images/pc/body/shape/default_high/5.jpg'
+
+	! =======   severely obese    ======= !
+	! -----     35 <= bmi < 40      ----- !
+	elseif bs_temp_bs_class <= 617:
+		!	0 <= strenbuf <= 200
+		$result = 'images/pc/body/shape/6.jpg'
+
+	! ======= very severely obese ======= !
+	! -----     40 <= bmi < 45      ----- !
+	elseif bs_temp_bs_class <= 717:
+		!	0 <= strenbuf <= 200
+		$result = 'images/pc/body/shape/7.jpg'
+
+	! =======   morbidly obese    ======= !
+	! -----     45 <= bmi           ----- !
+	else
+		!	0 <= strenbuf <= 200
+		$result = 'images/pc/body/shape/8.jpg'
+	end
+
+	killvar 'bs_temp_bs_class'
+end
+
+
+!	Get the body description
+!	$bodyVars['desc'] = func('body_structure', 'body_desc', pcs_bmi, strenbuf, succubusflag)
+if $ARGS[0] = 'body_desc':
+	if knowpreg = 1 or (preg = 1 and (thinkpreg = 1 or PregChem > 3600)):
+		if PregChem <= 2687:
+			$result = 'pregnant, but not showing'
+		elseif PregChem <= 3191:
+			$result = 'glowing'
+		elseif PregChem <= 3695:
+			$result = 'starting to show'
+		elseif PregChem <= 4199:
+			$result = 'clearly showing'
+		elseif PregChem <= 4703:
+			$result = 'fairly pregnant'
+		elseif PregChem <= 5207:
+			$result = 'quite pregnant'
+		elseif PregChem <= 5711:
+			$result = 'very pregnant'
+		elseif PregChem <= 6215:
+			$result = 'extremely pregnant'
+		else
+			$result = 'ready to pop'
+		end
+		exit
+	end
+
+
+	if arrsize('ARGS') = 1: ARGS[1] = pcs_bmi
+	if arrsize('ARGS') = 2: ARGS[2] = strenbuf
+	if arrsize('ARGS') = 3: ARGS[3] = succubusflag
+	if ARGS[3] = 1: ARGS[2] = 80
+
+	bs_temp_bs_class = func('body_structure', 'get_class', ARGS[1], ARGS[2])
+
+
+	! =======      starving       ======= !
+	! -----           bmi < 16      ----- !
+	if bs_temp_bs_class <= 17:
+		!	0 <= strenbuf <= 200
+		$result = 'starving'
+
+	! =======     underweight     ======= !
+	! -----     16 <= bmi < 19      ----- !
+	elseif bs_temp_bs_class <= 105:
+		!	0 <= strenbuf <= 50
+		$result = 'underweight'
+	elseif bs_temp_bs_class <= 107:
+		!	51 <= strenbuf <= 100
+		$result = 'slight'
+	elseif bs_temp_bs_class <= 117:
+		!	101 <= strenbuf <= 200
+		$result = 'wiry'
+
+	! =======       slender       ======= !
+	! -----     19 <= bmi < 21      ----- !
+	elseif bs_temp_bs_class <= 205:
+		!	0 <= strenbuf <= 50
+		$result = 'slender'
+	elseif bs_temp_bs_class <= 207:
+		!	51 <= strenbuf <= 100
+		$result = 'skinny'
+	elseif bs_temp_bs_class <= 217:
+		!	101 <= strenbuf <= 200
+		$result = 'lean'
+
+	! =======       healthy       ======= !
+	! -----     21 <= bmi < 25      ----- !
+	elseif bs_temp_bs_class <= 305:
+		!	0 <= strenbuf <= 50
+		$result = 'healthy'
+	elseif bs_temp_bs_class <= 307:
+	!		51 <= strenbuf <= 100
+		$result = 'toned'
+	elseif bs_temp_bs_class <= 317:
+		!	101 <= strenbuf <= 200
+		$result = 'ripped'
+
+	! =======     overweight      ======= !
+	! -----     26 <= bmi < 30      ----- !
+	elseif bs_temp_bs_class <= 405:
+		!	0 <= strenbuf <= 50
+		$result = 'overweight'
+	elseif bs_temp_bs_class <= 407:
+	!		51 <= strenbuf <= 100
+		$result = 'curvy'
+	elseif bs_temp_bs_class <= 417:
+		!	101 <= strenbuf <= 200
+		$result = 'heavy set'
+
+	! =======  moderately obese   ======= !
+	! -----     30 <= bmi < 35      ----- !
+	elseif bs_temp_bs_class <= 517:
+		!	0 <= strenbuf <= 200
+		$result = 'moderately obese'
+
+	! =======   severely obese    ======= !
+	! -----     35 <= bmi < 40      ----- !
+	elseif bs_temp_bs_class <= 617:
+		!	0 <= strenbuf <= 200
+		$result = 'severely obese'
+
+	! ======= very severely obese ======= !
+	! -----     40 <= bmi < 45      ----- !
+	elseif bs_temp_bs_class <= 717:
+		!	0 <= strenbuf <= 200
+		$result = 'very severely obese'
+
+	! =======   morbidly obese    ======= !
+	! -----     45 <= bmi           ----- !
+	else
+		!	0 <= strenbuf <= 200
+		$result = 'morbidly obese'
+	end
+
+	killvar 'bs_temp_bs_class'
+end
+
+
+--- body_structure ---------------------------------

+ 319 - 404
locations/booty_call_sms.qsrc

@@ -1,47 +1,28 @@
 # booty_call_sms
 
-!!=====   Layout stuff   =====================================================================================!!
-!! Open and close receiving text
-$SMS_open_receiving = '<table width=80%><tr><td collspan=2 bgcolor="#D4CEF9"><font color=black>'
-$SMS_close_receiving = '</font></td><td width=10%></td></tr></table>'
+!=====   Reply example here ==================================================================================!
 
-!! Open and close sending text
-$SMS_open_sending = '<table width=80%><tr><td width=10%></td><td collspan=2 bgcolor=pink><font color=black>'
-$SMS_close_sending = '</font></td></tr></table>'
+!	gs 'SMStext_builder', 'add_reply', [$text], [$location], [$args0], [$args1], [$args2], ...
+!	examples:
+!		gs 'SMStext_builder', 'add_reply', 'No, I do''t want to come over', 'booty_call_sms', 'Choice_a', $ARGS[1], $ARGS[2]
+!		gs 'SMStext_builder', 'add_reply', 'Good luck!', 'band_tour_anushka_SMS', 'Week1', 'Choice_a'
 
-!! Start reply
-$SMS_open_replies = '<table><tr><th> Reply</th></tr><tr><td>'
-$SMS_next_reply = '</td></tr><tr><td>'
-$SMS_close_replies = '</td></tr></table>'
-!!=====   END Layout stuff   =====================================================================================!!
+!=============================================================================================================!
 
 
+!=====   Adding Images to SMS ================================================================================!
 
+!	You can add images at the end of the text by using:
+!		gs 'SMStext_builder', 'add_end_img', [$imagepath]
+!	Up to 4 images can be added this way.
 
-!!=====   Reply example here =================================================================================!!
+!	You can also always add a picture to the text, scaling is an issue though:
+!		gs 'SMStext_builder', 'send_img', [$imagepath], [$alt_text]
+!	alt_text is an optional variable which displays the alternative text if the image does not load.
+!	examples:
+!		gs 'SMStext_builder', 'send_img', 'images/characters/shared/headshots_main/144.jpg', 'Anushka''s Face'
 
-!!  $temp_SMStext += $SMS_open_replies
-!!  	$temp_SMStext += '<a href="exec: gs ''>>Name of the location<<'', ''>>Name of the SMS Branch<<'', ''>>Name of the Choice<<'', telefon[''SMSid'']">' + 'TEXT' + '</a>'
-!!  	$temp_SMStext += $SMS_next_reply
-!!  	$temp_SMStext += '<a href="exec: gs ''>>Name of the location<<'', ''>>Name of the SMS Branch<<'', ''>>Name of the Choice<<'', telefon[''SMSid'']">' + 'TEXT' + '</a>'
-!!  	....
-!!  $temp_SMStext += $SMS_close_replies
-
-!!=====   END Reply example here =================================================================================!!
-
-
-!!=====   Adding Images to SMS ===============================================================================!!
-
-!!    You can add images at the end by manually setting:
-!!    $SMSPicture1[telefon['SMSid']] = Path to picture 1
-!!    $SMSPicture2[telefon['SMSid']] = Path to picture 2
-!!    $SMSPicture3[telefon['SMSid']] = Path to picture 3
-!!    $SMSPicture4[telefon['SMSid']] = Path to picture 4
-
-! You can also always add a picture to the text, scaling is an issue though
-
-
-!!=====   END Adding Images to SMS ===============================================================================!!
+!=============================================================================================================!
 
 
 
@@ -61,41 +42,56 @@ if $ARGS[0] = 'start':
 end
 
 if $ARGS[0] = 'default_booty_call':
-	!! boy
+!!	Structure:
+!!		0: boy
+!!			1: player
+!!				2: boy
+!!					a3: player - 1st reply, choice A
+!!						a4: boy
+!!							aa5: player - 2nd reply, choice A: decline booty call
+!!								aa6: boy
+!!							ab5: player - 2nd reply, choice B: accept booty call
+!!								ab6: boy
+!!					b3: player - 1st reply, choice B
+!!						b4: boy
+!!							ba5: player - 2nd reply, choice A: decline booty call
+!!								ba6: boy
+!!							bb5: player - 2nd reply, choice B: accept booty call
+!!								bb6: boy
+
+
+		!! boy
 	$SMSTree['0'] = dyneval('$result=''hey <<$pcs_nickname>>'' ')
-
-		!! player
+			!! player
 		$SMSTree['1'] = dyneval('$result=''hey <<$npc_nickname[$ARGS[1]]>>'' ')
-
-			!! boy
+				!! boy
 			$SMSTree['2'] = 'ive been thinking about you'
 
-				!! player response 1 option 1
+					!! player response 1 option 1
 				$SMSTree['a3'] = 'what were you thinking about?'
-	
-					!! boy response 1
+						!! boy response 1
 					if npc_finance[$ARGS[1]] = 2 and func('homes_properties_attr', 'get_property_attribute', '$town', $home['current']) ! 'city' and npc_residence[$ARGS[1]] >= 3:
 						$SMSTree['a4'] = 'i booked a hotel room in Pav. why dont you come by?'
 					else
-						if $npc_fav_pos[$ARGS[1]] = 'blowjob' and rand(0,2) = 1:
+						if $npc_fav_pos[$ARGS[1]] = 'blowjob' and rand(0, 2) = 0:
 							$SMSTree['a4'] = 'your mouth around my cock'
 						elseif npc_know_virgin[$ARGS[1]] ! 1:
-							if $npc_cum_pref[$ARGS[1]] = 'creampie' and (npc_condom_conscious[$ARGS[1]] = 0 or npc_bareback[$ARGS[1]] = 1) and rand(0,2) = 1:
+							if $npc_cum_pref[$ARGS[1]] = 'creampie' and (npc_condom_conscious[$ARGS[1]] = 0 or npc_bareback[$ARGS[1]] = 1) and rand(0, 2) = 0:
 								$SMSTree['a4'] = 'your pussy filled with my cum'
-							elseif npc_sex_speed[$ARGS[1]] = 3 and rand(0,2) = 1:
+							elseif npc_sex_speed[$ARGS[1]] = 3 and rand(0, 2) = 0:
 								$SMSTree['a4'] = 'fucking you bowlegged'
-							elseif $npc_cum_pref[$ARGS[1]] = 'facial' and rand(0,2) = 1:
+							elseif $npc_cum_pref[$ARGS[1]] = 'facial' and rand(0, 2) = 0:
 								$SMSTree['a4'] = 'your pretty face covered in my cum'
-							elseif $npc_cum_pref[$ARGS[1]] = 'mouth' and rand(0,2) = 1:
+							elseif $npc_cum_pref[$ARGS[1]] = 'mouth' and rand(0, 2) = 0:
 								$SMSTree['a4'] = 'watching you swallow my cum'
-							elseif $npc_cum_pref[$ARGS[1]] = 'tits' and rand(0,2) = 1:
+							elseif $npc_cum_pref[$ARGS[1]] = 'tits' and rand(0, 2) = 0:
 								$SMSTree['a4'] = 'my cum all over your tits'
-							elseif $npc_fav_pos[$ARGS[1]] = 'doggy' and rand(0,2) = 1:
+							elseif $npc_fav_pos[$ARGS[1]] = 'doggy' and rand(0, 2) = 0:
 								$SMSTree['a4'] = 'pounding you on all fours'
-							elseif $npc_fav_pos[$ARGS[1]] = 'cowgirl' and rand(0,2) = 1:
+							elseif $npc_fav_pos[$ARGS[1]] = 'cowgirl' and rand(0, 2) = 0:
 								$SMSTree['a4'] = 'you riding my cock like crazy'
 							else
-								if rand(0,1) = 1:
+								if rand(0, 1) = 0:
 									$SMSTree['a4'] = 'you naked on my bed'
 								else
 									$SMSTree['a4'] = 'want to come over and have some fun?'
@@ -104,32 +100,58 @@ if $ARGS[0] = 'default_booty_call':
 						end
 					end
 
-				!! player response 1 option 2
+									!! player response 2 option 1
+							if hour < 21:
+								$SMSTree['aa5'] = 'sorry, i cant. i have stuff to do'
+							else
+								$SMSTree['aa5'] = 'its late. text me sooner if you want me to come over.'
+							end
+										!! boy response 2 option 1
+									$SMSTree['aa6'] = 'shit, maybe next time then'
+
+									!! player response 2 option 2
+								$SMSTree['ab5'] = 'ill come right now ;)'
+										!! boy response 2 option 1
+									if npc_humor[$ARGS[1]] <= 1 and rand(0,1) = 0:
+										$SMSTRee['ab6'] = 'im already hard'
+									elseif npc_humor[$ARGS[1]] = 2 and rand(0,1) = 0:
+										if rand(0,1) = 1:
+											$SMSTRee['ab6'] = 'in the street?? damn! keep it in your pants till you get here!'
+										else
+											$SMSTRee['ab6'] = 'as long as you make me cum later'
+										end
+									elseif npc_humor[$ARGS[1]] = 3 and rand(0, 1) = 0:
+										$SMSTRee['ab6'] = 'phrasing'
+									else
+										$SMSTRee['ab6'] = 'cant wait'
+									end
+
+
+					!! player response 1 option 2
 				$SMSTree['b3'] = 'me too'
-
-					!! boy response 2
+						!! boy response 2
 					if npc_finance[$ARGS[1]] = 2 and func('homes_properties_attr', 'get_property_attribute', '$town', $home['current']) ! 'city' and npc_residence[$ARGS[1]] >= 3: 
 						$SMSTree['b4'] = 'i booked a hotel room in Pav. why dont you come by?'
 					else
-						if $npc_fav_pos[$ARGS[1]] = 'blowjob' and rand(0,2) = 1:
+						if $npc_fav_pos[$ARGS[1]] = 'blowjob' and rand(0, 2) = 0:
 							$SMSTree['b4'] = 'i want to feel your mouth around my cock'
 						elseif npc_know_virgin[$ARGS[1]] ! 1:
-							if $npc_cum_pref[$ARGS[1]] = 'creampie' and (npc_condom_conscious[$ARGS[1]] = 0 or npc_bareback[$ARGS[1]] = 1) and rand(0,2) = 1:
+							if $npc_cum_pref[$ARGS[1]] = 'creampie' and (npc_condom_conscious[$ARGS[1]] = 0 or npc_bareback[$ARGS[1]] = 1) and rand(0, 2) = 0:
 								$SMSTree['b4'] = 'i want to pump you full of cum'
-							elseif npc_sex_speed[$ARGS[1]] = 3 and rand(0,2) = 1:
+							elseif npc_sex_speed[$ARGS[1]] = 3 and rand(0, 2) = 0:
 								$SMSTree['b4'] = 'come over i want to hear you screaming my name'
-							elseif $npc_cum_pref[$ARGS[1]] = 'facial' and rand(0,2) = 1:
+							elseif $npc_cum_pref[$ARGS[1]] = 'facial' and rand(0, 2) = 0:
 								$SMSTree['b4'] = 'i want to cum all over your face'
-							elseif $npc_cum_pref[$ARGS[1]] = 'mouth' and rand(0,2) = 1:
+							elseif $npc_cum_pref[$ARGS[1]] = 'mouth' and rand(0, 2) = 0:
 								$SMSTree['b4'] = 'i want to watch you swallow my cum'
-							elseif $npc_cum_pref[$ARGS[1]] = 'tits' and rand(0,2) = 1:
+							elseif $npc_cum_pref[$ARGS[1]] = 'tits' and rand(0, 2) = 0:
 								$SMSTree['b4'] = 'let me glaze your tits with my cum'
-							elseif $npc_fav_pos[$ARGS[1]] = 'doggy' and rand(0,2) = 1:
+							elseif $npc_fav_pos[$ARGS[1]] = 'doggy' and rand(0, 2) = 0:
 								$SMSTree['b4'] = 'i want to pound you on all fours'
-							elseif $npc_fav_pos[$ARGS[1]] = 'cowgirl' and rand(0,2) = 1:
+							elseif $npc_fav_pos[$ARGS[1]] = 'cowgirl' and rand(0, 2) = 0:
 								$SMSTree['b4'] = 'i want you to ride my cock like theres no tomorrow'
 							else
-								if rand(0,1) = 1:
+								if rand(0, 1) = 0:
 									$SMSTree['b4'] = 'lets fuck like bunnies today'
 								else
 									$SMSTree['b4'] = 'come over lets have some fun today'
@@ -138,57 +160,37 @@ if $ARGS[0] = 'default_booty_call':
 						end
 					end
 
-						!! player response 2 option 1
-						if hour < 21:
-							$SMSTree['aa5'] = 'sorry, i cant. i have stuff to do'
-							$SMSTree['ba5'] = $SMSTree['aa5']
-						else
-							$SMSTree['aa5'] = 'its late. text me sooner if you want me to come over.'
+								!! player response 2 option 1
 							$SMSTree['ba5'] = $SMSTree['aa5']
-						end
-
-							!! boy response 2 option 1
-							$SMSTree['aa6'] = 'shit, maybe next time then'
-							$SMSTree['ba6'] = $SMSTree['aa6']
-
-
-						!! player response 2 option 2
-						$SMSTree['ab5'] = 'ill come right now ;)'
-						$SMSTree['bb5'] = $SMSTree['ab5']
-
-							!! boy response 2 option 2
-							if npc_humor[$ARGS[1]] <= 1 and rand(0,1) = 1:
-								$SMSTRee['ab6'] = 'im already hard'
+									!! boy response 2 option 1
+								$SMSTree['ba6'] = $SMSTree['aa6']
+								!! player response 2 option 2
+							$SMSTree['bb5'] = $SMSTree['ab5']
+									!! boy response 2 option 2
 								$SMSTree['bb6'] = $SMSTree['ab6']
-							elseif npc_humor[$ARGS[1]] = 2 and rand(0,1) = 1:
-								if rand(0,1) = 1:
-									$SMSTRee['ab6'] = 'in the street?? damn! keep it in your pants till you get here!'
-									$SMSTree['bb6'] = $SMSTree['ab6']
-								else
-									$SMSTRee['ab6'] = 'as long as you make me cum later'
-									$SMSTree['bb6'] = $SMSTree['ab6']
-								end
-							elseif npc_humor[$ARGS[1]] = 3 and rand(0,1) = 1:
-								$SMSTRee['ab6'] = 'phrasing'
-								$SMSTree['bb6'] = $SMSTree['a66']
-							else
-								$SMSTRee['ab6'] = 'cant wait'
-								$SMSTree['bb6'] = $SMSTree['ab6']
-							end
 end
 
 
 if $ARGS[0] = 'pre_planned_booty_call':
-	! boy
-	$SMSTree['0'] = dyneval('$result=''hey <<$pcs_nickname>>, you coming over?'' ')
-
-		! player choice 1 option 1
+!!	Structure:
+!!		0: boy
+!!			a1: player - 1st reply, choice A: cancel booty call
+!!			b1: player - 1st reply, choice B
+!!				b2: boy
+!!					ba3: player - 2nd reply, choice A: cancel booty call
+!!						ba4: boy
+!!					bb3: player - 2nd reply, choice B: confirm booty call
+!!						bb4: boy
+
+
+		!! boy
+	$SMSTree['0'] = 'hey <<$pcs_nickname>>, you coming over?'
+			!! player choice 1 option 1
 		$SMSTree['a1'] = 'sorry, something came up'
-
-		! player choice 1 option 2
+			!! player choice 1 option 2
 		$SMSTree['b1'] = 'on my way now'
 
-			! boy
+				! boy
 			temp_rand = rand(0, 2)
 			if temp_rand = 0:
 				$SMSTree['b2'] = 'come over to my place lets fuck like bunnies'
@@ -201,7 +203,6 @@ if $ARGS[0] = 'pre_planned_booty_call':
 
 				! player choice 2 option 1
 				$SMSTree['ba3'] = 'sorry, i cant. i have stuff to do'
-
 					! boy
 					$SMSTree['ba4'] = 'shit, maybe next time then'
 
@@ -229,130 +230,143 @@ end
 
 
 if $ARGS[0] = 'std_free':
-	!! boy
-	$SMSTree['0'] = dyneval('$result=''hey <<$pcs_nickname>>'' ')
-	
-		!! player
-		$SMSTree['1'] = dyneval('$result=''hey <<$npc_nickname[$ARGS[1]]>>'' ')
-	
-			!! boy
+!!	Structure:
+!!		0: boy
+!!			1: player
+!!				2: boy
+!!					a3: player - 1st reply, choice A
+!!						a4: boy
+!!							aa5: player - 2nd reply, choice A: decline booty call
+!!								aa6: boy
+!!							ab5: player - 2nd reply, choice B: accept booty call
+!!								ab6: boy
+!!					b3: player - 1st reply, choice B
+!!						b4: boy
+!!							ba5: player - 2nd reply, choice A: decline booty call
+!!								ba6: boy
+!!							bb5: player - 2nd reply, choice B: accept booty call
+!!								bb6: boy
+
+		!! boy
+	$SMSTree['0'] = 'hey <<$pcs_nickname>>'
+			!! player
+		$SMSTree['1'] = 'hey <<$npc_nickname[$ARGS[1]]>>'
+				!! boy
 			$SMSTree['2'] = 'got some good news'
-	
-				!! player response 1 option 1
+					!! player response 1 option 1
 				$SMSTree['a3'] = 'oh?'
-	
-					!! boy response 1
+						!! boy response 1
 					$SMSTree['a4'] = 'my std test came back clean. why dont we celebrate tog'
-	
-				!! player response 1 option 2
-				$SMSTree['b3'] = 'what is it?'
-	
-					!! boy response 2
-					$SMSTree['b4'] = 'my std test came back clean'
-
-
-						!! player response 2 option 1
+							!! player response 2 option 1
 						if hour < 21:
 							$SMSTree['aa5'] = 'sorry, i cant. i have stuff to do'
-							$SMSTree['ba5'] = $SMSTree['aa5']
 						else
 							$SMSTree['aa5'] = 'its late. text me sooner if you want me to come over.'
-							$SMSTree['ba5'] = $SMSTree['aa5']
 						end
-	
-							!! boy response 2 option 1
-							$SMSTree['aa6'] = 'shit, maybe next time then'
-							$SMSTree['ba6'] = $SMSTree['aa6']
-	
-						!! player response 2 option 2
+									!! boy response 2 option 1
+								$SMSTree['aa6'] = 'shit, maybe next time then'
+
+							!! player response 2 option 2
 						$SMSTree['ab5'] = 'ill come right now ;)'
-						$SMSTree['bb5'] = $SMSTree['ab5']
-	
-							!! boy response 2 option 2
-							if npc_humor[$ARGS[1]] <= 1 and rand(0,1) = 1:
+								!! boy response 2 option 2
+							if npc_humor[$ARGS[1]] <= 1 and rand(0, 1) = 0:
 								$SMSTree['ab6'] = 'im already hard'
-								$SMSTree['bb6'] = $SMSTree['ab6']
-							elseif npc_humor[$ARGS[1]] = 2 and rand(0,1) = 1:
-								if rand(0,1) = 1:
+							elseif npc_humor[$ARGS[1]] = 2 and rand(0, 1) = 0:
+								if rand(0, 1) = 0:
 									$SMSTree['ab6'] = 'in the street?? damn! keep it in your pants till you get here!'
-									$SMSTree['bb6'] = $SMSTree['ab6']
 								else
 									$SMSTree['ab6'] = 'as long as you make me cum later'
-									$SMSTree['bb6'] = $SMSTree['ab6']
 								end
-							elseif npc_humor[$ARGS[1]] = 3 and rand(0,1) = 1:
+							elseif npc_humor[$ARGS[1]] = 3 and rand(0, 1) = 0:
 								$SMSTree['ab6'] = 'phrasing'
-								$SMSTree['bb6'] = $SMSTree['ab6']
 							else
 								$SMSTree['ab6'] = 'cant wait'
-								$SMSTree['bb6'] = $SMSTree['ab6']
 							end
+
+					!! player response 1 option 2
+				$SMSTree['b3'] = 'what is it?'
+						!! boy response 2
+					$SMSTree['b4'] = 'my std test came back clean'
+							!! player response 2 option 1
+						$SMSTree['ba5'] = $SMSTree['aa5']
+								!! boy response 2 option 1
+							$SMSTree['ba6'] = $SMSTree['aa6']
+							!! player response 2 option 2
+						$SMSTree['bb5'] = $SMSTree['ab5']
+								!! boy response 2 option 2
+							$SMSTree['bb6'] = $SMSTree['ab6']
+
+
 end
 
 
-if $ARGS[0] = 'sugar_daddy_booty_call':	
-	!! boy
-	$SMSTree['0'] = dyneval('$result=''hey <<$pcs_nickname>>'' ')
-		
-		!! player
-		$SMSTree['1'] = dyneval('$result=''hey <<$npc_nickname[$ARGS[1]]>>'' ')
-	
-			!! boy
+if $ARGS[0] = 'sugar_daddy_booty_call':
+!!	Structure:
+!!		0: boy
+!!			1: player
+!!				2: boy
+!!					a3: player - 1st reply, choice A
+!!						a4: boy
+!!							aa5: player - 2nd reply, choice A: decline booty call
+!!								aa6: boy
+!!							ab5: player - 2nd reply, choice B: accept booty call
+!!								ab6: boy
+!!					b3: player - 1st reply, choice B
+!!						b4: boy
+!!							ba5: player - 2nd reply, choice A: decline booty call
+!!								ba6: boy
+!!							bb5: player - 2nd reply, choice B: accept booty call
+!!								bb6: boy
+
+		!! boy
+	$SMSTree['0'] = 'hey <<$pcs_nickname>>'
+			!! player
+		$SMSTree['1'] = 'hey <<$npc_nickname[$ARGS[1]]>>'
+				!! boy
 			$SMSTree['2'] = 'ive been thinking about you'
-	
-				!! player response 1 option 1
+					!! player 1st reply, choice A
 				$SMSTree['a3'] = 'what were you thinking about?'
-
-
-				!! player response 1 option 2
-				$SMSTree['b3'] = 'me too'
 	
-					!! boy response 1 option 1
+						!! boy response to 1st reply, choice A
 					if ($home['current'] ! 'city_apartment' and $home['current'] ! 'niko_apartment' and $home['current'] ! 'university_dorm' and $home['current'] ! 'city_house' and $home['current'] ! 'maid_bedroom') and npc_residence[$ARGS[1]] >= 3:
 						$SMSTree['a4'] = 'i booked a hotel room in Pav. why dont you come by?'
-						$SMSTree['b4'] = $SMSTree['a4']
 					else
 						$SMSTree['a4'] = 'i want to see you. why dont you come by my apartment?'
-						$SMSTree['b4'] = $SMSTree['a4']
 					end
-
-						!! player response 2 option 1
+							!! player 2nd reply, choice A
 						if hour < 21:
 							$SMSTree['aa5'] = 'sorry, i cant. i have stuff to do'
-							$SMSTree['ba5'] = $SMSTree['aa5']
 						else
 							$SMSTree['aa5'] = 'its late. text me sooner if you want me to come over.'
-							$SMSTree['ba5'] = $SMSTree['aa5']
 						end
-
-							!! boy response 2 option 1
+								!! boy response to 2nd reply, choice A
 							$SMSTRee['aa6'] = 'damn scheduling conflicts'
-							$SMSTree['ba6'] = $SMSTree['aa6']
-
 
-						!! player response 2 option 2
+							!! player 2nd reply, choice B
 						$SMSTree['ab5'] = 'ill come right now ;)'
-						$SMSTree['bb5'] = $SMSTree['ab5']
-							
-							!! boy response 2 option 2
+								!! boy response to 2nd reply, choice B
 							if ($home['current'] = 'parents_home' or $home['current'] = 'meynold_household' or $home['current'] = 'shared_apartment') and npc_residence[$ARGS[1]] >= 3:
 								$SMSTree['ab6'] = 'room <<rand(1,3)>><<rand(10,19)>>'
-								$SMSTree['bb6'] = $SMSTree['ab6']
 							else
 								if npc_humor[$ARGS[1]] <= 1 and rand(0,1) = 1:
 									$SMSTree['ab6'] = 'im already hard'
-									$SMSTree['bb6'] = $SMSTree['ab6']
 								elseif npc_humor[$ARGS[1]] = 2 and rand(0,1) = 1:
 									$SMSTree['ab6'] = 'as long as you make me cum later'
-									$SMSTree['bb6'] = $SMSTree['ab6']
 								elseif npc_humor[$ARGS[1]] = 3 and rand(0,1) = 1:
 									$SMSTree['ab6'] = 'phrasing'
-									$SMSTree['bb6'] = $SMSTree['ab6']
 								else
 									$SMSTree['ab6'] = 'cant wait'
-									$SMSTree['bb6'] = $SMSTree['ab6']
 								end
 							end
+
+					!! player 1st Reply, choice B
+				$SMSTree['b3'] = 'me too'
+					$SMSTree['b4'] = $SMSTree['a4']
+						$SMSTree['ba5'] = $SMSTree['aa5']
+							$SMSTree['ba6'] = $SMSTree['aa6']
+						$SMSTree['bb5'] = $SMSTree['ab5']
+							$SMSTree['bb6'] = $SMSTree['ab6']
+
 end
 
 
@@ -360,315 +374,216 @@ end
 if $ARGS[0] = 'Add SMS':
 	gs 'booty_call_sms', $ARGS[1], $ARGS[2]
 
-	$temp_SMStext += $SMS_open_receiving + $SMSTree['0'] + $SMS_close_receiving
-	$temp_SMStext += $SMS_open_replies
-		$temp_SMStext += '<a href="exec: gs ''booty_call_sms'', ''SMS_Base'', ''<<$ARGS[1]>>'', ''<<$ARGS[2]>>'', telefon[''SMSid'']">' + $SMSTree['1'] + '</a>'
-	$temp_SMStext += $SMS_close_replies
-
-	gs 'telefon', 'add_sms', $ARGS[2], $temp_SMStext
+	gs 'SMStext_builder', 'start'
+		gs 'SMStext_builder', 'receive', $SMSTree['0']
+		gs 'SMStext_builder', 'add_reply', $SMSTree['1'], 'booty_call_sms', 'SMS_Base', $ARGS[1], $ARGS[2]
+		gs 'SMStext_builder', 'add_sms', $ARGS[2]
+	gs 'SMStext_builder', 'end'
 end
 
 
 if $ARGS[0] = 'SMS_Base':
-!if $ARGS[0] = 'V0':
 	gs 'booty_call_sms', $ARGS[1], $ARGS[2]
-
-	$temp_SMStext  = $SMS_open_receiving + $SMSTree['0'] + $SMS_close_receiving
-	$temp_SMStext += $SMS_open_sending + $SMSTree['1'] + $SMS_close_sending
-	$SMSMessage[ARGS[3]] = $temp_SMStext
-
-	gs 'telefon', 'show_sms', ARGS[3]
-	wait 500
-
-	$temp_SMStext += $SMS_open_receiving + $SMSTree['2'] + $SMS_close_receiving
-	$temp_SMStext += $SMS_open_replies
-		$temp_SMStext += '<a href="exec: gs ''booty_call_sms'', ''Choice_a'', ''<<$ARGS[1]>>'', ''<<$ARGS[2]>>'', telefon[''SMSid'']">' + $SMSTree['a3'] + '</a>'
-		$temp_SMStext += $SMS_next_reply
-		$temp_SMStext += '<a href="exec: gs ''booty_call_sms'', ''Choice_b'', ''<<$ARGS[1]>>'', ''<<$ARGS[2]>>'', telefon[''SMSid'']">' + $SMSTree['b3'] + '</a>'
-	$temp_SMStext += $SMS_close_replies
-
-	$SMSMessage[ARGS[3]] = $temp_SMStext
-	gs 'telefon', 'show_sms', ARGS[3]
+	gs 'SMStext_builder', 'start'
+		gs 'SMStext_builder', 'send', $SMSTree['1']
+		gs 'SMStext_builder', 'show_sms', ARGS[3]
+		wait 500
+
+		gs 'SMStext_builder', 'receive', $SMSTree['2']
+		gs 'SMStext_builder', 'add_reply', $SMSTree['a3'], 'booty_call_sms', 'Choice_a', $ARGS[1], $ARGS[2]
+		gs 'SMStext_builder', 'add_reply', $SMSTree['b3'], 'booty_call_sms', 'Choice_b', $ARGS[1], $ARGS[2]
+		gs 'SMStext_builder', 'show_sms', ARGS[3]
+	gs 'SMStext_builder', 'end'
 end
 
 
 if $ARGS[0] = 'Choice_a':
 	gs 'booty_call_sms', $ARGS[1], $ARGS[2]
+	gs 'SMStext_builder', 'start'
+		gs 'SMStext_builder', 'send', $SMSTree['a3']
+		gs 'SMStext_builder', 'show_sms', ARGS[3]
+		wait 500
 
-	$temp_SMStext  = $SMS_open_receiving + $SMSTree['0'] + $SMS_close_receiving
-	$temp_SMStext += $SMS_open_sending + $SMSTree['1'] + $SMS_close_sending
-	$temp_SMStext += $SMS_open_receiving + $SMSTree['2'] + $SMS_close_receiving
-	$temp_SMStext += $SMS_open_sending + $SMSTree['a3'] + $SMS_close_sending
-	$SMSMessage[ARGS[3]] = $temp_SMStext
-
-	gs 'telefon', 'show_sms', ARGS[3]
-	wait 500
+		gs 'SMStext_builder', 'receive', $SMSTree['a4']
+		gs 'SMStext_builder', 'add_reply', $SMSTree['aa5'], 'booty_call_sms', 'Choice_aa', $ARGS[1], $ARGS[2]
+		gs 'SMStext_builder', 'add_reply', $SMSTree['ab5'], 'booty_call_sms', 'Choice_ab', $ARGS[1], $ARGS[2]
+		gs 'SMStext_builder', 'show_sms', ARGS[3]
+	gs 'SMStext_builder', 'end'
 
-	$temp_SMStext += $SMS_open_receiving + $SMSTree['a4'] + $SMS_close_receiving
-	$temp_SMStext += $SMS_open_replies
-		$temp_SMStext += '<a href="exec: gs ''booty_call_sms'', ''Choice_aa'', ''<<$ARGS[1]>>'', ''<<$ARGS[2]>>'', telefon[''SMSid'']">' + $SMSTree['aa5'] + '</a>'
-		$temp_SMStext += $SMS_next_reply
-		$temp_SMStext += '<a href="exec: gs ''booty_call_sms'', ''Choice_ab'', ''<<$ARGS[1]>>'', ''<<$ARGS[2]>>'', telefon[''SMSid'']">' + $SMSTree['ab5'] + '</a>'
-	$temp_SMStext += $SMS_close_replies
-	$SMSMessage[ARGS[3]] = $temp_SMStext
 
-	gs 'telefon', 'show_sms', ARGS[3]
-end
-
-if $ARGS[0] = 'Choice_aa':
+elseif $ARGS[0] = 'Choice_aa':
 	!! booty call is declined
-	
-	gs 'booty_call_sms', $ARGS[1], $ARGS[2]
-
-	$temp_SMStext  = $SMS_open_receiving + $SMSTree['0'] + $SMS_close_receiving
-	$temp_SMStext += $SMS_open_sending + $SMSTree['1'] + $SMS_close_sending
-	$temp_SMStext += $SMS_open_receiving + $SMSTree['2'] + $SMS_close_receiving
-	$temp_SMStext += $SMS_open_sending + $SMSTree['a3'] + $SMS_close_sending
-	$temp_SMStext += $SMS_open_receiving + $SMSTree['a4'] + $SMS_close_receiving
-	$temp_SMStext += $SMS_open_sending + $SMSTree['aa5'] + $SMS_close_sending
-	$SMSMessage[ARGS[3]] = $temp_SMStext
 
-	gs 'telefon', 'show_sms', ARGS[3]
-
-	if sugar_daddy_call[$ARGS[2]] = 1:
-		npc_rel[$ARGS[2]] -= 2
-		sugar_daddy_call[$ARGS[2]] = 0
-	end
-
-	wait 500
+	gs 'booty_call_sms', $ARGS[1], $ARGS[2]
+	gs 'SMStext_builder', 'start'
+		gs 'SMStext_builder', 'send', $SMSTree['aa5']
+		gs 'SMStext_builder', 'show_sms', ARGS[3]
+		wait 500
 
-	$temp_SMStext += $SMS_open_receiving + $SMSTree['aa6'] + $SMS_close_receiving
-	$SMSMessage[ARGS[3]] = $temp_SMStext
+		gs 'SMStext_builder', 'receive', $SMSTree['aa6']
+		gs 'SMStext_builder', 'show_sms', ARGS[3]
+	gs 'SMStext_builder', 'end'
 
-	gs 'telefon', 'show_sms', ARGS[3]
-end
+	gs 'booty_call_sms', 'decline_booty_call', $ARGS[2]
 
-if $ARGS[0] = 'Choice_ab':
+elseif $ARGS[0] = 'Choice_ab':
 	!! booty call is accepted
 
 	gs 'booty_call_sms', $ARGS[1], $ARGS[2]
+	gs 'SMStext_builder', 'start'
+		gs 'SMStext_builder', 'send', $SMSTree['ab5']
+		gs 'SMStext_builder', 'show_sms', ARGS[3]
 
-	$temp_SMStext  = $SMS_open_receiving + $SMSTree['0'] + $SMS_close_receiving
-	$temp_SMStext += $SMS_open_sending + $SMSTree['1'] + $SMS_close_sending
-	$temp_SMStext += $SMS_open_receiving + $SMSTree['2'] + $SMS_close_receiving
-	$temp_SMStext += $SMS_open_sending + $SMSTree['a3'] + $SMS_close_sending
-	$temp_SMStext += $SMS_open_receiving + $SMSTree['a4'] + $SMS_close_receiving
-	$temp_SMStext += $SMS_open_sending + $SMSTree['ab5'] + $SMS_close_sending
-	$SMSMessage[ARGS[3]] = $temp_SMStext
-
-	gs 'telefon', 'show_sms', ARGS[3]
-	wait 500
+		wait 500
 
-	$temp_SMStext += $SMS_open_receiving + $SMSTree['ab6'] + $SMS_close_receiving
-	$SMSMessage[ARGS[3]] = $temp_SMStext
+		gs 'SMStext_builder', 'receive', $SMSTree['ab6']
+		gs 'SMStext_builder', 'show_sms', ARGS[3]
+	gs 'SMStext_builder', 'end'
 
-	gs 'telefon', 'show_sms', ARGS[3]
-
-	booty_call_invite[$ARGS[2]] = daystart
-	if npc_finance[$ARGS[2]] = 2 and func('homes_properties_attr', 'get_property_attribute', '$town', $home['current']) ! 'city' and npc_residence[$ARGS[2]] >= 3:
-		$booty_call_hotel[$ARGS[2]] = 'pav'
-	else
-		$booty_call_hotel[$ARGS[2]] = 'city'
-	end
+	gs 'booty_call_sms', 'accept_booty_call', $ARGS[2]
 end
 
 
 
-
 if $ARGS[0] = 'Choice_b':
 	gs 'booty_call_sms', $ARGS[1], $ARGS[2]
+	gs 'SMStext_builder', 'start'
+		gs 'SMStext_builder', 'send', $SMSTree['b3']
+		gs 'SMStext_builder', 'show_sms', ARGS[3]
+		wait 500
 
-	$temp_SMStext  = $SMS_open_receiving + $SMSTree['0'] + $SMS_close_receiving
-	$temp_SMStext += $SMS_open_sending + $SMSTree['1'] + $SMS_close_sending
-	$temp_SMStext += $SMS_open_receiving + $SMSTree['2'] + $SMS_close_receiving
-	$temp_SMStext += $SMS_open_sending + $SMSTree['b3'] + $SMS_close_sending
-	$SMSMessage[ARGS[3]] = $temp_SMStext
+		gs 'SMStext_builder', 'receive', $SMSTree['b4']
+		gs 'SMStext_builder', 'add_reply', $SMSTree['ba5'], 'booty_call_sms', 'Choice_ba', $ARGS[1], $ARGS[2]
+		gs 'SMStext_builder', 'add_reply', $SMSTree['bb5'], 'booty_call_sms', 'Choice_bb', $ARGS[1], $ARGS[2]
+		gs 'SMStext_builder', 'show_sms', ARGS[3]
+	gs 'SMStext_builder', 'end'
 
-	gs 'telefon', 'show_sms', ARGS[3]
-	wait 500
 
-	$temp_SMStext += $SMS_open_receiving + $SMSTree['b4'] + $SMS_close_receiving
-	$temp_SMStext += $SMS_open_replies
-		$temp_SMStext += '<a href="exec: gs ''booty_call_sms'', ''Choice_ba'', ''<<$ARGS[1]>>'', ''<<$ARGS[2]>>'', telefon[''SMSid'']">' + $SMSTree['ba5'] + '</a>'
-		$temp_SMStext += $SMS_next_reply
-		$temp_SMStext += '<a href="exec: gs ''booty_call_sms'', ''Choice_bb'', ''<<$ARGS[1]>>'', ''<<$ARGS[2]>>'', telefon[''SMSid'']">' + $SMSTree['bb5'] + '</a>'
-	$temp_SMStext += $SMS_close_replies
-	$SMSMessage[ARGS[3]] = $temp_SMStext
-
-	gs 'telefon', 'show_sms', ARGS[3]
-end
-
-
-
-if $ARGS[0] = 'Choice_ba':
+elseif $ARGS[0] = 'Choice_ba':
 	!! booty call is declined
 
 	gs 'booty_call_sms', $ARGS[1], $ARGS[2]
+	gs 'SMStext_builder', 'start'
+		gs 'SMStext_builder', 'send', $SMSTree['ba5']
+		gs 'SMStext_builder', 'show_sms', ARGS[3]
+		wait 500
 
-	$temp_SMStext  = $SMS_open_receiving + $SMSTree['0'] + $SMS_close_receiving
-	$temp_SMStext += $SMS_open_sending + $SMSTree['1'] + $SMS_close_sending
-	$temp_SMStext += $SMS_open_receiving + $SMSTree['2'] + $SMS_close_receiving
-	$temp_SMStext += $SMS_open_sending + $SMSTree['b3'] + $SMS_close_sending
-	$temp_SMStext += $SMS_open_receiving + $SMSTree['b4'] + $SMS_close_receiving
-	$temp_SMStext += $SMS_open_sending + $SMSTree['ba5'] + $SMS_close_sending
-	$SMSMessage[ARGS[3]] = $temp_SMStext
-
-	gs 'telefon', 'show_sms', ARGS[3]
-	if sugar_daddy_call[$ARGS[2]] = 1:
-		npc_rel[$ARGS[2]] -= 2
-		sugar_daddy_call[$ARGS[2]] = 0
-	end
-	wait 500
-
+		gs 'SMStext_builder', 'receive', $SMSTree['ba6']
+		gs 'SMStext_builder', 'show_sms', ARGS[3]
+	gs 'SMStext_builder', 'end'
 
-	$temp_SMStext += $SMS_open_receiving + $SMSTree['ba6'] + $SMS_close_receiving
-	$SMSMessage[ARGS[3]] = $temp_SMStext
-
-	gs 'telefon', 'show_sms', ARGS[3]
-end
+	gs 'booty_call_sms', 'decline_booty_call', $ARGS[2]
 
-if $ARGS[0] = 'Choice_bb':
+elseif $ARGS[0] = 'Choice_bb':
 	!! booty call is accepted
 
 	gs 'booty_call_sms', $ARGS[1], $ARGS[2]
+	gs 'SMStext_builder', 'start'
+		gs 'SMStext_builder', 'send', $SMSTree['bb5']
+		gs 'SMStext_builder', 'show_sms', ARGS[3]
+		wait 500
 
-	$temp_SMStext  = $SMS_open_receiving + $SMSTree['0'] + $SMS_close_receiving
-	$temp_SMStext += $SMS_open_sending + $SMSTree['1'] + $SMS_close_sending
-	$temp_SMStext += $SMS_open_receiving + $SMSTree['2'] + $SMS_close_receiving
-	$temp_SMStext += $SMS_open_sending + $SMSTree['b3'] + $SMS_close_sending
-	$temp_SMStext += $SMS_open_receiving + $SMSTree['b4'] + $SMS_close_receiving
-	$temp_SMStext += $SMS_open_sending + $SMSTree['bb5'] + $SMS_close_sending
-	$SMSMessage[ARGS[3]] = $temp_SMStext
+		gs 'SMStext_builder', 'receive', $SMSTree['bb6']
+		gs 'SMStext_builder', 'show_sms', ARGS[3]
+	gs 'SMStext_builder', 'end'
 
-	gs 'telefon', 'show_sms', ARGS[3]
-	wait 500
-	
-	$temp_SMStext += $SMS_open_receiving + $SMSTree['bb6'] + $SMS_close_receiving
-	$SMSMessage[ARGS[3]] = $temp_SMStext
-
-
-	gs 'telefon', 'show_sms', ARGS[3]
-	booty_call_invite[$ARGS[2]] = daystart
-!!	if ($home['current'] = 'parents_home' or $home['current'] = 'meynold_household' or $home['current'] = 'shared_apartment') and npc_residence[$SMSContact[ARGS[1]]] >= 3: 
-	if npc_finance[$ARGS[2]] = 2 and func('homes_properties_attr', 'get_property_attribute', '$town', $home['current']) ! 'city' and npc_residence[$ARGS[2]] >= 3:
-		$booty_call_hotel[$ARGS[2]] = 'pav'
-	else
-		$booty_call_hotel[$ARGS[2]] = 'city'
-	end
+	gs 'booty_call_sms', 'accept_booty_call', $ARGS[2]
 end
 
 
 
 
-
 ! For pre-planned
 if $ARGS[0] = 'Add SMS2':
 	gs 'booty_call_sms', $ARGS[1], $ARGS[2]
-
-	$temp_SMStext += $SMS_open_receiving + $SMSTree['0'] + $SMS_close_receiving
-	$temp_SMStext += $SMS_open_replies
-		$temp_SMStext += '<a href="exec: gs ''booty_call_sms'', ''Choice2_a'', ''<<$ARGS[1]>>'', ''<<$ARGS[2]>>'', telefon[''SMSid'']">' + $SMSTree['a1'] + '</a>'
-		$temp_SMStext += $SMS_next_reply
-		$temp_SMStext += '<a href="exec: gs ''booty_call_sms'', ''Choice2_b'', ''<<$ARGS[1]>>'', ''<<$ARGS[2]>>'', telefon[''SMSid'']">' + $SMSTree['b1'] + '</a>'
-	$temp_SMStext += $SMS_close_replies
-
-	gs 'telefon', 'add_sms', $ARGS[2], $temp_SMStext
+	gs 'SMStext_builder', 'start'
+		gs 'SMStext_builder', 'receive', $SMSTree['0']
+		gs 'SMStext_builder', 'add_reply', $SMSTree['a1'], 'booty_call_sms', 'Choice2_a', $ARGS[1], $ARGS[2]
+		gs 'SMStext_builder', 'add_reply', $SMSTree['b1'], 'booty_call_sms', 'Choice2_b', $ARGS[1], $ARGS[2]
+		gs 'SMStext_builder', 'add_sms', $ARGS[2]
+	gs 'SMStext_builder', 'end'
 end
 
 
 if $ARGS[0] = 'Choice2_a':
 	gs 'booty_call_sms', $ARGS[1], $ARGS[2]
-
-	$temp_SMStext  = $SMS_open_receiving + $SMSTree['0'] + $SMS_close_receiving
-	$temp_SMStext += $SMS_open_sending + $SMSTree['a1'] + $SMS_close_sending
-	$SMSMessage[ARGS[3]] = $temp_SMStext
-
-	gs 'telefon', 'show_sms', ARGS[3]
+	gs 'SMStext_builder', 'start'
+		gs 'SMStext_builder', 'send', $SMSTree['a1']
+		gs 'SMStext_builder', 'show_sms', ARGS[3]
+	gs 'SMStext_builder', 'end'
 end
 
 
 
 if $ARGS[0] = 'Choice2_b':
 	gs 'booty_call_sms', $ARGS[1], $ARGS[2]
+	gs 'SMStext_builder', 'start'
+		gs 'SMStext_builder', 'send', $SMSTree['b1']
+		gs 'SMStext_builder', 'show_sms', ARGS[3]
+		wait 500
 
-	$temp_SMStext  = $SMS_open_receiving + $SMSTree['0'] + $SMS_close_receiving
-	$temp_SMStext += $SMS_open_sending + $SMSTree['b1'] + $SMS_close_sending
-	$SMSMessage[ARGS[3]] = $temp_SMStext
+		gs 'SMStext_builder', 'receive', $SMSTree['b2']
+		gs 'SMStext_builder', 'add_reply', $SMSTree['ba3'], 'booty_call_sms', 'Choice2_ba', $ARGS[1], $ARGS[2]
+		gs 'SMStext_builder', 'add_reply', $SMSTree['bb3'], 'booty_call_sms', 'Choice2_bb', $ARGS[1], $ARGS[2]
+		gs 'SMStext_builder', 'show_sms', ARGS[3]
+	gs 'SMStext_builder', 'end'
 
-	gs 'telefon', 'show_sms', ARGS[3]
-	wait 500
 
-	$temp_SMStext += $SMS_open_receiving + $SMSTree['b2'] + $SMS_close_receiving
-	$temp_SMStext += $SMS_open_replies
-		$temp_SMStext += '<a href="exec: gs ''booty_call_sms'', ''Choice2_ba'', ''<<$ARGS[1]>>'', ''<<$ARGS[2]>>'', telefon[''SMSid'']">' + $SMSTree['ba3'] + '</a>'
-		$temp_SMStext += $SMS_next_reply
-		$temp_SMStext += '<a href="exec: gs ''booty_call_sms'', ''Choice2_bb'', ''<<$ARGS[1]>>'', ''<<$ARGS[2]>>'', telefon[''SMSid'']">' + $SMSTree['bb3'] + '</a>'
-	$temp_SMStext += $SMS_close_replies
-	$SMSMessage[ARGS[3]] = $temp_SMStext
+elseif $ARGS[0] = 'Choice2_ba':
+	!! booty call is declined
 
-	gs 'telefon', 'show_sms', ARGS[3]
-end
+	gs 'booty_call_sms', $ARGS[1], $ARGS[2]
+	gs 'SMStext_builder', 'start'
+		gs 'SMStext_builder', 'send', $SMSTree['ba3']
+		gs 'SMStext_builder', 'show_sms', ARGS[3]
+		wait 500
 
+		gs 'SMStext_builder', 'receive', $SMSTree['ba4']
+		gs 'SMStext_builder', 'show_sms', ARGS[3]
+	gs 'SMStext_builder', 'end'
 
+	gs 'booty_call_sms', 'decline_booty_call', $ARGS[2]
 
-if $ARGS[0] = 'Choice2_ba':
-	!! booty call is declined
+elseif $ARGS[0] = 'Choice2_bb':
+	!! booty call is accepted
 
 	gs 'booty_call_sms', $ARGS[1], $ARGS[2]
 
-	$temp_SMStext  = $SMS_open_receiving + $SMSTree['0'] + $SMS_close_receiving
-	$temp_SMStext += $SMS_open_sending + $SMSTree['b1'] + $SMS_close_sending
-	$temp_SMStext += $SMS_open_receiving + $SMSTree['b2'] + $SMS_close_receiving
-	$temp_SMStext += $SMS_open_sending + $SMSTree['ba3'] + $SMS_close_sending
-	$SMSMessage[ARGS[3]] = $temp_SMStext
-
-	gs 'telefon', 'show_sms', ARGS[3]
-	if sugar_daddy_call[$ARGS[2]] = 1:
-		npc_rel[$ARGS[2]] -= 2
-		sugar_daddy_call[$ARGS[2]] = 0
-	end
-	wait 500
+	gs 'SMStext_builder', 'start'
+		gs 'SMStext_builder', 'send', $SMSTree['bb3']
+		gs 'SMStext_builder', 'show_sms', ARGS[3]
+		wait 500
 
+		gs 'SMStext_builder', 'receive', $SMSTree['bb4']
+		gs 'SMStext_builder', 'show_sms', ARGS[3]
+	gs 'SMStext_builder', 'end'
 
-	$temp_SMStext += $SMS_open_receiving + $SMSTree['ba4'] + $SMS_close_receiving
-	$SMSMessage[ARGS[3]] = $temp_SMStext
-
-	gs 'telefon', 'show_sms', ARGS[3]
+	gs 'booty_call_sms', 'accept_booty_call', $ARGS[2]
 end
 
-if $ARGS[0] = 'Choice2_bb':
-	!! booty call is accepted
 
-	gs 'booty_call_sms', $ARGS[1], $ARGS[2]
-	$temp_SMStext  = $SMS_open_receiving + $SMSTree['0'] + $SMS_close_receiving
-	$temp_SMStext += $SMS_open_sending + $SMSTree['b1'] + $SMS_close_sending
-	$temp_SMStext += $SMS_open_receiving + $SMSTree['b2'] + $SMS_close_receiving
-	$temp_SMStext += $SMS_open_sending + $SMSTree['bb3'] + $SMS_close_sending
-	$SMSMessage[ARGS[3]] = $temp_SMStext
-
-	gs 'telefon', 'show_sms', ARGS[3]
-	wait 500
-	
-	$temp_SMStext += $SMS_open_receiving + $SMSTree['bb4'] + $SMS_close_receiving
-	$SMSMessage[ARGS[3]] = $temp_SMStext
 
 
-	gs 'telefon', 'show_sms', ARGS[3]
-	booty_call_invite[$ARGS[2]] = daystart
-!!	if ($home['current'] = 'parents_home' or $home['current'] = 'meynold_household' or $home['current'] = 'shared_apartment') and npc_residence[$SMSContact[ARGS[1]]] >= 3: 
-	if npc_finance[$ARGS[2]] = 2 and func('homes_properties_attr', 'get_property_attribute', '$town', $home['current']) ! 'city' and npc_residence[$ARGS[2]] >= 3:
-		$booty_call_hotel[$ARGS[2]] = 'pav'
-	else
-		$booty_call_hotel[$ARGS[2]] = 'city'
+if $ARGS[0] = 'accept_booty_call':
+	booty_call_invite[$ARGS[1]] = daystart
+	if npc_finance[$ARGS[1]] = 2 and npc_residence[$ARGS[1]] >= 3:
+		if func('homes_properties_attr', 'get_property_attribute', '$town', $home['current']) = 'city':
+			$booty_call_hotel[$ARGS[1]] = 'city'
+		else
+			$booty_call_hotel[$ARGS[1]] = 'pav'
+		end
 	end
-end
 
+elseif $ARGS[0] = 'decline_booty_call':
+	if sugar_daddy_call[$ARGS[1]] = 1:
+		npc_rel[$ARGS[1]] -= 2
+		sugar_daddy_call[$ARGS[1]] = 0
+	end
+end
 
 
 if $ARGS[0] ! 'default_booty_call' and $ARGS[0] ! 'pre_planned_booty_call' and $ARGS[0] ! 'std_free' and $ARGS[0] ! 'sugar_daddy_booty_call':
-	killvar '$trialSMS'
 	killvar '$SMSTree'
-	killvar '$temp_SMStext'
 end
 
 --- hookup_sms ---------------------------------

+ 78 - 51
locations/boy.qsrc

@@ -14,16 +14,35 @@ end
 if $ARGS[0] = 'details':
 	!Select Photos
 
-:boydetailsloop
-	lover_picrand =  RAND(1,30)
-	if lover_picrand = lover_picture[0] or lover_picrand = lover_picture[1] or lover_picrand = lover_picture[2]: jump 'boydetailsloop'
-
-	loverGenderTmp = 0
+	loverGenderTmp = npc_gender[$npclastgenerated]
 	silaVag = npc_sexskill[$npclastgenerated]
 	$npc_usedname[$npclastgenerated] = $npc_firstname[$npclastgenerated]
 	$boydesc = $npc_usedname[$npclastgenerated]
 
+	hairBoy = npc_haircol[$npclastgenerated]
+	titBoy = npc_bust[$npclastgenerated]
+	vneshBoy = npc_apprnc[$npclastgenerated]
+
 	!!appearance
+	gs 'boy', 'set_boybody'
+
+	!!Variables responsible for any features like
+	!!security, is responsible for the money and requirements
+	gs 'boy', 'set_finance'
+
+	gs 'boy', 'set_preferences'
+end
+
+! set_unique_pic is depricated
+if $ARGS[0] = 'set_unique_pic':
+	!! boys 1-30, girlfriends 31-60
+	:boydetailsloop
+		lover_picrand[$npclastgenerated] =  rand(1, 30)
+	if lover_picrand[$npclastgenerated] = lover_picture[0] or lover_picrand[$npclastgenerated] = lover_picture[1] or lover_picrand[$npclastgenerated] = lover_picture[2]: jump 'boydetailsloop'
+end
+
+
+if $ARGS[0] = 'set_boybody':
 	boybodyrand = rand(1, 3)
 
 	if boybodyrand = 1: 
@@ -54,63 +73,71 @@ if $ARGS[0] = 'details':
 	end
 	
 	boyfacerand = rand(1, 3)
+	if boyfacerand = 1: 
+		$boyface = 'black'
+	elseif boyfacerand = 2:
+		$boyface = 'brown'
+	else 
+		$boyface = 'blond'
+	end
+end
 
-	if boyfacerand = 1: $boyface = 'black'
-	if boyfacerand = 2: $boyface = 'brown'
-	if boyfacerand = 3: $boyface = 'blond'
-
-	!!Variables responsible for any features like
-	!!security, is responsible for the money and requirements
+if $ARGS[0] = 'set_finance':
 	harakBoy = rand(0, 2)
-	finance = rand(0, 2)
+	finance = npc_finance[$npclastgenerated]
 
-	if finance = 0:
+	if npc_finance[$npclastgenerated] = 0:
 		!!Gopnik beggar or a hard worker
 		!!check in appearance Primary
-		if harakBoy = 0: npc_apprnc[$npclastgenerated] = rand(0, 8)
-		if harakBoy = 1: npc_apprnc[$npclastgenerated] = rand(0, 16)
-		if harakBoy = 2: npc_apprnc[$npclastgenerated] = rand(0, 32)
+		if harakBoy = 0:
+			npc_apprnc[$npclastgenerated] = rand(0, 8)
+		elseif harakBoy = 1:
+			npc_apprnc[$npclastgenerated] = rand(0, 16)
+		else 
+			npc_apprnc[$npclastgenerated] = rand(0, 32)
+		end
 
 		$boyClo = 'wearing a tracksuit.'
-	elseif finance = 1:
+	elseif npc_finance[$npclastgenerated] = 1:
 		!!middle_peasant
 		!!check in appearance
-		if harakBoy = 0: npc_apprnc[$npclastgenerated] = rand(0, 16)
-		if harakBoy = 1: npc_apprnc[$npclastgenerated] = rand(0, 24)
-		if harakBoy = 2: npc_apprnc[$npclastgenerated] = rand(0, 32)
+		if harakBoy = 0:
+			npc_apprnc[$npclastgenerated] = rand(0, 16)
+		elseif harakBoy = 1:
+			npc_apprnc[$npclastgenerated] = rand(0, 24)
+		else
+			npc_apprnc[$npclastgenerated] = rand(0, 32)
+		end
 
 		$boyClo = 'wearing jeans and a sweater.'
-	elseif finance = 2:
+	elseif npc_finance[$npclastgenerated] = 2:
 		!!middle_peasant
 		!!check in appearance
-		if harakBoy = 0: npc_apprnc[$npclastgenerated] = rand(16, 32)
-		if harakBoy = 1: npc_apprnc[$npclastgenerated] = rand(24, 32)
-		if harakBoy = 2: npc_apprnc[$npclastgenerated] = rand(32, 40)
+		if harakBoy = 0:
+			npc_apprnc[$npclastgenerated] = rand(16, 32)
+		elseif harakBoy = 1:
+			npc_apprnc[$npclastgenerated] = rand(24, 32)
+		else
+			npc_apprnc[$npclastgenerated] = rand(32, 40)
+		end
 
 		$boyClo = 'wearing an expensive suit.'
 	end
+end
 
+
+if $ARGS[0] = 'set_preferences':
 	!!requirements of the figure, chest size, hair color.
 	!!0 - ass less 80, 1 back from 80 prior_to 100, 2 ass over 100
 	figurBoy = rand(0, 2)
-	!!0 set here as they are boys
-	npc_bust[$npclastgenerated] = 0
-	!!0 - black, 1 - brown, 2 - Redhead, 3 - blonde
-	npc_haircol[$npclastgenerated] = rand(0, 3)
-	!!character 0 - soft, 1 -norm 2 - aggressor
+
+	!character 0 - soft, 1 - norm,  2 - aggressor
 	if rand(0, 100) < 80:
 		izvrat = 0
 	else
 		izvrat = 1
 	end
 
-
-
-	hairBoy = npc_haircol[$npclastgenerated]
-	titBoy = npc_bust[$npclastgenerated]
-	vneshBoy = npc_apprnc[$npclastgenerated]
-
-
 	!! trying to make the preference section 
 	!! Variables here are clotTypePrefTmp, clotQualPrefTmp, clotTopPrefTmp, bottShorPrefTmp, clotThinPrefTmp, bimbPrefTmp, pierPrefTmp, tattPrefTmp, lipsPrefTmp, bodyPrefTmp, makePrefTmp, IQPrefTmp.
 
@@ -120,15 +147,15 @@ if $ARGS[0] = 'details':
 	!!0 - none, 1 - cheap, 2 - average, 3 - formal, 4 - fetish.
 	clotTypePrefTmp = 0
 	if rand(0, 4) = 4:
-		if finance = 0:
+		if npc_finance[$npclastgenerated] = 0:
 			clotTypePrefTmp = rand(1,2)
-			if rand(0, 1) = 1 and izvrat = 1:clotTypePrefTmp = 4
-		elseif finance = 1:
+			if rand(0, 1) = 1 and izvrat = 1: clotTypePrefTmp = 4
+		elseif npc_finance[$npclastgenerated] = 1:
 			clotTypePrefTmp = rand(1,3)
-			if rand(0, 2) = 2 and izvrat = 1:clotTypePrefTmp = 4
-		elseif finance = 2:
+			if rand(0, 2) = 2 and izvrat = 1: clotTypePrefTmp = 4
+		elseif npc_finance[$npclastgenerated] = 2:
 			clotTypePrefTmp = rand(2,3)
-			if rand(0, 1) = 1 and izvrat = 1:clotTypePrefTmp = 4
+			if rand(0, 1) = 1 and izvrat = 1: clotTypePrefTmp = 4
 		end
 	end
 
@@ -137,9 +164,9 @@ if $ARGS[0] = 'details':
 	!! 0 - no preference, 1 - 1 to 4 units cheap to average (Locked if formal chosen), 2 - 5 to 7 units expensive to ballroom quality (Locked if fetish is chosen)
 	clotQualPrefTmp = 0
 	if rand(0, 5) = 5:
-		if finance = 0:
+		if npc_finance[$npclastgenerated] = 0:
 			clotQualPrefTmp = 1
-		elseif finance = 1:
+		elseif npc_finance[$npclastgenerated] = 1:
 			clotQualPrefTmp = rand(1, 2)
 			randchan = rand(0, 1)
 			if randchan = 0 and clotTypePrefTmp ! 3:
@@ -147,7 +174,7 @@ if $ARGS[0] = 'details':
 			elseif randchan = 1 and clotTypePrefTmp ! 1:
 				clotQualPrefTmp = 2
 			end
-		elseif finance = 2:
+		elseif npc_finance[$npclastgenerated] = 2:
 			randchan = rand(0, 2)
 			if randchan = 2 and clotTypePrefTmp ! 1:
 				clotQualPrefTmp = 2
@@ -160,14 +187,14 @@ if $ARGS[0] = 'details':
 
 	!!Need to add modifiers based on breast size, where larger breasts end up forcing the player to show more cleavage than those with smaller breasts.
 	!! 0 - no preference, 1 - 1 to 2 or neckline to moderate, 2 - 3 to 4 or heavy to severe, 3 - 5 to 7 or buldging to outpouring 
-	!! The breast size must be adjusted either when the action is being calculeted or we can base it on their ideal breast size :titBoy + 0/3 depending on the players breast size
+	!! The breast size must be adjusted either when the action is being calculeted or we can base it on their ideal breast size :npc_bust[$npclastgenerated] + 0/3 depending on the players breast size
 
 
 	!!0 - no preference, 1 - 1 neckline , 2 - 2 or moderate, 3 - 3 to 4 or heavy to severe
 	!! It doesn''t matter if your poor or rich, everyone loves tits.
 
 	slutConstant = 0
-	if rand(0, 1) = 1 and izvrat = 1:slutConstant = 1
+	if rand(0, 1) = 1 and izvrat = 1: slutConstant = 1
 
 
 	clotTopPrefTmp = 0
@@ -180,7 +207,7 @@ if $ARGS[0] = 'details':
 		elseif randchan = 2 and clotTypePrefTmp ! 3:
 			clotTopPrefTmp = 3
 		end
-		if clotTopPrefTmp ! 0 and titBoy = 2:
+		if clotTopPrefTmp ! 0 and titnpc_bust[$npclastgenerated] = 2:
 			if clotPref ! 3:
 				clotTopPrefTmp += 1
 			end
@@ -200,8 +227,7 @@ if $ARGS[0] = 'details':
 		elseif randchan = 2:
 			bottShorPrefTmp = 3
 		end
-		randchan = rand(0, 1)
-		if slutConstant = 1 and randchan = 1 and clotTypePrefTmp = 4:
+		if slutConstant = 1 and rand(0, 1) = 1 and clotTypePrefTmp = 4:
 			bottShorPrefTmp = 3
 		end
 	end
@@ -292,10 +318,11 @@ if $ARGS[0] = 'details':
 	!!0 - no preference, 1 - 1 to 30 intelligence, 2 - 30 to 85 intelligence, 3 - 85 + intelligence. 
 
 	IQPrefTmp = 0
-	if rand(0, 4) = 4:IQPrefTmp = rand(1, 3) 
+	if rand(0, 4) = 4: IQPrefTmp = rand(1, 3)
 
 	killvar 'randchan'
 end
 
+
 --- boy ---------------------------------
 

+ 8 - 8
locations/brothel.qsrc

@@ -333,7 +333,7 @@ if $ARGS[0] = 'abducted5':
 end
 
 if $ARGS[0] = 'abducted6':
-	analplugIN = 0
+	analplugIN = 0 & analplugout = 1
 	*nl
 	'<center><video autoplay loop src="images/locations/shared/brothel/pullplugfromass.mp4"></video></center>'
 	*nl
@@ -1641,7 +1641,7 @@ if $ARGS[0] = 'section1_pushplugout':
 	menu_off = 1
 	minut += 1
 	custTime += 1
-	analplugIN = 0
+	analplugIN = 0 & analplugout = 1
 	gs 'pain', 3, 'asshole', 'cramp'
 	gs 'stat'
 
@@ -1706,7 +1706,7 @@ if $ARGS[0] = 'section1_play_stretch':
 	  	gt 'brothel', 'section1_buttplug_stretch'
 	elseif stage = 5:
 	  	stage += 1
-	  	analplugIN = 0
+	  	analplugIN = 0 & analplugout = 1
 	  	gt 'brothel', 'section1_vagfisting'
 	elseif stage = 6:
 	  	stage += 1
@@ -2020,7 +2020,7 @@ if $ARGS[0] = 'section1_finish':
 					'The Client seems to disregard that, as he pounds your pussy even deeper...'
 					'<font color=#<<$pcs_font>>>"Owwwwuuch! Pleaaase no, no, take it ouuuut! Maaaster, pleaaase!"</font>'
 					'Just as you say that the next pound of the Client''s dick pushes out the plug, which falls out down between your bound legs.'
-					analplugIN = 0
+					analplugIN = 0 & analplugout = 1
 					gs 'pain', 2, 'pussy', 'stretch'
 					gs 'stat'
 				else
@@ -2082,7 +2082,7 @@ if $ARGS[0] = 'section1_finish':
 					'<font color=#<<$pcs_font>>>"Owwwwuuch! Pleaaase no, no, take it ouuuut! Maaaster, pleaaase!"</font>'
 					'Just as you say that the next pound of the Client''s dick pushes out the plug, which falls out down between your bound legs.'
 					'The Client seems to disregard that, as he stretches your anus even more with his phallus... Or maybe he does it on purpose!'
-					analplugIN = 0
+					analplugIN = 0 & analplugout = 1
 					gs 'pain', 2, 'anus', 'stretch'
 					gs 'stat'
 				else
@@ -2102,7 +2102,7 @@ if $ARGS[0] = 'section1_finish':
 					'The Client seems to disregard that, as he stretches your anus even more with his phallus...'
 					'<font color=#<<$pcs_font>>>"Owwwwuuch! Pleaaase no, no, take it ouuuut! Maaaster, pleaaase!"</font>'
 					'Just as you say that the next pound of the Client''s dick pushes out the plug, which falls out down between your bound legs.'
-					analplugIN = 0
+					analplugIN = 0 & analplugout = 1
 					gs 'pain', 4, 'anus', 'stretch'
 					gs 'stat'
 				else
@@ -2249,7 +2249,7 @@ if $ARGS[0] = 'section1_end':
 			'<center><video autoplay loop src="images/locations/shared/brothel/pullplugfromass.mp4"></video></center>'
 			'With one hard pull he rips the plug out of your anus, causing your already abused anus additional pain!'
 			'<font color=#<<$pcs_font>>>"Ouuuuchhhhh! You moron, you didn''t even pay for this!"</font>'
-			analplugIN = 0
+			analplugIN = 0 & analplugout = 1
 			gs 'pain', 3, 'asshole', 'stretch'
 			gs 'stat'
 			act 'Yell at him to untie you': gt 'brothel', 'section1_end'
@@ -2274,7 +2274,7 @@ if $ARGS[0] = 'section1_end':
 		'<center><video autoplay loop src="images/locations/shared/brothel/pullplugfromassyourself.mp4"></video></center>'
 		'<font color=#<<$pcs_font>>>Oww... Oww... Owwwch!</font> with a loud wet "pop" the plug finally goes out!'
 		step = 0
-		analplugIN = 0
+		analplugIN = 0 & analplugout = 1
 		gs 'pain', 4, 'asshole', 'stretch'
 		gs 'stat'
 		act 'Throw it away and leave': gt 'brothel', 'brothel_dressingroom', '1'

+ 39 - 32
locations/brother.qsrc

@@ -48,6 +48,11 @@ if npc_QW['A34'] > 20 and npc_QW['A34'] < 25: npc_QW['A34'] = 20
 !! npc_breastfeed_by_sveta['A34'] = 0 or 1 - Kolka was not/was breastfeed by sveta
 !! npc_tasted_sveta_milk['A34'] = 0 or 1 - Does Kolka know how svetas breast milk taste? 0 = no, 1 = yes
 
+if npc_pregtalk['A34'] = 0 and brother_pregreact <> 1 and ($ARGS[0] = 'start' or $ARGS[0] = 'showbody' or $ARGS[0] = 'kiss_talk' or $ARGS[0] = 'homework'):
+	gs 'brother', 'pregreact'
+	if brother_pregreact = 1: exit
+end
+if npc_pregtalk['A34'] = 1: killvar 'brother_pregreact'
 
 if $ARGS[0] = 'start':
 	menu_off = 1
@@ -214,7 +219,6 @@ if $ARGS[0] = 'start':
 	end
 
 	if $loc = 'sitrPar':
-		if npc_pregtalk['A34'] = 0: gs 'brother', 'pregreact'
 		gs 'brother', 'brotherSexCount'
 
 		if locat['Fam_inGad'] = 0 and $clothingworntype ! 'nude' and brothersawpirsF=0 and locat['Stepdad'] ! 10 and npc_rel['A34'] > 85 and hour >= 18 and hour < 23 and pirsF > 0:
@@ -282,7 +286,7 @@ if $ARGS[0] = 'start':
 
 		if locat['Fam_inGad'] = 0 and brotherSexCount > 0 and brotherDay = daystart:
 			brotherrand = rand(0,10)
-			if hour < 6:
+			if  hour < 6 or hour = 23:
 				'You look at your brother sleeping peacefully on the couch.'
 			elseif hour < 7 and brotherMorningSex ! daystart:
 				'You look at your brother sleeping peacefully on the couch.'
@@ -304,7 +308,7 @@ if $ARGS[0] = 'start':
 				'Your brother is playing video games.'
 			end
 
-			if hour >= 23 and brotherSex > 4 and brotherNightSex ! daystart and locat['Mother'] ! 19:
+			if hour > 0 and hour < 4 and brotherSex > 4 and brotherNightSex ! daystart and locat['Mother'] ! 19:
 				'As you approach your sleeping brother, he suddenly opens his eyes and looks at you.'
 				'He points to the mound under his blanket, "Sis, I can''t get any sleep, can you help?"'
 				cla
@@ -322,9 +326,7 @@ if $ARGS[0] = 'start':
 					act 'Leave':gt 'sitrPar'
 					exit
 				end
-			end
-
-			if locat['Stepdad'] ! 10 and hour >= 18 and hour < 23 and brotherSex > 4 and brotherEvSex ! daystart and locat['Mother'] ! 19:
+			elseif locat['Stepdad'] ! 10 and hour >= 18 and hour < 23 and brotherSex > 4 and brotherEvSex ! daystart and locat['Mother'] ! 19:
 				'When you get close, Kolka turns to you.'
 				'"Sis, I''ve got a problem," he points to the lump in his pants. "Can you help me solve it?"'
 				cla
@@ -1286,7 +1288,6 @@ if $ARGS[0] = 'brother_voyeur_ev6':
 	end
 end
 
-
 if $ARGS[0] = 'brother_voyeur_ev7':
 	*clr & cla
 	menu_off = 1
@@ -1498,37 +1499,48 @@ if $ARGS[0] = 'brother_voyeur_ev8':
 end
 
 if $ARGS[0] = 'pregreact':
+	if $loc = 'sitrPar':
+		if hour < 6: exit
+		if hour < 7 and brotherMorningSex ! daystart: exit
+		if hour >= 23: exit
+	end
+
+	*clr
+	brother_pregreact = 1
+	'<center><b><font color="maroon">Kolka</font></b></center>'
+	'<center><img <<$set_imgh>> src="images/characters/pavlovsk/school/boy/kolka/brother.jpg"></center>'
+
 	if knowpreg = 1 and kid = 0 and FUNC('body_din','pregnancyVisibility') = 1:
 		if $clothingworntype = 'nude' and brotherSex < 7:
+			cla
 			'Surprised, your brother looks at your stomach. "<<$pcs_nickname>>, are you pregnant? <<$npc_nickname[''A29'']>> and dad are going to be pissed!" After a moments pause he adds, "You do still look good, though."'
 			npc_pregtalk['A34'] = 1
 
 			act 'Continue' :gt 'sitrPar'
-		exit
-
+			exit
 		elseif $clothingworntype ! 'nude' and brotherSex < 7:
+			cla
 			'Surprised, your brother looks at your stomach, "<<$pcs_nickname>>, why didn''t you tell me I''m going to be an uncle?"'
 			npc_pregtalk['A34'] = 1
 
 			act 'Continue' :gt 'sitrPar'
 			exit
-
 		elseif brotherSex >= 7 and npc_pregtalk['A29'] = 0:
 			cla
 			'Surprised, your brother looks at your stomach, "Are you really pregnant? It... it''s not mine, is it?"'
-			*nl
 			if $wombthfathID = 'A34' and npc_rel['A34'] > 50:
-				act 'Yes (Happy)':gt 'brother', 'brotherknows1'
-				act 'Yes (Angry)':gt 'brother', 'brotherknows2'
+				act 'Yes (Happy)':gs 'brother', 'brotherknows1'
+				act 'Yes (Angry)':gs 'brother', 'brotherknows2'
 			elseif arrpos('$wombpotfath', 'A34') >= 0:
-				act 'Maybe (Happy)':gt 'brother', 'brotherknows3'
-				act 'Maybe (Angry)':gt 'brother', 'brotherknows4'
+				act 'Maybe (Happy)':gs 'brother', 'brotherknows3'
+				act 'Maybe (Angry)':gs 'brother', 'brotherknows4'
 			else
-				act 'No':gt 'brother', 'brotherknows5'
+				act 'No':gs 'brother', 'brotherknows5'
 			end
 			exit
 		end
 	elseif brotherSex < 7 and kid > 0 and FUNC('body_din','pregnancyVisibility') = 1:
+		cla
 		'"You''re already pregnant again? This is starting to look like a new hobby," he laughs.'
 		'"You know what? Maybe it is," you joke back. "Some girls play sports, I get serially impregnated."'
 		'Kolka pokes his tongue out at you, "Well, congratulations on taking home the gold in getting knocked up."'
@@ -1538,24 +1550,26 @@ if $ARGS[0] = 'pregreact':
 		'You leave your brother to what he was doing before, glad that the two of you have the relationship that you do.'
 
 		act 'Continue' :npc_pregtalk['A34'] = 1 & gt 'sitrPar'
+		exit
 	elseif brotherSex >= 7 and kid > 0 and npc_pregtalk['A29'] = 0 and FUNC('body_din','pregnancyVisibility') = 1:
 		cla
 		'Kolka looks at your stomach for moment before asking, "Wow, you''re pregnant again? Is it mine?"'
-		*nl
-
 		if arrpos('$wombpotfath', 'A34') >= 0:
-			act 'Maybe':gt 'brother', 'brotherknows7'
-			if $wombthfathID = 'A34' and npc_rel['A34'] > 50: act 'Yes':gt 'brother', 'brotherknows6'
+			act 'Maybe':gs 'brother', 'brotherknows7'
+			if $wombthfathID = 'A34' and npc_rel['A34'] > 50: act 'Yes':gs 'brother', 'brotherknows6'
 		else
-			act 'No':gt 'brother', 'brotherknows8'
+			act 'No':gs 'brother', 'brotherknows8'
 		end
+		exit
 	end
+
+	brother_pregreact = 0
+	*clr
 end
 
 if $ARGS[0] = 'brotherknows1':
 	cla
 	npc_pregtalk['A34'] = 1
-	*nl
 	'"Yeah, this baby is yours," you say, rubbing your belly. "And after it''s born, I might let you help me make another one," you add before giving your brother a kiss. You look down at him and notice a lump starting to form in his pants.'
 	'Kolka''s eyes suddenly go wide, "Wait! You''re not going to tell <<$npc_nickname[''A29'']>> I got you pregnant, are you?"'
 
@@ -1584,7 +1598,6 @@ end
 if $ARGS[0] = 'brotherknows2':
 	cla
 	npc_pregtalk['A34'] = 1
-	*nl
 	'"Yes, it is and you''re going to take responsibility. I am not going to be a single mother raising this child on my own."'
 	'Kolka stares at you in shock, "But I don''t know anything about raising a kid!"'
 	'"Well, you should have thought of that before knocking me up! You''re going to have to figure it out," your brother is clearly crestfallen as you walk away.'
@@ -1610,7 +1623,6 @@ end
 if $ARGS[0] = 'brotherknows3':
 	cla
 	npc_pregtalk['A34'] = 1
-	*nl
 	'"It could be, I''m still not sure yet. I just wanted to give you a heads up." You then add with a wink, "Honestly, I kind of hope it is."'
 	'"Me too," he states just a little too eagerly. He then quickly moves his lips to yours and you share a passionate kiss.'
 
@@ -1620,7 +1632,6 @@ end
 if $ARGS[0] = 'brotherknows4':
 	cla
 	npc_pregtalk['A34'] = 1
-	*nl
 	'"I''m still not sure," you say. "But if it is, you had better take responsibility."'
 	'Your brother rolls his eyes, "Then I really hope it''s someone else''s problem."'
 	'"Fuck off! If it''s yours then I''ll make sure you take responsibility!" You then storm away, leaving Kolka to stew.'
@@ -1631,7 +1642,6 @@ end
 if $ARGS[0] = 'brotherknows5':
 	cla
 	npc_pregtalk['A34'] = 1
-	*nl
 	'"No, you got lucky this time. It''s actually <<$wombthfath>>''s," you tell him. "I just wanted to share the news with my little brother."'
 	'"Oh, well congratulations!" He tries to sound happy, but you detect a note of disappointment in his voice.'
 
@@ -1641,7 +1651,6 @@ end
 !Once pregnancy fetish is added, these will be expanded
 if $ARGS[0] = 'brotherknows6':
 	npc_pregtalk['A34'] = 1
-	*nl
 	if arrpos('$ChildThFath','A34') >= 0 and BrotherHappy = 1:
 		cla
 		'"Yeah, you knocked me up again," you smile at him. "I think you''re doing this on purpose." You walk closer to your brother and straddle his lap. You affectionately wrap your arms around his neck and lean your face close to his, "You like knocking up your sister, don''t you? You just love that this belly shows the whole world that I let my own brother fuck me, huh?"'
@@ -1727,7 +1736,6 @@ end
 if $ARGS[0] = 'brotherknows7':
 	cla
 	npc_pregtalk['A34'] = 1
-	*nl
 !! $ChildThFath gets applied in labor so it is relatively good way to check if you think you already have babies with somebody
 	if arrpos('$ChildThFath','A34') >= 0 and BrotherHappy = 1:
 		'"It could be, I''m still not sure yet. I just wanted to give you a heads up." You then add with a wink, "Honestly, I''m kind of hoping it is. I would love to be carrying another one of my brother''s children."'
@@ -1749,14 +1757,13 @@ end
 if $ARGS[0] = 'brotherknows8':
 	cla
 	npc_pregtalk['A34'] = 1
-	*nl
-	if $wombthfathID ! 'A34' and arrpos('$ChildThFath','A34') >= 0 and $wombthfathID ! 'unknown':
+	if $wombthfathID ! 'A34' and arrpos('$ChildThFath','A34') >= 0 and $wombthfathID ! 'unknown' and $wombthfathID ! '':
 		'"Not this time. It''s actually <<$wombthfath>>''s. Why, were you hoping you''d give me more children? Sorry, but this body is just too good to limit myself to one man, even if that man is my cute younger brother," you giggle.'
 		'Kolka licks his lips, "Well, you do have a great body, so I''ll concede that point."'
 		'"You know I love you, but please don''t take this as an invitation to try to get me pregnant again. I don''t know if I''m ready for more kids." Your brother nods, clearly disappointed. "Hey, you can still fuck me, you just have to be careful."'
 
 		act 'Continue' :gt 'sitrPar'
-	elseif $wombthfathID ! 'A34' and arrpos('$ChildThFath','A34') < 0 and $wombthfathID ! 'unknown':
+	elseif $wombthfathID ! 'A34' and arrpos('$ChildThFath','A34') < 0 and $wombthfathID ! 'unknown' and $wombthfathID ! '':
 		'You shake your head, "No, not this time either. It''s actually <<$wombthfath>>''s."'
 		'"Oh, congratulations again, then." You still catch disappointment in his voice.'
 		'You question him, "You weren''t trying to get me pregnant, were you?"'
@@ -1767,7 +1774,7 @@ if $ARGS[0] = 'brotherknows8':
 	else
 	!! Somebody with writing skills should add flavor.
 		'No, it is not.'
-		if $wombthfathID = 'unknown':
+		if $wombthfathID = 'unknown' or $wombthfathID = '':
 			'I actually have no idea whose this one is.'
 		end
 

+ 12 - 6
locations/budgetclothes.qsrc

@@ -102,6 +102,7 @@ if $ARGS[0] = 'clothes':
 	*nl
 
 	gs 'clothing_QV', 'shop_filter_header'
+	gs 'clothing', 'totals', 'gm_outfits'
 
 	act 'Return':
 		cla
@@ -133,7 +134,7 @@ if $ARGS[0] = 'clothes':
 			end
 			i += 3
 
-		if i <= 200:jump 'loopgm_outfits'
+		if i <= total:jump 'loopgm_outfits'
 
 	clo_i += 1
 	if clothingfilter['quality'] = 0 and clo_i <= 7:
@@ -166,6 +167,7 @@ if $ARGS[0] = 'dresses':
 	*nl
 
 	gs 'clothing_QV', 'shop_filter_header'
+	gs 'clothing', 'totals', 'gm_dress'
 
 	act 'Return':
 		cla
@@ -198,7 +200,7 @@ if $ARGS[0] = 'dresses':
 				end
 			end
 			i += 3
-		if i <= 300:jump 'loopgm_dress'
+		if i <= total:jump 'loopgm_dress'
 
 	clo_i += 1
 	if clothingfilter['quality'] = 0 and clo_i <= 7:
@@ -231,6 +233,7 @@ if $ARGS[0] = 'office':
 	*nl
 
 	gs 'clothing_QV', 'shop_filter_header'
+	gs 'clothing', 'totals', 'gm_office'
 
 	act 'Return':
 		cla
@@ -255,7 +258,7 @@ if $ARGS[0] = 'office':
 				end
 			end
 			i += 1
-		if i <= 40:jump 'loopoffice'
+		if i <= total:jump 'loopoffice'
 
 	clo_i += 1
 	if clothingfilter['quality'] = 0 and clo_i <= 7:
@@ -288,6 +291,7 @@ if $ARGS[0] = 'gm_maid':
 	*nl
 
 	gs 'clothing_QV', 'shop_filter_header'
+	gs 'clothing', 'totals', 'gm_maid'
 
 	act 'Return':
 		cla
@@ -316,7 +320,7 @@ if $ARGS[0] = 'gm_maid':
 				end
 			end
 			i += 2
-		if i <= 40:jump 'loopgm_maid'
+		if i <= total:jump 'loopgm_maid'
 
 	clo_i += 1
 	if clothingfilter['quality'] = 0 and clo_i <= 7:
@@ -340,6 +344,7 @@ if $ARGS[0] = 'gm_server':
 	*nl
 
 	gs 'clothing_QV', 'shop_filter_header'
+	gs 'clothing', 'totals', 'gm_outfits'
 
 	act 'Return':
 		cla
@@ -368,7 +373,7 @@ if $ARGS[0] = 'gm_server':
 				end
 			end
 			i += 2
-		if i <= 30:jump 'loopgm_server'
+		if i <= total:jump 'loopgm_server'
 
 	clo_i += 1
 	if clothingfilter['quality'] = 0 and clo_i <= 7:
@@ -392,6 +397,7 @@ if $ARGS[0] = 'school':
 	*nl
 
 	gs 'clothing_QV', 'shop_filter_header'
+	gs 'clothing', 'totals', 'gm_school'
 
 	act 'Return':
 		cla
@@ -423,7 +429,7 @@ if $ARGS[0] = 'school':
 			end
 			i += 3
 			if i = 6:i = 9
-		if i <= 62:jump 'loopschool'
+		if i <= total:jump 'loopschool'
 
 	clo_i += 1
 	if clothingfilter['quality'] = 0 and clo_i <= 7:

+ 1546 - 0
locations/bus.qsrc

@@ -0,0 +1,1546 @@
+# bus
+
+	!!============================================!!
+	!!                                            !!
+	!!                Bus Stations                !!
+	!!                                            !!
+	!!============================================!!
+
+
+		!!-----------------------!!
+		!!                       !!
+		!!       community       !!
+		!!                       !!
+		!!-----------------------!!
+
+if $ARGS[0] = 'community':
+	*clr & cla
+	$menu_loc = 'bus'
+	$menu_arg = 'community'
+	$location_type = 'public_outdoors'
+	menu_off = 0
+	gs 'stat'
+
+	'<center><img <<$set_imgh>> src="images/locations/system/image_needed.jpg" ></center>'
+	'The community center bus stop'
+	*nl
+	gs 'transport_functions', 'set_bus_wait_time', 'community'
+
+	act 'Walk to the community center (0:01)': minut += 1 & gt 'pav_commcenter'
+
+	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:
+			*nl
+			func('transport_functions', 'display_buspass_time')
+			act 'Go to platforms': gt 'bus', 'community_busses'
+		else
+			act 'Buy a ticket': gt 'bus', 'community_tickets'
+		end
+	else
+		'It''s too late to take the bus. The next one arrives in <<transportVars[''bus_wait_gadukino'']/60>> hours'
+	end
+
+elseif $ARGS[0] = 'community_tickets':
+	$menu_loc = 'bus'
+	$menu_arg = 'community_tickets'
+	menu_off = 0
+	
+	act 'Leave the ticket office': gt 'bus', 'community'
+
+	act 'Look at the bus schedule':
+		*clr & cla
+		gs 'transport_functions', 'display_bus_schedule', 'pg'
+		act 'Stop looking at the schedule': gt 'bus', 'community_tickets'
+	end
+
+	gs 'transport_functions', 'buy_bus_ticket', 'community', 'pg'
+
+elseif $ARGS[0] = 'community_busses':
+	$menu_loc = 'bus'
+	$menu_arg = 'community_busses'
+	menu_off = 0
+
+	gs 'transport_functions', 'set_bus_wait_time', 'community'
+	'The next bus in the direction of Gadukino ' + iif(transportVars['bus_wait_gadukino'] = 0, 'is leaving now!', 'leaves in <<transportVars[''bus_wait_gadukino'']>> minutes.')
+
+	act 'Leave the platform': gt 'bus', 'community'
+
+	act 'Look at the bus schedule':
+		*clr & cla
+		gs 'transport_functions', 'display_bus_schedule', 'pg'
+		act 'Stop looking at the schedule': gt 'bus', 'community_busses.'
+	end
+
+	act 'Take a bus to the Pavlovsk train station (<<func(''transport_functions'', ''display_bus_timecost'', ''community'', ''pavstation'')>>)':	gt 'bus', 'community_pavstation'
+	act 'Take a bus to the old town district of Pushkin (<<func(''transport_functions'', ''display_bus_timecost'', ''community'', ''pushkin'')>>)':	gt 'bus', 'community_pushkin'
+	act 'Take a bus to the construction site (<<func(''transport_functions'', ''display_bus_timecost'', ''community'', ''construction'')>>)':		gt 'bus', 'community_construction'
+	act 'Take a bus to the village of Gadukino (<<func(''transport_functions'', ''display_bus_timecost'', ''community'', ''gadukino'')>>)':			gt 'bus', 'community_gadukino'
+end
+
+
+		!!-----------------------!!
+		!!                       !!
+		!!      pavstation       !!
+		!!                       !!
+		!!-----------------------!!
+
+if $ARGS[0] = 'pavstation':
+	*clr & cla
+	$menu_loc = 'bus'
+	$menu_arg = 'pavstation'
+	$location_type = 'public_outdoors'
+	menu_off = 0
+	gs 'stat'
+
+	'<center><img <<$set_imgh>> src="images/locations/system/image_needed.jpg" ></center>'
+	'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['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.')
+		'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:
+			*nl
+			func('transport_functions', 'display_buspass_time')
+			act 'Go to platforms': gt 'bus', 'pavstation_busses'
+		else
+			act 'Buy a ticket': gt 'bus', 'pavstation_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.'
+	end
+
+elseif $ARGS[0] = 'pavstation_tickets':
+	$menu_loc = 'bus'
+	$menu_arg = 'pavstation_tickets'
+	menu_off = 0
+	
+	act 'Leave the ticket office': gt 'bus', 'pavstation'
+
+	act 'Look at the bus schedule':
+		*clr & cla
+		gs 'transport_functions', 'display_bus_schedule', 'pg'
+		*nl
+		*nl
+		gs 'transport_functions', 'display_bus_schedule', 'gp'
+		act 'Stop looking at the schedule': gt 'bus', 'pavstation_tickets'
+	end
+
+	gs 'transport_functions', 'buy_bus_ticket', 'pavstation', 'pg'
+
+elseif $ARGS[0] = 'pavstation_busses':
+	$menu_loc = 'bus'
+	$menu_arg = 'pavstation_busses'
+	menu_off = 0
+
+	gs 'transport_functions', 'set_bus_wait_time', 'pavstation'
+	'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.')
+	'The next bus in the direction of Gadukino ' + iif(transportVars['bus_wait_gadukino'] = 0, 'is leaving now!', 'leaves in <<transportVars[''bus_wait_gadukino'']>> minutes.')
+
+	act 'Leave the platform': gt 'bus', 'pavstation'
+
+	act 'Look at the bus schedule':
+		*clr & cla
+		gs 'transport_functions', 'display_bus_schedule', 'pg'
+		*nl
+		*nl
+		gs 'transport_functions', 'display_bus_schedule', 'gp'
+		act 'Stop looking at the schedule': gt 'bus', 'pavstation_busses'
+	end
+
+	act 'Take a bus to the Pavlovsk community center (<<func(''transport_functions'', ''display_bus_timecost'', ''pavstation'', ''community'')>>)':		gt 'bus', 'pavstation_community'
+	act 'Take a bus to the old town district of Pushkin (<<func(''transport_functions'', ''display_bus_timecost'', ''pavstation'', ''pushkin'')>>)':	gt 'bus', 'pavstation_pushkin'
+	act 'Take a bus to the construction site (<<func(''transport_functions'', ''display_bus_timecost'', ''pavstation'', ''construction'')>>)':			gt 'bus', 'pavstation_construction'
+	act 'Take a bus to the village of Gadukino (<<func(''transport_functions'', ''display_bus_timecost'', ''pavstation'', ''gadukino'')>>)':			gt 'bus', 'pavstation_gadukino'
+end
+
+
+		!!-----------------------!!
+		!!                       !!
+		!!        pushkin        !!
+		!!                       !!
+		!!-----------------------!!
+
+if $ARGS[0] = 'pushkin':
+	*clr & cla
+	$menu_loc = 'bus'
+	$menu_arg = 'pushkin'
+	$location_type = 'public_outdoors'
+	menu_off = 0
+	gs 'stat'
+
+	'<center><img <<$set_imgh>> src="images/locations/system/image_needed.jpg" ></center>'
+	'The bus stop in the old town center of Pushkin'
+	*nl
+	gs 'transport_functions', 'set_bus_wait_time', 'pushkin'
+
+	act 'Walk to pushkin (0:05)': minut += 5 & gt 'pushkin'
+
+	if transportVars['bus_wait_pavlovsk'] <= 60 or transportVars['bus_wait_gadukino'] <= 60:
+		'The next bus in the direction of Pavlovsk ' + iif(transportVars['bus_wait_pavlovsk'] = 0, 'is leaving now!', 'leaves in <<transportVars[''bus_wait_pavlovsk'']>> minutes.')
+		'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:
+			*nl
+			func('transport_functions', 'display_buspass_time')
+			act 'Go to platforms': gt 'bus', 'pushkin_busses'
+		else
+			act 'Buy a ticket': 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.'
+	end
+
+elseif $ARGS[0] = 'pushkin_tickets':
+	$menu_loc = 'bus'
+	$menu_arg = 'pushkin_tickets'
+	menu_off = 0
+	
+	act 'Leave the ticket office': gt 'bus', 'pushkin'
+
+	act 'Look at the bus schedule':
+		*clr & cla
+		gs 'transport_functions', 'display_bus_schedule', 'pg'
+		*nl
+		*nl
+		gs 'transport_functions', 'display_bus_schedule', 'gp'
+		act 'Stop looking at the schedule': gt 'bus', 'pushkin_tickets'
+	end
+
+	gs 'transport_functions', 'buy_bus_ticket', 'pushkin', 'pg'
+
+elseif $ARGS[0] = 'pushkin_busses':
+	$menu_loc = 'bus'
+	$menu_arg = 'pushkin_busses'
+	menu_off = 0
+
+	gs 'transport_functions', 'set_bus_wait_time', 'pushkin'
+	'The next bus in the direction of Pavlovsk ' + iif(transportVars['bus_wait_pavlovsk'] = 0, 'is leaving now!', 'leaves in <<transportVars[''bus_wait_pavlovsk'']>> minutes.')
+	'The next bus in the direction of Gadukino ' + iif(transportVars['bus_wait_gadukino'] = 0, 'is leaving now!', 'leaves in <<transportVars[''bus_wait_gadukino'']>> minutes.')
+
+	act 'Leave the platform': gt 'bus', 'pushkin'
+
+	act 'Look at the bus schedule':
+		*clr & cla
+		gs 'transport_functions', 'display_bus_schedule', 'pg'
+		*nl
+		*nl
+		gs 'transport_functions', 'display_bus_schedule', 'gp'
+		act 'Stop looking at the schedule': gt 'bus', 'pushkin_busses'
+	end
+
+	act 'Take a bus to the Pavlovsk community center (<<func(''transport_functions'', ''display_bus_timecost'', ''pushkin'', ''community'')>>)':	gt 'bus', 'pushkin_community'
+	act 'Take a bus to the Pavlovsk train station (<<func(''transport_functions'', ''display_bus_timecost'', ''pushkin'', ''pavstation'')>>)':		gt 'bus', 'pushkin_pavstation'
+	act 'Take a bus to the construction site (<<func(''transport_functions'', ''display_bus_timecost'', ''pushkin'', ''construction'')>>)':			gt 'bus', 'pushkin_construction'
+	act 'Take a bus to the village of Gadukino (<<func(''transport_functions'', ''display_bus_timecost'', ''pushkin'', ''gadukino'')>>)':			gt 'bus', 'pushkin_gadukino'
+end
+
+
+		!!-----------------------!!
+		!!                       !!
+		!!     construction      !!
+		!!                       !!
+		!!-----------------------!!
+
+if $ARGS[0] = 'construction':
+	*clr & cla
+	$menu_loc = 'bus'
+	$menu_arg = 'construction'
+	$location_type = 'public_outdoors'
+	menu_off = 0
+	gs 'stat'
+
+	'<center><img <<$set_imgh>> src="images/locations/system/image_needed.jpg" ></center>'
+	'The temporary bus stop near the construction site'
+	*nl
+	gs 'transport_functions', 'set_bus_wait_time', 'construction'
+
+	act 'Walk to the construction site (0:05)': minut += 5 & nroad = 16 & gt 'road'
+
+	if transportVars['bus_wait_pavlovsk'] <= 60 or 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.')
+		'The next bus in the direction of Pavlovsk ' + iif(transportVars['bus_wait_pavlovsk'] = 0, 'is leaving now!', 'leaves in <<transportVars[''bus_wait_pavlovsk'']>> minutes.')
+		if transportVars['buspass_day'] > daystart:
+			*nl
+			func('transport_functions', 'display_buspass_time')
+			act 'Go to platforms': gt 'bus', 'construction_busses'
+		else
+			act 'Buy a ticket': 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.'
+	end
+
+elseif $ARGS[0] = 'construction_tickets':
+	$menu_loc = 'bus'
+	$menu_arg = 'construction_tickets'
+	menu_off = 0
+	
+	act 'Leave the ticket office': gt 'bus', 'construction'
+
+	act 'Look at the bus schedule':
+		*clr & cla
+		gs 'transport_functions', 'display_bus_schedule', 'gp'
+		*nl
+		*nl
+		gs 'transport_functions', 'display_bus_schedule', 'pg'
+		act 'Stop looking at the schedule': gt 'bus', 'construction_tickets'
+	end
+
+	gs 'transport_functions', 'buy_bus_ticket', 'construction', 'gp'
+
+elseif $ARGS[0] = 'construction_busses':
+	$menu_loc = 'bus'
+	$menu_arg = 'construction_busses'
+	menu_off = 0
+
+	gs 'transport_functions', 'set_bus_wait_time', 'construction'
+	'The next bus in the direction of Gadukino ' + iif(transportVars['bus_wait_gadukino'] = 0, 'is leaving now!', 'leaves in <<transportVars[''bus_wait_gadukino'']>> minutes.')
+	'The next bus in the direction of Pavlovsk ' + iif(transportVars['bus_wait_pavlovsk'] = 0, 'is leaving now!', 'leaves in <<transportVars[''bus_wait_pavlovsk'']>> minutes.')
+
+	act 'Leave the platform': gt 'bus', 'construction'
+
+	act 'Look at the bus schedule':
+		*clr & cla
+		gs 'transport_functions', 'display_bus_schedule', 'gp'
+		*nl
+		*nl
+		gs 'transport_functions', 'display_bus_schedule', 'pg'
+		act 'Stop looking at the schedule': gt 'bus', 'construction_busses'
+	end
+
+	act 'Take a bus to the village of Gadukino (<<func(''transport_functions'', ''display_bus_timecost'', ''construction'', ''gadukino'')>>)':			gt 'bus', 'construction_gadukino'
+	act 'Take a bus to the old town district of Pushkin (<<func(''transport_functions'', ''display_bus_timecost'', ''construction'', ''pushkin'')>>)':	gt 'bus', 'construction_pushkin'
+	act 'Take a bus to the Pavlovsk train station (<<func(''transport_functions'', ''display_bus_timecost'', ''construction'', ''pavstation'')>>)':		gt 'bus', 'construction_pavstation'
+	act 'Take a bus to the Pavlovsk community center (<<func(''transport_functions'', ''display_bus_timecost'', ''construction'', ''community'')>>)':	gt 'bus', 'construction_community'
+end
+
+
+		!!-----------------------!!
+		!!                       !!
+		!!       gadukino        !!
+		!!                       !!
+		!!-----------------------!!
+
+if $ARGS[0] = 'gadukino':
+	*clr & cla
+	$menu_loc = 'bus'
+	$menu_arg = 'gadukino'
+	$location_type = 'public_outdoors'
+	menu_off = 0
+	gs 'stat'
+
+	'<center><img <<$set_imgh>> src="images/locations/system/image_needed.jpg" ></center>'
+	'The bus stop at the forest road of the village of Gadukino'
+	*nl
+	gs 'transport_functions', 'set_bus_wait_time', 'gadukino'
+
+	act 'Walk to Gadukino (0:01)': minut += 1 & gt 'gadroad'
+
+	if transportVars['bus_wait_pavlovsk'] <= 60 or transportVars['bus_wait_suburbs'] <= 60:
+		'The next bus in the direction of Pavlovsk ' + iif(transportVars['bus_wait_pavlovsk'] = 0, 'is leaving now!', 'leaves in <<transportVars[''bus_wait_pavlovsk'']>> minutes.')
+		'The next bus in the direction of the suburbs of St. Petersburg ' + iif(transportVars['bus_wait_suburbs'] = 0, 'is leaving now!', 'leaves in <<transportVars[''bus_wait_suburbs'']>> minutes.')
+		if transportVars['buspass_day'] > daystart:
+			*nl
+			func('transport_functions', 'display_buspass_time')
+			act 'Go to platforms': gt 'bus', 'gadukino_busses'
+		else
+			act 'Buy a ticket': gt 'bus', 'gadukino_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_suburbs'']/60)>> hours.'
+	end
+
+elseif $ARGS[0] = 'gadukino_tickets':
+	$menu_loc = 'bus'
+	$menu_arg = 'gadukino_tickets'
+	menu_off = 0
+	
+	act 'Leave the ticket office': gt 'bus', 'gadukino'
+
+	act 'Look at the bus schedule':
+		*clr & cla
+		gs 'transport_functions', 'display_bus_schedule', 'gp'
+		*nl
+		*nl
+		gs 'transport_functions', 'display_bus_schedule', 'gs'
+		act 'Stop looking at the schedule': gt 'bus', 'gadukino_tickets'
+	end
+
+	gs 'transport_functions', 'buy_bus_ticket', 'gadukino', 'gp'
+	gs 'transport_functions', 'buy_bus_ticket', 'gadukino', 'gs'
+
+elseif $ARGS[0] = 'gadukino_busses':
+	$menu_loc = 'bus'
+	$menu_arg = 'gadukino_busses'
+	menu_off = 0
+
+	gs 'transport_functions', 'set_bus_wait_time', 'gadukino'
+	'The next bus in the direction of Pavlovsk ' + iif(transportVars['bus_wait_pavlovsk'] = 0, 'is leaving now!', 'leaves in <<transportVars[''bus_wait_pavlovsk'']>> minutes.')
+	'The next bus in the direction of the suburbs of the St. Petersburg suburbs ' + iif(transportVars['bus_wait_suburbs'] = 0, 'is leaving now!', 'leaves in <<transportVars[''bus_wait_suburbs'']>> minutes.')
+
+	act 'Leave the platform': gt 'bus', 'gadukino'
+
+	act 'Look at the bus schedule':
+		*clr & cla
+		gs 'transport_functions', 'display_bus_schedule', 'gp'
+		*nl
+		*nl
+		gs 'transport_functions', 'display_bus_schedule', 'gs'
+		act 'Stop looking at the schedule': gt 'bus', 'gadukino_busses'
+	end
+
+	act 'Take a bus to the construction site (<<func(''transport_functions'', ''display_bus_timecost'', ''gadukino'', ''construction'')>>)':			gt 'bus', 'gadukino_construction'
+	act 'Take a bus to the old town district of Pushkin (<<func(''transport_functions'', ''display_bus_timecost'', ''gadukino'', ''pushkin'')>>)':		gt 'bus', 'gadukino_pushkin'
+	act 'Take a bus to the Pavlovsk train station (<<func(''transport_functions'', ''display_bus_timecost'', ''gadukino'', ''pavstation'')>>)':			gt 'bus', 'gadukino_pavstation'
+	act 'Take a bus to the Pavlovsk community center (<<func(''transport_functions'', ''display_bus_timecost'', ''construction'', ''community'')>>)':	gt 'bus', 'construction_community'
+
+	act 'Take a bus to the communal village (<<func(''transport_functions'', ''display_bus_timecost'', ''gadukino'', ''communal'')>>)':						gt 'bus', 'gadukino_communal'
+	act 'Take a bus the cemetery outside of St. Petersburg (<<func(''transport_functions'', ''display_bus_timecost'', ''gadukino'', ''graveyard'')>>)':	gt 'bus', 'gadukino_graveyard'
+	act 'Take a bus to the the suburbs of St. Petersburg (<<func(''transport_functions'', ''display_bus_timecost'', ''gadukino'', ''suburbs'')>>)':			gt 'bus', 'gadukino_suburbs'
+end
+
+
+		!!-----------------------!!
+		!!                       !!
+		!!       communal        !!
+		!!                       !!
+		!!-----------------------!!
+
+if $ARGS[0] = 'communal':
+	*clr & cla
+	$menu_loc = 'bus'
+	$menu_arg = 'communal'
+	$location_type = 'public_outdoors'
+	menu_off = 0
+	gs 'stat'
+
+	'<center><img <<$set_imgh>> src="images/locations/system/image_needed.jpg" ></center>'
+	'The bus stop in the communal village'
+	*nl
+	gs 'transport_functions', 'set_bus_wait_time', 'communal'
+	'The next bus in the direction of Gadukino ' + iif(transportVars['bus_wait_gadukino'] = 0, 'is leaving now!', 'leaves in <<transportVars[''bus_wait_gadukino'']>> minutes.')
+	'The next bus in the direction of the suburbs of St. Petersburg ' + iif(transportVars['bus_wait_suburbs'] = 0, 'is leaving now!', 'leaves in <<transportVars[''bus_wait_suburbs'']>> minutes.')
+
+	act 'Walk to the communal village (0:03)': minut += 3 & gt 'dachi'
+
+	if transportVars['bus_wait_gadukino'] <= 60 or transportVars['bus_wait_suburbs'] <= 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.')
+		'The next bus in the direction of the suburbs of St. Petersburg ' + iif(transportVars['bus_wait_suburbs'] = 0, 'is leaving now!', 'leaves in <<transportVars[''bus_wait_suburbs'']>> minutes.')
+
+		if transportVars['buspass_day'] > daystart:
+			*nl
+			func('transport_functions', 'display_buspass_time')
+			act 'Go to platforms': gt 'bus', 'communal_busses'
+		else
+			act 'Buy a ticket': 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.'
+	end
+
+elseif $ARGS[0] = 'communal_tickets':
+	$menu_loc = 'bus'
+	$menu_arg = 'communal_tickets'
+	menu_off = 0
+	
+	act 'Leave the ticket office': gt 'bus', 'communal'
+
+	act 'Look at the bus schedule':
+		*clr & cla
+		gs 'transport_functions', 'display_bus_schedule', 'gs'
+		*nl
+		*nl
+		gs 'transport_functions', 'display_bus_schedule', 'sg'
+		act 'Stop looking at the schedule': gt 'bus', 'communal_tickets'
+	end
+
+	gs 'transport_functions', 'buy_bus_ticket', 'communal', 'gs'
+
+elseif $ARGS[0] = 'communal_busses':
+	$menu_loc = 'bus'
+	$menu_arg = 'communal_busses'
+	menu_off = 0
+
+	gs 'transport_functions', 'set_bus_wait_time', 'communal'
+	'The next bus in the direction of Gadukino ' + iif(transportVars['bus_wait_gadukino'] = 0, 'is leaving now!', 'leaves in <<transportVars[''bus_wait_gadukino'']>> minutes.')
+	'The next bus in the direction of the suburbs of the St. Petersburg suburbs ' + iif(transportVars['bus_wait_suburbs'] = 0, 'is leaving now!', 'leaves in <<transportVars[''bus_wait_suburbs'']>> minutes.')
+
+	act 'Leave the platform': gt 'bus', 'communal'
+
+	act 'Look at the bus schedule':
+		*clr & cla
+		gs 'transport_functions', 'display_bus_schedule', 'gs'
+		*nl
+		*nl
+		gs 'transport_functions', 'display_bus_schedule', 'sg'
+		act 'Stop looking at the schedule': gt 'bus', 'communal_busses'
+	end
+
+	act 'Take a bus to the village of Gadukino (<<func(''transport_functions'', ''display_bus_timecost'', ''communal'', ''gadukino'')>>)':					gt 'bus', 'communal_gadukino'
+	act 'Take a bus the cemetery outside of St. Petersburg (<<func(''transport_functions'', ''display_bus_timecost'', ''communal'', ''graveyard'')>>)':	gt 'bus', 'communal_graveyard'
+	act 'Take a bus to the the suburbs of St. Petersburg (<<func(''transport_functions'', ''display_bus_timecost'', ''communal'', ''suburbs'')>>)':			gt 'bus', 'communal_suburbs'
+end
+
+
+		!!-----------------------!!
+		!!                       !!
+		!!       graveyard       !!
+		!!                       !!
+		!!-----------------------!!
+
+if $ARGS[0] = 'graveyard':
+	*clr & cla
+	$menu_loc = 'bus'
+	$menu_arg = 'graveyard'
+	$location_type = 'public_outdoors'
+	menu_off = 0
+	gs 'stat'
+
+	'<center><img <<$set_imgh>> src="images/locations/system/image_needed.jpg" ></center>'
+	'The cemetery bus stop'
+	*nl
+	gs 'transport_functions', 'set_bus_wait_time', 'graveyard'
+
+	act 'Walk to the graveyard (0:01)': minut += 1 & nroad = 3 & gt 'road'
+
+	if transportVars['bus_wait_gadukino'] <= 60 or transportVars['bus_wait_suburbs'] <= 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.')
+		'The next bus in the direction of the suburbs of St. Petersburg ' + iif(transportVars['bus_wait_suburbs'] = 0, 'is leaving now!', 'leaves in <<transportVars[''bus_wait_suburbs'']>> minutes.')
+		if transportVars['buspass_day'] > daystart:
+			*nl
+			func('transport_functions', 'display_buspass_time')
+			act 'Go to platforms': gt 'bus', 'graveyard_busses'
+		else
+			act 'Buy a ticket': 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.'
+	end
+
+elseif $ARGS[0] = 'graveyard_tickets':
+	$menu_loc = 'bus'
+	$menu_arg = 'graveyard_tickets'
+	menu_off = 0
+	
+	act 'Leave the ticket office': gt 'bus', 'graveyard'
+
+	act 'Look at the bus schedule':
+		*clr & cla
+		gs 'transport_functions', 'display_bus_schedule', 'sg'
+		*nl
+		*nl
+		gs 'transport_functions', 'display_bus_schedule', 'gs'
+		act 'Stop looking at the schedule': gt 'bus', 'graveyard_tickets'
+	end
+
+	gs 'transport_functions', 'buy_bus_ticket', 'graveyard', 'sg'
+
+elseif $ARGS[0] = 'graveyard_busses':
+	$menu_loc = 'bus'
+	$menu_arg = 'graveyard_busses'
+	menu_off = 0
+
+	gs 'transport_functions', 'set_bus_wait_time', 'graveyard'
+	'The next bus in the direction of the suburbs of the St. Petersburg suburbs ' + iif(transportVars['bus_wait_suburbs'] = 0, 'is leaving now!', 'leaves in <<transportVars[''bus_wait_suburbs'']>> minutes.')
+	'The next bus in the direction of Gadukino ' + iif(transportVars['bus_wait_gadukino'] = 0, 'is leaving now!', 'leaves in <<transportVars[''bus_wait_gadukino'']>> minutes.')
+
+	act 'Leave the platform': gt 'bus', 'communal'
+
+	act 'Look at the bus schedule':
+		*clr & cla
+		gs 'transport_functions', 'display_bus_schedule', 'sg'
+		*nl
+		*nl
+		gs 'transport_functions', 'display_bus_schedule', 'gs'
+		act 'Stop looking at the schedule': gt 'bus', 'graveyard_busses'
+	end
+
+	act 'Take a bus to the suburbs of St. Petersburg (<<func(''transport_functions'', ''display_bus_timecost'', ''graveyard'', ''suburbs'')>>)':	gt 'bus', 'graveyard_suburbs'
+	act 'Take a bus to the communal village (<<func(''transport_functions'', ''display_bus_timecost'', ''graveyard'', ''communal'')>>)':			gt 'bus', 'graveyard_communal'
+	act 'Take a bus the village of Gadukino (<<func(''transport_functions'', ''display_bus_timecost'', ''graveyard'', ''gadukino'')>>)':			gt 'bus', 'graveyard_gadukino'
+end
+
+
+		!!-----------------------!!
+		!!                       !!
+		!!        suburbs        !!
+		!!                       !!
+		!!-----------------------!!
+
+if $ARGS[0] = 'suburbs':
+	*clr & cla
+	$menu_loc = 'bus'
+	$menu_arg = 'suburbs'
+	$location_type = 'public_outdoors'
+	menu_off = 0
+	gs 'stat'
+
+	'<center><img <<$set_imgh>> src="images/locations/system/image_needed.jpg" ></center>'
+	'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 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:
+			*nl
+			func('transport_functions', 'display_buspass_time')
+			act 'Go to platforms': gt 'bus', 'suburbs_busses'
+		else
+			act 'Buy a ticket': gt 'bus', 'suburbs_tickets'
+		end
+	else
+		'It''s too late to take the bus. The next one arrives in <<transportVars[''bus_wait_gadukino'']/60>> hours'
+	end
+
+elseif $ARGS[0] = 'suburbs_tickets':
+	$menu_loc = 'bus'
+	$menu_arg = 'suburbs_tickets'
+	menu_off = 0
+	
+	act 'Leave the ticket office': gt 'bus', 'suburbs'
+
+	act 'Look at the bus schedule':
+		*clr & cla
+		gs 'transport_functions', 'display_bus_schedule', 'sg'
+		act 'Stop looking at the schedule': gt 'bus', 'suburbs_tickets'
+	end
+
+	gs 'transport_functions', 'buy_bus_ticket', 'suburbs', 'sg'
+
+elseif $ARGS[0] = 'suburbs_busses':
+	$menu_loc = 'bus'
+	$menu_arg = 'suburbs_busses'
+	menu_off = 0
+
+	gs 'transport_functions', 'set_bus_wait_time', 'suburbs'
+	'The next bus in the direction of the suburbs of the St. Petersburg suburbs ' + iif(transportVars['bus_wait_suburbs'] = 0, 'is leaving now!', 'leaves in <<transportVars[''bus_wait_suburbs'']>> minutes.')
+	'The next bus in the direction of Gadukino ' + iif(transportVars['bus_wait_gadukino'] = 0, 'is leaving now!', 'leaves in <<transportVars[''bus_wait_gadukino'']>> minutes.')
+
+	act 'Leave the platform': gt 'bus', 'suburbs'
+
+	act 'Look at the bus schedule':
+		*clr & cla
+		gs 'transport_functions', 'display_bus_schedule', 'sg'
+		act 'Stop looking at the schedule': gt 'bus', 'suburbs_busses'
+	end
+
+	act 'Take a bus the cemetery outside of St. Petersburg (<<func(''transport_functions'', ''display_bus_timecost'', ''suburbs'', ''graveyard'')>>)':	gt 'bus', 'suburbs_graveyard'
+	act 'Take a bus to the communal village (<<func(''transport_functions'', ''display_bus_timecost'', ''suburbs'', ''communal'')>>)':					gt 'bus', 'suburbs_communal'
+	act 'Take a bus the village of Gadukino (<<func(''transport_functions'', ''display_bus_timecost'', ''suburbs'', ''gadukino'')>>)':					gt 'bus', 'suburbs_gadukino'
+end
+
+
+
+
+	!!============================================!!
+	!!                                            !!
+	!!               Bus Transport                !!
+	!!                                            !!
+	!!============================================!!
+
+
+		!!-----------------------!!
+		!!                       !!
+		!!       community       !!
+		!!                       !!
+		!!-----------------------!!
+
+if $ARGS[0] = 'community_pavstation':
+	$loc = 'bus'
+	$loc_arg = 'pavstation'
+	$location_type = 'public_indoors'
+	menu_off = 1
+	gs 'transport_functions', 'set_bus_wait_time'
+	transportVars['timecost'] = transportVars['bus_time_community_pavstation'] + transportVars['bus_wait_gadukino']
+	minut += transportVars['timecost']
+	gs 'stat'
+
+	transportVars['rand'] = rand(1, 100)
+	if transportVars['rand'] <= 9:
+		gt 'bus_incidental', 'events'
+	elseif transportVars['bus_event_day'] ! daystart:
+		if transportVars['rand'] <= 16:
+			gt 'bus_events', 'events'
+		end
+	end
+
+	'<center><img <<$set_imgh>> src="images/locations/system/image_needed.jpg" ></center>'
+	'After <<transportVars[''timecost'']>> minutes, the bus stops at the Pavlovsk train station bus station.'
+	act 'Get off the bus':
+		if rand(1, 100) <= 5: gt 'bus_incidental', 'end'
+		gt $loc, $loc_arg
+	end
+
+elseif $ARGS[0] = 'community_pushkin':
+	$loc = 'bus'
+	$loc_arg = 'pushkin'
+	$location_type = 'public_indoors'
+	menu_off = 1
+	gs 'transport_functions', 'set_bus_wait_time'
+	transportVars['timecost'] = transportVars['bus_time_community_pushkin'] + transportVars['bus_wait_gadukino']
+	minut += transportVars['timecost']
+	gs 'stat'
+
+	transportVars['rand'] = rand(1, 100)
+	if transportVars['rand'] <= 9:
+		gt 'bus_incidental', 'events'
+	elseif transportVars['bus_event_day'] ! daystart:
+		if transportVars['rand'] <= 16:
+			gt 'bus_events', 'events'
+		end
+	end
+
+	'<center><img <<$set_imgh>> src="images/locations/system/image_needed.jpg" ></center>'
+	'After <<transportVars[''timecost'']>> minutes, the bus stops at the Pushkin bus station.'
+	act 'Get off the bus':
+		if rand(1, 100) <= 5: gt 'bus_incidental', 'end'
+		gt $loc, $loc_arg
+	end
+
+elseif $ARGS[0] = 'community_construction':
+	$loc = 'bus'
+	$loc_arg = 'construction'
+	$location_type = 'public_indoors'
+	menu_off = 1
+	gs 'transport_functions', 'set_bus_wait_time'
+	transportVars['timecost'] = transportVars['bus_time_community_construction'] + transportVars['bus_wait_gadukino']
+	minut += transportVars['timecost']
+	gs 'stat'
+
+	transportVars['rand'] = rand(1, 100)
+	if transportVars['rand'] <= 9:
+		gt 'bus_incidental', 'events'
+	elseif transportVars['bus_event_day'] ! daystart:
+		if transportVars['rand'] <= 16:
+			gt 'bus_events', 'events'
+		end
+	end
+
+	'<center><img <<$set_imgh>> src="images/locations/system/image_needed.jpg" ></center>'
+	'After <<transportVars[''timecost'']>> minutes, the bus stops at the construction site bus station.'
+	act 'Get off the bus':
+		if rand(1, 100) <= 5: gt 'bus_incidental', 'end'
+		gt $loc, $loc_arg
+	end
+
+elseif $ARGS[0] = 'community_gadukino':
+	$loc = 'bus'
+	$loc_arg = 'gadukino'
+	$location_type = 'public_indoors'
+	menu_off = 1
+	gs 'transport_functions', 'set_bus_wait_time'
+	transportVars['timecost'] = transportVars['bus_time_community_gadukino'] + transportVars['bus_wait_gadukino']
+	minut += transportVars['timecost']
+	gs 'stat'
+
+	transportVars['rand'] = rand(1, 100)
+	if transportVars['rand'] <= 9:
+		gt 'bus_incidental', 'events'
+	elseif transportVars['bus_event_day'] ! daystart:
+		if transportVars['rand'] <= 16:
+			gt 'bus_events', 'events'
+		end
+	end
+
+	'<center><img <<$set_imgh>> src="images/locations/system/image_needed.jpg" ></center>'
+	'After <<transportVars[''timecost'']>> minutes, the bus stops at the Gadukino bus station.'
+	act 'Get off the bus':
+		if rand(1, 100) <= 5: gt 'bus_incidental', 'end'
+		gt $loc, $loc_arg
+	end
+end
+
+
+		!!-----------------------!!
+		!!                       !!
+		!!      pavstation       !!
+		!!                       !!
+		!!-----------------------!!
+
+if $ARGS[0] = 'pavstation_community':
+	$loc = 'bus'
+	$loc_arg = 'community'
+	$location_type = 'public_indoors'
+	menu_off = 1
+	gs 'transport_functions', 'set_bus_wait_time'
+	transportVars['timecost'] = transportVars['bus_time_pavstation_community'] + transportVars['bus_wait_pavlovsk']
+	minut += transportVars['timecost']
+	gs 'stat'
+
+	transportVars['rand'] = rand(1, 100)
+	if transportVars['rand'] <= 9:
+		gt 'bus_incidental', 'events'
+	elseif transportVars['bus_event_day'] ! daystart:
+		if transportVars['rand'] <= 16:
+			gt 'bus_events', 'events'
+		end
+	end
+
+	'<center><img <<$set_imgh>> src="images/locations/system/image_needed.jpg" ></center>'
+	'After <<transportVars[''timecost'']>> minutes, the bus stops at the Pavlovsk community center bus station.'
+	act 'Get off the bus':
+		if rand(1, 100) <= 5: gt 'bus_incidental', 'end'
+		gt $loc, $loc_arg
+	end
+
+elseif $ARGS[0] = 'pavstation_pushkin':
+	$loc = 'bus'
+	$loc_arg = 'pushkin'
+	$location_type = 'public_indoors'
+	menu_off = 1
+	gs 'transport_functions', 'set_bus_wait_time'
+	transportVars['timecost'] = transportVars['bus_time_pavstation_pushkin'] + transportVars['bus_wait_gadukino']
+	minut += transportVars['timecost']
+	gs 'stat'
+
+	transportVars['rand'] = rand(1, 100)
+	if transportVars['rand'] <= 9:
+		gt 'bus_incidental', 'events'
+	elseif transportVars['bus_event_day'] ! daystart:
+		if transportVars['rand'] <= 16:
+			gt 'bus_events', 'events'
+		end
+	end
+
+	'<center><img <<$set_imgh>> src="images/locations/system/image_needed.jpg" ></center>'
+	'After <<transportVars[''timecost'']>> minutes, the bus stops at the Pushkin bus station.'
+	act 'Get off the bus':
+		if rand(1, 100) <= 5: gt 'bus_incidental', 'end'
+		gt $loc, $loc_arg
+	end
+
+elseif $ARGS[0] = 'pavstation_construction':
+	$loc = 'bus'
+	$loc_arg = 'construction'
+	$location_type = 'public_indoors'
+	menu_off = 1
+	gs 'transport_functions', 'set_bus_wait_time'
+	transportVars['timecost'] = transportVars['bus_time_pavstation_construction'] + transportVars['bus_wait_gadukino']
+	minut += transportVars['timecost']
+	gs 'stat'
+
+	transportVars['rand'] = rand(1, 100)
+	if transportVars['rand'] <= 9:
+		gt 'bus_incidental', 'events'
+	elseif transportVars['bus_event_day'] ! daystart:
+		if transportVars['rand'] <= 16:
+			gt 'bus_events', 'events'
+		end
+	end
+
+	'<center><img <<$set_imgh>> src="images/locations/system/image_needed.jpg" ></center>'
+	'After <<transportVars[''timecost'']>> minutes, the bus stops at the construction site bus station.'
+	act 'Get off the bus':
+		if rand(1, 100) <= 5: gt 'bus_incidental', 'end'
+		gt $loc, $loc_arg
+	end
+
+elseif $ARGS[0] = 'pavstation_gadukino':
+	$loc = 'bus'
+	$loc_arg = 'gadukino'
+	$location_type = 'public_indoors'
+	menu_off = 1
+	gs 'transport_functions', 'set_bus_wait_time'
+	transportVars['timecost'] = transportVars['bus_time_pavstation_gadukino'] + transportVars['bus_wait_gadukino']
+	minut += transportVars['timecost']
+	gs 'stat'
+
+	transportVars['rand'] = rand(1, 100)
+	if transportVars['rand'] <= 9:
+		gt 'bus_incidental', 'events'
+	elseif transportVars['bus_event_day'] ! daystart:
+		if transportVars['rand'] <= 16:
+			gt 'bus_events', 'events'
+		end
+	end
+
+	'<center><img <<$set_imgh>> src="images/locations/system/image_needed.jpg" ></center>'
+	'After <<transportVars[''timecost'']>> minutes, the bus stops at the Gadukino bus station.'
+	act 'Get off the bus':
+		if rand(1, 100) <= 5: gt 'bus_incidental', 'end'
+		gt $loc, $loc_arg
+	end
+end
+
+
+		!!-----------------------!!
+		!!                       !!
+		!!        pushkin        !!
+		!!                       !!
+		!!-----------------------!!
+
+if $ARGS[0] = 'pushkin_community':
+	$loc = 'bus'
+	$loc_arg = 'community'
+	$location_type = 'public_indoors'
+	menu_off = 1
+	gs 'transport_functions', 'set_bus_wait_time'
+	transportVars['timecost'] = transportVars['bus_time_pushkin_community'] + transportVars['bus_wait_pavlovsk']
+	minut += transportVars['timecost']
+	gs 'stat'
+
+	transportVars['rand'] = rand(1, 100)
+	if transportVars['rand'] <= 9:
+		gt 'bus_incidental', 'events'
+	elseif transportVars['bus_event_day'] ! daystart:
+		if transportVars['rand'] <= 16:
+			gt 'bus_events', 'events'
+		end
+	end
+
+	'<center><img <<$set_imgh>> src="images/locations/system/image_needed.jpg" ></center>'
+	'After <<transportVars[''timecost'']>> minutes, the bus stops at the Pavlovsk community center bus station.'
+	act 'Get off the bus':
+		if rand(1, 100) <= 5: gt 'bus_incidental', 'end'
+		gt $loc, $loc_arg
+	end
+
+elseif $ARGS[0] = 'pushkin_pavstation':
+	$loc = 'bus'
+	$loc_arg = 'pavstation'
+	$location_type = 'public_indoors'
+	menu_off = 1
+	gs 'transport_functions', 'set_bus_wait_time'
+	transportVars['timecost'] = transportVars['bus_time_pushkin_pavstation'] + transportVars['bus_wait_pavlovsk']
+	minut += transportVars['timecost']
+	gs 'stat'
+
+	transportVars['rand'] = rand(1, 100)
+	if transportVars['rand'] <= 9:
+		gt 'bus_incidental', 'events'
+	elseif transportVars['bus_event_day'] ! daystart:
+		if transportVars['rand'] <= 16:
+			gt 'bus_events', 'events'
+		end
+	end
+
+	'<center><img <<$set_imgh>> src="images/locations/system/image_needed.jpg" ></center>'
+	'After <<transportVars[''timecost'']>> minutes, the bus stops at the Pavlovsk train station bus station.'
+	act 'Get off the bus':
+		if rand(1, 100) <= 5: gt 'bus_incidental', 'end'
+		gt $loc, $loc_arg
+	end
+
+elseif $ARGS[0] = 'pushkin_construction':
+	$loc = 'bus'
+	$loc_arg = 'construction'
+	$location_type = 'public_indoors'
+	menu_off = 1
+	gs 'transport_functions', 'set_bus_wait_time'
+	transportVars['timecost'] = transportVars['bus_time_pushkin_construction'] + transportVars['bus_wait_gadukino']
+	minut += transportVars['timecost']
+	gs 'stat'
+
+	transportVars['rand'] = rand(1, 100)
+	if transportVars['rand'] <= 9:
+		gt 'bus_incidental', 'events'
+	elseif transportVars['bus_event_day'] ! daystart:
+		if transportVars['rand'] <= 16:
+			gt 'bus_events', 'events'
+		end
+	end
+
+	'<center><img <<$set_imgh>> src="images/locations/system/image_needed.jpg" ></center>'
+	'After <<transportVars[''timecost'']>> minutes, the bus stops at the construction site bus station.'
+	act 'Get off the bus':
+		if rand(1, 100) <= 5: gt 'bus_incidental', 'end'
+		gt $loc, $loc_arg
+	end
+
+elseif $ARGS[0] = 'pushkin_gadukino':
+	$loc = 'bus'
+	$loc_arg = 'gadukino'
+	$location_type = 'public_indoors'
+	menu_off = 1
+	gs 'transport_functions', 'set_bus_wait_time'
+	transportVars['timecost'] = transportVars['bus_time_pushkin_gadukino'] + transportVars['bus_wait_gadukino']
+	minut += transportVars['timecost']
+	gs 'stat'
+
+	transportVars['rand'] = rand(1, 100)
+	if transportVars['rand'] <= 9:
+		gt 'bus_incidental', 'events'
+	elseif transportVars['bus_event_day'] ! daystart:
+		if transportVars['rand'] <= 16:
+			gt 'bus_events', 'events'
+		end
+	end
+
+	'<center><img <<$set_imgh>> src="images/locations/system/image_needed.jpg" ></center>'
+	'After <<transportVars[''timecost'']>> minutes, the bus stops at the Gadukino bus station.'
+	act 'Get off the bus':
+		if rand(1, 100) <= 5: gt 'bus_incidental', 'end'
+		gt $loc, $loc_arg
+	end
+end
+
+
+		!!-----------------------!!
+		!!                       !!
+		!!     construction      !!
+		!!                       !!
+		!!-----------------------!!
+
+if $ARGS[0] = 'construction_community':
+	$loc = 'bus'
+	$loc_arg = 'community'
+	$location_type = 'public_indoors'
+	menu_off = 1
+	gs 'transport_functions', 'set_bus_wait_time'
+	transportVars['timecost'] = transportVars['bus_time_construction_community'] + transportVars['bus_wait_pavlovsk']
+	minut += transportVars['timecost']
+	gs 'stat'
+
+	transportVars['rand'] = rand(1, 100)
+	if transportVars['rand'] <= 9:
+		gt 'bus_incidental', 'events'
+	elseif transportVars['bus_event_day'] ! daystart:
+		if transportVars['rand'] <= 16:
+			gt 'bus_events', 'events'
+		end
+	end
+
+	'<center><img <<$set_imgh>> src="images/locations/system/image_needed.jpg" ></center>'
+	'After <<transportVars[''timecost'']>> minutes, the bus stops at the Pavlovsk community center bus station.'
+	act 'Get off the bus':
+		if rand(1, 100) <= 5: gt 'bus_incidental', 'end'
+		gt $loc, $loc_arg
+	end
+
+elseif $ARGS[0] = 'construction_pavstation':
+	$loc = 'bus'
+	$loc_arg = 'pavstation'
+	$location_type = 'public_indoors'
+	menu_off = 1
+	gs 'transport_functions', 'set_bus_wait_time'
+	transportVars['timecost'] = transportVars['bus_time_construction_pavstation'] + transportVars['bus_wait_pavlovsk']
+	minut += transportVars['timecost']
+	gs 'stat'
+
+	transportVars['rand'] = rand(1, 100)
+	if transportVars['rand'] <= 9:
+		gt 'bus_incidental', 'events'
+	elseif transportVars['bus_event_day'] ! daystart:
+		if transportVars['rand'] <= 16:
+			gt 'bus_events', 'events'
+		end
+	end
+
+	'<center><img <<$set_imgh>> src="images/locations/system/image_needed.jpg" ></center>'
+	'After <<transportVars[''timecost'']>> minutes, the bus stops at the Pavlovsk train station bus station.'
+	act 'Get off the bus':
+		if rand(1, 100) <= 5: gt 'bus_incidental', 'end'
+		gt $loc, $loc_arg
+	end
+
+elseif $ARGS[0] = 'construction_pushkin':
+	$loc = 'bus'
+	$loc_arg = 'pushkin'
+	$location_type = 'public_indoors'
+	menu_off = 1
+	gs 'transport_functions', 'set_bus_wait_time'
+	transportVars['timecost'] = transportVars['bus_time_construction_pushkin'] + transportVars['bus_wait_pavlovsk']
+	minut += transportVars['timecost']
+	gs 'stat'
+
+	transportVars['rand'] = rand(1, 100)
+	if transportVars['rand'] <= 9:
+		gt 'bus_incidental', 'events'
+	elseif transportVars['bus_event_day'] ! daystart:
+		if transportVars['rand'] <= 16:
+			gt 'bus_events', 'events'
+		end
+	end
+
+	'<center><img <<$set_imgh>> src="images/locations/system/image_needed.jpg" ></center>'
+	'After <<transportVars[''timecost'']>> minutes, the bus stops at the Pushkin bus station.'
+	act 'Get off the bus':
+		if rand(1, 100) <= 5: gt 'bus_incidental', 'end'
+		gt $loc, $loc_arg
+	end
+
+elseif $ARGS[0] = 'construction_gadukino':
+	$loc = 'bus'
+	$loc_arg = 'gadukino'
+	$location_type = 'public_indoors'
+	menu_off = 1
+	gs 'transport_functions', 'set_bus_wait_time'
+	transportVars['timecost'] = transportVars['bus_time_construction_gadukino'] + transportVars['bus_wait_gadukino']
+	minut += transportVars['timecost']
+	gs 'stat'
+
+	transportVars['rand'] = rand(1, 100)
+	if transportVars['rand'] <= 9:
+		gt 'bus_incidental', 'events'
+	elseif transportVars['bus_event_day'] ! daystart:
+		if transportVars['rand'] <= 16:
+			gt 'bus_events', 'events'
+		end
+	end
+
+	'<center><img <<$set_imgh>> src="images/locations/system/image_needed.jpg" ></center>'
+	'After <<transportVars[''timecost'']>> minutes, the bus stops at the Gadukino bus station.'
+	act 'Get off the bus':
+		if rand(1, 100) <= 5: gt 'bus_incidental', 'end'
+		gt $loc, $loc_arg
+	end
+end
+
+
+		!!-----------------------!!
+		!!                       !!
+		!!       gadukino        !!
+		!!                       !!
+		!!-----------------------!!
+
+if $ARGS[0] = 'gadukino_community':
+	$loc = 'bus'
+	$loc_arg = 'community'
+	$location_type = 'public_indoors'
+	menu_off = 1
+	gs 'transport_functions', 'set_bus_wait_time'
+	transportVars['timecost'] = transportVars['bus_time_gadukino_community'] + transportVars['bus_wait_pavlovsk']
+	minut += transportVars['timecost']
+	gs 'stat'
+
+	transportVars['rand'] = rand(1, 100)
+	if transportVars['rand'] <= 9:
+		gt 'bus_incidental', 'events'
+	elseif transportVars['bus_event_day'] ! daystart:
+		if transportVars['rand'] <= 16:
+			gt 'bus_events', 'events'
+		end
+	end
+
+	'<center><img <<$set_imgh>> src="images/locations/system/image_needed.jpg" ></center>'
+	'After <<transportVars[''timecost'']>> minutes, the bus stops at the Pavlovsk community center bus station.'
+	act 'Get off the bus':
+		if rand(1, 100) <= 5: gt 'bus_incidental', 'end'
+		gt $loc, $loc_arg
+	end
+
+elseif $ARGS[0] = 'gadukino_pavstation':
+	$loc = 'bus'
+	$loc_arg = 'pavstation'
+	$location_type = 'public_indoors'
+	menu_off = 1
+	gs 'transport_functions', 'set_bus_wait_time'
+	transportVars['timecost'] = transportVars['bus_time_gadukino_pavstation'] + transportVars['bus_wait_pavlovsk']
+	minut += transportVars['timecost']
+	gs 'stat'
+
+	transportVars['rand'] = rand(1, 100)
+	if transportVars['rand'] <= 9:
+		gt 'bus_incidental', 'events'
+	elseif transportVars['bus_event_day'] ! daystart:
+		if transportVars['rand'] <= 16:
+			gt 'bus_events', 'events'
+		end
+	end
+
+	'<center><img <<$set_imgh>> src="images/locations/system/image_needed.jpg" ></center>'
+	'After <<transportVars[''timecost'']>> minutes, the bus stops at the Pavlovsk train station bus station.'
+	act 'Get off the bus':
+		if rand(1, 100) <= 5: gt 'bus_incidental', 'end'
+		gt $loc, $loc_arg
+	end
+
+elseif $ARGS[0] = 'gadukino_pushkin':
+	$loc = 'bus'
+	$loc_arg = 'pushkin'
+	$location_type = 'public_indoors'
+	menu_off = 1
+	gs 'transport_functions', 'set_bus_wait_time'
+	transportVars['timecost'] = transportVars['bus_time_gadukino_pushkin'] + transportVars['bus_wait_pavlovsk']
+	minut += transportVars['timecost']
+	gs 'stat'
+
+	transportVars['rand'] = rand(1, 100)
+	if transportVars['rand'] <= 9:
+		gt 'bus_incidental', 'events'
+	elseif transportVars['bus_event_day'] ! daystart:
+		if transportVars['rand'] <= 16:
+			gt 'bus_events', 'events'
+		end
+	end
+
+	'<center><img <<$set_imgh>> src="images/locations/system/image_needed.jpg" ></center>'
+	'After <<transportVars[''timecost'']>> minutes, the bus stops at the Pushkin bus station.'
+	act 'Get off the bus':
+		if rand(1, 100) <= 5: gt 'bus_incidental', 'end'
+		gt $loc, $loc_arg
+	end
+
+elseif $ARGS[0] = 'gadukino_construction':
+	$loc = 'bus'
+	$loc_arg = 'construction'
+	$location_type = 'public_indoors'
+	menu_off = 1
+	gs 'transport_functions', 'set_bus_wait_time'
+	transportVars['timecost'] = transportVars['bus_time_gadukino_construction'] + transportVars['bus_wait_pavlovsk']
+	minut += transportVars['timecost']
+	gs 'stat'
+
+	transportVars['rand'] = rand(1, 100)
+	if transportVars['rand'] <= 9:
+		gt 'bus_incidental', 'events'
+	elseif transportVars['bus_event_day'] ! daystart:
+		if transportVars['rand'] <= 16:
+			gt 'bus_events', 'events'
+		end
+	end
+
+	'<center><img <<$set_imgh>> src="images/locations/system/image_needed.jpg" ></center>'
+	'After <<transportVars[''timecost'']>> minutes, the bus stops at the construction site bus station.'
+	act 'Get off the bus':
+		if rand(1, 100) <= 5: gt 'bus_incidental', 'end'
+		gt $loc, $loc_arg
+	end
+
+elseif $ARGS[0] = 'gadukino_communal':
+	$loc = 'bus'
+	$loc_arg = 'communal'
+	$location_type = 'public_indoors'
+	menu_off = 1
+	gs 'transport_functions', 'set_bus_wait_time'
+	transportVars['timecost'] = transportVars['bus_time_gadukino_communal'] + transportVars['bus_wait_suburbs']
+	minut += transportVars['timecost']
+	gs 'stat'
+
+	transportVars['rand'] = rand(1, 100)
+	if transportVars['rand'] <= 9:
+		gt 'bus_incidental', 'events'
+	elseif transportVars['bus_event_day'] ! daystart:
+		if transportVars['rand'] <= 16:
+			gt 'bus_events', 'events'
+		end
+	end
+
+	'<center><img <<$set_imgh>> src="images/locations/system/image_needed.jpg" ></center>'
+	'After <<transportVars[''timecost'']>> minutes, the bus stops at the communal village bus station.'
+	act 'Get off the bus':
+		if rand(1, 100) <= 5: gt 'bus_incidental', 'end'
+		gt $loc, $loc_arg
+	end
+
+elseif $ARGS[0] = 'gadukino_graveyard':
+	$loc = 'bus'
+	$loc_arg = 'graveyard'
+	$location_type = 'public_indoors'
+	menu_off = 1
+	gs 'transport_functions', 'set_bus_wait_time'
+	transportVars['timecost'] = transportVars['bus_time_gadukino_graveyard'] + transportVars['bus_wait_suburbs']
+	minut += transportVars['timecost']
+	gs 'stat'
+
+	transportVars['rand'] = rand(1, 100)
+	if transportVars['rand'] <= 9:
+		gt 'bus_incidental', 'events'
+	elseif transportVars['bus_event_day'] ! daystart:
+		if transportVars['rand'] <= 16:
+			gt 'bus_events', 'events'
+		end
+	end
+
+	'<center><img <<$set_imgh>> src="images/locations/system/image_needed.jpg" ></center>'
+	'After <<transportVars[''timecost'']>> minutes, the bus stops at the graveyard bus station.'
+	act 'Get off the bus':
+		if rand(1, 100) <= 5: gt 'bus_incidental', 'end'
+		gt $loc, $loc_arg
+	end
+
+elseif $ARGS[0] = 'gadukino_suburbs':
+	$loc = 'bus'
+	$loc_arg = 'suburbs'
+	$location_type = 'public_indoors'
+	menu_off = 1
+	gs 'transport_functions', 'set_bus_wait_time'
+	transportVars['timecost'] = transportVars['bus_time_gadukino_suburbs'] + transportVars['bus_wait_suburbs']
+	minut += transportVars['timecost']
+	gs 'stat'
+
+	transportVars['rand'] = rand(1, 100)
+	if transportVars['rand'] <= 9:
+		gt 'bus_incidental', 'events'
+	elseif transportVars['bus_event_day'] ! daystart:
+		if transportVars['rand'] <= 16:
+			gt 'bus_events', 'events'
+		end
+	end
+
+	'<center><img <<$set_imgh>> src="images/locations/system/image_needed.jpg" ></center>'
+	'After <<transportVars[''timecost'']>> minutes, the bus stops at the suburbs bus station.'
+	act 'Get off the bus':
+		if rand(1, 100) <= 5: gt 'bus_incidental', 'end'
+		gt $loc, $loc_arg
+	end
+end
+
+
+		!!-----------------------!!
+		!!                       !!
+		!!       communal        !!
+		!!                       !!
+		!!-----------------------!!
+
+if $ARGS[0] = 'communal_gadukino':
+	$loc = 'bus'
+	$loc_arg = 'gadukino'
+	$location_type = 'public_indoors'
+	menu_off = 1
+	gs 'transport_functions', 'set_bus_wait_time'
+	transportVars['timecost'] = transportVars['bus_time_communal_gadukino'] + transportVars['bus_wait_gadukino']
+	minut += transportVars['timecost']
+	gs 'stat'
+
+	transportVars['rand'] = rand(1, 100)
+	if transportVars['rand'] <= 9:
+		gt 'bus_incidental', 'events'
+	elseif transportVars['bus_event_day'] ! daystart:
+		if transportVars['rand'] <= 16:
+			gt 'bus_events', 'events'
+		end
+	end
+
+	'<center><img <<$set_imgh>> src="images/locations/system/image_needed.jpg" ></center>'
+	'After <<transportVars[''timecost'']>> minutes, the bus stops at the Gadukino bus station.'
+	act 'Get off the bus':
+		if rand(1, 100) <= 5: gt 'bus_incidental', 'end'
+		gt $loc, $loc_arg
+	end
+
+elseif $ARGS[0] = 'communal_graveyard':
+	$loc = 'bus'
+	$loc_arg = 'graveyard'
+	$location_type = 'public_indoors'
+	menu_off = 1
+	gs 'transport_functions', 'set_bus_wait_time'
+	transportVars['timecost'] = transportVars['bus_time_communal_graveyard'] + transportVars['bus_wait_suburbs']
+	minut += transportVars['timecost']
+	gs 'stat'
+
+	transportVars['rand'] = rand(1, 100)
+	if transportVars['rand'] <= 9:
+		gt 'bus_incidental', 'events'
+	elseif transportVars['bus_event_day'] ! daystart:
+		if transportVars['rand'] <= 16:
+			gt 'bus_events', 'events'
+		end
+	end
+
+	'<center><img <<$set_imgh>> src="images/locations/system/image_needed.jpg" ></center>'
+	'After <<transportVars[''timecost'']>> minutes, the bus stops at the graveyard bus station.'
+	act 'Get off the bus':
+		if rand(1, 100) <= 5: gt 'bus_incidental', 'end'
+		gt $loc, $loc_arg
+	end
+
+elseif $ARGS[0] = 'communal_suburbs':
+	$loc = 'bus'
+	$loc_arg = 'suburbs'
+	$location_type = 'public_indoors'
+	menu_off = 1
+	gs 'transport_functions', 'set_bus_wait_time'
+	transportVars['timecost'] = transportVars['bus_time_communal_suburbs'] + transportVars['bus_wait_suburbs']
+	minut += transportVars['timecost']
+	gs 'stat'
+
+	transportVars['rand'] = rand(1, 100)
+	if transportVars['rand'] <= 9:
+		gt 'bus_incidental', 'events'
+	elseif transportVars['bus_event_day'] ! daystart:
+		if transportVars['rand'] <= 16:
+			gt 'bus_events', 'events'
+		end
+	end
+
+	'<center><img <<$set_imgh>> src="images/locations/system/image_needed.jpg" ></center>'
+	'After <<transportVars[''timecost'']>> minutes, the bus stops at the suburbs bus station.'
+	act 'Get off the bus':
+		if rand(1, 100) <= 5: gt 'bus_incidental', 'end'
+		gt $loc, $loc_arg
+	end
+end
+
+
+		!!-----------------------!!
+		!!                       !!
+		!!       graveyard       !!
+		!!                       !!
+		!!-----------------------!!
+
+if $ARGS[0] = 'graveyard_gadukino':
+	$loc = 'bus'
+	$loc_arg = 'gadukino'
+	$location_type = 'public_indoors'
+	menu_off = 1
+	gs 'transport_functions', 'set_bus_wait_time'
+	transportVars['timecost'] = transportVars['bus_time_graveyard_gadukino'] + transportVars['bus_wait_gadukino']
+	minut += transportVars['timecost']
+	gs 'stat'
+
+	transportVars['rand'] = rand(1, 100)
+	if transportVars['rand'] <= 9:
+		gt 'bus_incidental', 'events'
+	elseif transportVars['bus_event_day'] ! daystart:
+		if transportVars['rand'] <= 16:
+			gt 'bus_events', 'events'
+		end
+	end
+
+	'<center><img <<$set_imgh>> src="images/locations/system/image_needed.jpg" ></center>'
+	'After <<transportVars[''timecost'']>> minutes, the bus stops at the Gadukino bus station.'
+	act 'Get off the bus':
+		if rand(1, 100) <= 5: gt 'bus_incidental', 'end'
+		gt $loc, $loc_arg
+	end
+
+elseif $ARGS[0] = 'graveyard_communal':
+	$loc = 'bus'
+	$loc_arg = 'communal'
+	$location_type = 'public_indoors'
+	menu_off = 1
+	gs 'transport_functions', 'set_bus_wait_time'
+	transportVars['timecost'] = transportVars['bus_time_graveyard_communal'] + transportVars['bus_wait_gadukino']
+	minut += transportVars['timecost']
+	gs 'stat'
+
+	transportVars['rand'] = rand(1, 100)
+	if transportVars['rand'] <= 9:
+		gt 'bus_incidental', 'events'
+	elseif transportVars['bus_event_day'] ! daystart:
+		if transportVars['rand'] <= 16:
+			gt 'bus_events', 'events'
+		end
+	end
+
+	'<center><img <<$set_imgh>> src="images/locations/system/image_needed.jpg" ></center>'
+	'After <<transportVars[''timecost'']>> minutes, the bus stops at the communal village bus station.'
+	act 'Get off the bus':
+		if rand(1, 100) <= 5: gt 'bus_incidental', 'end'
+		gt $loc, $loc_arg
+	end
+
+elseif $ARGS[0] = 'graveyard_suburbs':
+	$loc = 'bus'
+	$loc_arg = 'suburbs'
+	$location_type = 'public_indoors'
+	menu_off = 1
+	gs 'transport_functions', 'set_bus_wait_time'
+	transportVars['timecost'] = transportVars['bus_time_graveyard_suburbs'] + transportVars['bus_wait_suburbs']
+	minut += transportVars['timecost']
+	gs 'stat'
+
+	transportVars['rand'] = rand(1, 100)
+	if transportVars['rand'] <= 9:
+		gt 'bus_incidental', 'events'
+	elseif transportVars['bus_event_day'] ! daystart:
+		if transportVars['rand'] <= 16:
+			gt 'bus_events', 'events'
+		end
+	end
+
+	'<center><img <<$set_imgh>> src="images/locations/system/image_needed.jpg" ></center>'
+	'After <<transportVars[''timecost'']>> minutes, the bus stops at the suburbs bus station.'
+	act 'Get off the bus':
+		if rand(1, 100) <= 5: gt 'bus_incidental', 'end'
+		gt $loc, $loc_arg
+	end
+end
+
+
+		!!-----------------------!!
+		!!                       !!
+		!!        suburbs        !!
+		!!                       !!
+		!!-----------------------!!
+
+if $ARGS[0] = 'suburbs_gadukino':
+	$loc = 'bus'
+	$loc_arg = 'gadukino'
+	$location_type = 'public_indoors'
+	menu_off = 1
+	gs 'transport_functions', 'set_bus_wait_time'
+	transportVars['timecost'] = transportVars['bus_time_suburbs_gadukino'] + transportVars['bus_wait_gadukino']
+	minut += transportVars['timecost']
+	gs 'stat'
+
+	transportVars['rand'] = rand(1, 100)
+	if transportVars['rand'] <= 9:
+		gt 'bus_incidental', 'events'
+	elseif transportVars['bus_event_day'] ! daystart:
+		if transportVars['rand'] <= 16:
+			gt 'bus_events', 'events'
+		end
+	end
+
+	'<center><img <<$set_imgh>> src="images/locations/system/image_needed.jpg" ></center>'
+	'After <<transportVars[''timecost'']>> minutes, the bus stops at the Gadukino bus station.'
+	act 'Get off the bus':
+		if rand(1, 100) <= 5: gt 'bus_incidental', 'end'
+		gt $loc, $loc_arg
+	end
+
+elseif $ARGS[0] = 'suburbs_communal':
+	$loc = 'bus'
+	$loc_arg = 'communal'
+	$location_type = 'public_indoors'
+	menu_off = 1
+	gs 'transport_functions', 'set_bus_wait_time'
+	transportVars['timecost'] = transportVars['bus_time_suburbs_communal'] + transportVars['bus_wait_gadukino']
+	minut += transportVars['timecost']
+	gs 'stat'
+
+	transportVars['rand'] = rand(1, 100)
+	if transportVars['rand'] <= 9:
+		gt 'bus_incidental', 'events'
+	elseif transportVars['bus_event_day'] ! daystart:
+		if transportVars['rand'] <= 16:
+			gt 'bus_events', 'events'
+		end
+	end
+
+	'<center><img <<$set_imgh>> src="images/locations/system/image_needed.jpg" ></center>'
+	'After <<transportVars[''timecost'']>> minutes, the bus stops at the communal village bus station.'
+	act 'Get off the bus':
+		if rand(1, 100) <= 5: gt 'bus_incidental', 'end'
+		gt $loc, $loc_arg
+	end
+
+elseif $ARGS[0] = 'suburbs_graveyard':
+	$loc = 'bus'
+	$loc_arg = 'graveyard'
+	$location_type = 'public_indoors'
+	menu_off = 1
+	gs 'transport_functions', 'set_bus_wait_time'
+	transportVars['timecost'] = transportVars['bus_time_suburbs_graveyard'] + transportVars['bus_wait_gadukino']
+	minut += transportVars['timecost']
+	gs 'stat'
+
+	transportVars['rand'] = rand(1, 100)
+	if transportVars['rand'] <= 9:
+		gt 'bus_incidental', 'events'
+	elseif transportVars['bus_event_day'] ! daystart:
+		if transportVars['rand'] <= 16:
+			gt 'bus_events', 'events'
+		end
+	end
+
+	'<center><img <<$set_imgh>> src="images/locations/system/image_needed.jpg" ></center>'
+	'After <<transportVars[''timecost'']>> minutes, the bus stops at the graveyard bus station.'
+	act 'Get off the bus':
+		if rand(1, 100) <= 5: gt 'bus_incidental', 'end'
+		gt $loc, $loc_arg
+	end
+end
+
+
+--- bus ------------------------------------

+ 25 - 0
locations/bus_events.qsrc

@@ -0,0 +1,25 @@
+# bus_events
+
+
+transportVars['bus_event_day'] = daystart
+
+if $ARGS[0] = 'events':
+	transportVars['rand'] = rand(1, 100)
+	if transportVars['rand'] <= 100:
+		gt 'bus_events', 'placeholder'
+	end
+end
+
+
+if $ARGS[0] = 'placeholder':
+	*clr & cla
+	menu_off = 1
+
+	'This is a placeholder event!!'
+	'Cool stuff to be added here!'
+
+	act 'Continue': gt $loc, $loc_arg
+end
+
+
+--- bus_events ------------------------------------

+ 38 - 0
locations/bus_incidental.qsrc

@@ -0,0 +1,38 @@
+# bus_incidental
+
+if $ARGS[0] = 'events':
+	*clr & cla
+	menu_off = 1
+	transportVars['train_event_day'] = daystart
+	gt 'bus_incidental', 'event<<rand(1, 1)>>'
+end
+
+if $ARGS[0] = 'event1':
+	*clr & cla
+	menu_off = 1
+
+	'This is a placeholder incidental event!!'
+	'Cool stuff to be added here!'
+
+	act 'Continue': gt $loc, $loc_arg
+end
+
+
+
+if $ARGS[0] = 'end':
+	*clr & cla
+	menu_off = 1
+	gt 'bus_incidental', 'end<<rand(1, 1)>>'
+end
+
+if $ARGS[0] = 'end1':
+
+	'This is a placeholder end incidental event!!'
+	'Cool stuff to be added here!'
+
+	act 'Continue': gt $loc, $loc_arg
+end
+
+
+
+--- bus_incidental ---------------------------------------

+ 1 - 1
locations/carF.qsrc

@@ -95,7 +95,7 @@ if $ARGS[0] = 'salon':
 	if cardrive = 4:'Through the windshield, you see the lake.'
 	if cardrive = 5:'Through the windshield, you can see the park.'
 	if cardrive = 6:'Through the windshield, you can see the gas station in the city industrial region.'
-	if cardrive = 7:'Through the windshield, you can see the car service centre.'
+	if cardrive = 7:'Through the windshield, you can see the car service center.'
 	if cardrive = 8:'Through the windshield, you see your house in St. Petersburg''s residential area.'
 	if cardrive = 9:'Through the windshield, you can see many of the cars for sale outside the showroom.'
 	if cardrive = 10:'Through the windshield, you can see hookers outside the park.'

+ 1 - 1
locations/cardgame_durak.qsrc

@@ -515,7 +515,7 @@ if $ARGS[0] = 'card_game_rough_sex':
 		'"I want your ass next, bitch", <<$boydesc>> says. "Get on your hands and knees, and offer yourself to me."'
 		'You hesitantly do as he says, spreading your buttocks with your hands once you lower yourself to the ground.'
 		if analplugin = 1:
-			analplugin = 0
+			analplugin = 0 & analplugout = 1
 
 			'<<$boydesc>> laughs: "This would only get in the way. Out you go!", and he tugs the plug out of your ass and tosses it aside.'
 		end

+ 66 - 44
locations/cikl.qsrc

@@ -113,7 +113,7 @@ end
 if week = 7 and masseuse['schedule_update'] ! daystart: gs 'masseuse_schedule','schedule_reset'
 
 !!modelling check
-if model_week ! (daystart - week) / 7:model_job_week = 0
+if model_week ! (daystart - week) / 7 and model['status'] > 0: model_job_week = 0
 
 !!acting strings to set available jobs
 if casting = 1:
@@ -427,12 +427,21 @@ end
 if Enable_auto_tampons =  0 and isprok = 1: isprok = 0 & 'You threw away your used tampon.'
 if Enable_auto_tampons =  0 and isprokp = 1:isprokp = 0 & 'You threw away your used sanitary pad.'
 
+if lactation['nipgrowth'] > 0:
+	tmp = rand(0,2)
+	pcs_nips -= tmp
+	lactation['nipgrowth'] -= tmp
+	killvar 'tmp'
+elseif lactation['nipgrowth'] < 0:
+	lactation['nipgrowth'] = 0
+end
+
 if preg = 1:
 	pregtime = pregchem / 24
 
 	if pregtimes = 0:pregtimes = 1
 
-elseif preg = 2 and pregminut < totminut:
+	elseif preg = 2 and pregminut < totminut:
 	if Enable_nogameover = 0 :
 		cla
 		*clr
@@ -570,43 +579,43 @@ if pregchem > 240:fat += 1
 !!	Pain
 !!------------------------------------------------------------------------------------------------------------
 
-if pain['head'] > 0:pain['head'] -= rand(1,3)
-if pain['hair'] > 0:pain['hair'] -= rand(1,3)
-if pain['ears'] > 0:pain['ears'] -= rand(1,3)
-if pain['eyebrows'] > 0:pain['eyebrows'] -= rand(1,3)
-if pain['eyes'] > 0:pain['eyes'] -= rand(1,3)
-if pain['cheeks'] > 0:pain['cheeks'] -= rand(1,3)
-if pain['nose'] > 0:pain['nose'] -= rand(1,3)
-if pain['mouth'] > 0:pain['mouth'] -= rand(1,3)
-if pain['lips'] > 0:pain['lips'] -= rand(1,3)
-if pain['tongue'] > 0:pain['tongue'] -= rand(1,3)
-if pain['throat'] > 0:pain['throat'] -= rand(1,3)
-if pain['neck'] > 0:pain['neck'] -= rand(1,3)
-if pain['back'] > 0:pain['back'] -= rand(1,3)
-if pain['asscheeks'] > 0:pain['asscheeks'] -= rand(1,3)
-if pain['asshole'] > 0:pain['asshole'] -= rand(1,3)
-if pain['hips'] > 0:pain['hips'] -= rand(1,3)
-if pain['thighs'] > 0:pain['thighs'] -= rand(1,3)
-if pain['legL'] > 0:pain['legL'] -= rand(1,3)
-if pain['legR'] > 0:pain['legR'] -= rand(1,3)
-if pain['feet'] > 0:pain['feet'] -= rand(1,3)
-if pain['toes'] > 0:pain['toes'] -= rand(1,3)
-if pain['shoulders'] > 0:pain['shoulders'] -= rand(1,3)
-if pain['armL'] > 0:pain['armL'] -= rand(1,3)
-if pain['armR'] > 0:pain['armR'] -= rand(1,3)
-if pain['hands'] > 0:pain['hands'] -= rand(1,3)
-if pain['fingers'] > 0:pain['fingers'] -= rand(1,3)
-if pain['chest'] > 0:pain['chest'] -= rand(1,3)
-if pain['breasts'] > 0:pain['breasts'] -= rand(1,3)
-if pain['nipples'] > 0:pain['nipples'] -= rand(1,3)
-if pain['ribs'] > 0:pain['ribs'] -= rand(1,3)
-if pain['tummy'] > 0:pain['tummy'] -= rand(1,3)
-if pain['pubic'] > 0:pain['pubic'] -= rand(1,3)
-if pain['vaginal'] > 0:pain['vaginal'] -= rand(1,3)
-if pain['labia'] > 0:pain['labia'] -= rand(1,3)
-if pain['clitoris'] > 0:pain['clitoris'] -= rand(1,3)
-if pain['urethra'] > 0:pain['urethra'] -= rand(1,3)
-if pain['cervix'] > 0:pain['cervix'] -= rand(1,3)
+if pain['head'] > 0:     pain['head']      -= max(rand(1,3), rand(pain['head']      /2))
+if pain['hair'] > 0:     pain['hair']      -= max(rand(1,3), rand(pain['hair']      /2))
+if pain['ears'] > 0:     pain['ears']      -= max(rand(1,3), rand(pain['ears']      /2))
+if pain['eyebrows'] > 0: pain['eyebrows']  -= max(rand(1,3), rand(pain['eyebrows']  /2))
+if pain['eyes'] > 0:     pain['eyes']      -= max(rand(1,3), rand(pain['eyes']      /2))
+if pain['cheeks'] > 0:   pain['cheeks']    -= max(rand(1,3), rand(pain['cheeks']    /2))
+if pain['nose'] > 0:     pain['nose']      -= max(rand(1,3), rand(pain['nose']      /2))
+if pain['mouth'] > 0:    pain['mouth']     -= max(rand(1,3), rand(pain['mouth']     /2))
+if pain['lips'] > 0:     pain['lips']      -= max(rand(1,3), rand(pain['lips']      /2))
+if pain['tongue'] > 0:   pain['tongue']    -= max(rand(1,3), rand(pain['tongue']    /2))
+if pain['throat'] > 0:   pain['throat']    -= max(rand(1,3), rand(pain['throat']    /2))
+if pain['neck'] > 0:     pain['neck']      -= max(rand(1,3), rand(pain['neck']      /2))
+if pain['back'] > 0:     pain['back']      -= max(rand(1,3), rand(pain['back']      /2))
+if pain['asscheeks'] > 0:pain['asscheeks'] -= max(rand(1,3), rand(pain['asscheeks'] /2))
+if pain['asshole'] > 0:  pain['asshole']   -= max(rand(1,3), rand(pain['asshole']   /2))
+if pain['hips'] > 0:     pain['hips']      -= max(rand(1,3), rand(pain['hips']      /2))
+if pain['thighs'] > 0:   pain['thighs']    -= max(rand(1,3), rand(pain['thighs']    /2))
+if pain['legL'] > 0:     pain['legL']      -= max(rand(1,3), rand(pain['legL']      /2))
+if pain['legR'] > 0:     pain['legR']      -= max(rand(1,3), rand(pain['legR']      /2))
+if pain['feet'] > 0:     pain['feet']      -= max(rand(1,3), rand(pain['feet']      /2))
+if pain['toes'] > 0:     pain['toes']      -= max(rand(1,3), rand(pain['toes']      /2))
+if pain['shoulders'] > 0:pain['shoulders'] -= max(rand(1,3), rand(pain['shoulders'] /2))
+if pain['armL'] > 0:     pain['armL']      -= max(rand(1,3), rand(pain['armL']      /2))
+if pain['armR'] > 0:     pain['armR']      -= max(rand(1,3), rand(pain['armR']      /2))
+if pain['hands'] > 0:    pain['hands']     -= max(rand(1,3), rand(pain['hands']     /2))
+if pain['fingers'] > 0:  pain['fingers']   -= max(rand(1,3), rand(pain['fingers']   /2))
+if pain['chest'] > 0:    pain['chest']     -= max(rand(1,3), rand(pain['chest']     /2))
+if pain['breasts'] > 0:  pain['breasts']   -= max(rand(1,3), rand(pain['breasts']   /2))
+if pain['nipples'] > 0:  pain['nipples']   -= max(rand(1,3), rand(pain['nipples']   /2))
+if pain['ribs'] > 0:     pain['ribs']      -= max(rand(1,3), rand(pain['ribs']      /2))
+if pain['tummy'] > 0:    pain['tummy']     -= max(rand(1,3), rand(pain['tummy']     /2))
+if pain['pubic'] > 0:    pain['pubic']     -= max(rand(1,3), rand(pain['pubic']     /2))
+if pain['vaginal'] > 0:  pain['vaginal']   -= max(rand(1,3), rand(pain['vaginal']   /2))
+if pain['labia'] > 0:    pain['labia']     -= max(rand(1,3), rand(pain['labia']     /2))
+if pain['clitoris'] > 0: pain['clitoris']  -= max(rand(1,3), rand(pain['clitoris']  /2))
+if pain['urethra'] > 0:  pain['urethra']   -= max(rand(1,3), rand(pain['urethra']   /2))
+if pain['cervix'] > 0:   pain['cervix']    -= max(rand(1,3), rand(pain['cervix']    /2))
 
 if painpub = 2:
 	if painpubday + 5 < daystart:
@@ -683,8 +692,6 @@ gs 'stat_sklattrib', 'daycall'
 
 !Update body measurements and base appearnce
 gs 'body', 'DailyUpdate'
-gs 'AppearanceSystem', 'UpdateBaseAppearnce'
-gs 'body_desc'
 
 
 if husband > 0 and husbandrink ! 11:husbandrink = rand(0, 10)
@@ -720,7 +727,12 @@ if shantbog > 0:
 end
 
 petersexday = 0
-klismaday1 = 0
+if cheatKlisma = 0:
+	klismaday = daystart
+	klismaday1 = 1
+else
+	klismaday1 = 0
+end
 
 !!ugly duckling start becoming a swan
 if uglyduck_flag = 1 and hotcat >= 5:
@@ -1060,6 +1072,7 @@ if InSleep = 1: gs 'npc','cleanarrays'
 if therapistWantsSlave > 0:
 	annaclean1 = rand(23,26)
 end
+killvar 'therapistFuckedPussyScene'
 
 !!------------------------------------------------------------------------------------------------------------
 
@@ -1209,10 +1222,19 @@ gs 'homes_properties', 'progress_property_rent_time'
 !!------------- Check for Daily Events for event generator, sets evt_chk variable  ------------------------------------------
 gs 'emp_functions', 'evt_day_chk'
 
-!!------------- Reset used car dealership offers  ------------------------------------------
-if week = 1 and used_car ! 0: killvar 'used_car'
 
 
+!!----------------------------------------------------------------------
+!!---------------------------- WEEKLY RESET ----------------------------
+!!----------------------------------------------------------------------
+if week = 1:
+	!! Reset used car dealership offers 
+	killvar 'used_car'
+
+	!! Reset therapist schedule
+	killvar 'therapist_weekly_block'
+end
+
 !!------------- Advance book loan debt  ------------------------------------------
 if $lib_book_loaned ! '': lib_debt += 50
 

+ 11 - 4
locations/city_center.qsrc

@@ -49,6 +49,11 @@ end
 
 gs 'street_event','city_center', 'extras'
 
+if mother['kickedout_timer'] ! 0 and mother['kickedout_timer'] + 3 <= daystart and hour > 6 and hour <= 15:
+	gs 'mother_chats', 'reconciliation_talk'
+exit
+end
+
 if nichWork = 2:act '<b>GO HOME</b> (Nicholas'' apartment)':gt 'nichApartment'
 
 if shantpopala > 0:
@@ -175,10 +180,12 @@ elseif hour >= 7 and hour <= 20:
 else
 	$desc_txt1 = '<a href="exec:msg ''Aurora talent agency is closed and will reopen at 07:00''">Aurora talent agency</a>'
 end
-if week < 6 and hour >= 9 and hour <= 18:
-	$desc_txt2 = '<a href="exec:gt ''bank'', ''start''">VTB bank</a>'
-elseif week < 5 and hour > 18:
-	$desc_txt2 = '<a href="exec:msg ''VTB bank is closed and will reopen tomorrow at 09:00''">VTB bank</a>'
+if week < 6:
+	if hour >= 9 and hour <= 18:
+		$desc_txt2 = '<a href="exec:gt ''bank'', ''start''">VTB bank</a>'
+	else
+		$desc_txt2 = '<a href="exec:msg ''VTB bank is closed and will reopen at 09:00''">VTB bank</a>'
+	end
 else
 	$desc_txt2 = '<a href="exec:msg ''VTB bank is closed and will reopen on monday at 09:00''">VTB bank</a>'
 end

+ 26 - 26
locations/city_clinic.qsrc

@@ -221,7 +221,7 @@ if $ARGS[0] = 'start':
 				pcs_brace = 0
 				pcs_teeth -= 1
 				'The dentist spends 15 minutes taking off your brace and cleaning up. You look in the mirror afterwards and your teeth are '+iif(pcs_teeth = 0, 'now straight', 'straighter, but can still use some more work.')
-				gs 'AppearanceSystem', 'UpdateBaseAppearnce'
+				gs 'AppearanceSystem', 'UpdateBaseAppearance'
 				gs 'stat'
 			else
 				if pcs_missing_teeth = 1:
@@ -238,7 +238,7 @@ if $ARGS[0] = 'start':
 					'The dentist examinees you and says it will cost 4500 <b>₽</b> to straighten your teeth and that you''ll have to wear a brace for three months. However, he states that he can''t promise they will be completely straight after one treatment.'
 				end
 
-				if money < zubpay and karta < zubpay:
+				if money < zubpay and karta + bankDebtLimit < zubpay:
 					*nl
 					'You do not have enough money to fix your teeth.'
 				else
@@ -259,13 +259,13 @@ if $ARGS[0] = 'start':
 								pcs_teeth = -1
 								'You pay the dentist to brighten and polish your teeth and an hour later, your smile is much brighter and more attractive.'
 							end
-							gs 'AppearanceSystem', 'UpdateBaseAppearnce'
+							gs 'AppearanceSystem', 'UpdateBaseAppearance'
 							gs 'stat'
 
 							act 'Leave the clinic': minut += 5 & gt 'city_residential'
 						end
 					end
-					if karta >= zubpay:
+					if karta + bankDebtLimit >= zubpay:
 						act 'Sort out your teeth (card)':
 							*clr & cla
 							karta -= zubpay
@@ -282,7 +282,7 @@ if $ARGS[0] = 'start':
 								pcs_teeth = -1
 								'You pay the dentist to brighten and polish your teeth and an hour later, your smile is much brighter and more attractive.'
 							end
-							gs 'AppearanceSystem', 'UpdateBaseAppearnce'
+							gs 'AppearanceSystem', 'UpdateBaseAppearance'
 							gs 'stat'
 
 							act 'Leave the clinic': minut += 5 & gt 'city_residential'
@@ -302,7 +302,7 @@ if $ARGS[0] = 'start':
 			gs'stat'
 			'<center><img <<$set_imgh>> src="images/locations/pavlovsk/clinic/optometrist.jpg"></center>'
 			'The optometrist takes you through a series of tests to measure the condition of your eyes.'
-			'He looks at you as if he has bad news for you. "Well, you probably already expected this, but your vision has deteriorated significantly. You''re going to need glasses to be able to read. The prescription I''m writing for you is for a simple set of rimmed glasses which you can pick up at the front desk before you leave.' 
+			'He looks at you as if he has bad news for you. "Well, you probably already expected this, but your vision has deteriorated significantly. You''re going to need glasses to be able to read. The prescription I''m writing for you is for a simple set of rimmed glasses which you can pick up at the front desk before you leave."' 
 			'He hands you a piece of paper. "Of course you can get a different pair elsewhere if you want better looking ones, the details for which ones you need are on your prescription. You can also get laser vision correction if you really don''t want to use glasses, but I''m going to be honest with you: that''s a very expensive procedure."'
 			pcs_nerd += 1
 			glassqw = 2
@@ -325,7 +325,7 @@ if $ARGS[0] = 'start':
 			act 'Return to the entrance': gt 'city_clinic', 'start'
 
 			if glass = 1:
-				if money < 4500 and karta < 4500:
+				if money < 4500 and karta + bankDebtLimit < 4500:
 					*nl
 					'You can''t afford the more stylish glasses.'
 				else
@@ -335,20 +335,20 @@ if $ARGS[0] = 'start':
 							money -= 4500
 							minut += 60
 							glass = 2
-							gs 'AppearanceSystem', 'UpdateBaseAppearnce'
+							gs 'AppearanceSystem', 'UpdateBaseAppearance'
 							gs 'stat'
 							'You buy a new, more stylish pair of glasses.'
 
 							act 'Return to the entrance': gt 'city_clinic', 'start'
 						end
 					end
-					if karta >= 4500:
+					if karta + bankDebtLimit >= 4500:
 						act 'Buy glasses (4,500 <b>₽</b>) (card)':
 							cla
 							karta -= 4500
 							minut += 60
 							glass = 2
-							gs 'AppearanceSystem', 'UpdateBaseAppearnce'
+							gs 'AppearanceSystem', 'UpdateBaseAppearance'
 							gs 'stat'
 							'You buy a new, more stylish pair of glasses.'
 
@@ -359,7 +359,7 @@ if $ARGS[0] = 'start':
 			end
 
 			if glass ! 0:
-				if money < 75000 and karta < 75000:
+				if money < 75000 and karta + bankDebtLimit < 75000:
 					*nl
 					'You can''t afford the laser eye correction surgery.'
 				else
@@ -376,14 +376,14 @@ if $ARGS[0] = 'start':
 							act 'Return to the entrance': gt 'city_clinic', 'start'
 						end
 					end
-					if karta >= 75000:
+					if karta + bankDebtLimit >= 75000:
 						act 'Pay for laser correction (75,000 <b>₽</b>) (card)':
 							cla
 							karta -= 75000
 							minut += 60
 							blizoruk = 0
 							glass = 0
-							gs 'AppearanceSystem', 'UpdateBaseAppearnce'
+							gs 'AppearanceSystem', 'UpdateBaseAppearance'
 							gs 'stat'
 							'You undergo laser eye surgery. Your eyesight is much better now.'
 							act 'Return to the entrance': gt 'city_clinic', 'start'
@@ -419,7 +419,7 @@ if $ARGS[0] = 'stdclinic':
 		end
 	end
 
-	if karta >= 1000:
+	if karta + bankDebtLimit >= 1000:
 		act 'Get tested for STDs (1,000 <b>₽</b>) (card)':
 			karta -= 1000
 			gs 'city_clinic', 'stdcheck'
@@ -427,7 +427,7 @@ if $ARGS[0] = 'stdclinic':
 	end
 
 	if GerpesNapr > 0 and GerpesUkolDay ! daystart:
-		if money < 450 and karta < 450: *nl & 'You can''t afford your herpes shot.'
+		if money < 450 and karta + bankDebtLimit < 450: *nl & 'You can''t afford your herpes shot.'
 
 		if money >= 450:
 			act 'Get herpes shot (450 <b>₽</b>) (cash) You need <<GerpesNapr>> more injections to complete the treatment':
@@ -436,7 +436,7 @@ if $ARGS[0] = 'stdclinic':
 			end
 		end
 
-		if karta >= 450:
+		if karta + bankDebtLimit >= 450:
 			act 'Get herpes shot (450 <b>₽</b>) (card) You need <<GerpesNapr>> more injections to complete the treatment':
 				karta -= 450
 				gs 'city_clinic', 'herpes_shot'
@@ -445,7 +445,7 @@ if $ARGS[0] = 'stdclinic':
 	end
 
 	if TriperNapr > 0 and TriperUkolDay ! daystart:
-		if money < 750 and karta < 750: *nl & 'You can''t afford your gonorrhea shot.'
+		if money < 750 and karta + bankDebtLimit < 750: *nl & 'You can''t afford your gonorrhea shot.'
 
 		if money >= 750:
 			act 'Get gonorrhea shot (750 <b>₽</b>) (cash) You need <<TriperNapr>> more injections to complete the treatment':
@@ -454,7 +454,7 @@ if $ARGS[0] = 'stdclinic':
 			end
 		end
 
-		if karta >= 750:
+		if karta + bankDebtLimit >= 750:
 			act 'Get gonorrhea shot (750 <b>₽</b>) (card) You need <<TriperNapr>> more injections to complete the treatment':
 				karta -= 750
 				gs 'city_clinic', 'gonorrhea_shot'
@@ -463,7 +463,7 @@ if $ARGS[0] = 'stdclinic':
 	end
 
 	if SifNapr = 1:
-		if money < 1000 and karta < 1000: *nl & 'You can''t afford your syphilis shot.'
+		if money < 1000 and karta + bankDebtLimit < 1000: *nl & 'You can''t afford your syphilis shot.'
 
 		if money >= 1000:
 			act 'Get syphilis shot (1,000 <b>₽</b>) (cash)':
@@ -472,7 +472,7 @@ if $ARGS[0] = 'stdclinic':
 			end
 		end
 
-		if karta >= 1000:
+		if karta + bankDebtLimit >= 1000:
 			act 'Get syphilis shot (1,000 <b>₽</b>) (card)':
 				karta -= 1000
 				gs 'city_clinic', 'syphilis_shot'
@@ -481,7 +481,7 @@ if $ARGS[0] = 'stdclinic':
 	end
 
 	if GerpesOnce = 1 and week = 1 and day <= 10:
-		if money < 45000 and karta < 45000: *nl & 'You to go to private clinic and completely cure your herpes.'
+		if money < 45000 and karta + bankDebtLimit < 45000: *nl & 'You to go to private clinic and completely cure your herpes.'
 
 		if money >= 45000:
 			act 'Go to private clinic and completely cure your herpes (45,000 <b>₽</b>) (cash)':
@@ -490,7 +490,7 @@ if $ARGS[0] = 'stdclinic':
 			end
 		end
 
-		if karta >= 45000:
+		if karta + bankDebtLimit >= 45000:
 			act 'Go to private clinic and completely cure your herpes (45,000 <b>₽</b>) (card)':
 				karta -= 45000
 				gs 'city_clinic', 'herpes_cure'
@@ -499,7 +499,7 @@ if $ARGS[0] = 'stdclinic':
 	end
 
 	if KandidozOnce = 1 and week = 1 and day <= 10:
-		if money < 15000 and karta < 15000: *nl & 'You can''t afford to go to the private clinic and completely cure your yeast infection.'
+		if money < 15000 and karta + bankDebtLimit < 15000: *nl & 'You can''t afford to go to the private clinic and completely cure your yeast infection.'
 
 		if money >= 15000:
 			act 'Go to private clinic and completely cure your yeast infection. (15,000 <b>₽</b>) (cash)':
@@ -508,7 +508,7 @@ if $ARGS[0] = 'stdclinic':
 			end
 		end
 
-		if karta >= 15000:
+		if karta + bankDebtLimit >= 15000:
 			act 'Go to private clinic and completely cure your yeast infection. (15,000 <b>₽</b>) (card)':
 				karta -= 15000
 				gs 'city_clinic', 'yeast_cure'
@@ -1728,8 +1728,8 @@ if $ARGS[0] = 'milk_donation':
 			lactation['breastpumped'] = 1
 			'After 15 minutes, the employee detaches the pumps from your breasts.'
 			if lact_ev['poli_milkedvolume'] => 50000:
+				lact_ev['poli_donationsessioncount'] += lact_ev['poli_milkedvolume']/10000
 				lact_ev['poli_temp_var'] = (lact_ev['poli_milkedvolume']/50000)
-				lact_ev['poli_donationsessioncount'] += lact_ev['poli_temp_var'] 
 				lact_ev['poli_totalmilkdonation_count'] += 1
 				lact_ev['poli_totalmilkdonated'] += (lact_ev['poli_temp_var']*50)
 				if lact_ev['poli_temp_var'] >= 12:
@@ -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']*100)
+				lact_ev['poli_donatemoney'] = (lact_ev['poli_donationsessioncount']*15)/10*10
 			else
 				lact_ev['poli_donatemoney'] = 0
 			end

+ 22 - 23
locations/city_experimental_trials.qsrc

@@ -23,11 +23,11 @@ if $ARGS[0] = 'front_desk' or $ARGS[0] = '':
 	minut += 2
 	gs 'stat'
 
-	temp_rand = rand(0, 3)
+	temp_rand = rand(0,3)
 	if temp_rand <= 1 or experimentQW['signed'] = 0:
 		'<center><img <<$set_imgh>> src="images\locations\city\residential\clinic\experiments\desk1.jpg"></center>'
 		*nl
-		'A young woman, dressed in office clothes and wearing glasses is sitting behind a desk.'
+		'A young woman, dressed in office clothes and wearing glasses, is sitting behind a desk.'
 
 	elseif temp_rand <= 2:
 		'<center><img <<$set_imgh>> src="images\locations\city\residential\clinic\experiments\nurse1.jpg"></center>'
@@ -43,14 +43,14 @@ if $ARGS[0] = 'front_desk' or $ARGS[0] = '':
 	killvar 'temp_rand'
 
 	if experimentQW['signed'] ! 0:
-		'She looks up as you walk in and warmely welcomes you in, "Hello miss <<$pcs_lastname>>, how can I help you today?"'
+		'She looks up as you walk in and warmly welcomes you inside. "Hello Miss <<$pcs_lastname>>, how can I help you today?"'
 
 		if $experimentQW['trial_active'] = '':
-			act 'Ask to see which clinical trials are available': gt 'city_experimental_trials_list', 'see_trials'
+			act 'Ask which clinical trials are available': gt 'city_experimental_trials_list', 'see_trials'
 		else
 			if experimentQW['trial_duration'] > 0:
 				*nl
-				'You are currently already taking part in a clinical trial.'
+				'You are already taking part in a clinical trial.'
 			else
 				act 'Report your findings':
 					cla
@@ -60,10 +60,10 @@ if $ARGS[0] = 'front_desk' or $ARGS[0] = '':
 						'"Thank you for your participation, it is invaluable to our research."'
 					else
 						'You report your experience in great detail, noting the various side effects that you''ve noticed.'
-						'"That you so much for your help, you''ve helped us advance our research greatly!"'
-						if rand(0, 2) = 0:
-							temp_tip = 10 * (pcs_intel  * rand(1, 3) / 10)
-							'She adds, "I think your dedication should be rewarded", as she hands you various notes adding up to ₽<<temp_tip>>.'
+						'"Thank you so much for your help! You''ve helped us advance our research greatly!"'
+						if rand(0,2) = 0:
+							temp_tip = 10 * (pcs_intel  * rand(1,3) / 10)
+							'"I think your dedication should be rewarded," she adds and hands you various notes adding up to ₽<<temp_tip>>.'
 							money += temp_tip
 							killvar 'temp_tip'
 						end
@@ -77,25 +77,24 @@ if $ARGS[0] = 'front_desk' or $ARGS[0] = '':
 
 		if experimentQW['times_participated_0'] >= 2 or experimentQW['times_participated_1'] ! 0 or experimentQW['times_participated_2'] ! 0 or experimentQW['times_participated_3'] ! 0:
 			*nl
-			'You also spot a small pharmaceutical stand to the side'
+			'You also spot a small pharmaceutical stand to the side.'
 			act 'Go to the experimental pharmacy': gt 'city_experimental_trials_pharmacy', 'counter'
 		end
 
 		act 'Leave': gt 'city_clinic', 'start'
 
 	else
-		'She looks up as you walk in and warmely welcomes you in, "Hello miss, how can I help you?"'
-		'"I read an advert that you are looking for people to test new treatments... And that you compensate the subjects for it." you reply.'
-		'"Yes, that is true. We are at the forefront of medical research, and you could help push the boundaries of modern medicine. Your contribution will help save countless lives.'
-		'If you want to apply, please read and fill in this form." As she hands over a clipboard.'
+		'She looks up as you walk in and warmely welcomes you inside. "Hello miss, how can I help you?"'
+		'"I read an advert that you''re looking for people to test new treatments? And that you compensate the subjects for it?" you reply.'
+		'"We are at the forefront of medical research, and you could help us push the boundaries of modern medicine. Your contribution will help save countless lives. If you want to apply, please read and fill in this form."'
+		'She hands over a clipboard.'
 		*nl
 
 		if pcs_intel < 10:
-			'The form is filled with legal jargon, but you''re pretty sure that you''ll be paid to be experimented on and those trials won''t harm your health.'
+			'The form is filled with legal jargon, but you''re pretty sure that you''ll be paid to be experimented on and that these trials won''t harm your health.'
 		elseif pcs_intel < 50:
 			'The form is filled with a lot of legal jargon, but you manage to grasp the important parts.'
-			'The clinic will pay you to take an experimental treatment and any consequences are yours to bear.'
-			'They do guarantee your safety.'
+			'The clinic will pay you to take an experimental treatment and any consequences are yours to bear, but they do guarantee your safety.'
 		elseif pcs_intel < 90:
 			'The form explains that you''ll get paid to take part in testing experimental treatments.'
 			'The clinic is not liable for any of the consequences, but they will not jeopardize your general health.'
@@ -103,22 +102,22 @@ if $ARGS[0] = 'front_desk' or $ARGS[0] = '':
 		else
 			'The form is filled with complicated legal jargon intended to confuse the reader, but your sharp mind pierces the veil.'
 			'You will get paid when you take part in testing experimental treatments which can result in permanent changes to your body and mind.'
-			'You are solely responsible in dealing with those consequences and you may not reveal the contents nor results of the treatments, if you do reveal them you can be sued for an exorbitant amount of money.'
-			'Finally, reading between the lines you also manage to grasp that some of these experiments aren''t fully ethical.'
+			'You are solely responsible in dealing with those consequences and you may not reveal the contents nor results of the treatments. If you do so, then you can be sued for an exorbitant amount of money.'
+			'Finally, reading between the lines, you also manage to grasp that some of these experiments aren''t fully ethical.'
 		end
 
 		*nl
 
-		'At the bottom of the document you need to write down your full name, age, and add your signature.'
+		'At the bottom of the document is an area where you need to write down your full name, age and add your signature.'
 		
 		act 'Sign the document':
 			experimentQW['signed'] = 1
 			*clr & cla
 			'<center><img <<$set_imgh>> src="images\locations\city\residential\clinic\experiments\desk1.jpg"></center>'
 			*nl
-			'You hand the signed document back to the woman, who looks it over briefly.'
-			'"Thank you miss <<$pcs_lastname>>, we''ll add you to our database and from now on you can enter our various trials. The contract you signed is legally binding, you are not allowed to discuss your experiences with anybody outside of this clinic."'
-			'She must have noticed the look on your face as she follows this up with "It''s to protect our proprietary technology, so if you talk about what happens here you can leak our discoveries. Everything will be fine if you keep this to yourself."'
+			'You hand the signed document back to the woman.'
+			'"Thank you Miss... <<$pcs_lastname>>," she says as she looks it over. "We''ll add you to our database and you can enter our various trials. The contract you signed is legally binding, so you''re not allowed to discuss your experiences with anybody outside of this clinic."'
+			'"It''s to protect our proprietary technology," she adds, seemingly having noticed the look on your face. "If you talk about what happens here, then you can leak our discoveries. Everything will be fine so long as you keep this to yourself."'
 
 			act 'Return to the front desk': gt 'city_experimental_trials', 'front_desk'
 		end

+ 48 - 48
locations/city_experimental_trials_events.qsrc

@@ -1,7 +1,7 @@
 # city_experimental_trials_events
 
 
-expadj = func('_difficulty','getexpadj')
+!!expadj = func('_difficulty','getexpadj')
 
 	!!=========================!!
 	!!                         !!
@@ -13,7 +13,7 @@ expadj = func('_difficulty','getexpadj')
 !! Change tits
 if $experimentQW['trial_active'] = 'pill_cyan':
 	if experimentQW['random_option'] = 0:
-		if rand(0, 9) < 4:
+		if rand(0,9) < 4:
 			experimentQW['random_option'] = 1
 		else
 			experimentQW['random_option'] = 2
@@ -23,10 +23,10 @@ if $experimentQW['trial_active'] = 'pill_cyan':
 
 	if experimentQW['random_option'] = 1:
 		bodyVars['bust_other'] -= 2
-		'You notice that your breast have shrunk! This must have been that experimental pill you took.'
+		'You notice that your breasts have shrunk! This must have been that experimental pill you took.'
 	else
 		bodyVars['bust_other'] += 2
-		'You notice that your breast have grown! This must have been that experimental pill you took.'
+		'You notice that your breasts have grown! This must have been that experimental pill you took.'
 	end
 
 
@@ -34,7 +34,7 @@ if $experimentQW['trial_active'] = 'pill_cyan':
 elseif $experimentQW['trial_active'] = 'pill_red':
 	if experimentQW['random_option'] = 0:
 
-		temp_rand = rand(0, 29)
+		temp_rand = rand(0,29)
 		if temp_rand < 4:
 			experimentQW['random_option'] = 1
 
@@ -61,49 +61,49 @@ elseif $experimentQW['trial_active'] = 'pill_red':
 			stren_exp -= 2 * stren_xpnxt
 		end
 
-		'You feel weaker, you''ve lost a lot of mussle mass! This must have been that experimental pill you took.'
+		'You seem to have lost a lot of mussle mass and feel weaker. This must have been that experimental pill you took.'
 
 	elseif experimentQW['random_option'] = 2:
 		if stren_lvl < 99:
 			stren_exp += 2 * stren_xpnxt
 		end
 
-		'You feel stronger, you''ve gained a lot of mussle mass! This must have been that experimental pill you took.'
+		'You seem to have gained a lot of mussle mass and feel stronger! This must have been that experimental pill you took.'
 
 	elseif experimentQW['random_option'] = 3:
 		if agil_lvl > 11:
 			agil_exp -= 2 * agil_xpnxt
 		end
 
-		'You feel slower, your agility has deminished! This must have been that experimental pill you took.'
+		'Your agility has deminished and you feel slower. This must have been that experimental pill you took.'
 
 	elseif experimentQW['random_option'] = 4:
 		if agil_lvl < 99:
 			agil_exp += 2 * agil_xpnxt
 		end
 
-		'You feel faster, your agility have increased! This must have been that experimental pill you took.'
+		'Your agility has increased and you feel faster! This must have been that experimental pill you took.'
 	
 	elseif experimentQW['random_option'] = 5:
 		if vital_lvl > 11:
 			vital_exp -= 2 * vital_xpnxt
 		end
 
-		'You feel winded, your endurance has decreased! This must have been that experimental pill you took.'
+		'Your endurance has decreased! This must have been that experimental pill you took.'
 	
 	else
 		if vital_lvl < 99:
 			vital_exp += 2 * vital_xpnxt
 		end
 
-		'You feel calm, your endurance has increased! This must have been that experimental pill you took.'
+		'Your endurance has increased! This must have been that experimental pill you took.'
 	end
 
 
 !! Change intel, cha, perception?
 elseif $experimentQW['trial_active'] = 'pill_blue':
 	if experimentQW['random_option'] = 0:
-		temp_rand = rand(0, 39)
+		temp_rand = rand(0,39)
 		if temp_rand < 4:
 			experimentQW['random_option'] = 1
 
@@ -136,35 +136,35 @@ elseif $experimentQW['trial_active'] = 'pill_blue':
 			intel_exp -= 2 * intel_xpnxt
 		end
 
-		'You feel dumber, your intelligence has decreased! This must have been that experimental pill you took.'
+		'Your intelligence has decreased and you feel dumber. This must have been that experimental pill you took.'
 
 	elseif experimentQW['random_option'] = 2:
 		if intel_lvl < 99:
 			intel_exp += 2 * intel_xpnxt
 		end
 
-		'You feel smarter, your intelligence has increased! This must have been that experimental pill you took.'
+		'Your intelligence has increased and you feel smarter! This must have been that experimental pill you took.'
 
 	elseif experimentQW['random_option'] = 3:
 		if react_lvl > 11:
 			react_exp -= 2 * react_xpnxt
 		end
 
-		'You feel slower, your reactions have deminished! This must have been that experimental pill you took.'
+		'Your reaction time has deminished and you feel slower. This must have been that experimental pill you took.'
 
 	elseif experimentQW['random_option'] = 4:
 		if react_lvl < 99:
 			react_exp += 2 * react_xpnxt
 		end
 
-		'You feel faster, your reactions have quickened! This must have been that experimental pill you took.'
+		'Your reaction time has quickened and you feel faster! This must have been that experimental pill you took.'
 
 	elseif experimentQW['random_option'] = 5:
 		if chrsm_lvl > 11:
 			chrsm_exp -= 2 * chrsm_xpnxt
 		end
 
-		'You feel less charismatic! This must have been that experimental pill you took.'
+		'You feel less charismatic. This must have been that experimental pill you took.'
 
 	elseif experimentQW['random_option'] = 6:
 		if chrsm_lvl < 99:
@@ -178,7 +178,7 @@ elseif $experimentQW['trial_active'] = 'pill_blue':
 			prcptn_exp -= 2 * prcptn_xpnxt
 		end
 
-		'You feel less perceptive! This must have been that experimental pill you took.'
+		'You feel less perceptive. This must have been that experimental pill you took.'
 
 	else
 		if prcptn_lvl < 99:
@@ -192,7 +192,7 @@ elseif $experimentQW['trial_active'] = 'pill_blue':
 !! Change skin
 elseif $experimentQW['trial_active'] = 'pill_yellow':
 	if experimentQW['random_option'] = 0:
-		temp_rand = rand(0, 9)
+		temp_rand = rand(0,9)
 		if temp_rand < 3:
 			experimentQW['random_option'] = 1
 
@@ -246,11 +246,11 @@ elseif $experimentQW['trial_active'] = 'pill_yellow':
 			if pcs_tan < 0: pcs_tan = 0
 
 			*nl
-			'Your skin pleasantly tingles, blemishes and your tan have faded, increasing your looks. This must have been that experimental pill you took.'
+			'Your skin pleasantly tingles and your blemishes and tan have faded, increasing your looks. This must have been that experimental pill you took.'
 
 		else
 			*nl
-			'Your skin pleasantly tingles, blemishes have faded, increasing your looks. This must have been that experimental pill you took.'
+			'Your skin pleasantly tingles and your blemishes have faded, increasing your looks. This must have been that experimental pill you took.'
 		end
 
 	else
@@ -259,23 +259,23 @@ elseif $experimentQW['trial_active'] = 'pill_yellow':
 
 		if pcs_tan > 0:
 			*nl
-			'Your skin pleasantly tingles, blemishes have faded and your tanned deepened, increasing your looks. This must have been that experimental pill you took.'
+			'Your skin pleasantly tingles, your blemishes have faded and your tanned deepened, increasing your looks. This must have been that experimental pill you took.'
 
 		else
 			*nl
-			'Your skin pleasantly tingles, blemishes have faded and your skin has become tanned, increasing your looks. This must have been that experimental pill you took.'
+			'Your skin pleasantly tingles, your blemishes have faded and your skin has become tanned, increasing your looks. This must have been that experimental pill you took.'
 		end
 
 		pcs_tan += 2
 	end
 
-	gs 'body', 'UpdateBaseAppearnce'
+	gs 'body', 'UpdateBaseAppearance'
 
 
 !! Change butt
 elseif $experimentQW['trial_active'] = 'pill_orange':
 	if experimentQW['random_option'] = 0:
-		if rand(0, 9) < 5:
+		if rand(0,9) < 5:
 			experimentQW['random_option'] = 1
 		else
 			experimentQW['random_option'] = 2
@@ -301,7 +301,7 @@ elseif $experimentQW['trial_active'] = 'pill_orange':
 elseif $experimentQW['trial_active'] = 'pill_violet':
 	if experimentQW['random_option'] = 0:
 		!! 40% chance of decreasing your inhib_exp
-		if rand(0, 9) < 4:
+		if rand(0,9) < 4:
 			experimentQW['random_option'] = 1
 
 		!! 60% chance of increasing your tits
@@ -314,20 +314,20 @@ elseif $experimentQW['trial_active'] = 'pill_violet':
 		!! correct amount??
 		inhib_exp -= 50
 		*nl
-		'You feel less outgoing and more ashamed, your inhibition has lowered. This must have been that experimental pill you took.'
+		'Your inhibition has lowered and you feel less outgoing and more ashamed. This must have been that experimental pill you took.'
 
 	else
 		!! correct amount??
 		inhib_exp += 50
 		*nl
-		'You feel more outgoing and less ashamed, your inhibition has increased. This must have been that experimental pill you took.'
+		'Your inhibition has increased and you feel more outgoing and less ashamed. This must have been that experimental pill you took.'
 	end
 
 
 !! Change min_arousal
 elseif $experimentQW['trial_active'] = 'pill_brown':
 	if experimentQW['random_option'] = 0:
-		if rand(0, 9) < 4 and min_arousal > 0:
+		if rand(0,9) < 4 and min_arousal > 0:
 			experimentQW['random_option'] = 1
 		else
 			experimentQW['random_option'] = 2
@@ -353,7 +353,7 @@ elseif $experimentQW['trial_active'] = 'pill_brown':
 elseif $experimentQW['trial_active'] = 'pill_purple':
 	if experimentQW['random_option'] = 0:
 		!! 55% chance.
-		if rand(0, 19) < 11 or clit_size = 0:
+		if rand(0,19) < 11 or clit_size = 0:
 			experimentQW['random_option'] = 1
 		else
 			experimentQW['random_option'] = 2
@@ -361,7 +361,7 @@ elseif $experimentQW['trial_active'] = 'pill_purple':
 	end
 
 	if experimentQW['random_option'] = 1:
-		if rand(0, 1) = 0:
+		if rand(0,1) = 0:
 			*nl
 			'You feel a tingle in your clit that quickly vanishes. This must have been that experimental pill you took.'
 
@@ -372,7 +372,7 @@ elseif $experimentQW['trial_active'] = 'pill_purple':
 		end
 
 	else
-		if rand(0, 1) = 0:
+		if rand(0,1) = 0:
 			*nl
 			'You feel a tingle in your clit that quickly vanishes. This must have been that experimental pill you took.'
 
@@ -416,7 +416,7 @@ elseif $experimentQW['trial_active'] = 'pill_gray':
 		killvar 'temp_will_loss'
 
 		*nl
-		'You feel your mental energy drain, and you permanently lose some willpower.'
+		'You feel your mental energy drain and you permanently lose some willpower.'
 	end
 
 
@@ -427,7 +427,7 @@ elseif $experimentQW['trial_active'] = 'pill_pink':
 		bimbolevel += 1
 
 		*nl
-		'A pink mist fills your mind and clouds your thoughts, you want to giggle and be bubbly. This must have been that experimental pill you took.'
+		'A pink mist fills your mind and clouds your thoughts. You want to giggle and be bubbly. This must have been that experimental pill you took.'
 
 	else
 		temp_will_loss = rand(2, 5)
@@ -436,7 +436,7 @@ elseif $experimentQW['trial_active'] = 'pill_pink':
 		will_counter = 0
 		killvar 'temp_will_loss'
 		*nl
-		'You feel your mental energy drain, and you permanently lose some willpower.'
+		'You feel your mental energy drain and you permanently lose some willpower.'
 	end
 end
 
@@ -453,7 +453,7 @@ if $experimentQW['trial_active'] = 'breast_cream':
 
 	if experimentQW['trial_duration'] > 1:
 		*nl
-		'You notice that your breast have grown! This must have been that experimental breast cream.'
+		'You notice that your breasts have grown! This must have been that experimental breast cream.'
 
 	else
 		if lactation['active'] <= 0:
@@ -482,7 +482,7 @@ if $experimentQW['trial_active'] = 'hair_cream':
 	defcurly = rand(0, 1)
 
 	if experimentQW['trial_duration'] > 1:
-		pcs_haircol = rand(0, 22)
+		pcs_haircol = rand(0,22)
 		*nl
 		'You notice that your hair has lengthened and changed in color! This must have been that experimental hair extension shampoo.'
 
@@ -518,7 +518,7 @@ if $experimentQW['trial_active'] = 'aphrodisiac_pill':
 		if pcs_traits['easy_orgams'] < 2: pcs_traits['easy_orgams'] = 2
 		
 		*nl
-		'You feel a heat spreading from stomach moving towards your pussy. The heat pulses and you find yourself in the grips of an intense orgasm! You feel like it''ll be easier to orgasm from now on. This must have been that experimental aphrodisiac.'
+		'You feel a heat spreading from your stomach and moving towards your pussy. The heat pulses and you find yourself in the grips of an intense orgasm! You feel like it''ll be easier to orgasm from now on. This must have been that experimental aphrodisiac.'
 	end
 end
 
@@ -536,25 +536,25 @@ if $experimentQW['trial_active'] = 'butt_injection':
 
 	if experimentQW['trial_duration'] >= 4:
 		*nl
-		'You feel a warmth pulsing in your ass and you can feel your bottom expanding. This must have been that experimental butt injection.'
+		'You feel a warmth pulsing in your ass and can feel it growing in size. This must have been that experimental butt injection.'
 	else
 		min_arousal += 10
 		pcs_horny += 10
 
-		pcs_ass += rand(5, 10) + (3 - experimentQW['trial_duration'])
+		pcs_ass += rand(5,10) + (3 - experimentQW['trial_duration'])
 		if pcs_ass > 30: pcs_ass = 30
 
-		ashrink -= rand(2, 4)
+		ashrink -= rand(2,4)
 		if ashrink < 0: ashrink = 0
 
-		ashrinkdays += rand(2, 4)
+		ashrinkdays += rand(2,4)
 		if ashrinkdays > 10: ashrinkdays = 10
 
-		agape[4] += rand(5, 10) + (3 - experimentQW['trial_duration'])
+		agape[4] += rand(5,10) + (3 - experimentQW['trial_duration'])
 		if agape[4] > 60: agape[4] = 60
 
 		*nl
-		'You feel a warmth pulsing in your ass, heat radiation from your puckered hole. You can feel your ass expanding and you crave anal. This must have been that experimental butt injection.'
+		'You feel a warmth pulsing in your ass and heat radiates from your puckered hole. You can feel your ass expanding and you crave anal. This must have been that experimental butt injection.'
 	end
 end
 
@@ -569,18 +569,18 @@ end
 if $experimentQW['trial_active'] = 'fertility_shot':
 	if experimentQW['trial_duration'] = 3:
 		if min_arousal < 20: min_arousal = 20
-		if pcs_horney < 20: pss_horny = 20
+		if pcs_horny < 20: pcs_horny = 20
 		
 		*nl
 		'You feel a heat radiate from your womb, awakening your arousal. This must have been that experimental fertility shot.'
 	elseif experimentQW['trial_duration'] = 2:
 		if min_arousal < 40: min_arousal = 40
-		if pcs_horney < 40: pss_horny = 40
+		if pcs_horny < 40: pcs_horny = 40
 		*nl
 		'You feel a heat radiate from your womb, awakening your arousal. This must have been that experimental fertility shot.'
 	else
 		if min_arousal < 50: min_arousal = 50
-		if pcs_horney < 50: pss_horny = 50
+		if pcs_horny < 50: pcs_horny = 50
 		pcs_traits['hyper_fertile'] = 1
 		*nl
 		'You feel a heat radiate from your womb, awakening your arousal. This must have been that experimental fertility shot.'
@@ -603,7 +603,7 @@ if experimentQW['trial_duration'] <= 0:
 	msg 'You should visit the clinical trial desk at the city clinic and report your experiences.'
 end
 
-killvar 'exppadj'
+!!killvar 'exppadj'
 
 gs 'stat'
 

+ 55 - 52
locations/city_experimental_trials_list.qsrc

@@ -67,7 +67,8 @@ if $ARGS[0] = 'see_trials':
 	'You look through the long list of various available clinical trials and the following stick out:'
 	*nl
 	*nl
-	*pl '<center><table align="center" width=80%>'
+	*p '<center><table align="center" width=80%>'
+
 	cetl_i = 0
 	:loop_start
 		$temp_bgcolor = func('themes', 'alt_color', $temp_bgcolor)
@@ -75,15 +76,15 @@ if $ARGS[0] = 'see_trials':
 		if trial_maxs[cetl_i] = -1 or experimentQW['times_participated_<<cetl_i>>'] < trial_maxs[cetl_i]:
 			$temp_text += '<tr><td bgcolor="<<$temp_bgcolor>>" align="center"><a href="exec: gt ''city_experimental_trials_list'', ''<<$trial_sections[cetl_i]>>''"><<$trial_names[cetl_i]>></a>'
 		else
-			$temp_text += '<tr><td bgcolor="<<$temp_bgcolor>>" align="center"><font color="black"><<$trial_names[cetl_i]>></font>'
+			$temp_text += '<tr><td bgcolor="<<$temp_bgcolor>>" align="center"><font color="<<$fcolor>>"><<$trial_names[cetl_i]>></font>'
 		end
-		$temp_text += '</td> <td bgcolor="<<$temp_bgcolor>>" align="right"><font color="black">₽<<trial_pays[cetl_i]>></font></td></tr>'
+		$temp_text += '</td> <td bgcolor="<<$temp_bgcolor>>" align="right"><font color="<<$fcolor>>">₽<<trial_pays[cetl_i]>></font></td></tr>'
 
-		*pl '<<$temp_text>>'
+		*p '<<$temp_text>>'
 
 		cetl_i += 1
 	if cetl_i < arrsize('$trial_names'): jump 'loop_start'
-	*pl '</table></center>'
+	*p '</table></center>'
 
 	killvar '$temp_bgcolor'
 	killvar 'loop_start'
@@ -106,11 +107,11 @@ if $ARGS[0] = $trial_sections[0]:
 
 	minut += 2
 	
-	!!Image of the desk, or a experimental trials folder.
+	!!Image of the desk, or an experimental trials folder
 	'<center><img <<$set_imgh>> src="images\system\image_needed.png"></center>'
 
-	'We have developed a range of enhancement pills that are designed to improve body and mood. They''ve just been approved for human trials, so we''re still cataloguing the effects.'
-	'The following are expected: mood swings, aches, itches, rashes, and physical changes.'
+	'We have developed a range of enhancement pills that are designed to improve both body and mood. They''ve just been approved for human trials, so we''re still cataloguing the effects.'
+	'The following are expected: mood swings, aches, itches, rashes and physical changes.'
 	
 	act 'Sign up':
 		$experimentQW['trial_active'] = $trial_names[0]
@@ -120,7 +121,7 @@ if $ARGS[0] = $trial_sections[0]:
 		gs 'stat'
 
 		*clr & cla
-		if rand(0, 1) = 0:
+		if rand(0,1) = 0:
 			$temp_doc = $exp_docs[0]
 			'<center><img <<$set_imgh>> src="images\locations\city\residential\clinic\experiments\doc1.jpg"></center>'
 		else
@@ -128,45 +129,45 @@ if $ARGS[0] = $trial_sections[0]:
 			'<center><img <<$set_imgh>> src="images\locations\city\residential\clinic\experiments\doc2.jpg"></center>'
 		end
 
-		'You are approached by a doctor in a white lab coat, his name neatly sown on the chest tells you it''s <<$temp_doc>>. "Miss <<$pcs_lastname>>? Please follow me."'
+		'You are approached by a doctor in a white lab coat, <<$temp_doc>> neatly sown on the chest. "Miss <<$pcs_lastname>>? Please follow me."'
 		*nl
 		'You are guided through narrow hallways until you end up in <<$temp_doc>>''s private office, where you take a seat in one of the free chairs available.'
 
-		temp_rand = rand(0, 89)
+		temp_rand = rand(0,89)
 		!! Change tits
 		if temp_rand < 10:
 			$temp_pill_color = 'cyan'
 			$experimentQW['trial_active']     = 'pill_cyan'
 			$experimentQW['pill_cyan_taken'] += 1
-			 experimentQW['trial_duration']   = rand(1, 3)
+			 experimentQW['trial_duration']   = rand(1,3)
 
 		!! Change stren, vital, or agil
 		elseif temp_rand < 20:
 			$temp_pill_color = 'red'
 			$experimentQW['trial_active']    = 'pill_red'
 			$experimentQW['pill_red_taken'] += 1
-			 experimentQW['trial_duration']  = rand(2, 4)
+			 experimentQW['trial_duration']  = rand(2,4)
 
 		!! Change intel, cha, perception?
 		elseif temp_rand < 30:
 			$temp_pill_color = 'blue'
 			$experimentQW['trial_active']     = 'pill_blue'
 			$experimentQW['pill_blue_taken'] += 1
-			 experimentQW['trial_duration']   = rand(2, 4)
+			 experimentQW['trial_duration']   = rand(2,4)
 
 		!! Change skin
 		elseif temp_rand < 40:
 			$temp_pill_color = 'yellow'
 			$experimentQW['trial_active']       = 'pill_yellow'
 			$experimentQW['pill_yellow_taken'] += 1
-			 experimentQW['trial_duration']     = rand(2, 5)
+			 experimentQW['trial_duration']     = rand(2,5)
 
 		!! Change butt
 		elseif temp_rand < 50:
 			$temp_pill_color = 'orange'
 			$experimentQW['trial_active']       = 'pill_orange'
 			$experimentQW['pill_orange_taken'] += 1
-			 experimentQW['trial_duration']     = rand(2, 4)
+			 experimentQW['trial_duration']     = rand(2,4)
 
 		!! Change inhib
 		elseif temp_rand < 60:
@@ -180,14 +181,14 @@ if $ARGS[0] = $trial_sections[0]:
 			$temp_pill_color = 'brown'
 			$experimentQW['trial_active']      = 'pill_brown'
 			$experimentQW['pill_brown_taken'] += 1
-			 experimentQW['trial_duration']    = rand(2, 4)
+			 experimentQW['trial_duration']    = rand(2,4)
 		
 		!! Change clit
 		elseif temp_rand < 70:
 			$temp_pill_color = 'purple'
 			$experimentQW['trial_active']     = 'pill_purple'
-			$experimentQW['pill_cyan_taken'] += 1
-			 experimentQW['trial_duration']   = rand(2, 4)
+			$experimentQW['pill_purple_taken'] += 1
+			 experimentQW['trial_duration']   = rand(2,4)
 
 		!! Change alko_status
 		elseif temp_rand < 80:
@@ -223,7 +224,7 @@ if $ARGS[0] = $trial_sections[0]:
 			minut += 3
 			*clr & cla
 			'<center><img <<$set_imgh>> src="images\locations\city\residential\clinic\experiments\pill<<rand(2, 4)>>.jpg"></center>'
-			'The doctor observes as you swallow the pill and then makes a note on a clipboard. "Thank you for your participation miss <<$pcs_lastname>>, we''ll speak again soon."'
+			'The doctor observes as you swallow the pill and then makes a note on a clipboard. "Thank you for your participation, Miss <<$pcs_lastname>>. We''ll speak again soon."'
 			gs 'city_experimental_trials_list', 'act_return', trial_pays[0]
 		end
 	end
@@ -239,7 +240,7 @@ elseif $ARGS[0] = $trial_sections[1]:
 	$loc_arg = $trial_sections[1]
 
 	minut += 2
-	'We have developed a breast cream, based on natural hormones, which enhances the natural breast growth leading to fuller and natural looking breasts.'
+	'We have developed a cream, based on natural hormones, which enhances the natural growth of breasts, leading to fuller and more natural looking breasts.'
 	'No side effects are listed for this clinical trial.'
 
 	act 'Sign up':
@@ -252,7 +253,7 @@ elseif $ARGS[0] = $trial_sections[1]:
 		gs 'stat'
 
 		*clr & cla
-		if rand(0, 1) = 0:
+		if rand(0,1) = 0:
 			$temp_doc = $exp_docs[0]
 			'<center><img <<$set_imgh>> src="images\locations\city\residential\clinic\experiments\doc1.jpg"></center>'
 		else
@@ -260,7 +261,7 @@ elseif $ARGS[0] = $trial_sections[1]:
 			'<center><img <<$set_imgh>> src="images\locations\city\residential\clinic\experiments\doc2.jpg"></center>'
 		end
 
-		'You are approached by a doctor in a white lab coat, his name neatly sown on the chest tells you it''s <<$temp_doc>>. "Miss <<$pcs_lastname>>? Please follow me."'
+		'You are approached by a doctor in a white lab coat, <<$temp_doc>> neatly sown on the chest. "Miss <<$pcs_lastname>>? Please follow me."'
 		*nl
 		'You are guided through narrow hallways until you end up in <<$temp_doc>>''s private office, where he gestures you lie on the exam table. "Please lie down and expose your chest."'
 
@@ -270,8 +271,8 @@ elseif $ARGS[0] = $trial_sections[1]:
 			gs 'stat'
 			*clr & cla
 			'<center><img <<$set_imgh>> src="images\locations\city\residential\clinic\experiments\bustcream1.jpg"></center>'
-			'<<$temp_doc>> puts on a pair of latex gloves, grabs a generic white tube, squeezes a large amount of white cream in his hands, and starts massaging it into your breasts.'
-			'The massage continues for about a minute, at which point <<$temp_doc>> steps away and takes of his gloves. "Thank you for your participation miss <<$pcs_lastname>>, you can get dressed now and we''ll speak again soon."'
+			'<<$temp_doc>> puts on a pair of latex gloves and grabs a generic white tube. Squeezing a large amount of white cream into his hands, he starts massaging it into your breasts.'
+			'The massage continues for about a minute, at which point <<$temp_doc>> steps away and takes off his gloves. "Thank you for your participation, Miss <<$pcs_lastname>>. We''ll speak again soon."'
 
 			gs 'city_experimental_trials_list', 'act_return', trial_pays[1]
 		end
@@ -282,27 +283,27 @@ elseif $ARGS[0] = $trial_sections[1]:
 
 
 !! Hair extension shampoo
-elseif $ARGS[0] = $trial_section[2]:
+elseif $ARGS[0] = $trial_sections[2]:
 	$menu_loc = 'city_experimental_trials_list'
-	$menu_arg = $trial_section[2]
+	$menu_arg = $trial_sections[2]
 	 menu_off = 0
-	$loc_arg = $trial_section[2]
+	$loc_arg = $trial_sections[2]
 
 	minut += 2
-	'We have developed a hair extension shampoo, which enhances your natural hair growth leading to longer, fuller and glossier hair.'
+	'We have developed a hair extension shampoo which enhances your natural hair growth, leading to longer, fuller and glossier hair.'
 	'No side effects are listed for this clinical trial.'
 
 	act 'Sign up':
 		 experimentQW['times_participated_2'] += 1
-		$experimentQW['trial_active']          = $trial_sections[2]
-		 experimentQW['trial_duration']        =  trial_duration[2]
+		$experimentQW['trial_active'] = $trial_sections[2]
+		 experimentQW['trial_duration'] = trial_durations[2]
 
 		menu_off = 1
 		minut += 2
 		gs 'stat'
 
 		*clr & cla
-		if rand(0, 1) = 0:
+		if rand(0,1) = 0:
 			$temp_doc = $exp_docs[0]
 			'<center><img <<$set_imgh>> src="images\locations\city\residential\clinic\experiments\doc1.jpg"></center>'
 		else
@@ -310,7 +311,7 @@ elseif $ARGS[0] = $trial_section[2]:
 			'<center><img <<$set_imgh>> src="images\locations\city\residential\clinic\experiments\doc2.jpg"></center>'
 		end
 
-		'You are approached by a doctor in a white lab coat, his name neatly sown on the chest tells you it''s <<$temp_doc>>. "Miss <<$pcs_lastname>>? Please follow me."'
+		'You are approached by a doctor in a white lab coat, <<$temp_doc>> neatly sown on the chest. "Miss <<$pcs_lastname>>? Please follow me."'
 		*nl
 		'You are guided through narrow hallways until you end up in <<$temp_doc>>''s private office, where he gestures you lie on the exam table. "Please lie down."'
 
@@ -319,8 +320,8 @@ elseif $ARGS[0] = $trial_section[2]:
 			gs 'stat'
 			*clr & cla
 			'<center><img <<$set_imgh>> src="images\locations\city\residential\clinic\experiments\haircream1.jpg"></center>'
-			'<<$temp_doc>> puts on a pair of latex gloves, grabs a generic chestnut brown tube, squeezes a large amount of beige cream in his hands, and starts massaging it into your hair and scalp.'
-			'The massage continues for about a minute, at which point <<$temp_doc>> steps away and takes of his gloves. "Thank you for your participation miss <<$pcs_lastname>>, you can get dressed now and we''ll speak again soon."'
+			'<<$temp_doc>> puts on a pair of latex gloves and grabs a generic chestnut brown tube. He squeezes a large amount of beige cream into his hands and starts massaging it into your hair and scalp.'
+			'The massage continues for about a minute, at which point <<$temp_doc>> steps away and takes off his gloves. "Thank you for your participation, Miss <<$pcs_lastname>>. We''ll speak again soon."'
 
 			gs 'city_experimental_trials_list', 'act_return', trial_pays[2]
 		end
@@ -341,7 +342,7 @@ elseif $ARGS[0] = $trial_sections[3]:
 	'We have developed a general aphrodisiac to put you and your partner in the mood and ready to go for hours.'
 	'No side effects are listed for this clinical trial.'
 	*nl
-	'<sub><small>Warning! This is a strictly personal enhancer, the clinic is not liable for any criminal allegations if used on other subjects.</small></sub>'
+	'<sub><small>Warning! This is a strictly personal enhancer. The clinic is not liable for any criminal allegations if used on other subjects.</small></sub>'
 
 	act 'Sign up':
 		 experimentQW['times_participated_3'] += 1
@@ -353,7 +354,7 @@ elseif $ARGS[0] = $trial_sections[3]:
 		gs 'stat'
 
 		*clr & cla
-		if rand(0, 1) = 0:
+		if rand(0,1) = 0:
 			$temp_doc = $exp_docs[0]
 			'<center><img <<$set_imgh>> src="images\locations\city\residential\clinic\experiments\doc1.jpg"></center>'
 		else
@@ -362,7 +363,7 @@ elseif $ARGS[0] = $trial_sections[3]:
 		end
 
 
-		'You are approached by a doctor in a white lab coat, his name neatly sown on the chest tells you it''s <<$temp_doc>>. "Miss <<$pcs_lastname>>? Please follow me."'
+		'You are approached by a doctor in a white lab coat, <<$temp_doc>> neatly sown on the chest. "Miss <<$pcs_lastname>>? Please follow me."'
 		*nl
 		'You are guided through narrow hallways until you end up in <<$temp_doc>>''s private office, where you take a seat in one of the free chairs available.'
 
@@ -375,7 +376,7 @@ elseif $ARGS[0] = $trial_sections[3]:
 			minut += 3
 			*clr & cla
 			'<center><img <<$set_imgh>> src="images\locations\city\residential\clinic\experiments\pill1.jpg"></center>'
-			'The doctor observes as you swallow the pill and then makes a note on a clipboard. "Thank you for your participation miss <<$pcs_lastname>>, we''ll speak again soon."'
+			'The doctor observes as you swallow the pill and then makes a note on a clipboard. "Thank you for your participation, Miss <<$pcs_lastname>>. We''ll speak again soon."'
 
 			gs 'city_experimental_trials_list', 'act_return', trial_pays[3]
 		end
@@ -393,10 +394,10 @@ elseif $ARGS[0] = $trial_sections[4]:
 	$loc_arg  = $trial_sections[4]
 
 	minut += 2
-	'Dissapointed by your genetic disposition to a flat behind, but afraid of invasive surgery? We at Kardashian Medics have heard you and developed our patented<sup>*</sup> KBI treatment, get a behind like ours.'
+	'Dissapointed by your genetic disposition to a flat behind, but afraid of invasive surgery? We at Kardashian Medics have heard you and developed our patented<sup>*</sup> KBI treatment! Get a behind like ours!'
 	'No side effects are listed for this clinical trial.'
 	'<br><br><br><br><br><br><br><br><br><br>'
-	'<sub><small>*Patent following. The Kardashian Butt Injection is not affiliated with Kardashian family.</small></sub>'
+	'<sub><small>*Patent following. The Kardashian Butt Injection is not affiliated with the Kardashian family.</small></sub>'
 
 	act 'Sign up':
 		 experimentQW['times_participated_4'] += 1
@@ -408,7 +409,7 @@ elseif $ARGS[0] = $trial_sections[4]:
 		gs 'stat'
 
 		*clr & cla
-		if rand(0, 1) = 0:
+		if rand(0,1) = 0:
 			$temp_doc = $exp_docs[0]
 			'<center><img <<$set_imgh>> src="images\locations\city\residential\clinic\experiments\doc1.jpg"></center>'
 		else
@@ -417,7 +418,7 @@ elseif $ARGS[0] = $trial_sections[4]:
 		end
 
 
-		'You are approached by a doctor in a white lab coat, his name neatly sown on the chest tells you it''s <<$temp_doc>>. "Miss <<$pcs_lastname>>? Please follow me."'
+		'You are approached by a doctor in a white lab coat, <<$temp_doc>> neatly sown on the chest. "Miss <<$pcs_lastname>>? Please follow me."'
 		*nl
 		'You are guided through narrow hallways until you end up in <<$temp_doc>>''s private office, where he gestures you lie on the exam table. "Please expose your buttocks and lie face down on the exam table."'
 
@@ -425,8 +426,8 @@ elseif $ARGS[0] = $trial_sections[4]:
 			minut += 3
 			*clr & cla
 			'<center><img <<$set_imgh>> src="images\locations\city\residential\clinic\experiments\assinjection1.jpg"></center>'
-			'<<$temp_doc>> briefly searches through a drawer, pulls out a syringe filled with a light brownish liquid. A mild sting and a small injection in each bottock, and you are done.'
-			'"Thank you for your participation miss <<$pcs_lastname>>, we''ll speak again soon."'
+			'<<$temp_doc>> briefly searches through a drawer and pulls out a syringe filled with a light brownish liquid. A mild sting and a small injection in each bottock, and you are done.'
+			'"Thank you for your participation, Miss <<$pcs_lastname>>. We''ll speak again soon."'
 
 			gs 'city_experimental_trials_list', 'act_return', trial_pays[4]
 		end
@@ -444,8 +445,8 @@ elseif $ARGS[0] = $trial_sections[5]:
 	$loc_arg  = $trial_sections[5]
 
 	minut += 2
-	'Do you want a baby, but having problems getting pregnant? Fear not, for we have developed a new fertility treatment. One shot and your chances of bringing that sunshine into your life will quadrupple.'
-	'Side effects include: Hormonal imbalance, superovulation, and uncontroled arousal.'
+	'Do you want a baby, but are having problems getting pregnant? Fear not, for we have developed the answer! Just one shot and your chances of bringing that little ray of sunshine into your life will quadruple!'
+	'Side effects include: Hormonal imbalance, superovulation and uncontrolled arousal.'
 
 	act 'Sign up':
 		 experimentQW['times_participated_5'] += 1
@@ -457,7 +458,7 @@ elseif $ARGS[0] = $trial_sections[5]:
 		gs 'stat'
 
 		*clr & cla
-		if rand(0, 1) = 0:
+		if rand(0,1) = 0:
 			$temp_doc = $exp_docs[0]
 			'<center><img <<$set_imgh>> src="images\locations\city\residential\clinic\experiments\doc1.jpg"></center>'
 		else
@@ -466,7 +467,7 @@ elseif $ARGS[0] = $trial_sections[5]:
 		end
 
 
-		'You are approached by a doctor in a white lab coat, his name neatly sown on the chest tells you it''s <<$temp_doc>>. "Miss <<$pcs_lastname>>? Please follow me."'
+		'You are approached by a doctor in a white lab coat, <<$temp_doc>> neatly sown on the chest. "Miss <<$pcs_lastname>>? Please follow me."'
 		*nl
 		'You are guided through narrow hallways until you end up in <<$temp_doc>>''s private office, where he gestures you lie on the exam table. "Please expose your stomach and lie face down on the exam table."'
 
@@ -474,8 +475,8 @@ elseif $ARGS[0] = $trial_sections[5]:
 			minut += 3
 			*clr & cla
 			'<center><img <<$set_imgh>> src="images\locations\city\residential\clinic\experiments\pregshot1.jpg"></center>'
-			'<<$temp_doc>> briefly searches through a drawer, pulls out a syringe filled with a bubbling red liquid. A sharp sting and an injection into your lower stomach, and you are done.'
-			'"Thank you for your participation miss <<$pcs_lastname>>, we''ll speak again soon."'
+			'<<$temp_doc>> briefly searches through a drawer and pulls out a syringe filled with a bubbling red liquid. A sharp sting and an injection into your lower stomach, and you are done.'
+			'"Thank you for your participation, Miss <<$pcs_lastname>>. We''ll speak again soon."'
 
 			gs 'city_experimental_trials_list', 'act_return', trial_pays[5]
 		end
@@ -492,8 +493,10 @@ if $ARGS[0] = 'act_go_back':
 end
 
 if $ARGS[0] = 'act_return':
+	temp_pay = ARGS[1]
 	act 'Return to the clinic':
-		money += ARGS[1]
+		money += temp_pay
+		killvar 'temp_pay'
 		gs 'city_experimental_trials_list', 'killvars'
 		gt 'city_clinic', 'start'
 	end

+ 2 - 2
locations/city_hermitage.qsrc

@@ -1,5 +1,5 @@
 # city_hermitage
-!Please add a blue underlined link on the St. Petersburg city centre page as below for the State Hermitage Museum
+!Please add a blue underlined link on the St. Petersburg city center page as below for the State Hermitage Museum
 !Please add 1 intelligence point and 5 mood points for each visit
 
 if $ARGS[0] = 'start':
@@ -19,7 +19,7 @@ if $ARGS[0] = 'start':
 		'Of the six buildings in the main museum complex, five, being the Winter Palace, Small Hermitage, Old Hermitage, New Hermitage, and Hermitage Theatre are all open to the public.'
 		'You approach the visitors entrance which is located in the Winter Palace.'
 	end
-	act 'Return city centre': gt 'city_center'
+	act 'Return city center': gt 'city_center'
 	if hour >= 8 and hour <= 17:
 		act 'View The Golden Peacock (90 mins)': gt 'city_hermitage', 'peacock'
 		act 'View Catherine The Great''s art collection (90 mins)': gt 'city_hermitage', 'art'

+ 2 - 2
locations/city_industrial.qsrc

@@ -103,9 +103,9 @@ if $ARGS[0] = '':
 		'Next to the car dealership is a repair shop.' + iif(week = 7, 'It''s closed on Sundays.', 'It will be open between 09:00 and 20:00.') + iif(car > 0 and cardrive = 7, ' Your <<$car>> is currently locked inside.', '')
 	end
 	if hour >= 9 and hour < 17 and week < 6:
-		'The <a href="exec: minut += 5 & gt ''dk'', ''start''">community centre</a> is currently open.'
+		'The <a href="exec: minut += 5 & gt ''dk'', ''start''">community center</a> is currently open.'
 	else
-		'The community centre is currently closed. It''s only open during the week between 09:00 and 17:00.'
+		'The community center is currently closed. It''s only open during the week between 09:00 and 17:00.'
 	end
 
 	if hour >= 9 and hour <= 17 and (mid($start_type,1,2) ! 'sg' or SchoolAtestat = 0) or bumtolik > 3: 

+ 62 - 143
locations/city_industrial_train.qsrc

@@ -16,8 +16,8 @@ if $ARGS[0] = 'inside':
 	'<center><img <<$set_imgh>> src="images/locations/shared/train/vokzalholle.jpg" ></center>'
 	act 'Leave the station': minut += 2 & gt 'city_industrial_train', 'outside'
 	*nl
-	if Trainpass_day > daystart:
-		'You have <<Trainpass_day - daystart>> days left on your train pass.'
+	if transportVars['trainpass_day'] > daystart:
+		func('transport_functions', 'display_trainpass_time')
 		act 'Go to the platforms': gt 'city_industrial_train', 'platform'
 	else
 		act 'Go to the ticket office': minut += 1 & gt 'city_industrial_train', 'ticket'
@@ -56,9 +56,9 @@ if $ARGS[0] = 'outside':
 
 	'There is a path leading off in to the distance, in the direction of the <a href="exec:minut += 60 & gt ''city_lake'', ''start''">lake</a>.'
 
-	act 'Walk to the City Industrial Region': minut += 15 & gt'city_industrial'
-	act 'Walk to the lake': minut += 60 & gt'city_lake', 'start'
-	act 'Enter the station building': minut += 2 & gt'city_industrial_train', 'inside'
+	act 'Walk to the City Industrial Region': minut += 15 & gt 'city_industrial'
+	act 'Walk to the lake': minut += 60 & gt 'city_lake', 'start'
+	act 'Enter the station building': minut += 2 & gt 'city_industrial_train', 'inside'
 end
 
 if $ARGS[0] = 'platform':
@@ -72,46 +72,28 @@ if $ARGS[0] = 'platform':
 	gs 'stat'
 	'<center><img <<$set_imgh>> src="images/locations/pavlovsk/trainstation/vokzalper.jpg" ></center>'
 	'When you arrive at the platform, you can''t help but notice it bustling with activity. Lots of passengers are coming and going, all carrying large bags. It feels like it is always busy here, no matter at what time of the day you are here.'
+	*nl
+	gs 'transport_functions', 'set_train_wait_time', 'ind'
+	'The next train in the direction of the city center ' + iif(transportVars['train_wait_center'] = 0, 'is leaving now!', 'leaves in <<transportVars[''train_wait_center'']>> minutes.')
+	'The next train in the direction of Pavlovsk ' + iif(transportVars['train_wait_pavlovsk'] = 0, 'is leaving now!', 'leaves in <<transportVars[''train_wait_pavlovsk'']>> minutes.')
 
 	act 'Return to the station': minut += 5 & gt 'city_industrial_train', 'inside'
 	
-	if Trainpass_day > daystart:
-		act 'Take a train to the city center': gt 'city_industrial_train', 'centre'
-		
-		act 'Take a train to the old platform by the communal village': gt 'city_industrial_train', 'communal'
-		
-		act 'Take a train to the village of Gadukino': gt 'city_industrial_train', 'village'
-		
-		act 'Take a train to Pavlovsk': gt 'city_industrial_train', 'pavlovsk'
+	act 'Look at the train schedule':
+		*clr & cla
+		gs 'transport_functions', 'display_train_schedule'
+		*nl
+		*nl
+		gs 'transport_functions', 'display_train_schedule', 'pc'
+		act 'Stop looking at the schedule': gt 'city_industrial_train', 'inside'
 	end
-end
-
-if $ARGS[0] = 'toilet':
-	$locM_arg = 'toilet'
-	$locM = 'city_industrial_train'
-	$loc_arg = 'toilet'
-	$loc = 'city_industrial_train'
-	$menu_loc = 'city_industrial_train'
-	$menu_arg = 'inside'
-	menu_off = 0
-	$location_type = 'bathroom'
-	$locclass = 'restroom'	
-	*clr & cla
-	gs'stat'
-
-	gs 'themes', 'indoors'
-
-	'<center><img <<$set_imgh>> src="images/locations/shared/bathroom/publictoilet.jpg"></center>'
-
-	act 'Return to the station': minut += 1 & gt 'city_industrial_train', 'inside'
-
-	act 'Look in the mirror': gt 'mirror', 'start'
-	if pcs_hairbsh < 1: act 'Brush your hair': gt 'mirror', 'brush'
 
-	dynamic $tampon
-	dynamic $quickwash
-	dynamic $basin
-	dynamic $publicpan
+	if transportVars['trainpass_day'] > daystart:
+		act 'Take a train to the city center (<<func(''transport_functions'', ''display_train_timecost'', ''ind'', ''center'')>>)': gt 'train', 'ind_center'
+		act 'Take a train to the old platform by the communal village (<<func(''transport_functions'', ''display_train_timecost'', ''ind'', ''communal'')>>)': gt 'train', 'ind_communal'
+		act 'Take a train to the village of Gadukino (<<func(''transport_functions'', ''display_train_timecost'', ''ind'', ''gadukino'')>>)': gt 'train', 'ind_gadukino'
+		act 'Take a train to Pavlovsk (<<func(''transport_functions'', ''display_train_timecost'', ''ind'', ''pavlovsk'')>>)': gt 'train', 'ind_pavlovsk'
+	end
 end
 
 if $ARGS[0] = 'ticket':
@@ -122,9 +104,22 @@ if $ARGS[0] = 'ticket':
 	gs 'stat'
 	'<center><h4>Ticket office</h4></center>'
 	'<center><img <<$set_imgh>> src="images/locations/pavlovsk/trainstation/ticketoffice.jpg"></center>'
+	*nl
+	gs 'transport_functions', 'set_train_wait_time', 'ind'
+	'The next train in the direction of the city center ' + iif(transportVars['train_wait_center'] = 0, 'is leaving now!', 'leaves in <<transportVars[''train_wait_center'']>> minutes.')
+	'The next train in the direction of Pavlovsk ' + iif(transportVars['train_wait_pavlovsk'] = 0, 'is leaving now!', 'leaves in <<transportVars[''train_wait_pavlovsk'']>> minutes.')
 
 	act 'Leave the ticket office':minut += 1 & gt 'city_industrial_train', 'inside'
 	
+	act 'Look at the train schedule':
+		*clr & cla
+		gs 'transport_functions', 'display_train_schedule'
+		*nl
+		*nl
+		gs 'transport_functions', 'display_train_schedule', 'pc'
+		act 'Stop looking at the schedule': gt 'city_industrial_train', 'ticket'
+	end
+
 	if money >= 50:
 		act 'Buy a ticket':
 			cla
@@ -132,126 +127,50 @@ if $ARGS[0] = 'ticket':
 		end
 	end
 
-	if money >= 1500 and Trainpass_day <= daystart:
-		act 'Buy a weekly pass  (7 days - 1500 <b>₽</b>) ':
-			cla
-			money -= 1500
-			Trainpass_day = daystart + 7
-			act 'Return': gt 'city_industrial_train', 'inside'
-		end
-	end
-
-	if money >= 5500 and Trainpass_day <= daystart:
-		act 'Buy a monthly pass (30day -  5500 <b>₽</b>)':
-			cla
-			money -= 5500
-			Trainpass_day = daystart + 30
-			act 'Return': gt 'city_industrial_train', 'inside'
-		end
-	end
+	gs 'transport_functions', 'buy_train_pass'
 end
 
-if $ARGS[0] = 'buy_ticket':	
+if $ARGS[0] = 'buy_ticket':
 	$menu_loc = 'city_industrial_train'
 	$menu_arg = 'buy_ticket'
 	menu_off = 0
 	
 	act 'Leave the ticket office': gt 'city_industrial_train', 'inside'
-	
-	if money >= 50:
-		act 'Buy a ticket to the city center (50 <b>₽</b>)':
-			money -= 50
-			gt 'city_industrial_train', 'centre'
-		end
-	end
 
-	if money >= 50:
-		act 'Buy a ticket to the old platform by the communal village (50 <b>₽</b>)':
-			money -= 100
-			gt 'city_industrial_train', 'communal'
-		end
-	end
+	gs 'transport_functions', 'buy_train_ticket', 'ind'
+end
 
-	if money >= 75:
-		act 'Buy a ticket to the village of Gadukino (75 <b>₽</b>)':
-			money -= 75
-			gt 'city_industrial_train', 'village'
-		end
-	end
 
-	if money >= 125:
-		act 'Buy a ticket to Pavlovsk (125 <b>₽</b>)':
-			money -= 125
-			gt 'city_industrial_train', 'pavlovsk'
-		end
-	end
-end
 
-if $ARGS[0] = 'centre':
-	$loc = 'city_train'
-	$loc_arg = 'start'
-	menu_off = 1
+if $ARGS[0] = 'toilet':
+	$locM_arg = 'toilet'
+	$locM = 'city_industrial_train'
+	$loc_arg = 'toilet'
+	$loc = 'city_industrial_train'
+	$menu_loc = 'city_industrial_train'
+	$menu_arg = 'inside'
+	menu_off = 0
+	$location_type = 'bathroom'
+	$locclass = 'restroom'	
 	*clr & cla
-	minut += 5
-	gs 'stat'
-	'<center><img <<$set_imgh>> src="images/locations/shared/train/electri_' + rand(1,5) + '.jpg"></center>'
-	'You pay for the ticket and board the next train going to the city center.'
-	'After 5 minutes, you see the office blocks and shops at the heart of the city. The train stops at its final destination, the busy station in the city center.'
+	gs'stat'
 
-	act 'Get off the train at this station':
-		if train_event = 0 and rand(1, 100) <= 5: gt 'train_incidental', 'end'
-		gt 'city_train', 'start'
-	end
-end
+	gs 'themes', 'indoors'
 
-if $ARGS[0] = 'communal':
-	$loc = 'train'
-	$loc_arg = 'communal'
-	menu_off = 1
-	minut += 10
-	if rand(1, 100) < 20: gt 'train', 'events'
-	gs 'stat'
-	'<center><img <<$set_imgh>> src="images/locations/shared/train/oldplat.jpg" ></center>'
-	'After 10 minutes you arrive at an old railway platform near the communal village.'
-	act 'Get off the train':
-		if train_event = 0 and rand(1, 100) <= 5: gt 'train_incidental', 'end'
-		gt 'train', 'communal'
-	end
-end
+	'<center><img <<$set_imgh>> src="images/locations/shared/bathroom/publictoilet.jpg"></center>'
 
-if $ARGS[0] = 'village':
-	$loc = 'train'
-	$loc_arg = 'village'
-	menu_off = 1
-	minut += 20
-	if rand(1, 100) <= 10: gt 'train_incidental', 'events'
-	if rand(1, 100) < 20: gt 'train', 'events'
-	gs 'stat'
-	'<center><img <<$set_imgh>> src="images/locations/shared/train/gadplat.jpg" ></center>'
-	'After 20 minutes, the train stops at the small station near the village of Gadukino.'
-	act 'Get off the train':
-		if train_event = 0 and rand(1, 100) <= 5: gt 'train_incidental', 'end'
-		gt 'train', 'village'
-	end
-end
+	act 'Return to the station': minut += 1 & gt 'city_industrial_train', 'inside'
 
-if $ARGS[0] = 'pavlovsk':
-	$loc = 'pav_train_hall'
-	$loc_arg = 'platform'
-	menu_off = 1
-	minut += 35
-	if rand(1, 100) < 15: gt 'train', 'private'
-	if rand(1, 100) < 30: gt 'train', 'Gopnik'
-	if rand(1, 100) <= 10: gt 'train_incidental', 'events'
-	if rand(1, 100) <= 20: gt 'train', 'events'
-	gs 'stat'
-	'<center><img <<$set_imgh>> src="images/locations/shared/train/pavplat.jpg" ></center>'
-	'After 35 minutes, you see the town of Pavlovsk approaching. Pavlovsk Castle is an impressive sight, even from a long distance. The train stops at its final destination, a platform in Pavlovsk station.'
-	act 'Get off the train':
-		if train_event = 0 and rand(1, 100) <= 5: gt 'train_incidental', 'end'
-		gt 'pav_train_hall'
-	end
+	act 'Look in the mirror': gt 'mirror', 'start'
+	if pcs_hairbsh < 1: act 'Brush your hair': gt 'mirror', 'brush'
+
+	dynamic $tampon
+	dynamic $quickwash
+	dynamic $basin
+	dynamic $publicpan
 end
 
+
+
 --- city_industrial_train ---------------------------------
 

+ 7 - 7
locations/city_island.qsrc

@@ -44,24 +44,24 @@ if streetevent_hour + 2 < hour:gt'street_event','city_island', 'main'
 
 gs 'street_event', 'city_island', 'extras'
 
-if func('homes_properties', 'has_access', 'university_dorm') :act '<b>GO HOME</b> (University dorm)':gt 'uni_dorm', 'start'
+if func('homes_properties', 'has_access', 'university_dorm'): act 'Return to your dorm': gt 'uni_dorm', 'start'
 
-if car > 0 and cardrive = 25:'Your <a href="exec:GS ''carF'', ''start''"><<$car>></a> stands in the parking lot.'
+if car > 0 and cardrive = 25: 'Your <a href="exec:GS ''carF'', ''start''"><<$car>></a> stands in the parking lot.'
 
 if hour >= 4 and hour < 23:
 	act 'Walk to the Metro': gt 'metro', 'start'
 end
 
-act 'Wait':gs 'obj_din', 'wait'
+act 'Wait': gs 'obj_din', 'wait'
 
 gs 'taxi'
 gs 'camera', 'check_location'
 
 if hour >= 8 and hour <= 22:
 	'The <a href="exec: minut += 3 & gt ''uni_shop'', ''start''">supermarket</a> is not far from here.'
-	'You can see the <a href="exec:$loc = ''city_island'' & minut += 1 & gt ''kiosk'', ''start''">kiosk</a> selling cigarettes and magazines.'
+	'You can see a <a href="exec:$loc = ''city_island'' & minut += 1 & gt ''kiosk'', ''start''">kiosk</a> selling cigarettes and magazines.'
 else
-	'The local convenience store is closed. It will reopen at 08:00'
+	'The local convenience store is closed. It will reopen at 08:00.'
 	'You can see a closed kiosk. It''s open between 08:00 and 23:00.'
 end
 if hour >= 8 and hour < 22:
@@ -88,7 +88,7 @@ act 'Go to the university campus':
 	gt 'uni_grounds', 'main'
 end
 
-if func('homes_properties', 'has_access', 'university_dorm') or university['student'] = 1 or hour >= 6:'The <a href="exec:gt ''uni_dorm'', ''start''">University dorms</a> offers small, but cheap, living space, for university students.'
+if func('homes_properties', 'has_access', 'university_dorm') or university['student'] = 1 or hour >= 6: 'The <a href="exec:gt ''uni_dorm'', ''start''">University dorms</a> offers small, but cheap living space for university students.'
 
 if pcs_magik >= 1 and mainQW = 0 and mid($start_type,1,3) = 'uni':
 	*clr & cla
@@ -98,7 +98,7 @@ if pcs_magik >= 1 and mainQW = 0 and mid($start_type,1,3) = 'uni':
 	'<center><img <<$set_imgh>> src="images/locations/city/citycenter/lab/event/main.jpg"></center>'
 	'You see Tatiana and Gustav standing in front of your dorm. Tatiana adjusts her glasses and looks around, while Gustav seems to be distracted, glancing here and there with a strange look on his face as his tattoos are not visible.'
 	'Tatiana looks at you closely. "I felt a burst of energy. Were you attacked by a magician?"'
-	act 'No':gt 'mainQW'
+	act 'No': gt 'mainQW'
 	exit
 end
 

+ 2 - 1
locations/city_market.qsrc

@@ -170,6 +170,7 @@ if $ARGS[0] = 'clo':
 	'You inspect the cheap clothing the stall has to offer.'
 
 	gs 'clothing_QV', 'shop_filter_header'
+	gs 'clothing', 'totals', 'market_outfits'
 
 	act 'Return':
 		cla
@@ -193,7 +194,7 @@ if $ARGS[0] = 'clo':
 			end
 		end
 	i += 1
-	if i <= 40:jump 'loopmarket_outfits'
+	if i <= total:jump 'loopmarket_outfits'
 
 	clo_i += 1
 	if clothingfilter['quality'] = 0 and clo_i <= 7:

+ 57 - 70
locations/city_musicstore.qsrc

@@ -8,70 +8,59 @@ if $ARGS[0] = 'musicshop':
 	elseif ml_didntbuyguitarthefirstvisit = 1:
 		gt 'city_musicstore', 'cameback'
 	else
+		'<center><img src="images/locations/city/citycenter/mall/musicstore/music_store.jpg"></center>'
+		'You enter the store, welcomed by the familiar mix of random notes and bits of songs screaming from the back.'
+		act 'Shop for guitars and amps': gt 'city_musicstore_stock', 'acoustic'
+		!{ act 'Try some guitars':
+			!!TO DO: Better scenes here
+			if pcs_instrmusic < 30 and pcs_perform < 10:
+				'You pick up a guitar you like the look of, but are too shy to play it. After strumming a few chords, you put it back on it''s stand.'
+			else
+				'Some texts here depending on music skill and performing skill'			
+			end
+		end }
+		act 'Leave': 
+			if ml_boughtguitar > 0 or ml_boughtamp > 0:
+				gt 'city_musicstore', 'payandtakestuff'
+			end
+			gt 'torgcentr'
+		end
+
 		musicrand = rand(1,2)
 		if musicrand = 1 and yearstart >= 2 and (week > 5 and hour >= 8 and hour < 17):
-			'<center><img src="images/locations/city/citycenter/mall/musicstore/music_store.jpg"></center>'
-			'You enter the store, welcomed by the familiar mix of random notes and bits of songs screaming from the back.'
-			'At the counter you see a familiar face, Radomir. You use to go to school with him in Pavlovsk.'
+			'As you approach the counter, you see your old classmate Radomir standing behind it.'
 			act 'Approach the counter':
-				*clr & cla
+				*clr
+				delact 'Approach the counter'
 				gs 'npc_relationship', 'modify', 'A154', 'like'
 				gs 'stat'
 				'<center><img <<$set_imgh>> src="images/characters/shared/headshots_main/big154.jpg"></center>'
 				if npc_rel['A154'] >= 60:
 					if hotcat >= 6:
-						'Radomir gives you a smile. "Come to hang out with me on my break? Maybe we can have a little fun." He says with a wink.'
-						'You tell him you just came to look around and maybe do a little shopping. After a bit he tells you about a variety of instruments, he seems to really know his stuff when it comes to musical instruments.'
+						'He gives you a smile when he sees you. "Come to hang out with me on my break? Maybe we can have a little fun?" he asks with a wink.'
+						'You smile. "No, I just came to look around and maybe do a little shopping."'
+						'He smiles and starts telling you about a variety of instruments. He seems to really know his stuff.'
 					else
 						'He gives you a slight knowing smirk when he sees you. "So what can I do for one of my fans?"'
-						'You tell him you just came to look around and maybe do a little shopping. After a bit he tells you about a variety of instruments, he seems to really know his stuff when it comes to musical instruments.'
+						'"I just came to look around and maybe do a little shopping," you reply.' 
+						'He nods and starts telling you about a variety of instruments. He seems to really know his stuff.'
 					end
 				elseif npc_rel['A154'] <= 20:
-					'Radomir visably sighs when he see''s you. He does his best to ignore you, though he will answer questions about instruments that you ask, but only with the barest amount of information.'
+					'He visibly sighs when he sees you and does his best to ignore you, though he answers any questions about instruments that you ask with the barest amount of information.'
 				else
 					if hotcat >= 6:
-						'Radomir is talking about the band''s latest gig as you approach. He sees you and looks your body up and down. "Nice to see all the working out is paying off. Looking good."'
-						'You tell him you just came to look around and maybe do a little shopping. After a bit he tells you about a variety of instruments, he seems to really know his stuff when it comes to musical instruments.'
+						'Radomir is talking about the band''s latest gig as you approach. He looks your body up and down when he sees you. "Nice to see all the working out is paying off. Looking good."'
+						'You smile. "Thanks, but I just came to look around and maybe do a little shopping."'
+						'He nods and starts telling you about a variety of instruments. He seems to really know his stuff.'
 					else
-						'He smirks when he sees you. "Come to try and butter me up before I get famous?" You ignore his comment and ask him about some of the instruments.'
-						'After a bit he tells you about a variety of instruments, he seems to really know his stuff when it comes to musical instruments.'
+						'He smirks when he sees you. "Come to try and butter me up before I get famous?"' 
+						'You ignore his comment and ask him about some of the instruments.'
+						'He nods and starts telling you about a variety of instruments. He seems to really know his stuff.'
 					end
 				end
 			end
-			act 'Shop for guitars and amps': gt 'city_musicstore_stock', 'acoustic'
-			act 'Try some guitars': 
-	!!			TODO: Better scenes here			
-				if pcs_instrmusic < 30 and pcs_perform < 10:
-					'You pick up a guitar to try it, but you are too shy and after strumming a few chords you put it back on it''s stand'
-				else
-					'Some texts here depending on music skill and performing skill'			
-				end
-			end
-			act 'Leave': 
-				if ml_boughtguitar > 0 or ml_boughtamp > 0:
-					gt 'city_musicstore', 'payandtakestuff'
-				end
-				gt 'torgcentr'
-			end
 		else
-			'<center><img src="images/locations/city/citycenter/mall/musicstore/music_store.jpg"></center>'
-			'You enter the store, welcomed by the familiar mix of random notes and bits of songs screaming from the back.'
 			'Jimmy just nods at you, then returns his attention to the guitar laying on the counter in front of him.'
-			act 'Shop for guitars and amps': gt 'city_musicstore_stock', 'acoustic'
-			act 'Try some guitars': 
-	!!			TODO: Better scenes here			
-				if pcs_instrmusic < 30 and pcs_perform < 10:
-					'You pick up a guitar to try it, but you are too shy and after strumming a few chords you put it back on it''s stand'
-				else
-					'Some texts here depending on music skill and performing skill'			
-				end
-			end
-			act 'Leave': 
-				if ml_boughtguitar > 0 or ml_boughtamp > 0:
-					gt 'city_musicstore', 'payandtakestuff'
-				end
-				gt 'torgcentr'
-			end
 		end
 	end
 end
@@ -80,48 +69,47 @@ if $ARGS[0] = 'firstvisit':
 	musicrand = rand(1,5)
 	if musicrand = 1:
 		'<center><img src="images/locations/city/citycenter/mall/musicstore/boys_rocking.jpg"></center>'
-		'You enter the store, passing the door to be submerged in a loud, cacophony environment. The walls are filled with guitars, bass, amps, drums, even keyboards fill the shop. In the back three teenage boys try and play some of the guitars loudly and not very well.'
+		'You enter the store, passing the door to be submerged in a loud, cacophony environment. The walls are filled with guitars, bass, amps, drums and even keyboards. In the back are three teenage boys trying to play some of the guitars. They''re loud and not very good...'
 		'A tall, ginger haired man turns to you with a bored expression that turns into a perplexed smile as he takes your sight in.'
 	elseif musicrand = 2:
 		'<center><img src="images/locations/city/citycenter/mall/musicstore/nostairways.jpg"></center>'
-		'You enter the store, passing the door to be submerged in a loud, cacophony environment. The walls are filled with guitars, bass, amps, drums, even keyboards fill the shop.'
+		'You enter the store, passing the door to be submerged in a loud, cacophony environment. The walls are filled with guitars, bass, amps, drums and even keyboards.'
 		'A tall, ginger haired man turns to you with a bored expression that turns into a perplexed smile as he takes your sight in.'
-		'Suddenly he turns and throws a sponge at one of the boys playing in the back "No. Stairway. To. Heaven." he growls and points at the sign on the wall before turning back to you.'
+		'He suddenly turns and throws a sponge at one of the boys playing in the back. "No. Stairway. To. Heaven!" he growls and points at the sign on the wall before turning back to you.'
 	else
 		'<center><img src="images/locations/city/citycenter/mall/musicstore/music_store.jpg"></center>'
-		'You enter the store, passing the door to be submerged in a loud, cacophony environment. The walls are filled with guitars, bass, amps, drums, even keyboards fill the shop.'
+		'You enter the store, passing the door to be submerged in a loud, cacophony environment. The walls are filled with guitars, bass, amps, drums and even keyboards.'
 		'A tall, ginger haired man turns to you with a bored expression that turns into a perplexed smile as he takes your sight in.'
 	end
+	
 	act 'Approach the counter':
 		*clr & cla
 		'<center><img src="images/locations/city/citycenter/mall/musicstore/jimmy.jpg"></center>'
-		'A tall, ginger haired man turns to you with a bored expression that turns into a perplexed smile as he takes your sight in.'
-		'He straightens up "Hello there, I''m Jimmy" - he greets you - "Is there anything I can help you with?"'
+		'He straightens up. "Hello there, I''m Jimmy! Is there anything I can help you with?"'
 		act 'Look for a guitar':
 			*clr & cla
 			'<center><img src="images/locations/city/citycenter/mall/musicstore/cheap_acoustic_1.jpg"></center>'		
-			'You start to browse the guitars in the shop, not entirely sure what you are looking for and gladly accept the help of the store clerk. After answering his questions and chatting about music and what you are looking for he finally picks up an affordable acoustic guitar as a recommendation.'
-			'After some conversation with the store owner he offers you an affordable acoustic guitar to buy'
-			'Jimmy leaves you alone with the instrument, so you sit down to try it, strumming the chords that you know, trying to play something.'
+			'You start browsing the guitars on offer, but aren''t sure what you''re looking and gladly accept his help. After answering his questions about what you''re looking for, he finally picks up an affordable acoustic guitar as a recommendation.'
+			'He leaves you alone with the instrument, so you sit down to try it. You strum the chords that you know, trying to play something.'
 			if money > 3400 or karta > 3400:
 				if money < 14280 and karta < 14280:
-					'While the guitar is not the best sounding one it''s comfortable and looking at the price tags, the only one you can afford.'
+					'While the guitar isn''t the best sounding, it''s comfortable and looking at the price tags, the only one you can afford.'
 				else 
-					'While the guitar is not the best sounding one it''s comfortable and looking at the price tags, you are not sure you should spend too much money until you are better at playing the guitar.'
+					'The guitar isn''t the best sounding. However, looking at the price tags on the others, you''re not sure if you should spend so much money on a better one until you''re better at playing.'
 				end
 				if money > 3400: act 'Buy a cheap acoustic guitar (3,400 <b>P</b>) - pay with cash': gt 'city_musicstore', 'buycheapacoustic', 'money'
 
 				if karta > 3400: act 'Buy a cheap acoustic guitar (3,400 <b>P</b>) - pay with card': gt 'city_musicstore', 'buycheapacoustic', 'karta'						
 				act 'You have to think about it':
 					ml_didntbuyguitarthefirstvisit = 1
-					'You hesitate for a moment, unsure whether to buy it or not and finally decide to not do it, at least not now. "I will have to talk to my mum first" you say to Jimmy. '
-					'He just nods "Don''t worry <<$pcs_firstname>>. You know what, I will put it aside for you for a bit in case you change your mind". He scribbles something on a post-it note, and sticks it on the guitar "I will try to keep the price the same, 3,400 <b>₽</b>."'
+					'You hesitate before deciding not to buy it, at least not for now. "I''ll have to talk to think about it first," you tell Jimmy.'
+					'He nods. "You know what? I''ll put it aside for you in case you change your mind, but be quick before someone else beats you to it!" He scribbles something on a post-it note and sticks it on the guitar. "I''ll try to keep the price the same, 3,400 <b>₽</b>."'
 					act 'Leave': gt 'torgcentr'
 				end
 			else
 				ml_didntbuyguitarthefirstvisit = 1
-				'While the guitar is not the best sounding one it''s comfortable. Unfortunately while it''s cheaper than the rest, it still costs more than you have. With a sigh you hand it back to Jimmy "I''m sorry, but, I can''t buy it now."'
-				'He just nods "Don''t worry, I tell you what, I will put it aside for you if you change your mind." He scribbles something on a post-it note, and sticks it on the guitar "I will try to keep the price the same, 3,400 <b>₽</b>."'
+				'While the guitar isn''t the best sounding, it is comfortable. Unfortunately, while it''s cheaper than the rest, it still costs more than you have. You hand it back to Jimmy with a sigh. "Sorry, but I can''t buy it right now."'
+				'He nods. "You know what? I''ll put it aside for you in case you change your mind, but be quick before someone else beats you to it!" He scribbles something on a post-it note and sticks it on the guitar. "I''ll try to keep the price the same, 3,400 <b>₽</b>."'
 				act 'Leave': gt 'torgcentr'
 			end				
 		end
@@ -147,9 +135,9 @@ if $ARGS[0] = 'cameback':
 			cla
 			'<center><img src="images/locations/city/citycenter/mall/musicstore/jimmy.jpg"></center>'
 			'You walk up to the counter where Jimmy is busy tinkering with a guitar.'
-			'"Hi Jimmy... I was wondering if you still has that guitar..."'
-			'Jimmy looks up from the guitar "Hi <<$pcs_firstname>>, sure, I have it. Let me get it for you."'
-			'He disappears for several minutes before he brings out the guitar. "See, all in good shape. Properly set up and everything."'
+			'"Hey Jimmy, I was wondering if you still have that guitar?"'
+			'He looks up from the guitar. "Oh hey. Sure, I have it. Let me get it for you."'
+			'He disappears for a while before he brings the guitar out. "See, all in good shape. Properly set up and everything."'
 			if money > 3400: act 'Buy a cheap acoustic guitar (3,400 <b>P</b>) - pay with cash': gt 'city_musicstore', 'buycheapacoustic', 'money'
 			if karta > 3400: act 'Buy a cheap acoustic guitar (3,400 <b>P</b>) - pay with card': gt 'city_musicstore', 'buycheapacoustic', 'karta'						
 		end
@@ -157,9 +145,9 @@ if $ARGS[0] = 'cameback':
 	act 'Shop for guitars and amps': gt 'city_musicstore_stock', 'acoustic'
 	act 'Try some guitars': 
 		'<center><img src="images/locations/city/citycenter/mall/musicstore/try_guitars.jpg"></center>'
-!!			TODO: Better scenes here			
+		!! TO DO: Better scenes here			
 		if pcs_instrmusic < 30 and pcs_perform < 10:
-			'You pick up a guitar to try it, but you are too shy and after strumming a few chords you put it back on it''s stand'
+			'You pick up a guitar you like the look of, but are too shy to play it. After strumming a few chords, you put it back on it''s stand.'
 		else
 			'Some texts here depending on music skill and performing skill'			
 		end
@@ -177,12 +165,12 @@ if $ARGS[0] = 'buycheapacoustic':
 	*clr & cla
 	'<center><img src="images/locations/city/citycenter/mall/musicstore/starterkit.jpg"></center>'
 	if ml_didntbuyguitarthefirstvisit = 1:
-		'You finally decide to buy the guitar, taking it to the checkout. Jimmy throws in a gigbag to carry the gitar and a set of strings and picks. "A proper starter kit" he states and rings up the purchase.'
+		'You decide to buy the guitar and take it to the counter, where Jimmy throws in a gigbag and a set of strings and picks. "A proper starter kit," he states and rings up the purchase.'
 		killvar 'ml_didntbuyguitarthefirstvisit'
 	else
-		'Jimmy puts the guitar in a gigbag, and drops a set of strings and picks in the pocket. "A proper starter kit" he states and rings up the purchase.'
+		'Jimmy puts the guitar in a gigbag and drops a set of strings and picks in the pocket. "A proper starter kit," he states and rings up the purchase.'
 	end
-	'He looks at you thoughtfully, then drops a thick, slightly worn booklet in the bag "Some stuff to learn from" he says handing your purchase to you "Congratulations, welcome to the starving musician community."'
+	'He looks at you thoughtfully, then drops a thick, slightly worn booklet in the bag. "Some stuff to learn from," he says while handing your purchase to you. "Congratulations, welcome to the starving musician community."'
 	
 	gs 'city_musicstore', 'first_setup'
 	
@@ -195,12 +183,11 @@ end
 if $ARGS[0] = 'payandtakestuff':
 	if ml_boughtamp + ml_guitar['carried'] > 0 or ml_boughtguitar > 1:
 		minut += (ml_boughtguitar * 5) + (ml_boughtguitar * 5)
-		'Jimmy takes your details and your home address after you pay, and sets up the delivery. "It should be there tomorrow, <<$pcs_nickname>>."'
+		'Jimmy takes your details and your home address after you pay to set up the delivery. "It should be there tomorrow."'
 	else	
 		minut += 20
         ml_guitar['carried'] = 1
-		'Jimmy disappears with your chosen guitar in the back of the shop only to return after about 10 minutes. "It''s all set up, <<$pcs_nickname>>, if you need to tweak anything, just bring it in, we will do it, no charge."'
-		*nl
+		'Jimmy disappears into the back of the shop with your guitar before returning 10 minutes later. "That''s it all set up, but if you need to tweak anything, just bring it in and we''ll do it for you, free of charge."'
 		'He puts the guitar in ' + iif(ml_gigbag = 1, 'a gigbag', '') + iif(ml_hardcase = 1, 'its case', '') + ' and hands it to you. "All the best, <<$pcs_nickname>>."'
 	end
 	killvar 'ml_boughtamp'

File diff suppressed because it is too large
+ 168 - 326
locations/city_nightclub.qsrc


+ 4 - 4
locations/city_nightclubToilet.qsrc

@@ -12,7 +12,7 @@ if $ARGS[0] = 'start':
 	gs 'stat'
 	*clr & cla
     
-	'<center><b><font color="maroon">Nightclub-Restroom</font></b></center>'
+	'<center><b><font color="maroon">Nightclub - Restroom</font></b></center>'
 	'<center><img <<$set_imgh>> src="images/locations/city/citycenter/nightclub/toiletwalkway.jpg"></center>'
 	gs 'willpower', 'exhib', 'self'
 		if will_cost <= pcs_willpwr:
@@ -42,9 +42,9 @@ if $ARGS[0] = 'clubtoilet_men':
 
 	*clr & cla
 	gs 'stat'
-	'<center><b><font color="maroon">Nightclub-Men''s Room</font></b></center>'
+	'<center><b><font color="maroon">Nightclub - Men''s Room</font></b></center>'
 	'<center><img <<$set_imgh>> src="images/locations/city/citycenter/nightclub/mentoilet.jpg"></center>'
-	'You walk in to the men''s restroom. You see some sinks and <a href="exec:gt ''mirror'', ''start''">mirrors</a>.'
+	'You walk into the men''s restroom, where you see some sinks and <a href="exec:gt ''mirror'', ''start''">mirrors</a>.'
 	
 	act 'Leave': gt 'city_nightclubToilet', 'start'
 	
@@ -68,7 +68,7 @@ if $ARGS[0] = 'clubtoilet_women':
 	
 	*clr & cla
 	gs 'stat'
-	'<center><b><font color="maroon">Nightclub-Women''s Room</font></b></center>'
+	'<center><b><font color="maroon">Nightclub - Women''s Room</font></b></center>'
 	'<center><img <<$set_imgh>> src="images/locations/city/citycenter/nightclub/womentoilet.jpg"></center>'
 	'You walk in to the women''s restroom. You see some sinks and <a href="exec:gt ''mirror'', ''start''">mirrors</a>. You notice the last stall has its door wide open.'
 

+ 3 - 1
locations/city_sauna.qsrc

@@ -230,7 +230,9 @@ end
 
 if $ARGS[0] = 'saunafitness':
 	$loc = 'city_sauna'
-	$loc_arg = 'saunaroom'
+	$loc_arg = 'saunafitness'
+	$menu_loc = 'city_sauna'
+	$menu_arg = 'saunafitness'
 	$location_type = 'indoors'
 	cla
 	*clr

+ 14 - 7
locations/city_saunawhore.qsrc

@@ -14,6 +14,8 @@ if $ARGS[0] = 'saunawork':
 	$loc = 'city_saunawhore'
 	$loc_arg = 'saunawork'
 	$locBroom = 'city_saunawhore'
+	$menu_loc = 'city_saunawhore'
+	$menu_arg = 'saunawork'
 	$metkaBroom = 'saunawork'
 	$locM = 'city_saunawhore'
 	$locM_arg = 'saunawork'
@@ -104,8 +106,8 @@ if $ARGS[0] = 'saunawork':
 		end
 	end
 
-	if venera > 0 or Kandidoz > 10:
-		act 'See nurse for STD check up':
+	act 'See nurse for STD check up':
+		if Gerpes+Sifilis+Triper > rand(2,4) or Kandidoz > 10:
 			cls
 			menu_off = 1
 			gs 'stat'
@@ -146,10 +148,10 @@ if $ARGS[0] = 'saunawork':
 				if Kandidoz < 30:'Your yeast infection is currently in remission, take vitamins, and it will stay that way.'
 			end
 			act 'Return':gt 'city_saunawhore', 'saunawork'
+		else
+			'The nurse has you strip and put your legs in stirrups then roughly examines you. I can''t see anything wrong with you down there so whatever it is you got it''s in remission so you''re good to work.'
+			act 'Return':gt 'city_saunawhore', 'saunawork'
 		end
-	else
-		'The nurse has you strip and put your legs in stirrups then roughly examines you. I can''t see anything wrong with you down there so whatever it is you got it''s in remission so you''re good to work.'
-		act 'Return':gt 'city_saunawhore', 'saunawork'
 	end
 		
 	if GerpesNapr > 0 and GerpesUkolDay ! daystart:
@@ -260,6 +262,7 @@ if $ARGS[0] = 'saunawork':
 			minut += 60
 			clenerSauna = daystart
 			pcs_mood -= 25
+			gs 'exp_gain', 'cleaning', rand(1,3)
 			menu_off = 1
 			gs 'sweat', 'add', 30
 			gs 'stat'
@@ -283,6 +286,7 @@ if $ARGS[0] = 'saunawork':
 			menu_off = 1
 			minut += 60
 			clenerSauna2 = daystart
+			gs 'exp_gain', 'cleaning', rand(1,2)
 			pcs_mood -= 25
 			gs 'stat'
 			'<center><img <<$set_imgh>> src="images/locations/city/residential/office/clener1.jpg"></center>'
@@ -330,6 +334,8 @@ if $ARGS[0] = 'bathroom':
 	$loc_arg = 'bathroom'
 	$locM = 'city_saunawhore'
 	$locM_arg = 'bathroom'
+	$menu_loc = 'city_saunawhore'
+	$menu_arg = 'bathroom'
 	$location_type = 'bathroom'
 	menu_off = 0
 
@@ -546,7 +552,7 @@ if $ARGS[0] = 'clientGate':
 end
 
 if $ARGS[0] = 'striptease':
-	if pcs_dancero < 20:pcs_dancero += rand(1,3)
+	gs 'exp_gain', 'dancero', rand(0,1)
 	if pcs_inhib < 40:
 		inhib_exp += rand(2,4)
 	elseif pcs_inhib >= 40 and pcs_inhib < 60:
@@ -561,7 +567,7 @@ if $ARGS[0] = 'striptease':
 end
 
 if $ARGS[0] = 'simplystrip':
-	if pcs_dancero < 10: pcs_dancero += rand(0,2)
+	gs 'exp_gain', 'dancero', rand(0,1)
 	if pcs_inhib < 40:
 		inhib_exp += rand(1,2)
 	elseif pcs_inhib >= 40 and pcs_inhib < 60:
@@ -586,6 +592,7 @@ if $ARGS[0] = 'strippedGate':
 end
 
 if $ARGS[0] = 'nakeddance':
+	gs 'exp_gain', 'dancero', rand(0,1)
 	if pcs_inhib < 40:
 		inhib_exp += rand(3,6)
 	elseif pcs_inhib >= 40 and pcs_inhib < 60:

+ 1 - 0
locations/city_smalloffice.qsrc

@@ -314,6 +314,7 @@ if $ARGS[0] = 'start':
 			menu_off = 1
 			clendayT = daystart
 			minut += 60
+			gs 'exp_gain', 'cleaning', rand(1,3)
 			clenerT += 1
 			pcs_mood -= 25
 			money += 65

+ 12 - 11
locations/city_suburbs.qsrc

@@ -3,7 +3,7 @@
 
 $location_type = 'public_outdoors'
 
-if $ARGS[0]='start':
+if $ARGS[0] = 'start':
 	$loc = 'city_suburbs'
 	$loc_arg = 'start'
 	$menu_loc = 'city_suburbs'
@@ -23,13 +23,19 @@ if $ARGS[0]='start':
 		if hour > 7 and hour < 20: 'You can visit <a href="exec: minut += 5 & gt ''AlexandriaHome'', ''intercom''">Aleksei''s home</a> if you want to see the cranky wizard.'
 	end
 
+	act 'Walk to the main road (0:01)': nroad = 1 & minut += 15 & gt 'road'
+	if hour >= 4 and hour < 23:
+		act 'Walk to the Metro (0:05)': minut += 5 & gt 'metro', 'start'
+	end
+	act 'Walk to the bus station (0:05)': minut += 5 & gt 'bus', 'suburbs'
+
 	if BDSMClub = 1 or BDSMmeet > 0:
 		act 'Go to the BDSM club': gt 'bdsm_mansion','start'
 	end
-	
+
 	if func('homes_properties', 'has_access', 'matryona_mansion') = 0:
 		'There is a vacant plot of land for sale where a large mansion could be constructed.'
-		act 'Visit the land for sale': minut += 10 & gt 'city_mansion_entrance'
+		act 'Visit the land for sale (0:10)': minut += 10 & gt 'city_mansion_entrance'
 	elseif func('homes_properties', 'is_property_of_status', 'owned', 'matryona_mansion'):
 		constructionstatus = func('homes_properties', 'get_property_construction_status', 'matryona_mansion')
 		if constructionstatus = 0:
@@ -39,18 +45,13 @@ if $ARGS[0]='start':
 		else
 			'Your mansion is not too far from here.'
 		end
-		act 'Visit your mansion': minut += 10 & gt 'city_mansion_entrance'
+		act 'Visit your mansion (0:10)': minut += 10 & gt 'city_mansion_entrance'
 	else
 		'One of the most impressive buildings is your newly built mansion.'
 		act 'Visit Matryona Mansion': gt 'city_mansion_entrance'
 	end
-	act 'View the insane asylum': minut += 2 & gt 'city_suburbs', 'ps1'
-	act 'View the creepy old building': minut += 2 & gt 'city_suburbs', 'ps2'
-
-	act 'Walk to the main road':nroad = 1 & minut += 15 & gt 'road'
-	if hour >= 4 and hour < 23:
-		act 'Walk to the Metro': minut += 5 & gt 'metro', 'start'
-	end
+	act 'View the insane asylum (0:02)': minut += 2 & gt 'city_suburbs', 'ps1'
+	act 'View the creepy old building (0:02)': minut += 2 & gt 'city_suburbs', 'ps2'
 
 	if AlexandriaQW = 6:
 		gs 'willpower', 'misc', 'self', 'easy'

+ 29 - 133
locations/city_train.qsrc

@@ -11,15 +11,15 @@ if $ARGS[0] = 'start':
 	gs'stat'
 	'<center><B>City center railway station</B></center>'
 	'<center><img <<$set_imgh>> src="images/locations/city/shared/trainstation/central_station_inside.jpg"></center>'
-	'The grand old station in the city centre is an impressive building. It is busy and has a number of shops and bars as well as all the platforms and trains. '
+	'The grand old station in the city center is an impressive building. It is busy and has a number of shops and bars as well as all the platforms and trains. '
 	*nl
 	if car > 0 and cardrive = 2:
 		'In the parking lot is <a href="exec:GS ''carF'',''start''">your <<$car>></a>.'
 	end
 
 	act 'Walk to the city center (0:05)':minut += 5 & gt 'city_center'
-	if Trainpass_day > daystart:
-		'You have <<Trainpass_day - daystart>> days left on your train pass.'
+	if transportVars['trainpass_day'] > daystart:
+		func('transport_functions', 'display_trainpass_time')
 		act 'Go to the platforms': gt 'city_train', 'platform'
 	else
 		act 'Go to the ticket office': gt 'city_train', 'tickets'
@@ -35,76 +35,34 @@ if $ARGS[0] = 'tickets':
 	'<center><h4>Ticket office</h4></center>'
 	'<center><img <<$set_imgh>> src="images/locations/shared/train/kassa.jpg" ></center>'
 
-	act 'Leave the ticket office':minut += 1 & gt 'city_train', 'start'
+	*nl
+	gs 'transport_functions', 'set_train_wait_time', 'center'
+	'The next train in the direction of Pavlovsk ' + iif(transportVars['train_wait_pavlovsk'] = 0, 'is leaving now!', 'leaves in <<transportVars[''train_wait_pavlovsk'']>> minutes.')
+
+	act 'Leave the ticket office': minut += 1 & gt 'city_train', 'start'
 	
+	act 'Look at the train schedule':
+		*clr & cla
+		gs 'transport_functions', 'display_train_schedule'
+		act 'Stop looking at the schedule': gt 'city_train', 'tickets'
+	end
+
 	act 'Buy a ticket':
 		cla
 		gs 'city_train', 'buy_ticket'
 	end
 
-	if money >= 1500 and Trainpass_day <= daystart:
-		act 'Buy a weekly pass  (7 days - 1500 <b>₽</b>) ':
-			cla
-			menu_off = 1
-			money -= 1500
-			Trainpass_day = daystart + 7
-			act 'Return': gt 'city_train', 'start'
-		end
-	end
-
-	if money >= 5500 and Trainpass_day <= daystart:
-		act 'Buy a monthly pass (30day -  5500 <b>₽</b>)':
-			cla
-			menu_off = 1
-			money -= 5500
-			Trainpass_day = daystart + 30
-			act 'Return': gt 'city_train', 'start'
-		end
-	end	
+	gs 'transport_functions', 'buy_train_pass'
 end
 
 if $ARGS[0] = 'buy_ticket':
 	$menu_loc = 'city_train'
 	$menu_arg = 'buy_ticket'
 	menu_off = 0
-	
-	act 'Leave the ticket office': minut += 1 & gt 'city_train', 'start'
-	
-	act 'Buy a ticket to the city industrial area (50 <b>₽</b>)':
-		if money >= 50:
-			money -= 50
-			gt 'city_train', 'ind'
-		else
-			'You don''t have enough money for this ticket.'
-		end
-	end
 
-	act 'Buy a ticket to the old platform by the communal village (75 <b>₽</b>)':
-		if money >= 75:
-			money -= 75
-			gt 'city_train', 'communal'
-		else
-			'You don''t have enough money for this ticket.'
-		end	
-	end
-
-	act 'Buy a ticket to the village of Gadukino (100 <b>₽</b>)':
-		if money >= 100:
-			money -= 100
-			gt 'city_train', 'village'
-		else
-			'You don''t have enough money for this ticket.'	
-		end
-	end
+	act 'Leave the ticket office': minut += 1 & gt 'city_train', 'start'
 
-	act 'Buy a ticket to Pavlovsk (150 <b>₽</b>)':
-		if money >= 150:
-			money -= 150
-			gt 'city_train', 'pavlovsk'
-		else
-			'You don''t have enough money for this ticket.'		
-		end
-	end
+	gs 'transport_functions', 'buy_train_ticket', 'center'
 end
 
 if $ARGS[0] = 'platform':
@@ -115,84 +73,22 @@ if $ARGS[0] = 'platform':
 	gs 'stat'
 	'<center><img <<$set_imgh>> src="images/locations/shared/train/indusplat.jpg" ></center>'
 	'When you arrive at the platform, you can''t help but notice it bustling with activity. Lots of passengers are coming and going, all carrying shopping bags. It feels like it is always busy here, no matter at what time of the day it is.'
-
-	act 'Return to the station hall':gt 'city_train', 'start'
+	*nl
+	gs 'transport_functions', 'set_train_wait_time', 'center'
+	'The next train in the direction of Pavlovsk ' + iif(transportVars['train_wait_pavlovsk'] = 0, 'is leaving now!', 'leaves in <<transportVars[''train_wait_pavlovsk'']>> minutes.')
 	
-	act 'Take a train to the city industrial area': gt 'city_train', 'ind'
+	act 'Return to the station hall': gt 'city_train', 'start'
 
-	act 'Take a train to the old platform by the communal village': gt 'city_train', 'communal'
-
-	act 'Take a train to the village of Gadukino': gt 'city_train', 'village'
-
-	act 'Take a train to Pavlovsk': gt 'city_train', 'pavlovsk'
-end
-
-if $ARGS[0] = 'ind':
-	$loc = 'city_industrial_train'
-	$loc_arg = 'platform'
-	menu_off = 1
-	minut += 5
-	gs 'stat'
-	if rand(1, 100) < 15: gt 'train', 'private'
-	if rand(1, 100) <= 10: gt 'train_incidental', 'events'
-	if rand(1, 100) <= 20: gt 'train', 'events'
-	'<center><img <<$set_imgh>> src="images/locations/shared/train/indusplat.jpg" ></center>'
-	'After 5 minutes, the train stops at the St. Petersburg city industrial area station.'
-	act 'Get off the train':
-		if train_event = 0 and rand(1, 100) <= 5: gt 'train_incidental', 'end'
-		gt 'city_industrial_train', 'platform'
+	act 'Look at the train schedule':
+		*clr & cla
+		gs 'transport_functions', 'display_train_schedule'
+		act 'Stop looking at the schedule': gt 'city_train', 'platform'
 	end
-end
 
-if $ARGS[0] = 'communal':
-	$loc = 'train'
-	$loc_arg = 'communal'
-	menu_off = 1
-	minut += 15
-	if rand(1, 100) <= 10: gt 'train_incidental', 'events'
-	if rand(1, 100) <= 20: gt 'train', 'events'
-	gs 'stat'
-	'<center><img <<$set_imgh>> src="images/locations/shared/train/oldplat.jpg" ></center>'
-	'After 15 minutes you arrive at an old railway platform near the communal village.'
-	act 'Get off the train':
-		if train_event = 0 and rand(1, 100) <= 5: gt 'train_incidental', 'end'
-		gt 'train', 'communal'
-	end
-end
-
-if $ARGS[0] = 'village':
-	$loc = 'train'
-	$loc_arg = 'village'
-	menu_off = 1
-	minut += 25
-	if rand(1, 100) <= 10: gt 'train_incidental', 'events'
-	if rand(1, 100) <= 20: gt 'train', 'events'
-	gs 'stat'
-	'<center><img <<$set_imgh>> src="images/locations/shared/train/gadplat.jpg" ></center>'
-	'After 25 minutes, the train stops at the small station near the village of Gadukino.'
-	act 'Get off the train':
-		if train_event = 0 and rand(1, 100) <= 5: gt 'train_incidental', 'end'
-		gt 'train', 'village'
-	end
-end
-
-if $ARGS[0] = 'pavlovsk':
-	$loc = 'pav_train_hall'
-	$loc_arg = 'platform'
-	menu_off = 1
-	minut += 40
-	if rand(1, 100) < 15: gt 'train', 'private'
-	if rand(1, 100) < 30: gt 'train', 'Gopnik'
-	if rand(1, 100) <= 10: gt 'train_incidental', 'events'
-	if rand(1, 100) <= 20: gt 'train', 'events'
-	gs 'stat'
-	if train_event = 0 and rand(1, 100) < 20: gt 'train', 'events'
-	'<center><img <<$set_imgh>> src="images/locations/shared/train/pavplat.jpg" ></center>'
-	'After 40 minutes, you see the town of Pavlovsk approaching. Pavlovsk Castle is an impressive sight, even from a long distance. The train stops at its final destination, a platform in Pavlovsk station.'
-	act 'Get off the train':
-		if train_event = 0 and rand(1, 100) <= 5: gt 'train_incidental', 'end'
-		gt 'pav_train_hall'
-	end
+	act 'Take a train to the city industrial area (<<func(''transport_functions'', ''display_train_timecost'', ''center'', ''ind'')>>)': gt 'train', 'center_ind'
+	act 'Take a train to the old platform by the communal village (<<func(''transport_functions'', ''display_train_timecost'', ''center'', ''communal'')>>)': gt 'train', 'center_communal'
+	act 'Take a train to the village of Gadukino (<<func(''transport_functions'', ''display_train_timecost'', ''center'', ''gadukino'')>>)': gt 'train', 'center_gadukino'
+	act 'Take a train to Pavlovsk (<<func(''transport_functions'', ''display_train_timecost'', ''center'', ''pavlovsk'')>>)': gt 'train', 'center_pavlovsk'
 end
 
 --- city_train ---------------------------------

+ 185 - 186
locations/city_trashplace.qsrc

@@ -1,7 +1,7 @@
 # city_trashplace
 $location_type = 'public_outdoors'
 
-$bomzstartqwestdi = {
+if $ARGS[0] = 'bomzstartqwestdi':
 	menu_off = 1
 	gs 'stat'
 	'"I see you''re a good girl who has some money problems. I have a job for you, but I can''t say much here. You do have a passport, yes?"'
@@ -96,12 +96,12 @@ $bomzstartqwestdi = {
 									if PCloSkirt > 0:
 										'You raise your skirt and show him your pussy.'
 										gs 'arousal', 'flash', 5, 'sub'
-										gs 'stat'
 									else
 										'You lower your pants and show him your pussy.'
 										gs 'arousal', 'flash', 5, 'sub'
-										gs 'stat'
 									end
+									gs 'arousal', 'end'
+									gs 'stat'
 
 									if pcs_pubes <= 3:
 										if PCloSkirt > 0:
@@ -134,11 +134,9 @@ $bomzstartqwestdi = {
 								exit
 							else
 								'The manager takes your details and passport. "Remember. Come back here on Thursday."'
+								act 'Leave': bomzQW = 1 & gt 'city_industrial'
 							end
 						end
-						gs 'arousal', 'end'
-						gs 'stat'
-						act 'Leave': bomzQW = 1 & gt 'city_industrial'
 					end
 				else
 					act 'Inquire':
@@ -152,9 +150,9 @@ $bomzstartqwestdi = {
 			end
 		end
 	end
-}
+end
 
-$workbomzdi = {
+if $ARGS[0] = 'workbomzdi':
 	*clr & cla
 	menu_off = 1
 	gs 'stat'
@@ -196,228 +194,229 @@ $workbomzdi = {
 			act 'Leave': bomzQW = 2 & minut += 1 & gt $loc, $loc_arg
 		end
 	end
-}
-
-clr
-gs 'stat'
-'<center><img <<$set_imgh>> src="images/locations/city/residential/musorka.jpg"></center>'
-'A long line of trash cans for all the local apartments, shamefully hidden behind a corrugated iron fence.'
-
-if bumtolik = 2 and rand(0,1) = 1:
-	*clr & cla
-	menu_off = 1
-	gs 'stat'
-	'<center><img <<$set_imgh>> src="images/locations/city/residential/musorka.jpg"></center>'
-	'You see the homeless person who you gave money to last time. He smiles, waving at you as he walks over to say something.'
-	'"Don''t be afraid, hear me out."'
-	act 'Listen to him': gt 'city_trashplaceevents','pos8'
 end
 
-if bumtolik = 3 and hour >= 6 and hour <= 20 and rand(0,1) = 1:
-	*clr & cla
-	menu_off = 1
+if $ARGS[0] = '':
+	clr
 	gs 'stat'
-	'<center><img <<$set_imgh>> src="images/locations/city/residential/bumt2.jpg"></center>'
-	'You see a girl feeding the homeless.'
-	'"Hey, can you take a picture of me as I help this unfortunate soul?"'
-	'You find the situation uncomfortable and refuse to photograph the girl.'
-	act 'Ask what she''s up to': gt 'city_trashplaceevents','pos9'
-end
+	'<center><img <<$set_imgh>> src="images/locations/city/residential/musorka.jpg"></center>'
+	'A long line of trash cans for all the local apartments, shamefully hidden behind a corrugated iron fence.'
 
-if musor > 3:
-	act 'Take out the trash':
+	act 'Leave': minut += 1 & gt $loc, $loc_arg
+	if bumtolik = 2 and rand(0,1) = 1:
 		*clr & cla
-		musor = 0
 		menu_off = 1
 		gs 'stat'
 		'<center><img <<$set_imgh>> src="images/locations/city/residential/musorka.jpg"></center>'
-		'You throw your trash into one of the bins.'
-		
-		if bomjqw > 0:
-			'"Hey babe, come over here and show an old man some service!"'
-			'It''s s the old bum you saw last time.'
-			act 'Speak to him': gt 'city_trashplaceevents','pos10'
-		end
-	
-		if bumtolik = 0:
-			'"Hey there!" you hear a voice call out from the bins.'
-			act 'See who spoke': gt'city_trashplaceevents','pos2'
-		elseif bumtolik = 1:
-			'"Hey babe, come here and do an old man a favor!"'
-			'It''s the old bum you saw last time.'
-			act 'Listen to him': gt'city_trashplaceevents','pos3'
-		end
-
-		act 'Move away': gt $loc, $loc_arg
+		'You see the homeless person who you gave money to last time. He smiles, waving at you as he walks over to say something.'
+		'"Don''t be afraid, hear me out."'
+		act 'Listen to him': gt 'city_trashplaceevents','pos8'
 	end
-end
 
-if bomzQW = 0 and rand(1,10) >= 8 and hour <= 16 and week ! 4:
-	*clr & cla
-	menu_off = 1
-	gs 'stat'
-	'<center><img <<$set_imgh>> src="images/locations/city/residential/bum.jpg"></center>'
-	'As you''re about to leave, a drunk old man stumbles up to you. He looks and smells like he hasn''t washed in weeks.'
-	'"It''s national give 300 <b>₽</b> to a bum day, so come on then!" he drunkenly demands.'
+	if bumtolik = 3 and hour >= 6 and hour <= 20 and rand(0,1) = 1:
+		*clr & cla
+		menu_off = 1
+		gs 'stat'
+		'<center><img <<$set_imgh>> src="images/locations/city/residential/bumt2.jpg"></center>'
+		'You see a girl feeding the homeless.'
+		'"Hey, can you take a picture of me as I help this unfortunate soul?"'
+		'You find the situation uncomfortable and refuse to photograph the girl.'
+		act 'Ask what she''s up to': gt 'city_trashplaceevents','pos9'
+	end
 
-	if money >= 300:
-		act 'Give him money':
+	if musor > 3:
+		act 'Take out the trash':
 			*clr & cla
-			money -= 300
+			musor = 0
+			menu_off = 1
 			gs 'stat'
-			'You give him some money and he thanks you before walking away. You swear you can hear him laughing...'
-			act 'Leave': minut += 1 & gt $loc, $loc_arg
+			'<center><img <<$set_imgh>> src="images/locations/city/residential/musorka.jpg"></center>'
+			'You throw your trash into one of the bins.'
+			
+			if bomjqw > 0:
+				'"Hey babe, come over here and show an old man some service!"'
+				'It''s s the old bum you saw last time.'
+				act 'Speak to him': gt 'city_trashplaceevents','pos10'
+			end
+		
+			if bumtolik = 0:
+				'"Hey there!" you hear a voice call out from the bins.'
+				act 'See who spoke': gt'city_trashplaceevents','pos2'
+			elseif bumtolik = 1:
+				'"Hey babe, come here and do an old man a favor!"'
+				'It''s the old bum you saw last time.'
+				act 'Listen to him': gt'city_trashplaceevents','pos3'
+			end
+
+			act 'Move away': gt $loc, $loc_arg
 		end
 	end
 
-	act 'Refuse':
+	if bomzQW = 0 and rand(1,10) >= 8 and hour <= 16 and week ! 4:
 		*clr & cla
+		menu_off = 1
 		gs 'stat'
-		if $start_type[1] = 'tg':
-			if daystart < 10 or stat['vaginal'] <= 2:
-				'"I''d love to, but I don''t have much money." Hell, you''re not even accustomed to your new body, but you take care not to say anything.'
-				'"Are you alright?" he asks as he looks you up and down.'
+		'<center><img <<$set_imgh>> src="images/locations/city/residential/bum.jpg"></center>'
+		'As you''re about to leave, a drunk old man stumbles up to you. He looks and smells like he hasn''t washed in weeks.'
+		'"It''s national give 300 <b>₽</b> to a bum day, so come on then!" he drunkenly demands.'
 
-				act 'No':
-					*clr & cla
-					gs'stat'
-					podozrenie += 1
-					'"No, you just ogle away."'
-					'The bum looks at you with suspicion.'
-					dynamic $bomzstartqwestdi
+		if money >= 300:
+			act 'Give him money':
+				*clr & cla
+				money -= 300
+				gs 'stat'
+				'You give him some money and he thanks you before walking away. You swear you can hear him laughing...'
+				act 'Leave': minut += 1 & gt $loc, $loc_arg
+			end
+		end
+
+		act 'Refuse':
+			*clr & cla
+			gs 'stat'
+			if $start_type[1] = 'tg':
+				if daystart < 10 or stat['vaginal'] <= 2:
+					'"I''d love to, but I don''t have much money." Hell, you''re not even accustomed to your new body, but you take care not to say anything.'
+					'"Are you alright?" he asks as he looks you up and down.'
+
+					act 'No':
+						*clr & cla
+						gs'stat'
+						podozrenie += 1
+						'"No, you just ogle away."'
+						'The bum looks at you with suspicion.'
+						gt 'city_trashplace', 'bomzstartqwestdi'
+					end
+				else
+					'"I''d love to, but I don''t have that kind of money."'
+					gt 'city_trashplace', 'bomzstartqwestdi'
 				end
 			else
-				'"I''d love to, but I don''t have that kind of money."'
-				dynamic $bomzstartqwestdi
+				'"I''m sorry mister, but I don''t have that kind of money."'
+				gt 'city_trashplace', 'bomzstartqwestdi'
 			end
-		else
-			'"I''m sorry mister, but I don''t have that kind of money."'
-			dynamic $bomzstartqwestdi
 		end
+		act 'Chase him off':
+			*clr & cla
+			bomzQW = -10
+			gs 'stat'
+			'"Get lost, you drunk old freak!" you shout at him.'
+			'"You shouldn''t be so rude to me. I meet a lot of people and know a lot of things. This will come back to haunt you when you least expect it!" he replies before leaving.'
+			act 'Leave': minut += 1 & gt $loc, $loc_arg
+		end
+		exit
 	end
-	act 'Chase him off':
-		*clr & cla
-		bomzQW = -10
-		gs 'stat'
-		'"Get lost, you drunk old freak!" you shout at him.'
-		'"You shouldn''t be so rude to me. I meet a lot of people and know a lot of things. This will come back to haunt you when you least expect it!" he replies before leaving.'
-		act 'Leave': minut += 1 & gt $loc, $loc_arg
-	end
-	exit
-end
 
-!!Hobo gangbang
-if bomzQW = -10 and rand(0,5) = 0:
-	*clr & cla
-	'<center><img <<$set_imgh>> src="images/locations/city/residential/street/drinkinghobos.jpg"></center>'
-	'On your way home, you decide to take a walk between the buildings of the residential area, only to find yourself face to face with a group of four hobos drinking beer.'
-	'You decide to ignore them and continue on your way, but suddenly feel a hand firmly gripping your arm.'
-	'"Hey, bitch! Nobody teach you to say hello?" one of them barks as you instinctively struggle to break free from his grip. He angrily frowns at you, clenching his fingers harder around your arm.'
-	'"I think this whore needs to learn some manners!" he says before turning towards his friends, who all drunkenly stand up to circle you.'
-	
-	if pcs_agil >= 50:
-		gs 'willpower', 'humiliation', 'self'
-		if will_cost > pcs_willpwr:
-			act 'Try to slip away (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
-		else
-			act 'Try to slip away (<<will_cost>> Willpower)':
-				gs 'willpower', 'humiliation', 'self'
-				gs 'willpower', 'pay', 'self'
-				*clr & cla
-				minut += 2
-				gs 'stat'
-				'You contort your limber body and manage to slip out of his grasp. Seizing the opportunity, you quickly run all the way to your apartment without looking back.'
-				act 'Continue': gt 'korr'
+	!!Hobo gangbang
+	if bomzQW = -10 and rand(0,5) = 0:
+		*clr & cla
+		'<center><img <<$set_imgh>> src="images/locations/city/residential/street/drinkinghobos.jpg"></center>'
+		'On your way home, you decide to take a walk between the buildings of the residential area, only to find yourself face to face with a group of four hobos drinking beer.'
+		'You decide to ignore them and continue on your way, but suddenly feel a hand firmly gripping your arm.'
+		'"Hey, bitch! Nobody teach you to say hello?" one of them barks as you instinctively struggle to break free from his grip. He angrily frowns at you, clenching his fingers harder around your arm.'
+		'"I think this whore needs to learn some manners!" he says before turning towards his friends, who all drunkenly stand up to circle you.'
+		
+		if pcs_agil >= 50:
+			gs 'willpower', 'humiliation', 'self'
+			if will_cost > pcs_willpwr:
+				act 'Try to slip away (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+			else
+				act 'Try to slip away (<<will_cost>> Willpower)':
+					gs 'willpower', 'humiliation', 'self'
+					gs 'willpower', 'pay', 'self'
+					*clr & cla
+					minut += 2
+					gs 'stat'
+					'You contort your limber body and manage to slip out of his grasp. Seizing the opportunity, you quickly run all the way to your apartment without looking back.'
+					act 'Continue': gt 'korr'
+				end
 			end
 		end
-	end
-	
-	if pcs_stren >= 60:
-		gs 'willpower', 'rape', 'resist'
-		if will_cost > pcs_willpwr:
-			act 'Elbow him in the face (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
-		else
-			act 'Elbow him in the face (<<will_cost>> Willpower)':
-				gs 'willpower', 'rape', 'resist'
-				gs 'willpower', 'pay', 'self'
-				*clr & cla
-				minut += 2
-				gs 'stat'
-				'Your elbow makes contact with his nose and he reels back in pain, letting you go. You hear him loudly cursing about how you''ve broken his nose as you quickly run away, not stopping until you reach your apartment.'
-				act 'Continue': gt 'korr'
+		
+		if pcs_stren >= 60:
+			gs 'willpower', 'rape', 'resist'
+			if will_cost > pcs_willpwr:
+				act 'Elbow him in the face (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+			else
+				act 'Elbow him in the face (<<will_cost>> Willpower)':
+					gs 'willpower', 'rape', 'resist'
+					gs 'willpower', 'pay', 'self'
+					*clr & cla
+					minut += 2
+					gs 'stat'
+					'Your elbow makes contact with his nose and he reels back in pain, letting you go. You hear him loudly cursing about how you''ve broken his nose as you quickly run away, not stopping until you reach your apartment.'
+					act 'Continue': gt 'korr'
+				end
 			end
 		end
-	end
-	
-	act 'Beg':
-		*clr & cla
-		gs 'npcgeneratec', 0, 'hobo', rand(35,55)
-		gs 'boyStat', $npclastgenerated
-		'<center><img <<$set_imgh>> src="images/locations/city/residential/street/sex/hobosdeepthroat.jpg"></center>'
-		'"Please let me go! I''m sorry!" you plead, your heart pounding as the dirty old men look at you with clear lust in their eyes.'
-		'"We have to make sure you understand your lesson, bitch!" the one holding your arm says as the men drag you in a dark back alley.'
-		'"Let''s put this slut''s mouth to proper use," one of them says and they all start laughing and forcefully undressing you.'
-		*nl		
-		'"Let me go!" you protest as you struggle in vain before they force you on your knees.'
-		'One of the men grins devilishly as he steps forwards and brushes his disgusting cock against your lips. "No teeth bitch, or you''ll truly be sorry!" he threatens. You reluctantly part your lips to let him into your mouth, the taste making you nauseous as you look up at him with pleading eyes, which only makes him smirk.'
-		'One of the hobos tightly grabs your hair in one hand and roughly pushes your head forwards, your eyes opening wide in shock as the man''s cock is forced down your throat in one thrust. You do your best to overcome your gag reflex and relax your throat.'
-		'You hear them laughing at you. "This bitch isn''t so snooty anymore!" one of them says as you''re forced to suck the disgusting cock in your mouth. After a few minutes, you see two of the other hobos moving around you and dropping their pants to reveal their cocks. "Don''t forget about the rest of us, bitch!"'
-		gs 'arousal', 'bj', 5, 'rough'
-		gs 'stat'
 		
-		act 'Submit':
+		act 'Beg':
 			*clr & cla
-			'<center><img <<$set_imgh>> src="images/locations/city/residential/street/sex/hobosbj.jpg"></center>'
-			'The hobo who has been fucking your throat pulls out of your mouth and grabs a can of beer before he sits against a wall and watches. The other two hobos move in front of you and insistently press their cocks against your lips, seemingly wanting you to suck them both at once. The man holding your head roughly spanks your bare ass and shoves his index finger in your anus. "Don''t keep these gentlemen waiting, whore!" he crudely commands.'
-			'You groan and wince, but decide fighting back is useless and nod. You open your mouth as wide as you can and stick out your tongue, allowing the two hobos to shove their filthy cocks inside.'
-			'"Looks like this slut can''t handle us two at once," one of them comments.'
-			'"Maybe we''ll have more luck with her other holes?" the other replies with a chuckle.'
-			'"Guys, look what I found!" says the hobo who fucked your throat. You have no idea what it is, but you''re pretty sure you won''t like it...'
-			gs 'arousal', 'bj', 10, 'rough', 'group', 'sub'
+			gs 'npcgeneratec', 0, 'hobo', rand(35,55)
+			gs 'boyStat', $npclastgenerated
+			'<center><img <<$set_imgh>> src="images/locations/city/residential/street/sex/hobosdeepthroat.jpg"></center>'
+			'"Please let me go! I''m sorry!" you plead, your heart pounding as the dirty old men look at you with clear lust in their eyes.'
+			'"We have to make sure you understand your lesson, bitch!" the one holding your arm says as the men drag you in a dark back alley.'
+			'"Let''s put this slut''s mouth to proper use," one of them says and they all start laughing and forcefully undressing you.'
+			*nl		
+			'"Let me go!" you protest as you struggle in vain before they force you on your knees.'
+			'One of the men grins devilishly as he steps forwards and brushes his disgusting cock against your lips. "No teeth bitch, or you''ll truly be sorry!" he threatens. You reluctantly part your lips to let him into your mouth, the taste making you nauseous as you look up at him with pleading eyes, which only makes him smirk.'
+			'One of the hobos tightly grabs your hair in one hand and roughly pushes your head forwards, your eyes opening wide in shock as the man''s cock is forced down your throat in one thrust. You do your best to overcome your gag reflex and relax your throat.'
+			'You hear them laughing at you. "This bitch isn''t so snooty anymore!" one of them says as you''re forced to suck the disgusting cock in your mouth. After a few minutes, you see two of the other hobos moving around you and dropping their pants to reveal their cocks. "Don''t forget about the rest of us, bitch!"'
+			gs 'arousal', 'bj', 5, 'rough'
 			gs 'stat'
 			
-			act 'Continue':
+			act 'Submit':
 				*clr & cla
-				'<center><img <<$set_imgh>> src="images/locations/city/residential/street/sex/hobosgb.jpg"></center>'
-				'"What a lucky find!" the hobo holding you in place says while the two others pull out of your mouth and you''re suddenly lifted up. You then see what this big discovery is. A rope...'
-				'"I don''t know if this cunt is into bondage, but I''m getting tired of keeping her still," the one holding you says.' 
-				'"Leave it to us. You can have her ass when we''re done!" retorts the hobo holding the rope while his two friends start pawing at your breasts.' 
-				'"You''ll thank us after we''re done with you, bitch!" one of them laughs, but you remain speechless as the three men start tying you up with the rope, locking your arms behind your back and painfully squeezing your breasts.'
-				*nl
-				'Once they''re finished, they all admire your vulnerable form before one of them lays down on his back and the others lift you up, spread your legs and lower you on top of him. He playfully slaps your ass before reaching for his cock and rubs it against your labia before roughly thrusting upwards, hilting his cock balls deep in one go.'
-				'You wince at the sudden penetration as you feel a hand grabbing hold of your bonds. "I''m going in dry, slut..." is the only warning you get before you feel a cock forcefully pushing against your anus and forcing its way into your ass. The pain quickly overwhelms you and you scream as tears form in your eyes.'
-				'"Shut the fuck up, bitch!" one of them shouts as he grabs your hair in one hand and roughly slaps your face with the other. "You''re gonna be a good girl and make me feel good with that mouth." You obediently nod before leaning forward to take his cock into your mouth.'
-				gs 'arousal', 'bj', 20, 'rough', 'group', 'submissive', 'gangbang'
-				gs 'npcgeneratec', 0, 'hobo', rand(35,55)
-				gs 'boyStat', $npclastgenerated
-				gs 'arousal', 'anal', -20, 'rough', 'group', 'submissive', 'gangbang'
-				gs 'npcgeneratec', 0, 'hobo', rand(35,55)
-				gs 'boyStat', $npclastgenerated
-				gs 'arousal', 'vaginal', -20, 'rough', 'group', 'submissive', 'gangbang'
-				gs 'arousal', 'end'
+				'<center><img <<$set_imgh>> src="images/locations/city/residential/street/sex/hobosbj.jpg"></center>'
+				'The hobo who has been fucking your throat pulls out of your mouth and grabs a can of beer before he sits against a wall and watches. The other two hobos move in front of you and insistently press their cocks against your lips, seemingly wanting you to suck them both at once. The man holding your head roughly spanks your bare ass and shoves his index finger in your anus. "Don''t keep these gentlemen waiting, whore!" he crudely commands.'
+				'You groan and wince, but decide fighting back is useless and nod. You open your mouth as wide as you can and stick out your tongue, allowing the two hobos to shove their filthy cocks inside.'
+				'"Looks like this slut can''t handle us two at once," one of them comments.'
+				'"Maybe we''ll have more luck with her other holes?" the other replies with a chuckle.'
+				'"Guys, look what I found!" says the hobo who fucked your throat. You have no idea what it is, but you''re pretty sure you won''t like it...'
+				gs 'arousal', 'bj', 10, 'rough', 'group', 'sub'
 				gs 'stat'
 				
 				act 'Continue':
 					*clr & cla
-					minut +=5
-					gs 'cum_call', 'face', 'hobo'
-					gs 'cum_call', 'mouth', 'hobo'
-					gs 'cum_call', 'face', 'hobo'
-					rape += 1
+					'<center><img <<$set_imgh>> src="images/locations/city/residential/street/sex/hobosgb.jpg"></center>'
+					'"What a lucky find!" the hobo holding you in place says while the two others pull out of your mouth and you''re suddenly lifted up. You then see what this big discovery is. A rope...'
+					'"I don''t know if this cunt is into bondage, but I''m getting tired of keeping her still," the one holding you says.' 
+					'"Leave it to us. You can have her ass when we''re done!" retorts the hobo holding the rope while his two friends start pawing at your breasts.' 
+					'"You''ll thank us after we''re done with you, bitch!" one of them laughs, but you remain speechless as the three men start tying you up with the rope, locking your arms behind your back and painfully squeezing your breasts.'
+					*nl
+					'Once they''re finished, they all admire your vulnerable form before one of them lays down on his back and the others lift you up, spread your legs and lower you on top of him. He playfully slaps your ass before reaching for his cock and rubs it against your labia before roughly thrusting upwards, hilting his cock balls deep in one go.'
+					'You wince at the sudden penetration as you feel a hand grabbing hold of your bonds. "I''m going in dry, slut..." is the only warning you get before you feel a cock forcefully pushing against your anus and forcing its way into your ass. The pain quickly overwhelms you and you scream as tears form in your eyes.'
+					'"Shut the fuck up, bitch!" one of them shouts as he grabs your hair in one hand and roughly slaps your face with the other. "You''re gonna be a good girl and make me feel good with that mouth." You obediently nod before leaning forward to take his cock into your mouth.'
+					gs 'arousal', 'bj', 20, 'rough', 'group', 'submissive', 'gangbang'
+					gs 'npcgeneratec', 0, 'hobo', rand(35,55)
+					gs 'boyStat', $npclastgenerated
+					gs 'arousal', 'anal', -20, 'rough', 'group', 'submissive', 'gangbang'
+					gs 'npcgeneratec', 0, 'hobo', rand(35,55)
+					gs 'boyStat', $npclastgenerated
+					gs 'arousal', 'vaginal', -20, 'rough', 'group', 'submissive', 'gangbang'
+					gs 'arousal', 'end'
 					gs 'stat'
-					'<center><img <<$set_imgh>> src="images/locations/city/residential/street/sex/hobosfacial.jpg"></center>'
-					'"I think it''s time to give our little bitch a reward!" one of them pants and they all pull out of your abused holes and force you onto your knees before removing your bonds. They then circle around you and start stroking their cocks.'
-					'Before long, the four hobos are all breathing heavily and you see their cocks twitching in their hands as they all start to cum. One of them aims for your mouth while the others shoot their disgusting loads all over your face.'
-					'"Holy shit, this bitch swallows!" one of them exclaims as you gulp down the disgusting sperm that ended in your mouth. As soon as they''re done, they all return to their cans of beer. "We hope you''ll show us more respect in the future, slut."'
-					'You quickly get dressed and stumble away towards the street without replying.'
-					act 'Leave': minut += 1 & gt $loc, $loc_arg
+					
+					act 'Continue':
+						*clr & cla
+						minut +=5
+						gs 'cum_call', 'face', 'hobo'
+						gs 'cum_call', 'mouth', 'hobo'
+						gs 'cum_call', 'face', 'hobo'
+						rape += 1
+						gs 'stat'
+						'<center><img <<$set_imgh>> src="images/locations/city/residential/street/sex/hobosfacial.jpg"></center>'
+						'"I think it''s time to give our little bitch a reward!" one of them pants and they all pull out of your abused holes and force you onto your knees before removing your bonds. They then circle around you and start stroking their cocks.'
+						'Before long, the four hobos are all breathing heavily and you see their cocks twitching in their hands as they all start to cum. One of them aims for your mouth while the others shoot their disgusting loads all over your face.'
+						'"Holy shit, this bitch swallows!" one of them exclaims as you gulp down the disgusting sperm that ended in your mouth. As soon as they''re done, they all return to their cans of beer. "We hope you''ll show us more respect in the future, slut."'
+						'You quickly get dressed and stumble away towards the street without replying.'
+						act 'Leave': minut += 1 & gt $loc, $loc_arg
+					end
 				end
 			end
 		end
 	end
 end
 
-act 'Leave': minut += 1 & gt $loc, $loc_arg
-
 --- city_trashplace ---------------------------------
 

+ 92 - 18
locations/clothing.qsrc

@@ -1,5 +1,82 @@
 # clothing
 !!2021/05/06
+
+if $ARGS[0] = 'totals':
+	!!sets the number of items in clothing sets
+	if $ARGS[1] = 'gm_outfits':
+		total = 200
+	elseif $ARGS[1] = 'gm_dress':
+		total = 300
+	elseif $ARGS[1] = 'gm_office':
+		total = 40
+	elseif $ARGS[1] = 'gm_maid':
+		total = 40
+	elseif $ARGS[1] = 'gm_server':
+		total = 30
+	elseif $ARGS[1] = 'gm_school':
+		total = 62
+	elseif $ARGS[1] = 'allure_swimsuit':
+		total = 100
+	elseif $ARGS[1] = 'allure_bikinis':
+		total = 140
+	elseif $ARGS[1] = 'coco_dress':
+		total = 300
+	elseif $ARGS[1] = 'coco_outfits':
+		total = 160
+	elseif $ARGS[1] = 'dolls_dress':
+		total = 120
+	elseif $ARGS[1] = 'dolls_outfits':
+		total = 80
+	elseif $ARGS[1] = 'fancy_burlesque':
+		total = 40
+	elseif $ARGS[1] = 'fashionista_dress':
+		total = 200
+	elseif $ARGS[1] = 'fashionista_outfits':
+		total = 20
+	elseif $ARGS[1] = 'flamingos_dress':
+		total = 180
+	elseif $ARGS[1] = 'flamingos_outfits':
+		total = 160
+	elseif $ARGS[1] = 'materinstvo_dress':
+		total = 10
+	elseif $ARGS[1] = 'nerdvana_cosplay':
+		total = 160
+	elseif $ARGS[1] = 'nerdvana_outfits':
+		total = 90
+	elseif $ARGS[1] = 'cats_dress':
+		total = 220
+	elseif $ARGS[1] = 'cats_outfits':
+		total = 200
+	elseif $ARGS[1] = 'scandalicious_dress':
+		total = 150
+	elseif $ARGS[1] = 'scandalicious_outfits':
+		total = 30
+	elseif $ARGS[1] = 'bomba_dresses':
+		total = 100
+	elseif $ARGS[1] = 'bomba_outfits':
+		total = 100
+	elseif $ARGS[1] = 'eroto_dress':
+		total = 140
+	elseif $ARGS[1] = 'eroto_outfits':
+		total = 100
+	elseif $ARGS[1] = 'eroto_strip':
+		total = 30
+	elseif $ARGS[1] = 'market_outfits':
+		total = 40
+	elseif $ARGS[1] = 'salacious_dress':
+		total = 60
+	elseif $ARGS[1] = 'salacious_outfits':
+		total = 20
+	elseif $ARGS[1] = 'moncheri_gown':
+		total = 100
+	elseif $ARGS[1] = 'moncheri_dress':
+		total = 100
+	elseif $ARGS[1] = 'danilovich_outfits':
+		total = 160
+	end
+end
+
+
 menu_off = 1
 
 $clothing_list_line = {
@@ -196,7 +273,7 @@ if $ARGS[0] = 'view_clothing_list':
 
 	if ARRSIZE('coco_outfits') > 0 or ARRSIZE('coco_dress') > 0:'<center><a href="exec:$ward_list_store = ''coco'' & gt ''clothing'', ''clothing_list'', ''coco''"><img src="images/locations/pavlovsk/coco/shop_name.png"></a></center>'
 
-	if ARRSIZE('fashionista') > 0 or ARRSIZE('fashionista_outfits') > 0:'<center><a href="exec:$ward_list_store = ''fashionista'' & gt ''clothing'', ''clothing_list'', ''fashionista''"><img src="images/locations/city/citycenter/mall/fashionista.png"></a></center>'
+	if ARRSIZE('fashionista_dress') > 0 or ARRSIZE('fashionista_outfits') > 0:'<center><a href="exec:$ward_list_store = ''fashionista'' & gt ''clothing'', ''clothing_list'', ''fashionista''"><img src="images/locations/city/citycenter/mall/fashionista.png"></a></center>'
 
 	if ARRSIZE('moncheri_gown') > 0 or ARRSIZE('moncheri_dress') > 0:'<center><a href="exec:$ward_list_store = ''moncheri'' & gt ''clothing'', ''clothing_list'', ''moncheri''"><img src="images/locations/city/citycenter/mall/moncheri.png"></a></center>'
 
@@ -645,17 +722,17 @@ if $ARGS[0] = 'clothing_list':
 		end
 
 		i = 1
-		:loopfashionista
-			if fashionista[i] = 1 and ($clothingworntype ! 'fashionista' or clothingwornnumber ! i):
-				gs 'clothing_attributes', 'fashionista', i
+		:loopfashionista_dress
+			if fashionista_dress[i] = 1 and ($clothingworntype ! 'fashionista_dress' or clothingwornnumber ! i):
+				gs 'clothing_attributes', 'fashionista_dress', i
 				gs 'clothing_QV', 'clo_filter'
 				!!sort by filter
 				if (clothingfilter['quality'] = 0 and CloQuality = clo_i) or (clothingfilter['inhibition'] = 0 and CloInhibit = clo_i) or clothingfilter['number'] = 0:
-					if clothingfilter['inc'] = 1 and clothingfilter['only'] = 1 and clothingfilter['sport_only'] = 0 and clothingfilter['swim_only'] = 0:*P dyneval($clothing_list_line, $ward_list_page, 'fashionista', i)
+					if clothingfilter['inc'] = 1 and clothingfilter['only'] = 1 and clothingfilter['sport_only'] = 0 and clothingfilter['swim_only'] = 0:*P dyneval($clothing_list_line, $ward_list_page, 'fashionista_dress', i)
 				end
 			end
 			i += 1
-		if i <= ARRSIZE('fashionista'):jump 'loopfashionista'
+		if i <= ARRSIZE('fashionista_dress'):jump 'loopfashionista_dress'
 
 		i = 1
 		:loopfashionista_outfits
@@ -1383,6 +1460,7 @@ if $ARGS[0] = 'view_clothing_item':
 	cla
 	'<center><img src="<<FUNC(''$clothing_image'',  $ARGS[1], ARGS[2])>>"></center>'
 	gs 'clothing_attributes', $ARGS[1], ARGS[2]
+
 	$RESULT = FUNC('$short_description', $ARGS[1], CloStyle2)
 	$RESULT += '<<ARGS[2]>>'
 	'<<$RESULT>>'
@@ -1391,6 +1469,11 @@ if $ARGS[0] = 'view_clothing_item':
 	elseif $swimwear_description = '':
 		gs 'clothing_descriptions'
 		'<<$description>>'
+		if hypnoClothes > 0 and (CloThinness >= 6 or $ARGS[1] = 'salacious_outfits' or $ARGS[1] = 'salacious_dress' _ 
+		or (($ARGS[1] = 'eroto_outfits' or $ARGS[1] = 'eroto_dress' or $ARGS[1] = 'eroto_strip') and CloThinness >= 3) _ 
+		or ($ARGS[1] = 'danilovich_outfits' and CloThinness >= 5)):
+			nl & '<I>You have a strange feeling about this outfit. You <b>really</b> want to wear it.</i>'
+		end
 	else
 		$swimwear_description
 	end
@@ -1836,12 +1919,6 @@ if $ARGS[0] = 'wear':
 
 	gs 'clothing', 'exposure_calc'
 
-	if PCloTopCut > 1:
-		if tits = 2 or tits = 3: PCloTopCut += 1
-		if tits >= 4: PCloTopCut += 2
-		if PCloTopCut > 2 and tits >=6: PCloTopCut += 1
-	end
-
 !Calculations for clothing beauty, multiplied by natural beauty
 	if PCloThinness > 0:
 		if PCloThinness = 1:
@@ -1926,16 +2003,13 @@ if $ARGS[0] = 'wear':
 end
 
 if $ARGS[0] = 'exposure_calc':
-	CoverTop = (PCloCoverTop + PBraCover)
-	CoverTop = CoverTop - 4
+	CoverTop = (PCloCoverTop + PBraCover) - 4
 	if CoverTop < 0: CoverTop = 0
 
-	CoverBack = (PCloCoverBack + PPanCoverBack)
-	CoverBack = CoverBack - 4
+	CoverBack = (PCloCoverBack + PPanCoverBack) - 4
 	if CoverBack < 0: CoverBack = 0
 
-	CoverFront = (PCloCoverFront + PPanCoverFront)
-	CoverFront = CoverFront - 4
+	CoverFront = (PCloCoverFront + PPanCoverFront) - 4
 	if CoverFront < 0: CoverFront = 0
 end
 

+ 37 - 79
locations/clothing_QV.qsrc

@@ -42,7 +42,7 @@ if $ARGS[0] = 'list':
 
 	if ARRSIZE('coco_outfits') > 0 or ARRSIZE('coco_dress') > 0:'<center><a href="exec:gt ''clothing_QV'', ''clothing_list'', ''coco''"><img src="images/locations/pavlovsk/coco/shop_name.png"></a></center>'
 
-	if ARRSIZE('fashionista') > 0 or ARRSIZE('fashionista_outfits') > 0:'<center><a href="exec:gt ''clothing_QV'', ''clothing_list'', ''fashionista''"><img src="images/locations/city/citycenter/mall/fashionista.png"></a></center>'
+	if ARRSIZE('fashionista_dress') > 0 or ARRSIZE('fashionista_outfits') > 0:'<center><a href="exec:gt ''clothing_QV'', ''clothing_list'', ''fashionista''"><img src="images/locations/city/citycenter/mall/fashionista.png"></a></center>'
 
 	if ARRSIZE('moncheri_gown') > 0 or ARRSIZE('moncheri_dress') > 0:'<center><a href="exec:gt ''clothing_QV'', ''clothing_list'', ''moncheri''"><img src="images/locations/city/citycenter/mall/moncheri.png"></a></center>'
 
@@ -501,25 +501,25 @@ if $ARGS[0] = 'clothing_list':
 		end
 
 		i = 1
-		:loopfashionista
-		if fashionista[i] = 1:
-			gs 'clothing_attributes', 'fashionista', i
+		:loopfashionista_dress
+		if fashionista_dress[i] = 1:
+			gs 'clothing_attributes', 'fashionista_dress', i
 			gs 'clothing_QV', 'clo_filter'
 			!!sort by filter
 			if (clothingfilter['quality'] = 0 and CloQuality = clo_i) or (clothingfilter['inhibition'] = 0 and CloInhibit = clo_i) or clothingfilter['number'] = 0:
 				if clothingfilter['inc'] = 1 and clothingfilter['only'] = 1 and clothingfilter['sport_only'] = 0:
 					if CloInhibit <= pcs_inhib:
 						if CloStyle ! 5:
-							if fashionista_s[i] = 0 and fashionista_h[i] > 0 and fashionista_b[i] >= (pcs_hips - 8) and fashionista_b[i] <= (pcs_hips + 8):*p '<a href="exec:gt ''clothing_QV'', ''change'', ''fashionista'', <<i>>"><img src="images/pc/items/fashionista/dress/<<i>>.jpg" 	height="250" /></a>'
+							if fashionista_dress_s[i] = 0 and fashionista_dress_h[i] > 0 and fashionista_dress_b[i] >= (pcs_hips - 8) and fashionista_dress_b[i] <= (pcs_hips + 8):*p '<a href="exec:gt ''clothing_QV'', ''change'', ''fashionista_dress'', <<i>>"><img src="images/pc/items/fashionista/dress/<<i>>.jpg" 	height="250" /></a>'
 						else
-							if fashionista_s[i] = 0 and fashionista_h[i] > 0:*p '<a href="exec:gt ''clothing_QV'', ''change'', ''fashionista'', <<i>>"><img src="images/pc/items/fashionista/dress/<<i>>.jpg" 	height="250" /></a>'
+							if fashionista_dress_s[i] = 0 and fashionista_dress_h[i] > 0:*p '<a href="exec:gt ''clothing_QV'', ''change'', ''fashionista_dress'', <<i>>"><img src="images/pc/items/fashionista/dress/<<i>>.jpg" 	height="250" /></a>'
 						end
 					end
 				end
 			end
 		end
 		i += 1
-		if i <= ARRSIZE('fashionista'):jump 'loopfashionista'
+		if i <= ARRSIZE('fashionista_dress'):jump 'loopfashionista_dress'
 
 		i = 1
 		:loopfashionista_outfits
@@ -1298,91 +1298,49 @@ if $ARGS[0] = 'change':
 		
 		!!Therapist force exhibitionist clothing check
 		if hypnoClothes > 0:
-			if CloStyle2 = 4:
-				if CloThinness < 3:		
-					act 'Wear this outfit':
-						cla
-						*clr		
-						'You pick up the uniform and think about trying them on... but you don''t really like wearing these type of uniform. You wonder if you can find more revealing uniform.'
-						gs 'willpower', 'misc', 'resist', 'easy'
-						will_cost += hypnoTime/CloThinness
-						if will_cost <= pcs_willpwr:
-							act 'Put them on anyways (<<will_cost>> Willpower)':
-								gs 'willpower', 'pay', 'resist'
-								gs 'stat'
-								gs 'clothing', 'wear', $ARGS[1], ARGS[2]
-
-								if $regularwornclothingtype = '':
-									gt 'wardrobe', 'main'
-								else
-									gt 'clothing_QV', 'gym'
-								end
-							end
-						else
-							act 'Put them on anyways (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
-						end
-						act 'Back':
+			if CloThinness >= 6 or CloStyle2 = 4 or $ARGS[1] = 'salacious_outfits' or $ARGS[1] = 'salacious_dress' _ 
+			or (($ARGS[1] = 'eroto_outfits' or $ARGS[1] = 'eroto_dress' or $ARGS[1] = 'eroto_strip') and CloThinness >= 3) _ 
+			or ($ARGS[1] = 'danilovich_outfits' and CloThinness >= 5):
+				act 'Wear this outfit':
+					gs 'clothing', 'wear', $ARGS[1], ARGS[2]
+
+					if $regularwornclothingtype = '':
+						gt 'wardrobe', 'main'
+					else
+						gt 'clothing_QV', 'gym'
+					end
+				end
+			else
+				act 'Wear this outfit':
+					cla
+					*clr		
+					'You pick up the outfit and think about trying them on... but you don''t really like wearing these type of outfits'
+					gs 'willpower', 'misc', 'resist', 'easy'
+					will_cost += hypnoTime
+					if will_cost <= pcs_willpwr:
+						act 'Put them on anyways (<<will_cost>> Willpower)':
+							gs 'willpower', 'pay', 'resist'
+							gs 'stat'
+							gs 'clothing', 'wear', $ARGS[1], ARGS[2]
+
 							if $regularwornclothingtype = '':
 								gt 'wardrobe', 'main'
 							else
 								gt 'clothing_QV', 'gym'
 							end
 						end
-					end	
-				else
-					act 'Wear this outfit':
-						gs 'clothing', 'wear', $ARGS[1], ARGS[2]
-
-						if $regularwornclothingtype = '':
-							gt 'wardrobe', 'main'
-						else
-							gt 'clothing_QV', 'gym'
-						end
+					else
+						act 'Put them on anyways (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
 					end
-				end
-			else
-				if CloThinness > 6 or $clothingworntype = 'salacious_outfits' or $clothingworntype = 'salacious_dress':
-					act 'Wear this outfit':
-						gs 'clothing', 'wear', $ARGS[1], ARGS[2]
-
+					act 'Back':
 						if $regularwornclothingtype = '':
 							gt 'wardrobe', 'main'
 						else
 							gt 'clothing_QV', 'gym'
 						end
 					end
-				else
-					act 'Wear this outfit':
-						cla
-						*clr		
-						'You pick up the outfit and think about trying them on... but you don''t really like wearing these type of outfits'
-						gs 'willpower', 'misc', 'resist', 'easy'
-						will_cost += hypnoTime
-						if will_cost <= pcs_willpwr:
-							act 'Put them on anyways (<<will_cost>> Willpower)':
-								gs 'willpower', 'pay', 'resist'
-								gs 'stat'
-								gs 'clothing', 'wear', $ARGS[1], ARGS[2]
-
-								if $regularwornclothingtype = '':
-									gt 'wardrobe', 'main'
-								else
-									gt 'clothing_QV', 'gym'
-								end
-							end
-						else
-							act 'Put them on anyways (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
-						end
-						act 'Back':
-							if $regularwornclothingtype = '':
-								gt 'wardrobe', 'main'
-							else
-								gt 'clothing_QV', 'gym'
-							end
-						end
-					end	
-				end
-			end	
+				end	
+			end
 		else
 			act 'Wear this outfit':
 				gs 'clothing', 'wear', $ARGS[1], ARGS[2]

+ 8 - 2
locations/clothing_attributes.qsrc

@@ -133,8 +133,8 @@ elseif $ARGS[0] = 'coco_outfits':
 	*P FUNC('$attributes_coco_outfits', $ARGS[0], ARGS[1])
 elseif $ARGS[0] = 'coco_dress':
 	*P FUNC('$attributes_coco_dress', $ARGS[0], ARGS[1])
-elseif $ARGS[0] = 'fashionista':
-	*P FUNC('$attributes_fashionista', $ARGS[0], ARGS[1])
+elseif $ARGS[0] = 'fashionista_dress':
+	*P FUNC('$attributes_fashionista_dress', $ARGS[0], ARGS[1])
 elseif $ARGS[0] = 'fashionista_outfits':
 	*P FUNC('$attributes_fashionista_outfits', $ARGS[0], ARGS[1])
 elseif $ARGS[0] = 'moncheri_dress':
@@ -277,5 +277,11 @@ if $ARGS[0] ! 'allure_swimsuit' and $ARGS[0] ! 'allure_bikinis' and $ARGS[0] ! '
 	end
 end
 
+if CloTopCut > 1:
+	if tits = 2 or tits = 3: CloTopCut += 1
+	if tits >= 4: CloTopCut += 2
+	if CloTopCut > 2 and tits >=6: CloTopCut += 1
+end
+
 --- clothing_attributes ---------------------------------
 

+ 4 - 4
locations/core_library.qsrc

@@ -14,8 +14,8 @@ if $ARGS[0] = 'init':
 
     !!  Summer School
     
-     !! alterstrtimg is the mc backstry, mod_ballet[beta] is a test variable to initiate regardless
-    if alterstrtimg = 13 or mod_ballet['beta'] = 1: 
+     !! $start_type['cat'] is the mc backstry, mod_ballet[beta] is a test variable to initiate regardless
+    if $start_type['cat'] = 'dancer' or mod_ballet['beta'] = 1: 
         if daystart = 1:
             mod_ballet['blocker'] = 1
         end    
@@ -25,7 +25,7 @@ if $ARGS[0] = 'init':
                 gs 'pushkin_ballet_init', 'init'
             end
     
-            if  (daystart > 6 and mod_ballet['letter'] = 0) or daystart > 45:	
+            if  ((daystart >= 6 and daystart <= 14) and mod_ballet['letter'] = 0) or (daystart >= 45 and balletqw['school'] > 1):	
                 gs 'pushkin_ballet_init', 'start'
             end 
         end
@@ -47,7 +47,7 @@ if $ARGS[0] = 'init':
         if $loc = 'pav_commcenter':
             if month = 7 and day = 3 and (hour >= 16 and hour < 17) and mod_ballet['letter'] = 1:
                 ! Pre-flight - travel to school dorms
-                act '<font color="#80E656">Get on the bus</font>': gs 'shortgs', 'remove_array_element', 'mod_ballet', 'letter' & gt 'pushkin_ballet_res', 'start'	
+                act 'Get on the bus': gt 'pushkin_ballet_res', 'start'	
             end
         end
     

+ 35 - 55
locations/cum_call.qsrc

@@ -29,41 +29,8 @@ gs 'cum_call', 'anus' - for an unknown partner named "unknown", or
 gs 'cum_call', 'anus', 'plumber' - for an unknown partner named "plumber"}
 
 if $ARGS[0] ! 'precum':
-	$cumboy = $boy
-
-	if ARGS[5] ! 0:
-		sexvolume = ARGS[5]
-	end
-
-	if ARGS[4] ! 0:
-		sexspecpot = ARGS[4]
-	else
-		sexspecpot = 0
-	end
 
-	if ARGS[3] = 1:
-		sexcontra = 1
-	elseif ARGS[3] = 2:
-		sexcontra = 2
-	elseif ARGS[3] = 3:
-		sexcontra = 3
-	elseif ARGS[3] = 4:
-		sexcontra = 4
-	elseif ARGS[3] = 5:
-		sexcontra = 5
-	elseif ARGS[3] = 6:
-		sexcontra = 6
-	elseif ARGS[3] = 7:
-		sexcontra = 7
-	end
-
-	if ARGS[2] = 2:
-		sexunaware = 1
-	elseif ARGS[2] = 1:
-		sexpartkno = 1
-	else
-		sexpartkno = 0
-	end
+	if $boy ! $ARGS[1] and $ARGS[1] ! '': $boy = $ARGS[1]
 
 	!!This check if the name passed is not in the new MGX format
 	if $ARGS[1] = '' or mid($ARGS[1],2,1) > 10:
@@ -84,49 +51,62 @@ if $ARGS[0] ! 'precum':
 		gs 'boyStat', $ARGS[1]
 	end
 
-	if $ARGS[0] = 'labia':
+	$cumboy = $boy
+
+	sexvolume  = iif(ARGS[5] ! 0,  ARGS[5], 40)
+	sexspecpot = iif(ARGS[4] ! 0,  ARGS[4], 0)
+	sexcontra  = max(0, min(7, ARGS[3]), sexcontra)
+
+	sexpartkno = iif(npc_love[$boy] > 0, 1, 0)
+	if ARGS[2] = 2:
+		sexunaware = 1
+	elseif ARGS[2] = 1:
+		sexpartkno = 1
+	end
+
+		if arrpos('$ARGS', 'labia') >= 0:
 		spafinloc = 1
-	elseif $ARGS[0] = 'pantyfront':
+	elseif arrpos('$ARGS', 'pantyfront') >= 0:
 		spafinloc = 2
-	elseif $ARGS[0] = 'anus':
+	elseif arrpos('$ARGS', 'anus') >= 0:
 		spafinloc = 3
-	elseif $ARGS[0] = 'anal':
+	elseif arrpos('$ARGS', 'anal') >= 0:
 		spafinloc = 3
-	elseif $ARGS[0] = 'butt':
+	elseif arrpos('$ARGS', 'butt') >= 0:
 		spafinloc = 4
-	elseif $ARGS[0] = 'pantyrear':
+	elseif arrpos('$ARGS', 'pantyrear') >= 0:
 		spafinloc = 5
-	elseif $ARGS[0] = 'clothes_hidden':
+	elseif arrpos('$ARGS', 'clothes_hidden') >= 0:
 		spafinloc = 6
-	elseif $ARGS[0] = 'clothes':
+	elseif arrpos('$ARGS', 'clothes') >= 0:
 		spafinloc = 7
-	elseif $ARGS[0] = 'back':
+	elseif arrpos('$ARGS', 'back') >= 0:
 		spafinloc = 8
-	elseif $ARGS[0] = 'legs':
+	elseif arrpos('$ARGS', 'legs') >= 0:
 		spafinloc = 9
-	elseif $ARGS[0] = 'feet':
+	elseif arrpos('$ARGS', 'feet') >= 0:
 		spafinloc = 9
-	elseif $ARGS[0] = 'arms':
+	elseif arrpos('$ARGS', 'arms') >= 0:
 		spafinloc = 10
-	elseif $ARGS[0] = 'face':
+	elseif arrpos('$ARGS', 'face') >= 0:
 		spafinloc = 11
-	elseif $ARGS[0] = 'mouth':
+	elseif arrpos('$ARGS', 'mouth') >= 0:
 		spafinloc = 12
-	elseif $ARGS[0] = 'mouth_swallow':
+	elseif arrpos('$ARGS', 'mouth_swallow') >= 0:
 		spafinloc = 12
 		stat['swallow'] += 1
-	elseif $ARGS[0] = 'hands':
+	elseif arrpos('$ARGS', 'hands') >= 0:
 		spafinloc = 13
-	elseif $ARGS[0] = 'stomach':
+	elseif arrpos('$ARGS', 'stomach') >= 0:
 		spafinloc = 14
-	elseif $ARGS[0] = 'breasts':
+	elseif arrpos('$ARGS', 'breasts') >= 0:
 		spafinloc = 15
-	elseif $ARGS[0] = 'hair':
+	elseif arrpos('$ARGS', 'hair') >= 0:
 		spafinloc = 16
-	elseif $ARGS[0] = 'internalcondom':
+	elseif arrpos('$ARGS', 'internalcondom') >= 0:
 		spafinloc = 17
 	else
-		spafinloc = 0
+		spafinloc = max(0, min(17, ARGS[0]))
 		!Vagina and default
 	end
 

+ 87 - 29
locations/cum_cleanup.qsrc

@@ -52,8 +52,15 @@ if $ARGS[0] = 'cleanloc' and arrsize('ARGS') > 1:
 	if i < arrsize('$sparrnam'):
 		if sparrloc[i] = ARGS[1]:
 			if sparrloc[i] = 0 or sparrloc[i] = 3:
-				sparrvol[i] = 0
-				sparrslc[i] = 0
+				if mc_inventory['enema_kit'] = 1 or cheatKlisma = 0:
+					cumsumvag -= iif(sparrloc[i]=0,sparrvol[i],0)
+					cumsumass -= iif(sparrloc[i]=3,sparrvol[i],0)
+					sparrvol[i] = 0
+					sparrslc[i] = 0
+				else
+					cumspclnt = 15
+					gs 'cum_cleanup'
+				end
 			else
 				gs 'cum_cleanup', 'cleandeposit', i
 			end
@@ -63,6 +70,8 @@ if $ARGS[0] = 'cleanloc' and arrsize('ARGS') > 1:
 	end
 elseif $ARGS[0] = 'cleandeposit' and arrsize('ARGS') > 1:
 	cumsumbod -= sparrvol[ARGS[1]]
+	cumsumvag -= iif(sparrloc[ARGS[1]]=0,sparrvol[ARGS[1]],0)
+	cumsumass -= iif(sparrloc[ARGS[1]]=3,sparrvol[ARGS[1]],0)
 	KILLVAR 'sparrage',ARGS[1]
 	KILLVAR 'sparrloc',ARGS[1]
 	KILLVAR '$sparrnam',ARGS[1]
@@ -71,6 +80,10 @@ elseif $ARGS[0] = 'cleandeposit' and arrsize('ARGS') > 1:
 	KILLVAR 'sparrvol',ARGS[1]
 	KILLVAR 'sparrslc',ARGS[1]
 	KILLVAR 'sparrcnt',ARGS[1]
+	cumloc[ARGS[1]] = 0
+	if cumsumbod < 0: cumsumbod = 0
+	if cumsumvag <= 0: cumsumvag = 0 & cum_vol['vagina'] = 0 & cumvol[0] = 0 & cum_loc['vagina'] = 0 & cumloc[0] = 0
+	if cumsumass <= 0: cumsumass = 0 & cum_vol['anus'] = 0   & cumvol[3] = 0 & cum_loc['anus'] = 0   & cumloc[3] = 0
 elseif $ARGS[0] = 'cleanwomb' and arrsize('ARGS') > 1:
 	KILLVAR 'cumarrcpt',ARGS[1]
 	KILLVAR 'cumarrppt',ARGS[1]
@@ -81,7 +94,7 @@ elseif $ARGS[0] = 'cleanwomb' and arrsize('ARGS') > 1:
 	KILLVAR 'cumarrcnt',ARGS[1]
 	KILLVAR 'cumarrcon',ARGS[1]
 elseif $ARGS[0] = 'cumcondslip':
-	if cumcondslip_deep > (pcs_vag / 2):
+	if cumcondslip_deep > (pcs_vag / 2) and vgape < 3:
 		'The condom is too deep inside you to be pulled out by hand. You need to seek professional help!'
 	else
 		gs 'cum_cleanup', 'cleanloc', 17
@@ -102,6 +115,7 @@ elseif $ARGS[0] = 'reset':
 	KILLVAR 'cumarrcon'
 	KILLVAR 'cumcount'
 	KILLVAR 'cumloc'
+	killvar 'cum_loc'
 	KILLVAR '$cumowner'
 	KILLVAR 'cumspclnt'
 	KILLVAR 'cumvolume'
@@ -124,21 +138,21 @@ elseif $ARGS[0] = 'reset':
 	cumsumvag = 0
 	cumsumass = 0
 	Enable_clearcum = 0
-	spdirtyn = 0
-	spdirtyv = 0
-	spdirty = 0
 elseif $ARGS[0] = '':
-	cumsumbod = 0
-	cumsumvag = 0
-	cumsumass = 0
-
+	if cumspclnt = 0: exit
 	KILLVAR 'spafinloc'
 	killvar 'toclean'
 	killvar 'deresidue'
 	if cumspclnt = 1 or cumspclnt = 10:
+		if hypnoAddict > 0:
+			!{full clean but skipping internal due to hypno}
+			cumspclnt = 18
+			gs 'cum_cleanup'
+			exit
+		end
 		!{full external clean}
-		deresidue[arrsize('deresidue')] = 0
-		deresidue[arrsize('deresidue')] = 3
+		if isprok = 0 and vibratorIN = 0: deresidue[arrsize('deresidue')] = 0
+		if analplugin = 0: deresidue[arrsize('deresidue')] = 3
 		toclean[arrsize('toclean')] = 1
 		toclean[arrsize('toclean')] = 2
 		toclean[arrsize('toclean')] = 4
@@ -162,10 +176,9 @@ elseif $ARGS[0] = '':
 		toclean[arrsize('toclean')] = 0
 		toclean[arrsize('toclean')] = 3
 		toclean[arrsize('toclean')] = 17
+		if hypnoAddict > 0 and (cumloc[0] > 0 or cumloc[3] > 0): 'You have no reason to, but you carefully avoid cleaning out your pussy and ass.'
 	elseif cumspclnt = 4:
 		!{external body clean}
-		deresidue[arrsize('deresidue')] = 0
-		deresidue[arrsize('deresidue')] = 3
 		toclean[arrsize('toclean')] = 1
 		toclean[arrsize('toclean')] = 4
 		toclean[arrsize('toclean')] = 8
@@ -214,6 +227,7 @@ elseif $ARGS[0] = '':
 		toclean[arrsize('toclean')] = 4
 		deresidue[arrsize('deresidue')] = 0
 		deresidue[arrsize('deresidue')] = 3
+		if hypnoAddict > 0 and (cumloc[0] > 0 or cumloc[3] > 0): 'You have no reason to, but you carefully avoid cleaning out your pussy and ass.'
 	elseif cumspclnt = 16:
 		!{Breasts}
 		toclean[arrsize('toclean')] = 15
@@ -248,36 +262,80 @@ elseif $ARGS[0] = '':
 		KILLVAR 'sparrvol'
 		KILLVAR 'sparrslc'
 		KILLVAR 'sparrcnt'
+		KILLVAR 'cumloc'
+		KILLVAR 'cum_loc'
+		KILLVAR 'cumvol'
+		KILLVAR 'cum_vol'
 	end
 
 	i = 0
 	:cumcleanloop
 	if i < arrsize('$sparrnam'):
 		tmp = arrpos('deresidue', sparrloc[i])
-		if tmp ! -1 and tmp < arrsize('deresidue'): sparrslc[i] = 0 & sparrvol[i] = 0
+		if tmp ! -1 and tmp < arrsize('deresidue'):
+			!! vagina
+			if sparrloc[i] = 0:
+				!! cannot be completely cleaned with tissues\toilet use\hypno block\no enema kit
+				if FUNC('Cum_Manage', 'check_innards', sparrloc[i]) = 1 _ 
+				or (hypnoAddict = 0 and (mc_inventory['enema_kit'] = 1 or cheatKlisma = 0) _ 
+				and ((cumspclnt = 10 or cumspclnt = 1 or cumspclnt = 3) or cheatKlisma = 0)):
+					cumsumbod -= sparrvol[i] & cumsumvag -= sparrvol[i]
+					sparrslc[i] = 0 & sparrvol[i] = 0
+					isprok = 0 & vibratorIN = 0
+				end
+			!! ass
+			elseif sparrloc[i] = 3:
+				if FUNC('Cum_Manage', 'check_innards', sparrloc[i]) = 1 or cumspclnt = 7 _ 
+				or (hypnoAddict = 0 and (mc_inventory['enema_kit'] = 1 or cheatKlisma = 0) _ 
+				and ((cumspclnt = 10 or cumspclnt = 1 or cumspclnt = 3) or cheatKlisma = 0)):
+					cumsumbod -= sparrvol[i] & cumsumass -= sparrvol[i]
+					sparrslc[i] = 0 & sparrvol[i] = 0
+					analplugin = 0 & analplugout = 0
+				end
+			else
+				cumsumbod -= sparrvol[i]
+				sparrslc[i] = 0 & sparrvol[i] = 0
+			end
+		end
 
 		tmp = arrpos('toclean', sparrloc[i])
 		if tmp ! -1 and tmp < arrsize('toclean'):
-			gs 'cum_cleanup', 'cleandeposit', i
-		else
-			i += 1
-			cumsumbod += sparrvol[i]
+			!! vagina
 			if sparrloc[i] = 0:
-				cumsumvag += sparrvol[i]
+				if cumsumvag*rand(6,9)/6 >= FUNC('Cum_Manage', 'check_innards', sparrloc[i], 1) and isprok = 0 and vibratorIN = 0 _ 
+				or (hypnoAddict = 0 and (mc_inventory['enema_kit'] = 1 or cheatKlisma = 0) _ 
+				and ((cumspclnt = 10 or cumspclnt = 1 or cumspclnt = 3) or cheatKlisma = 0)):
+					gs 'cum_cleanup', 'cleandeposit', i
+					if cumspclnt = 3: isprok = 0 & vibratorIN = 0
+				end
+			!! ass
 			elseif sparrloc[i] = 3:
-				cumsumass += sparrvol[i]
+				if (cumsumass*rand(6,9)/6 >= FUNC('Cum_Manage', 'check_innards', sparrloc[i], 1) and analplugin = 0) or cumspclnt = 7 _ 
+				or (hypnoAddict = 0 and (mc_inventory['enema_kit'] = 1 or cheatKlisma = 0) _ 
+				and ((cumspclnt = 10 or cumspclnt = 1 or cumspclnt = 3) or cheatKlisma = 0)):
+					gs 'cum_cleanup', 'cleandeposit', i
+					if cumspclnt = 3 or cumspclnt = 7: analplugin = 0
+				end
+			else
+				gs 'cum_cleanup', 'cleandeposit', i
 			end
+		else
+			i += 1
 		end
 		jump 'cumcleanloop'
 	end
-	spdirty = 0
-	cumloc[0] = 0
-	spdirtyn = 0
-	spdirtyv = 0
-	cumloc[12] = 0
-	cumloc[6] = 0
-	cumloc[7] = 0
-	killvar 'cumloc'
+	killvar 'toclean'
+	killvar 'deresidue'
+	killvar 'tmp'
+	killvar 'i'
+	killvar 'lubonus'
+	killvar 'anal_slip'
+	killvar 'vaginal_slip'
+	killvar 'ar_anal_lube'
+	killvar 'ar_vag_lube'
+	if cumsumvag > 0: cum_vol['vagina'] = cumsumvag & cumvol[0] = cumsumvag & cum_loc['vagina'] = 1 & cumloc[0] = 1
+	if cumsumass > 0: cum_vol['anus'] = cumsumass   & cumvol[3] = cumsumass & cum_loc['anus'] = 1   & cumloc[3] = 1
+
 end
 
 --- cum_cleanup ---------------------------------

+ 2 - 1
locations/dachi.qsrc

@@ -22,7 +22,8 @@ end
 'At the alley entrance dug into the ground is a <a href="exec:gt ''etoexhib'', ''pos7''">column with ads</a>.'
 'At the end of the alley there is <a href="exec:gt ''etoexhib'', ''pos6''">a spring with spring water</a>.'
 
-act 'Go to the highway':minut += 15 & nroad = 5 & gt 'road'
+act 'Walk to the bus station (0:03)': minut += 3 & gt 'bus', 'communal'
+act 'Go to the highway (0:15)': minut += 15 & nroad = 5 & gt 'road'
 
 if func('homes_properties', 'has_access','village_cottage'):
 	'Enter <a href="exec:gt ''dachamy'', ''start''">your yard</a>.'

+ 9 - 1
locations/dateF.qsrc

@@ -16,8 +16,16 @@ if $ARGS[0] = 'start':
 	!! generate a girlfriend
 	menu_off = 1
 	$location_type = 'event_outdoors'
-	gs 'girl'
 	*clr & cla
+	!! generate a girl
+	if $region = 'pav':
+		gs 'npcgeneratec', 1, '', rand(18,45), 1
+	elseif $region = 'city':
+		gs 'npcgeneratec', 1, '', rand(18,45), rand(3,4)
+	end
+	gs 'boyStat', $npclastgenerated
+	gs 'girl', 'details'
+
 	act 'Ignore her and hurry away':gt $loc, $loc_arg
 	!!1) Sveta in a school uniform
 	if PCloStyle2 = 4:

+ 2 - 0
locations/dateM.qsrc

@@ -23,6 +23,8 @@ if $ARGS[0] = 'start':
 		gs 'npcgeneratec', 0, '', rand(18,45), rand(3,4)
 	end
 	gs 'boyStat', $npclastgenerated
+	gs 'boy', 'details'
+
 	act 'Ignore him and hurry away':gt $loc, $loc_arg
 !!1) Sveta in a school uniform
 	if PCloStyle2 = 4:

+ 4 - 0
locations/dimaRevenge.qsrc

@@ -9,6 +9,7 @@ menu_off = 1
 !! dimaDisco - Did you attend the disco?
 !! dimaTrain - Did you go to the train station?
 gs 'stat'
+if DimaRudeBlock = 0: DimaRudeBlock = 1
 
 if ARGS[0] = 1:
 	menu_off = 1
@@ -730,6 +731,9 @@ if dimaRevChoice = 3:
 			'"No wait! I''m sorry. I''ll stop everyone from talking. I swear. Jst don''t show that to anyone."'
 			'"That''s more like it. You have until the end of the day to get results, or else you know what will happen. Don''t you? I don''t want to see you in class until you get it done." He nods and heads into the hall. You breathe a sigh of relief. You were seriously scared there, but it was also exciting seeing him so scared himself. You think about following him around to make sure he keeps his word, but that would mean skipping class. You know he won''t cross you as long as you have dirt on him. You head to class.'
 			act 'Go to class':
+				!! needed to avoid school absences
+				gs 'gschool_lessons', 'morning' & school_period = 1
+
 				*clr & cla
 				'<center><b><font color="maroon">Classroom</font></b></center>'
 				'<center><img <<$set_imgh>> src="images/locations/pavlovsk/school/classroom/engaged.jpg"></center>'

+ 153 - 121
locations/dinSex.qsrc

@@ -32,91 +32,121 @@ end
 $penis_desc = $dick_girth + ', ' + $penis_desc
 
 if $ARGS[0] = 'std_trigger':
-	tipvenerarand = rand(0, 10)
-	if protect = 1:
-		if rand(0, 1000) = 1000: gs 'dinSex', 'disease_picker'
+	if cheatHealth = 1 or rand(pcs_health/10, pcs_health) > 600: exit
+	if npc_rel[$boy] > rand(80,90): exit
+	if npc_love[$boy] > rand(40,60): exit
+	if npc_sexual[$boy]+npc_sex[$boy] > 0 and rand(10) > 5: exit
+
+	!! Protected
+	if (protect = 1 or sexcontra = 3) and noprotect = 0:
+		if rand(0, 1000) = 666:
+			if $ARGS[1] <> 'low': gs 'dinSex', 'disease_picker'
+		end
+	!! Broke \ Slipped off
+	elseif sexcontra = 4 or sexcontra = 5:
+		if rand(0, 100) >= iif($ARGS[1] = 'high',65,iif($ARGS[1] = 'low',85,75)): gs 'dinSex', 'disease_picker'
+	!! Sabotaged
+	elseif sexcontra = 6 or sexcontra = 7:
+		if rand(0, 100) >= iif($ARGS[1] = 'high',70,iif($ARGS[1] = 'low',90,80)): gs 'dinSex', 'disease_picker'
+	!! Unprotected
 	else
-		if rand(0, 100) >= 80: gs 'dinSex', 'disease_picker'
+		if rand(0, 100) >= iif($ARGS[1] = 'high',60,iif($ARGS[1] = 'low',80,70)): gs 'dinSex', 'disease_picker'
 	end
 end
 
-if $ARGS[0] = 'disease_picker': 
-	if cheatHealth = 0:
-		if tipvenerarand < 5:
-			!!candidiasis/thrush/yeast infection
-			if rand(1, 100) > 85 and KandidozOnce = 0:
-				KandidozOnce = 1
-				Kandidoz += 1
-			end
-		elseif tipvenerarand < 7:
-			!!gonorrhea/triper
-			if rand(1, 100) > 95 and TriperOnce = 0:
-				TriperOnce = 1
-				Triper += 1
-				Venera += 1
-			end
-		elseif tipvenerarand = 7:
-			!!syphilis
-			if rand(1, 100) > 95 and SifacOnce = 0:
-				SifacOnce = 1
-				Sifilis += 1
-				Venera += 1
-			end
-		elseif tipvenerarand = 8:
-			!!herpes
-			if rand(1, 100) > 90 and GerpesOnce = 0:
-				GerpesOnce = 1
-				Venera += 1
-				Gerpes += 1
-				GenHerpes = 1
-			end
+if $ARGS[0] = 'disease_picker':
+	tipvenerarand = rand(0, 10)
+
+	if tipvenerarand < 5:
+		!!candidiasis/thrush/yeast infection
+		if rand(1, 100) > 85 and KandidozOnce = 0:
+			KandidozOnce = 1
+			Kandidoz = rand(-12,-6)
 		end
-	end	
+	elseif tipvenerarand < 7:
+		!!gonorrhea/triper
+		if rand(1, 100) > 95 and TriperOnce = 0:
+			TriperOnce = 1
+			Triper = rand(-11,-6)
+			Venera += 1
+		end
+	elseif tipvenerarand = 7:
+		!!syphilis
+		if rand(1, 100) > 95 and SifacOnce = 0:
+			SifacOnce = 1
+			Sifilis = rand(-9,-5)
+			Venera += 1
+		end
+	elseif tipvenerarand = 8:
+		!!herpes
+		if rand(1, 100) > 90 and GerpesOnce = 0:
+			GerpesOnce = 1
+			Venera += 1
+			Gerpes = rand(-10,-6)
+			GenHerpes = 1
+		end
+	end
+	killvar 'tipvenerarand'
 end
 
 if $ARGS[0] = 'std_trigger_oral':
-	tipvenerarand = rand(0, 10)
-	if protect = 1:
-		if rand(0, 1000) = 1000: gs 'dinSex', 'disease_picker_oral'
+	if cheatHealth = 1 or rand(pcs_health/10, pcs_health) > 300: exit
+	if npc_rel[$boy] > rand(80,90): exit
+	if npc_love[$boy] > rand(40,60): exit
+	if npc_sexual[$boy]+npc_sex[$boy] > 0 and rand(10) > 5: exit
+
+	!! Protected
+	if (protect = 1 or sexcontra = 3) and noprotect = 0:
+		if rand(0, 1000) = 666:
+			if $ARGS[1] <> 'low': gs 'dinSex', 'disease_picker_oral'
+		end
+	!! Broke \ Slipped off
+	elseif sexcontra = 4 or sexcontra = 5:
+		if rand(0, 100) >= iif($ARGS[1] = 'high',70,iif($ARGS[1] = 'low',90,80)): gs 'dinSex', 'disease_picker_oral'
+	!! Sabotaged
+	elseif sexcontra = 6 or sexcontra = 7:
+		if rand(0, 100) >= iif($ARGS[1] = 'high',75,iif($ARGS[1] = 'low',95,85)): gs 'dinSex', 'disease_picker_oral'
+	!! Unprotected
 	else
-		if rand(0, 100) >= 80: gs 'dinSex', 'disease_picker_oral'
+		if rand(0, 100) >= iif($ARGS[1] = 'high',65,iif($ARGS[1] = 'low',85,75)): gs 'dinSex', 'disease_picker_oral'
 	end
 end
 
 if $ARGS[0] = 'disease_picker_oral':
-	if cheatHealth = 0:
-		if tipvenerarand >= 5 and tipvenerarand < 7:
-			if rand(1, 100) > 95 and TriperOnce = 0:
-				TriperOnce = 1
-				TriperOral += 1
-				Venera += 1
-				if rand (0,100) < 15: TriperOralSigns = 1 
-			end
-		elseif tipvenerarand = 7:
-			if rand(0,1) = 1:
-				!!syphilis
-				if rand(1, 100) > 95 and SifacOnce = 0:
-					SifacOnce = 1
-					Sifilis += 1
-					Venera += 1
-				end
-			end
-		elseif tipvenerarand < 5:
-			!!candidiasis/thrush/yeast infection
-			if rand(1, 100) > 85 and KandidozOnce = 0:
-				KandidozOnce = 1
-				Kandidoz += 1
-			end
-		elseif tipvenerarand = 8:
-			!!herpes
-			if rand(1, 100) > 90 and GerpesOnce = 0:
-				GerpesOnce = 1
+	tipvenerarand = rand(0, 10)
+
+	if tipvenerarand >= 5 and tipvenerarand < 7:
+		if rand(1, 100) > 95 and TriperOnce = 0:
+			TriperOnce = 1
+			TriperOral = rand(-15,-9)
+			Venera += 1
+			if rand (0,100) < 15: TriperOralSigns = 1 
+		end
+	elseif tipvenerarand = 7:
+		if rand(0,1) = 1:
+			!!syphilis
+			if rand(1, 100) > 95 and SifacOnce = 0:
+				SifacOnce = 1
+				Sifilis = rand(-13,-8)
 				Venera += 1
-				Gerpes += 1
-				OrHerpes = 1
 			end
 		end
+	elseif tipvenerarand < 5:
+		!!candidiasis/thrush/yeast infection
+		if rand(1, 100) > 85 and KandidozOnce = 0:
+			KandidozOnce = 1
+			Kandidoz = rand(-21,-14)
+		end
+	elseif tipvenerarand = 8:
+		!!herpes
+		if rand(1, 100) > 90 and GerpesOnce = 0:
+			GerpesOnce = 1
+			Venera += 1
+			Gerpes = rand(-16,-11)
+			OrHerpes = 1
+		end
 	end
+	killvar 'tipvenerarand'
 end
 
 if $ARGS[0] = 'wear_condom':
@@ -124,13 +154,17 @@ if $ARGS[0] = 'wear_condom':
 	if mc_inventory['equipped_condoms'] > 0:
 		dynamic $prezik
 		protect = 1
-		if preziktype = 2:
-			sexcontra = 4
-			'<<$boydesc>> takes your sabotaged condom and puts it on, not even noticing anything off.'
+		if rand(1,mc_inventory['equipped_condoms']) <= mc_inventory['bad_condoms']: 
+			mc_inventory['bad_condoms'] -= 1
+			noprotect = 1
+			sexcontra = rand(4,5)
+			*p '<<ucase(mid($boydesc,1,1))>><<mid($boydesc,2,len($boydesc)-1)>> takes your '+iif(preziktype = 2,'sabotaged condom and puts it on, not even noticing anything off.','condom and puts it on <<$xyr>> cock.')
 		else
 			sexcontra = 3
-			'<<$boydesc>> takes your condom and puts it on <<$xyr>> cock.'
+			*p '<<$boydesc>> takes your condom and puts it on <<$xyr>> cock.'
+			noprotect = 0
 		end
+		if preziktype = 2: sexcontra = 7 & noprotect = 1
 	else
 		sexcontra = 0
 	end
@@ -139,10 +173,11 @@ end
 !! this procedure calls 'arousal','vaginal', so the rest of the parameters for arousal should be passed as parameters: call like gs 'dinsex','vaginal_sex',10,'rough','sub'
 if $ARGS[0] = 'vaginal_sex':
 	frost = 0 &! the sex heats
+	gs 'arousal','vaginal',ARGS[1],$ARGS[2],$ARGS[3],$ARGS[4],$ARGS[5],$ARGS[6],$ARGS[7],$ARGS[8]
 	vaginal_tightness = 5 + vgrdif + vltdif - pcs_horny / 10
 	arousal_modifier = 12 - vaginal_tightness
+	$temp_mens = iif(cycle <= 0,' and a bit of your period leaks from your vagina','')
 	if pcs_vag > 0:
-		$temp_mens = iif(cycle <= 0,' and a bit of your period leaks from your vagina','')
 		if vaginal_tightness >= 30: 
 			'You let out a groan when <<$boydesc>> penetrates you. You are too tight to take <<$xyr>> just yet, <<$xe>> is tearing you apart!'
 			'You gasp and scream while <<$xyr>> <<$penis_desc>> painfully stretches and tears your pussy<<$temp_mens>>.'
@@ -161,18 +196,15 @@ if $ARGS[0] = 'vaginal_sex':
 		elseif vaginal_tightness < -3: 
 			'You feel <<$boydesc>>''s <<$penis_desc>> sliding through your wet folds<<$temp_mens>>. You savor the intense pleasure from the <<$penis_desc>> inside you, your cunt aching to be filled even more.'
 		end
-		gs 'arousal','vaginal',$ARGS[1],$ARGS[2],$ARGS[3],$ARGS[4],$ARGS[5],$ARGS[6],$ARGS[7],$ARGS[8]
 
 		pcs_horny += arousal_modifier
 		pcs_mood += arousal_modifier
 	
 	else
-		$temp_mens = iif(cycle <= 0,' and a bit of your period leaks from your vagina','')
 		pcs_horny += arousal_modifier * 2
 		pcs_mood += arousal_modifier * 2
 		'<<$boydesc>> pushes <<$xyr>> <<$penis_desc>> into your unexplored pussy gently. It is a bit painful, but as your lust builds up you do not want to wait anymore.'
 		'With the next push from <<$boydesc>>, you push your ass towards <<$xyr>> cock. You feel your hymen break and his cock slide into deep inside you, <<$xyr>> head rubbing against your no longer untouched walls as you both moan very loudly.'
-		gs 'arousal','vaginal',$ARGS[1],$ARGS[2],$ARGS[3],$ARGS[4],$ARGS[5],$ARGS[6],$ARGS[7],$ARGS[8]
 	end
 	killvar '$temp_mens'
 end
@@ -187,15 +219,15 @@ if $ARGS[0] = 'boy_puts_condom':
 			if rand(1,mc_inventory['equipped_condoms']) <= mc_inventory['bad_condoms']: 
 				mc_inventory['bad_condoms'] -= 1
 				noprotect = 1
-				sexcontra = 7
+				sexcontra = rand(4,5)
 				*p '<<ucase(mid($boydesc,1,1))>><<mid($boydesc,2,len($boydesc)-1)>> takes your '+iif(preziktype = 2,'sabotaged ','')+ 'condom and puts it on <<$xyr>> <<dick>> centimeter dick.'
 			else
 				sexcontra = 3
 				*p '<<ucase(mid($boydesc,1,1))>><<mid($boydesc,2,len($boydesc)-1)>> takes your condom and puts it on <<$xyr>> <<dick>> centimeter dick.'
 				noprotect = 0
 			end
+			if preziktype = 2: sexcontra = 7 & noprotect = 1
 			mc_inventory['equipped_condoms'] -= 1
-			sexcontra = iif(preziktype = 2,7,sexcontra) 
 		else
 			sexcontra = 0
 			!! the hormonal contraception is still taken in account
@@ -208,13 +240,13 @@ if $ARGS[0] = 'boy_puts_condom':
 			if rand(1,mc_inventory['equipped_condoms']) <= mc_inventory['bad_condoms']: 
 				mc_inventory['bad_condoms'] -= 1
 				noprotect = 1
-				sexcontra = 7
+				sexcontra = rand(4,5)
 			else
 				sexcontra = 3
 				noprotect = 0
 			end
+			if preziktype = 2: sexcontra = 7 & noprotect = 1
 			mc_inventory['equipped_condoms'] -= 1
-			sexcontra = iif(preziktype = 2,7,sexcontra) 
 		else
 			sexcontra = 0
 			!! the hormonal contraception is still taken in account
@@ -240,15 +272,15 @@ if $ARGS[0] = 'pc_puts_condom':
 			if rand(1,mc_inventory['equipped_condoms']) <= mc_inventory['bad_condoms']: 
 				mc_inventory['bad_condoms'] -= 1
 				noprotect = 1
-				sexcontra = 7
+				sexcontra = rand(4,5)
 				*p 'You take your '+iif(preziktype = 2,'sabotaged ','')+ 'condom and put it on <<$xyr>> <<dick>> centimeter dick.'
 			else
 				sexcontra = 3
 				*p 'You take your condom and put it on <<$xyr>> <<dick>> centimeter dick.'
 				noprotect = 0
 			end
+			if preziktype = 2: sexcontra = 7 & noprotect = 1
 			mc_inventory['equipped_condoms'] -= 1
-			sexcontra = iif(preziktype = 2,7,sexcontra) 
 		else
 			sexcontra = 0
 			!! the hormonal contraception is still taken in account
@@ -261,13 +293,13 @@ if $ARGS[0] = 'pc_puts_condom':
 			if rand(1,mc_inventory['equipped_condoms']) <= mc_inventory['bad_condoms']: 
 				mc_inventory['bad_condoms'] -= 1
 				noprotect = 1
-				sexcontra = 7
+				sexcontra = rand(4,5)
 			else
 				sexcontra = 3
 				noprotect = 0
 			end
+			if preziktype = 2: sexcontra = 7 & noprotect = 1
 			mc_inventory['equipped_condoms'] -= 1
-			sexcontra = iif(preziktype = 2,7,sexcontra) 
 		else
 			sexcontra = 0
 			!! the hormonal contraception is still taken in account
@@ -280,29 +312,28 @@ if $ARGS[0] = 'boy_wants_anal':
 	$bwa_boy = iif($ARGS[1] = '',$boydesc,$ARGS[1])
 	if $bwa_boy = 'lubri': $bwa_boy = $boydesc
 	if analplugin = 1:
+		analplugin = 0 & analplugout = 1
 		if pcs_ass < 16:
-			'<<$bwa_boy>> pulls the plug out of your narrow and tight ass.'
-			analplugout = 1
+			*p '<<$bwa_boy>> pulls the plug out of your narrow and tight ass, '
 		else
-			'<<$bwa_boy>> pulls the plug out of your ass.'
-			analplugout = 1
+			*p '<<$bwa_boy>> pulls the plug out of your ass, '
 		end
 	end
 	if $ARGS[2] = 'lubri':
-		'<<$bwa_boy>> takes a tube of lubricant, squeezes a little on <<$xyr>> palm and rubs your anus.'
+		*p '<<iif(analplugout = 1,$xe,$bwa_boy)>> takes a tube of lubricant, squeezes a little on <<$xyr>> palm and rubs your anus. '
 		gs 'arousal', 'anal_finger', 1,'lube' 
 	else
 		if mc_inventory['lubricant'] = 0:
-			'You have no lube, <<$bwa_boy>> spits on his fingers and using saliva he massages your anus.'
+			*p 'You have no lube, <<iif(analplugout = 1,$xe,$bwa_boy)>> spits on his fingers and using saliva he massages your anus. '
 			gs 'arousal', 'anal_finger', 1,'lube' 
 		else
 			mc_inventory['lubricant'] -= 1
 			if rand(0,2) = 0: 
-				'You take a tube of lubricant and hand it to <<$bwa_boy>>, he squeezes a little on his palm and rubs your anus.'
+				*p 'You take a tube of lubricant and hand it to <<$bwa_boy>>, he squeezes a little on his palm and rubs your anus. '
 			elseif rand(0,1) = 0:
-				'You squeeze anal lube on your hand and begin to smear it in your ass. Then you give the guy a tube and <<$xe>> starts lucricating <<$xyr>> cock.'
+				*p 'You squeeze anal lube on your hand and begin to smear it in your ass. Then you give the guy a tube and <<$xe>> starts lucricating <<$xyr>> cock. '
 			else
-				'You squeeze anal lube on your hand and begin to smear it in your ass. Then you give it to <<$xem>> and <<$xe>> smears it on <<$xyr>> dick'
+				*p 'You squeeze anal lube on your hand and begin to smear it in your ass. Then you give it to <<$xem>> and <<$xe>> smears it on <<$xyr>> dick. '
 			end
 			gs 'arousal', 'anal_finger', 1,'lube' 
 		end
@@ -315,24 +346,23 @@ if $ARGS[0] = 'girl_wants_anal':
 	$bwa_girl = iif($ARGS[1] = '',$boydesc,$ARGS[1])
 	if $bwa_girl = 'lubri': $bwa_girl = $boydesc
 	if analplugin = 1:
+		analplugin = 0 & analplugout = 1
 		if pcs_ass < 16:
-			'<<$bwa_boy>> pulls the plug out of your narrow and tight ass.'
-			analplugout = 1
+			*p '<<$bwa_girl>> pulls the plug out of your narrow and tight ass, '
 		else
-			'<<$bwa_boy>> pulls the plug out of your ass.'
-			analplugout = 1
+			*p '<<$bwa_girl>> pulls the plug out of your ass, '
 		end
 	end
 	if $ARGS[2] = 'lubri':
 		mc_inventory['lubricant'] += 1
-		'<<$bwa_girl>> takes a tube of lubricant, squeezes a little on her palm and rubs your anus.'
+		*p '<<iif(analplugout = 1,$xe,$bwa_girl)>> takes a tube of lubricant, squeezes a little on her palm and rubs your anus. '
 		gs 'arousal', 'anal_finger', 1,'lube' 
 	else
 		if mc_inventory['lubricant'] = 0:
-			'You have no lube, <<$bwa_girl>> spits on her fingers and using saliva she massages your anus.'
+			*p 'You have no lube, <<iif(analplugout = 1,$xe,$bwa_girl)>> spits on her fingers and using saliva she massages your anus. '
 			gs 'arousal', 'anal_finger', 1,'lube' 
 		elseif mc_inventory['lubricant'] > 0:
-			'You take a tube of lubricant and hand it to <<$bwa_girl>>, she squeezes a little on her palm and rubs your anus.'
+			*p 'You take a tube of lubricant and hand it to <<$bwa_girl>>, she squeezes a little on her palm and rubs your anus. '
 			gs 'arousal', 'anal_finger', 1,'lube' 
 		end
 	end
@@ -342,19 +372,14 @@ end &! --- girl_wants_anal ---
 !! gs 'dinsex', 'after_anal','boy',$boydesc
 if $ARGS[0] = 'after_anal':
 	if analplugout = 1:
+		analplugin = 1
 		if $ARGS[1] = 'boy':
-			analplugin = 1
 			'<<$ARGS[2]>> takes your butt plug and he puts it back into your anus. He grins: "Continue your training"' 
-		end
-		if $ARGS[1] = 'girl':
-			analplugin = 1
+		elseif $ARGS[1] = 'girl':
 			'<<$ARGS[2]>> takes your butt plug and she puts it back into your anus. She grins: "Continue your training"' 
-		end
-		if $ARGS[1] = 'pc':
-			analplugin = 1
+		elseif $ARGS[1] = 'pc':
 			'You take your butt plug and put it back into your anus. You grin: "I have to keep my butt trained"' 
-		end
-		if $ARGS[1] = 'no_plug':
+		elseif $ARGS[1] = 'no_plug' or pain['asshole'] > 10:
 			analplugin = 0
 			'You take your butt plug and put it into your purse. Your anus has to rest for a while now.' 
 		end
@@ -366,24 +391,31 @@ end &! --- after_anal ---
 !! use gs 'dinSex','boy_wants_anal'[,'lubri'] together with gs 'dinsex','analsex'
 if $ARGS[0] = 'analsex':
 	frost = 0 &! the sex heats
-	'<<$boydesc>> fingers your anus, slowly pushing in before squeezing in a second one .'
-	if pcs_ass < 10:'When <<$xe>> tries inserting a third finger you groan in pain.'
-	if pcs_ass >= 10:'<<$boydesc>> inserts a third finger, very slowly thrusting and wiggling to stretch your anus.'
-	*p '<<$boydesc>> pulls <<$xyr>> fingers out of your ass and you feel <<$xyr>> <<$penis_desc>> pushing against your butthole'
-	gs 'arousal','anal',$ARGS[1],$ARGS[2],$ARGS[3],$ARGS[4],$ARGS[5],$ARGS[6],$ARGS[7],$ARGS[8]
-	if (agrdif + altdif) >= 20:'You scream and bite your lip from the sharp pain when <<$xe>> penetrates your ass.'
-	if (agrdif + altdif) < 20:'You moan when <<$xe>> penetrates your ass.'
-	'<<$boydesc>> stops for a moment, giving your ass time to adjust to <<$xyr>> cock in it. Then he starts to slowly move, pumping your anus.'
+	*p '<<$boydesc>> fingers your anus, slowly pushing in before squeezing in a second one, '
+	*p iif(pcs_ass < 10,'when <<$xe>> tries inserting a third finger you groan in pain. ','<<$xe>> inserts a third finger, very slowly thrusting and wiggling to stretch your anus, ')
+	*p '<<$xe>> pulls <<$xyr>> fingers out of your ass and you feel <<$xyr>> <<$penis_desc>> pushing against your butthole. '
+	gs 'arousal','anal',ARGS[1],$ARGS[2],$ARGS[3],$ARGS[4],$ARGS[5],$ARGS[6],$ARGS[7],$ARGS[8]
+	*p iif(agrdif + altdif >= 20,'You scream and bite your lip from the sharp pain when <<$xe>> penetrates your ass, ','You moan when <<$xe>> penetrates your ass, ')
+	*p '<<$xe>> stops for a moment, giving your ass time to adjust to <<$xyr>> cock in it. Then he starts to slowly move, pumping your anus.'
 
-	if (agrdif + altdif) >= 30:
+	if agrdif + altdif >= rand(25,35):
 		if pcs_makeup > 1:pcs_makeup = 0
 		'You cry and bite your lip when the <<$penis_desc>> begins to thrust in and out of your ass. Your anus feels like it is going to tear apart and all you want is for this torture to be over quickly.'
-	elseif (agrdif + altdif) >= 20 and (agrdif + altdif) < 30:
+	elseif agrdif + altdif < rand(15,25):
 		pcs_horny += 10
 		'You savor <<$xyr>> cock moving inside you, lightly moaning in rhythm.'
 	end
-	'After some time <<$boydesc>> groans and you feel <<$xyr>> cock pulsing inside you and a pleasant warmth filling your ass.'
-	gs 'cum_call','anus',$boy,1
+	$tmp = iif(sexcontra = 7,'sabotaged ','')
+	*nl 'After some time <<$boydesc>> groans and you feel <<$xyr>> cock pulsing inside you '+iif(protect<>1,'and a pleasant warmth filling your ass. ','and you realized that <<$xe>> ejaculated in the <<$tmp>>condom. ')
+	gs 'cum_call','anus',$boy,1, sexcontra
+	if sexcontra = 4:'Pulling out of you and looking at <<$xyr>> dick, <<$boydesc>> said "Hmm, the condom burst."'
+	if analplugout > 0:
+		if pain['asshole'] > 10:
+			gs 'dinsex', 'after_anal','no_plug',$boydesc
+		else
+			gs 'dinsex', 'after_anal','boy',$boydesc
+		end
+	end
 end &! --- analsex ---
 
 !! this procedure calls 'cum_call','',$boy,1

+ 4 - 7
locations/dinSex2.qsrc

@@ -92,8 +92,7 @@ if $ARGS[0] = 'd_analsex_dildo':
 	frost = 0
 	if analplugin = 1:
 		'You pull the plug out of your narrow and tight ass.'
-		analplugin = 0
-		analplugout = 1
+		analplugin = 0 & analplugout = 1
 	end
 	if mc_inventory['lubricant'] = 0:
 		'You have no lube, so you spit on your fingers and use your saliva to lubricate your anus.'
@@ -155,8 +154,7 @@ if $ARGS[0] = 'd_analsex_bottle':
 
 	if analplugin = 1:
 		'You pull the plug out of your narrow and tight ass.'
-		analplugin = 0
-		analplugout = 1
+		analplugin = 0 & analplugout = 1
 	end
 	if mc_inventory['lubricant'] = 0:
 		'You have no lube, so you spit on your fingers and, using saliva, you massage your anus.'
@@ -193,7 +191,6 @@ end
 
 if $ARGS[0] = 'doublepenetration':
 	frost = 0
-	minut -= ARGS[1]
 	TotPain = 0
 	if pcs_vag > 0:
 		if (vgrdif + vltdif) >= 30: TotPain +=4 & 'You groan in pain when <<$boydesc1>> penetrates you, tears flow from your eyes and it feels like someone drove a red-hot rod into your vagina.'
@@ -253,8 +250,8 @@ if $ARGS[0] = 'doublepenetration':
 		if pcs_makeup > 1:pcs_makeup = 0
 		'Squeals and tears stream pouring out of your eyes from the terrible pain, your entire abdomen and genitals feel a sharp pain while <<$boydesc1>> fucks your vagina with <<$xyr1>> <<dick1>> centimeter dick and <<$boydesc2>> almost tearing your <<$anustipe>> with <<$xyr2>> <<dick2>> centimeter instrument.'
 	end
-	gs 'arousal','vaginal',ARGS[1],'dick1',$ARGS[2],$ARGS[3],$ARGS[4],$ARGS[5],$ARGS[6],$ARGS[7]
-	gs 'arousal','anal',ARGS[1],'dick2',$ARGS[2],$ARGS[3],$ARGS[4],$ARGS[5],$ARGS[6],$ARGS[7]
+	gs 'arousal','vaginal',ARGS[1]/2,'dick1',$ARGS[2],$ARGS[3],$ARGS[4],$ARGS[5],$ARGS[6],$ARGS[7]
+	gs 'arousal','anal',ARGS[1]/2,'dick2',$ARGS[2],$ARGS[3],$ARGS[4],$ARGS[5],$ARGS[6],$ARGS[7]
 end
 
 

+ 8 - 5
locations/din_bad.qsrc

@@ -88,8 +88,8 @@ $d_salf = {
 	'<td cellspacing="0" cellpadding="0" valign="top">'
 	if cumloc[13] > 0 or cumloc[11] > 0 or cumloc[16] > 0: '<a href="exec:mc_inventory[''makeup_wipes''] -= 1 & cumspclnt = 12 & gs ''cum_cleanup'' & cumspclnt = 9 & gs ''cum_cleanup'' & gs ''stat'' & gs ''din_bad'', ''d_bag''"><b>Wipe your face and hands clean</b></a>'
 	if cumloc[14] > 0: '<a href="exec:mc_inventory[''makeup_wipes''] -= 1 & cumspclnt = 14	& gs ''cum_cleanup'' & gs ''stat'' & gs ''din_bad'', ''d_bag''"><b>Wipe your belly clean</b></a>'
-	if cumloc[15] > 0: '<a href="exec:mc_inventory[''makeup_wipes''] -= 1 & cumspclnt = 16 & gs ''cum_cleanup'' & gs ''stat'' & gs ''din_bad'', ''d_bag''"><b>Wipe your breasts clean</b></a>'
-	if cumloc[0] > 0 or cumloc[1] > 0 or cumloc[3] > 0 or cumloc[4] > 0: '<a href="exec:mc_inventory[''makeup_wipes''] -= 1 & cumspclnt = 15 & gs ''cum_cleanup'' & gs ''stat'' & gs ''din_bad'', ''d_bag''"><b>Wipe your ass and pussy clean</b></a>'
+	if FUNC('Cum_Manage', 'check_private', 15) = 1 and cumloc[15] > 0: '<a href="exec:mc_inventory[''makeup_wipes''] -= 1 & cumspclnt = 16 & gs ''cum_cleanup'' & gs ''stat'' & gs ''din_bad'', ''d_bag''"><b>Wipe your breasts clean</b></a>'
+	if FUNC('Cum_Manage', 'check_private') = 1 and (cumloc[1] + cumloc[4] > 0 or FUNC('Cum_Manage', 'check_innards', 0) = 1 or FUNC('Cum_Manage', 'check_innards', 3) = 1): '<a href="exec:mc_inventory[''makeup_wipes''] -= 1 & cumspclnt = 15 & gs ''cum_cleanup'' & gs ''stat'' & gs ''din_bad'', ''d_bag''"><b>Wipe your ass and pussy clean</b></a>'
 	if cumloc[10] > 0 or cumloc[9] > 0: '<a href="exec:mc_inventory[''makeup_wipes''] -= 1 & cumspclnt = 17 & gs ''cum_cleanup'' & gs ''stat'' & gs ''din_bad'', ''d_bag''"><b>Wipe your arms and legs clean</b></a>'
 	if cumloc[2] > 0 or cumloc[5] > 0 or cumloc[6] > 0 or cumloc[7] > 0: '<a href="exec:mc_inventory[''makeup_wipes''] -= 1 & cumspclnt = 6 & gs ''cum_cleanup'' & gs ''stat'' & gs ''din_bad'', ''d_bag''"><b>Clean your clothing</b></a>'
 	if pcs_makeup ! 1 and cosmetic_tattoo = 0: '<a href="exec:mc_inventory[''makeup_wipes''] -= 1 & pcs_makeup = 1 & gs ''stat'' & gs ''din_bad'', ''d_bag''"><b>Remove your makeup</b></a>'
@@ -193,7 +193,10 @@ if $ARGS[0] = 'd_bag':
 			'Automatically use for vaginal sex: <a href="exec:auto_vag_lube = 0 & gs ''stat'' & gs ''din_bad'', ''d_bag''">Yes</a>'
 		end
 	end
-	dynamic $toymanage
+	if FUNC('Cum_Manage', 'check_private') = 1:
+		dynamic $toymanage
+		if pirsA + pirsB + pirsC + pirsD + pirsE + pirsF + pirsN + pirsG > 0: act 'Manage your piercings': gt 'piercing_management', 'main'
+	end
 	*nl
 	if amphetamine > 0:	'You have <b><<amphetamine>></b> tablets of amphetamine left in your purse. <a href="exec: gs ''drugs'', ''amphetamine'' & gs ''din_bad'', ''d_bag''">Take One</a>'
 	if joint > 0: 'You have enough weed for <b><<joint>></b> joints.'
@@ -333,7 +336,7 @@ $din_Table_Condom_Menu = {
 !! mc_inventory['equipped_condoms']: Total number of condoms sveta is using (normal or damaged).
 !! mc_inventory['normal_condoms']: Number of normal condoms sveta isn''t using.
 !! mc_inventory['sabotaged_condoms']: Number of damaged condoms seveta isn''t using.
-!! preziktyp: 0 - Use condoms / 1 - don''t use condoms / 2 - use damaged condoms
+!! preziktype: 0 - Use condoms / 1 - don''t use condoms / 2 - use damaged condoms
 !! to check if sveta wants to use a condom use if mc_inventory['equipped_condoms'] > 0:
 
 $din_Do_Condom_Counts = {
@@ -797,7 +800,7 @@ $d_cycreport_update = {
 		if cyccustom = 1:
 			if preg = 1 and knowpreg = 1:
 				$cycreport_txt = 'You are pregnant. Your due date is around <<$pregduedate>>.'
-				if $wombthfath ! 'unknown': 
+				if $wombthfath <> 'unknown' and $wombthfath <> '':
 					$cycreport_txt = '<<$cycreport_txt>> You suspect the father being <<$wombthfath>>.'
 				end
 			elseif knowpregloss = 1:

+ 129 - 60
locations/din_van.qsrc

@@ -37,7 +37,7 @@ $showerdin = {
 			'Unfortunately, your false lashes don''t make it through the shower.'
 			false_lashes = 0
 			pcs_lashes = pcs_naturallashes
-			gs 'AppearanceSystem', 'UpdateBaseAppearnce'
+			gs 'AppearanceSystem', 'UpdateBaseAppearance'
 		end
 	end
 }
@@ -553,7 +553,7 @@ $tampon =  {
 }
 
 $quickwash = {
-	if spdirty > 0:
+	if cumsumbod-cumsumvag-cumsumass > 0:
 		act 'Quick wash (0:15)':
 			menu_off = 1
 			*clr & cla
@@ -574,6 +574,21 @@ $quickwash = {
 		end
 	end
 
+	if cumloc[0]+cumloc[3] > 0 and hypnoAddict = 0:
+		if FUNC('Cum_Manage', 'check_innards', 0) = 1 or FUNC('Cum_Manage', 'check_innards', 3) = 1:
+			act 'Let the cum drain from your (0:10)':
+				menu_off = 1
+				*clr & cla
+				cumspclnt = 15 & gs 'cum_cleanup'
+				minut += 10
+				gs 'stat'
+				'<center><img <<$set_imgh>> src="images/pc/body/pee/wiping/no<<rand(3,4)>>.jpg"></center>'
+				'You spend minutes waiting between the sudden gushes of semen pouring out of your snatch.'
+
+				act 'Finish':menu_off = 0 & gt $loc, $loc_arg
+			end
+		end
+	end
 	gs 'din_van', 'pblc_pee'
 }
 
@@ -736,57 +751,57 @@ $basin = {
 		end
 	end
 
-	if cumloc[11] = 1 and cumloc[16] = 0:
-		act 'Wash the cum from your face (0:05)':
+	if cumloc[11] = 1 and cumloc[16] = 1:
+		act 'Wash the cum from your face and hair (0:10)':
 			menu_off = 1
 			*clr & cla
 			pcs_makeup = 1
 			cumspclnt = 9
 			gs 'cum_cleanup'
-			cumspclnt = 11
+			cumspclnt = 12
 			gs 'cum_cleanup'
+			pcs_hairbsh = 0
 			if pcs_sweat > 19 : pcs_sweat -= 5
-			minut += 5
+			minut += 10
 			gs 'stat'
 			'<center><img <<$set_imgh>> src="images/pc/activities/facewash.jpg"></center>'
 			*nl
-			'You clean your face and get rid of any trace of cum.'
+			'You clean your face and hair and get rid of any trace of cum.'
 
 			act 'Finish':menu_off = 0 & gt $loc, $loc_arg
 		end
-	elseif cumloc[11] = 0 and cumloc[16] = 1:
-		act 'Wash the cum out of your hair (0:10)':
+	elseif cumloc[11] = 1 and cumloc[16] = 0:
+		act 'Wash the cum from your face (0:05)':
 			menu_off = 1
-			cla
+			*clr & cla
+			pcs_makeup = 1
 			cumspclnt = 9
 			gs 'cum_cleanup'
-			cumspclnt = 5
+			cumspclnt = 11
 			gs 'cum_cleanup'
-			pcs_hairbsh = 0
 			if pcs_sweat > 19 : pcs_sweat -= 5
-			minut += 10
+			minut += 5
 			gs 'stat'
+			'<center><img <<$set_imgh>> src="images/pc/activities/facewash.jpg"></center>'
 			*nl
-			'You clean your hair and get rid of any trace of cum.'
+			'You clean your face and get rid of any trace of cum.'
 
 			act 'Finish':menu_off = 0 & gt $loc, $loc_arg
 		end
-	elseif cumloc[11] = 1 and cumloc[16] = 1:
-		act 'Wash the cum from your face and hair (0:10)':
+	elseif cumloc[11] = 0 and cumloc[16] = 1:
+		act 'Wash the cum out of your hair (0:10)':
 			menu_off = 1
-			*clr & cla
-			pcs_makeup = 1
+			cla
 			cumspclnt = 9
 			gs 'cum_cleanup'
-			cumspclnt = 12
+			cumspclnt = 5
 			gs 'cum_cleanup'
 			pcs_hairbsh = 0
 			if pcs_sweat > 19 : pcs_sweat -= 5
 			minut += 10
 			gs 'stat'
-			'<center><img <<$set_imgh>> src="images/pc/activities/facewash.jpg"></center>'
 			*nl
-			'You clean your face and hair and get rid of any trace of cum.'
+			'You clean your hair and get rid of any trace of cum.'
 
 			act 'Finish':menu_off = 0 & gt $loc, $loc_arg
 		end
@@ -809,6 +824,22 @@ $basin = {
 		end
 	end
 
+	if cumloc[0]+cumloc[3] > 0 and hypnoAddict = 0:
+		if FUNC('Cum_Manage', 'check_innards', 0) = 1 or FUNC('Cum_Manage', 'check_innards', 3) = 1:
+			act 'Let the cum drain from your (0:10)':
+				menu_off = 1
+				*clr & cla
+				cumspclnt = 15 & gs 'cum_cleanup'
+				minut += 10
+				gs 'stat'
+				'<center><img <<$set_imgh>> src="images/pc/body/pee/wiping/no<<rand(3,4)>>.jpg"></center>'
+				'You spend minutes waiting between the sudden gushes of semen pouring out of your snatch.'
+
+				act 'Finish':menu_off = 0 & gt $loc, $loc_arg
+			end
+		end
+	end
+
 	if body_write > 0 or face_write > 0:
 		act 'Wash the writings off your body (0:10)':
 			menu_off = 1
@@ -857,7 +888,7 @@ $basin = {
 			pcs_lashes = pcs_naturallashes
 			false_lashes = 0
 			minut += 5
-			gs 'AppearanceSystem', 'UpdateBaseAppearnce'
+			gs 'AppearanceSystem', 'UpdateBaseAppearance'
 			act 'Finish':menu_off = 0 & gt $loc, $loc_arg
 		end
 	end
@@ -912,6 +943,22 @@ $enema = {
 			act 'Finish':menu_off = 0 & gt $loc, $loc_arg
 		end
 	end
+	if cumloc[0]+cumloc[3] > 0 and hypnoAddict = 0:
+		if mc_inventory['enema_kit'] = 1:
+			act 'Wash up cum from your insides (0:05)':
+				menu_off = 1
+				*clr & cla
+				cumspclnt = 15 & gs 'cum_cleanup'
+				cumspclnt = 3 & gs 'cum_cleanup'
+				minut += 5
+				gs 'stat'
+				'<center><img <<$set_imgh>> src="images/shared/home/bathroom/klisma.jpg"></center>'
+				'You give yourself a quick enema, feeling clean down there.'
+
+				act 'Finish':menu_off = 0 & gt $loc, $loc_arg
+			end
+		end
+	end
 }
 
 $toymanage = {
@@ -921,7 +968,7 @@ $toymanage = {
 			cla
 			*clr
 			minut += 5
-			analplugIN = 0
+			analplugIN = 0 & analplugout = 0
 
 			if pcs_ass < 30:pcs_ass += 1
 
@@ -937,7 +984,7 @@ $toymanage = {
 			cla
 			*clr
 			minut += 5
-			analplugIN = 1
+			analplugIN = 1 & analplugout = 0
 
 			if pcs_ass < 10:pcs_ass += 5
 			if pcs_ass >= 10 and pcs_ass < 20:pcs_ass += rand(1, 2)
@@ -1142,7 +1189,7 @@ if $ARGS[0] = 'private':
 		dynamic $toymanage
 	end
 
-	'<a href="exec:msg ''<center>Your weight is <<pcs_weight[0]>>.<<pcs_weight[1]>> kg<br>Your body mass index (BMI) is <<pcs_bmi[0]>>.<<pcs_bmi[1]>>.<br><<$bmi_desc>></center>''">Check weight on the scales</a>'
+	'<a href="exec:msg ''<center>Your weight is <<pcs_weight[0]>>.<<pcs_weight[1]>> kg<br>Your body mass index (BMI) is <<pcs_bmi[0]>>.<<pcs_bmi[1]>>.<br><<$bodyVars[''bmi_desc'']>></center>''">Check weight on the scales</a>'
 
 	gs 'din_van', 'prvt_pee'
 
@@ -1171,16 +1218,18 @@ if $ARGS[0] = 'private':
 	end
 
 	!For now, the pregnancy reactions use bimbolevel as a chack. Once the pregnancy fetish is added to the game, the check will likely change to that.
-	if knowpreg ! 1 and mc_inventory['pregnancy_test'] > 0 and (abortionbirthdate = 0 or daystart - abortionbirthdate > 100):
+	if knowpreg ! 1 and mc_inventory['pregnancy_test'] > 0 and (abortionbirthdate = 0 or daystart - abortionbirthdate > 100) and last_pee + 59 < totminut:
 		act 'Do a pregnancy test (0:05)':
 			cla & *clr
+			last_pee = totminut
 			'<center><img <<$set_imgh>> src="images/pc/items/accessories/birthcontrol/preg_test.jpg"></center>'
 			'You sit down on the toilet and slip the test between your legs, carefully letting loose a stream of urine from your pussy onto the tip. Following the instructions, you then re-cap it and lay it flat on the sink, spending the next five minutes nervously fidgeting, waiting out the suggested time...'
 			'When the time is up, you eagerly snatch it up and yank off the cap to see the results.'
 			minut += 5
 			mc_inventory['pregnancy_test'] -= 1
 			gs 'stat'
-			 if pregchem > 120 and bimbolevel < 3 and knowpreg = 0 and husband = 0 and pcs_pregtalk = 0:
+			act 'Finish':menu_off = 0 & gt $loc, $loc_arg
+			if pregchem > 120 and bimbolevel < 3 and hypnoAddict = 0 and knowpreg = 0 and husband = 0 and pcs_pregtalk = 0:
 				cla
 				knowpreg = 1
 				thinkpreg = 1
@@ -1189,14 +1238,14 @@ if $ARGS[0] = 'private':
 				act 'Horrified':gt 'din_van', 'HorrifiedReact1'
 				act 'Concerned':gt 'din_van', 'ConcernedReact1'
 				act 'Excited':gt 'din_van', 'ExcitedReact1'
-			elseif pregchem > 120 and bimbolevel = 3 and knowpreg = 0 and husband = 0 and pcs_pregtalk = 0:
+			elseif pregchem > 120 and (bimbolevel = 3 or hypnoAddict = 1) and knowpreg = 0 and husband = 0 and pcs_pregtalk = 0:
 				cla
 				knowpreg = 1
 				thinkpreg = 1
 				*nl
 				'The test shows two strips. You are pregnant. As you look at the test in your hand, you are...'
 				act 'Excited':gt 'din_van', 'ExcitedReact1'
-				act 'Aroused':gt 'din_van', 'ArousedReact1'
+				if pcs_horny >= 50 or bimbolevel = 3: act 'Aroused':gt 'din_van', 'ArousedReact1'
 			elseif pregchem > 120 and knowpreg = 0 and husband = 1 and kid = 0 and pcs_pregtalk = 0:
 				knowpreg = 1
 				thinkpreg = 1
@@ -1224,7 +1273,6 @@ if $ARGS[0] = 'private':
 				act'Sigh in disappointment':gt'din_van','DisappointedReact'
 			end
 
-			act 'Finish':menu_off = 0 & gt $loc, $loc_arg
 		end
 	end
 
@@ -1502,10 +1550,13 @@ if $ARGS[0] = 'prvt_pee':
 
 	!!If PC is on her period and using tampon, then the following options should appear as well as the standard "Finish and wipe" act:
 	!!This may require an addition check to see if the PC has a purse since I think they need that to carry tampons with them.
-			if isprok = 1 and mc_inventory['tampons'] > 0:
+			if mc_inventory['tampons'] > 0 and (mesec > 0 or (placebopart > 0 and pillcon < 40000)) and (isprok = 1 or (isprok = 0 and isprokp = 0)) and knowpreg = 0:
 				act 'Change tampon (0:02)':
 					*clr & cla
+					mc_inventory['tampons'] -=  1
+					isprok = 1
 					minut += 2
+					pcs_mood -= 5
 					'<center><img <<$set_imgh>> src="images/pc/body/pee/period/tampon/' + rand(1,12) + '.jpg"></center>'
 					'Reaching down and taking the string between your fingers, you slowly pull the used tampon from your vagina. You wrap it in toilet paper to be thrown in the trash bin. Opening your purse, you retrieve a fresh one, unpack it and carefully insert it into yourself.'
 
@@ -1514,10 +1565,13 @@ if $ARGS[0] = 'prvt_pee':
 			end
 	!!If PC is on her period and using pad, then the following options should appear as well as the standard "Finish and wipe" act:
 	!!This may require an addition check to see if the PC has a purse since I think they need that to carry pads with them.
-			if isprokp = 1 and mc_inventory['sanitary_pads'] > 0:
+			if isprokp = 1 and mc_inventory['sanitary_pads'] > 0 and $pantyworntype ! 'none':
 				act 'Change pad (0:02)':
 					*clr & cla
+					mc_inventory['sanitary_pads'] -=  1
+					isprokp = 1
 					minut += 2
+					pcs_mood -= 5
 					'<center><img <<$set_imgh>> src="images/pc/body/pee/period/pad/' + rand(1,6) + '.jpg"></center>'
 					'Checking your pad, you decide it''s time for a new one. You carefully peel it off of your panties before folding it into thirds and setting it aside to be thrown away. Digging in your bag, you pull out a fresh pad, unpackage it, peel off the adhesive strip, and place it into your underwear. Finally, you wrap the wings around the sides of the gusset to make sure it is nice and secure.'
 
@@ -1533,6 +1587,7 @@ end
 if $ARGS[0] = 'prvt_pee_end':
 	act 'Finish and wipe':
 		*clr & cla
+		cumspclnt = 15 & gs 'cum_cleanup'
 		if pcs_willpwr < 150: pcs_willpwr += 1
 		gs 'stat'
 		'<center><img <<$set_imgh>> src="images/pc/body/pee/wiping/' + rand(1,9) + '.jpg"></center>'
@@ -1623,10 +1678,13 @@ if $ARGS[0] = 'pblc_pee':
 				end
 			end
 
-			if mesec > 0 and (isprok = 1 or (isprok = 0 and isprokp = 0)) and mc_inventory['tampons'] > 0 and bag = 1:
+			if mc_inventory['tampons'] > 0 and (mesec > 0 or (placebopart > 0 and pillcon < 40000)) and (isprok = 1 or (isprok = 0 and isprokp = 0)) and knowpreg = 0:
 				act 'Change tampon (0:02)':
 					*clr & cla
+					mc_inventory['tampons'] -=  1
+					isprok = 1
 					minut += 2
+					pcs_mood -= 5
 					'<center><img <<$set_imgh>> src="images/pc/body/pee/period/tampon/' + rand(1,12) + '.jpg"></center>'
 					'Reaching down and taking the string between your fingers, you slowly pull the used tampon from your vagina. You wrap it in toilet paper to be thrown in the trash bin. Opening your purse, you retrieve a fresh one before unpackaging it and carefully inserting it into yourself.'
 
@@ -1634,10 +1692,13 @@ if $ARGS[0] = 'pblc_pee':
 				end
 			end
 
-			if mesec > 0 and (isprokp = 1 or (isprok = 0 and isprokp = 0)) and mc_inventory['sanitary_pads'] > 0 and bag = 1:
+			if mesec > 0 and (isprokp = 1 or (isprok = 0 and isprokp = 0)) and mc_inventory['sanitary_pads'] > 0 and bag = 1 and $pantyworntype ! 'none':
 				act 'Change pad (0:02)':
 					*clr & cla
+					mc_inventory['sanitary_pads'] -=  1
+					isprokp = 1
 					minut += 2
+					pcs_mood -= 5
 					'<center><img <<$set_imgh>> src="images/pc/body/pee/period/pad/' + rand(1,6) + '.jpg"></center>'
 					'Checking your pad, you decide it''s time for a new one. You carefully peel it off of your panties before folding it into thirds and setting it aside to be thrown away. Digging in your bag, you pull out a fresh pad, unpackage it, peel off the adhesive strip, and place it into your underwear. Finally, you wrap the wings around the sides of the gusset to make sure it is nice and secure.'
 
@@ -1654,6 +1715,7 @@ end
 if $ARGS[0] = 'pblc_pee_end':
 	act 'Finish and wipe':
 		*clr & cla
+		cumspclnt = 15 & gs 'cum_cleanup'
 		if pcs_willpwr < 150: pcs_willpwr += 1
 		gs 'stat'
 		'<center><img <<$set_imgh>> src="images/pc/body/pee/wiping/' + rand(1,9) + '.jpg"></center>'
@@ -1730,11 +1792,19 @@ if $ARGS[0] = 'shave_options':
 	*p '<table border=0 cellspacing=<<shave_img_hgt/25>> cellpadding=5>'
 
 	!! ROW 1: IMAGES
-		*P '<TR><TD><center><a href="exec:view''images/pc/body/pussy/hair/pussy.jpg''"><img Height = <<shave_img_hgt>> src="images/pc/body/pussy/hair/pussy.jpg"></a></center></TD>'
-		*P '<TD><center><a href="exec:view''<<FUNC(''$pube_image'',16,pcs_pubecol[2],2)>>''"><img Height = <<shave_img_hgt>> src="<<FUNC(''$pube_image'',16,pcs_pubecol[2],2)>>"></a></center></TD>'
-		*P '<TD><center><a href="exec:view''<<FUNC(''$pube_image'',16,pcs_pubecol[2],3)>>''"><img Height = <<shave_img_hgt>> src="<<FUNC(''$pube_image'',16,pcs_pubecol[2],3)>>"></a></center></TD>'
-		*P '<TD><center><a href="exec:view''<<FUNC(''$pube_image'',16,pcs_pubecol[2],4)>>''"><img Height = <<shave_img_hgt>> src="<<FUNC(''$pube_image'',16,pcs_pubecol[2],4)>>"></a></center></TD>'
-		*P '<TD><center><a href="exec:view''<<FUNC(''$pube_image'',16,pcs_pubecol[2],5)>>''"><img Height = <<shave_img_hgt>> src="<<FUNC(''$pube_image'',16,pcs_pubecol[2],5)>>"></a></center></TD></TR>'
+		*p '<TR><TD><center><a href="exec:view''images/pc/body/pussy/hair/pussy.jpg''"><img Height = <<shave_img_hgt>> src="images/pc/body/pussy/hair/pussy.jpg"></a></center></TD>'
+		
+		$temp_pube_image = FUNC('$pube_image', 16, pcs_pubecol[2], 2)
+		*p '<TD><center><a href="exec:view''<<$temp_pube_image>>''"><img Height = <<shave_img_hgt>> src="<<$temp_pube_image>>"></a></center></TD>'
+
+		$temp_pube_image = FUNC('$pube_image', 16, pcs_pubecol[2], 3)
+		*p '<TD><center><a href="exec:view''<<$temp_pube_image>>''"><img Height = <<shave_img_hgt>> src="<<$temp_pube_image>>"></a></center></TD>'
+
+		$temp_pube_image = FUNC('$pube_image', 16, pcs_pubecol[2], 4)
+		*p '<TD><center><a href="exec:view''<<$temp_pube_image>>''"><img Height = <<shave_img_hgt>> src="<<$temp_pube_image>>"></a></center></TD>'
+
+		$temp_pube_image = FUNC('$pube_image', 16, pcs_pubecol[2], 5)
+		*p '<TD><center><a href="exec:view''<<$temp_pube_image>>''"><img Height = <<shave_img_hgt>> src="<<$temp_pube_image>>"></a></center></TD></TR>'
 
 	!! ROW 1: TEXT
 		*p '<TR><TD><center>'
@@ -1770,11 +1840,20 @@ if $ARGS[0] = 'shave_options':
 		*p '</center></TD></TR>'
 
 	!! ROW 2: IMAGES
-		*P '<TR><TD><center><a href="exec:view''<<FUNC(''$pube_image'',16,pcs_pubecol[2],6)>>''"><img Height = <<shave_img_hgt>> src="<<FUNC(''$pube_image'',16,pcs_pubecol[2],6)>>"></a></center></TD>'
-		*P '<TD><center><a href="exec:view''<<FUNC(''$pube_image'',16,pcs_pubecol[2],7)>>''"><img Height = <<shave_img_hgt>> src="<<FUNC(''$pube_image'',16,pcs_pubecol[2],7)>>"></a></center></TD>'
-		*P '<TD><center><a href="exec:view''<<FUNC(''$pube_image'',16,pcs_pubecol[2],8)>>''"><img Height = <<shave_img_hgt>> src="<<FUNC(''$pube_image'',16,pcs_pubecol[2],8)>>"></a></center></TD>'
-		*P '<TD><center><a href="exec:view''<<FUNC(''$pube_image'',16,pcs_pubecol[2],9)>>''"><img Height = <<shave_img_hgt>> src="<<FUNC(''$pube_image'',16,pcs_pubecol[2],9)>>"></a></center></TD>'
-		*P '<TD><center><a href="exec:view''<<FUNC(''$pube_image'',26,pcs_pubecol[2],10)>>''"><img Height = <<shave_img_hgt>> src="<<FUNC(''$pube_image'',26,pcs_pubecol[2],10)>>"></a></center></TD></TR>'
+		$temp_pube_image = FUNC('$pube_image', 16, pcs_pubecol[2], 6)
+		*p '<TR><TD><center><a href="exec:view''<<$temp_pube_image>>''"><img Height = <<shave_img_hgt>> src="<<$temp_pube_image>>"></a></center></TD>'
+
+		$temp_pube_image = FUNC('$pube_image', 16, pcs_pubecol[2], 7)
+		*p '<TD><center><a href="exec:view''<<$temp_pube_image>>''"><img Height = <<shave_img_hgt>> src="<<$temp_pube_image>>"></a></center></TD>'
+
+		$temp_pube_image = FUNC('$pube_image', 16, pcs_pubecol[2], 8)
+		*p '<TD><center><a href="exec:view''<<$temp_pube_image>>''"><img Height = <<shave_img_hgt>> src="<<$temp_pube_image>>"></a></center></TD>'
+
+		$temp_pube_image = FUNC('$pube_image', 16, pcs_pubecol[2], 9)
+		*p '<TD><center><a href="exec:view''<<$temp_pube_image>>''"><img Height = <<shave_img_hgt>> src="<<$temp_pube_image>>"></a></center></TD>'
+
+		$temp_pube_image = FUNC('$pube_image', 26, pcs_pubecol[2], 10)
+		*p '<TD><center><a href="exec:view''<<$temp_pube_image>>''"><img Height = <<shave_img_hgt>> src="<<$temp_pube_image>>"></a></center></TD></TR>'
 	
 	!! ROW 2: TEXT
 		*p '<TR><TD><center>'
@@ -1810,10 +1889,11 @@ if $ARGS[0] = 'shave_options':
 		*p '</center></TD></TR>'
 
 	!! ROW 3: IMAGES
-		*P '<TR><TD><center><a href="exec:view''<<FUNC(''$pube_image'',5,pcs_pubecol[2],11)>>''"><img Height = <<shave_img_hgt>> src="<<FUNC(''$pube_image'',5,pcs_pubecol[2],11)>>"></a></center></TD>'
-		*P '<TD><center><a href="exec:view''<<FUNC(''$pube_image'',16,pcs_pubecol[2],12)>>''"><img Height = <<shave_img_hgt>> src="<<FUNC(''$pube_image'',16,pcs_pubecol[2],12)>>"></a></center></TD>
-		*P <TD><center><a href="exec:view''images/pc/body/pussy/shave/bstrip.jpg''"><img Height = <<shave_img_hgt>> src="images/pc/body/pussy/shave/bstrip.jpg"></a></center></TD>
-		*P <TD><center><a href="exec:view''images/pc/body/pussy/shave/rectangle.jpg''"><img Height = <<shave_img_hgt>> src="images/pc/body/pussy/shave/rectangle.jpg"></a></center></TD></TR>'
+		$temp_pube_image = FUNC('$pube_image', 5, pcs_pubecol[2], 11)
+		*p '<TR><TD><center><a href="exec:view''<<$temp_pube_image>>''"><img Height = <<shave_img_hgt>> src="<<$temp_pube_image>>"></a></center></TD>'
+
+		$temp_pube_image = FUNC('$pube_image', 16, pcs_pubecol[2], 12)
+		*p '<TD><center><a href="exec:view''<<$temp_pube_image>>''"><img Height = <<shave_img_hgt>> src="<<$temp_pube_image>>"></a></center></TD></TR>'
 
 	!! ROW 3: TEXT
 		*p '<TR><TD><center>'
@@ -1828,22 +1908,11 @@ if $ARGS[0] = 'shave_options':
 		else
 			*p 'Mini Bush'
 		end
-		'</center></TD><TD><center>'
-		if pubestyle ! 13 and pcs_pubes >= 20:
-			'<a href="exec:pubestyle = 13 & shave_length = 20 & shave_trigger = 26 &  '+iif(shave_menu = 3,'shave_menu = 1', 'shave_menu = 2')+' & gt ''din_van'', ''shave_options''">Bushy Strip</a>'
-		else
-			'Bushy Strip'
-		end
-		'</center></TD><TD><center>'
-		if pubestyle ! 14 and pcs_pubes > 20:
-			'<a href="exec:pubestyle = 14 & shave_length = 20 & shave_trigger = 26 & '+iif(shave_menu = 3,'shave_menu = 1', 'shave_menu = 2')+' & gt ''din_van'', ''shave_options''">Rectangle</a>'
-		else
-			'Rectangle'
-		end
 
 	*p '</center></TD></TR></table>'
 	*p '<sub><small>Lazy - (don''t immediately shave stubble)</small></sub></center>'
 
+	killvar '$temp_pube_image'
 	killvar '$temp_toggle'
 
 	act 'Return':menu_off = 0 & gt $loc, $loc_arg

+ 2 - 31
locations/dinsexFX.qsrc

@@ -13,6 +13,7 @@ $vagstart = {
 		protect = 1
 		if preziktype = 2:
 			sexcontra = 7
+			noprotect = 1
 			'You give the guy a sabotaged condom and he puts it on in silence.'
 		else
 			sexcontra = 3
@@ -155,37 +156,7 @@ $vagend = {
 }
 
 $veneracheck = {
-	if cheatHealth = 0:
-		tipvenerarand = rand(1, 10)
-		if tipvenerarand = 8:
-			!!herpes
-			if rand(1, 100) > 90 and GerpesOnce = 0:
-				GerpesOnce = 1
-				Venera += 1
-				Gerpes += 1
-			end
-		elseif tipvenerarand = 7:
-			!!syphilis
-			if rand(1, 100) > 97 and SifacOnce = 0:
-				SifacOnce = 1
-				Venera += 1
-				Sifilis += 1
-			end
-		elseif tipvenerarand >= 5 and tipvenerarand < 7:
-			!!gonorrhea
-			if rand(1, 100) > 90 and TriperOnce = 0:
-				TriperOnce = 1
-				Venera += 1
-				Triper += 1
-			end
-		elseif tipvenerarand < 5:
-			!!thrush/yeast infection
-			if rand(1, 100) > 85 and KandidozOnce = 0:
-				KandidozOnce = 1
-				Kandidoz += 1
-			end
-		end
-	end
+	gs 'dinSex', 'std_trigger'
 }
 
 --- dinsexFX ---------------------------------

+ 4 - 3
locations/drugs.qsrc

@@ -20,7 +20,7 @@ if $ARGS[0] = 'smoke':
 		smoker += 1
 		if smoker > 20 and smoke_exp = 0: smoke_exp = 1
 	end
-	mc_inventory['cigarettes'] -= 1
+	
 	stat['cigarettes_smoked'] += 1
 	smokeDay = daystart
 	smokeHour = hour
@@ -40,8 +40,9 @@ if $ARGS[0] = 'smoke':
 	gs 'stat'
 	if siga_bum = 1:
 		siga_bum = 0
-	elseif mc_inventory['cigarettes'] = 0:
-		msg'That was your last cigarette.'
+	else
+		mc_inventory['cigarettes'] -= 1
+		if mc_inventory['cigarettes'] = 0:msg'That was your last cigarette.'
 	end
 	
 elseif $ARGS[0] = 'joint':

+ 1 - 1
locations/emp_functions.qsrc

@@ -389,7 +389,7 @@ if $ARGS[0] = 'cat_evt':
 	evt_wages[] = transient_evt_wages
 	!! Journal location as reminder
 	$evt_journal[] = $transient_journal
-	!! The following are event location triggers to allow the content to appear in areas such as community centre but host their content elsewhere such as Photography shop
+	!! The following are event location triggers to allow the content to appear in areas such as community center but host their content elsewhere such as Photography shop
 	!! 	Event area triggers such as city_residential
 	$evt_loc[] = $transient_loc
 	$evt_loc_arg[] = $transient_arg 

+ 2 - 2
locations/ender.qsrc

@@ -19,7 +19,7 @@ if $ARGS[0] = 'loss':
 
 		'You fall to the floor and feel your consciousness slipping away.'
 
-		if $start_type = 'uni_tg':
+		if $start_type['loc'] = 'uni' and $start_type['magic'] = 'tg':
 			act 'Further': gt 'intro_uni_tg', 'tatianaPRE'
 		else
 			act 'Further': gt 'intro_city_tg', 'tatianaPRE'
@@ -681,7 +681,7 @@ if $ARGS[0] = 'surrender':
 		'He ignores your pleas and hits you with a huge upper cut.'
 		'You fall to the floor and feel your consciousness slipping away.'
 
-		if $start_type = 'uni_tg':
+		if $start_type['loc'] = 'uni' and $start_type['magic'] = 'tg':
 			act 'Further': gt 'intro_uni_tg', 'tatianaPRE'
 		else
 			act 'Further': gt 'intro_city_tg', 'tatianaPRE'

Some files were not shown because too many files changed in this diff